Виджет Localizations
Виджет Localizations кладёт в дерево переводы
и текущую
Locale.
Список источников передают в delegates,
язык - в locale,
интерфейс оборачивают в child.
MaterialApp обычно уже ставит Localizations,
но локально язык меняют через
override.
Синтаксис
Localizations(
locale: const Locale('en'),
delegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
child: child,
)
Параметры
| Параметр | Описание |
|---|---|
locale |
Текущая локаль для поддерева. Тип
Locale.
|
delegates |
Список делегатов, которые загружают переводы. |
child |
Дочерние виджеты, которые читают локализацию. |
Методы
| Метод | Описание |
|---|---|
localeOf |
Возвращает Locale из ближайшего Localizations.
|
override |
Строит виджет с другой локалью для части дерева. |
Пример
Давайте подключим стандартные делегаты Material:
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
void main()
{
runApp(
MaterialApp(
locale: const Locale('en'),
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
const Locale('en'),
const Locale('de'),
],
home: Scaffold(
body: Center(
child: Text('abcde'),
),
),
),
);
}
На экране MaterialApp сам создаст Localizations; кнопки и диалоги получат английские подписи.
Пример
Давайте прочитаем locale через localeOf:
import 'package:flutter/material.dart';
class LocaleLabel extends StatelessWidget
{
const LocaleLabel({super.key});
@override
Widget build(BuildContext context)
{
var code = Localizations.localeOf(context).languageCode;
return Text(code);
}
}
void main()
{
runApp(
MaterialApp(
locale: const Locale('de'),
home: Scaffold(
body: Center(
child: LocaleLabel(),
),
),
),
);
}
На экране по центру появится 'de'.
Смотрите также
-
класс
Locale,
который задаёт язык дляLocalizations -
метод
override,
который подменяет локаль локально -
класс
GlobalMaterialLocalizations,
делегат переводовMaterial -
класс
MaterialLocalizations,
интерфейс строкMaterialна текущем языке