關(guān)于Android strings.xml-你應(yīng)該了解的幾個原則
不要試圖重用
不同的頁面不要重用一個string。
1.假設(shè)你的登錄和注冊頁面都有一個加載對話框。因為都有加載界面所以你決定使用同一個string-R.string.loading。
但是說不定什么時候你使用不同的string了,這時你就需要重新創(chuàng)建兩個新的string,而且還要修改java代碼。如果一開始你就使用兩個string的話,你需要修改的就只有strings.xml文件。
2. 你永遠不知道你的應(yīng)用要支持哪些語言。在某一種語言中-或許你可以在不同的上下文中使用同一個詞語,但是在另一種語言中很可能不同的上下文需要不同的詞語。
注意這里英語版本的strings.xml中,R.string.download_file_yes 和 R.string.terms_of_use_yes兩個string都是同一個單詞- “Yes”。
但是在烏克蘭語版本中R.string.download_file_yes用的是 “Гаразд”,而 R.string.terms_of_use_yes用的是“Так”。
分離
同一頁面的string用前綴和注釋分離
為每個string添加頁面前綴,幫助你立即識別出一個string屬于哪個頁面。
干凈的strings.xml文件可以幫助你輕松維護與翻譯成不同的語言-一個一個頁面的來。
為每個頁面創(chuàng)建單獨的strings.xml 文件
如果你想為每個頁面創(chuàng)建一個 strings.xml文件,可以這樣命名:settings-strings.xml, profile-strings.xml。但是一個app通常有10到20個頁面。所以每一個語言目錄下都會有10到20個strings.xml文件,個人認為這帶來的是混亂。
Format格式化
使用 Resources#getString(int id, Object… formatArgs) 來格式化 strings
永遠不要使用+號來拼接字符串,因為不同的語言語序是不同的。
正確的方式是使用Resources#getString(int id, Object… formatArgs)。
復(fù)數(shù)
使用 Resources#getQuantityString (int id, int quantity) 來處理復(fù)數(shù)
永遠不要在java代碼中解決復(fù)數(shù)問題,因為不同語言中復(fù)數(shù)的語法規(guī)則是不同的。
正確的方式是使用Resources#getQuantityString (int id, int quantity)。
注:關(guān)于getQuantityString方法請看:Android Quantity Strings 的 getQuantityString方法取值問題
詞語高亮顯示
使用html文本來高亮靜態(tài)詞語
如果你想改變TextView中的某些單詞的顏色- ForegroundColorSpan并不總是***選擇,因為它的高亮是通過索引來完成的,而且在多語言下不安全。***在 strings.xml文件中使用html的font color標簽。
假設(shè)你有一個“Discover and play games.” 的文本。你想讓單詞 “Discover” 和 “play” 顯示成藍色。