Не поймите меня неправильно, пакет intl и API для интернационализации приложений Flutter хороши. Но никто не хочет делать что-то в тупом ручном режиме, как это сделал Google. Есть более простой способ, чтобы он выполнялся автоматически в рабочем процессе вашего разработчика и имел доступ к сторонним службам для управления сторонними переводчиками для вашего приложения на флаттере.
Позвольте мне показать вам способ автоматизации процесса интернационализации вашего приложения Flutter.
Получите доступ к моим бесплатным материалам
Мои бесплатные ресурсы Flutter Code And Design Assets можно найти по адресу:
Разработка и проектирование интерфейсных приложений стали более зрелыми, так что начальная учебная программа больше не является отправной точкой для новой работы, как это было в прошлом.
Если у вас нет понимания контекста от экспертов, вы не сможете получить эту стартовую работу или сделать это потрясающее приложение впервые на рынке.
Получение членского доступа Medium поможет вам продвинуться на пути к первой работе Flutter Dev или вашему первому потрясающему приложению Flutter в магазинах приложений. И это так же просто, как два маленьких шага:
1. Используйте мою ссылку на подписку на Medium, чтобы присоединиться к Medium:
2. Нажмите на ссылку моего профиля и подпишитесь на меня, чтобы получать немедленные уведомления по электронной почте, когда я публикую новую статью:
Международный фон
Давайте рассмотрим пример:
Очевидно,
@appTitle
является своего рода ключом. Пакет intl создаст два файла сообщений, по одному для всех сообщений, что создаст функцию для доставки сообщений для каждой выбранной локали. Вторая группа сгенерированных файлов — это отдельные сообщения для функций человеческого языка:
Преимущество этого пакета Intl заключается в том, что мы можем определить сообщение как функцию. А пакет Intl ограничивает интерполяцию строк, так что мы получаем некоторую пользу в том, что можно использовать только параметры функции и только в простых выражениях. Это означает, что мы можем написать выражение параметра функции для множественного числа:
Чтобы увидеть это лучше, я собираюсь представить стороннюю службу, так как у них есть хорошее объяснение того, как использовать ключи и заполнители.
Локально
Localizely — это сторонний сервис, который будет хранить сообщения о локализации вашего приложения, чтобы при найме переводчиков они получали доступ только к тому языку, который они переводят, и к другим удобным инструментам автоматизации в рабочем процессе перевода приложения:
https://localizely.com/how-it-works/
Объяснение их примера пакета Intl находится в этом репозитории:
Итак, как мы можем использовать заполнители?
В качестве заполнителя используются круглые скобки. Мы помещаем заполнитель в имя ключа. А множественное число вызывается по именам параметров функций в круглых скобках в том же примере внизу.
Международная автоматизация
Компания Localize создала пакет Intl Utils для автоматизации создания файлов интернационализации. Вы используете его, поместив это в свой pubspec:
И в нижней части вашего pubspec:
Теперь остальные этапы автоматизации:
1. Переименуйте файл app_en.arb в intl_en.arb.
2. Если вы используете CI-сервер, команда для добавления в сценарий вашего CI-сервера:
flutter pub run intl_utils:generate
3. Чтобы автоматизировать загрузку и установку одного из этих подключаемых модулей для вашей IDE:
4. После перезагрузки проекта приложения вам нужно внести 3 изменения, если это приложение App Skeleton, представленное во Flutter 2.5:
В файле дротика приложения скелета приложения у вас есть это:
Теперь измените один из сгенерированных международных импортов:
От:
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
To:
import 'package:your_app_name/src/localization_gen/l10n.dart';
Тогда у вас есть делегированные внутренние ссылки для изменения:
To:
Так почему же я убрал !. Потому что тот, кто когда-либо делал шаблон приложения-скелета, настроенный в SDK, очевидно, не знает правильного использования нулевой безопасности, как я! Как я стал таким умным в отношении нулевой безопасности?
Кхм, мои настройки Lints (большой совет нажать на все ссылки на статьи и начать читать).
Заключение
Смотрите, у меня СДВГ, и я борюсь с ним, автоматизируя все! Вы можете извлечь выгоду из той же стратегии, сокращая время разработки приложений, используя все низко висящие плоды в виде вещей и процессов, которые следует автоматизировать. Интернализация приложения Flutter — это один из процессов, которые вы должны автоматизировать.
Обо мне, Фред Гротт
Я переформированный разработчик приложений для Android и переформированный креативщик с СДВГ.
В этом мире есть два типа людей: потребители и создатели. У потребителей есть все проблемы мира со всей этой нетворческой позицией в их мозгах. Креативщики живут более интересной яркой жизнью, полной творческих мечтаний, а не яда в голове.
Мои текущие бесплатные материалы по флаттеру, такие как код и творческие активы, находятся в моем репозитории GitHub «код со мной» по адресу:
Как в Front End Development, так и в Creative Life контексты и пути имеют жемчужины понимания, которые не связаны с вашим собственным путем. Чтобы получить это представление, вам нужен доступ к моим статьям, выполнив два простых шага:
1. Подпишитесь на платную подписку на Medium по моей ссылке на подписку:
Обратите внимание: на самом деле я получаю сокращение дохода за каждую подписку на Medium, которая помогает мне создавать бесплатный код и творческие материалы, к которым вы получаете бесплатный доступ.
2. Нажмите на мое имя в Medium и подпишитесь на меня, чтобы получать немедленные уведомления по электронной почте каждый раз, когда я публикую:
Мои самые популярные посты о флаттере и творческой жизни:
Пользовательские интерфейсы флаттера
Флаттер DevOPS
Флаттер ООП и FP
Творческая жизнь
Вы можете подписаться на меня в