From 33d53cb57b68d2ba06b22464b0aa439563c61f45 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Sat, 11 Jun 2022 12:40:19 -0500 Subject: [PATCH] Translation changes --- lib/pages/settings.rb | 12 ++++--- lib/window.rb | 4 +++ locales/en.yml | 11 ++++--- locales/generate.rb | 71 ++++++++++++++++++++++++++++++++++++++++ locales/translations.csv | 61 ++++++++++++++++++++++++++++++++++ 5 files changed, 150 insertions(+), 9 deletions(-) create mode 100644 locales/generate.rb create mode 100644 locales/translations.csv diff --git a/lib/pages/settings.rb b/lib/pages/settings.rb index b3ab02b..cfe068f 100644 --- a/lib/pages/settings.rb +++ b/lib/pages/settings.rb @@ -84,11 +84,11 @@ class W3DHub def language_code(string) case string.downcase.strip - when "german" + when "deutsch" "de" - when "french" + when "français" "fr" - when "spanish" + when "español" "es" else "en" @@ -100,9 +100,11 @@ class W3DHub when "en" "English" when "de" - "German" + "Deutsch" when "fr" - "French" + "Français" + when "es" + "Español" else raise "Unknown language error" end diff --git a/lib/window.rb b/lib/window.rb index 2907b6f..e87471e 100644 --- a/lib/window.rb +++ b/lib/window.rb @@ -34,10 +34,14 @@ class W3DHub end def gain_focus + super + self.update_interval = 1000.0 / 60 end def lose_focus + super + self.update_interval = 1000.0 / 10 end diff --git a/locales/en.yml b/locales/en.yml index e07fa9a..e78b3dc 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -1,9 +1,10 @@ +--- en: - app_name: Cyberarm's Linux Friendly W3D Hub Launcher # W3D Hub Launcher + app_name: Cyberarm's Linux Friendly W3D Hub Launcher app_name_simple: W3D Hub Linux Launcher boot: w3dhub_service_is_down: W3D Hub service is down. - checking_for_updates: Checking for updates... + checking_for_updates: Checking for updates… interface: log_in: Log in register: Register @@ -18,6 +19,8 @@ en: downloads: Downloads play_now: Play Now play: Play + join_now: Join Now + join: Join install_update: Install Update single_player: Single Player import: Import @@ -36,7 +39,7 @@ en: user_data_folder: User Data Folder view_screenshots: View Screenshots read_more: Read More - fetching_news: Fetching news... + fetching_news: Fetching news… channel: Channel version: Version server_browser: @@ -48,7 +51,7 @@ en: max_players: Max Players filters: Filters region: Region - fetching_server_list: Fetching server list... + fetching_server_list: Fetching server list… no_server_selected: No server selected hostname: Hostname current_map: Current Map diff --git a/locales/generate.rb b/locales/generate.rb new file mode 100644 index 0000000..238cd3a --- /dev/null +++ b/locales/generate.rb @@ -0,0 +1,71 @@ +require "csv" +require "yaml" + +PATH = File.expand_path(".", __dir__) +TRANSLATIONS_PATH = "#{PATH}/translations.csv".freeze + +puts "Loading translations.csv [Using ■ as column seperator]" + +TRANSLATIONS = {} +LANGUAGES = [] + +i = 0 +CSV.foreach("#{PATH}/translations.csv", col_sep: "■") do |row| + key = row.delete(row.first) + + if i.zero? + row.map { |language| language.split("-").first.downcase }.each do |language| + TRANSLATIONS[language] ||= {} + LANGUAGES << language + end + else + row.each_with_index do |translation, lang_id| + next unless translation + next if key.empty? || key.nil? + + hash = TRANSLATIONS[LANGUAGES[lang_id]] + + parts = key.split(".") + parts_size = parts.size + key = parts.delete(parts.last) if parts.size > 1 + + if parts_size > 1 + parts.each do |part| + hash = hash[part] ||= {} + end + end + + hash[key] = translation + end + end + + i += 1 +end + +puts "Done." + +puts +puts "Removing existing translations..." +Dir.glob("#{PATH}/*.yml") do |file| + File.delete(file) +end +puts "Done." + +puts +puts "Writing out translations..." + +written_languages = [] +LANGUAGES.each do |language| + translations = TRANSLATIONS[language] + + next unless translations.size.positive? + + yaml = YAML.dump({ language => translations }) + + written_languages << language + File.write("#{PATH}/#{language}.yml", yaml) +end + +puts "Done." +puts +puts "Wrote translations for: #{written_languages.join(', ')}" diff --git a/locales/translations.csv b/locales/translations.csv new file mode 100644 index 0000000..00681d0 --- /dev/null +++ b/locales/translations.csv @@ -0,0 +1,61 @@ +__KEY__■EN-ENGLISH■DE-GERMAN■FR-FRENCH■ES-SPANISH■KO-KOREAN■JA-JAPANESE■ZH-CHINESE +app_name■Cyberarm's Linux Friendly W3D Hub Launcher■■■■■■ +app_name_simple■W3D Hub Linux Launcher■■■■■■ +boot.w3dhub_service_is_down■W3D Hub service is down.■■■■■■ +boot.checking_for_updates■Checking for updates…■■■■■■ +interface.log_in■Log in■■■■■■ +interface.register■Register■■■■■■ +interface.log_out■Log out■■■■■■ +interface.not_logged_in■Not Logged In■■■■■■ +interface.profile■Profile■■■■■■ +interface.games■Games■■■■■■ +interface.server_browser■Server Browser■■■■■■ +interface.servers■Servers■■■■■■ +interface.community■Community■■■■■■ +interface.download_manager■Download Manager■■■■■■ +interface.downloads■Downloads■■■■■■ +interface.play_now■Play Now■■■■■■ +interface.play■Play■■■■■■ +interface.join_now■Join Now■■■■■■ +interface.join■Join■■■■■■ +interface.install_update■Install Update■■■■■■ +interface.single_player■Single Player■■■■■■ +interface.import■Import■■■■■■ +interface.install■Install■■■■■■ +interface.app_settings_tip■W3D Hub Launcher Settings■■■■■■ +interface.settings■Settings■■■■■■ +games.game_settings■Game Settings■■■■■■ +games.game_options■Game Options■■■■■■ +games.game_version■Game Version■■■■■■ +games.wine_configuration■Wine Configuration■■■■■■ +games.game_modifications■Game Modifications■■■■■■ +games.repair_installation■Repair Installation■■■■■■ +games.uninstall_game■Uninstall Game■■■■■■ +games.install_folder■Install Folder■■■■■■ +games.user_data_folder■User Data Folder■■■■■■ +games.view_screenshots■View Screenshots■■■■■■ +games.read_more■Read More■■■■■■ +games.fetching_news■Fetching news…■■■■■■ +games.channel■Channel■■■■■■ +games.version■Version■■■■■■ +server_browser.direct_connect■Direct Connect■■■■■■ +server_browser.refresh■Refresh■■■■■■ +server_browser.join_server■Join Server■■■■■■ +server_browser.game■Game■■■■■■ +server_browser.map■Map■■■■■■ +server_browser.max_players■Max Players■■■■■■ +server_browser.filters■Filters■■■■■■ +server_browser.region■Region■■■■■■ +server_browser.fetching_server_list■Fetching server list…■■■■■■ +server_browser.no_server_selected■No server selected■■■■■■ +server_browser.hostname■Hostname■■■■■■ +server_browser.current_map■Current Map■■■■■■ +server_browser.players■Players■■■■■■ +server_browser.ping■Ping■■■■■■ +server_browser.nickname■Nickname■■■■■■ +server_browser.set_nickname■Set Nickname■■■■■■ +server_browser.set_nickname_message■Set a nickname that will be used when joining a server■■■■■■ +server_browser.enter_password■Enter Password■■■■■■ +server_browser.enter_password_message■This server requires a password■■■■■■ +server_browser.time■Time■■■■■■ +server_browser.remaining■Remaining■■■■■■