有没有人想过某些语言的gettext和不同的案例。我们目前遇到的问题是克罗地亚的名字都被拒绝了。
我正在使用gettext将此名称灵活插入,因为它可能会更改:
translate('About %s', name)
这里允许赤纬的最佳方法是什么?如果 Foobar 和克罗地亚赤纬你可以这样解决:
About %s => O %su
但现在让我们使用以 a 结尾的单词,如 Foobara ,然后克罗地亚语的正确语法将是 O Foobari ( 并附加 i 。
如何克服gettext的短缺?
答案 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
}