From 1301343f427d4ea6660ee11649a5b65301fc1632 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Tue, 17 Jun 2025 16:41:42 +0800 Subject: [PATCH] Improve auto-translation of editor's top & bottom bars - The main menu - The run bar - The update spinner - The bottom panel buttons --- editor/editor_audio_buses.cpp | 2 +- editor/editor_node.cpp | 55 ++++++++++--------- editor/editor_run_native.cpp | 7 ++- editor/gui/editor_bottom_panel.cpp | 6 +- editor/gui/editor_run_bar.cpp | 11 ++-- editor/gui/editor_toaster.cpp | 11 ++-- editor/gui/editor_version_button.cpp | 18 +++--- .../animation_player_editor_plugin.cpp | 2 +- .../plugins/animation_tree_editor_plugin.cpp | 2 +- editor/plugins/debugger_editor_plugin.cpp | 24 ++++---- editor/plugins/polygon_2d_editor_plugin.cpp | 2 +- .../resource_preloader_editor_plugin.cpp | 2 +- editor/plugins/shader_editor_plugin.cpp | 2 +- editor/plugins/shader_file_editor_plugin.cpp | 2 +- .../plugins/sprite_frames_editor_plugin.cpp | 2 +- editor/plugins/theme_editor_plugin.cpp | 2 +- editor/plugins/tiles/tiles_editor_plugin.cpp | 4 +- .../plugins/version_control_editor_plugin.cpp | 2 +- .../editor_scene_exporter_gltf_plugin.cpp | 2 +- .../gridmap/editor/grid_map_editor_plugin.cpp | 2 +- .../editor/multiplayer_editor_plugin.cpp | 2 +- .../openxr/editor/openxr_editor_plugin.cpp | 2 +- 22 files changed, 87 insertions(+), 77 deletions(-) diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index 77c1dc3e18..521bd85d53 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -1107,7 +1107,7 @@ void EditorAudioBuses::_rebuild_buses() { EditorAudioBuses *EditorAudioBuses::register_editor() { EditorAudioBuses *audio_buses = memnew(EditorAudioBuses); - EditorNode::get_bottom_panel()->add_item(TTR("Audio"), audio_buses, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_audio_bottom_panel", TTRC("Toggle Audio Bottom Panel"), KeyModifierMask::ALT | Key::A)); + EditorNode::get_bottom_panel()->add_item(TTRC("Audio"), audio_buses, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_audio_bottom_panel", TTRC("Toggle Audio Bottom Panel"), KeyModifierMask::ALT | Key::A)); return audio_buses; } diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index e7b74b79e1..36e109418f 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1009,7 +1009,7 @@ void EditorNode::_update_update_spinner() { update_popup->set_item_checked(update_popup->get_item_index(SPINNER_UPDATE_WHEN_CHANGED), !update_continuously); if (update_continuously) { - update_spinner->set_tooltip_text(TTR("Spins when the editor window redraws.\nUpdate Continuously is enabled, which can increase power usage. Click to disable it.")); + update_spinner->set_tooltip_text(TTRC("Spins when the editor window redraws.\nUpdate Continuously is enabled, which can increase power usage. Click to disable it.")); // Use a different color for the update spinner when Update Continuously is enabled, // as this feature should only be enabled for troubleshooting purposes. @@ -1018,7 +1018,7 @@ void EditorNode::_update_update_spinner() { const bool dark_theme = EditorThemeManager::is_dark_theme(); update_spinner->set_self_modulate(theme->get_color(SNAME("error_color"), EditorStringName(Editor)) * (dark_theme ? Color(1.1, 1.1, 1.1) : Color(4.25, 4.25, 4.25))); } else { - update_spinner->set_tooltip_text(TTR("Spins when the editor window redraws.")); + update_spinner->set_tooltip_text(TTRC("Spins when the editor window redraws.")); update_spinner->set_self_modulate(Color(1, 1, 1)); } @@ -7046,7 +7046,8 @@ void EditorNode::_add_renderer_entry(const String &p_renderer_name, bool p_mark_ item_text = TTR("Compatibility"); } if (p_mark_overridden) { - item_text += " " + TTR("(Overridden)"); + // TRANSLATORS: The placeholder is the rendering method that has overridden the default one. + item_text = vformat(TTR("%s (Overridden)"), item_text); } renderer->add_item(item_text); } @@ -7944,7 +7945,7 @@ EditorNode::EditorNode() { recent_scenes = memnew(PopupMenu); recent_scenes->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); - file_menu->add_submenu_node_item(TTR("Open Recent"), recent_scenes, SCENE_OPEN_RECENT); + file_menu->add_submenu_node_item(TTRC("Open Recent"), recent_scenes, SCENE_OPEN_RECENT); recent_scenes->connect(SceneStringName(id_pressed), callable_mp(this, &EditorNode::_open_recent_scene)); file_menu->add_separator(); @@ -7961,7 +7962,7 @@ EditorNode::EditorNode() { file_menu->add_separator(); export_as_menu = memnew(PopupMenu); - file_menu->add_submenu_node_item(TTR("Export As..."), export_as_menu); + file_menu->add_submenu_node_item(TTRC("Export As..."), export_as_menu); export_as_menu->add_shortcut(ED_SHORTCUT("editor/export_as_mesh_library", TTRC("MeshLibrary...")), FILE_EXPORT_MESH_LIBRARY); export_as_menu->connect("index_pressed", callable_mp(this, &EditorNode::_export_as_menu_option)); @@ -8004,21 +8005,21 @@ EditorNode::EditorNode() { project_menu->add_shortcut(ED_GET_SHORTCUT("editor/find_in_files"), PROJECT_FIND_IN_FILES); project_menu->add_separator(); - project_menu->add_item(TTR("Version Control"), PROJECT_VERSION_CONTROL); + project_menu->add_item(TTRC("Version Control"), PROJECT_VERSION_CONTROL); project_menu->add_separator(); project_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/export", TTRC("Export..."), Key::NONE, TTRC("Export")), PROJECT_EXPORT); - project_menu->add_item(TTR("Pack Project as ZIP..."), PROJECT_PACK_AS_ZIP); + project_menu->add_item(TTRC("Pack Project as ZIP..."), PROJECT_PACK_AS_ZIP); #ifndef ANDROID_ENABLED - project_menu->add_item(TTR("Install Android Build Template..."), PROJECT_INSTALL_ANDROID_SOURCE); - project_menu->add_item(TTR("Open User Data Folder"), PROJECT_OPEN_USER_DATA_FOLDER); + project_menu->add_item(TTRC("Install Android Build Template..."), PROJECT_INSTALL_ANDROID_SOURCE); + project_menu->add_item(TTRC("Open User Data Folder"), PROJECT_OPEN_USER_DATA_FOLDER); #endif project_menu->add_separator(); tool_menu = memnew(PopupMenu); tool_menu->connect("index_pressed", callable_mp(this, &EditorNode::_tool_menu_option)); - project_menu->add_submenu_node_item(TTR("Tools"), tool_menu); + project_menu->add_submenu_node_item(TTRC("Tools"), tool_menu); tool_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/orphan_resource_explorer", TTRC("Orphan Resource Explorer...")), TOOLS_ORPHAN_RESOURCES); tool_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/engine_compilation_configuration_editor", TTRC("Engine Compilation Configuration Editor...")), TOOLS_BUILD_PROFILE_MANAGER); tool_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/upgrade_project", TTRC("Upgrade Project Files...")), TOOLS_PROJECT_UPGRADE); @@ -8070,10 +8071,10 @@ EditorNode::EditorNode() { settings_menu->add_shortcut(ED_SHORTCUT("editor/command_palette", TTRC("Command Palette..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::P), EDITOR_COMMAND_PALETTE); settings_menu->add_separator(); - settings_menu->add_submenu_node_item(TTR("Editor Docks"), editor_dock_manager->get_docks_menu()); + settings_menu->add_submenu_node_item(TTRC("Editor Docks"), editor_dock_manager->get_docks_menu()); editor_layouts = memnew(PopupMenu); - settings_menu->add_submenu_node_item(TTR("Editor Layout"), editor_layouts); + settings_menu->add_submenu_node_item(TTRC("Editor Layout"), editor_layouts); editor_layouts->connect(SceneStringName(id_pressed), callable_mp(this, &EditorNode::_layout_menu_option)); settings_menu->add_separator(); @@ -8081,7 +8082,7 @@ EditorNode::EditorNode() { ED_SHORTCUT_OVERRIDE("editor/take_screenshot", "macos", KeyModifierMask::META | Key::F12); settings_menu->add_shortcut(ED_GET_SHORTCUT("editor/take_screenshot"), EDITOR_TAKE_SCREENSHOT); - settings_menu->set_item_tooltip(-1, TTR("Screenshots are stored in the user data folder (\"user://\").")); + settings_menu->set_item_tooltip(-1, TTRC("Screenshots are stored in the user data folder (\"user://\").")); ED_SHORTCUT_AND_COMMAND("editor/fullscreen_mode", TTRC("Toggle Fullscreen"), KeyModifierMask::SHIFT | Key::F11); ED_SHORTCUT_OVERRIDE("editor/fullscreen_mode", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::F); @@ -8091,19 +8092,19 @@ EditorNode::EditorNode() { #ifndef ANDROID_ENABLED if (OS::get_singleton()->get_data_path() == OS::get_singleton()->get_config_path()) { // Configuration and data folders are located in the same place (Windows/macOS). - settings_menu->add_item(TTR("Open Editor Data/Settings Folder"), EDITOR_OPEN_DATA_FOLDER); + settings_menu->add_item(TTRC("Open Editor Data/Settings Folder"), EDITOR_OPEN_DATA_FOLDER); } else { // Separate configuration and data folders (Linux). - settings_menu->add_item(TTR("Open Editor Data Folder"), EDITOR_OPEN_DATA_FOLDER); - settings_menu->add_item(TTR("Open Editor Settings Folder"), EDITOR_OPEN_CONFIG_FOLDER); + settings_menu->add_item(TTRC("Open Editor Data Folder"), EDITOR_OPEN_DATA_FOLDER); + settings_menu->add_item(TTRC("Open Editor Settings Folder"), EDITOR_OPEN_CONFIG_FOLDER); } settings_menu->add_separator(); #endif - settings_menu->add_item(TTR("Manage Editor Features..."), EDITOR_MANAGE_FEATURE_PROFILES); - settings_menu->add_item(TTR("Manage Export Templates..."), EDITOR_MANAGE_EXPORT_TEMPLATES); + settings_menu->add_item(TTRC("Manage Editor Features..."), EDITOR_MANAGE_FEATURE_PROFILES); + settings_menu->add_item(TTRC("Manage Export Templates..."), EDITOR_MANAGE_EXPORT_TEMPLATES); #if !defined(ANDROID_ENABLED) && !defined(WEB_ENABLED) - settings_menu->add_item(TTR("Configure FBX Importer..."), EDITOR_CONFIGURE_FBX_IMPORTER); + settings_menu->add_item(TTRC("Configure FBX Importer..."), EDITOR_CONFIGURE_FBX_IMPORTER); #endif help_menu = memnew(PopupMenu); @@ -8156,7 +8157,9 @@ EditorNode::EditorNode() { renderer->set_theme_type_variation("TopBarOptionButton"); renderer->set_fit_to_longest_item(false); renderer->set_focus_mode(Control::FOCUS_ACCESSIBILITY); - renderer->set_tooltip_text(TTR("Choose a rendering method.\n\nNotes:\n- On mobile platforms, the Mobile rendering method is used if Forward+ is selected here.\n- On the web platform, the Compatibility rendering method is always used.")); + renderer->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); + renderer->set_tooltip_auto_translate_mode(AUTO_TRANSLATE_MODE_ALWAYS); + renderer->set_tooltip_text(TTRC("Choose a rendering method.\n\nNotes:\n- On mobile platforms, the Mobile rendering method is used if Forward+ is selected here.\n- On the web platform, the Compatibility rendering method is always used.")); renderer->set_accessibility_name(TTRC("Rendering Method")); right_menu_hb->add_child(renderer); @@ -8220,10 +8223,10 @@ EditorNode::EditorNode() { update_spinner->get_popup()->connect(SceneStringName(id_pressed), callable_mp(this, &EditorNode::_menu_option)); update_spinner->set_accessibility_name(TTRC("Update Mode")); PopupMenu *p = update_spinner->get_popup(); - p->add_radio_check_item(TTR("Update Continuously"), SPINNER_UPDATE_CONTINUOUSLY); - p->add_radio_check_item(TTR("Update When Changed"), SPINNER_UPDATE_WHEN_CHANGED); + p->add_radio_check_item(TTRC("Update Continuously"), SPINNER_UPDATE_CONTINUOUSLY); + p->add_radio_check_item(TTRC("Update When Changed"), SPINNER_UPDATE_WHEN_CHANGED); p->add_separator(); - p->add_item(TTR("Hide Update Spinner"), SPINNER_UPDATE_SPINNER_HIDE); + p->add_item(TTRC("Hide Update Spinner"), SPINNER_UPDATE_SPINNER_HIDE); _update_update_spinner(); // Instantiate and place editor docks. @@ -8291,7 +8294,7 @@ EditorNode::EditorNode() { center_split->set_dragger_visibility(SplitContainer::DRAGGER_HIDDEN); log = memnew(EditorLog); - Button *output_button = bottom_panel->add_item(TTR("Output"), log, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_output_bottom_panel", TTRC("Toggle Output Bottom Panel"), KeyModifierMask::ALT | Key::O)); + Button *output_button = bottom_panel->add_item(TTRC("Output"), log, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_output_bottom_panel", TTRC("Toggle Output Bottom Panel"), KeyModifierMask::ALT | Key::O)); log->set_tool_button(output_button); center_split->connect(SceneStringName(resized), callable_mp(this, &EditorNode::_vp_resized)); @@ -8479,8 +8482,8 @@ EditorNode::EditorNode() { vcs_actions_menu = VersionControlEditorPlugin::get_singleton()->get_version_control_actions_panel(); vcs_actions_menu->connect("index_pressed", callable_mp(this, &EditorNode::_version_control_menu_option)); - vcs_actions_menu->add_item(TTR("Create/Override Version Control Metadata..."), VCS_METADATA); - vcs_actions_menu->add_item(TTR("Version Control Settings..."), VCS_SETTINGS); + vcs_actions_menu->add_item(TTRC("Create/Override Version Control Metadata..."), VCS_METADATA); + vcs_actions_menu->add_item(TTRC("Version Control Settings..."), VCS_SETTINGS); project_menu->set_item_submenu_node(project_menu->get_item_index(PROJECT_VERSION_CONTROL), vcs_actions_menu); add_editor_plugin(memnew(AudioBusesEditorPlugin(audio_bus_editor))); diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp index 91cbe4edbd..0d7f969aab 100644 --- a/editor/editor_run_native.cpp +++ b/editor/editor_run_native.cpp @@ -81,10 +81,10 @@ void EditorRunNative::_notification(int p_what) { } if (popup->get_item_count() == 0) { remote_debug->set_disabled(true); - remote_debug->set_tooltip_text(TTR("No Remote Deploy export presets configured.")); + remote_debug->set_tooltip_text(TTRC("No Remote Deploy export presets configured.")); } else { remote_debug->set_disabled(false); - remote_debug->set_tooltip_text(TTR("Remote Deploy")); + remote_debug->set_tooltip_text(TTRC("Remote Deploy")); } first = false; @@ -199,8 +199,9 @@ EditorRunNative::EditorRunNative() { remote_debug = memnew(MenuButton); remote_debug->set_flat(false); remote_debug->set_theme_type_variation("RunBarButton"); + remote_debug->get_popup()->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); remote_debug->get_popup()->connect(SceneStringName(id_pressed), callable_mp(this, &EditorRunNative::start_run_native)); - remote_debug->set_tooltip_text(TTR("Remote Deploy")); + remote_debug->set_tooltip_text(TTRC("Remote Deploy")); remote_debug->set_accessibility_name(TTRC("Remote Deploy")); remote_debug->set_disabled(true); diff --git a/editor/gui/editor_bottom_panel.cpp b/editor/gui/editor_bottom_panel.cpp index fab41e1c86..e39a846ee1 100644 --- a/editor/gui/editor_bottom_panel.cpp +++ b/editor/gui/editor_bottom_panel.cpp @@ -306,7 +306,7 @@ EditorBottomPanel::EditorBottomPanel() { item_vbox->add_child(bottom_hbox); left_button = memnew(Button); - left_button->set_tooltip_text(TTR("Scroll Left\nHold Ctrl to scroll to the begin.\nHold Shift to scroll one page.")); + left_button->set_tooltip_text(TTRC("Scroll Left\nHold Ctrl to scroll to the begin.\nHold Shift to scroll one page.")); left_button->set_accessibility_name(TTRC("Scroll Left")); left_button->set_theme_type_variation("BottomPanelButton"); left_button->set_focus_mode(Control::FOCUS_ACCESSIBILITY); @@ -323,7 +323,7 @@ EditorBottomPanel::EditorBottomPanel() { bottom_hbox->add_child(button_scroll); right_button = memnew(Button); - right_button->set_tooltip_text(TTR("Scroll Right\nHold Ctrl to scroll to the end.\nHold Shift to scroll one page.")); + right_button->set_tooltip_text(TTRC("Scroll Right\nHold Ctrl to scroll to the end.\nHold Shift to scroll one page.")); right_button->set_accessibility_name(TTRC("Scroll Right")); right_button->set_theme_type_variation("BottomPanelButton"); right_button->set_focus_mode(Control::FOCUS_ACCESSIBILITY); @@ -355,7 +355,7 @@ EditorBottomPanel::EditorBottomPanel() { pin_button->hide(); pin_button->set_theme_type_variation("FlatMenuButton"); pin_button->set_toggle_mode(true); - pin_button->set_tooltip_text(TTR("Pin Bottom Panel Switching")); + pin_button->set_tooltip_text(TTRC("Pin Bottom Panel Switching")); pin_button->set_accessibility_name(TTRC("Pin Bottom Panel")); pin_button->connect(SceneStringName(toggled), callable_mp(this, &EditorBottomPanel::_pin_button_toggled)); diff --git a/editor/gui/editor_run_bar.cpp b/editor/gui/editor_run_bar.cpp index 8b5a482837..569b7dbceb 100644 --- a/editor/gui/editor_run_bar.cpp +++ b/editor/gui/editor_run_bar.cpp @@ -119,15 +119,15 @@ void EditorRunBar::_reset_play_buttons() { play_button->set_pressed(false); play_button->set_button_icon(get_editor_theme_icon(SNAME("MainPlay"))); - play_button->set_tooltip_text(TTR("Play the project.")); + play_button->set_tooltip_text(TTRC("Play the project.")); play_scene_button->set_pressed(false); play_scene_button->set_button_icon(get_editor_theme_icon(SNAME("PlayScene"))); - play_scene_button->set_tooltip_text(TTR("Play the edited scene.")); + play_scene_button->set_tooltip_text(TTRC("Play the edited scene.")); play_custom_scene_button->set_pressed(false); play_custom_scene_button->set_button_icon(get_editor_theme_icon(SNAME("PlayCustom"))); - play_custom_scene_button->set_tooltip_text(TTR("Play a custom scene.")); + play_custom_scene_button->set_tooltip_text(TTRC("Play a custom scene.")); } void EditorRunBar::_update_play_buttons() { @@ -152,7 +152,7 @@ void EditorRunBar::_update_play_buttons() { if (active_button) { active_button->set_pressed(true); active_button->set_button_icon(get_editor_theme_icon(SNAME("Reload"))); - active_button->set_tooltip_text(TTR("Reload the played scene.")); + active_button->set_tooltip_text(TTRC("Reload the played scene.")); } } @@ -518,6 +518,7 @@ EditorRunBar::EditorRunBar() { // Use a button for the indicator since it comes with a background panel and pixel perfect centering of an icon. profiler_autostart_indicator = memnew(Button); + profiler_autostart_indicator->set_tooltip_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); profiler_autostart_indicator->set_icon_alignment(HORIZONTAL_ALIGNMENT_CENTER); profiler_autostart_indicator->set_focus_mode(FOCUS_ACCESSIBILITY); profiler_autostart_indicator->set_theme_type_variation("ProfilerAutostartIndicator"); @@ -678,6 +679,6 @@ EditorRunBar::EditorRunBar() { write_movie_panel->add_child(write_movie_button); write_movie_button->set_theme_type_variation("RunBarButtonMovieMakerDisabled"); write_movie_button->set_focus_mode(Control::FOCUS_ACCESSIBILITY); - write_movie_button->set_tooltip_text(TTR("Enable Movie Maker mode.\nThe project will run at stable FPS and the visual and audio output will be recorded to a video file.")); + write_movie_button->set_tooltip_text(TTRC("Enable Movie Maker mode.\nThe project will run at stable FPS and the visual and audio output will be recorded to a video file.")); write_movie_button->set_accessibility_name(TTRC("Enable Movie Maker Mode")); } diff --git a/editor/gui/editor_toaster.cpp b/editor/gui/editor_toaster.cpp index 0b98635089..e41a32e0e5 100644 --- a/editor/gui/editor_toaster.cpp +++ b/editor/gui/editor_toaster.cpp @@ -236,12 +236,12 @@ void EditorToaster::_auto_hide_or_free_toasts() { } if (toasts.is_empty()) { - main_button->set_tooltip_text(TTR("No notifications.")); + main_button->set_tooltip_text(TTRC("No notifications.")); main_button->set_modulate(Color(0.5, 0.5, 0.5)); main_button->set_disabled(true); set_process_internal(false); } else { - main_button->set_tooltip_text(TTR("Show notifications.")); + main_button->set_tooltip_text(TTRC("Show notifications.")); main_button->set_modulate(Color(1, 1, 1)); main_button->set_disabled(false); } @@ -342,6 +342,7 @@ void EditorToaster::_repop_old() { Control *EditorToaster::popup(Control *p_control, Severity p_severity, double p_time, const String &p_tooltip) { // Create the panel according to the severity. PanelContainer *panel = memnew(PanelContainer); + panel->set_tooltip_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); panel->set_tooltip_text(p_tooltip); switch (p_severity) { case SEVERITY_INFO: @@ -435,10 +436,12 @@ void EditorToaster::_popup_str(const String &p_message, Severity p_severity, con hb->add_theme_constant_override("separation", 0); Label *label = memnew(Label); + label->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); label->set_focus_mode(FOCUS_ACCESSIBILITY); hb->add_child(label); Label *count_label = memnew(Label); + count_label->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); hb->add_child(count_label); control = popup(hb, p_severity, default_message_duration, p_tooltip); @@ -576,7 +579,7 @@ EditorToaster::EditorToaster() { // Main button. main_button = memnew(Button); main_button->set_accessibility_name(TTRC("Notifications")); - main_button->set_tooltip_text(TTR("No notifications.")); + main_button->set_tooltip_text(TTRC("No notifications.")); main_button->set_modulate(Color(0.5, 0.5, 0.5)); main_button->set_disabled(true); main_button->set_theme_type_variation("FlatMenuButton"); @@ -593,7 +596,7 @@ EditorToaster::EditorToaster() { disable_notifications_button = memnew(Button); disable_notifications_button->set_accessibility_name(TTRC("Silence Notifications")); - disable_notifications_button->set_tooltip_text(TTR("Silence the notifications.")); + disable_notifications_button->set_tooltip_text(TTRC("Silence the notifications.")); disable_notifications_button->set_flat(true); disable_notifications_button->connect(SceneStringName(pressed), callable_mp(this, &EditorToaster::_set_notifications_enabled).bind(false)); disable_notifications_panel->add_child(disable_notifications_button); diff --git a/editor/gui/editor_version_button.cpp b/editor/gui/editor_version_button.cpp index 15f2d46a22..17c82b787d 100644 --- a/editor/gui/editor_version_button.cpp +++ b/editor/gui/editor_version_button.cpp @@ -64,6 +64,16 @@ void EditorVersionButton::_notification(int p_what) { set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); set_text(_get_version_string(format)); } break; + + case NOTIFICATION_TRANSLATION_CHANGED: { + String build_date; + if (GODOT_VERSION_TIMESTAMP > 0) { + build_date = Time::get_singleton()->get_datetime_string_from_unix_time(GODOT_VERSION_TIMESTAMP, true) + " UTC"; + } else { + build_date = TTR("(unknown)"); + } + set_tooltip_text(vformat(TTR("Git commit date: %s\nClick to copy the version information."), build_date)); + } break; } } @@ -74,12 +84,4 @@ void EditorVersionButton::pressed() { EditorVersionButton::EditorVersionButton(VersionFormat p_format) { format = p_format; set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER); - - String build_date; - if (GODOT_VERSION_TIMESTAMP > 0) { - build_date = Time::get_singleton()->get_datetime_string_from_unix_time(GODOT_VERSION_TIMESTAMP, true) + " UTC"; - } else { - build_date = TTR("(unknown)"); - } - set_tooltip_text(vformat(TTR("Git commit date: %s\nClick to copy the version information."), build_date)); } diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index f98102be92..805c5a1394 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -2436,7 +2436,7 @@ void AnimationPlayerEditorPlugin::make_visible(bool p_visible) { AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin() { anim_editor = memnew(AnimationPlayerEditor(this)); - EditorNode::get_bottom_panel()->add_item(TTR("Animation"), anim_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_animation_bottom_panel", TTRC("Toggle Animation Bottom Panel"), KeyModifierMask::ALT | Key::N)); + EditorNode::get_bottom_panel()->add_item(TTRC("Animation"), anim_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_animation_bottom_panel", TTRC("Toggle Animation Bottom Panel"), KeyModifierMask::ALT | Key::N)); } AnimationPlayerEditorPlugin::~AnimationPlayerEditorPlugin() { diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp index bc03cbb14a..13e091d5e9 100644 --- a/editor/plugins/animation_tree_editor_plugin.cpp +++ b/editor/plugins/animation_tree_editor_plugin.cpp @@ -305,6 +305,6 @@ AnimationTreeEditorPlugin::AnimationTreeEditorPlugin() { anim_tree_editor = memnew(AnimationTreeEditor); anim_tree_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE); - button = EditorNode::get_bottom_panel()->add_item(TTR("AnimationTree"), anim_tree_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_animation_tree_bottom_panel", TTRC("Toggle AnimationTree Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("AnimationTree"), anim_tree_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_animation_tree_bottom_panel", TTRC("Toggle AnimationTree Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/debugger_editor_plugin.cpp b/editor/plugins/debugger_editor_plugin.cpp index 6396098e62..35e3b715a8 100644 --- a/editor/plugins/debugger_editor_plugin.cpp +++ b/editor/plugins/debugger_editor_plugin.cpp @@ -55,7 +55,7 @@ DebuggerEditorPlugin::DebuggerEditorPlugin(PopupMenu *p_debug_menu) { file_server = memnew(EditorFileServer); EditorDebuggerNode *debugger = memnew(EditorDebuggerNode); - Button *db = EditorNode::get_bottom_panel()->add_item(TTR("Debugger"), debugger, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_debugger_bottom_panel", TTRC("Toggle Debugger Bottom Panel"), KeyModifierMask::ALT | Key::D)); + Button *db = EditorNode::get_bottom_panel()->add_item(TTRC("Debugger"), debugger, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_debugger_bottom_panel", TTRC("Toggle Debugger Bottom Panel"), KeyModifierMask::ALT | Key::D)); debugger->set_tool_button(db); // Main editor debug menu. @@ -63,41 +63,41 @@ DebuggerEditorPlugin::DebuggerEditorPlugin(PopupMenu *p_debug_menu) { debug_menu->set_hide_on_checkable_item_selection(false); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/deploy_with_remote_debug", TTRC("Deploy with Remote Debug")), RUN_DEPLOY_REMOTE_DEBUG); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, using one-click deploy will make the executable attempt to connect to this computer's IP so the running project can be debugged.\nThis option is intended to be used for remote debugging (typically with a mobile device).\nYou don't need to enable it to use the GDScript debugger locally.")); + TTRC("When this option is enabled, using one-click deploy will make the executable attempt to connect to this computer's IP so the running project can be debugged.\nThis option is intended to be used for remote debugging (typically with a mobile device).\nYou don't need to enable it to use the GDScript debugger locally.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/small_deploy_with_network_fs", TTRC("Small Deploy with Network Filesystem")), RUN_FILE_SERVER); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, using one-click deploy for Android will only export an executable without the project data.\nThe filesystem will be provided from the project by the editor over the network.\nOn Android, deploying will use the USB cable for faster performance. This option speeds up testing for projects with large assets.")); + TTRC("When this option is enabled, using one-click deploy for Android will only export an executable without the project data.\nThe filesystem will be provided from the project by the editor over the network.\nOn Android, deploying will use the USB cable for faster performance. This option speeds up testing for projects with large assets.")); debug_menu->add_separator(); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/visible_collision_shapes", TTRC("Visible Collision Shapes")), RUN_DEBUG_COLLISIONS); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, collision shapes and raycast nodes (for 2D and 3D) will be visible in the running project.")); + TTRC("When this option is enabled, collision shapes and raycast nodes (for 2D and 3D) will be visible in the running project.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/visible_paths", TTRC("Visible Paths")), RUN_DEBUG_PATHS); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, curve resources used by path nodes will be visible in the running project.")); + TTRC("When this option is enabled, curve resources used by path nodes will be visible in the running project.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/visible_navigation", TTRC("Visible Navigation")), RUN_DEBUG_NAVIGATION); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, navigation meshes, and polygons will be visible in the running project.")); + TTRC("When this option is enabled, navigation meshes, and polygons will be visible in the running project.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/visible_avoidance", TTRC("Visible Avoidance")), RUN_DEBUG_AVOIDANCE); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, avoidance object shapes, radiuses, and velocities will be visible in the running project.")); + TTRC("When this option is enabled, avoidance object shapes, radiuses, and velocities will be visible in the running project.")); debug_menu->add_separator(); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/visible_canvas_redraw", TTRC("Debug CanvasItem Redraws")), RUN_DEBUG_CANVAS_REDRAW); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, redraw requests of 2D objects will become visible (as a short flash) in the running project.\nThis is useful to troubleshoot low processor mode.")); + TTRC("When this option is enabled, redraw requests of 2D objects will become visible (as a short flash) in the running project.\nThis is useful to troubleshoot low processor mode.")); debug_menu->add_separator(); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/sync_scene_changes", TTRC("Synchronize Scene Changes")), RUN_LIVE_DEBUG); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, any changes made to the scene in the editor will be replicated in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled.")); + TTRC("When this option is enabled, any changes made to the scene in the editor will be replicated in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/sync_script_changes", TTRC("Synchronize Script Changes")), RUN_RELOAD_SCRIPTS); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, any script that is saved will be reloaded in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled.")); + TTRC("When this option is enabled, any script that is saved will be reloaded in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled.")); debug_menu->add_check_shortcut(ED_SHORTCUT("editor/keep_server_open", TTRC("Keep Debug Server Open")), SERVER_KEEP_OPEN); debug_menu->set_item_tooltip(-1, - TTR("When this option is enabled, the editor debug server will stay open and listen for new sessions started outside of the editor itself.")); + TTRC("When this option is enabled, the editor debug server will stay open and listen for new sessions started outside of the editor itself.")); // Multi-instance, start/stop. debug_menu->add_separator(); - debug_menu->add_item(TTR("Customize Run Instances..."), RUN_MULTIPLE_INSTANCES); + debug_menu->add_item(TTRC("Customize Run Instances..."), RUN_MULTIPLE_INSTANCES); debug_menu->connect(SceneStringName(id_pressed), callable_mp(this, &DebuggerEditorPlugin::_menu_option)); run_instances_dialog = memnew(RunInstancesDialog); diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index 627023ba48..0e612f1c12 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -1495,7 +1495,7 @@ Polygon2DEditor::Polygon2DEditor() { error = memnew(AcceptDialog); add_child(error); - dock_button = EditorNode::get_bottom_panel()->add_item(TTR("Polygon"), polygon_edit, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_polygon_2d_bottom_panel", TTR("Toggle Polygon Bottom Panel"))); + dock_button = EditorNode::get_bottom_panel()->add_item(TTRC("Polygon"), polygon_edit, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_polygon_2d_bottom_panel", TTR("Toggle Polygon Bottom Panel"))); dock_button->hide(); } diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp index e0f5550606..971196e3f1 100644 --- a/editor/plugins/resource_preloader_editor_plugin.cpp +++ b/editor/plugins/resource_preloader_editor_plugin.cpp @@ -424,6 +424,6 @@ ResourcePreloaderEditorPlugin::ResourcePreloaderEditorPlugin() { preloader_editor = memnew(ResourcePreloaderEditor); preloader_editor->set_custom_minimum_size(Size2(0, 250) * EDSCALE); - button = EditorNode::get_bottom_panel()->add_item("ResourcePreloader", preloader_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_resource_preloader_bottom_panel", TTRC("Toggle ResourcePreloader Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("ResourcePreloader"), preloader_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_resource_preloader_bottom_panel", TTRC("Toggle ResourcePreloader Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 618888e079..137d6227fe 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -938,7 +938,7 @@ ShaderEditorPlugin::ShaderEditorPlugin() { empty.instantiate(); shader_tabs->add_theme_style_override(SceneStringName(panel), empty); - button = EditorNode::get_bottom_panel()->add_item(TTR("Shader Editor"), window_wrapper, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_shader_editor_bottom_panel", TTRC("Toggle Shader Editor Bottom Panel"), KeyModifierMask::ALT | Key::S)); + button = EditorNode::get_bottom_panel()->add_item(TTRC("Shader Editor"), window_wrapper, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_shader_editor_bottom_panel", TTRC("Toggle Shader Editor Bottom Panel"), KeyModifierMask::ALT | Key::S)); shader_create_dialog = memnew(ShaderCreateDialog); files_split->add_child(shader_create_dialog); diff --git a/editor/plugins/shader_file_editor_plugin.cpp b/editor/plugins/shader_file_editor_plugin.cpp index 0f7f01e133..1b08a46d80 100644 --- a/editor/plugins/shader_file_editor_plugin.cpp +++ b/editor/plugins/shader_file_editor_plugin.cpp @@ -316,6 +316,6 @@ ShaderFileEditorPlugin::ShaderFileEditorPlugin() { shader_editor = memnew(ShaderFileEditor); shader_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE); - button = EditorNode::get_bottom_panel()->add_item(TTR("ShaderFile"), shader_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_shader_file_bottom_panel", TTRC("Toggle ShaderFile Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("ShaderFile"), shader_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_shader_file_bottom_panel", TTRC("Toggle ShaderFile Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 4885a691fd..b1fb26a35c 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -2599,6 +2599,6 @@ void SpriteFramesEditorPlugin::make_visible(bool p_visible) { SpriteFramesEditorPlugin::SpriteFramesEditorPlugin() { frames_editor = memnew(SpriteFramesEditor); frames_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE); - button = EditorNode::get_bottom_panel()->add_item(TTR("SpriteFrames"), frames_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_sprite_frames_bottom_panel", TTRC("Toggle SpriteFrames Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("SpriteFrames"), frames_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_sprite_frames_bottom_panel", TTRC("Toggle SpriteFrames Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index 08a0681006..5b098b9c69 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -4034,6 +4034,6 @@ ThemeEditorPlugin::ThemeEditorPlugin() { theme_editor->plugin = this; theme_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE); - button = EditorNode::get_bottom_panel()->add_item(TTR("Theme"), theme_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_theme_bottom_panel", TTRC("Toggle Theme Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("Theme"), theme_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_theme_bottom_panel", TTRC("Toggle Theme Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/tiles/tiles_editor_plugin.cpp b/editor/plugins/tiles/tiles_editor_plugin.cpp index af860850d2..610f7d0129 100644 --- a/editor/plugins/tiles/tiles_editor_plugin.cpp +++ b/editor/plugins/tiles/tiles_editor_plugin.cpp @@ -495,7 +495,7 @@ TileMapEditorPlugin::TileMapEditorPlugin() { editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE); editor->hide(); - button = EditorNode::get_bottom_panel()->add_item(TTR("TileMap"), editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_tile_map_bottom_panel", TTRC("Toggle TileMap Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("TileMap"), editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_tile_map_bottom_panel", TTRC("Toggle TileMap Bottom Panel"))); button->hide(); } @@ -546,7 +546,7 @@ TileSetEditorPlugin::TileSetEditorPlugin() { editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE); editor->hide(); - button = EditorNode::get_bottom_panel()->add_item(TTR("TileSet"), editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_tile_set_bottom_panel", TTRC("Toggle TileSet Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("TileSet"), editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_tile_set_bottom_panel", TTRC("Toggle TileSet Bottom Panel"))); button->hide(); } diff --git a/editor/plugins/version_control_editor_plugin.cpp b/editor/plugins/version_control_editor_plugin.cpp index 195a714231..4cec12206e 100644 --- a/editor/plugins/version_control_editor_plugin.cpp +++ b/editor/plugins/version_control_editor_plugin.cpp @@ -909,7 +909,7 @@ void VersionControlEditorPlugin::fetch_available_vcs_plugin_names() { void VersionControlEditorPlugin::register_editor() { EditorDockManager::get_singleton()->add_dock(version_commit_dock, "", EditorDockManager::DOCK_SLOT_RIGHT_UL, ED_SHORTCUT_AND_COMMAND("docks/open_version_control", TTRC("Open Version Control Dock"))); - version_control_dock_button = EditorNode::get_bottom_panel()->add_item(TTR("Version Control"), version_control_dock, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_version_control_bottom_panel", TTRC("Toggle Version Control Bottom Panel"))); + version_control_dock_button = EditorNode::get_bottom_panel()->add_item(TTRC("Version Control"), version_control_dock, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_version_control_bottom_panel", TTRC("Toggle Version Control Bottom Panel"))); _set_vcs_ui_state(true); } diff --git a/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp index cb59377e19..f16224f238 100644 --- a/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp +++ b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp @@ -69,7 +69,7 @@ SceneExporterGLTFPlugin::SceneExporterGLTFPlugin() { // Add a button to the Scene -> Export menu to pop up the settings dialog. PopupMenu *menu = get_export_as_menu(); int idx = menu->get_item_count(); - menu->add_item(TTR("glTF 2.0 Scene...")); + menu->add_item(TTRC("glTF 2.0 Scene...")); menu->set_item_metadata(idx, callable_mp(this, &SceneExporterGLTFPlugin::_popup_gltf_export_dialog)); } diff --git a/modules/gridmap/editor/grid_map_editor_plugin.cpp b/modules/gridmap/editor/grid_map_editor_plugin.cpp index 2956cb12ab..d558da36e5 100644 --- a/modules/gridmap/editor/grid_map_editor_plugin.cpp +++ b/modules/gridmap/editor/grid_map_editor_plugin.cpp @@ -1760,7 +1760,7 @@ void GridMapEditorPlugin::_notification(int p_what) { grid_map_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE); grid_map_editor->hide(); - panel_button = EditorNode::get_bottom_panel()->add_item(TTR("GridMap"), grid_map_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_grid_map_bottom_panel", TTRC("Toggle GridMap Bottom Panel"))); + panel_button = EditorNode::get_bottom_panel()->add_item(TTRC("GridMap"), grid_map_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_grid_map_bottom_panel", TTRC("Toggle GridMap Bottom Panel"))); panel_button->hide(); } break; case NOTIFICATION_EXIT_TREE: { diff --git a/modules/multiplayer/editor/multiplayer_editor_plugin.cpp b/modules/multiplayer/editor/multiplayer_editor_plugin.cpp index 1be7803773..7488afda78 100644 --- a/modules/multiplayer/editor/multiplayer_editor_plugin.cpp +++ b/modules/multiplayer/editor/multiplayer_editor_plugin.cpp @@ -116,7 +116,7 @@ void MultiplayerEditorDebugger::setup_session(int p_session_id) { MultiplayerEditorPlugin::MultiplayerEditorPlugin() { repl_editor = memnew(ReplicationEditor); - button = EditorNode::get_bottom_panel()->add_item(TTR("Replication"), repl_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_replication_bottom_panel", TTRC("Toggle Replication Bottom Panel"))); + button = EditorNode::get_bottom_panel()->add_item(TTRC("Replication"), repl_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_replication_bottom_panel", TTRC("Toggle Replication Bottom Panel"))); button->hide(); repl_editor->get_pin()->connect(SceneStringName(pressed), callable_mp(this, &MultiplayerEditorPlugin::_pinned)); debugger.instantiate(); diff --git a/modules/openxr/editor/openxr_editor_plugin.cpp b/modules/openxr/editor/openxr_editor_plugin.cpp index 472d934586..146c19b8c5 100644 --- a/modules/openxr/editor/openxr_editor_plugin.cpp +++ b/modules/openxr/editor/openxr_editor_plugin.cpp @@ -54,7 +54,7 @@ void OpenXREditorPlugin::make_visible(bool p_visible) { OpenXREditorPlugin::OpenXREditorPlugin() { action_map_editor = memnew(OpenXRActionMapEditor); - EditorNode::get_bottom_panel()->add_item(TTR("OpenXR Action Map"), action_map_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_openxr_action_map_bottom_panel", TTRC("Toggle OpenXR Action Map Bottom Panel"))); + EditorNode::get_bottom_panel()->add_item(TTRC("OpenXR Action Map"), action_map_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_openxr_action_map_bottom_panel", TTRC("Toggle OpenXR Action Map Bottom Panel"))); binding_modifier_inspector_plugin = Ref(memnew(EditorInspectorPluginBindingModifier)); EditorInspector::add_inspector_plugin(binding_modifier_inspector_plugin);