国际化intlflutter国际化多语言实践(代码片段)

ThinkerWing ThinkerWing     2022-12-15     752

关键词:

目标:实现flutter国际化

提示:这里参考一下几个链接

例如:

feat/use-Flutter-Intl

该分支对应的提交是使用Android Studio 和 Flutter Intl插件 并根据掘金这篇文章的实践,兼容汉字简体和繁体字
https://github.com/ThinkerWing/language/commit/f5fd58453f85b5b9c0e58df6270fac4cf22f200d

实现效果

  • 本地语言中文:你好,think
  • 本地语言英语:hello,think

开始之前先创建项目

flutter create `project`

可以看我git上的提交记录,创建项目完之后initial commit了,然后第二次提交就是增加多语言的功能。
https://github.com/ThinkerWing/language

第一步,添加intl and flutter_localizations,并启动generate标志:

https://pub.flutter-io.cn/packages/intl/install
这将在您的包的 pubspec.yaml 中添加这样一行

https://docs.flutter.dev/development/accessibility-and-localization/internationalization


启动generate标志


第二步,lib文件夹中新建文件夹l10n或者locale,并在其中创建app_en.arb 和app_zh.arb文件:


第三步,在flutte项目的根目录中添加l10n.yaml, 内容如下:

Add a new yaml file to the root directory of the Flutter project called l10n.yaml with the following content:

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

添加完成之后,执行命令 flutter run,dart_tools会自动生成相关的文件


第四步,在主程序MaterialApp中,添加下面内容:

需要导入的包

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
return const MaterialApp(
  title: 'Localizations Sample App',
  localizationsDelegates: [							// 本地化应用的代理
    AppLocalizations.delegate,  					// 应用程序本地化代理
    GlobalMaterialLocalizations.delegate, 			// 全局材质组件的本地化代理
    GlobalWidgetsLocalizations.delegate,			// 全局组件本地化代理
  ],
  supportedLocales: [
    Locale('en', 'US'), // English, no country code
    Locale('zh', 'CN'), // Spanish, no country code
  ],
  home: MyHomePage(),
);

在您的应用程序的任何位置使用 AppLocalizations。 在这里,翻译后的消息用于文本小部件。
Use AppLocalizations anywhere in your app. Here, the translated message is used in a Text widget.

Text(AppLocalizations.of(context)!.helloWorld);

netcore国际化最佳实践(代码片段)

NetCore国际化最佳实践ASP.NETCore中提供了一些本地化服务和中间件,可将网站本地化为不同的语言文化。ASP.NETCore中我们可以使用Microsoft.AspNetCore.Localization库来实现本地化。但是默认只支持使用资源文件方式做多语言存储,... 查看详情

django国际化(多语言)(代码片段)

