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年软考的朋友们,一定要提前关注官方发布的考试安排。 本文将详细介绍软考报考的整个流程。准备报考的朋友们,阅读本文就足够啦!软考的报考流程大致…

如何系列 如何确保Kafka消息可靠性/防止消息丢失

文章目录 ProducerBrokerConsumer流程 从Kafka架构来看,理论上仍有消息丢失的可能性,但实际发生的概率极低,只有在所有副本的机器都宕机时才会丢失。 当所有代理(broker)都确认消息时,这并不意味着消息已经…

【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 等更多芯片架构支持&…

安装docker版rabbitmq 3.12

本文介绍在Ubuntu22中安装docker版rabbitmq 3.12。 一、拉取镜像 docker pull rabbitmq:3.12.14-management二、创建数据目录和docker-compose文件 创建目录: cd /root mkdir rabbitmq-docker cd rabbitmq-docker mkdir data chmod 777 data创建docker-compose配…

超声波气象站的工作原理

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

力扣刷题总结 -- 数组29

85. 解码异或之后的数组(简单) 题目要求: 未知 整数数组arr由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] arr[i] XOR arr[i 1] 。例如,arr [1,0,2,1] 经编码后得…

【Yarn锁文件全解析】深入理解yarn.lock与版本控制的艺术

标题:【Yarn锁文件全解析】深入理解yarn.lock与版本控制的艺术 Yarn是一个现代的JavaScript包管理工具,旨在提供更快、更安全、更可靠的依赖管理。yarn.lock文件是Yarn工作流程中的一个关键组件,用于锁定项目依赖的确切版本。本文将详细探讨…

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

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

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

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

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

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

工程师 - 什么是SMP

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

每天一个数据分析题(四百零五)- 因子分析

因子分析是一种经典的统计分析方法,关于因子分析下列说法错误的是( )。 A. 因子分析是一种数据简化的技术 B. 最大似然法是因子载荷矩阵的估计方法之一 C. 因子旋转时采用最大方差旋转是一种正交旋转 D. 因子分析的假设中没有规定特殊因子…

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

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

在 Windows PowerShell 中模拟 Unix/Linux 的 touch 命令

在 Unix 或 Linux 系统中,touch 命令被广泛用于创建新文件或更新现有文件的时间戳。不过,在 Windows 系统中,尤其是在 PowerShell 环境下,并没有内置的 touch 命令。这篇博客将指导你如何在 Windows PowerShell 中模拟 touch 命令…