2016-12-02 254 views
3

我想使我的站點支持LTR和RTL語言。支持RTL語言

我想要的是,如果在某個元素中加載的文本是RTL,則將方向切換爲RTL。對於輸入,當用戶鍵入文本時,如果它是RTL並將方向改爲RTL,它應該觸發。

就像Facebook正在做它的例子。如果您在搜索中鍵入一些阿拉伯文字,它會自動將方向切換到RTL

沒有發現任何使用Google搜索的練習教程,任何腳本等。

我只找到屬性dir="auto",它會自動觸發正確的方向,但看起來像這樣,舊版瀏覽器不支持。

任何意見,教程,腳本如何做到這一點將有所幫助。

+0

執行此操作的方法是在鍵入內容(onkeyup)時根據內容(first-char或all字符串)檢查內容以追逐「dir」屬性的值。 – Dekel

+1

'dir =「auto」'是html5的一部分(正如你所說,它不被舊版瀏覽器支持)。 – Dekel

+0

@Dekel關於您的第一條評論。 Yeap我看到了這個選擇,但是有沒有JS的例子呢。我很驚訝,我找不到任何示例或任何東西 – carpics

回答

1

如果您只想支持在用戶鍵入時將文本框上下文從LTR切換到RTL,那麼您將不得不聽輸入事件(輸入,按鍵,keydown等,最適合您的情況)和讓代碼決定文本框是LTR對齊還是RTL對齊。

但是,您應該注意,算法並不是那麼簡單,而且不同的產品的工作方式不同。舉幾個例子 -

  • Facebook上使用一種算法是,在大多數情況下,試圖識別第一個「強」字,所以輸入一個希伯來字,接着很多英語仍然會顯示該段的句子作爲RTL對齊。 (他們之間似乎也有差異,當你看到當你類型時,你看到什麼,當你的評論發佈時,但這是一個不同的問題)
  • 谷歌環聊似乎切換其RTL/LTR上下文的數量根據每個方向都有強大的人物。當你輸入時,如果你開始在另一種語言上輸入一種語言,你的上下文可能會從LTR切換到RTL。

這裏沒有對錯,只有偏好和最適合你的算法。

你可以閱讀有關在Unicode雙向算法在這裏「強勢人物」:http://unicode.org/reports/tr9/

你可以看到如何認識的第一個「堅強的性格」的字符串在MediaWiki的語言文件中嵌入目的的實例中,與正則表達式測試方向性(組1是LTR和組2 RTL)您可以使用這些來創建一個JavaScript方法,根據您看到的第一個強字符或大多數字符設置您的textarea的dir =「」屬性適合: https://github.com/wikimedia/mediawiki/blob/6f19bac69546b8a5cc06f91a81e364bf905dee7f/languages/Language.php#L174

作爲一個方面說明,我只是指出,支持在線RTL/LTR不是只是關於打字和文本框。在LTR和RTL上下文之間切換也涉及UI調整,如鏡像內容對齊和/或菜單和徽標等位置。

這是相關的,如果你想讓你的頁面翻譯成RTL語言,這意味着你還需要鏡像佈局。如果您唯一的目標是在文本框中切換上下文,您不應該擔心這一點,但如果您想確保該網站允許翻譯,則需要考慮鏡像UI和整個界面的方法。