您的位置:首页 > 教育 > 锐评 > unity强力配置插件Luban【Next最新版本】(二)本地化

unity强力配置插件Luban【Next最新版本】(二)本地化

2025/6/5 16:05:43 来源:https://blog.csdn.net/qq_41912124/article/details/140174154  浏览:    关键词:unity强力配置插件Luban【Next最新版本】(二)本地化

文章目录

  • 前言
  • 一、快速实现静态本地化
    • 1、表格格式
    • 2、本地化文本
    • 3、修改bat文件
    • 3、打表
  • 二、多语言切换
    • 1、修改bat文件
    • 2、增加本地化管理脚本
    • 3、测试
  • 总结


前言

无需多言,本地化(Localization,简称 L10N)是指将产品、内容或服务适应特定地区或语言的过程。


一、快速实现静态本地化

静态本地化会在导出过程中将text类型由key转换为实际的文本值,适用于已经固定确定本地化语言的场合。使用者不需要再由key转换为实际的文档,使用较为方便。

1、表格格式

将string类型换成text,图中红框圈中部分是有效部分,name1、name2……等指向的是key值,而后面的发型、帽子等起到注释类型,可有可无。

text类型为专用的表达本地化字符串key的类型,可以校验key的有效性。text本质还是string类型,我们根据text标记key值,从而在打不同语言表的时候从本地化文本中提取对应的语言信息。

在这里插入图片描述

2、本地化文本

在Luban\MiniTemplate\Datas\l10n创建一个本地化文本文件texts.json。
在这里插入图片描述
text.json填入key值对应的语言以备本地化打表使用。

[{"key":"name1", "en":"apple1", "zh":"苹果2"},{"key":"name2", "en":"apple2", "zh":"苹果2"},{"key":"name3", "en":"apple3", "zh":"苹果2"},{"key":"name4", "en":"apple4", "zh":"苹果2"},{"key":"name5", "en":"apple5", "zh":"苹果2"},{"key":"name6", "en":"apple6", "zh":"苹果23"},{"key":"name7", "en":"apple7", "zh":"苹果2"},{"key":"name8", "en":"apple", "zh":"苹果2"},{"key":"name9", "en":"apple", "zh":"苹果2"},{"key":"name10", "en":"apple", "zh":"苹果2"},{"key":"name11", "en":"apple", "zh":"苹果2"}
]

3、修改bat文件

set WORKSPACE=.
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=%WORKSPACE%\MiniTemplatedotnet %LUBAN_DLL% ^-t all ^-c cs-simple-json^-d json ^--conf %CONF_ROOT%\luban.conf ^-x outputCodeDir=..\Assets\Scripts\Luban^-x outputDataDir=..\Assets\StreamingAssets/Luban^-x l10n.provider=default ^-x l10n.textFile.path=*@%WORKSPACE%\MiniTemplate\Datas\l10n\texts.json ^-x l10n.textFile.keyFieldName=key^-x l10n.textFile.languageFieldName=en ^-x l10n.convertTextKeyToValue=1pause

3、打表

运行gen.bat文件,输出en陈昆。
在这里插入图片描述

二、多语言切换

我使用的方法很简单,将不同语言的json放到不同的目录文件夹下,分别加载即可。

1、修改bat文件

set WORKSPACE=.
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=%WORKSPACE%\MiniTemplatedotnet %LUBAN_DLL% ^-t all ^-c cs-simple-json^-d json ^--conf %CONF_ROOT%\luban.conf ^-x outputCodeDir=..\Assets\Scripts\Luban^-x outputDataDir=..\Assets\StreamingAssets/Luban/en^-x l10n.provider=default ^-x l10n.textFile.path=*@%WORKSPACE%\MiniTemplate\Datas\l10n\texts.json ^-x l10n.textFile.keyFieldName=key^-x l10n.textFile.languageFieldName=en ^-x l10n.convertTextKeyToValue=1dotnet %LUBAN_DLL% ^-t all ^-c cs-simple-json^-d json ^--conf %CONF_ROOT%\luban.conf ^-x outputCodeDir=..\Assets\Scripts\Luban^-x outputDataDir=..\Assets\StreamingAssets/Luban/zh^-x l10n.provider=default ^-x l10n.textFile.path=*@%WORKSPACE%\MiniTemplate\Datas\l10n\texts.json ^-x l10n.textFile.keyFieldName=key^-x l10n.textFile.languageFieldName=zh ^-x l10n.convertTextKeyToValue=1pause

2、增加本地化管理脚本

根据加载的语言加载相应的配置文件,在游戏开始时调用或者设置中切换即可。

using cfg;
using SimpleJSON;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;public enum Language { en,zh
}public class LubanManager : MonoBehaviour
{public static Tables tables;public static void LoadTables(Language language = Language.zh) {string gameConfDir = Application.streamingAssetsPath + "/Luban" + "/" + language; // 替换为gen.bat中outputDataDir指向的目录tables = new cfg.Tables(file => JSON.Parse(File.ReadAllText($"{gameConfDir}/{file}.json")));}
}

3、测试

LubanManager.LoadTables(Language.zh);
var item = LubanManager.tables.TbItem.DataList;
Debug.Log(item[0].Name);LubanManager.LoadTables(Language.en);
item = LubanManager.tables.TbItem.DataList;
Debug.Log(item[0].Name);

在这里插入图片描述

注意:静态本地化的使用场景通常是在项目的初始界面进行选择和设置。
如果想要实时切换可以使用其她方法,或者直接将texts.json文件复制到目录下,然后再切换时实时切换。


总结

本文简单实现了Luban的本地化功能,旨在抛砖引玉。毕竟我的写法不完美,不一定适合你的项目,但我相信她能够激发您更多的创意和解决方案。
顺便吐槽下,Luban的文档设计确实很棒,细节处理得非常到位。不过,老实说,那些示例对于刚接触的且想要实现更多功能的人来说,可能会让人晕头转向(当然,我老版用了很长时间而且有改模板的经验,不是很存在这些问题)。如果能有官方视频教程来辅助理解,那就更完美了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com