2011-11-24 58 views
1

可以說有一堆表單:A.cs,B.cs,C.cs ...使用* .resx和Common.resx的Windows窗體本地化

每個表單都是本地化的 - A.resx,A .NL-nl.resx等

這些表格包含一些特定的標籤和一些常用於所有形式的標籤。因此,特定的字符串轉到A.resx(A.NL-nl.resx)和常用的字符串 - 可以說Common.resx(Common.NL-nl.resx)

有什麼辦法強制當表單初始化使用A.resx和Common.resx中的所有常用字符串的資源字符串?當然,我可以在一些OnLoad方法中爲我的表單佈局項目設置標題,但隨後內置的本地化功能會丟失。

我想這樣的功能的原因,因爲有很多不同形式的常用字符串,它會更容易管理/翻譯這些* .resx文件。

我已經在C#中做了一些關於本地化的閱讀,但可能我錯過了一些東西。

+0

我認爲你在談論Windows窗體?因爲沒有「C#Forms」這樣的東西。 –

+0

是的,我正在談論Windows窗體。 – despou

回答

1

從我的經驗,我可以說:

  1. 你會更好的爲所有形式創建一個locatization的RESX文件。
  2. 手動分配所有可本地化的字符串(我在構造函數中做到了這一點)。
  3. 將每個表單的每個字符串存儲在不同的本地化屬性中,如Form1_OkButtonText,Form2_OkButtonText。

當您將應用翻譯成不同語言時,最後一個確實很重要,因爲翻譯可能真的取決於上下文。在一個窗體上,默認按鈕可以被命名爲OK,另一個窗體應該被命名爲Accept。在英語中,這兩個按鈕都可能被命名爲Ok,在其他一些語言中,這聽起來很尷尬,並且需要不同的名稱。如果您爲所有按鈕使用相同的資源字符串,這是有問題的。

爲了緩解多次翻譯多個相同字符串的問題,您應該使用一些翻譯軟件,保留字典字典,併爲您提供已翻譯的字典。

+0

謝謝你的回答。我和你一樣思考。這只是我的同事不是很高興,因爲內置的本地化功能丟失。但是我個人認爲,在一個地方管理資源比較容易。尤其是當需要根據用戶輸入動態更改某些字幕時。再次感謝。 – despou

+0

告訴你的同事,有很多時候,資源必須用代碼工作。例如。您需要將一些運行時數據插入字符串並使用{0}格式化符號,對於許多錯誤消息(它們通常是從代碼生成的)也是如此。然後讓所有資源在一個地方更方便。 –

0

資源具有完全限定的名稱。這意味着他們有一個來源。如果您想在表單中使用來自Common.resx的文本,則必須爲此編寫代碼。簡單的代碼,但代碼仍然。