咱們所使用的語言,不管是中文仍是英語,都是從左向右讀的(Left-To-Right),所以咱們已經十分習慣了從左向右讀(Left-To-Right)。一旦遇到了從右向左讀的(Right-To-Left),便會十分的不習慣,甚至比見到火星文還難受。光看着就使人難受了,但更讓人崩潰的是,還要爲應用去定義Arabic語言的字串,也就是爲應用添加Arabic語言支持,不但要查看大量的Arabic天書,還要處理一些複雜的字串。git
對於Right-To-Left的語言,最理想就是如下二種Case,它不須要特別的處理,只要按照翻譯把翻譯寫入字串資源文件便可:ide
都是Arabic的時候,無需特殊處理,翻譯便可
左側有英文/數字,但右側是Arabic(也就是說,在Left-To-Right語言中右側有英語/數字)
若全都是英語或數字,也不須要處理,讓其保留Left-To-Right的特色
例如:
view plain
<?xml version="1.0" encoding="utf-8"?>
<!-- file values-ar/strings.xml -->
<string name="import">استورد</string>
<string name="import_vcard">استورد vCard</string>
運行後結果就是:استورد
vCard استوردspa
可是對於某些狀況,就須要作特殊的處理:翻譯
中間有英語或數字的
若是不作處理,數字會被變成Right-To-Left,但事實上是須要Left-To-Right的,如:
view plain
<?xml version="1.0" encoding="utf-8"?>
<!-- file values-ar/strings.xml -->
<string name="send_msg_to">استورد%sتور</string>
使用時替換後,會變成:استورد68001استورد,而須要的是:استورد10086استورد,這裏就須要在英語或數字兩端加上
Left-To-Right overrider \u202D和\u202C,如:orm
view plain
<?xml version="1.0" encoding="utf-8"?>
<!-- file values-ar/strings.xml -->
<string name="send_msg_to">استورد\u202d%s\u202cتور</string>
右側有英語或數字(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"?>
<!-- file values-ar/strings.xml -->
<string name="send_msg_to">send استورد</string>
<string name="send_msg_to">\u200fsend استورد\u200f</string>
<string name="send_msg_to">\u200fsend <xliff:g id="number">\u200f%1$d</xliff:g>استورد</string> xml