Ram*_*hum 20 python django translation gettext django-multilingual
我正在制作一个多语言的Django网站.我创建了一个消息文件,填充并编译它.我用我想要的语言(希伯来语)检查了网站(在这种情况下是管理员),并且大多数短语都像希伯来语一样出现,但有些则没有.我检查了源代码,这些仍然显示为_('Whatever')他们应该,它们也被翻译在消息文件中,是的,我记得这样做compilemessages.
翻译的一些常见原因是什么?
Ham*_*ner 19
刚受到一击.我locale/在项目的根目录中有目录,但默认情况下,Django会在INSTALLED_APPS目录和默认翻译中查找翻译.所以它没有找到我添加的翻译.但是我的一些字符串是Django附带的默认翻译(例如"搜索"),因此翻译了一些字符串,这让我很困惑.
要将我的翻译所在的目录添加到Django寻找翻译的地方列表中,我必须设置LOCALE_PATHS设置.所以在我的情况下,locale/目录并且settings.py都在django项目的根目录中,我可以将以下内容放入settings.py:
from os import path
LOCALE_PATHS = (
path.join(path.abspath(path.dirname(__file__)), 'locale'),
)
Run Code Online (Sandbox Code Playgroud)
可能的原因是懒惰翻译.
例如,在views.py中你应该使用ugettext:
from django.utils.translation import ugettext as _
Run Code Online (Sandbox Code Playgroud)
但是在models.py中,你应该使用ugettext_lazy:
from django.utils.translation import ugettext_lazy as _
Run Code Online (Sandbox Code Playgroud)
嗨,请附上我过去必须做的一些修复:
在设置文件中 - USE_I18N = True是必需的
中间件模块中的django.middleware.locale.LocaleMiddleware(但只要Django根本不关心你的本地,这不是你的情况)
TEMPLATE_CONTEXT_PROCESSORS中的django.core.context_processors.i18n
我肯定有其他与翻译有关的问题,但我不记得所有这些...希望这可以帮助!
我正在尝试提供完整的检查清单:
在settings.py,在USE_I18N,USE_L10N,LANGUAGE_CODE,和LOCALE_PATHS设置正确吗?
zh-hans而不是指定的zh-cn。在中settings.py,以正确的顺序django.middleware.locale.LocaleMiddleware包含吗?MIDDLEWARE
您是否从正确的地方django-admin makemessages -l <locale-name>使用正确的本地名称运行?
ls your/path/to/python/site-packages/django/conf/locale/_而不是-这里。例如,要指定简体中文,请执行django-admin makemessages -l zh_Hans,而不是zh_CN或zh_hans或zh-Hans或其他任何内容。您是否删除了fuzzyPO文件中的所有标签?
您是否用重新编译了OP文件django-admin compilemessages?
您是否重新启动了Web服务器?
附加条款:
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
)
Run Code Online (Sandbox Code Playgroud)
django.po
#: models.py:51
msgctxt "override default"
msgid "first name"
msgstr "?"
#: models.py:55
msgctxt "override default"
msgid "last name"
msgstr "?"
Run Code Online (Sandbox Code Playgroud)
你会看到?,?而不是默认的??,??。
小智 6
我的项目现在遇到这个问题。我在settings.py上设置了变量LANGUAGES,方法如下:
LANGUAGES = (
('en', _('English')),
('pt-br', _('Brazilian Portuguese')),
)
Run Code Online (Sandbox Code Playgroud)
以及带有语言环境文件夹和内部子文件夹pt-br的文件夹结构。原来我的翻译没有加载。LANGUAGES变量遵循pt-br模式,并且文件夹必须位于pt_BR模式。至少那是它在这里工作的唯一方式!
| 归档时间: |
|
| 查看次数: |
6260 次 |
| 最近记录: |