Dictionary 如何替换一本词典';s缺少另一本词典的内容吗?
所以,我在为一个游戏做翻译,我有不同的字典。如果一种语言中没有翻译,我想将其设置为英语翻译。我尝试过的每一种结合字典的方法都以难以置信的低效收场 下面是一些简化的示例Dictionary 如何替换一本词典';s缺少另一本词典的内容吗?,dictionary,lua,Dictionary,Lua,所以,我在为一个游戏做翻译,我有不同的字典。如果一种语言中没有翻译,我想将其设置为英语翻译。我尝试过的每一种结合字典的方法都以难以置信的低效收场 下面是一些简化的示例 local translation-sr = { Buttons = { Confirm = "Потврди"; Submit = "Унеси"; }; Countries = { Bloxell = "Блоксел"; USA = "С
local translation-sr = {
Buttons = {
Confirm = "Потврди";
Submit = "Унеси";
};
Countries = {
Bloxell = "Блоксел";
USA = "Сједињене Америчке Државе";
};
Firearms = {
Manufacturers = {
GenMot = "Џенерални Мотори";
Intratec = "Интратек";
TF = "ТФ Оружје";
};
};
};
local translation-en = {
Buttons = {
Confirm = "Confirm";
Purchase = "Purchase";
Submit = "Submit";
};
Countries = {
Bloxell = "Bloxell";
USA = "United States";
};
Firearms = {
Manufacturers = {
GenMot = "General Motors";
Intratec = "Intratec ";
TF = "TF Armaments";
};
};
Languages = {
Belarusian = "Belarusian";
English = "English";
French = "French";
German = "German";
Italian = "Italian";
Russian = "Russian";
Serbian = "Serbian";
Spanish = "Spanish";
};
};
我猜你想做这样的事
setmetatable(translation_sr.Buttons,{__index=translation_en.Buttons})
对于所有叶子表。如果只有几个子表,您可以手动完成此操作。我认为您应该使用元表来完成所需的操作 我假设您将始终使用英语默认单词进行索引。如果是这样,您可以执行以下操作
local function default(t,k)
return k
end
local translation_sr = {
Button = setmetatable({
Confirm = "Потврди",
Submit = "Унеси",
},
{ __index = default }),
Countries = setmetatable({
["Bloxell"] = "Блоксел",
["United States"]= "Сједињене Америчке Државе",
},
{ __index = default }),
Firearms = {
Manufacturers = setmetatable({
["General Motors"] = "Џенерални Мотори",
["Intratec"] = "Интратек",
["TF Armaments"] = "ТФ Оружје",
},
{ __index = default }),
},
}
此函数只返回表中不存在的键
local function default(t,k)
return k
end
假设此键为英语单词,您将使用
“Purchase”
的返回值作为默认值,您将从翻译中获得“Purchase”
。这种方法不需要翻译。\u en
表“我尝试过的每一种结合字典的方法都以难以置信的低效而告终。”它需要多“高效”呢?它毕竟是一种脚本语言。我的意思是它根本不是万能的,如果我添加一个新的层,我不想不断更新代码。好的,但是分层代码在哪里?你只给我们看了一堆桌子;你如何使用它们?如何用默认表中的值替换非默认表中不存在的值?这就是我想弄明白的,我过去的方法非常愚蠢。这段代码无法编译。尝试translation\u sr
而不是translation sr
。