一尘不染

如何使用真正的多语言字符串制作应用程序?

java

为不同语言制作字符串的最佳方法是什么?我有这个问题,我试图显示诸如“ month”,“ months”,“ year”,“
years”之类的字符串。目前,我正在使用三种我知道的语言:西班牙语,英语和波兰语。对于英语和西班牙语,这很简单。但举例来说,波兰语中的“年”可以变成“
lata”(在数字2-4之后)或“
lat”(在5以后的数字之后)。我正在考虑为此添加一个额外的字符串,并在其他语言中将其设为空。但是,这使我想到了我不知道的其他语言,这可能会有更多差异。如果我将来考虑添加更多语言,哪种情况下最好的方法是?


阅读 165

收藏
2020-12-03

共1个答案

一尘不染

听起来像您想要一个ChoiceFormat,或者至少使用一个到一个MessageFormat

public static void main(String... args) {
    String[] formats = { 
        // NOTE - In a real app, you'd fetch the format strings from a language,
        // file, not hard-code them in your program. Obviously.
        "{0,number} {0,choice,0#years|1#year|1<years}", // english
        "{0,number} {0,choice,0#años|1#año|1<años}", // spanish
        "{0,number} {0,choice,1#[fewer than 2]|2#lata|4<lat}", // polish
        "{0,number} år", // swedish - singular and plural forms look the same!
    };
    int[] years = {0, 1, 2, 3, 4, 5, 6};
    for (int year : years) {
        for (String format : formats) {
            System.out.println(MessageFormat.format(format, year));
        }
        System.out.println();
    }
}

在您的程序中,您当然会format从字符串文件中获取字符串。

2020-12-03