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的文档设计确实很棒,细节处理得非常到位。不过,老实说,那些示例对于刚接触的且想要实现更多功能的人来说,可能会让人晕头转向(当然,我老版用了很长时间而且有改模板的经验,不是很存在这些问题)。如果能有官方视频教程来辅助理解,那就更完美了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考的报名详细流程

2024年软考的考试时间已经公布,分别为5月25日至28日和11月9日至12日。准备参加2024年软考的朋友们,一定要提前关注官方发布的考试安排。 本文将详细介绍软考报考的整个流程。准备报考的朋友们,阅读本文就足够啦!软考的报考流程大致…

【CT】LeetCode手撕—1143. 最长公共子序列

目录 题目1- 思路2- 实现⭐1143. 最长公共子序列——题解思路 3- ACM 实现 题目 原题连接:1143. 最长公共子序列 1- 思路 模式识别:最长公共子序列——> 动规五部曲 2- 实现 ⭐1143. 最长公共子序列——题解思路 class Solution {public int longe…

2024上半年网络工程师考试《应用技术》试题一

阅读以下说明,回答问题。 【说明】 MPLS基于(1)进行转发,进行MPLS标签交换和报文转发的网络设备称为(2),构成MPLS域(MPSDomain)。位于MPLS域边缘、连接其他网络的LSR称为(3),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时&#xf…

LLM4Decompile——专门用于反编译的大规模语言模型

概述 论文地址:https://arxiv.org/abs/2403.05286 反编译是一种将已编译的机器语言或字节码转换回原始高级编程语言的技术。该技术用于分析软件的内部工作原理,尤其是在没有源代码的情况下;Ghidra 和 IDA Pro 等专用工具已经开发出来&#…

等保2.0 实施方案

一、引言 随着信息技术的广泛应用,网络安全问题日益突出,为确保信息系统安全、稳定、可靠运行,保障国家安全、公共利益和个人信息安全,根据《网络安全法》及《信息安全技术 网络安全等级保护基本要求》(等保2.0&#x…

实验七 SQL数据更新和视图

题目 (1)向商品类别表category中插入一条记录(801,‘座椅套’,‘各种品牌的汽车座套’) (2)向商品表product中插入一条记录:商品编号80101,商品名称“四季通…

【HDC.2024】探索无限可能:华为云区块链+X,创新融合新篇章

6月23日,华为开发者大会2024(HDC 2024)期间, “「区块链X」多元行业场景下的创新应用”分论坛在东莞松山湖举行,区块链技术再次成为焦点。本次论坛以"区块链X"为主题,集结了行业专家、技术领袖、…

【Linux】虚拟机安装 openEuler 24.03 X86_64

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构,逐步扩展 PowerPC 等更多芯片架构支持&…

超声波气象站的工作原理

TH-CQX5超声波气象站中的超声波技术是其核心工作原理之一,以下是关于超声波气象站中超声波的详细解释:超声波是一种频率高于人耳能听到的声音频率范围的声波,通常指频率在20kHz以上的声波。超声波具有较短的波长和强的穿透能力,能…

手把手家教你进行ChatGPT私有化部署

背景 随着AI技术的不断成熟,加上ChatGPT如火如荼的发布新版本迭代更新,人工智能的热度也升温到史无前例的高度。 我们有理由相信,现在身边还不愿主动去接触这项技术,深入了解的小伙伴,在不久的将来,一定会…

二手物品交易小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,商品信息管理,论坛管理,收货地址管理,基础数据管理 微信端账号功能包括:系统首页,商品信息&…

晨持绪科技:抖音店铺运营思路

在抖音这个充满活力与创意的平台上,店铺运营不仅仅是一种商业行为,它更是一种艺术的展示。如同画家在画布上勾勒出色彩斑斓的画面,抖音店铺的运营者们也在平台上精心策划着每一个细节,以吸引更多的目光和流量。 内容创作。内容是吸…

工程师 - 什么是SMP

什么是 SMP(对称多处理)? What is SMP (symmetric multiprocessing)? 对称多处理(SMP,symmetric multiprocessing)是由多个处理器完成的计算机处理过程,这些处理器共享一个操作系统&#xff0…

新加坡博士申请|中国社科院-新加坡社科大学联合培养工商管理博士

新加坡博士申请|中国社科院-新加坡社科大学联合培养工商管理博士 【项目名称】中国社会科学院大学与新加坡新跃社科大学工商管理博士项目 【学制】最短3年,最长不超过7年 【学位证书】新加坡新跃社科大学工商管理博士学位 【招生对象】企业高管、咨询顾问及其他有…

我在高职教STM32——时钟系统与延时控制(2)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就…

WPS中制作甘特图的详细教程

网上没几个详细说怎么在WPS中制作甘特图的,我自己整理了一下详细教程,最终效果如下图所示: 1.写好需要展示的项目相关信息,如下图所示: #####这个进度的百分比渐变效果这样设置就行了 2.现在我们需要计算已用时间和剩…

docker安装ElasticSearchKibana

本文参考以下两篇文章 ✅ElasticSearch&Kibana 部署 云效 Thoughts 企业级知识库 (aliyun.com) docker安装ElasticSearch&Kibana - 飞书 安装elasticsearch 使用docker下载es: docker pull elasticsearch:8.13.0 挂载配置 创建挂在文件目录 mkdir…

AI大模型:解锁未来职业竞争力的金钥匙

AI元年:大模型的革新力量 随着ChatGPT的震撼登场,2023年被标记为AI元年,大模型以其前所未有的影响力,重塑我们的日常生活和工作方式。从日常的问答对话到复杂的编程辅助,乃至创意图像生成,AI大模型展现出超…

嵌入式Linux系统编程 — 6.4 信号集

目录​​​​​​​ 1 信号集概念 2 sigemptyset、sigfillset初始化信号集 3 sigaddset、sigdelset向信号集中添加/删除信号 4 sigismember函数测试信号是否在信号集中 1 信号集概念 在Linux系统中,信号集(signal set)用于表示一组信号…

对标GPT-4o!不锁区、支持手机、免费使用,Moshi来啦!

7月4日凌晨,法国知名开源AI研究实验室Kyutai在官网发布了,具备看、听、说多模态大模型——Moshi。 Moshi功能与OpenAI在5月14日展示的最新模型GPT-4o差不多,可以听取人的语音提问后进行实时推理回答内容。但GPT-4o的语音模式要在秋天才能全面…