【发布时间】:2015-08-06 10:35:18
【问题描述】:
我正在为基于 Python/Django 的网站开发 i18n/l10n。
如果可能的话,我希望尽量减少字符串的数量,并避免只有大小写不同的相同文本。 IE。我不想保留“你的追随者”、“你的追随者”和“你的追随者”——这违反了 DRY,我担心事情会很快非常失去同步。
鉴于 Django 喜欢在模型字段标题中使用小写字母,我拥有的很多字符串都是小写的,除了是专有名词。即:
class User(models.Model):
...
# In my understanding, Django wants me to use "registration date",
# not "Registration date" or "Registration Date" here.
registration_date = models.DateField(_("registration date"), ...)
# But "Skype" is a proper noun and we want it capitalized.
# Note, in some languages it won't be the first word,
# e.g. "nome de usuário Skype" in Portuguese.
skype_username = models.CharField(_("Skype username"), ...)
...
但是,设计师希望在大多数页面和表格标题/标题中将每个单词的首字母大写。所以,我想,我会保留非大写的文本,但使用{{ ...|title }} 模板过滤器。
但是翻译人员说在某些语言中将代词大写是不好的。即使用英语,它们看起来也不好看。因此,该网站应该说“服务条款”和“Política de Privacidade”,而不是“服务条款”或“Política De Privacidade”。在法语中——我们现在不针对,但我相信有一天我们会的——大写规则看起来比仅仅列出“不要碰那些”单词(那些“l'”等等)。
所以我想知道这种东西的建议方法是什么,这样可以尽可能少地减少头痛。
看来我的选择是:
- 找到一种不将介词大写的语言感知字符串大写解决方案。那里有什么现成的东西吗?鉴于我不精通我们所针对的某些语言,我不确定我是否想自己写一个。
- 忽略 Django 的规则并将字符串的大写版本存储在翻译数据库中,然后根据需要将它们小写。不过,这会对专有名词和名字产生影响。
- 在翻译文件中存储相同文本的多个版本(大小写不同)。我真的希望避免这种情况。
- 还有什么我没想到的?
我想这应该是相当普遍的情况,并且有很多程序员同行已经遇到过这样的事情。对于如何处理此事的任何建议,将不胜感激。
【问题讨论】:
标签: python django internationalization translation dry