2013-10-11 62 views
0

我已經經歷了許多有關本地化的MSDN,但我仍然想知道如何組織我的resx文件。resx文件中的重複值:組織資源文件條目的最佳方法是什麼?

我通常遇到resx文件有多個鍵值相同,這似乎是錯誤的我。通常情況下,當每個顯示相同文本的屏幕/用戶控件有不同的按鍵時會發生這種情況。在這種情況下,RESX文件看起來是這樣的:

ScreenXXX_ControlXXX_DisableButtonText = Disable 
ScreenYYY_ControlYYY_DisableButtonText = Disable 
... 

也許有人會說,這將讓你改變一個特定的文本,而不會影響其他的,但顯然,改變「禁用」的所有屏幕上的將是一個痛苦帶來的靈活性。我覺得擁有一個能夠表達「禁用功能」概念的獨特密鑰會更有意義,並且可以由多個控件共享。喜歡的東西:

DisableFeatureButtonText = Disable 

所以問題是:

  • 什麼是推薦的方法來創建資源條目? 我應該創建一個「上下文」(=與UI中的位置相關)或「語義」的條目嗎?
  • 在哪些情況下,您的resx文件中存在重複值是正常情況?
  • 更一般地說,在這些問題上是否有任何約定或準則?

感謝

+1

我不得不承認,我通常讓.NET和Visual Studio爲我處理。根據我所知道的關於它是如何工作的細節,雖然...你應該有一個「默認」resx,它定義了一切的值...並且只有給定本地化所需的更改應該列在本地化資源中。在任何給定的單個文件中都不需要重複,但可能存在跨文件。 – Nevyn

回答

1

我面臨的情況與您的情況非常相似,因爲我有多個屏幕,並且在很多情況下,控制狀態,文本等在屏幕之間重複。最初,我只是將屏幕上的resx文件分開,並且有重複的鍵/值對,但是當您真的考慮它時,它們今天是一樣的,但這並不意味着一個鍵/值對可能意味着未來兩件不同的事情。無論如何,這是我會做什麼:

我會有一個共同的resx文件,其中包含的鍵是所有屏幕共同等 然後,我會有一個resx文件是唯一的屏幕,但這些resx文件也可以包含公共resx中的鍵,然後你可以有一個方法來檢查它們是否在特定的resx中是一個值,如果它找到它,就使用它,否則它使用來自公共的值resx文件。

我真的不覺得有一個約定,我通常以我命名我的變量的相同方式命名我的密鑰。

我認爲如果將來使用重複密鑰是可以的,那些密鑰可能意味着其他值或需要不同的值。

我喜歡考慮像數據庫表一樣的resx文件。您可以將resx鍵/值填充到一個表中,並使用一個長的去偏移表,或者可以將resx鍵/值拆分爲更小的表。我更喜歡後者,因爲它可以在未來實現更好的可擴展性。

1

您可以使用您在多個地方使用所有的資源在全球Default.resx文件。你想放在哪裏取決於你。我不認爲有一個通用的規則。但是像Save,Disable等這樣的東西肯定值得放在那裏。

相關問題