Локализация
Локализация (часто сокращённо l10n) — это процесс адаптации вашего приложения для работы с разными языками, регионами и культурами. Она включает перевод текста приложения, адаптацию форматов дат и чисел, а также корректировку других элементов в соответствии с культурными ожиданиями конкретной локали.
- Интернационализация (i18n): Это процесс настройки вашего приложения таким образом, чтобы оно могло легко адаптироваться к различным языкам и регионам без необходимости внесения инженерных изменений. Обратите внимание, что FlutterFlow берёт на себя большую часть работы по интернационализации, поэтому вам нужно заниматься только локализацией.
- Локализация (l10n): Это процесс перевода содержимого вашего приложения и его адаптации для конкретной локали или культуры. Он включает предоставление переводов для видимых пользователю строк, форматирование дат, времени и чисел, а также адаптацию содержимого в соответствии с культурными нормами.
Вкратце, интернационализация — это подготовка приложения к поддержке нескольких языков, а локализация — это собственно процесс перевода содержимого и его адаптации для конкретных локалей.
Добавление поддержки нескольких языков
FlutterFlow позволяет переводить весь текст в вашем приложении сразу с помощью Google Translate или вручную корректировать переводы по мере необходимости. Кроме того, вы можете локализовать предопределённые сообщения, такие как запросы разрешений, уведомления аутентификации и другие внутриприложные оповещения.
Добавление поддержки нескольких языков необходимо для того, чтобы сделать ваше приложение доступным для более широкой аудитории. Например, если ваше приложение предоставляет инструкции по упражнениям только на английском языке, носители других языков могут с трудом понять их и выбрать другое приложение, даже если оно менее эффективно, просто потому что оно доступно на их языке. Реализация функции поддержки нескольких языков помогает вашему приложению добиться успеха на глобальном рынке, предлагая удобный опыт для разнообразной аудитории.
Чтобы добавить поддержку нескольких языков в FlutterFlow, перейдите в раздел Settings and Integrations > Languages, добавьте языки для п оддержки, установите основной язык в качестве запасного и, при необходимости, выберите язык отображения. Затем используйте функцию Translate All для автоматического перевода и скорректируйте их, если нужно. Наконец, проверьте переводы на разных страницах, изменив выпадающий список языка на холсте.
Изменение основного языка после перевода всего текста приведёт к очистке существующих переводов для других языков.
Виджет LanguageSelector
Виджет LanguageSelector в FlutterFlow позволяет пользователям переключаться на предпочитаемый язык в реальном времени без необходимости перезапуска приложения. Он отображает текущий выбранный язык и, при взаимодействии с ним, показывает список всех доступных языков для удобного выбора.
Он особенно полезен на экранах онбординга или в меню настроек, чтобы пользователи могли настроить предпочтения языка.
Свойства LanguageSelector
Вы можете настроить внешний вид с помощью различных свойств, доступных в панели Properties Panel.

По умолчанию виджет LanguageSelector не сохраняет выбор языка пользователя между сеансами приложения. Чтобы сохранить выбранный язык, включите опцию Persist Selection в настройках языка.
Установка языка приложения вручную [Действие]
Иногда вы можете предпочесть не использовать стандартный виджет LanguageSelector и вместо этого реализовать собственный виджет для переключения языка. Например, вы можете создать экран выбора языка, который появляется при первом запуске приложения.
Вы можете использовать действие Set App Language, чтобы позволить пользователям выбрать предпочитаемый язык из доступных вариантов.
Обратите внимание, что это действие влияет только на язык приложения и не изменяет системный язык устройства.

Управление переводами
Существует два способа управления переводом текста приложения:
В настройках языка
Страница настроек языка перечисляет весь текст вашего приложения, сгруппированный по страницам, что упрощает управление переводами в пакетном режиме.
Чтобы вручную добавить или обновить перевод, внесите изменения непосредственно в столбце языка и отметьте текст как Fixed. Отметка как Fixed предотвратит перезапись ваших пользовательских переводов автоматическим переводом во время пакетного процесса.
Чтобы использовать Google Translate для нового или существующего текста, нажмите Translate Page.

