2013-01-18 75 views
5

我有一個基礎語言爲英語的WinForms應用程序。我將表單本地化爲德語。德語中的一些單詞比他們的英文單詞長,因此我需要在德語版的表單上移動一些控件。問題在於,當我移動英語控件時,德語本地化並不反映移動(顯然)。本地化後重置控制位置

但是有些控件錯誤地移動了,我想重置它們,所以它們在英文表格上的移動也反映在德文表格上。

如何重置德國表單上單個控件的位置和大小(或所有屬性),以便在英文表單上移動時控件將在表單的兩種語言版本上移動?除了挖掘本地化的.resx文件並刪除控件的所有屬性分配之外,還有其他方法嗎?

+0

這些靜態或動態創建的控件? –

+0

這些是靜態控件 – Daniel

回答

4

我是Visual Studio開發人員的本地化產品的作者(爲了充分披露)。您從本地化的「.resx」文件中刪除的任何屬性,無論是在Visual Studio表單設計器中,還是在「.resx」文件本身中手動刪除,都會導致控件再次推遲到該屬性的默認語言值。然而,沒有具體的功能可以處理這個問題。你需要在控制的基礎上自己做。但是請注意,Visual Studio有時會很脆弱,並且有各種各樣的bug,因此對於這個問題和其他問題,即使使用設計器刪除它們(上次我回顧了情況),也並不總是有效。除非現在已經修復(我懷疑它),否則如果您將德國控件的「位置」屬性設置回默認語言的「位置」屬性(例如在設計器中),VS應該從屬性中刪除「位置」屬性「.de.resx」文件。它有 - 有時。其他時候它不會(去圖),你需要自己手動刪除它。一旦消失,「回退」過程可確保默認語言屬性再次被使用(因此,將英文版本的控件移動到德語版本上將會使用德語版本,因爲兩者都依然依靠相同的屬性 - 英文「.resx」文件中的文件)。

+0

謝謝,拉里。雖然我沒有得到一個完美的,基於GUI的解決方案,但我對這個主題略懂一些,可以停止搜索。這是手動.resx黑客攻擊。 – Daniel

1

我認爲,如果您以不需要更改控件的方式創建用戶界面,它將使您未來的開發更容易。然後,您可以翻譯標籤,不要亂用控制位置。

例如,將標籤放在相應編輯字段的頂部,而不是左側,使按鈕足夠大以處理所有文本。並考慮重新編輯德文文本以使它們的尺寸更小。

+1

謝謝,但我不認爲這是一個好的解決方案。首先,今天的屏幕很寬,所以他們的房地產水平,而不是垂直。在文本框上方放置標籤意味着我可以在給定屏幕上顯示更少的信息。其次,預測未來語言的空間需求是不可能的。沒有比充滿縮寫和/或混淆術語的GUI更糟的了。 MS讓本地化功能像他們一樣靈活是有原因的。 – Daniel

0

現代化的本地化工具可以提供幫助。表格在工具中直觀地顯示,允許編輯大小和位置值(如果已經明確設置)。自動尺寸控件將顯示,但尺寸/位置不可編輯。

設計本地化軟件很重要。避免在運行時顯着更改表單;避免硬編碼和連接字符串等。

本地化工具將檢查您的源代碼或編譯好的二進制文件。它會發現要翻譯的形式,字符串,菜單等。它會將這些文件提交給語言翻譯員,並給你翻譯後的源代碼或二進制文件(取決於你開始的)。這些工具可以理解.net命名語言文件夾的約定等。

搜索「.net軟件本地化」以找到可以完成這項工作的有用工具。