Added script function for finding what needs to be translated.
This commit is contained in:
@@ -4,6 +4,18 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
|
||||
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
||||
________________________________________________________________________________
|
||||
|
||||
2015/02/02
|
||||
----------
|
||||
* [Scripts] find_missing_strings_in_theme_translations function added to
|
||||
_fallback scripts to assist translators in finding what needs to be
|
||||
translated. If you need/want to run it on your them, write a piece of lua
|
||||
like this:
|
||||
find_missing_strings_in_theme_translations("_fallback", "en.ini")
|
||||
The first arg is the folder name of the theme to look at.
|
||||
The second arg is the name of the language that is fully translated. All
|
||||
other languages will be compared to it to decide what is missing or unused.
|
||||
[kyzentun]
|
||||
|
||||
2015/01/31
|
||||
----------
|
||||
* [EditMode] Want more lead in time before recording starts?
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
-- All other languages are compared to the master language to determine what is
|
||||
-- missing and what is unused.
|
||||
-- The list of missing strings for a language is saved to lang_missing.ini,
|
||||
-- where lang is the name of the language.
|
||||
-- The list of unused strings is saved to lang_unused.ini.
|
||||
|
||||
function find_missing_strings_in_theme_translations(theme_name, master_name)
|
||||
local lang_folder= "Themes/"..theme_name.."/Languages/"
|
||||
local master_language= IniFile.ReadFile(lang_folder .. master_name)
|
||||
local other_languages= {}
|
||||
local language_names= FILEMAN:GetDirListing(lang_folder)
|
||||
-- Load all languages.
|
||||
for i, name in ipairs(language_names) do
|
||||
if name ~= master_name and not name:find("missing")
|
||||
and not name:find("unused") then
|
||||
other_languages[#other_languages+1]= {
|
||||
name= name, data= IniFile.ReadFile(lang_folder .. name)}
|
||||
end
|
||||
end
|
||||
-- Find out what is missing from each language.
|
||||
local missing_list= {}
|
||||
local function find_missing_in_section(section_name, section)
|
||||
local function add_str_to_missing(str_name, str_value)
|
||||
for i, other in ipairs(other_languages) do
|
||||
if not other.data[section_name] or
|
||||
not other.data[section_name][str_name] then
|
||||
if not missing_list[other.name] then
|
||||
missing_list[other.name]= {}
|
||||
end
|
||||
if not missing_list[other.name][section_name] then
|
||||
missing_list[other.name][section_name]= {}
|
||||
end
|
||||
missing_list[other.name][section_name][str_name]= str_value
|
||||
end
|
||||
end
|
||||
end
|
||||
foreach_ordered(section, add_str_to_missing)
|
||||
end
|
||||
foreach_ordered(master_language, find_missing_in_section)
|
||||
local function save_missing_data(lang_name, data)
|
||||
IniFile.WriteFile(
|
||||
lang_folder .. lang_name:sub(1, -5) .. "_missing.ini", data)
|
||||
end
|
||||
foreach_ordered(missing_list, save_missing_data)
|
||||
-- Find out what is extra in each language.
|
||||
for i, other in ipairs(other_languages) do
|
||||
local unused= {}
|
||||
local function find_unused_in_section(section_name, section)
|
||||
local function add_str_to_unused(str_name, str_value)
|
||||
if not master_language[section_name] or
|
||||
not master_language[section_name][str_name] then
|
||||
if not unused[section_name] then
|
||||
unused[section_name]= {}
|
||||
end
|
||||
unused[section_name][str_name]= str_value
|
||||
end
|
||||
end
|
||||
foreach_ordered(section, add_str_to_unused)
|
||||
end
|
||||
foreach_ordered(other.data, find_unused_in_section)
|
||||
IniFile.WriteFile(
|
||||
lang_folder .. other.name:sub(1, -5) .. "_unused.ini", unused)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user