В панели свойств
Вы также можете добавлять или обновлять переводы для отдельных текстов непосредственно в панели свойств. Для этого выберите виджет (например, Text, TextField и т. д.), перейдите в панель свойств и нажмите на значок глобуса. Это откроет новую панель.
- Чтобы вручную добавить или обновить перевод, внесите изменения непосредственно в поле под названием языка.
- Чтобы автоматически перевести на все языки, нажмите Google Translate.

Перевод предопределённых сообщений
FlutterFlow позволяет управлять переводом следующих типов предопределённых сообщений.
- Сообщения разрешений iOS: Сообщения разрешений iOS — это подсказки, показываемые пользователям iOS, когда ваше приложение запрашивает доступ к функциям устройства, таким как камера или библиотека фото.
- Предустановленные внутриприложные сообщения: Это встроенные сообщения, которые FlutterFlow отображает для конкретных действий, таких как аутентификация и загрузка файлов.
Чтобы добавить переводы для предопределённых сообщений, перейдите в Settings and Integrations > Project Setup > Languages. Прокрутите вниз до раздела Translation и выберите категорию, содержащую сообщение, которое вы хотите перевести.
Начните с ввода вашего сообщения на базовом языке. Затем либо используйте кнопку Translate Message для автоматического перевода, либо вручную добавьте переводы и отметьте их как Fixed, чтобы предотвратить их перезапись автоматическим переводом.
Сообщения разрешений отображаются в зависимости от функций, включённых в ваше приложение. Например, сообщения разрешений для камеры и библиотеки фото появляются, когда на странице есть кнопка с действием Upload Photo/Video.
Доступ к данным, специфичным для языка
При создании приложения с поддержкой нескольких языков вам может понадобиться доступ к данным, таким как код теку щего языка или текст, специфичный для языка.
В FlutterFlow вы можете получать следующие типы данных, связанных с языком:
- Код текущего языка: Это предоставляет ISO-код языка для текущего языка приложения (например, en, de, fr).
- Текст, зависящий от языка: Позволяет указывать разные значения для каждого языка. Например, вы можете отображать флаг страны или название в зависимости от текущего языка приложения.
Эти опции доступны через Set from Variable > Internationalization.

Локализация дат
Чтобы ваше приложение отображало даты в форматах, знакомых пользователям из разных регионов, вы можете использовать предопределённые DateTime Format Options при отображении дат.
Например, в США даты следуют формату месяц, день, год (например, 12/31/2023), в то время как в Индии используется формат день, ме сяц, год (например, 31/12/2023). Чтобы учесть эти региональные различия, установите опцию формата в yMd, которая является форматом, осведомлённым о локали и автоматически подстраивающим представление даты под локаль пользователя.

Вот ещё несколько опций форматирования, осведомлённых о локали, которые вы можете использовать:
yMMMd— Форматирует дату с сокращённым месяцем и днём, например,Dec 31, 2023(США) или31 Dec 2023(Индия).jm— Отображает время с минутами, например,5:30 PM(США) или17:30(Европа).
Для пользовательских форматов дат, специфичных для локали, вы также можете создать собственные шаблоны.
Локализация чисел
Разные регионы используют разные символы для десятичных и тысячных разделителей. Например, в США для десятичных используется точка, а для тысяч — запятая, в то время как во многих европейских странах всё наоборот.
Чтобы локализовать числа, установите Number Format Options в Decimal, а затем установите Decimal Type в Automatic.

Локализация валюты
Символы валют и их расположение варьируются в зависимости от локали. Например, в США знак доллара ставится перед суммой ($1,000.00), в то время как в странах вроде Франции символ валюты размещается после суммы (например, 1 000,50 €).
Чтобы реализовать это поведение, включите опцию Display as Currency в настройках формата чисел и оставьте поле Currency Symbol пустым, чтобы автоматически подстраивать его под локаль пользователя.

Тестирование
Тестирование локализации крайне важно, чтобы убедиться, что все элементы работают корректно на разных языках и локалях. Вот несколько способов тестирования локализации:
- Изменение локали устройства: Протестируйте приложение, изменив локаль устройства, чтобы проверить переводы и корректировки макета.
- Использование эмуляторов: Используйте эмуляторы Android или iOS для имитации разных локалей и убедитесь, что всё отображается правильно.
- Длинные тексты: Проверьте, что длинные переводы не вызывают переполнения или проблем с интерфейсом.
- Ручное тестирование: Вручную проверьте точность переводов, форматов дат, форматов чисел и т. д.