Каков статус языков с написанием справа налево на Android? - PullRequest
14 голосов
/ 13 февраля 2012

Мне нужно создать приложение, содержащее строки из многих языков, включая языки RTL (справа налево). Я хочу знать, каков текущий статус поддержки RTL (справа налево) на Android (даже на последнем API), например:

  1. возможно ли динамически / статически проверить, является ли текущий язык устройства типом RTL? Я знаю, что возможно получить текущую локаль, но мне нужен более общий способ проверить, является ли текущий язык RTL. Например, для английского и французского языков возвращается false, а для арабского и иврита - true.

  2. возможно ли настроить макет для автоматического зеркалирования для языков RTL? Например, если у linearLayout (с горизонтальной ориентацией) были свои дочерние элементы 1-> 2, теперь у него будет 2 <-1, и новые дочерние элементы будут созданы слева. </p>

  3. есть ли квалификатор, который нужно добавить в папки ресурсов, который будет обрабатывать все языки RTL? Например, «res / layout» - для LTR (слева направо), а «res / layout-rtl» - для языков RTL.

  4. кажется, что в справочном материале eclipse предлагается "android: layoutDirection" для linearLayout и "android: textDirection" для textView, но когда я выбираю их, я получаю ошибку компиляции, что он их не распознает. Я также не могу найти больше информации в Интернете об этих атрибутах. Что они значат, и почему я не могу их использовать?

РЕДАКТИРОВАТЬ: кажется, что Android 4.1 имеет некоторые улучшения в языках RTL. Интересно, что они и где я могу прочитать о них.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2013

Начиная с android 4.2, есть немного больше информации о специальных атрибутах RTL, и даже есть возможность автоматически отображать макеты для языков RTL.

Более подробную информацию можно найти здесь .

Надеюсь, они добавят больше информации о том, как его использовать, включая пример кода и, возможно, даже библиотеку поддержки по этому вопросу.Вопросы.


РЕДАКТИРОВАТЬ: теперь они добавили еще немного информации о том, как использовать новую поддержку RTL:

http://android -developers.blogspot.co.il/2013/03/native-rtl-support-in-android-42.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/hsDu+(Android+Developers+Blog) *601 чудо, хотя 10101 *если NIKUD (иврит, эквивалентный гласным, за исключением того, что они являются необязательными и отображаются в виде точек вместо букв), теперь работает нормально.

РЕДАКТИРОВАТЬ: Теперь я проверил его, и он действительно работает очень хорошо (это первая глава Библии):

enter image description here

0 голосов
/ 23 апреля 2012
  1. Поддержка RTL в Android получила некоторое улучшение в ICS. До этого в пряниках это было специфично для устройства, например. каждый производитель / оператор внедрил свои собственные решения BiDi, которые вызвали некоторую нестабильность в приложениях

  2. его не нужно. Хороший BiDi знает, как отразить текстовое представление и canvas.ввести текст с помощью начального буквенного кода utf8 ... что позволит вам меньше беспокоиться о BiDi и больше о вашем приложении. Только не заставляйте гравитацию и не заполняйте родительский элемент при просмотре текста

  3. Нет, есть квалификаторы для арабского / иврита и т. Д., Где вы можете изменить практически все. Но для хорошей реализации устройства не нужно ничего, кроме переводов.

  4. , что может произойти, если у вас установлен какой-либо старый API или API для конкретного устройства. Поэтому он не будет работать на Android и вызовет ошибки компиляции. Но есть еще причины для этого ...


Обычно я советую игнорировать проблему с BiDi по двум причинам:

  1. люди из стран, которые используют rtl, обычно имеют устройства, которые обрабатывают его довольно хорошо, если нет, то это их проблема.

  2. исправление вашего BiDi для одного устройства приведет к тому, что другие устройства не будут соответствовать. И это было сделано год назад ... и, к счастью, разработчики, наконец, перестали делать эту ошибку

...