Flutter localization
使用easy_localization讓App支援多語系。
前言 依照官方文件使用多語系實在是太過麻煩,因此這邊選用Easy Localization這個套件,來解決我們的問題。
此範例專案希望能夠顯示目前使用語系。並且可以在App內切換語系。
Flutter 官方文件
Easy Localization官方文件
建立起始專案 先在建立頁面中建立用來顯示目前語系以及三個語系的切換按鈕。
套件設定 pubspeec.yaml中加入easy_localization套件。
dependencies:flutter:sdk:fluttereasy_localization:^2.3.2pubspeec.yaml中設定語系檔的位置。
flutter:uses-material-design:trueassets:- assets/locales/接著在專案根目錄下建立assets/locales目錄以及四個語系檔(由於iOS和Android台灣繁體中文的格式不同,必須建立兩個檔案)。
en.json zh.json zh-Hant-TW.json zh-TW.json iOS專案設定 打開Runner.xcworkspace,在info頁籤下面的localization區塊加入需要的語系。
Flutter設定 在main.dart加入下面的設定。
void main() { runApp( EasyLocalization( child: MyApp(), supportedLocales: [ Locale('en'), Locale('zh', 'TW'), Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant', countryCode: 'TW'), Locale('zh'), ], fallbackLocale: Locale('en'), path: 'assets/locales', ), ); } 參數說明:
supportedLocales:支援的語系,使用的優先權會依照array內的順序。 fallbackLocale:當手機語言不在支援語言內會採用此語系。 path:語系檔的路徑。 接著先看一下語系檔的格式,打開en.json,可以看到下列內容:
{ "localization_str_01": "Current language: {lang}", "localization_str_02": "English", "localization_str_03": "Traditional Chinese", "localization_str_04": "Simplified Chinese", "localization_str_05": "Current language: {}" "localization_str_06": "Flutter Localization" } 一般使用 此套件是採用Json格式來對應,這邊會示範幾種使用的方式。
[Read More]