跳转到内容

国际化支持

在结构定义文件(.cfg)中,将需要国际化的字段类型从 str 改为 text 即可启用国际化支持。

传统方案

  • 策划人员需要在国际化字段中填写ID
  • 所有翻译内容统一索引到一个文件中
  • 翻译时只需处理单一文件

传统方案的缺点

  • 增加间接层,需要维护ID对应关系
  • 策划人员心智负担较重
  • 若初期未考虑国际化需求,后期修改成本高

cfggen 方案

  • 工具自动索引和提取翻译内容
  • 对策划人员完全透明,无需额外维护工作
  • 支持灵活的国际化策略

根据查找键(key)的不同,提供两种国际化方案:

  1. ** 方案1 - 以原始文本为键**(本节详细介绍)
  2. ** 方案2 - 以主键 + 字段链为键**(详见下一节

本节重点介绍方案1的实现和使用方法。

参考示例项目:i18n_method1

假设需要将文本翻译为英文(en)、韩文(kr)、繁体中文(tw)三种语言。

i18n_method1 目录下执行以下命令:

Terminal window
# -i18nfile en.csv 参数用于复用已有的翻译结果
# 首次运行时可不加此参数,或手动创建空的 en.csv 文件
java -jar ../../cfggen.jar -datadir ../config -i18nfile en.csv -gen i18n,file=en.csv
java -jar ../../cfggen.jar -datadir ../config -i18nfile kr.csv -gen i18n,file=kr.csv
java -jar ../../cfggen.jar -datadir ../config -i18nfile tw.csv -gen i18n,file=tw.csv

method 1

生成的CSV文件包含三列:

  • 第一列:表格名称
  • 第二列:提取的待翻译原始文本
  • 第三列:需要人工填写的翻译结果

根据图示,在生成的CSV文件中填写翻译内容:

  • 杀个怪 翻译为 kill a monster
  • 杀怪 翻译为 kill monster
Terminal window
# 使用 -langswitchdir 参数指定多语言目录
# -defaultlang 默认为 zh_cn
-langswitchdir . -gen ...

此命令会遍历 -langswitchdir 目录下的所有 .csv 文件作为多语言版本。

Terminal window
# 使用 -i18nfile 参数指定特定语言文件
-i18nfile en.csv -gen ...

当需要修改翻译内容时:

  1. 执行步骤2:编辑翻译文件
  2. 执行步骤3:重新生成代码和数据文件

当配置表有更新时:

  1. 执行步骤1:提取新的文本字段到翻译文件中(保留原有翻译)
  2. 执行步骤2:编辑新增的翻译内容
  3. 执行步骤3:重新生成代码和数据文件