(ComputerCraft) (minecraft version 1.7.10) (question) 制作语言文件阅读器

Posted

技术标签:

【中文标题】(ComputerCraft) (minecraft version 1.7.10) (question) 制作语言文件阅读器【英文标题】:(ComputerCraft) (minecraft version 1.7.10) (question) Make a language file reader 【发布时间】:2022-01-18 20:30:47 【问题描述】:

我想为我的操作系统制作一个语言阅读器,但找不到任何对我有帮助的东西。 我想将列表放入我的其他脚本中。 下面是de-de语言文件(位置:/os/bin/):

    de = 
    Menu = "Menü",
    Shutdown = "Ausschalten",
    MenuLength = 4,
    ShutdownLength = 11
    

谁能帮帮我?

【问题讨论】:

您能详细说明一下吗?如果选择了语言 de,您希望将此列表放入您的其他脚本中吗? 是的,我想这样做,但我希望它在不同的脚本中,以便您可以添加自定义脚本 【参考方案1】:

gsub() 字符串函数/方法可以用您的翻译表做到这一点。 您只需要使用您的语言表即可。 示例...

# /usr/bin/lua
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio
> de = 
>>     Menu = "Menü",
>>     Shutdown = "Ausschalten",
>>     MenuLength = 4,
>>     ShutdownLength = 11
>>     
> language = de
> print(('Menu Shutdown'):gsub('(%g+)', language))
Menü Ausschalten    2

如果您必须使用 Lua 5.1,请使用 %w...

# /bin/lua
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> de = 
>>     Menu = "Menü",
>>     Shutdown = "Ausschalten",
>>     MenuLength = 4,
>>     ShutdownLength = 11
>>     
> language = de
> print(('Menu Shutdown'):gsub('(%w+)', language))
Menü Ausschalten    2

长度可以用len()函数/方法来测量...

> print(('Shutdown'):gsub('(%w+)', language):len())
11
> print(('Menu'):gsub('(%w+)', language):len())
5

正如您在 Lua 中看到的那样,变音符号 ü 的测量值不同。

要包含您的 de-de.lua,我建议 dofile() 使用您的特定路径加载它...

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> dofile('/os/bin/de-de.lua') -- But read comment about security
> print(de['Menu'])
Menü

尝试将带有德语变音符号的特殊单词转换为其字节表示。 并将字节放入您的翻译表中......

$ lua
Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio
> print(('Menü'):byte(1,-1))
77  101 110 195 188
> print('\77\101\110\195\188')
Menü
> de = Menu = '\77\101\110\195\188'
> print(('Menu'):gsub('%g+', de))
Menü    1

...或者对于 Lua 5.1...

$ /bin/lua
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> print(('Menü'):byte(1, -1))
77  101 110 195 188
> print('\77\101\110\195\188')
Menü
> de = Menu = '\77\101\110\195\188'
> print(('Menu'):gsub('%w+', de))
Menü    1

你也可以混合它。 以下是以下字节:üäößÜÄÖ

> print(('üäößÜÄÖ'):byte(1, -1))
195 188 195 164 195 182 195 159 195 156 195 132 195 150
> de = Menu = 'Men\195\188', Umlaute = '\195\188\195\164\195\182\195\159\195\156\195\132\195\150'
> print(('Menu Umlaute'):gsub('%w+', de))
Menü üäößÜÄÖ    2

【讨论】:

我收到一个错误:".temp:1: bios:14: [string "de-de"]:1: unexpected symbol" 并且当我尝试编辑 de-de 文件时,我得到了这个错误:“de = Menu = window:94: Arguments must be the same length” 我试过 print(de['Menu']) 测试 对于编码,如果有帮助,我会使用 Visual Studio Code 你的de文件叫什么名字? - de-dede-de.lua? 名字是de-de 当我在另一个问题中推荐 dofile 时,出于“安全原因”,我得到了一些不喜欢 :) 或者,您可以在此处使用 Lua 反序列化器,它以更安全的方式执行相同的操作: computercraft.info/wiki/Textutils.unserialize

以上是关于(ComputerCraft) (minecraft version 1.7.10) (question) 制作语言文件阅读器的主要内容,如果未能解决你的问题,请参考以下文章

无法杀死进程(源自docker容器)

Lua“尝试索引?(一个零值)

我无法将 javascript 文件应用到 Wordpress。我如何将脚本排入队列?

我的世界 Mac 显示需要安装旧Java SE 6运行环境才能打开“Mincraft”