Iva*_*mov 6 python pylons localization babel
我有一个在多个进程中运行的应用程序(一个Web服务器和几个用于繁重计算的进程).目标是使这些计算过程返回本地化错误.为了做到这一点,我制作了一本将由Babel使用的字典:
errors = {
'ERR_REQUEST_FORMAT': (1, _('ERR_REQUEST_FORMAT')),
'ERR_REQUEST_TYPE': (2, _('ERR_REQUEST_TYPE')),
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试启动应用程序时,我得到了
TypeError: No object (name: translator) has been registered for this thread
Run Code Online (Sandbox Code Playgroud)
加载翻译器对象的正确方法是什么?
提前谢谢,伊万.
我建议您在主服务器线程中进行翻译,但您可以注册/使用翻译器对象,如下所示:
import gettext
str_to_translate = u'String to Translate'
DOMAIN = 'example' # name of your translation babel translation file, here would be example.po
LOCALE_DIR = '/path/to/locale/dir' # directory containing language subdirectories
LANGUAGES = ['es']
CODESET = 'utf8'
translator = gettext.translation(DOMAIN, localedir=LOCALE_DIR, languages=LANGUAGES, codeset=CODESET)
translated_str = translator.gettext(str_to_translate)
Run Code Online (Sandbox Code Playgroud)
如果你想更多地利用 pylons 环境,你可以这样做:
from pylons import config
from pylons.i18n.translation import set_lang
conf = config.current_conf()
if not conf['pylons.paths']['root']:
conf['pylons.paths']['root'] = os.path.abspath(NAME_OF_YOUR_PROJECT)
if not conf.get('pylons.package'):
conf['pylons.package'] = 'example' # same as domain above
set_lang(LANG, pylons_config=conf)
Run Code Online (Sandbox Code Playgroud)
之后,_将像在主线程中一样工作。
| 归档时间: |
|
| 查看次数: |
912 次 |
| 最近记录: |