本地化简化。
localize-p的Python项目详细描述
本地化py
>>> _ = Translator('eng')
>>> _('about', why='Because it's simple')
'Localization module that requires no more than JSON files of fields.
- Why is it good?
- Because it's simple'
安装
^{pr2}$注意
此模块滥用f字符串,因此有几个要求:
- >;=Python 3.6
- 对用户输入的极端意识-我个人不会将用户输入添加到变量中,除非我检查过。在
- 有些符号需要JSON转义,例如:
- \n->;\\n
- {->;{
- \->;\\
- 以及类似的
下面是转义的例子。在
怎么做
--如何创建它们?在
--JSON文件,每种语言都有字典,不多不少。在
# /eng_file.json
{
"Button1": "Return",
"Button2": "Hello, {username}"
}
# /esp_file.json
{
"Button1": "Volver",
"Button2": "Hola, {username}"
}
--如何使用它们?在
--嗯,不比创造难多少。让我们考虑一个虚构的web应用程序:
from localize_py import Translator
def app_start():
Translator.load_translations(eng='/eng_file.json', esp='/esp_file.json')
def handle_client_request(request):
lang = get_client_lang_from_database(request)
_ = Translator(lang)
return _('Button1'), _('Button2', username=request.client.name)
这里有两个^{str1}$无意义函数-app_start
和{app_start
的原因。
load_translation
是一个静态函数,它的名称完全符合您的期望。您可以将数据库中语言的短名称作为参数名传递给它,并将文件的路径作为值传递给它。
当您需要最终翻译文本时,只需使用正确的短名称初始化Translator
的实例,然后更简单地将其作为函数调用并为目标字符串提供一个标记(key)。在
--那{username}
那是什么意思?在
--您可以通过将变量作为键参数传递给__call__
,就在字符串标记之后,将它们从代码替换为翻译。在
# /eng_file.json
{ "Button1": "Hello, {username}" }
# program.py
from localize_py import Translator
Translator.load_translations(eng='/eng_file.json')
_ = Translator('eng')
_('Button1', username='Alex')
# Output: "Hello, Alex"
俄语复数形式的附加功能
为了使俄语中的复数形式正确,可以在翻译中使用ru_plural
函数:
/rus_file.json
{
"some_plural": "Доступно {amount} {['акция', 'акции', 'акций'][self.ru_plural(amount)]}:\\n"
}
# program.py
from localize_py import Translator
Translator.load_translations(eng='/rus_file.json')
_ = Translator('rus')
_('some_plural', amount=25)
# Output: "Доступно 25 акций"
普通的API文档很快就会出现,但是,它已经在源代码中提供了,所以您的IDE将显示它。在
- 项目
标签: