1

NSString「あなたの勝ちです。チャック・ノリスでした。」のようなローカライズがあります。これのフランス語訳は「Gagne. il s'agissait bien de Chuck Norris」です。ただし、名前が母音で始まる場合は、「Gagné. il s'agissait bien d'Alfred Hitchcock」と言う必要があります。

これらの状況に対するサポートを提供していますかNSString、それとも可能性のあるそれぞれを手動で翻訳する必要がありますか?

4

2 に答える 2

6

などのツールを使用してローカリゼーションを行おうとしている場合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);
    }
}

実際のコードではなく疑似コードを提供したのはなぜですか? これは、この作業を行う方法が間違っているためです。散らかっていて、醜く、エッジケースがたくさんあります。たとえば、フランス語の文字「H」は「吸引された」または「吸引されていない」可能性があり、一方は「l'/d'」を取り、もう一方は「le/la/de」を取ります(「l'hôtel」と比較してください)。および「le hockey」.) 区別は恣意的であり、単語のスペルを調べるだけでは判断できません。

フォーマット文字列を名前に一致させようとするのではなく、フォーマット文字列をニュートラルに変更してみてください。の代わりに、名前の性別とスペルがローカライズに影響しないようにしてください"Il s'agissait bien d'%@.""Le nom? C'est %@!"ここでは、言語によってオプションが異なります。

于 2012-06-26T13:09:21.657 に答える