Bol*_*wyn 5 gettext internationalization icu
当我读到Gettext和ICU MessageFormat 时,它们总是被描述为对立的本地化方法。
但我认为,将两者结合起来会是一个有趣的想法:使用 MessageFormat 进行格式化,使用 Gettext 根据语言选择正确的模板。沿着以下路线:
setlocale(LC_ALL, lang)
output = MessageFormat(lang, gettext("There is {number 1} Foo in bar."), [1])
Run Code Online (Sandbox Code Playgroud)
这种方法有明显(或不那么明显)的缺点吗?我是否缺少 MessageFormat 的核心部分,否则如何选择已翻译的模板?
您的方法的明显问题是如何处理复数形式。尽管 ICU 内置了对CLDR 复数规则的支持,但它并不像 gettext 使用的那样简单和灵活。
基本上,在 gettext 中,翻译人员可以根据需要添加任意数量的复数形式,并且由 .po 文件头中的选择规则控制。它比使用 CLDR 规则(根据 CLDR 版本可能不正确)更灵活、更正确。
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |