翻译

目录

  1. 介绍
    1. 为前端增加新语言
    2. 为后端增加新语言
  2. 国际化

介绍

ezBookkeeping 支持多语言和本地化设置,前端和后端分别有自己的多语言文件。前端多语言文件在 /src/locales/,后端多语言文件在 /pkg/locales/。所有语言文件需要以语言标签(单一语言子标签 或 语言子标签加书写体子标签,例如 enfrzh-Hanszh-Hant)命名。

有关语言标签的更多信息,请参考 RFC56​​46。所有可用语言标签可从这里 IANA registry language-subtag-registry 找到。

为前端增加新语言

  1. 复制 /src/locales/en.json 并创建一个以语言标签命名的新文件
  2. /src/locales/index.js 中的 allLanguages 对象中添加键值对,其中键名应当为语言标签,值对象里的 name 字段应当为英文的语言名称,displayName 字段应当为该语言下的语言名称,content 字段应当为新的语言对象。另外,为了兼容一些不支持 language-script 格式语言标签的第三方服务,需要在 alternativeLanguageTag 字段中设置 language-region 格式的语言标签(例如 zh-CN
  3. 翻译每个文字条目

为后端增加新语言

  1. 复制 /pkg/locales/en.go 并创建一个以语言标签命名的新文件
  2. /pkg/locales/all_locales.go 中的 AllLanguages map 中添加键值对,其中键名应当为语言标签,值对象里的 Content 字段应当为新的语言对象
  3. 翻译每个文字条目

国际化

ezBookkeeping 允许用户更改多项区域设置,如日期、时间、数字和货币格式。当用户没有修改时,这些区域设置将使用语言文件中配置的默认值。这些默认值都在语言文件的 default 对象中。

这里是所有需要配置默认值的设置和说明:

项目 所有可用选项 描述
currency /src/consts/currency.js 中的 allCurrencies 默认货币
firstDayOfWeek /src/consts/datetime.js 中的 allWeekDays 默认每周第一天
longDateFormat /src/consts/datetime.js 中的 allLongDateFormat 默认长日期格式
shortDateFormat /src/consts/datetime.js 中的 allShortDateFormat 默认短日期格式
longTimeFormat /src/consts/datetime.js 中的 allLongTimeFormat 默认长时间格式
shortTimeFormat /src/consts/datetime.js 中的 allShortTimeFormat 默认短时间格式
decimalSeparator /src/consts/numeral.js 中的 allDecimalSeparator 默认小数点
digitGroupingSymbol /src/consts/numeral.js 中的 allDigitGroupingSymbol 默认数字分组符号
digitGrouping /src/consts/numeral.js 中的 allDigitGroupingType 默认数字分组类型
currencyDisplayType /src/consts/currency.js 中的 allCurrencyDisplayType 默认货币显示类型

另外,各语言文件的 format 对象中有各个语言下日期和时间格式的可选项,这些格式可参考 Moment.js 的文档 设置,具体这些格式的使用场景如下

项目 使用场景
longDate 多个场景
shortDate 多个场景
longYear 首页总览数据中使用
shortYear 交易和统计分析页面的时间筛选中使用
longYearMonth 交易列表显示月份时使用
shortYearMonth 交易和统计分析页面的时间筛选中使用
longMonthDay 首页总览数据中使用
shortMonthDay 交易和统计分析页面的时间筛选中使用,显示在 shortDate 旁边,格式应该类似于 shortDate
longTime 多个场景
shortTime 多个场景