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

Flutter本地化(国际化)之App名称

文章目录

  • Android国际化
  • IOS国际化

Flutter开发的App,如果名称想要跟随着系统的语言自动改变,则必须同时配置Android和IOS原生。

Android国际化

  1. 打开android\app\src\main\res\values
    在这里插入图片描述
  2. 创建strings.xml
    在values上右键,选择New>Values Resource File
    在这里插入图片描述
    在新窗口中输入文件名strings.xml
    在这里插入图片描述
    strings.xml文件中,输入以下内容
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <!--    appName是key,后面的值就是本地化实际的名称--><string name="appName">App name default locale</string>
    </resources>
    
  3. 创建多个语言的strings.xml
    在res目录上右键,选择New>Android Resource Directory
    在这里插入图片描述
    左侧Available Qualifiers选择Locale,点击中间的右箭头,然后在右边选择需要国际化的语言和地区,点击OK.
    在这里插入图片描述
    会自动创建values前缀的文件夹,将之前的strings.xml复制进去.
    在这里插入图片描述
    然后将值修改成对应语言.
    这里推荐使用Android Studio自带的国际化编辑器Translations Editor,在strings.xml的右上角,点击Open editor打开。
    在这里插入图片描述
    在国际化编辑器,可以很方便地修改每一种语言定义的值,这样就不需要打开多个string.xml来修改了。
    在这里插入图片描述
  4. 引用多语言的key
    打开Manifest.xml,将label的值替换为我们定义的资源id,引用方式为@string/id名
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.flutter_app"><applicationandroid:label="@string/appName"android:name="${applicationName}"android:icon="@mipmap/ic_launcher"><!-- 其他省略... --></application>
</manifest>

Android官方推荐资源的key命名方式全部小写,单词之间以下划线分开,例如app_name

最后重新运行App,当系统语言切换时,App的名称也会跟着改变。
当然了,如果切换的语言是不被App支持,会以默认的values文件下的资源值为主。

IOS国际化

  1. 首先要添加支持的语言。默认是en(英语)。如果已经设置过了,请看下一步。
    如果要设置其他语言为默认语言,选中语言后点击Set Default
    在这里插入图片描述

  2. 创建InfoPlist文件。
    选中Runner,右键New File...
    在这里插入图片描述
    在弹出的窗口中,选择Resouce中的String Catalog,点击Next
    在这里插入图片描述
    保存名称为InfoPlist,点击Creat创建文件
    在这里插入图片描述

  3. 定义多语言的key和value。
    打开InfoPlist,可以看到会自动有我们支持的语言。
    在这里插入图片描述
    点击+号,创建一个字符串资源.
    在这里插入图片描述
    将key的名称改为CFBundleDisplayName,后面的值就是本地化的app名称。
    在这里插入图片描述
    在这里插入图片描述
    对应的源码文件是ios/Runner/InfoPlist.xcstrings,看结构就是一个JSON。

    {"sourceLanguage" : "en","strings" : {"CFBundleDisplayName" : {"extractionState" : "manual","localizations" : {"en" : {"stringUnit" : {"state" : "translated","value" : "App Name"}},"zh-Hans" : {"stringUnit" : {"state" : "translated","value" : "App名称"}}}}},"version" : "1.0"
    }
    
  4. 最后在Info.plist中引用key。
    CFBundleDisplayNameCFBundleName的value都改为$(PRODUCT_NAME)
    在这里插入图片描述

重新运行IOS App,只要支持当前系统的语言,就会显示对应的app名称。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/265175.html

相关文章:

  • Redis哨兵源码分析
  • 安装Neo4j
  • 华为鸿蒙开发适合哪些人学习?
  • 深信服技术认证“SCSA-S”划重点:命令执行漏洞
  • Flink系列之:Savepoints
  • 使用宝塔面板部署前端项目到服务器
  • Enge问题解决教程
  • 使用yarn安装electron时手动选择版本
  • AIGC:阿里开源大模型通义千问部署与实战
  • Java小案例-Java实现人事管理系统
  • Win系统修改Nginx配置结合内网穿透实现远程访问多个Web站点
  • 如何使用 NFTScan NFT API 在 Base 网络上开发 Web3 应用
  • 【Chrome】ERR_SSL_PROTOCOL_ERROR问题
  • Codeforces Round 916 (Div. 3)(E:贪心 F贪心dfs G tarjan+topsort +线段树优化建图)
  • eNSP错误40,原因三:windows10自带虚拟化软件Hyper-V
  • Maven将Jar包打入本地仓库
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
  • Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟
  • Ubuntu 常用命令之 less 命令用法介绍
  • 探索Node.js包管理器npm:介绍与使用指南
  • 探讨APP自动化测试工具的重要性
  • el-date-picker日期时间插件只允许选择年月日小时并做可选择范围限制(精确到小时的范围)
  • 在MongoDB中使用数组字段和子文档字段进行索引
  • <JavaEE> 网络编程 -- 网络编程和 Socket 套接字
  • 【计算机系统结构实验】实验2 流水线中的冲突实验
  • conda环境下执行conda命令提示无法识别解决方案
  • 链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
  • 论文笔记 | Nature 2023 FunSearch:利用大语言模型在数学科学领域探索新的发现
  • JavaScript 对象和 JSON 字符串的区别
  • 基于 Flink SQL 和 Paimon 构建流式湖仓新方案