语言案例/赤字和gettext

时间:2012-02-05 19:18:40

标签: translation multilingual gettext

有没有人想过某些语言的gettext和不同的案例。我们目前遇到的问题是克罗地亚的名字都被拒绝了。

例如

  • 中文:关于Foobar
  • 德语:Überoobar
  • 克罗地亚语:O Foobaru(标记

我正在使用gettext将此名称灵活插入,因为它可能会更改:

translate('About %s', name)

这里允许赤纬的最佳方法是什么?如果 Foobar 和克罗地亚赤纬你可以这样解决:

About %s => O %su

但现在让我们使用以 a 结尾的单词,如 Foobara ,然后克罗地亚语的正确语法将是 O Foobari 并附加 i

如何克服gettext的短缺?

1 个答案:

答案 0 :(得分:0)

gettext不支持这样的变化。

如果您知道%s的每个可能候选人,您可以在资源中列出所有这些候选人,例如,

msgid "About Foobar"
msgstr "O Foobaru"
msgid "About Bazbar"
msgstr "O Bazbarbaru"
msgid "About Foobara"
msgstr "O Foobari"
msgid "About Bazbara"
msgstr "O Bazbari"

然后它会使德语等其他语言变得麻烦。

或者,如果您可以将克罗地亚语变量定义为函数,则可以先在函数中处理它并继续使用泛型gettext转换。

translate('About %s', myDeclension(name));

并且myDeclension函数执行此操作,

function myDeclension(text) {
  if (isLocale() != 'hr') { return text; }
  if (isEndWithA(text)) { return replaceLastAWithI(text); }
  else { return addTrailingU(text); }
  // add more Croatian specific conversion if any
}