本文主要講解Android開發中常見的strings.xml的使用技巧。html
原文地址java
筆者的Android系列文章android
不要複用不一樣頁面上的字符串git
1.假設你如今在Sign In與Sign Up兩個界面上都設置了一個加載提示框,由於兩個都是用於提示正在加載中的,所以你打算使用相同的提示語 —— R.string.loading
github
不事後來PM說這樣實在太不友好了,所以你打算用兩個更具體點的提示語來代替,所以你將你的strings.xml
修改成了:字體
2.對於一個國際化的項目,你並不知道應用最後須要支持多少種語言,可能你須要在某些語言中表述某些情景是相同的詞彙,而某些語言中某些情景壓根不一樣,譬如:spa
注意,在英文版本中的strings.xml中對於R.string.download_file_yes 與 R.string.terms_of_use_yes 都使用了Yes,而Ukrainian版本中則是兩個單詞。code
對於相同頁面中的字符串之前綴與註釋分割orm
1.添加前綴到字符串上有助於輔助快速地識別字符串是屬於哪一個頁面的。xml
2.清晰的字符串的區分也有助於將來對國際化的支持,能夠按照頁面來逐個地進行多語言支持。
使用 Resources#getString(int id, Object...formatArgs) 來格式化字符串
儘可能避免使用+
來鏈接字符串,由於在不一樣的語言裏對於詞彙的劃分是不一致的。
正確的方法是使用:Resources#getString(int id, Object… formatArgs).
使用
Resources#getQuantityString (int id, int quantity)
來處理複數字符串
儘可能不要在Java代碼中判斷是否須要使用複數表述,一樣是由於不一樣的語言對於複數表述的文法規則是不同的。
正確的方法是使用Resources#getQuantityString (int id, int quantity)
來進行處理:
使用HTML文法規範來進行單詞高亮
若是咱們但願在TextView中修改一些單次的顏色,可能ForegroundColorSpan
不必定是最佳的選擇,一樣是由於基於下標的高亮策略可能在不一樣的語言中出現問題。最好的呢,也仍是使用HTML的字體顏色標籤進行控制,譬如你但願在Discover and play games
這一段話中須要將Discover
與play
進行高亮展現: