我是Python的初学者。我的问题非常简单。我有一个字符串要在python应用程序中本地化,包含参数:
print _('Hello dear user, your name is ') + params['first_name'] + ' ' + params['last_name'] + _(' and blah blah blah')
这实际上完成了这项工作,但实际上并不是我称之为好的方法。更不用说某些语言会要求在名字之前显示姓氏。
有更好的方法吗?我想在翻译字符串中放置自定义标签,如{{fn}}或{{ln}},并在显示字符串之前用实际值替换它们。但似乎并不是真的更愉快。
谢谢,
皮尔
答案 0 :(得分:3)
我建议
print 'Hello dear user, your name is %(first_name)s %(last_name)s' % params
答案 1 :(得分:1)
这样的事情可以解决问题:
print _('Hello dear user, your name is %s %s and blah blah blah') % (params['first_name'], params['last_name'])
答案 2 :(得分:1)
如果我是你,我会选择模板。这样可以为每种语言提供单独的模板。例如:
from string import Template
s_en = Template('Hello dear user, your name is $first_name $last_name and blah blah blah')
s_sco = Template('Hello, $first_name of the clan Mac$last_name...')
user = {'last_name': 'Duncan', 'first_name': 'Leod'}
print(s_en.substitute(user))
print(s_sco.substitute(user))
答案 3 :(得分:0)
我考虑过在翻译字符串中放置{{fn}}或{{ln}}等自定义标记,并在显示之前用实际值替换它们。
这就是我要做的。每个语言版本在适当位置的占位符都应该可以胜任。
有一点要提到的是,在某些语言中,人们的姓名必须根据句子中的位置以及如何使用来修改。您需要了解每种特定语言才能正确完成。
一种可能的解决方案:将“在句子中间”的案件保持在最低限度。保持可本地化的资源分开。
而不是Hello dear user, your name is {{UserName}}
使用User name: {{UserName}}