Android 開發(fā)
原因:
在支持多語言的 App 上常常會出現(xiàn)有些情況很難通過字符串串連 (利用 +
拼接兩個字符串) 的方法解決:
譬如狂魔,App 系統(tǒng)下不同語言的支持下馍惹,常常會有些句子:
英文:
A group of 5 people
中文:
5個人的小組
5
是用戶挑選的數(shù)字,是一個 變量, 這兩個短語雖是同一個意思,但是 5
的位置是不一樣的, 那么用字符串串連的方法來實現(xiàn)這種支持就難了套啤。
不推薦的方式:
int numberOfPeople = 5;
String englishMessage = "A group of" + numberOfPeople + "people";
String chinaMessage = numberOfPeople + "個人的小組";
先定義字符串蚯舱,然后再串連,然后還要監(jiān)測系統(tǒng)用哪種語言佩憾,才決定用那個字符串哮伟。 以后沒增加一種語言支持都要對這段代碼進行調(diào)整,比較復(fù)雜和難以維護
解決方法:
這個時候可以在相應(yīng)語言版本的 strngs.xml
文件下定義個模板:
英文, /values/strings.xml
:
<string name="message">A group of %d people</string>
中文, /values-zh/strings.xml
:
<string name="message">%d 個人的小組</string>
其中上面的 %d
是一個占位符妄帘,用來標記這里將會填上一個十進制的整型數(shù)字楞黄,還有其它的譬如:%s
代表字符串等等,詳細看這里
代碼, 使用 getString()
套用模板抡驼,手機會根據(jù)語言設(shè)置引用相應(yīng)的 stirngs.xml
的, 有關(guān)這個原理可以看這個帖子 :
int numberOfPeople = 5;
String message = res.getString(R.string.message, numberOfPeople);
手機語言為 中文 時鬼廓,則 message
的值為:5個人的小組
英文時,則值為:A group of 5 people
建議
在平時寫代碼的時候要留意這樣的情況致盟,即使是 App 不支持多種語言碎税,能夠用模板的盡量用模板,不要把字符串硬編碼在代碼里馏锡,擁抱變化雷蹂,擁抱未來,畢竟未來萬一 App 火了呢
更多:
- 這篇文寫了各種引用模板的手法:Android String Placeholders