Pau*_*nge 1 cocoa localization nsstring
我有一个本地化NSString的东西,比如"你赢了.这是查克诺里斯.".法语翻译是"Gagne.il s'agissait bien de Chuck Norris".但当名字以元音开头时,应该说"Gagné.ils'agissait bien d'Alfred Hitchcock".
是否NSString为这些情况提供支持,还是我需要手动翻译每种可能性?
如果你正在尝试使用类似的工具进行本地化,那么这样的NSLocalizedString()变体将会出现在很多语言中(特别是那些具有语法性别的语言)并且要处理很多麻烦.没有内置的change-strings-if-starting-with-a-vowel方法,但是这样的东西是必要的(伪代码):
if (language == LANG_FRENCH) {
if (myName.startsWith(ANY_VOWEL)) {
result = format(@"Gagné ... d'%@", myName);
} else {
result = format(@"Gagné ... de %@", myName);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我给你伪代码而不是真正的代码?因为这是做这项工作的错误方法.它很乱,很难看,还有很多边缘情况.例如,法语中的字母"H"可以是"吸气"或"非吸气",一个取"l"/ d'而另一个取"le/la/de"(比较"l'hôtel"区分是任意的,不能仅通过检查单词的拼写来确定.
尝试将格式字符串更改为中性,而不是尝试将格式字符串与名称匹配.而不是"Il s'agissait bien d'%@."尝试"Le nom? C'est %@!"使名称的性别和拼写不影响本地化.不同的语言在这里有不同的选择.
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |