在.NET之前,我們有自己的短語本地化系統,並且我們以一種方式構建評論,以嵌套在格式化字符串中,如「{0:price}」。隨着歲月的流逝,我越來越懷念這個問題。.NET格式化字符串 - 評論的最佳實踐?
它不會出現有記錄在.NET格式化字符串原位這樣的方式:
string.Format("{0//numerator}/{1//denominator} = {2//ratio}"
,somevar
,anothervar
,yetanothervar);
尤其這是在本地化/措辭在插入點得到重新排序是有用的,不更改代碼:
string.Format("Dividing {1//denominator} into {0//numerator} gives {2//ratio}"
,somevar
,anothervar
,yetanothervar);
任何人有他們使用這些文件,以免出錯時的術語在維護/定位等得到重新安排什麼花樣?
評論的重要性在於,對於本地化和配置,通常情況下,字符串不在變量的代碼中 - 我已經將它們放在資源文件,app.config和數據庫中。
在一個實際的例子中,子類控制公開了一個PhraseID屬性(控件被映射到從表單生成的XML文件中的ID,並且表單控件被動態地轉換),所以子類化的表單做了這樣的事情:
// Handle the phrases without insertion points - this is in the base class
foreach (Control in this.Controls) {
IXLatable ixl = (IXLatable) Control;
ixl.Text = GetPhrase(ixl.PhraseID);
}
// in the individual form classes, they override the behavior for complex displays:
lnkPublish.Text = string.Format(GetPhrase(lnkPublish.PhraseID), filename, foldername, userid);
凡字典包含默認和本地化的字符串,如:
phraseid, language code, phrase
1,en,"{0//filename} published to {1//foldername} by {2//userid}"
1,pl,"{2//userid} ublishedpay ethay ilefay {0//filename} otay {1//foldername}"
這是少了很多可能是一個翻譯(誰不會看到源代碼)將獲得索引錯誤,如果他們在d中提供了評論默認短語。對於非本地化的揚聲器來說,解決翻譯資源中的問題更爲容易。
不是.NET,但消息格式是非常有趣的本地化明智https://github.com/jedtoolkit/messageformat.js – 2012-12-05 23:43:42