- Подробные шаги и возможные подводные камни
- Зависимости
- Задача
- Состав
- Построим i18n шаг за шагом
- Шаг 1. Установите зависимости
- Шаг 2. Напишите заглушку интерфейса
- Шаг 3. Создайте файлы данных из интерфейса заглушки.
- Шаг 4. Переведите файлы сгенерированных данных.
- Шаг 5. Создание реализаций интерфейса из файлов данных
- Шаг 6. Улучшение интерфейса
- Шаг 7. Внедрите интерфейс и реализации в приложение «Материал».
- Шаг 8. Используйте локализованные сообщения в приложении Material.
Подробные шаги и возможные подводные камни
В 2020 году, когда Китай и США являются крупнейшими рынками смартфонов, поддержка i18n стала жизненно важной для разработчиков мобильных приложений.
Я обнаружил, что в большинстве руководств по Flutter i18n отсутствуют пояснения и подробные инструкции, что затрудняет их выполнение.
После нескольких дней попыток интегрировать поддержку i18n в мое приложение Flutter, я решил написать пошаговое руководство, которое пытается прояснить все дизайнерские решения.
Зависимости
flutter_localizations
— это фреймворк Flutter для поддержки i18n, который дает нам API для подачи в нашу реализацию i18n.intl
— это платформа для написания интерфейсов абстракции i18n.intl_translation
— это интерфейс командной строки для разделения данных кода i18n, который генерирует код из файлов данных и извлекает файлы данных из кода.
Задача
Цели i18n:
- Отделяйте сообщения от пользовательского интерфейса, чтобы интерфейсным разработчикам не приходилось трогать связанный с i18n код.
- Отделите данные от кода, чтобы переводчикам не приходилось трогать код.
Состав
Для достижения цели нам понадобятся:
dart
интерфейс для абстрагирования i18n от другого кода пользовательского интерфейса.- Файлы данных,
JSON
какarb
файлы, для переводов. - Реализации для каждой локализации.
- Конвертер для преобразования файлов данных в реализации локализации.
Построим i18n шаг за шагом
Взгляд на конечный результат:
Я позаимствовал код из Mini Donkey, приложения, которое использует зашифрованную стеганографию для защиты конфиденциальности в социальных сетях. Если вас интересует исходный код, проверьте:
Шаг 1. Установите зависимости
Сначала нам нужно установить три пакета с:
После этого сделайте flutter pub get
, если ваша среда IDE не делает этого за вас.
Шаг 2. Напишите заглушку интерфейса
Вот интерфейс-заглушка i18n из документации Flutter, которого должно хватить для 90% случаев использования:
Вы можете показаться нелогичным в отношении интерфейса заглушки, использующего неопределенные методы.
Не беспокойтесь, шаг 6 генерирует недостающий метод из файлов данных.
Шаг 3. Создайте файлы данных из интерфейса заглушки.
intl_translation
собирает intl
сообщения из интерфейса и генерирует соответствующие файлы данных:
Шаг 4. Переведите файлы сгенерированных данных.
Каждый файл данных представляет локаль. Мы можем добавить новую локаль, добавив новый файл данных:
Шаг 5. Создание реализаций интерфейса из файлов данных
После перевода файла данных мы можем сгенерировать код с помощью:
Шаг 6. Улучшение интерфейса
Теперь, когда реализации интерфейса имеют расширенные языковые стандарты, нам нужно добавить методы к интерфейсу в i18n.dart
, чтобы использовать их:
Обратите внимание, что имя метода должно совпадать с идентификатором сообщения, которым в данном случае является «заголовок».
Шаг 7. Внедрите интерфейс и реализации в приложение «Материал».
Приложение материалов, которое используют почти все приложения Flutter, предоставляет нам удобный интерфейс для внедрения нашего интерфейса i18n:
Шаг 8. Используйте локализованные сообщения в приложении Material.
Вот пример того, как использовать локализованные сообщения в приложениях:
Ура! Удачного взлома с i18n!