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

來源:互聯網
上載者:User

我們所使用的語言,無論是中文還是英語,都是從左向右讀的(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"?> 
    <!-- file values-ar/strings.xml --> 
    <string name="import">استورد</string> 
    <string name="import_vcard">استورد vCard</string> 
運行後結果就是:استورد
vCard استورد

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

中間有英語或數位
如果不做處理,數字會被變成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,如:

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> 

作者“浪人的星空”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.