Fix i18n of 3D view name

Make the full view name translatable as a whole instead of combining
from sub-strings.
This commit is contained in:
Haoyu Qiu 2021-08-14 15:24:02 +08:00
parent f32c042f3e
commit 42579a346b
2 changed files with 81 additions and 23 deletions

View file

@ -809,18 +809,66 @@ void Node3DEditorViewport::_select_region() {
}
void Node3DEditorViewport::_update_name() {
String view_mode = orthogonal ? TTR("Orthogonal") : TTR("Perspective");
String name;
switch (view_type) {
case VIEW_TYPE_USER: {
if (orthogonal) {
name = TTR("Orthogonal");
} else {
name = TTR("Perspective");
}
} break;
case VIEW_TYPE_TOP: {
if (orthogonal) {
name = TTR("Top Orthogonal");
} else {
name = TTR("Top Perspective");
}
} break;
case VIEW_TYPE_BOTTOM: {
if (orthogonal) {
name = TTR("Bottom Orthogonal");
} else {
name = TTR("Bottom Perspective");
}
} break;
case VIEW_TYPE_LEFT: {
if (orthogonal) {
name = TTR("Left Orthogonal");
} else {
name = TTR("Right Perspective");
}
} break;
case VIEW_TYPE_RIGHT: {
if (orthogonal) {
name = TTR("Right Orthogonal");
} else {
name = TTR("Right Perspective");
}
} break;
case VIEW_TYPE_FRONT: {
if (orthogonal) {
name = TTR("Front Orthogonal");
} else {
name = TTR("Front Perspective");
}
} break;
case VIEW_TYPE_REAR: {
if (orthogonal) {
name = TTR("Rear Orthogonal");
} else {
name = TTR("Rear Perspective");
}
} break;
}
if (auto_orthogonal) {
view_mode += " [auto]";
}
if (name != "") {
view_menu->set_text(name + " " + view_mode);
} else {
view_menu->set_text(view_mode);
// TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
name += TTR(" [auto]");
}
view_menu->set_text(name);
view_menu->set_size(Vector2(0, 0)); // resets the button size
}
@ -1384,7 +1432,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
case TRANSFORM_VIEW: {
_edit.plane = TRANSFORM_X_AXIS;
set_message(TTR("X-Axis Transform."), 2);
name = "";
view_type = VIEW_TYPE_USER;
_update_name();
} break;
case TRANSFORM_X_AXIS: {
@ -2325,7 +2373,7 @@ void Node3DEditorViewport::_nav_orbit(Ref<InputEventWithModifiers> p_event, cons
} else {
cursor.y_rot += p_relative.x * radians_per_pixel;
}
name = "";
view_type = VIEW_TYPE_USER;
_update_name();
}
@ -2363,7 +2411,7 @@ void Node3DEditorViewport::_nav_look(Ref<InputEventWithModifiers> p_event, const
Vector3 diff = prev_pos - pos;
cursor.pos += diff;
name = "";
view_type = VIEW_TYPE_USER;
_update_name();
}
@ -3008,7 +3056,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.y_rot = 0;
cursor.x_rot = Math_PI / 2.0;
set_message(TTR("Top View."), 2);
name = TTR("Top");
view_type = VIEW_TYPE_TOP;
_set_auto_orthogonal();
_update_name();
@ -3017,7 +3065,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.y_rot = 0;
cursor.x_rot = -Math_PI / 2.0;
set_message(TTR("Bottom View."), 2);
name = TTR("Bottom");
view_type = VIEW_TYPE_BOTTOM;
_set_auto_orthogonal();
_update_name();
@ -3026,7 +3074,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.x_rot = 0;
cursor.y_rot = Math_PI / 2.0;
set_message(TTR("Left View."), 2);
name = TTR("Left");
view_type = VIEW_TYPE_LEFT;
_set_auto_orthogonal();
_update_name();
@ -3035,7 +3083,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.x_rot = 0;
cursor.y_rot = -Math_PI / 2.0;
set_message(TTR("Right View."), 2);
name = TTR("Right");
view_type = VIEW_TYPE_RIGHT;
_set_auto_orthogonal();
_update_name();
@ -3044,7 +3092,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.x_rot = 0;
cursor.y_rot = Math_PI;
set_message(TTR("Front View."), 2);
name = TTR("Front");
view_type = VIEW_TYPE_FRONT;
_set_auto_orthogonal();
_update_name();
@ -3053,7 +3101,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
cursor.x_rot = 0;
cursor.y_rot = 0;
set_message(TTR("Rear View."), 2);
name = TTR("Rear");
view_type = VIEW_TYPE_REAR;
_set_auto_orthogonal();
_update_name();
@ -3597,8 +3645,8 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
_menu_option(VIEW_PERSPECTIVE);
}
}
if (p_state.has("view_name")) {
name = p_state["view_name"];
if (p_state.has("view_type")) {
view_type = ViewType(p_state["view_type"].operator int());
_update_name();
}
if (p_state.has("auto_orthogonal")) {
@ -3706,7 +3754,7 @@ Dictionary Node3DEditorViewport::get_state() const {
d["distance"] = cursor.distance;
d["use_environment"] = camera->get_environment().is_valid();
d["use_orthogonal"] = camera->get_projection() == Camera3D::PROJECTION_ORTHOGONAL;
d["view_name"] = name;
d["view_type"] = view_type;
d["auto_orthogonal"] = auto_orthogonal;
d["auto_orthogonal_enabled"] = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_AUTO_ORTHOGONAL));
if (view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_DISPLAY_NORMAL))) {
@ -3751,7 +3799,7 @@ void Node3DEditorViewport::reset() {
message_time = 0;
message = "";
last_message = "";
name = "";
view_type = VIEW_TYPE_USER;
cursor = Cursor();
_update_name();
@ -4366,7 +4414,7 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
viewport->set_as_audio_listener_3d(true);
}
name = "";
view_type = VIEW_TYPE_USER;
_update_name();
EditorSettings::get_singleton()->connect("settings_changed", callable_mp(this, &Node3DEditorViewport::update_transform_gizmo_view));

View file

@ -143,6 +143,16 @@ class Node3DEditorViewport : public Control {
VIEW_MAX
};
enum ViewType {
VIEW_TYPE_USER,
VIEW_TYPE_TOP,
VIEW_TYPE_BOTTOM,
VIEW_TYPE_LEFT,
VIEW_TYPE_RIGHT,
VIEW_TYPE_FRONT,
VIEW_TYPE_REAR,
};
public:
enum {
GIZMO_BASE_LAYER = 27,
@ -172,7 +182,7 @@ private:
int gpu_time_history_index;
int index;
String name;
ViewType view_type;
void _menu_option(int p_option);
void _set_auto_orthogonal();
Node3D *preview_node;