關于Android strings.xml-你應該了解的幾個原則
但是說不定什么時候你使用不同的string了,這時你就需要重新創建兩個新的string,而且還要修改java代碼。如果一開始你就使用兩個string的話,你需要修改的就只有strings.xml文件。
res/values/strings.xml
2. 你永遠不知道你的應用要支持哪些語言。在某一種語言中-或許你可以在不同的上下文中使用同一個詞語,但是在另一種語言中很可能不同的上下文需要不同的詞語。
res/values/strings.xml
res/values-UA/strings.xml
注意這里英語版本的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用前綴和注釋分離
res/values/strings.xml
為每個頁面創建單獨的 strings.xml 文件
如果你想為每個頁面創建一個 strings.xml文件,可以這樣命名:settings-strings.xml, profile-strings.xml。但是一個app通常有10到20個頁面。所以每一個語言目錄下都會有10到20個strings.xml文件,個人認為這帶來的是混亂。
Format格式化
使用 Resources#getString(int id, Object… formatArgs) 來格式化 strings
永遠不要使用+號來拼接字符串,因為不同的語言語序是不同的。
res/values/strings.xml
java code
正確的方式是使用 Resources#getString(int id, Object… formatArgs) 。
res/values/strings.xml
res/values-UA/strings.xml
java code
復數
使用 Resources#getQuantityString (int id, int quantity) 來處理復數
永遠不要在java代碼中解決復數問題,因為不同語言中復數的語法規則是不同的。
res/values/strings.xml
java code
正確的方式是使用 Resources#getQuantityString (int id, int quantity )。
res/values/strings.xml
注:關于 getQuantityString方法請看: Android Quantity Strings 的 getQuantityString方法取值問題
java code
詞語高亮顯示
使用 html文本來高亮靜態詞語
如果你想改變TextView中的某些單詞的顏色- ForegroundColorSpan 并不總是最佳選擇,因為它的高亮是通過索引來完成的,而且在多語言下不安全。最好在 strings.xml文件中使用html的font color標簽。
假設你有一個“Discover and play games.” 的文本。你想讓單詞 “Discover” 和 “play” 顯示成藍色。
res/values/strings.xml
java code
注:其實本文的很多觀點和這篇文章不謀而合。
來自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0303/7179.html