這樣的本地化考慮了您想要翻譯的語言。多重複數是相當罕見的,我想大多數情況下都是可以互換的或者是上下文相關的。除非在應用程序的多個位置使用它,否則不需要擔心。如果你這樣做,並且特定的用法確實會在複數用法中產生語法錯誤,那麼你需要在該板上添加一個新的密鑰(所有語言)。或者,由於您無論如何都在探索文化,請爲受影響的語言添加附加條件並使用單個替代複數形式。
我不會建議避免它,因爲你可以很快失去自然語言的流動「分鐘前回答:6」。
也許你的意思是第一位的,但更常見的情況是跨不同文化的語法位置變化。例如,想要本地化的字符串「此頁面被查看X次」。你可能想爲這3個本地化字符串:
PageViewStart =「此頁面查看」 PageViewEnd =「時間」 PageViewEndPlural =「時代」
然後一個簡單的僞實施將
PageViewStart + pageCount.ToString()+ pageCount == 1? PageViewEnd:PageViewEndPlural;
但在荷蘭語中,「Deze pagina is {0} keer bekeken」和韓語「조회수{0}」。所以你會發現你會立即遇到問題與實施多種語言格式複雜句子結構的方式。
我特意在示例中留下了{0},因爲它暗示了我的解決方案。以複數和非複數形式使用整個句子的本地化。
PageView =「此頁面被瀏覽了1次。」 PageViewPlural =「此頁面被瀏覽了{0}次」。
這樣,你可以寫條件(僞同樣取決於你的實現):
頁頁次> 1? PageView:String.Format(PageViewPlural,pageCount.ToString());
唯一的問題是您的翻譯人員需要指示resx文件中{0}標記的含義和位置。
舉個例子吧? – 2009-09-16 04:40:03
例如:在波蘭語中,有單數,複數和複數的術語,例如可以單數形式的房子,複數形式的單數形式的domy和複數形式的domów。單數是1,paucal是範圍2-4,22-24,32-34,...和複數是其他的一切。相比英語而言更多... – Sam 2009-09-16 06:03:37
@Sam - 感謝您爲我添加一個示例,當我問這個問題時我在iPod Touch上,所以我需要保持簡短。 – dustyburwell 2009-09-16 13:08:10