2010-06-10 79 views
2

我正在處理資源/字符串重複的潛力巨大的應用程序(.NET,但不相關) - 大多數這些字符串很簡單,如:避免與String.Format的資源(本地化的字符串)重複

  • 體積:33
  • 卷:33(分貝)
  • 33分貝
  • 體積(分貝)
  • 命令 - 體積:33(dB)的

其中X,Y和單位相同。

我應該定義新的資源爲每個字符串的或者是優選使用的String.Format簡化其中的一些,例如:

String.Format("{0}: {1}", Resource.Volume, 33) 
String.Format("{0}: {1} {2}", Resource.Volume, 33, Resource.dB) 
Resource.Volume 
String.Format("{0} ({1})", 33, Resource.dB) 
String.Format("{0} ({1})", Resource.Volume, Resource.dB) 
String.Format("Command - {0}: {1} {2}", Resource.Volume, 33, Resource.dB) 

我還要定義串的格式,如「{0 }:{1}」中的資源,所以會有的重新排序的話可能...

我會和 - 選擇性不使用這種方法在整個應用程序..

又有怎樣:

String.Format("{0}: {1}", Volume, Resource.Muted_Volume) 
// = Volume: Muted 
Resource.Muted_Volume 
String.Format("{0}: {1} (by user {2})", Volume, Resource.Muted_Volume, "xy") 
// = Volume: Muted (by user xy) 

那麼像「用戶」與「用戶:」與「用戶 - 」這樣的簡單例子呢?你能想到任何文化:':'會在不同的地方,或者會使用不同的角色?

優點是在我的應用程序中將資源數量減少2-3倍。

使用這種方法有沒有隱藏的危險?有人能給我一個例子(語言/文化),這將無法正常工作?

回答

2

你已經確定的主要缺點自己,當你問一個問題:

可能有人給我一個例子(語言),這些都不會正常工作?

您所依賴的單詞在所有語言中的順序相同。我不是任何語言專家,但是我一直致力於編譯字符串時翻譯成其他語言(通常是法語和德語)和詞序的應用程序始終是一個問題。

對於簡單的短語你可能會確定 - 例如你給的那些,但是更復雜的東西,你需要爲每一個單獨的資源。

+1

我還會定義資源行NameValue =「{0}:{1}」和NameValueUnit =「{0}:{1}({1})」,這樣就可以對單詞進行重新排序 – 2010-06-10 16:35:33

1

除了複數/單數問題(這不是特定於這個問題),我認爲這對大多數歐洲語言來說是安全的,因爲它沒有使用自由文本,但主要是數量和附錄。命令:命令的名稱。體積:數量。 您需要處理單詞順序,讓資源定義模板,但這仍然只是「格式類型」的一個資源 - 模板中的單詞仍然是參數化的。即使如此,我仍會使用默認情況下使用組合方法的策略來實現它,但是可以選擇覆蓋特定語言,以便可以在缺省組合規則出現故障時明確指定字符串。