gettext を使用して英語を日本語に翻訳するプロジェクトがありますが。これは私のコードです.pyファイルのインポートgettext
t=gettext.translation('noname','advbus/locale', languages=['ja'])
_=t.gettext
print _("Hello")
およびファイル .po で
msgid "Hello"
msgstr "今日は"
.po ファイルを .mop ファイルにコンパイルしましたが、正しく表示されません 今日は.(utf8) .py ファイルを実行すると、正常に実行されます。しかし、そうではありません。つまり、Unicode (今日ã?¯) を表示できないということです。ファイル .mo ファイルに utf8 を設定しようとしています。しかし、エラー
File "C:\env\Scripts\pserve-script.py", line 8, in <module>
load_entry_point('pyramid==1.4a1', 'console_scripts', 'pserve')()
File "C:\env\lib\site-packages\pyramid-1.4a1-py2.7.egg\pyramid\scripts\pserve.py", line 47, in main
return command.run()
File "C:\env\lib\site-packages\pyramid-1.4a1-py2.7.egg\pyramid\scripts\pserve.py", line 290, in run
relative_to=base, global_conf=vars)
File "C:\env\lib\site-packages\pyramid-1.4a1-py2.7.egg\pyramid\scripts\pserve.py", line 318, in loadapp
return loadapp(app_spec, name=name, relative_to=relative_to, **kw)
File "C:\env\lib\site-packages\paste\deploy\loadwsgi.py", line 247, in loadapp
return loadobj(APP, uri, name=name, **kw)
File "C:\env\lib\site-packages\paste\deploy\loadwsgi.py", line 272, in loadobj
return context.create()
File "C:\env\lib\site-packages\paste\deploy\loadwsgi.py", line 710, in create
return self.object_type.invoke(self)
File "C:\env\lib\site-packages\paste\deploy\loadwsgi.py", line 146, in invoke
return fix_call(context.object, context.global_conf, **context.local_conf)
File "C:\env\lib\site-packages\paste\deploy\util.py", line 56, in fix_call
val = callable(*args, **kw)
File "C:\env\advbus\advbus\__init__.py", line 195, in main
config.scan()
File "C:\env\lib\site-packages\pyramid-1.4a1-py2.7.egg\pyramid\config\__init__.py", line 946, in scan
ignore=ignore)
File "C:\env\lib\site-packages\venusian-1.0a7-py2.7.egg\venusian\__init__.py", line 197, in scan
__import__(modname)
File "C:\env\advbus\advbus\hello.py", line 3, in <module>
t=gettext.translation('noname','advbus/locale', languages=['ja'])
File "C:\env\lib\gettext.py", line 478, in translation
t = _translations.setdefault(key, class_(fp))
File "C:\env\lib\gettext.py", line 180, in __init__
self._parse(fp)
File "C:\env\lib\gettext.py", line 281, in _parse
raise IOError(0, 'Bad magic number', filename)
IOError: [Errno 0] Bad magic number: 'advbus/locale\\ja\\LC_MESSAGES\\noname.mo'
これは、インターネット上でコピーする私のsubscribers.pyファイルです
from pyramid.i18n import get_localizer, TranslationStringFactory
def add_renderer_globals(event):
request = event['request']
event['_'] = request.translate
event['localizer'] = request.localizer
tsf = TranslationStringFactory('YOUR_GETTEXT_DOMAIN')
def add_localizer(event):
request = event.request
localizer = get_localizer(request)
def auto_translate(*args, **kwargs):
return localizer.translate(tsf(*args, **kwargs))
request.localizer = localizer
request.translate = auto_translate