1settings.pyMIDDLEWARE=(‘django.contrib.sessions.middleware.SessionMiddleware‘,#‘corsheaders.middleware.CorsMiddleware‘,‘django.middleware.locale.LocaleMiddleware‘,#中间件加上Django国际化中间件‘django.middleware 查看详情

低代码平台多语言国际化(i18n)技术方案

国际化(Internationalization,简称i18n):指软件开发应当具备支持多种语言和地区的功能。也就是说能够具备切换页面显示语言的功能。i18n,其中“I”和“n”分别为首末字符,18则为中间的字符数。低代码平台/零代码平台中使用... 查看详情

android国际化多语言切换(代码片段)

关于App国际化,之前有讲到国际化资源、字符换、布局相关,想要了解的猛戳用力抱一下APP国际化。借着本次重构多语言想跟大家聊一下多语言切换,多语言切换对于一款国际化App来讲是重中之重,并非难事,... 查看详情

#前后端国际化多语言配置(代码片段)

前后端国际化多语言配置前端(VueElementUI)项目前端使用Vue+Elementui编写i18n.js在这个js中引入ElementUI的多语言资源,引入本地的多语言资源//I18nimportVueI18nfrom'vue-i18n'importVuefrom'vue'importlocalefrom'element-ui/l... 查看详情

javafx:多语言适配(代码片段)

JavaFX:多语言适配JDK国际化:ResourceBundle.html其他资源:TornadoFX编程指南,第10章,FXML和国际化、JavaFX的ResourceBundle使用创建ResourceBundle资源ResourceBundle获取资源publicclassResourceBundleUtilprivatestati 查看详情

ios国际化(多语言)(代码片段)

一、应用程序国际化包括app名称和各种权限的提示文字。1.1创建工程,再在“PROJECT”的“Info”里面,添加所需语言。1.2从代码中分离出文本创建一个“.strings”扩展名的文件来本地化字符串,需要把这些字符串全部... 查看详情

多语言国际化(代码片段)

国际化多语言支持是现在系统通常都要具备的功能,Vue对国际化提供了很好的支持。1.安装依赖首先需要安装国际化组件,执行yarnaddvue-i18n命令,安装i18n依赖。2.添加配置在src下新建i18n目录,并创建一个index.js.importVuefrom‘vue‘im... 查看详情

react项目多语言国际化:react-i18next插件实现——本地数据篇(代码片段)

如何理解多语言国际化?图片中下拉部分已经清楚的说明了多语言国际化是什么了。个人理解:它就是我们在网站上可以通过切换语言类型来实现同一功能的不同语言展示效果。react-i18next介绍react-i18next是一个强大的React/ReactNativ... 查看详情

yii2api接口实现国际化多语言设置(代码片段)

 1)在/config/main.php下添加如下代码:‘components‘=>[‘language‘=>‘zh-CN‘,‘i18n‘=>[‘translations‘=>[‘*‘=>[‘class‘=>‘yii\\i18n\\PhpMessageSource‘,‘basePath‘=>‘@application/messages‘,//ap 查看详情

Spring数据国际化最佳实践

】Spring数据国际化最佳实践【英文标题】:Springdatainternationalizationbestpractice【发布时间】:2014-04-2207:30:14【问题描述】:我有一个带有spring数据、jpa和hibernate的springmvc项目。我有一个多语言数据库。我设计了我的数据库和实体。... 查看详情

android产品研发-->实现国际化(多语言)(代码片段)

简介最近工作中突然要求要项目进行国际化,之前没遇到过。但是也很简单呀,只需要把添加一个相应语言的的strings.xml的资源文件就好了,不是吗?这样只要切换系统语言就能切换app的文字语言了。效果图实现1.... 查看详情

java:jsp:resourcebundle国际化多语言

java提供了一个资源类java.util.ResourceBundle来试下多国语言版本。其实ResourceBundle只是一个抽象的类,她有两个子类:ListResourceBundle,和,PropertyResourceBundle.前一个子类需要编写不同的国家语言信息放置在对象类中,下面将实例演示,... 查看详情

springboot多语言

springboot-参数验证提示语言动态变化的实现https://www.jianshu.com/p/dbf0400b2175SpringBoot整合国际化I18nhttps://www.2cto.com/kf/201905/808080.html我们公司的springboot国际化(多语言)解决方案,有demohttps://blog.csdn.net/pangdongh/article/de 查看详情

ios多语言本地化(国际化)设置

讨论的iOS应用中的多语言设置,Ok一般是两种情况:1.根据当前设备语言自动切换显示2.在应用中可进行语言设定至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置。其实也... 查看详情

ios多语言本地化(国际化)设置

...f0c;切换下)—>Info—>Localizations—>设置多语言环境2.国际化应用名称(1)创建InfoPlist.string,并进行Localization配置:在项目中点击New 查看详情

ios国际化多语言(上)

参考技术A这里介绍的方法只是根据系统语言变化demoiOS国际化多语言(下)获取Info.plist文件中key的方法:选中Info.plist-->右键选中OpenAs-->SourceCode注意:选中PropertyList恢复列表样注意:如果创建.strings文件是自定义的名字的话... 查看详情

angularjs国际化多语言,angular-translate教程详解,$translate.instant()为什么不生效(代码片段)

壹?引最近项目要求支持国际化多语言,由于项目用的还是angularjs,那么首当其冲的选择了angularjs封装的I18N插件angular-translate,本文主要会从三个方向展开讨论,一是基本用法,怎么用,代码是什么意思;二是问题解答,比如$tran... 查看详情