開始的時候我以爲沒有必要使用插件來實現國際化 , 幾個json文件一加載就完事了,而後配置一下語言相關的處理. 可是使用了插件以後我真香了 , 真的是簡單了太多了.git
添加依賴:github
dev_dependencies:
...
//add this
flutter_localizations:
sdk: flutter
複製代碼
在菜單欄的Tool下找到Flutter Intl 並選擇Initalize for the project, 配置結束後效果以下:json
flutter_intl:
enabled: true
複製代碼
使用Add Locale
生成其餘語言的arb文件markdown
例如:zh_CN , 會在l10n包下生成Intl_zh_CN.arb文件 , 可在其中填入對應的文案.oop
return MaterialApp(
...
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
supportedLocales: S.delegate.supportedLocales,
localeListResolutionCallback: (locales, supportedLocales) {
print(locales);
return;
},
...
);
複製代碼
在須要配置國際化的地方調用S.of(context).key
便可.ui
沒有context
時可使用S.current.key
this
具體使用方式請參考本項目的代碼spa
注意 :.net
zh_TW
, 項目並不支持,會優先尋找zh
的其餘語言 , 以supportedLocales
順序從上向下尋找.i18n
文件夾 , 而flutter intl
生成的爲l10n
, 首字母不一樣 , 須要注意.intl
包 , 但不提供intl
相關功能. 須要額外功能才須要依賴intl
.i18n
中的代碼,但可能須要修改類名.l10n
文件夾下, 並修更名字 ,例如:intl_en.arb , intl_zh_CN.arb${param}
,而flutter intl插件爲{param}
,要注意去掉$.