当前位置: 首页 > article >正文

VS Code实现flutter多语言(官方推荐Intl)

1、再pubspec.yaml文件中添加:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: any

运行 pub get packages

2、在 pubspec.yaml 文件中,启用 generate 标志

# The following section is specific to Flutter.
flutter:
  generate: true # Add this line

3、在根目录中添加一个新的 yaml 文件,命名为 l10n.yaml,添加一下内容:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

4、在lib文件夹中,新建文件夹l10n, 添加app_en.arb 和 app_zh.arb模版文件(其他语言文件也是如此)。

app_en.arb文件内容:

{
    "@@locale": "en",
    "homeTitle": "Home"
    
}

app_zh.arb文件内容:

{
    "@@locale": "zh",
    "homeHitle": "首页"
 
}

5、运行项目,在dart_tool/flutter_gen/gen_l10n 中看到生成的文件。也可以运行 flutter gen-l10n 来生成本地化文件。

引入 flutter_localizations 库和 app_localizations.dart:


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

为 MaterialApp 指定 localizationsDelegates 和 supportedLocales

return const MaterialApp(
  title: 'Flutter Demo',
  localizationsDelegates: [
    AppLocalizations.delegate, 
    GlobalMaterialLocalizations.delegate, // 为 Material 组件库提供本地化的字符串和其他值。
    GlobalWidgetsLocalizations.delegate, // 为 Cupertino 组件库提供本地化的字符串和其他值。
    GlobalCupertinoLocalizations.delegate,// 定义了默认的文本排列方向,由左到右或者由右到左。
  ],
  supportedLocales: [
    Locale('en'), // 英语
    Locale('zh'), // 中文
  ],
  home: MyHomePage(),
);

或者直接使用AppLocalizations 类,自动生成 localizationsDelegates 和 supportedLocales 列表,如下

const MaterialApp(
  title: 'Flutter Demo',
  localizationsDelegates: AppLocalizations.localizationsDelegates,
  supportedLocales: AppLocalizations.supportedLocales,
  home: MyHomePage(),
);

6、使用示例:Text(AppLocalizations.of(context)!.homeTitle)

NavigationRailDestination(
  icon: Icon(Icons.home),
  label: Text(AppLocalizations.of(context)!.homeTitle),
),


 


http://www.kler.cn/a/320745.html

相关文章:

  • 树莓派镜像 DIY 制作
  • 【Linux内核剖析】深入分析inet_init的处理机制
  • [前端面试]javascript
  • 【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别
  • 爬虫开发工具与环境搭建——开发工具介绍
  • 【Hadoop实训】Hive 数据操作②
  • Golang | Leetcode Golang题解之第421题数组中两个数的最大异或值
  • 嵌入式硬件工程师与嵌入式软件工程师的区别(详细版)
  • 关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【文件系统】上
  • NLP 序列标注任务核心梳理
  • 《C++中的神秘利器——类型萃取(Type Traits)深度解析》
  • Android ImageView支持每个角的不同半径
  • LVS-DR实战案例,实现四层负载均衡
  • 利用探空站数据(怀俄明和IGRA)和ERA5计算ZTD、ZHD和ZWD
  • 什么是 IP 地址信誉?5 种改进方法
  • 广播IP与共享IP的关系
  • hadoop大数据平台操作笔记(下)
  • C++/Qt 集成 AutoHotkey
  • 这本书简直就是自然语言处理学习者的福音!
  • 408算法题leetcode--第14天
  • Git 版本控制--git restore和git reset
  • 大数据Flink(一百二十三):五分钟上手Flink MySQL连接器
  • SQLServer TOP(Transact-SQL)
  • 【C++类的设计】题目(二):设计圆柱Column类
  • 【NLP】循环神经网络--RNN学习.day3