我正在制作一个多语言的Django网站。我创建了一个消息文件,填充并编译它。我用我想要的语言(希伯来语)检查了网站(本例中的管理员),大多数短语在希伯来语中看起来应该是这样的,但有些不是。我检查了源码,这些短语仍然像他们应该的那样显示为_('Whatever'),而且它们在消息文件上也被翻译了,是的,我记得做了compilemessages。
翻译不是这样的常见原因是什么?
发布于 2010-03-05 02:23:51
可能翻译后的字符串被标记为fuzzy
发布于 2013-11-09 01:56:18
刚被一辆车撞了。我在项目的根目录中有locale/目录,但默认情况下,Django looks for translations在INSTALLED_APPS目录中,并且在缺省翻译中。所以它找不到我添加的翻译。但是我的一些字符串是Django自带的默认翻译(例如“搜索”),所以一些字符串被翻译了,这让我很困惑。
要将我的翻译所在的目录添加到Django将查找翻译的位置列表中,我必须设置LOCALE_PATHS setting。因此,在我的例子中,locale/目录和settings.py都在django项目的根目录中,我可以将以下内容放在settings.py中
from os import path
LOCALE_PATHS = (
path.join(path.abspath(path.dirname(__file__)), 'locale'),
)发布于 2017-05-14 00:03:07
我试着提供一份完整的清单:
settings.py,是否正确设置了USE_I18N、USE_L10N、LANGUAGE_CODE和LOCALE_PATHS?- See [this list](http://www.i18nguy.com/unicode/language-identifiers.html) for all allowed values of language identifiers. Note that Simplified Chinese is specified by `zh-hans`, not `zh-cn`.
settings.py,is django.middleware.locale.LocaleMiddleware included in MIDDLEWARE in correct order运行django-admin makemessages -l <locale-name>
- You can see an _incomplete_ list of allowed locale name by running `ls your/path/to/python/site-packages/django/conf/locale/` on your machine, or by [taking a look at the source code](https://github.com/django/django/tree/master/django/conf/locale)
- **Note that you have to use** **`_`** **rather than** **`-`** **here.** For example, to specify simplified Chinese, execute `django-admin makemessages -l zh_Hans`, not `zh_CN` or `zh_hans` or `zh-Hans` or anything else.
fuzzy标记?您是否使用django-admin compilemessages
其他注意事项:
models.py
first_name = models.CharField(
pgettext_lazy('override default', 'first name'),
max_length=30
)
last_name = models.CharField(
pgettext_lazy('override default', 'last name'),
max_length=150
)django.po
#: models.py:51
msgctxt "override default"
msgid "first name"
msgstr "姓"
#: models.py:55
msgctxt "override default"
msgid "last name"
msgstr "名"您将看到姓,名,而不是默认的姓氏,名字。
https://stackoverflow.com/questions/2328185
复制相似问题