Flutter本地化管理插件best_localization的使用
Flutter本地化管理插件best_localization的使用
最佳实践:最佳本地化插件
最佳本地化插件 是一个轻量且灵活的Flutter本地化包。它支持动态翻译、插值、复数形式处理,并为库尔德语(Kurdish)提供了自定义本地化支持,包括Material和Cupertino小部件。
功能
- 动态翻译: 动态基于区域设置进行文本翻译。
- 插值: 在翻译中插入动态值(例如,Hello, {name}!)。
- 复数形式处理: 根据数字值处理文本的单数和复数形式。
- 库尔德语自定义本地化:
- 支持库尔德语(ku)本地化,适用于Material和Cupertino小部件。
- 包括自定义日期和数字格式。
- 无缝集成:
- 与Flutter的本地化系统无缝集成。
- 完全兼容MaterialApp和CupertinoApp。
- 无ARB文件: 直接在Dart映射中管理翻译,简化工作流程。
使用指南
开始使用
安装
- 添加
best_localization
包到你的项目中。
flutter pub add best_localization
或者在 pubspec.yaml
文件中添加:
dependencies:
best_localization: ^1.0.0
- 添加
flutter_localizations
包到你的pubspec.yaml
文件中:
dependencies:
flutter_localizations:
sdk: flutter
使用插件
初始化本地化
定义你的翻译,使用Dart映射。这里以库尔德语和英语为例:
final translations = {
'en': {
'hello': 'Hello, {name}!',
'welcome': 'welcome',
},
'ku': {
'hello': 'سڵاو، {name}!',
'welcome': 'بەخێربێیت',
},
// 更多语言...
};
添加本地化委托
更新你的 MaterialApp
或 CupertinoApp
,以包含本地化委托:
import 'package:best_localization/best_localization.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
BestLocalizationDelegate(translations: translations),
...kurdishLocalizations,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: const [
Locale('ku'), // 库尔德语
Locale('en'), // 英语
// 更多语言...
],
locale: Locale('ku'),
home: MyHomePage(),
);
}
}
访问翻译
在你的小部件中使用 BestLocalization.of(context)
方法访问翻译:
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final localizer = BestLocalization.of(context);
return Scaffold(
appBar: AppBar(
title: Text(localizer.translate('hello', args: {'name': 'John'})),
),
body: Center(
child: Text(localizer.translate('welcome')),
),
);
}
}
复数形式处理
在你的翻译中定义单数和复数形式的键:
final translations = {
'en': {
'items.one': 'One item',
'items.other': '{count} items',
},
'ku': {
'items.one': 'یەک دانە',
'items.other': '{count} دانە',
},
};
动态访问复数形式的翻译:
Text(localizer.translate('items', args: {'count': '2'})); // 输出: 2 دانە
设置非英语的语言键
你可以在其他语言中定义翻译键。例如:
final translations = {
'en': {
'سڵاو': 'Hello, {name}!', // 库尔德语的 "سڵاو" 翻译为英语
'بەخێربێن': 'Welcome', // 库尔德语的 "بەخێربێن" 翻译为英语
},
'ku': {
'سڵاو': 'سڵاو، {name}!', // 库尔德语的 "سڵاو" 翻译为库尔德语
'بەخێربێن': 'بەخێربێیت', // 库尔德语的 "بەخێربێن" 翻译为库尔德语
},
// 添加更多语言...
};
更多关于Flutter本地化管理插件best_localization的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复