Не поймите меня неправильно, пакет 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



















Творческая жизнь







Вы можете подписаться на меня в