Flutterの公式国際化案

2219 ワード

1.プラグインのインストール
File-->Settings...-->Plugins-->flutter Intelを検索し、プラグインをインストールし、Android Studioを再起動します
2.構成と初期化
  • pubspecを構成する.yamlファイルの新規ローカライズ依存:
  • dependencies:
        // Other dependencies...
        flutter_localizations:
            sdk: flutter
    

    その後package getは依存を取得します
  • プロジェクト初期化メニューバーのToolの下でFlutter Intelを見つけてInitalize for the projectを選択し、構成が終わった後、自動的にpubspec.yamlに次のフィールドを追加します:
  • flutter_intl:  
        enabled: true
    

    libディレクトリの下にgeneratedとl 10 nの2つのパッケージが追加されます
    コード初期化:
    import 'package:flutter/material.dart';
    import 'package:flutter_localizations/flutter_localizations.dart';
    
    import 'generated/l10n.dart';
    
    class MyApp extends StatelessWidget {
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          localizationsDelegates: const [
            S.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate
          ],
          //supportedLocales: S.delegate.supportedLocales,
          //         
          supportedLocales: ([const Locale('zh', ''), ])..addAll(S.delegate.supportedLocales),
    
          //                            ,       MaterialApp
          //         ,           Title    ,        onGenerateTitle
          //title: S.of(context).app_name,
          onGenerateTitle: (context) => S.of(context).app_name,
          //home: MyHomePage(title: S.of(context).main_message),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    

    文字列の抽出
  • サポートが必要な言語ファイルをlib/I 10 nフォルダで右クリック-->New-->Arb Fileを新規作成し、対応するlocale codeを「zh」など入力します.あるいはTools-->Flutter Intel-->Add Localeでは、効果は同じです.
  • 文字列選択文字列を抽出するか、文字列の後ろにショートカットキー「Alt+Insert」-->Extract to ARB fileを押して、文字列を抽出するArbファイルをチェックします.実際には、各arbファイルの下に対応する文字列フィールドを追加し、対応するarbファイルに対応する言語の文字列に変更する必要があります.

  • 使用
    国際化が必要な場所でS.of(context). を呼び出せばよい
    いくつかの方法:
    #         
    S.load(Locale('de', 'DE'));
    
    #       
    Intl.getCurrentLocale()
    

    参照先:https://plugins.jetbrains.com/plugin/13666-flutter-intl