Каков статус языков Right To Left на Android?
Мне нужно создать приложение со строками многих языков, включая языки RTL (справа налево). Я хочу знать, каков текущий статус поддержки RTL (справа налево) на Android (даже на последнем API), например:
-
Можно ли динамически/статически проверять, является ли текущий язык устройства RTL? Я знаю, что можно получить текущую локаль, но мне нужен более общий способ проверить, является ли текущий язык RTL. Например, для английского и французского языков оно вернет false, но для арабского и иврита оно вернет true.
-
Можно ли автоматически настроить макет для RTL-языков?
Например, если у linearLayout (с горизонтальной ориентацией) были свои дети 1- > 2, теперь он будет иметь 2 < -1, а новые дети будут созданы слева.
-
Есть ли спецификатор для добавления в папки ресурсов, которые будут обрабатывать все языки RTL? Например, "res/layout" для LTR (слева направо), а "res/layout-rtl" - для языков RTL.
-
кажется, что поддержка контента eclipse предлагает "android: layoutDirection" для linearLayout и "android: textDirection" для textView, но когда я их выбираю, я получаю ошибку компиляции, которую она не распознает. Я также не могу узнать больше информации об этих атрибутах в Интернете. Что они означают, и почему я не могу их использовать?
EDIT: похоже, что Android 4.1 имеет некоторое улучшение на языках RTL. Интересно, что это такое и где я могу прочитать о них.
Ответы
Ответ 1
Начиная с 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: теперь я протестировал его, и он действительно работает очень хорошо (это первая глава святой Библии):
![enter image description here]()
Ответ 2
-
Поддержка RTL в android получила некоторое улучшение в ICS.
До этого в пряниках это было специфично для устройства, например. каждый производитель/оператор реализовал свои собственные решения BiDi, которые вызвали некоторые несоответствия в приложениях
-
его не нужно. Хороший BiDi знает, чтобы зеркально отобразить текстовый вид и текст canvas.draw с помощью кода начальной буквы utf8, который позволяет вам меньше беспокоиться о BiDi и больше о вашем приложении. Просто не заставляйте гравитацию и заполнять родительский текст в виде текста
-
Нет, есть атрибуты для арабского/иврита и т.д., где вы можете изменить практически все. Но хорошей реализации устройства не потребуется ничего, кроме переводов.
-
что может произойти, если у вас установлен какой-либо старый или определенный для устройства API. Поэтому он не будет работать с андроидом и вызвать ошибки компиляции.
Но есть больше причин для этого...
В целом я советую вам игнорировать проблему BiDi по двум причинам:
-
люди из стран, которые используют rtl, обычно имеют устройства, которые обрабатывают его довольно хорошо, если не тогда, их проблема.
-
Фиксирование вашего BiDi для одного устройства приведет к тому, что другие устройства не будут соответствовать. И что-то было сделано год назад.. и, к счастью, разработчики, наконец, прекратили делать эту ошибку.