diff --git a/assets/voxygen/i18n/en/_self.ron b/assets/voxygen/i18n/en/_self.ron index 6cb244755e..896347f130 100644 --- a/assets/voxygen/i18n/en/_self.ron +++ b/assets/voxygen/i18n/en/_self.ron @@ -41,11 +41,14 @@ scale_ratio: 1.0, ), }, + sub_directories: [ + "hud" + ], + string_map: { }, - vector_map: { "loading.tips": [ "Press 'G' to light your lantern.", diff --git a/assets/voxygen/i18n/en/buff.ron b/assets/voxygen/i18n/en/buff.ron index d2581f4f38..b1a8b8a401 100644 --- a/assets/voxygen/i18n/en/buff.ron +++ b/assets/voxygen/i18n/en/buff.ron @@ -1,51 +1,11 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "buff.remove": "Click to remove", "buff.title.missing": "Missing Title", "buff.desc.missing": "Missing Description", - // Buffs "buff.title.heal": "Heal", "buff.desc.heal": "Gain health over time.", "buff.title.potion": "Potion", diff --git a/assets/voxygen/i18n/en/char_selection.ron b/assets/voxygen/i18n/en/char_selection.ron index 29d401bf36..a078c83a81 100644 --- a/assets/voxygen/i18n/en/char_selection.ron +++ b/assets/voxygen/i18n/en/char_selection.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "char_selection.loading_characters": "Loading characters...", "char_selection.delete_permanently": "Permanently delete this Character?", @@ -51,7 +12,6 @@ "char_selection.create_new_character": "Create New Character", "char_selection.creating_character": "Creating Character...", "char_selection.character_creation": "Character Creation", - "char_selection.human_default": "Human Default", "char_selection.level_fmt": "Level {level_nb}", "char_selection.uncanny_valley": "Wilderness", @@ -66,7 +26,6 @@ "char_selection.create_info_name": "Your Character needs a name!", }, - vector_map: { } ) diff --git a/assets/voxygen/i18n/en/common.ron b/assets/voxygen/i18n/en/common.ron index 7ed4bb01cd..987228462f 100644 --- a/assets/voxygen/i18n/en/common.ron +++ b/assets/voxygen/i18n/en/common.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { // Texts used in multiple locations with the same formatting "common.username": "username", @@ -74,6 +35,7 @@ "common.you": "You", "common.automatic": "Auto", "common.random": "Random", + // Settings Window title "common.interface_settings": "Interface Settings", "common.gameplay_settings": "Gameplay Settings", diff --git a/assets/voxygen/i18n/en/debuff.ron b/assets/voxygen/i18n/en/debuff.ron index be8b51e970..df35b4df6b 100644 --- a/assets/voxygen/i18n/en/debuff.ron +++ b/assets/voxygen/i18n/en/debuff.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "debuff.title.bleed": "Bleeding", "debuff.desc.bleed": "Inflicts regular damage.", diff --git a/assets/voxygen/i18n/en/esc_menu.ron b/assets/voxygen/i18n/en/esc_menu.ron index fd0f15c2cf..538453260a 100644 --- a/assets/voxygen/i18n/en/esc_menu.ron +++ b/assets/voxygen/i18n/en/esc_menu.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "esc_menu.logout": "Logout", "esc_menu.quit_game": "Quit Game", diff --git a/assets/voxygen/i18n/en/gameinput.ron b/assets/voxygen/i18n/en/gameinput.ron index 63ae40cecb..92c7adb51d 100644 --- a/assets/voxygen/i18n/en/gameinput.ron +++ b/assets/voxygen/i18n/en/gameinput.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "gameinput.primary": "Basic Attack", "gameinput.secondary": "Secondary Attack/Block/Aim", diff --git a/assets/voxygen/i18n/en/hud.ron b/assets/voxygen/i18n/en/hud.ron deleted file mode 100644 index 697411ab94..0000000000 --- a/assets/voxygen/i18n/en/hud.ron +++ /dev/null @@ -1,329 +0,0 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// -/// WARNING: Localization files shall be saved in UTF-8 format without BOM - -/// Localization for "global" English -( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, - string_map: { - // Misc. Messages - "hud.do_not_show_on_startup": "Don't show this on Startup", - "hud.show_tips": "Show Tips", - "hud.quests": "Quests", - "hud.you_died": "You Died", - "hud.waypoint_saved": "Waypoint Saved", - - "hud.press_key_to_show_keybindings_fmt": "[{key}] Keybindings", - "hud.press_key_to_toggle_lantern_fmt": "[{key}] Lantern", - "hud.press_key_to_show_debug_info_fmt": "Press {key} to show debug info", - "hud.press_key_to_toggle_keybindings_fmt": "Press {key} to toggle keybindings", - "hud.press_key_to_toggle_debug_info_fmt": "Press {key} to toggle debug info", - - // Respawn message - "hud.press_key_to_respawn": r#"Press {key} to respawn at the last campfire you visited."#, - - // Welcome message - "hud.welcome": r#"Welcome to the Veloren Alpha! - - -Some tips before you start: - - -Press F1 to see the available key commands. - -Type /help into the chat to see chat commands - - -There are chests and other objects randomly spawning in the World! - -Right-Click to collect them. - -To actually use whatever you loot from those chests open your inventory with 'B'. - -Double click the items in your bag to use or equip them. - -Throw them away by clicking them once and clicking outside of the bag - - -Nights can get pretty dark in Veloren. - -Light your lantern by pressing 'G' - - -Want to free your cursor to close this window? Press TAB! - - -Enjoy your stay in the World of Veloren."#, - -"hud.temp_quest_headline": r#"Please, help us Traveller!"#, -"hud.temp_quest_text": r#"Dungeons filled with evil cultists -have emerged all around our peaceful towns! - - -Gather some company, stack up on food -and defeat their vile leaders and acolytes. - - -Maybe you can even obtain one of their -magically infused items?"#, - - "hud.spell": "Spells", - - "hud.free_look_indicator": "Free look active. Press {key} to disable.", - "hud.auto_walk_indicator": "Auto walk active", - - - // Inventory - "hud.bag.inventory": "{playername}'s Inventory", - "hud.bag.stats_title": "{playername}'s Stats", - "hud.bag.exp": "Exp", - "hud.bag.armor": "Armor", - "hud.bag.stats": "Stats", - "hud.bag.head": "Head", - "hud.bag.neck": "Neck", - "hud.bag.tabard": "Tabard", - "hud.bag.shoulders": "Shoulders", - "hud.bag.chest": "Chest", - "hud.bag.hands": "Hands", - "hud.bag.lantern": "Lantern", - "hud.bag.glider": "Glider", - "hud.bag.belt": "Belt", - "hud.bag.ring": "Ring", - "hud.bag.back": "Back", - "hud.bag.legs": "Legs", - "hud.bag.feet": "Feet", - "hud.bag.mainhand": "Mainhand", - "hud.bag.offhand": "Offhand", - - // Character name - "character_window.character_name": "Character Name", - // Character stats - "character_window.character_stats": r#"Endurance - -Fitness - -Willpower - -Protection -"#, - - - // Chat outputs - "hud.chat.online_msg": "[{name}] is online now", - "hud.chat.offline_msg": "{name} went offline", - - "hud.chat.default_death_msg": "[{name}] died", - "hud.chat.environmental_kill_msg": "[{name}] died in {environment}", - "hud.chat.fall_kill_msg": "[{name}] died from fall damage", - "hud.chat.suicide_msg": "[{name}] died from self-inflicted wounds", - - "hud.chat.pvp_melee_kill_msg": "[{attacker}] defeated [{victim}]", - "hud.chat.pvp_ranged_kill_msg": "[{attacker}] shot [{victim}]", - "hud.chat.pvp_explosion_kill_msg": "[{attacker}] blew up [{victim}]", - "hud.chat.pvp_energy_kill_msg": "[{attacker}] killed [{victim}] with magic", - "hud.chat.pvp_buff_kill_msg": "[{attacker}] killed [{victim}]", - - - "hud.chat.npc_melee_kill_msg": "{attacker} killed [{victim}]", - "hud.chat.npc_ranged_kill_msg": "{attacker} shot [{victim}]", - "hud.chat.npc_explosion_kill_msg": "{attacker} blew up [{victim}]", - "hud.chat.npc_energy_kill_msg": "[{attacker}] killed [{victim}] with magic", - "hud.chat.npc_other_kill_msg": "[{attacker}] killed [{victim}]", - - "hud.chat.loot_msg": "You picked up [{item}]", - "hud.chat.loot_fail": "Your Inventory is full!", - "hud.chat.goodbye": "Goodbye!", - "hud.chat.connection_lost": "Connection lost. Kicking in {time} seconds.", - - - // Crafting - "hud.crafting": "Crafting", - "hud.crafting.recipes": "Recipes", - "hud.crafting.ingredients": "Ingredients:", - "hud.crafting.craft": "Craft", - "hud.crafting.tool_cata": "Requires:", - - - // Groups - "hud.group": "Group", - "hud.group.invite_to_join": "{name} invited you to their group!", - "hud.group.invite": "Invite", - "hud.group.kick": "Kick", - "hud.group.assign_leader": "Assign Leader", - "hud.group.leave": "Leave Group", - "hud.group.dead" : "Dead", - "hud.group.out_of_range": "Out of range", - "hud.group.add_friend": "Add to Friends", - "hud.group.link_group": "Link Groups", - "hud.group.in_menu": "In Menu", - "hud.group.members": "Group Members", - - - // Map and Questlog - "hud.map.map_title": "Map", - "hud.map.qlog_title": "Quests", - "hud.map.difficulty": "Difficulty", - "hud.map.towns": "Towns", - "hud.map.castles": "Castles", - "hud.map.dungeons": "Dungeons", - "hud.map.caves": "Caves", - "hud.map.cave": "Cave", - "hud.map.town": "Town", - "hud.map.castle": "Castle", - "hud.map.dungeon": "Dungeon", - "hud.map.difficulty_dungeon": "Dungeon\n\nDifficulty: {difficulty}", - "hud.map.drag": "Drag", - "hud.map.zoom": "Zoom", - "hud.map.recenter": "Recenter", - - - // SCT outputs - "hud.sct.experience": "{amount} Exp", - "hud.sct.block": "BLOCKED", - - - // Settings - "hud.settings.general": "General", - "hud.settings.none": "None", - "hud.settings.press_behavior.toggle": "Toggle", - "hud.settings.press_behavior.hold": "Hold", - "hud.settings.help_window": "Help Window", - "hud.settings.debug_info": "Debug Info", - "hud.settings.tips_on_startup": "Tips-On-Startup", - "hud.settings.ui_scale": "UI-Scale", - "hud.settings.relative_scaling": "Relative Scaling", - "hud.settings.custom_scaling": "Custom Scaling", - "hud.settings.crosshair": "Crosshair", - "hud.settings.transparency": "Transparency", - "hud.settings.hotbar": "Hotbar", - "hud.settings.toggle_shortcuts": "Toggle Shortcuts", - "hud.settings.buffs_skillbar": "Buffs at Skillbar", - "hud.settings.buffs_mmap": "Buffs at Minimap", - "hud.settings.toggle_bar_experience": "Toggle Experience Bar", - "hud.settings.scrolling_combat_text": "Scrolling Combat Text", - "hud.settings.single_damage_number": "Single Damage Numbers", - "hud.settings.cumulated_damage": "Cumulated Damage", - "hud.settings.incoming_damage": "Incoming Damage", - "hud.settings.cumulated_incoming_damage": "Cumulated Incoming Damage", - "hud.settings.speech_bubble": "Speech Bubble", - "hud.settings.speech_bubble_dark_mode": "Speech Bubble Dark Mode", - "hud.settings.speech_bubble_icon": "Speech Bubble Icon", - "hud.settings.energybar_numbers": "Energybar Numbers", - "hud.settings.values": "Values", - "hud.settings.percentages": "Percentages", - "hud.settings.chat": "Chat", - "hud.settings.background_transparency": "Background Transparency", - "hud.settings.chat_character_name": "Character Names in chat", - "hud.settings.loading_tips": "Loading Screen Tips", - - "hud.settings.pan_sensitivity": "Pan Sensitivity", - "hud.settings.zoom_sensitivity": "Zoom Sensitivity", - "hud.settings.invert_scroll_zoom": "Invert Scroll Zoom", - "hud.settings.invert_mouse_y_axis": "Invert Mouse Y Axis", - "hud.settings.enable_mouse_smoothing": "Camera Smoothing", - "hud.settings.free_look_behavior": "Free look behavior", - "hud.settings.auto_walk_behavior": "Auto walk behavior", - "hud.settings.stop_auto_walk_on_input": "Stop auto walk on movement", - - "hud.settings.view_distance": "View Distance", - "hud.settings.sprites_view_distance": "Sprites View Distance", - "hud.settings.figures_view_distance": "Entities View Distance", - "hud.settings.maximum_fps": "Maximum FPS", - "hud.settings.fov": "Field of View (deg)", - "hud.settings.gamma": "Gamma", - "hud.settings.exposure": "Exposure", - "hud.settings.ambiance": "Ambiance Brightness", - "hud.settings.antialiasing_mode": "AntiAliasing Mode", - "hud.settings.upscale_factor": "Upscale Factor", - "hud.settings.cloud_rendering_mode": "Cloud Rendering Mode", - "hud.settings.fluid_rendering_mode": "Fluid Rendering Mode", - "hud.settings.fluid_rendering_mode.cheap": "Cheap", - "hud.settings.fluid_rendering_mode.shiny": "Shiny", - "hud.settings.cloud_rendering_mode.minimal": "Minimal", - "hud.settings.cloud_rendering_mode.low": "Low", - "hud.settings.cloud_rendering_mode.medium": "Medium", - "hud.settings.cloud_rendering_mode.high": "High", - "hud.settings.cloud_rendering_mode.ultra": "Ultra", - "hud.settings.fullscreen": "Fullscreen", - "hud.settings.fullscreen_mode": "Fullscreen Mode", - "hud.settings.fullscreen_mode.exclusive": "Exclusive", - "hud.settings.fullscreen_mode.borderless": "Borderless", - "hud.settings.particles": "Particles", - "hud.settings.resolution": "Resolution", - "hud.settings.bit_depth": "Bit Depth", - "hud.settings.refresh_rate": "Refresh Rate", - "hud.settings.lighting_rendering_mode": "Lighting Rendering Mode", - "hud.settings.lighting_rendering_mode.ashikhmin": "Type A - High ", - "hud.settings.lighting_rendering_mode.blinnphong": "Type B - Medium", - "hud.settings.lighting_rendering_mode.lambertian": "Type L - Cheap", - "hud.settings.shadow_rendering_mode": "Shadow Rendering Mode", - "hud.settings.shadow_rendering_mode.none": "None", - "hud.settings.shadow_rendering_mode.cheap": "Cheap", - "hud.settings.shadow_rendering_mode.map": "Map", - "hud.settings.shadow_rendering_mode.map.resolution": "Resolution", - "hud.settings.lod_detail": "LoD Detail", - "hud.settings.save_window_size": "Save window size", - - - "hud.settings.music_volume": "Music Volume", - "hud.settings.sound_effect_volume": "Sound Effects Volume", - "hud.settings.audio_device": "Audio Device", - - "hud.settings.awaitingkey": "Press a key...", - "hud.settings.unbound": "None", - "hud.settings.reset_keybinds": "Reset to Defaults", - - - // Social - "hud.social": "Other Players", - "hud.social.online": "Online:", - "hud.social.friends": "Friends", - "hud.social.not_yet_available": "Not yet available", - "hud.social.faction": "Faction", - "hud.social.play_online_fmt": "{nb_player} player(s) online", - "hud.social.name": "Name", - "hud.social.level": "Level", - "hud.social.zone": "Zone", - "hud.social.account": "Account", - }, - - - vector_map: { - } -) diff --git a/assets/voxygen/i18n/en/hud/_self.ron b/assets/voxygen/i18n/en/hud/_self.ron index 2461105552..bdc675c119 100644 --- a/assets/voxygen/i18n/en/hud/_self.ron +++ b/assets/voxygen/i18n/en/hud/_self.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "hud.do_not_show_on_startup": "Don't show this on Startup", "hud.show_tips": "Show Tips", diff --git a/assets/voxygen/i18n/en/hud/bag.ron b/assets/voxygen/i18n/en/hud/bag.ron index 3140b4fc21..e19e086eb5 100644 --- a/assets/voxygen/i18n/en/hud/bag.ron +++ b/assets/voxygen/i18n/en/hud/bag.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { // Inventory "hud.bag.inventory": "{playername}'s Inventory", diff --git a/assets/voxygen/i18n/en/hud/char_window.ron b/assets/voxygen/i18n/en/hud/char_window.ron index 4c84faca2e..e8de38bd64 100644 --- a/assets/voxygen/i18n/en/hud/char_window.ron +++ b/assets/voxygen/i18n/en/hud/char_window.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "character_window.character_name": "Character Name", // Character stats diff --git a/assets/voxygen/i18n/en/hud/chat.ron b/assets/voxygen/i18n/en/hud/chat.ron index 7942c0c975..1785615df2 100644 --- a/assets/voxygen/i18n/en/hud/chat.ron +++ b/assets/voxygen/i18n/en/hud/chat.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { // Chat outputs "hud.chat.online_msg": "[{name}] is online now", diff --git a/assets/voxygen/i18n/en/hud/crafting.ron b/assets/voxygen/i18n/en/hud/crafting.ron index 4fd52fda3b..5dd30c3fd3 100644 --- a/assets/voxygen/i18n/en/hud/crafting.ron +++ b/assets/voxygen/i18n/en/hud/crafting.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "hud.crafting": "Crafting", "hud.crafting.recipes": "Recipes", diff --git a/assets/voxygen/i18n/en/hud/group.ron b/assets/voxygen/i18n/en/hud/group.ron index d674f0cad9..9e726cccce 100644 --- a/assets/voxygen/i18n/en/hud/group.ron +++ b/assets/voxygen/i18n/en/hud/group.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "hud.group": "Group", "hud.group.invite_to_join": "{name} invited you to their group!", diff --git a/assets/voxygen/i18n/en/hud/map.ron b/assets/voxygen/i18n/en/hud/map.ron index e257f95340..ee0db0fe71 100644 --- a/assets/voxygen/i18n/en/hud/map.ron +++ b/assets/voxygen/i18n/en/hud/map.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { // Map and Questlog "hud.map.map_title": "Map", diff --git a/assets/voxygen/i18n/en/hud/sct.ron b/assets/voxygen/i18n/en/hud/sct.ron index 2d691e0595..a3a3cfca33 100644 --- a/assets/voxygen/i18n/en/hud/sct.ron +++ b/assets/voxygen/i18n/en/hud/sct.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { // SCT outputs "hud.sct.experience": "{amount} Exp", diff --git a/assets/voxygen/i18n/en/hud/social.ron b/assets/voxygen/i18n/en/hud/social.ron index dd1474a5f7..576f0bee35 100644 --- a/assets/voxygen/i18n/en/hud/social.ron +++ b/assets/voxygen/i18n/en/hud/social.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { "hud.social": "Other Players", "hud.social.online": "Online:", diff --git a/assets/voxygen/i18n/en/main.ron b/assets/voxygen/i18n/en/main.ron index 18ebabec0a..4f0c73ef12 100644 --- a/assets/voxygen/i18n/en/main.ron +++ b/assets/voxygen/i18n/en/main.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { /// Start Main screen section "main.username": "Username", @@ -96,7 +57,6 @@ https://veloren.net/account/."#, "main.login.select_language": "Select a language", "main.servers.select_server": "Select a server", - /// End Main screen section }, diff --git a/assets/voxygen/i18n/en/template.ron b/assets/voxygen/i18n/en/template.ron index d1651f8a3f..f0d8b704da 100644 --- a/assets/voxygen/i18n/en/template.ron +++ b/assets/voxygen/i18n/en/template.ron @@ -1,46 +1,7 @@ -/// Translation document instructions -/// -/// In order to keep localization documents readible please follow the following -/// rules: -/// - separate the string map sections using a commentary describing the purpose -/// of the next section -/// - prepend multi-line strings with a commentary -/// - append one blank lines after a multi-line strings and two after sections -/// -/// To add a new language in Veloren, just write an additional `.ron` file in -/// `assets/voxygen/i18n` and that's it! -/// /// WARNING: Localization files shall be saved in UTF-8 format without BOM /// Localization for "global" English ( - metadata: ( - language_name: "English", - language_identifier: "en", - ), - convert_utf8_to_ascii: false, - fonts: { - "opensans": Font ( - asset_key: "voxygen.font.OpenSans-Regular", - scale_ratio: 1.0, - ), - "metamorph": Font ( - asset_key: "voxygen.font.Metamorphous-Regular", - scale_ratio: 1.0, - ), - "alkhemi": Font ( - asset_key: "voxygen.font.Alkhemikal", - scale_ratio: 1.0, - ), - "wizard": Font ( - asset_key: "voxygen.font.wizard", - scale_ratio: 1.0, - ), - "cyri": Font ( - asset_key: "voxygen.font.haxrcorp_4089_cyrillic_altgr_extended", - scale_ratio: 1.0, - ), - }, string_map: { }, diff --git a/voxygen/src/i18n.rs b/voxygen/src/i18n.rs index 827510a6c3..5da86b1f65 100644 --- a/voxygen/src/i18n.rs +++ b/voxygen/src/i18n.rs @@ -45,6 +45,12 @@ pub type Fonts = HashMap; /// Store internationalization data #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] pub struct Localization { + + /// A list of subdirectories to lookup for localization files + /// + /// + pub sub_directories: Vec, + /// A map storing the localized texts /// /// Localized content can be accessed using a String key. @@ -65,6 +71,22 @@ pub struct Localization { pub metadata: LanguageMetadata, } +/// Store internationalization maps +/// These structs are meant to be merged into a Localization +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct LocalizationFragment { + /// A map storing the localized texts + /// + /// Localized content can be accessed using a String key. + pub string_map: HashMap, + + /// A map for storing variations of localized texts, for example multiple + /// ways of saying "Help, I'm under attack". Used primarily for npc + /// dialogue. + pub vector_map: HashMap>, +} + + impl Localization { /// Get a localized text from the given key /// @@ -137,6 +159,11 @@ impl assets::Asset for Localization { const EXTENSION: &'static str = "ron"; } +impl assets::Asset for LocalizationFragment { + type Loader = LocalizationLoader; + + const EXTENSION: &'static str = "ron"; +} pub struct LocalizationLoader; impl assets::Loader for LocalizationLoader { @@ -159,21 +186,55 @@ impl assets::Loader for LocalizationLoader { Ok(asked_localization) } } +impl assets::Loader for LocalizationLoader { + fn load(content: Cow<[u8]>, ext: &str) -> Result { + let mut asked_localization: LocalizationFragment = assets::RonLoader::load(content, ext)?; + Ok(asked_localization) + } +} pub fn init_localization(asset_key: &str) -> Result { + // retrieve a Localization struct, clone it to allow writing let mut asked_localization = Localization::load(&(asset_key.to_string() + "._self"))?.cloned(); - for localization_asset in assets::load_dir::(asset_key)?.iter_all() { - println!("{:?}", localization_asset.0); - // handle localization files - if let Ok(localization) = localization_asset.1 { - asked_localization.string_map.extend(localization.read().string_map.clone()); - asked_localization.vector_map.extend(localization.read().vector_map.clone()); + // handle localization files + for localization_asset in assets::load_dir::(asset_key)?.iter() { + asked_localization.string_map.extend(localization_asset.read().string_map.clone()); + asked_localization.vector_map.extend(localization_asset.read().vector_map.clone()); + } + // handle localization sub directories + for sub_directory in asked_localization.sub_directories.iter() { + for localization_asset in assets::load_dir::(&(asset_key.to_string() + "." + &sub_directory))?.iter() { + asked_localization.string_map.extend(localization_asset.read().string_map.clone()); + asked_localization.vector_map.extend(localization_asset.read().vector_map.clone()); } } - // TODO: handle folders + + // Update the text if UTF-8 to ASCII conversion is enabled + if asked_localization.convert_utf8_to_ascii { + for value in asked_localization.string_map.values_mut() { + *value = deunicode(value); + } + + for value in asked_localization.vector_map.values_mut() { + *value = value.iter().map(|s| deunicode(s)).collect(); + } + } + asked_localization.metadata.language_name = + deunicode(&asked_localization.metadata.language_name); + Ok(asked_localization) } +#[track_caller] +pub fn init_localization_expect(asset_key: &str) -> Localization { + init_localization(asset_key).unwrap_or_else(|err| { + panic!( + "Failed loading essential asset: {} (error={:?})", + asset_key, err + ) + }) +} + /// Load all the available languages located in the voxygen asset directory pub fn list_localizations() -> Vec { assets::load_dir::("voxygen.i18n") diff --git a/voxygen/src/main.rs b/voxygen/src/main.rs index eb80828489..75d0501116 100644 --- a/voxygen/src/main.rs +++ b/voxygen/src/main.rs @@ -5,7 +5,7 @@ use veloren_voxygen::{ audio::AudioFrontend, - i18n::{self, i18n_asset_key, init_localization, Localization}, + i18n::{self, i18n_asset_key, init_localization, init_localization_expect, Localization}, logging, profile::Profile, run, @@ -167,7 +167,7 @@ fn main() { "Impossible to load language: change to the default language (English) instead.", ); settings.language.selected_language = i18n::REFERENCE_LANG.to_owned(); - init_localization(&i18n_asset_key(&settings.language.selected_language)).unwrap() + init_localization_expect(&i18n_asset_key(&settings.language.selected_language)) }); i18n.log_missing_entries();