有没有人想到过gettext和某些语言中的不同情况。我们目前遇到的问题是,克罗地亚语甚至名字都被拒绝了。
例
我正在使用gettext灵活地插入此名称,因为它可能会更改:
translate('About %s', name)
允许磁偏角的最佳方法是什么?如果是 Foobar 和克罗地亚磁偏角,可以这样解决:
About %s => O %su
但是,现在让我们使用以像 Foobara 这样的结尾的单词,然后克罗地亚语正确的语法将是 O Foobari (必须删除和,并附加我)。
如何克服gettext的不足?
最佳答案
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
}
关于translation - 语言案例/偏斜和gettext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152182/