翻译服务服务器
TranslationsServer的Python项目详细描述
翻译服务器
管理、存储和交付翻译。
定义
一个translation以一个键开始,通常是文本的英文版本。 每个键都可以有另一种语言的翻译。那就是 翻译的第二个参数。
翻译也可以取决于国家,这是第三个参数。
最后一个参数指定翻译的复数版本。这是 当翻译指的是某个数量时需要 取决于那是多少。
查找翻译的规则
获取翻译的参数为:
- 键:要翻译的文本
- lang:用于翻译的语言,如下所示 ISO 639-1
- country[可选]翻译的国家,如下所示 ISO 3166-1 alpha-2
- plural[可选]定义的复数形式的相关值 翻译
查找翻译的步骤如下:
- 查找给定键的所有翻译
- 只保留使用指定语言的文件
- 如果没有条目,请保留与国家匹配的条目 如果国家匹配,请保留没有指定国家的国家
- 如果指定了复数参数,请尝试查找具有该复数的条目 否则选择未指定复数值的翻译
- 如果还有一个以上的翻译,请选择第一个,如果没有翻译 是左键,而不是以键作为翻译
安装
准备Postgres数据库和用户。
安装npm。
创建并激活 Python 3 virtual environment。
克隆/下载 project。
然后转到该项目文件夹并运行:
$ npm install $ export TRANSLATIONS_SERVER_DB_URL="<YOUR DATABASE URL>" $ grunt migrate $ cd src $ cp config_local.py.example config_local.py
查看并编辑此新文件config_local.py。
数据库url示例
与用户连接到本地Postgres服务器上名为test'的数据库 ` postgres无密码:“postgres://postgres:@127.0.0.1/test”
运行
完成安装并激活python环境后,转到 项目文件夹并启动这样的开发服务器:
$ cd src $ ./main.py
如何在生产环境中运行服务器取决于生产环境。
运行/main.py–help获取端口选项。
运行测试
准备一个空的测试数据库并通过配置它 translations\u server\u test\u db\u url位于config\u local.py中。那就去做这个项目 文件夹并运行:
$ cd test $ ./run_tests.py
添加和编辑翻译
每一张桌子都有语言和国家。如果一种新的语言或 国家/地区需要先更新这些表格:
translations_server=# INSERT INTO languages (language_code, name) VALUES ('en', 'English'); translations_server=# INSERT INTO countries (country_code, name) VALUES ('US', 'United States of America');
目前还没有对各州的支持。可以选择修改countrie 包含状态信息的代码。
然后,所有翻译都位于translations表中,该表包含:
- 翻译ID
- 翻译键:翻译的键(原始文本)。
- language\u id:引用语言。
- country\u id:引用国家。
- 复数:此翻译用于的复数计数(变体)。
- 翻译文本:翻译文本。
可以通过直接操作或使用 管理界面,如 Django admin(使用 Multiple databases)。
ZMQ协议
服务器在配置时接受请求端口号,并用 重播到每个请求。
每个请求应至少发送4帧,其中包含:
- 语言
- 国家或`""`
- 键
- 复数或`""`
每个请求还可以成对包含更多的帧,每个帧包含:
- 键
- 复数或`""`
例如:
"sv" "" "User not active" ""
请求两个翻译的示例:
"sv" "" "User not active" "" "User not found" ""
然后,服务器应使用包含 空字符串或发送时与键一样多的帧,每个帧都包含 对应键的翻译。
只有一个包含空字符串的帧的响应向服务器发出信号 错误。
请求两个键的响应示例:
"Användare ej aktiv" "User not found"