2009-09-22 141 views
0

我創建幾個字符串消息WebResources.resx文件我想分類:資源和本地化 - .resx文件中的父/子字符串?

Signup_Status_Inactive Signup_Status_Reserved 等等

因爲它是在後臺只是一個XML文件,有沒有可能創建父/子關係,所以我不必爲相關字符串添加前綴並遵循更好的點符號?

爲了解決這個問題,我可以創建一個具有通過適當的點符號訪問的屬性的類,即StatusMessages.Signup.Inactive - 但這只是額外的工作。

是否只有一個級別的.resx文件的字符串組件?

此外,你怎麼輸出會話變量作爲RESX價值的一部分 - 即:「已經爲您保留」 「你的卡#」 + HttpContext.Current.Session [「ReservedCardNum」] +

謝謝。

回答

2

.resx文件中的所有密鑰都是單一級別的,但是沒有任何東西阻止您使用自己的XML格式,只要您編寫代碼以便讀取它以及維護它所需的任何工具即可。


要輸出會話變量,我會用的String.Format()

通常你會寫

String.Format(「"Your Card #{0} has been reserved for you.", 
       HttpContext.Current.Session["ReservedCardNum"]) 

所以才改爲只使用

String.Format(stringLookedFromResouceFile, 
       HttpContext.Current.Session["ReservedCardNum"]) 

而且把翻譯字符串中的「{0}」,這樣翻譯人員可以根據需要更改單詞的順序。


想想你將如何傳達給翻譯一下佔位符,如果譯者使用,顯示註釋字段資源編輯器,你可以添加這樣的評論「{0} =用戶名」

您還必須以某種方式檢查翻譯人員是否搞亂了地點持有者,我看到譯員將「{0}」更改爲「(0)」,因爲他們「認爲其他類型的支架看起來更好」等等。或刪除其中一個括號,以便字符串格式不再有效。

參見How to validate format string

+0

+1。另外,如果使用資源編輯器,則使用註釋字段來記錄進入每個替換字段的內容;上下文(如「個人姓名」或「項目計數」)和數據類型對翻譯人員非常有用。 – devstuff 2009-10-14 10:16:04