Django国际化

6

我遇到了与这里相似的问题Django为什么无法从另一个目录的模板文件生成区域设置文件?

然而,我不理解解决方案。我的结构:

Project
   App1
      locale
      templates
   App2
      locale
      templates
   templates
      somefilethatneedstranslation.html

现在当我从App1运行这个命令时:
python ../manage.py App1 -l nl

它可以很好地为App1模板创建一个po文件,放在App1语言环境文件夹中。
但是我也想翻译我的全局模板...注意:我不想在项目根目录下有一个语言环境文件夹,所以我尝试从App1添加一个符号链接到模板文件夹,但它没有将翻译结果附加到App1/locale/po文件中。
来自App1文件夹。
ln -s ../templates/locale/* translations
python ../manage.py App1 -l nl --symlinks

我错过了什么吗?
注:
来自模板文件夹。
python ../manage.py templates -l nl

这个方法看起来可行,但实际上不行,因为显然templates不是一个已安装的应用程序,我似乎错过了一些显而易见的东西...


你想把全局模板的翻译存储在哪里? - akonsu
1
Django 1.4 alpha告诉我项目根目录中的locale文件夹已经被弃用了,那么应该放在其他地方吗?感觉很奇怪,Django没有提供一个开箱即用的全局模板翻译方法。 - Hedde van der Heide
当您在项目目录中运行“django-admin.py makemessages -l nl”时会发生什么? - akonsu
错误:此脚本应从Django SVN树或您的项目或应用程序树中运行。如果您确实从SVN checkout或您的项目或应用程序中运行它,也许您只是缺少conf/locale(在django树中)或locale(对于项目和应用程序)目录?它不会自动创建,如果您想为您的项目或应用程序启用i18n,则必须手动创建它。编辑:可能是因为我的项目根目录中没有locale文件夹,但是再次,不应该有吗? - Hedde van der Heide
尝试在您的项目中创建locale文件夹。如果您说您不关心翻译的位置,那为什么不将它们放入“locale”中呢? - akonsu
Django 1.4不允许在项目根目录中使用messages locale文件夹(已弃用),这可能有其原因吧? - Hedde van der Heide
1个回答

6

完整的弃用消息(也在翻译文档中解释)如下:

项目目录中的翻译不再受支持。请使用LOCALE_PATHS设置。

这个消息可能有点不清楚。虽然自动发现项目目录中的翻译已被弃用,但使用LOCALE_PATHS引用项目级别的语言环境文件夹是完全可以接受的。

如果您有项目级别的模板,则将这些模板翻译到特定应用程序的语言环境位置是没有意义的:保留一个项目级别的语言环境目录,并在LOCALE_PATHS中引用它。


谢谢,我看漏了那部分 :) - Hedde van der Heide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接