代码之家  ›  专栏  ›  技术社区  ›  siddharth ganesh

Javascript序号后缀语言环境转换

  •  3
  • siddharth ganesh  · 技术社区  · 7 年前

    想知道在为满足多语种受众的需求而设计的应用程序中,添加序号指示符是否是一个好主意。如果我们想出一个有角度的管道,其逻辑可以转换数字,如1->1、2->第2、3->第三个rest都以“th”为后缀,如果我们从一个以“en”、“ar”等语言标识符为后缀的文件中读取“st”、“nd”、“rd”、“th”,那么对于其他语言来说,这种假设有多好。。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tim    7 年前

    如果我理解正确,你是在问一个简单的后缀“翻译”是否有效。e、 g.“st”(英语)至“er”(法语为premier)。如果这就是你的意思,那么不,这不好。规则太复杂,语言之间差异太大。

    如果您只需要以下功能 然后,您可以享受只需要31个预定义值的奢侈。然后您可以预编译一些列表,如下所示:

    en:
    ["","1st","2nd","3rd", ... ,"29th","30th","31st"]
    
    fr:
    ["","1er","2e","3e", ..., "29e","30e","31e"]
    
    ar:
    ["","١.","٢.","٣." , .. ,"٢٩.","٣٠.","٣١."]
    

    我使用一个简单的PHP脚本生成了这些 NumberFormatter . 我不能保证阿拉伯语是正确的。

    如果您需要这些后缀 任意数字 ,则必须将规则嵌入到应用程序中。

    顺序规则在Unicode CLDR中定义。 https://unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html

    您可以从数据文件中提取这些规则,并将公式烘焙到应用程序中,但这可能需要大量的工作。

    它们也是不完美的。我不太记得学校有多少法语,但快速的谷歌显示(第一个)你有1er(premier)、1re(premire)、1ers(premiers)和1res(premire)。真是一场噩梦。

    您的最佳路线取决于您的问题没有给出的精确用例。