## 本地化 ### 静态本地化 单独提供了text类型来支持文本的本地化。 text类型由两个字段构成, key和value。 考虑到大多数项目是优先做了主地区配置后,再进行本地化,因此luban特地支持在配置中原地填写text的key和主地区文本值。制作其他地区配置时,通过指定本地化映射表的方式,再将该text转换为目标语言的文本值。 ![pipeline](images/examples/c_21.jpg) 主语言导出数据为 (只截取了部分数据) ```json [ { "id": 11, "text": { "key": "/demo/1", "text": "测试1" } }, { "id": 12, "text": { "key": "/demo/2", "text": "测试2" } }, { "id": 13, "text": { "key": "/demo/3", "text": "测试3" } } ] ``` 制作本地化映射表 ![pipeline](docs/images/examples/c_22.jpg) 映射到英语后的导出数据(只截取了部分数据)为 ```json [ { "id": 11, "text": { "key": "/demo/1", "text": "test1" } }, { "id": 12, "text": { "key": "/demo/2", "text": "test2" } }, { "id": 13, "text": { "key": "/demo/3", "text": "test3" } } ] ``` ### 动态本地化 运行时动态切换语言到目标语言。 生成的cfg.Tables包含TranslateText函数, 以c#为例。只需要提供一个 (string key, string origin_value) -> (string target_value) 的转换器, 就能自动将所有配置表中的text类型字段替换为目标语言的文本。程序不需要根据id去本地化映射表里查询,简化了使用。 ```c# public void TranslateText(System.Func translator) { TbItem.TranslateText(translator); ... } ``` ### 多分支 数据 支持 main + patches的数据模式。在主版本数据基础上,提供一个补丁数据,合并处理后生成最终目标数据。适合制作海外有细节配置不同的多地区配置,不需要 复制出主版本数据,接着在上面修改出最终数据。极大优化了制作本地化配置的工作流。 ### 时间本地化 datetime类型数据在指定了本地化时区后,会根据目标时区,生成相应时刻的UTC时间,方便程序使用