Unity安卓游戏名称多语言本地化

unity开发安卓app的时候,想要实现应用名称本地化,但是PlayerSettings里面只能填写一个Product Name

所以只好借助安卓的方式实现,研究了下其实还是挺方便的,步骤如下:

在unity项目内的Temp文件夹找到unity自动生成的安卓文件(ps:要先发布apk出来才有),会看到如下图

将values文件夹拷贝到Assets/Plugins/Android/res中,如果Plugins下没有相关目录,自己创建下

因为只要本地化应用名称,所以只需要拷贝values文件夹

复制values目录,然后改成对应语言的名称,如现在要适配中文,那么就把目录名称改为values-zh,简体中文就是values-zh-rCN,繁体就改成values-zh-rTW,对应的名称在文章后面有详细的列出来
复制完的目录进去打开strings.xml文件,修改成想要显示的名称即可

unity中的文件目录大概是这样

如果适配了很多语言的话,目录结构就是这样


切记修改strings.xml时把保存编码另存为UTF-8,否则填写中文就会打包错误

解释一下本地化的原理,values里面的strings.xml的app_name字段对应app名称,每种语言以values-xx(xx代表国家代码)的方式保存,如中国就是values-zh,中国台湾就是values-zh-rTW,大陆就是values-zh-rCN,很多国家如果要区分比如英国英语或者美国英语就是values-en-rGB和values-en-rUS,如果只是英语就是values-en(文章末尾会附上Android各国语言values文件格式)
经测试:values的strings.xml里的app_name会被Unity的PlayerSetting的product name覆盖

第二种方式就是使用插件完成:Localized App Name for iOs and Android(不过是要钱的)

附:Android各国语言Values文件夹命名规则
维吾尔文(中国):values-ug-rCN

中文(中国):values-zh-rCN

中文(台湾):values-zh-rTW

中文(香港):values-zh-rHK

英语(美国):values-en-rUS

英语(英国):values-en-rGB

英文(澳大利亚):values-en-rAU

英文(加拿大):values-en-rCA

英文(爱尔兰):values-en-rIE

英文(印度):values-en-rIN

英文(新西兰):values-en-rNZ

英文(新加坡):values-en-rSG

英文(南非):values-en-rZA

阿拉伯文(埃及):values-ar-rEG

阿拉伯文(以色列):values-ar-rIL

保加利亚文: values-bg-rBG

加泰罗尼亚文:values-ca-rES

捷克文:values-cs-rCZ

丹麦文:values-da-rDK

德文(奥地利):values-de-rAT

德文(瑞士):values-de-rCH

德文(德国):values-de-rDE

德文(列支敦士登):values-de-rLI

希腊文:values-el-rGR

西班牙文(西班牙):values-es-rES

西班牙文(美国):values-es-rUS

芬兰文(芬兰):values-fi-rFI

法文(比利时):values-fr-rBE

法文(加拿大):values-fr-rCA

法文(瑞士):values-fr-rCH

法文(法国):values-fr-rFR

希伯来文:values-iw-rIL

印地文:values-hi-rIN

克罗里亚文:values-hr-rHR

匈牙利文:values-hu-rHU

印度尼西亚文:values-in-rID

意大利文(瑞士):values-it-rCH

意大利文(意大利):values-it-rIT

日文:values-ja-rJP

韩文:values-ko-rKR

立陶宛文:valueslt-rLT

拉脱维亚文:values-lv-rLV

挪威博克马尔文:values-nb-rNO

荷兰文(比利时):values-nl-BE

荷兰文(荷兰):values-nl-rNL

波兰文:values-pl-rPL

葡萄牙文(巴西):values-pt-rBR

葡萄牙文(葡萄牙):values-pt-rPT

罗马尼亚文:values-ro-rRO

俄文:values-ru-rRU

斯洛伐克文:values-sk-rSK

斯洛文尼亚文:values-sl-rSI

塞尔维亚文:values-sr-rRS

瑞典文:values-sv-rSE

泰文:values-th-rTH

塔加洛语:values-tl-rPH

土耳其文:values–r-rTR

乌克兰文:values-uk-rUA

越南文:values-vi-rVN
————————————————

以上部分原文链接:https://blog.csdn.net/egostudio/article/details/50961729

PS:按以上步骤,如果是Unity2021,会遇到打包报错: Exception: OBSOLETE - Providing Android resources in Assets/Plugins/Android/res was removed, please move your resources to an AAR or an Android Library. See "AAR plug-ins and Android Libraries" section of the Manual for more details。可参考以下解决办法。

百度了一下是Unity2021不再支持在安卓Build的时候直接存在Android/res文件夹

解决方案最佳是去自己创建aar插件丢进去, 可惜对于我来说过于麻烦.

找到另一种相对简单的解决方案如下:

在Plugins/Android文件夹下创建CustomAndroidResource.androidlib文件夹

把原来Plugins/Android文件夹下的res文件夹移到CustomAndroidResource.androidlib文件夹下

在CustomAndroidResource.androidlib文件夹下创建两个文件,文件名和内容分别如下

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="custom.android.res"
          android:versionCode="1"
          android:versionName="1.0">
</manifest>



project.properties

target=android-9
android.library=true

target=android-9
android.library=true
4.最终如下,重新打包完成

————————————————

此部分原文链接:https://blog.csdn.net/qq_28784217/article/details/128863508

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注