Flutter项目国际化配置

Flutter国际化配置备忘

Flutter国际化是为Flutter项目添加多语言支持,有两种方法,一种是官网提供的步骤  Flutter 应用里的国际化

还有一种是开发工具的插件Flutter Intl ,提供的有Android studio(以下简称as)和VSCode的插件

使用插件的方式步骤简单一点,配置完成后全局的类名是S 写起来也方便


安装好插件后,在as中依次点击菜单 Tools -> Flutter Intl -> Initialize for the Project (如果没有这个菜单,可能是没安装插件或安装后没重启IDE)

点击后会在项目的lib目录生成对应的目录和文件


第二步需要手动在pubspec.yaml中添加两个包

dependencies:
   ...
  flutter_localizations:
    sdk: flutter
  intl: ^0.17.0


第三步,打开main.dart, 在 MaterialApp 中添加对应的属性

import 'package:flutter_localizations/flutter_localizations.dart';

import 'generated/l10n.dart';

//...
return MaterialApp(
    title: 'App Demo'
    onGenerateTitle: (BuildContext context){
      return S.of(context).app_title;
    },
    ...
    localizationsDelegates: [
      GlobalMaterialLocalizations.delegate,
      GlobalWidgetsLocalizations.delegate,
      GlobalCupertinoLocalizations.delegate,
      S.delegate,
    ],
    supportedLocales: [
      const Locale('en', ''),
      const Locale('zh', 'CN'),
    ],
    ...

);

这里 onGenerateTitle 就是调用多语言配置的title , 直接在title属性上调用是不生效的


第四步是添加语言,默认只有一个en  在Flutter Intl菜单中 Add Locale,简体中文就填 zh_CN


最后一步,就是把项目里用到的需要多语言化的地方,全部收集到 lib/l10n 下的arb文件中,然后在项目中对应的地方调用 S.of(context).xxx



需要注意的是改完arb文件项目就会调用一遍多语言生成