Flutter使用gen_l10n实现多语言支持

实现步骤

  1. 在你的 Flutter 项目的 pubspec.yaml 文件中,确保添加了 flutter_localizations 和 intl 依赖。

    flutter_localizations:
    sdk: flutter
    intl: ^0.18.0

  1. 在 pubspec.yaml 中,添加 flutter 部分的 generate 配置。

    generate: true

  1. 在项目工程根目录新建一个l10n.yaml文件,该文件是是flutter gen-l10n 命令的默认配置文件。

    arb-dir: assets/strings #指定arb多国语文件目录
    template-arb-file: string_zh.arb #指定arb多国语文件
    output-localization-file: app_localizations.dart

  1. 在项目中找一个目录,用于存放创建 ARB 文件(本文中是assets/strings),例如 app_en.arb 和 app_zh.arb。每个文件包含键值对,定义了不同语言的字符串。

    {
    "@@locale": "zh",
    "app_name": "测试",
    "hello": "Hello"

    }

  1. 打开Terminal窗口,运行flutter gen-l10n命令。

    运行后生成的文件目录如下。

  2. 在MaterialApp或GetMaterialApp配置国际化支持。

    localizationsDelegates: AppLocalizations.localiz // 委托定义
    supportedLocales: AppLocalizations.supportedLoca // 支持切换的语言
    fallbackLocale: const Locale('en', ''), // 出错时配置语言

  1. 在需要使用的地方直接调用即可。

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';

    AppLocalizations.of(Get.context!)!.app_name

亦可实现一个公共方法,各个地方的调用均使用公共方法。

复制代码
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

AppLocalizations strings() => AppLocalizations.of(Get.context!)!;

strings().app_name


遇到的问题

  1. 执行flutter gen-l10n时报错。

    这是因为在pubspec.yaml 中,没有添加 flutter 部分的 generate 配置generate: true,添加后再执行即可,参考实现步骤2。
相关推荐
雨白11 分钟前
搞懂 Fragment 的生命周期
android
casual_clover14 分钟前
Android 之 kotlin语言学习笔记三(Kotlin-Java 互操作)
android·java·kotlin
程序员老刘15 分钟前
20%的选择决定80%的成败
flutter·架构·客户端
梓仁沐白21 分钟前
【Kotlin】数字&字符串&数组&集合
android·开发语言·kotlin
技术小甜甜26 分钟前
【Godot】如何导出 Release 版本的安卓项目
android·游戏引擎·godot
火柴就是我42 分钟前
Dart 原始字符串(Raw Strings)详解文档
android
玲小珑1 小时前
Auto.js 入门指南(五)实战项目——自动脚本
android·前端
玲小珑1 小时前
Auto.js 入门指南(四)Auto.js 基础概念
android·前端
没有了遇见2 小时前
DrawerLayout 滑动冲突
android
玲小珑3 小时前
Auto.js 入门指南(六)多线程与异步操作
android·前端