1. 程式人生 > >關於Android strings.xml-你應該瞭解的幾個原則

關於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

res/values/strings.xml

res/values-UA/strings.xml

java code

複數

使用 Resources#getQuantityString (int id, int quantity) 來處理複數

永遠不要在java程式碼中解決複數問題,因為不同語言中複數的語法規則是不同的。

res/values/strings.xml

java code

res/values/strings.xml

java code

詞語高亮顯示

使用 html文字來高亮靜態詞語

如果你想改變TextView中的某些單詞的顏色- ForegroundColorSpan 並不總是最佳選擇,因為它的高亮是通過索引來完成的,而且在多語言下不安全。最好在 strings.xml檔案中使用html的font color標籤。

假設你有一個“Discover and play games.” 的文字。你想讓單詞 “Discover” 和 “play” 顯示成藍色。

res/values/strings.xml

java code