我們?cè)谏弦徽禄刂薪榻B了Card Widget相關(guān)的內(nèi)容,本章回中將介紹國(guó)際化設(shè)置.閑話休提,讓我們一起Talk Flutter吧。
概念介紹
我們?cè)谶@里說(shuō)的國(guó)際化設(shè)置是指在App設(shè)置相關(guān)操作,這樣可以讓不同國(guó)家的用戶使用App時(shí)呈現(xiàn)不同的語(yǔ)言??傊?,就是通過(guò)相關(guān)的操作,讓App支持多個(gè)國(guó)家的語(yǔ)言。
設(shè)置方法
對(duì)多國(guó)語(yǔ)言的設(shè)置是通過(guò)MaterialApp
組件完成的,該組件提供了相關(guān)的屬性來(lái)控制App支持的語(yǔ)言,這些屬性如下:
- locale屬性:用來(lái)控制當(dāng)前App中使用的語(yǔ)言,如果不設(shè)置默認(rèn)是手機(jī)系統(tǒng)語(yǔ)言;
- localizationsDelegates屬性:用來(lái)存放App支持的多國(guó)語(yǔ)言包,如果不設(shè)置默認(rèn)只有en-US一種語(yǔ)言包;
- supportedLocales屬性:用來(lái)控制App支持的語(yǔ)言種類(lèi);
這三個(gè)屬性中,常用的是最后兩個(gè)屬性,而且如果想讓App實(shí)現(xiàn)國(guó)際化時(shí),這兩個(gè)屬性必須要設(shè)置。第一個(gè)屬性通常不設(shè)置,也就是讓App使用當(dāng)前手機(jī)系統(tǒng)中設(shè)置的語(yǔ)言,不過(guò)我們可以通過(guò)它手動(dòng)設(shè)置App的語(yǔ)言,這樣在程序中調(diào)試其它語(yǔ)言時(shí)不需要切換手機(jī)系統(tǒng)中的語(yǔ)言,直接在App中調(diào)試就可以。
示例代碼
return MaterialApp(
//locale屬性可以手動(dòng)指定當(dāng)前app使用的語(yǔ)言和地區(qū),如果不指定,默認(rèn)為跟隨系統(tǒng)語(yǔ)言
// locale: Locale('zh','CN'),
locale: Locale('es'),
localizationsDelegates: [
//添加自己定義的多語(yǔ)言文字
AppLocalizations.delegate,
//添加這三個(gè)delegate后界面上的文字就會(huì)自動(dòng)適配手機(jī)當(dāng)前的語(yǔ)言
//這三個(gè)庫(kù)包含系統(tǒng)自帶組件中使用的文字,比如日期組件中的年月日
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
//添加多國(guó)語(yǔ)言和語(yǔ)言對(duì)應(yīng)的地區(qū),IOS的版本在info.plist中添加
supportedLocales: [
Locale('en',"US"),
Locale('zh',"CN"),
Locale('es'),
],
);
上面的示例代碼是在MaterialApp
組件中進(jìn)行的,我們只列出了核心代碼,其它代碼省略了,大家可以到Github上main.dart文件中查看完整的代碼。
我們對(duì)代碼中的相關(guān)內(nèi)容做一些解釋,以方便大家了解國(guó)際化相關(guān)的內(nèi)容;
- locale屬性的類(lèi)型是
Locale
,可以使用兩個(gè)參數(shù)或一個(gè)參數(shù)的構(gòu)造方法來(lái)創(chuàng)建該類(lèi)的對(duì)象,第一個(gè)參數(shù)表示語(yǔ)言的代碼(languageCode),第二個(gè)參數(shù)表示語(yǔ)言所在地區(qū)的代碼(countryCode),比如zh有CN,HK,TW三種地區(qū)代碼,CN就是我們常見(jiàn)的簡(jiǎn)體中文,另外兩個(gè)地區(qū)使用的是繁體中文; - localizationsDelegates屬性是List類(lèi)型,我們可以在里面添加多種語(yǔ)言包,示例代碼中的第一個(gè)語(yǔ)言包是我們自定義的語(yǔ)言包,剩下的三個(gè)語(yǔ)言包是系統(tǒng)自帶的語(yǔ)言包,通常在App中必須添加這三個(gè)語(yǔ)言包,如果我們的App中使用了系統(tǒng)組件中的文字,那么就會(huì)使用這三個(gè)包中的內(nèi)容。如果不添加系統(tǒng)提供的包,程序編譯時(shí)可以通過(guò),但是到運(yùn)行時(shí)找不到包中的內(nèi)容就會(huì)出現(xiàn)異常。常見(jiàn)的是日期和時(shí)間組件中的"年月日"和"時(shí)分秒"這些文字。
- 使用系統(tǒng)提供的語(yǔ)言包時(shí)需要添加這些包的依賴:在pubspec.yaml文件中添加以下內(nèi)容:
dependencies:
#添加國(guó)際化相關(guān)內(nèi)容,添加完后IDE會(huì)在窗口上方自動(dòng)彈出flutter命令,選擇pub get就可以添加依賴
#或者是在終端中執(zhí)行flutter命令,該依賴主要更新了Dart_Packages.xml文件中的內(nèi)容
flutter_localizations:
sdk: flutter
- 自定義語(yǔ)言包的內(nèi)容就是我們自己在App中添加的文字,關(guān)于創(chuàng)建自定義的語(yǔ)言包的內(nèi)容在后面章回中介紹;
- 我們可以使用代碼來(lái)驗(yàn)證,App支持的語(yǔ)言和地區(qū),以及App當(dāng)前的語(yǔ)言,示例代碼如下:
//獲取App當(dāng)前的語(yǔ)言設(shè)置
Locale _locale = Localizations.localeOf(context);
Text("language code: ${_locale.languageCode}"),
Text("country code: ${_locale.countryCode}"),
//顯示App支持的所有語(yǔ)言
Text("local all: ${_locale.toString()}"),
//使用自定義語(yǔ)言包中的文字:helloWorld
Text("test localization: ${AppLocalizations.of(context)!.helloWorld}"),
內(nèi)容總結(jié)
上面小節(jié)的內(nèi)容比較零散,我們將總結(jié)一下如何給App設(shè)置國(guó)際化相關(guān)的內(nèi)容,以便讓大家更好地理解國(guó)際化相關(guān)的內(nèi)容:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-506267.html
- 在yaml配置文件添加系統(tǒng)語(yǔ)言包的依賴;
- 在MaterialApp中設(shè)置App包含的語(yǔ)言包和支持語(yǔ)言;
- 在App中使用語(yǔ)言包中的內(nèi)容,主要是自定義語(yǔ)言包中的內(nèi)容;
看官們,關(guān)于"國(guó)際化設(shè)置"相關(guān)的內(nèi)容就介紹到這里,歡迎大家在評(píng)論區(qū)交流與討論!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-506267.html
到了這里,關(guān)于第七十一回:國(guó)際化設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!