|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийПри повороте экрана грузится сотвествующий ресурс, затем срабатывает поддержка gnugettext и переводит эти соотвесттвующие фразы. Если кто не понял - при повороте экрана все происходит как и раньше - андроид грузит ваш родной строковый ресурс локализации, который по умолчанию, т.е. добавлять как раньше для других языков эти ресурсы уже не надо - т.к. перевод будет делать gnutext по своим файлам *.mo, которые преобразуются в соответсвующий класс java. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:01 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийЕсли кто не понял Я не понял, можно пример кода с минимальным вмешательством, где выбирается файл хотя-бы по ориентации экрана? А то смахивает на общение слепого с глухим. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:04 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanМикола ПитерскийЕсли кто не понял Я не понял, можно пример кода с минимальным вмешательством, где выбирается файл хотя-бы по ориентации экрана? А то смахивает на общение слепого с глухим. Во это точно - я тоже хотел так написать :) Ничего из gnutext дополнительно не выбирается см. предыдущее мое сообщение, все остается как и было - андроид сам подгружает нужный ресурс и лишь потом gnutext просматривает все "значения строк" и изменяет если найдет в своем .mo файле строки на соответсвующие переводу. А все остается как и было раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:13 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола Питерскийандроид сам подгружает нужный ресурс и лишь потом gnutext просматривает все Это ничего не пояснило. Вот примеры вызовов: Код: java 1. 2.
Андроид сам подгрузил строку из нужного ресурса, я указал только константу. Как оно переведет мне это? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:20 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadman, если подробно - то откомпилированные файлы *.mo , полученные из программы переводчика средствами утилит gnugettex переводятся в жава классы, н-р было 20 файлов языков, получилось 20 жава классов (я все это дело проверил - классы формирует нормально), вы эти классы подключаете к проекту, подключаете gnugettex и вызываете его функцию, которая определит какой жава клас вызывать (в зависимости от языка системы). В любых событиях, которые подгружают новые ресурсы вы после загрузки этих ресурсов вызываете функцию, которая перебирает все строковые ресурсы и заменяет их из из соответствующего класса-перевода. Вроде все. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:26 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийВ любых событиях, которые подгружают новые ресурсы вы после загрузки этих ресурсов вызываете функцию, которая перебирает все строковые ресурсы и заменяет их из из соответствующего класса-перевода. Вроде все. В общем, как я и думал, она не будет работать, если указывать R-константы и не сможет сама определить конфигурацию устройства. Я погуглил на предмет применения её на андроид-девайсах, её используют те, кто привык её использовать на ББ и/или портирует большие проекты на смарты/планшеты. Еще раз: в этом коде константы R.string.*, они числовые, а не строковые: wadman Код: java 1. 2.
И строки тут будут выбираться средой в зависимости от условий (см. выше) из разных строковых ресурсов. gnugettext не осилит такое на автомате. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:33 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
да уж, столько геморроя из-за ничего ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:36 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanМикола Питерскийандроид сам подгружает нужный ресурс и лишь потом gnutext просматривает все Это ничего не пояснило. Вот примеры вызовов: Код: java 1. 2.
Андроид сам подгрузил строку из нужного ресурса, я указал только константу. Как оно переведет мне это? Конкретно для этого случая: Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:36 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола Питерскийwadmanпропущено... Это ничего не пояснило. Вот примеры вызовов: Код: java 1. 2.
Андроид сам подгрузил строку из нужного ресурса, я указал только константу. Как оно переведет мне это? Конкретно для этого случая: Код: java 1. 2.
ошибся - вот так: Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:38 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийКонкретно для этого случая: Еще один вопросик: опыт применения имеется или это теоретическое применение (в этом примере)? :) Это точно работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:39 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadman Код: java 1. 2.
И строки тут будут выбираться средой в зависимости от условий (см. выше) из разных строковых ресурсов. gnugettext не осилит такое на автомате. Не понял в чем проблема? Сдесь же андроид и выбирает строку в зависимости от условий (положения, разрешения и т.д.) Код: java 1.
а затем уже срабатываеет функция gnugettext, которая и выполнит перевод: Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:45 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийА в андроиде - пробовал в эклипсе - так там что нужно передать переводчику - сами файлы со строковыми ресурсами и у него поедет крыша или же он чего так отредактирует что нарушит структуру. Или я не прав? можно посмотреть сюда gettext несомненно хороший инструмент, но создатели андроида решили реализовать локализацию иначе, поэтому на прикручивание gettext имхо уйдет намного больше сил, чем на альтернативное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:47 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийНе понял в чем проблема? Проблема в том, что андроид выберет строку где-то у себя внутри, как таковой строки здесь не будет. Здесь одна из констант автоматически сгенерированного файла R.java: Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:50 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanМикола ПитерскийКонкретно для этого случая: Еще один вопросик: опыт применения имеется или это теоретическое применение (в этом примере)? :) Это точно работает? В делфи давно использую - все корректно работает. В андроиде не вижу проблем - классы жава с соответсвующими переводами лично получил и проверил, далее реализовать не пробовал т.к. мультиязычных приложений пока нет, может появятся только через год т.к. сейчас в основном пишу на делфи, пхп и остальное связанное с вэб. Это на первый взгляд кажется что это гемор - но один раз проделав понимаешь насколько это просто и естественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:51 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола ПитерскийЭто на первый взгляд кажется что это гемор - но один раз проделав понимаешь насколько это просто и естественно. Как я и писал, для андроида это не лучший выбор. К тому же неполноценно работающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:52 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола, я выражу свой вопрос кодом Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 13:58 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
chpashaМикола, я выражу свой вопрос кодом Код: xml 1.
делаем функцию, которая переберет все классы TextView и переведет их строковые ресурсы, естественно это при выводе на экран, далее повторяем эту функцию во всех событиях, связанных с повторным чтением ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:04 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола Питерскийделаем функцию, которая переберет все классы TextView Это компилируется в бинарный xml, где соответственно тоже заменится числом, которое я указал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:08 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
Микола Питерскийделаем функцию, которая переберет все классы TextView у нас не только классы TextView, есть и другие контролы со строками, например Spinner. представляешь себе задержу на старте и при каждом повороте экрана, нужную на рекурсивный поиск всех контролов и замену их текста? кроме того у нас еще есть plurals, т.е. строка которая пойдет переводчику будет выглядеть как "%s попугаев", а в TextView на момент вызова gettext уже будет стоять "38 попугаев" и все это ради возможности иметь отдельный файл для переводчика? я тебе сходу придумаю кучу способов не париться так жестко. один из них (кошерный) я уже запостил выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:16 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanЭто компилируется в бинарный xml, где соответственно тоже заменится числом, которое я указал выше. он имеет в виду где-то на onPostCreate и на onConfigurationChanged сканить все контейнеры и контейнеры в контейнерах на предмет TextView, брать их getText() и менять его на _(getText()) . з.ы. кстати кроме этого хозяйства у нас еще есть куча соплей в виде actionbar, navigationbar и наверняка чего-то еще, про что я сразу и не вспомнил. все это тоже придется при старте и поворотах перекопать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:20 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
з.ы. с plurals я прогнал, их просто так в xml не всунешь ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:22 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
chpashaи все это ради возможности иметь отдельный файл для переводчика? Есть такой инструмент: Google translate toolkit, если разобраться, то толковая штука, в т.ч. позволяет отправлять файлы ресурсов профессионалам или делиться с друзьями для совместного перевода. Гугл думает о своих. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:28 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanЕсть такой инструмент: Google translate toolkit ну так 16381797 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:39 |
|
android многоязычность
|
|||
---|---|---|---|
#18+
wadmanchpashaи все это ради возможности иметь отдельный файл для переводчика? Есть такой инструмент: Google translate toolkit, если разобраться, то толковая штука, в т.ч. позволяет отправлять файлы ресурсов профессионалам или делиться с друзьями для совместного перевода. Гугл думает о своих. :) Да - только там: • Android Resource (.xml) • Application Resource Bundle (.arb) • Chrome Extension (.json) • GNU gettext-based (.po) Вот последняя строка это и есть .po файл, который генерирует gettext для редактора poEdit. И в гугле знают что это классная вещь:) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 14:52 |
|
|
start [/forum/topic.php?fid=13&msg=38709996&tid=1331416]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 387ms |
0 / 0 |