|
|
| 第1行: |
第1行: |
| | local Vanilla = require("模块:GiftsByItem") |
| local p = {} | | local p = {} |
| local predefinedOrder = {
| |
| "阿比盖尔", "亚历克斯", "安迪", "苹果", "卡洛琳", "克莱尔", "克林特",
| |
| "德米特里厄斯", "矮人", "艾利欧特", "艾米丽", "艾芙琳", "乔治",
| |
| "冈瑟", "格斯", "海莉", "哈维", "仆从", "贾斯", "乔迪", "肯特",
| |
| "科罗布斯", "兰斯", "莉亚", "雷欧", "刘易斯", "莱纳斯", "马格努斯",
| |
| "马龙", "玛妮", "马丁", "玛鲁", "摩根", "摩根", "莫里斯", "奥利维亚",
| |
| "潘姆", "潘妮", "皮埃尔", "罗宾", "山姆", "桑迪", "斯嘉丽",
| |
| "塞巴斯蒂安", "谢恩", "索菲娅", "苏珊", "维克多", "文森特", "威利"
| |
|
| |
|
| | -- SVE 新增人物 |
| | local newVillagers = { |
| | ["Lance"] = "兰斯", ["Magnus"] = "马格努斯", ["Marlon"] = "马龙", |
| | ["Martin"] = "马丁", ["Morgan"] = "摩根", ["Morris"] = "莫里斯", |
| | ["Olivia"] = "奥利维亚", ["Andy"] = "安迪", ["Scarlett"] = "斯嘉丽", |
| | ["Sophia"] = "索菲娅", ["Susan"] = "苏珊", ["Victor"] = "维克多", |
| | ["Henchman"] = "仆从", ["Claire"] = "克莱尔", ["Gunther"] = "冈瑟", |
| | ["Apples"] = "苹果" |
| } | | } |
|
| |
|
| --tssve = translate & sort for sve
| | local orderAdditions = { |
| function p.tssve(frame)
| | "索菲娅", "维克多", "克莱尔", "马丁", "安迪", "苏珊", "奥利维亚", "兰斯", "斯嘉丽", "莫里斯", "马龙", "冈瑟", "仆从", "马格努斯", "摩根", "苹果" |
| local villagerlist = frame.args[1]
| | } |
|
| |
|
| if villagerlist ~= nil then
| | -- 翻译映射表合并 |
|
| | local function createTranslationMap() |
| local vtable = {}
| | local combined = {} |
| local villagers = mw.text.split(villagerlist, ",", true)
| | -- 原版翻译 |
| for i = 1, #villagers do
| | for k, v in pairs(Vanilla.translation) do |
| local v = mw.text.trim(villagers[i])
| | combined[k] = v |
| if v ~= "" then
| | end |
| table.insert(vtable, v)
| | -- SVE 翻译 |
| end
| | for k, v in pairs(newVillagers) do |
| end
| | combined[k] = v |
|
| | end |
| --remove duplicate entries
| | return combined |
| local dupes = {}
| | end |
| local villagertable = {}
| |
| for i = 1, #vtable do
| |
| if not dupes[vtable[i]] then
| |
| table.insert(villagertable, vtable[i])
| |
| dupes[vtable[i]] = true
| |
| end
| |
| end
| |
| | |
| table.sort(villagertable)
| |
|
| |
| for k,v in pairs(villagertable) do
| |
| if v == "Alex" then villagertable[k] = "亚历克斯" end
| |
| if v == "Elliott" then villagertable[k] = "艾利欧特" end
| |
| if v == "Harvey" then villagertable[k] = "哈维" end
| |
| if v == "Sam" then villagertable[k] = "山姆" end
| |
| if v == "Sebastian" then villagertable[k] = "塞巴斯蒂安" end
| |
| if v == "Shane" then villagertable[k] = "谢恩" end
| |
| if v == "Abigail" then villagertable[k] = "阿比盖尔" end
| |
| if v == "Emily" then villagertable[k] = "艾米丽" end
| |
| if v == "Haley" then villagertable[k] = "海莉" end
| |
| if v == "Leah" then villagertable[k] = "莉亚" end
| |
| if v == "Maru" then villagertable[k] = "玛鲁" end
| |
| if v == "Penny" then villagertable[k] = "潘妮" end
| |
| if v == "Caroline" then villagertable[k] = "卡洛琳" end
| |
| if v == "Clint" then villagertable[k] = "克林特" end
| |
| if v == "Demetrius" then villagertable[k] = "德米特里厄斯" end
| |
| if v == "Dwarf" then villagertable[k] = "矮人" end
| |
| if v == "Evelyn" then villagertable[k] = "艾芙琳" end
| |
| if v == "George" then villagertable[k] = "乔治" end
| |
| if v == "Gus" then villagertable[k] = "格斯" end
| |
| if v == "Jas" then villagertable[k] = "贾斯" end
| |
| if v == "Jodi" then villagertable[k] = "乔迪" end
| |
| if v == "Kent" then villagertable[k] = "肯特" end
| |
| if v == "Krobus" then villagertable[k] = "科罗布斯" end
| |
| if v == "Leo" then villagertable[k] = "雷欧" end
| |
| if v == "Lewis" then villagertable[k] = "刘易斯" end
| |
| if v == "Linus" then villagertable[k] = "莱纳斯" end
| |
| if v == "Marnie" then villagertable[k] = "玛妮" end
| |
| if v == "Pam" then villagertable[k] = "潘姆" end
| |
| if v == "Pierre" then villagertable[k] = "皮埃尔" end
| |
| if v == "Robin" then villagertable[k] = "罗宾" end
| |
| if v == "Sandy" then villagertable[k] = "桑迪" end
| |
| if v == "Vincent" then villagertable[k] = "文森特" end
| |
| if v == "Willy" then villagertable[k] = "威利" end
| |
| -- new in sve
| |
| if v == "Lance" then villagertable[k] = "兰斯" end
| |
| if v == "Magnus" then villagertable[k] = "马格努斯" end
| |
| if v == "Marlon" then villagertable[k] = "马龙" end
| |
| if v == "Martin" then villagertable[k] = "马丁" end
| |
| if v == "Morgan" then villagertable[k] = "摩根" end
| |
| if v == "Morris" then villagertable[k] = "莫里斯" end
| |
| if v == "Olivia" then villagertable[k] = "奥利维亚" end
| |
| if v == "Andy" then villagertable[k] = "安迪" end
| |
| if v == "Scarlett" then villagertable[k] = "斯嘉丽" end
| |
| if v == "Sophia" then villagertable[k] = "索菲娅" end
| |
| if v == "Susan" then villagertable[k] = "苏珊" end
| |
| if v == "Victor" then villagertable[k] = "维克多" end
| |
| if v == "Henchman" then villagertable[k] = "仆从" end
| |
| if v == "Claire" then villagertable[k] = "克莱尔" end
| |
| if v == "Gunther" then villagertable[k] = "冈瑟" end
| |
| if v == "Morgan" then villagertable[k] = "摩根" end
| |
| if v == "Apples" then villagertable[k] = "苹果" end
| |
|
| |
| end
| |
|
| |
|
| -- Custom sort
| | -- 排序顺序合并 |
| table.sort(villagertable, function(a, b)
| | local function createNewOrder() |
| local indexA = 0
| | local combined = {} |
| local indexB = 0
| | -- 原版顺序 |
| for i, name in ipairs(predefinedOrder) do
| | for _, name in ipairs(Vanilla.predefinedOrder) do |
| if a == name then indexA = i end
| | table.insert(combined, name) |
| if b == name then indexB = i end
| | end |
| end
| | -- SVE 顺序 |
| return indexA < indexB
| | for _, name in ipairs(orderAdditions) do |
| end)
| | table.insert(combined, name) |
| | end |
| | return combined |
| | end |
|
| |
|
| | -- 创建 SVE 的数据 |
| | local newTranslationMap = createTranslationMap() |
| | local newOrder = createNewOrder() |
|
| |
|
| --put the table "villagertable" back into a string blob
| | -- 生成 SVE 的反向映射和索引 |
| --table.concat( table, sep, i, j ) DOES NOT WORK
| | local sveOriginal = {} |
| villagerlist = ""
| | for en, zh in pairs(newTranslationMap) do |
| for i = 1, (#villagertable-1) do
| | sveOriginal[zh] = en |
| villagerlist = villagerlist .. '<span class="no-wrap">[[File:' .. villagertable[i] .. ' Icon.png|24px|link=' .. villagertable[i] .. ']] [[SVE:' .. villagertable[i] .. '|' .. villagertable[i] .. ']]</span> • '
| | end |
| end
| |
| --We don't want a trailing bullet at the end of the list
| |
| villagerlist = villagerlist .. '<span class="no-wrap">[[File:' .. villagertable[#villagertable] .. ' Icon.png|24px|link=' .. villagertable[#villagertable] .. ']] [[SVE:' .. villagertable[#villagertable] .. '|' .. villagertable[#villagertable] .. ']]</span>'
| |
|
| |
|
| | local newOrderIndex = {} |
| | for i, name in ipairs(newOrder) do |
| | newOrderIndex[name] = i |
| | end |
|
| |
|
| --Now that we've sorted by the native language,
| | -- SVE 的主函数 |
| --fix icons whose names are all in English
| | function p.tssve(frame) |
| --Also add the é to Leo for French
| | local villagerlist = frame.args[1] |
| --so I don't have to write an entire substitution table for accented chars
| | return Vanilla.processVillagers(villagerlist, newTranslationMap, newOrderIndex, sveOriginal, "SVE") |
| villagerlist = string.gsub(villagerlist, "亚历克斯 Icon", "Alex Icon")
| | end |
| villagerlist = string.gsub(villagerlist, "艾利欧特 Icon", "Elliott Icon")
| |
| villagerlist = string.gsub(villagerlist, "哈维 Icon", "Harvey Icon")
| |
| villagerlist = string.gsub(villagerlist, "山姆 Icon", "Sam Icon")
| |
| villagerlist = string.gsub(villagerlist, "塞巴斯蒂安 Icon", "Sebastian Icon")
| |
| villagerlist = string.gsub(villagerlist, "谢恩 Icon", " Shane Icon")
| |
| villagerlist = string.gsub(villagerlist, "阿比盖尔 Icon", "Abigail Icon")
| |
| villagerlist = string.gsub(villagerlist, "艾米丽 Icon", "Emily Icon")
| |
| villagerlist = string.gsub(villagerlist, "海莉 Icon", "Haley Icon")
| |
| villagerlist = string.gsub(villagerlist, "莉亚 Icon", "Leah Icon")
| |
| villagerlist = string.gsub(villagerlist, "玛鲁 Icon", "Maru Icon")
| |
| villagerlist = string.gsub(villagerlist, "潘妮 Icon", "Penny Icon")
| |
| villagerlist = string.gsub(villagerlist, "卡洛琳 Icon", "Caroline Icon")
| |
| villagerlist = string.gsub(villagerlist, "克林特 Icon", "Clint Icon")
| |
| villagerlist = string.gsub(villagerlist, "德米特里厄斯 Icon", "Demetrius Icon")
| |
| villagerlist = string.gsub(villagerlist, "矮人 Icon", "Dwarf Icon")
| |
| villagerlist = string.gsub(villagerlist, "艾芙琳 Icon", "Evelyn Icon")
| |
| villagerlist = string.gsub(villagerlist, "乔治 Icon", "George Icon")
| |
| villagerlist = string.gsub(villagerlist, "格斯 Icon", "Gus Icon")
| |
| villagerlist = string.gsub(villagerlist, "贾斯 Icon", "Jas Icon")
| |
| villagerlist = string.gsub(villagerlist, "乔迪 Icon", "Jodi Icon")
| |
| villagerlist = string.gsub(villagerlist, "肯特 Icon", "Kent Icon")
| |
| villagerlist = string.gsub(villagerlist, "科罗布斯 Icon", "Krobus Icon")
| |
| villagerlist = string.gsub(villagerlist, "雷欧 Icon", "Leo Icon")
| |
| villagerlist = string.gsub(villagerlist, "刘易斯 Icon", "Lewis Icon")
| |
| villagerlist = string.gsub(villagerlist, "莱纳斯 Icon", "Linus Icon")
| |
| villagerlist = string.gsub(villagerlist, "玛妮 Icon", "Marnie Icon")
| |
| villagerlist = string.gsub(villagerlist, "潘姆 Icon", "Pam Icon")
| |
| villagerlist = string.gsub(villagerlist, "皮埃尔 Icon", "Pierre Icon")
| |
| villagerlist = string.gsub(villagerlist, "罗宾 Icon", "Robin Icon")
| |
| villagerlist = string.gsub(villagerlist, "桑迪 Icon", "Sandy Icon")
| |
| villagerlist = string.gsub(villagerlist, "文森特 Icon", "Vincent Icon")
| |
| villagerlist = string.gsub(villagerlist, "威利 Icon", "Willy Icon")
| |
| villagerlist = string.gsub(villagerlist, "法师 Icon", "Wizard Icon")
| |
| villagerlist = string.gsub(villagerlist, "兰斯 Icon", "Lance Icon")
| |
| villagerlist = string.gsub(villagerlist, "马格努斯 Icon", "Magnus Icon")
| |
| villagerlist = string.gsub(villagerlist, "马龙 Icon", "Marlon Icon")
| |
| villagerlist = string.gsub(villagerlist, "马丁 Icon", "Martin Icon")
| |
| villagerlist = string.gsub(villagerlist, "摩根 Icon", "Morgan Icon")
| |
| villagerlist = string.gsub(villagerlist, "莫里斯 Icon", "Morris Icon")
| |
| villagerlist = string.gsub(villagerlist, "奥利维亚 Icon", "Olivia Icon")
| |
| villagerlist = string.gsub(villagerlist, "安迪 Icon", "Andy Icon")
| |
| villagerlist = string.gsub(villagerlist, "斯嘉丽 Icon", "Scarlett Icon")
| |
| villagerlist = string.gsub(villagerlist, "索菲娅 Icon", "Sophia Icon")
| |
| villagerlist = string.gsub(villagerlist, "苏珊 Icon", "Susan Icon")
| |
| villagerlist = string.gsub(villagerlist, "维克多 Icon", "Victor Icon")
| |
| villagerlist = string.gsub(villagerlist, "仆从 Icon", "Henchman Icon")
| |
| villagerlist = string.gsub(villagerlist, "克莱尔 Icon", "Claire Icon")
| |
| villagerlist = string.gsub(villagerlist, "冈瑟 Icon", "Gunther Icon")
| |
| villagerlist = string.gsub(villagerlist, "摩根 Icon", "Morgan Icon")
| |
| villagerlist = string.gsub(villagerlist, "苹果 Icon", "Apples Icon")
| |
| | |
|
| |
|
| return villagerlist
| | -- 导出原版模块的函数供其他地方使用 |
| end --if villagerlist == nil, then do nothing but return p
| | p.base = Vanilla |
| end --end function p.tssve()
| |
|
| |
|
| return p | | return p |