Flutter库尔德语本地化插件flutter_kurdish_localization的使用
Flutter库尔德语本地化插件flutter_kurdish_localization的使用
演示应用
Flutter库尔德语本地化插件 🌍
该插件为中央库尔德语(Sorani)提供了非官方的本地化支持。
开始使用
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';
在 localizationsDelegates
数组中添加以下两个委托:
- KurdishMaterialLocalizations.delegate 用于文本和日期的本地化
- KurdishWidgetLocalizations.delegate 用于文本和用户界面方向性
示例代码如下:
return MaterialApp(
localizationsDelegates: [
..
KurdishMaterialLocalizations.delegate,
KurdishWidgetLocalizations.delegate,
...
],
supportedLocales: [ Locale('ku') ],
locale: Locale('ku')
)
翻译现已可用!
const List<Locale> supportedLocales = [
Locale('en'),
Locale('ku'),
Locale('ar'),
];
完整示例代码
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';
import 'package:flutter_kurdish_localization_example/util/constants.dart';
import 'package:flutter_kurdish_localization_example/localization/demo_localization.dart';
import 'package:flutter_kurdish_localization_example/router/custom_router.dart';
import 'package:flutter_kurdish_localization_example/router/route_constants.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'localization/language_constants.dart';
bool? landingScreen;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
landingScreen = (prefs.getBool('landing') ?? false);
if (landingScreen == true) {
debugPrint("Landing : $landingScreen");
} else {
debugPrint("Landing : $landingScreen");
}
runApp(const MyApp());
}
const List<Locale> supportedLocales = [
Locale('en'),
Locale('ku'),
Locale('ar'),
];
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
static void setLocale(BuildContext context, Locale newLocale) {
_MyAppState state = context.findAncestorStateOfType<_MyAppState>()!;
state.setLocale(newLocale);
}
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Locale? _locale;
setLocale(Locale locale) {
setState(() {
_locale = locale;
});
}
[@override](/user/override)
void didChangeDependencies() {
getLocale().then((locale) {
setState(() {
_locale = locale;
});
});
super.didChangeDependencies();
}
[@override](/user/override)
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.transparent, // 导航栏颜色
statusBarColor: primaryColor, // 状态栏颜色
statusBarIconBrightness: Brightness.light));
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "Flutter多语言本地化演示",
theme: ThemeData(primarySwatch: Colors.deepOrange),
locale: _locale,
supportedLocales: supportedLocales,
localizationsDelegates: const [
DemoLocalization.delegate,
KurdishMaterialLocalizations.delegate,
KurdishWidgetLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
localeResolutionCallback: (locale, supportedLocales) {
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale!.languageCode &&
supportedLocale.countryCode == locale.countryCode) {
return supportedLocale;
}
}
return supportedLocales.first;
},
onGenerateRoute: CustomRouter.generatedRoute,
initialRoute: landingScreen! ? homeRoute : landingRoute,
);
}
}
更多关于Flutter库尔德语本地化插件flutter_kurdish_localization的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter库尔德语本地化插件flutter_kurdish_localization的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,关于Flutter库尔德语本地化插件 flutter_kurdish_localization
的使用,下面是一个基本的代码示例,展示了如何在Flutter应用中集成和使用该插件进行本地化。
首先,确保你的 pubspec.yaml
文件中已经添加了 flutter_kurdish_localization
依赖:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_kurdish_localization: ^最新版本号 # 替换为实际最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来,在你的 Flutter 应用中配置 MaterialApp 以支持本地化,包括库尔德语。
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Kurdish Localization Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
// 添加支持的本地化委托
localizationsDelegates: [
// 必须添加 GlobalMaterialLocalizations 和 GlobalWidgetsLocalizations
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
// 添加 KurdishLocalizations 委托
KurdishLocalizations.delegate,
],
// 设置支持的语言代码列表
supportedLocales: [
Locale('ku', ''), // 库尔德语(通用)
Locale('ku', 'IQ'), // 库尔德语(伊拉克)
Locale('ku', 'IR'), // 库尔德语(伊朗)
Locale('ku', 'SY'), // 库尔德语(叙利亚)
Locale('ku', 'TR'), // 库尔德语(土耳其)
// 其他支持的语言...
Locale('en', 'US'), // 英语(美国),作为示例或备用
],
// 设置初始语言
locale: Locale('ku', ''), // 默认库尔德语(通用)
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final kurdishLocalizations = KurdishLocalizations.of(context);
return Scaffold(
appBar: AppBar(
title: Text(kurdishLocalizations.appTitle),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
kurdishLocalizations.helloWorld,
style: TextStyle(fontSize: 24),
),
ElevatedButton(
onPressed: () {
// 示例:切换到英语
showCupertinoDialog(
context: context,
builder: (context) => CupertinoAlertDialog(
title: Text(kurdishLocalizations.languageChangeTitle),
content: Text(kurdishLocalizations.changeToEnglishMessage),
actions: <Widget>[
CupertinoDialogAction(
isDefaultAction: true,
child: Text(kurdishLocalizations.confirm),
onPressed: () {
Navigator.pop(context);
// 切换到英语
Localizations.overrideLocaleOf(context, Locale('en', 'US'));
},
),
CupertinoDialogAction(
isDefaultAction: false,
child: Text(kurdishLocalizations.cancel),
onPressed: () {
Navigator.pop(context);
},
),
],
),
);
},
child: Text(kurdishLocalizations.changeLanguageButton),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 在
pubspec.yaml
中添加了flutter_kurdish_localization
依赖。 - 在
MaterialApp
中配置了localizationsDelegates
和supportedLocales
以支持库尔德语和其他语言。 - 使用
KurdishLocalizations.of(context)
获取本地化资源,并在UI组件中显示本地化的文本。 - 添加了一个按钮示例,用于演示如何在运行时更改语言(虽然这里只是通过覆盖上下文语言来简单演示,实际应用中可能需要更复杂的逻辑来持久化用户选择的语言)。
请确保你已经正确配置了 flutter_kurdish_localization
插件,并且插件的版本与你的 Flutter SDK 版本兼容。如果有任何特定的字符串或功能需要使用,请参考插件的官方文档或源代码以获取更多详细信息。