From 90267698f4a8ea1fc8e69c510e45b332e8a360aa Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Fri, 20 Aug 2021 07:19:31 +0200 Subject: [PATCH] Added support for translation .csv files in the user://locale directory --- start.gd | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/start.gd b/start.gd index 45ec5216..70d3ea8a 100644 --- a/start.gd +++ b/start.gd @@ -78,13 +78,46 @@ func _ready(): var dir = Directory.new() if dir.open("user://locale") == OK: + var csv_files : Array = [] dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": - if !dir.current_is_dir() and file_name.get_extension() in [ "po", "translation" ]: - var t : Translation = load("user://locale/"+file_name) - TranslationServer.add_translation(t) + if !dir.current_is_dir(): + match file_name.get_extension(): + "po", "translation": + var t : Translation = load("user://locale/"+file_name) + TranslationServer.add_translation(t) + "csv": + csv_files.push_back(file_name) file_name = dir.get_next() + for fn in csv_files: + var f : File = File.new() + if f.open("user://locale/"+fn, File.READ) == OK: + var l : String = f.get_line() + if l.left(2) == "id": + var separator = l[2] + var languages : Array = l.split(separator) + languages[0] = null + for i in range(1, languages.size()): + if languages[i] == "en" or languages[i] in TranslationServer.get_loaded_locales(): + languages[i] = null + else: + print("Adding translation for "+languages[i]) + var translation : Translation = Translation.new() + translation.locale = languages[i] + languages[i] = translation + TranslationServer.add_translation(translation) + var stringcount : int = 0 + while ! f.eof_reached(): + l = f.get_line() + var strings : Array = l.split(separator) + if strings.size() == languages.size(): + for i in range(1, languages.size()): + if languages[i] != null: + languages[i].add_message(strings[0], strings[i]) + stringcount += 1 + print(stringcount) + f.close() set_process(true) var thread = Thread.new()