Flutter,没有国家代码的本地化,可以吗



在实现本地化时,在西班牙语(Espanol(的情况下,需要使用的国家太多,所以我考虑在初始化时排除国家代码(第二个参数值(。这没问题吗?代码如下。如果查看Locale('es'(,则后面缺少参数值。

@override
Widget build(BuildContext context) {
return MaterialApp(
supportedLocales: [            
Locale('en', 'US'),
Locale('sk', 'SK'),
Locale('ja', 'JP'),
Locale('es',),           
],
localizationsDelegates: [           
AppLocalizations.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;
},
);
}

是的,可以。您只能使用语言代码。

Locale.languageCode、Locale.scriptCode和Locale.countryCode

仅限Locale.languageCode和Locale.scriptCode

Locale.languageCode和Locale.countryCode only

Locale.languageCode only

Locale.countryCode仅当所有首选区域设置与不匹配时

返回supportedLocales的第一个元素作为后备

你可以这样使用:


// Full Chinese support for CN, TW, and HK
supportedLocales: [
const Locale.fromSubtags(languageCode: 'zh'), // generic Chinese 'zh'
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'), // generic simplified Chinese 'zh_Hans'
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant'), // generic traditional Chinese 'zh_Hant'
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN'), // 'zh_Hans_CN'
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant', countryCode: 'TW'), // 'zh_Hant_TW'
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant', countryCode: 'HK'), // 'zh_Hant_HK'
],

你可以从官方文件中阅读更多内容。

最新更新