Каков статус языков Right To Left на Android?

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

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

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

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

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

EDIT: похоже, что Android 4.1 имеет некоторое улучшение на языках RTL. Интересно, что это такое и где я могу прочитать о них.

Solutions Collecting From Web of "Каков статус языков Right To Left на Android?"

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

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

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


EDIT: теперь они добавили дополнительную информацию о том, как использовать новую поддержку 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 )

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

EDIT: Теперь я протестировал его, и он действительно работает очень хорошо (это первая глава святой Библии):

Введите описание изображения здесь

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

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

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

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


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

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

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