我們所使用的語言,無論是中文還是英語,都是從左向右讀的(left-to-right),因此我們已經十分習慣了從左向右讀(left-to-right)。一旦遇到了從右向左讀的(right-to-left),便會十分的不習慣,甚至比見到火星文還難受。光看著就令人難受了,但更讓人崩潰的是,還要為應用去定義arabic語言的字串,也就是為應用新增arabic語言支援,不但要檢視大量的arabic天書,還要處理一些複雜的字串。
對於right-to-left的語言,最理想就是以下二種case,它不需要特別的處理,只要按照翻譯把翻譯寫入字串資源檔案即可:
都是arabic的時候,無需特殊處理,翻譯即可
左側有英文/數字,但右側是arabic(也就是說,在left-to-right語言中右側有英語/數字)
若全都是英語或數字,也不需要處理,讓其保留left-to-right的特點
例如:view plain
<?xml version="1.0" encoding="utf-8"?>
استورد
vcard">استورد vcard
執行後結果就是:استورد
vcard استورد
但是對於某些情況,就需要做特殊的處理:
中間有英語或數字的
如果不做處理,數字會被變成right-to-left,但事實上是需要left-to-right的,如:
view plain
<?xml version="1.0" encoding="utf-8"?>
استورد%sتور
使用時替換後,會變成:استورد68001استورد,而需要的是:استورد10086استورد,這裡就需要在英語或數字兩端加上
left-to-right overrider \u202d和\u202c,如:
view plain
<?xml version="1.0" encoding="utf-8"?>
استورد\u202d%s\u202cتور
右側有英語或數字(left-to-right中在最左側)
有xliff本地化替換的情況
the solution is to add right to left marker(rlm) before and after english or digits
view plain
<?xml version="1.0" encoding="utf-8"?>
send استورد
\u200fsend استورد\u200f
\u200fsend \u200f%1$dاستورد
作者「浪人的星空」
Android實戰技巧 為從右向左語言定義複雜字串
我們所使用的語言,無論是中文還是英語,都是從左向右讀的 left to right 因此我們已經十分習慣了從左向右讀 left to right 一旦遇到了從右向左讀的 right to left 便會十分的不習慣,甚至比見到火星文還難受。光看著就令人難受了,但更讓人崩潰的是,還要為應用去定義ara...
Android實戰技巧 ViewStub的應用
在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...
Android實戰技巧 ViewStub的應用
在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...