Files
coa-bartender/locale/Babelfish.lua
T

137 lines
3.4 KiB
Lua

#!/usr/local/bin/lua
-- CONFIG --
--[[
The name of the AceLocale-3.0 Category, as being used in :NewLocale and :GetLocale
]]
local localeName = "Bartender4"
--[[
Prefix to all files if this script is run from a subdir, for example
]]
local filePrefix = "../"
--[[
List of all files to parse
]]
local files = {
"ActionBar.lua",
"ActionBars.lua",
"ActionBarStates.lua",
"ActionButton.lua",
"BagBar.lua",
"Bar.lua",
"Bartender4.lua",
"ButtonBar.lua",
"MicroMenu.lua",
"PetBar.lua",
"PetButton.lua",
"RepXPBar.lua",
"StanceBar.lua",
"VehicleBar.lua",
--
"Options/ActionBar.lua",
"Options/ActionBarStates.lua",
"Options/BagBar.lua",
"Options/Bar.lua",
"Options/ButtonBar.lua",
"Options/MicroMenu.lua",
"Options/PetBar.lua",
"Options/RepXPBar.lua",
"Options/StanceBar.lua",
"Options/Options.lua",
"Options/VehicleBar.lua",
}
--[[
The Language your addon was originally written in
]]
local baseLocale = "enUS"
--[[
The supported Languages
-- DO NOT INCLUDE the base locale here!
]]
local locale = {
"deDE",
"frFR",
"esES",
"esMX",
"zhCN",
"zhTW",
"koKR",
"ruRU"
}
-- CODE --
local strings = {}
-- extract data from specified lua files
for idx,filename in pairs(files) do
local file = io.open(string.format("%s%s", filePrefix or "", filename), "r")
assert(file, "Could not open " .. filename)
local text = file:read("*all")
for match in string.gmatch(text, "L%[\"(.-)\"%]") do
strings[match] = true
end
end
local work = {}
for k,v in pairs(strings) do table.insert(work, k) end
table.sort(work)
local AceLocaleHeader = "local L ="
local BabbleFishHeader = "L = {} -- "
local function replaceHeader(content)
return content:gsub(AceLocaleHeader, BabbleFishHeader):gsub("\\", "\\\\"):gsub("\\\"", "\\\\\"")
end
local localizedStrings = {}
table.insert(locale, baseLocale)
-- load existing data from locale files
for idx, lang in ipairs(locale) do
local file = io.open(lang .. ".lua", "r")
assert(file, "Could not open ".. lang .. ".lua for reading")
local content = file:read("*all")
content = replaceHeader(content)
assert(loadstring(content))()
localizedStrings[lang] = L
file:close()
end
-- Write locale files
for idx, lang in ipairs(locale) do
local file = io.open(lang .. ".lua", "w")
assert(file, "Could not open ".. lang .. ".lua for writing")
file:write("-- Generated by Babelfish script, do not add strings manually, only translate existing strings.\n")
if lang == baseLocale then
file:write("-- This is the base locale; values can be \"true\" so they default to their key, or any string to override that behaviour.\n")
file:write(string.format("local L = LibStub(\"AceLocale-3.0\"):NewLocale(\"%s\", \"%s\", true)\n", localeName, lang))
file:write("\n")
else
file:write("-- Please make sure to save the file as UTF-8, BUT WITHOUT THE UTF-8 BOM HEADER; ¶\n")
file:write(string.format("local L = LibStub(\"AceLocale-3.0\"):NewLocale(\"%s\", \"%s\")\n", localeName, lang))
file:write("if not L then return end\n")
end
file:write("\n")
local L = localizedStrings[lang]
for idx, match in ipairs(work) do
if type(L[match]) == "string" then
file:write(string.format("L[\"%s\"] = \"%s\"\n", match, L[match]))
else
if lang ~= baseLocale then
local value = type(localizedStrings[baseLocale][match]) == "string" and localizedStrings[baseLocale][match] or "true"
file:write(string.format("-- L[\"%s\"] = %s\n", match, value))
else
file:write(string.format("L[\"%s\"] = true\n", match))
end
end
end
file:close()
end