2011-11-25 55 views
0

微軟是否實現C#運行時提供的一些本地化機制翻譯常見字符串像OverflowStack overflowUnderflow,等...翻譯和本地化問題

請參見下面的代碼 - 它是Mono的一部分,Mono本身具有用於進行這種翻譯的例程。

// Added to avoid possible integer overflow. 
if (inputOffset > inputBuffer.Length - inputCount) 
    throw new ArgumentException("inputOffset" + 
           Locale.GetText("Overflow"); 

現在 - 它是如何在Microsoft版本運行的完成,我該如何使用它,例如,要獲得Overflow本地化相當於不增加資源文件?

+0

我相信你可以使用.Net中的GetText – IanNorton

回答

3

.NET提供了一個框架,可以很容易地本地化您的內容(ResourceManager),並在內部爲其自身目的保留一些翻譯(例如DateTime.ToString爲您提供了本地適用的日期/時間的文本表示,其中包括翻譯的月份和日期名稱),它的確如此,而不是爲您提供任何現成的翻譯,無論它們是否爲常用字符串。它不可能可靠地做到這一點,因爲有很多的人類語言,並且根據上下文的不同,文字可以有不同的翻譯。

在你的例子中,我會說你沒問題,沒有翻譯的異常信息。儘管微軟recommends that you localize exception descriptions和他們自己(至少對於主要語言)本地化,但這個建議似乎是不好的,因爲這不僅浪費了翻譯用戶可能永遠不會看到的所有這些文本的努力,而且還浪費了it can make debugging a nightmare

1

是的,它確實存在,這是一個糟糕的主意。它使調試更加困難。

0

不增加資源文件

你有什麼反對的資源文件?資源是爲.NET應用程序或程序集提供本地化和可本地化的字符串,圖像和其他數據的規定方式。

請注意,您的示例代碼中顯示的單個單詞替換將導致翻譯質量較差。不同的語言具有不同的句子結構和單詞替換不適應的單詞順序。非英語語言通常會涉及名詞和詞彙變體的性別,以恰當地反映它們在短語中的作用和數量。在這個單詞替換失敗失敗。

您的非英語客戶很可能會更傾向於不嘗試在此處翻譯單詞和單詞的文本。如果你要去支持可本地化的消息的麻煩,那麼做對,並且允許整個字符串被翻譯,以便翻譯者可以正確地完成字詞順序和變形。在內容可變的情況下,使格式字符串成爲資源,以便翻譯人員可以使用該語言的約定來設置變量數據。