Android實戰技巧 為從右向左語言定義複雜字串

2021-09-01 19:33:37 字數 1273 閱讀 3319

我們所使用的語言,無論是中文還是英語,都是從左向右讀的(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 استورد

但是對於某些情況,就需要做特殊的處理:

中間有英語或數字的

如果不做處理,數字會被變成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 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...