翻译服务服务器
项目描述
翻译服务器
管理、存储和交付翻译。
定义
翻译以一个键开始,通常是文本的英文版本。每个键都可以有另一种语言的翻译。这是翻译的第二个参数。
翻译也可以取决于国家,第三个参数。
最后一个参数指定翻译的复数版本。当翻译涉及某个数量并且需要根据该数量的不同而有所不同时,这是需要的。
查找翻译的规则
获取翻译的参数是:
key : 要翻译的文本
lang : 翻译的语言,遵循 ISO 639-1
country [可选] 翻译的国家,遵循 ISO 3166-1 alpha-2
复数[可选] 定义翻译复数形式的相关值
寻找翻译所采取的步骤是:
查找给定键的所有翻译
只保留指定语言的那些
从该列表中保留具有匹配国家/地区的条目,如果没有具有匹配国家/地区的条目,则保留没有指定国家/地区的条目
如果指定了复数参数,则尝试查找具有该复数值的条目,否则选择未指定复数值的翻译
如果留下多个翻译,则取第一个,如果没有留下翻译,则取键作为翻译
安装
准备一个Postgres数据库和用户。
安装npm。
创建并激活 Python 3 虚拟环境。
克隆/下载 项目。
然后转到该项目文件夹并运行:
$ 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且无密码连接到本地 postgres 服务器上名为 test` 的数据库:“ postgres://postgres:@127.0.0.1/test ”
跑
完成安装并激活 Python 环境后,转到项目文件夹并启动一个开发服务器,如下所示:
$ cd src $ ./main.py
您如何在生产中运行服务器取决于您的生产环境。
运行./main.py –help以获取端口选项。
运行测试
准备一个空的测试数据库,并通过 config_local.py中的TRANSLATIONS_SERVER_TEST_DB_URL进行配置。然后转到项目文件夹并运行:
$ 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');
目前还没有对州的支持。可选地,可以修改国家代码以包括状态信息。
然后所有翻译都驻留在翻译表中,其中包含:
translation_id
translation_key:翻译的键(原始文本)。
language_id:参考语言。
country_id:引用国家。
复数:此翻译所针对的复数计数(变体)。
translation_text:翻译的文本。
可以通过直接处理该表或使用管理界面(例如 Django admin(使用 多个数据库))来操作该表。
ZMQ 协议
服务器在配置的端口号上接收请求,并对每个请求进行重放响应。
每个请求应发送至少 4 个帧,其中包含:
语
国家或`""`
钥匙
复数或`""`
每个请求还可能包含更多成对的帧,每个帧包含:
钥匙
复数或`""`
例如:
"sv" "" "User not active" ""
请求两个翻译的示例:
"sv" "" "User not active" "" “找不到用户” “”
然后,服务器应以包含空字符串的一帧或与发送的密钥一样多的帧进行响应,每个帧都包含相应密钥的翻译。
只有一帧包含空字符串的响应表示服务器错误。
请求两个密钥的响应示例:
"Användare ej aktiv" "User not found"