FLUTTER: локализация многоэкранного приложения

Я создаю многоэкранное приложение на Android с помощью Flutter. Я использую intl для его локализации, но я не понимаю, как приступить к созданию файла arb. Должен ли я запустить следующий командир flutter pub pub run intl_translation:extract_to_arb --output-dir=lib\l10n lib\main.dart команда для каждой "страницы / действия / фрагмента" моего приложения?

2 ответа

Вы пытаетесь реализовать локализацию в приложении? то есть просто меняя локаль приложения, не влияя на локаль телефона? Тогда вы можете обратиться к этому блогу: https://blog.geekyants.com/flutter-in-app-localization-438289682f0c

Результат будет выглядеть примерно так:

Локализация в приложении

Чтобы извлечь сообщения intl через intl_translation в файл.arb, вам просто нужно позвонить один разextract_to_arb с относительными путями к файлам, содержащим эти сообщения.

pub run intl_translation:extract_to_arb --output-dir=target/directory my_program.dart more_of_my_program.dart

После того, как вы переведете извлеченные сообщения, вам нужно будет сгенерировать файлы локализации.dart через generate_from_arb команда.

Вы быстро заметите, что это становится утомительным, поэтому лучшим решением было бы использовать расширение Flutter Intl для VS Code или плагин Flutter Intl для Android Studio. Используя их, вам нужно будет только обновить файлы локализации (файлы.arb), и шаблонный код будет автоматически сгенерирован.

Надеюсь, это поможет!

Начните с генерации строковых файлов: 1. Извлеките все сообщения в формат файла arb, который является шаблоном для переводов (вы можете указать несколько файлов в качестве входных данных.

> flutter pub pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/first_file.dart lib/second_file.dart
  1. Генерация файлов перевода в формате arb для каждого языка в форме intl_messages_.arb
  2. Сгенерируйте файлы.dart для переводов (укажите один вывод для каждого перевода):

    В пабе Flutter Pub выполнить intl_translation:generate_from_arb --output-dir=lib/l10n \ --no-use-deferred-loading lib/first_file.dart lib/second_file.dart lib/l10n/intl_messages_en.arb lib/l10n/intl_messages_.arb

Другие вопросы по тегам