我们正在尝试使用ICU库的MessageFormat(更具体地说,PHP的MessageFormatter)将我们的应用程序翻译成韩语。
韩语广泛使用后缀(어미),后缀附在单词的末尾。大多数名义后缀的形式取决于前面名词的最后一个音节的最后一个辅音(받침)。例如,主体标记在最后一个辅音时采用이( - i)形式,在没有最终辅音时采用가( - g)。所以译者给出了:
{0} is good.
John is good.
Susie is good.
可能会将其翻译为:
{0}이 좋다. ({0}-i joh-da.)
길동이 좋다. (gil-dong-i joh-da.)
如果{0}以辅音结尾,则为:
{0}가 좋다. ({0}-ga joh-da.)
지혜가 좋다. (ji-hye-ga joh-da.)
如果{0}没有以辅音结尾。
一种惯例是将这些字符串格式化为:
{0}이(가) 좋다. ({0}-i(-ga) joh-da.)
지혜이(가) 좋다. (ji-hye-i(-ga) joh-da.)
当然,这看起来笨拙和不专业,正是MessageFormat旨在消除的事情(至少在复数和性别依赖的情况下,这两者都没有,顺便提一下,与韩语相关)。 / p>
理想情况下,我需要的功能类似于复数或选择,但专门用于允许翻译人员根据检测到的最终辅音轻松提供不同的翻译。这样的事情是理想的:
{0}{0, final, none {가} other {이}} 좋다.
{0}{0, final, none {로} ㄹ {로} other {으로}} 갔다.
我已经考虑过实现一个预处理器来解析这些确定性的,依赖于语言环境的格式,并在将它们传递给MessageFormatter之前将它们作为附加参数注入,但是我想避免两次解析字符串的开销如果可能的话。
使用MessageFormatter处理此类情况的最佳做法是什么?