Unity多语言插件I2 Localization国际化应用

server/2024/9/22 23:47:21/

【就不收费了,要个关注不过分吧】

【图片来自插件官网,侵删】

前言

目前游戏往往都不会仅局限于国内语言,为了适应产品都要做国际化适配,因此会用到这个插件,这个插件要付费,因此请前往unity官网进行下载,支持正版,这里就不提供了。

先来注意事项:

1、一般为了性能考虑要结合Tmp使用,但是这里会有个小问题,就是字库问题,有些字库并不全都兼容所有语言字体,这点要特别注意比如这段日文:

中文:本地化语言

日文:ローカライズ言語

但出来后就变成这样:

出现这种问题就是字库的问题,请开发者联系美术组进行处理。

2、格式一般我们会用utf-8这种国际通用的标准格式,但是总会有几个国家特殊,那就得考虑做个定制版,鄙人有幸见过这种情形,甚至有的国家网络传输方式传输编码,传输包尺寸等用的不是国际通行的格式,都需要重做。

3、关于这个插件,我们一般不使用谷歌的技术方案。【国际化那妖蛾子】当然要是适配xbox这些单机,主机,还有switch这种设备就还好,至少他们基本都遵循国际化标准,唯一可能有问题的需要考虑的就是网络,这点与本文无关,就不展开了。

【暂时就这么多,进入正文】

因此我们用的都是本地读取csv的技术方案,不管是小游戏,还是大型产品,包括但不限于工业仿真系统【ps:国内这类产品基本上没人考虑过国际化】

首先安装软件:

window->Package Manager->Packages:My Assets->I2 Localization

然后Import导入即可

然后是Tools这里

 先点下Force Detection,如果报错就说明这是初次初始化,如果没有报错就说明已经有生成好的配置了,一般在Resources下有个配置好的文件,直接点下进去配置就行了,如果有请跳过生成步骤,到配置

生成:

1、如果没有的话,一般open下也可以自动生成

2、不行的话也可手动

在Resources文件夹下,如图操作建立配置文件

配置:

然后侧边就会出现个空的这个

 【这个操作步骤是官网建议,实践中似乎可以自动生成...,以防万一,没试过】

这里打开添加你要用的语言,我这里选了中文和英文

 选择完,记得Add,添加下,然后就是这样

 选择完后,来到Spreadsheets选项卡,选择Local

然后来到你的热更新文件夹下,建个utf-8格式的csv文件,我这里不需要热更,就在Resources文件夹下,不要用中文。

 然后返回到这里,选择File,目录指定到这个csv文件,注意不要直接输入,选择这个,再选

他会卡一下,然后读取文件生成,你的csv表格内容如下图

重点就是绿色部分,一般国内key是中文,默认Description,为默认语言【添加个描述】,后面两个绿块,设置为你想要的语言,生成完后如下:

这里还没完,再来到Tools->Script 

选个All,接着Build生成下,这样配置就好了

 如何使用:

新建一个TMP,关于TMP生成部分这里就略,因为不是本文重点

先选择好你TMP的Font Asset

然后添加脚本【l2 Localize】

一般他会自己自动指定好Target,如果不行请手动切换 ,您也可通过代码进行添加

然后我在这里加了个测试代码,Localize textLocalize 是获取的TMP

 //声明要多加
using I2.Loc;
using TMPro;public Button btn_ch, btn_en;
public TextMeshPro text;
//获取的TMPpublic Localize textLocalize;//切换英文void ChangeLanguageEnglish(){if (LocalizationManager.HasLanguage("Chinese")){LocalizationManager.CurrentLanguage = "English";}}//切换中文void ChangeLanguageChinese(){if (LocalizationManager.HasLanguage("English")){LocalizationManager.CurrentLanguage = "Chinese";}}// Start is called before the first frame updatevoid Start(){btn_ch.onClick.AddListener(ChangeLanguageChinese);btn_en.onClick.AddListener(ChangeLanguageEnglish);//括号里填的是你文字表中的keytextLocalize.SetTerm("语言");}

这样就完成了


http://www.ppmy.cn/server/120526.html

相关文章

远程Linux网络连接( Linux 网络操作系统 04)

接下来我们准备开始进入Linux操作系统的第二个模块的学习,不过在学习之前我们需要对如下进行简单的配置,通过外接辅助软件MobaXterm来进行虚拟操作系统的访问。接下来的课程我们会一直在MobaXterm中进行命令和相关知识的学习。 一、准备阶段 1.1 软件 …

【docker】命令之容器操作

一、前言 在上篇博客介绍了关于如何从应用市场,下载镜像后,对镜像的相关操作了。这篇博客呢我们就要讲解我们把镜像下载下来了,启动这个镜像后,就是我们说的容器了,那么容器的具体操作又有那些呢? 二、容器…

Spring 源码解读:实现自定义注解处理器

引言 注解在现代 Java 编程中扮演了至关重要的角色。无论是简化代码、增强可读性,还是将元数据与业务逻辑分离,注解都让我们的代码更加优雅和灵活。Spring 中大量使用了注解,特别是像 Autowired、Component 等注解,这些背后依赖的…

【微信小程序】连续拍照功能实现

前言: 最近在使用uniapp开发微信小程序,遇到这样一个需求,用户想要连续拍照,拍完之后可以删除照片,保留自己想要的照片,然后上传到服务器上。由于原生的方法只能一个个拍照上传,所以只能自己通过…

ETCD学习使用

一、介绍 etcd(分布式键值存储)是一个开源的分布式系统工具,用于可靠地存储和提供键值对数据。etcd 通常通过 HTTP 或 gRPC 提供 API,允许应用程序通过简单的接口与其交互。由于其可靠性和稳定性,etcd 在构建可扩展、分…

Android 系统WIFI AP模式

在 Android 系统中,AP 模式(Access Point Mode,热点模式)允许设备作为 Wi-Fi 热点,其他设备可以通过连接这个热点进行互联网访问或局域网通信。要让 Android 设备工作在 AP 模式,你可以通过应用层的 API 控…

Redis面试真题总结(三)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 什么是缓存雪崩?该如何解决? 缓存雪崩是指…

前端vue-父传子

父传子的话是在components中创建一个子组件MyTest.vue&#xff0c;并且在父组件中先导入(import MyTest from "./components/MyTest")&#xff0c;再注册&#xff08;在expo二default中写上 compnents:{MyTest}&#xff09;&#xff0c;再使用标签&#xff08;<My…