【Flutter】vscode快速估计插件 Flutter Intl


在这里插入图片描述

前言

当软件有国际化的需求的时候,你可以就需要多种语言的支持了。如果你使用的ide 支持该插件的话,vscode I,ntelliJ /,Android Studio.,那么你可以使用里面的快速国际化的插件Flutter Intl来快速完成这项工作


一、Flutter Intl是什么?

快速构建国际化功能的插件,如果不使用也可以构建国际化的

二、使用步骤(vscode 为例子)

1.安装

在这里插入图片描述

2.输入命令:

ctrl+shift+p
Flutter Intl: Initialize
在这里插入图片描述

执行之后会自动产生一个文件和文件夹:
lib/l10n/intl_en.arb.
在这里插入图片描述

3.pubspec.yaml 里面做一些配置

dependencies:
flutter:
sdk: flutter
flutter_localizations: # 添加这个
sdk: flutter # 添加这个

flutter_intl: # 添加这个
enabled: true # 添加这个

如果你的设备是ios的话,还需要在xcode 里面设置info.plist 添加支持的语言类型:

可以在命令输入ios/Runner/Info.plist 会自动打开xcode的页面,比如下面的添加就是支持英语和德语

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>de_DE</string>
    ...
</array>

4.在代码里面使用

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';

void main() {
    
    
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
    
    
  const MyApp({
    
    super.key});

  // This widget is the root of your application.
  
  Widget build(BuildContext context) {
    
    
    return MaterialApp(
      localizationsDelegates: const [
        S.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: S.delegate.supportedLocales,//生成的支持的语言种类
      title: 'Flutter Demo',
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

5.其他使用

Intl.getCurrentLocale() //获取当前的语言环境

6.新增其他的语言支持,在这边新建一个arb的文件

你新增一个他会自动的获取到你新增了一个并自动添加到message_all 里面;在这里插入图片描述

7.如何使用

英文对应的其他的语言,比如下图:
arb 文件是

1.简单使用

直接使用,这样就会在该页面上面显示,里面的内容,前提是你手机设备当前语言是你设置语言里面支持的,手机设备切换下中英文,页面显示的就会不一样

 S.of(context).myName,

在这里插入图片描述

2.如果你的内容是不确定,动态的,你可以使用如下:

arb 文件加入 {} 可以传入参数

{
    "myName": "马大帅",
    "myFullName": "马大帅 {work} {age}"
}
        children: <Widget>[
            Text(
              ' ${
      
      S.of(context).myName}',
            ),
            Text(
              ' ${S.of(context).myFullName('sb 工作', 50)}',
            ),
          ],

在这里插入图片描述

3.可以选项的内容和复数

复数:

    "getMessageTips": "{howMany, plural, zero{你选择的零} two{你选择的二} other{你选择了{howMany}其他}}",
  Text(S.of(context).getMessageTips(2)),

可以选项的内容:相当于是一个字典,传入key ,然后传入value 就可以完成

"select": "{select,select, option1{
     
     {lastName}, select} option2{
     
     {lastName}, select} other{
     
     {lastName}, default select}}",
Text(S.of(context).select("option2", "USA"));
Text(S.of(context).select("other", "china"));

总结

欢迎关注,留言,咨询,交流!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43444734/article/details/127816708