i18n: Misc fixes translation strings

Adds some translator comments to solve some questions raised on Weblate.
This commit is contained in:
Rémi Verschelde 2022-06-08 11:42:51 +02:00
parent 43f05bd6a0
commit c8ce7e34e2
29 changed files with 73 additions and 72 deletions

View file

@ -1245,7 +1245,7 @@ bool Expression::_execute(const Array &p_inputs, Object *p_instance, Expression:
case Expression::ENode::TYPE_INPUT: { case Expression::ENode::TYPE_INPUT: {
const Expression::InputNode *in = static_cast<const Expression::InputNode *>(p_node); const Expression::InputNode *in = static_cast<const Expression::InputNode *>(p_node);
if (in->index < 0 || in->index >= p_inputs.size()) { if (in->index < 0 || in->index >= p_inputs.size()) {
r_error_str = vformat(RTR("Invalid input %i (not passed) in expression"), in->index); r_error_str = vformat(RTR("Invalid input %d (not passed) in expression"), in->index);
return true; return true;
} }
r_ret = p_inputs[in->index]; r_ret = p_inputs[in->index];

View file

@ -157,10 +157,10 @@
Constructs a color from an [url=https://en.wikipedia.org/wiki/HSL_and_HSV]HSV profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1. Constructs a color from an [url=https://en.wikipedia.org/wiki/HSL_and_HSV]HSV profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1.
[codeblocks] [codeblocks]
[gdscript] [gdscript]
var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)
[/gdscript] [/gdscript]
[csharp] [csharp]
var c = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f); var color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);
[/csharp] [/csharp]
[/codeblocks] [/codeblocks]
</description> </description>
@ -175,10 +175,10 @@
Constructs a color from an [url=https://bottosson.github.io/posts/colorpicker/]OK HSL profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1. Constructs a color from an [url=https://bottosson.github.io/posts/colorpicker/]OK HSL profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1.
[codeblocks] [codeblocks]
[gdscript] [gdscript]
var c = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8) var color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)
[/gdscript] [/gdscript]
[csharp] [csharp]
var c = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f); var color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);
[/csharp] [/csharp]
[/codeblocks] [/codeblocks]
</description> </description>

View file

@ -479,7 +479,7 @@
<method name="get_script_create_dialog"> <method name="get_script_create_dialog">
<return type="ScriptCreateDialog" /> <return type="ScriptCreateDialog" />
<description> <description>
Gets the Editor's dialogue used for making scripts. Gets the Editor's dialog used for making scripts.
[b]Note:[/b] Users can configure it before use. [b]Note:[/b] Users can configure it before use.
[b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash. [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description> </description>

View file

@ -107,7 +107,7 @@
<return type="StringName" /> <return type="StringName" />
<argument index="0" name="idx" type="int" /> <argument index="0" name="idx" type="int" />
<description> <description>
Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count]). Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count] - 1).
[codeblocks] [codeblocks]
[gdscript] [gdscript]
var node_path = NodePath("Path2D/PathFollow2D/Sprite2D") var node_path = NodePath("Path2D/PathFollow2D/Sprite2D")

View file

@ -550,7 +550,7 @@
Requests the OS to open a resource with the most appropriate program. For example: Requests the OS to open a resource with the most appropriate program. For example:
- [code]OS.shell_open("C:\\Users\name\Downloads")[/code] on Windows opens the file explorer at the user's Downloads folder. - [code]OS.shell_open("C:\\Users\name\Downloads")[/code] on Windows opens the file explorer at the user's Downloads folder.
- [code]OS.shell_open("https://godotengine.org")[/code] opens the default web browser on the official Godot website. - [code]OS.shell_open("https://godotengine.org")[/code] opens the default web browser on the official Godot website.
- [code]OS.shell_open("mailto:example@example.com")[/code] opens the default email client with the "To" field set to [code]example@example.com[/code]. See [url=https://blog.escapecreative.com/customizing-mailto-links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields that can be added. - [code]OS.shell_open("mailto:example@example.com")[/code] opens the default email client with the "To" field set to [code]example@example.com[/code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The [code]mailto[/code] URL scheme[/url] for a list of fields that can be added.
Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] or [code]user://[/code] path into a system path for use with this method. Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] or [code]user://[/code] path into a system path for use with this method.
[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS and Windows. [b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS and Windows.
</description> </description>

View file

@ -4,7 +4,7 @@
Abstract base class for range-based controls. Abstract base class for range-based controls.
</brief_description> </brief_description>
<description> <description>
Range is a base class for [Control] nodes that change a floating-point [i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/i] and [i]page[/i], for example a [ScrollBar]. Range is a base class for [Control] nodes that change a floating-point [member value] between a [member min_value] and [member max_value], using a configured [member step] and [member page] size. See e.g. [ScrollBar] and [Slider] for examples of higher level nodes using Range.
</description> </description>
<tutorials> <tutorials>
</tutorials> </tutorials>

View file

@ -3035,7 +3035,7 @@
$Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600)) $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))
[/gdscript] [/gdscript]
[/codeblocks] [/codeblocks]
Using this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For a further optimization see, [method viewport_set_render_direct_to_screen]. Using this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For further optimization, see [method viewport_set_render_direct_to_screen].
</description> </description>
</method> </method>
<method name="viewport_create"> <method name="viewport_create">

View file

@ -22,7 +22,7 @@
} }
[/csharp] [/csharp]
[/codeblocks] [/codeblocks]
The timer will be automatically freed after its time elapses. The timer will be automatically freed after its time elapses, so be aware that any reference you might have kept to it will become invalid.
</description> </description>
<tutorials> <tutorials>
</tutorials> </tutorials>

View file

@ -2619,34 +2619,33 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
} }
if (key_idx != -1) { if (key_idx != -1) {
String text = TTR("Time (s): ") + rtos(animation->track_get_key_time(track, key_idx)) + "\n"; String text = TTR("Time (s):") + " " + rtos(animation->track_get_key_time(track, key_idx)) + "\n";
switch (animation->track_get_type(track)) { switch (animation->track_get_type(track)) {
case Animation::TYPE_POSITION_3D: { case Animation::TYPE_POSITION_3D: {
Vector3 t = animation->track_get_key_value(track, key_idx); Vector3 t = animation->track_get_key_value(track, key_idx);
text += "Position: " + String(t) + "\n"; text += TTR("Position:") + " " + String(t) + "\n";
} break; } break;
case Animation::TYPE_ROTATION_3D: { case Animation::TYPE_ROTATION_3D: {
Quaternion t = animation->track_get_key_value(track, key_idx); Quaternion t = animation->track_get_key_value(track, key_idx);
text += "Rotation: " + String(t) + "\n"; text += TTR("Rotation:") + " " + String(t) + "\n";
} break; } break;
case Animation::TYPE_SCALE_3D: { case Animation::TYPE_SCALE_3D: {
Vector3 t = animation->track_get_key_value(track, key_idx); Vector3 t = animation->track_get_key_value(track, key_idx);
text += "Scale: " + String(t) + "\n"; text += TTR("Scale:") + " " + String(t) + "\n";
} break; } break;
case Animation::TYPE_BLEND_SHAPE: { case Animation::TYPE_BLEND_SHAPE: {
float t = animation->track_get_key_value(track, key_idx); float t = animation->track_get_key_value(track, key_idx);
text += "Blend Shape: " + itos(t) + "\n"; text += TTR("Blend Shape:") + " " + itos(t) + "\n";
} break; } break;
case Animation::TYPE_VALUE: { case Animation::TYPE_VALUE: {
const Variant &v = animation->track_get_key_value(track, key_idx); const Variant &v = animation->track_get_key_value(track, key_idx);
text += "Type: " + Variant::get_type_name(v.get_type()) + "\n"; text += TTR("Type:") + " " + Variant::get_type_name(v.get_type()) + "\n";
Variant::Type valid_type = Variant::NIL; Variant::Type valid_type = Variant::NIL;
text += TTR("Value:") + " " + String(v);
if (!_is_value_key_valid(v, valid_type)) { if (!_is_value_key_valid(v, valid_type)) {
text += "Value: " + String(v) + " (Invalid, expected type: " + Variant::get_type_name(valid_type) + ")\n"; text += " " + vformat(TTR("(Invalid, expected type: %s)"), Variant::get_type_name(valid_type));
} else {
text += "Value: " + String(v) + "\n";
} }
text += "Easing: " + rtos(animation->track_get_key_transition(track, key_idx)); text += "\n" + TTR("Easing:") + " " + rtos(animation->track_get_key_transition(track, key_idx));
} break; } break;
case Animation::TYPE_METHOD: { case Animation::TYPE_METHOD: {
@ -2670,22 +2669,20 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
} break; } break;
case Animation::TYPE_BEZIER: { case Animation::TYPE_BEZIER: {
float h = animation->bezier_track_get_key_value(track, key_idx); float h = animation->bezier_track_get_key_value(track, key_idx);
text += "Value: " + rtos(h) + "\n"; text += TTR("Value:") + " " + rtos(h) + "\n";
Vector2 ih = animation->bezier_track_get_key_in_handle(track, key_idx); Vector2 ih = animation->bezier_track_get_key_in_handle(track, key_idx);
text += "In-Handle: " + ih + "\n"; text += TTR("In-Handle:") + " " + ih + "\n";
Vector2 oh = animation->bezier_track_get_key_out_handle(track, key_idx); Vector2 oh = animation->bezier_track_get_key_out_handle(track, key_idx);
text += "Out-Handle: " + oh + "\n"; text += TTR("Out-Handle:") + " " + oh + "\n";
int hm = animation->bezier_track_get_key_handle_mode(track, key_idx); int hm = animation->bezier_track_get_key_handle_mode(track, key_idx);
text += "Handle mode: ";
switch (hm) { switch (hm) {
case Animation::HANDLE_MODE_FREE: { case Animation::HANDLE_MODE_FREE: {
text += "Free"; text += TTR("Handle mode: Free\n");
} break; } break;
case Animation::HANDLE_MODE_BALANCED: { case Animation::HANDLE_MODE_BALANCED: {
text += "Balanced"; text += TTR("Handle mode: Balanced\n");
} break; } break;
} }
text += "\n";
} break; } break;
case Animation::TYPE_AUDIO: { case Animation::TYPE_AUDIO: {
String stream_name = "null"; String stream_name = "null";
@ -2700,15 +2697,15 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
} }
} }
text += "Stream: " + stream_name + "\n"; text += TTR("Stream:") + " " + stream_name + "\n";
float so = animation->audio_track_get_key_start_offset(track, key_idx); float so = animation->audio_track_get_key_start_offset(track, key_idx);
text += "Start (s): " + rtos(so) + "\n"; text += TTR("Start (s):") + " " + rtos(so) + "\n";
float eo = animation->audio_track_get_key_end_offset(track, key_idx); float eo = animation->audio_track_get_key_end_offset(track, key_idx);
text += "End (s): " + rtos(eo) + "\n"; text += TTR("End (s):") + " " + rtos(eo) + "\n";
} break; } break;
case Animation::TYPE_ANIMATION: { case Animation::TYPE_ANIMATION: {
String name = animation->animation_track_get_key_animation(track, key_idx); String name = animation->animation_track_get_key_animation(track, key_idx);
text += "Animation Clip: " + name + "\n"; text += TTR("Animation Clip:") + " " + name + "\n";
} break; } break;
} }
return text; return text;
@ -5073,7 +5070,7 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
} }
} }
EditorNode::get_singleton()->show_warning(TTR("Method not found in object: ") + p_method); EditorNode::get_singleton()->show_warning(TTR("Method not found in object:") + " " + p_method);
} }
void AnimationTrackEditor::_key_selected(int p_key, bool p_single, int p_track) { void AnimationTrackEditor::_key_selected(int p_key, bool p_single, int p_track) {

View file

@ -68,7 +68,7 @@ void EditorDebuggerRemoteObject::_get_property_list(List<PropertyInfo> *p_list)
String EditorDebuggerRemoteObject::get_title() { String EditorDebuggerRemoteObject::get_title() {
if (remote_object_id.is_valid()) { if (remote_object_id.is_valid()) {
return TTR("Remote ") + String(type_name) + ": " + itos(remote_object_id); return vformat(TTR("Remote %s:"), String(type_name)) + " " + itos(remote_object_id);
} else { } else {
return "<null>"; return "<null>";
} }

View file

@ -1486,7 +1486,7 @@ void ScriptEditorDebugger::_breakpoints_item_rmb_selected(const Vector2 &p_pos,
breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete Breakpoint"), ACTION_DELETE_BREAKPOINT); breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete Breakpoint"), ACTION_DELETE_BREAKPOINT);
file = selected->get_parent()->get_text(0); file = selected->get_parent()->get_text(0);
} }
breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints in: ") + file, ACTION_DELETE_BREAKPOINTS_IN_FILE); breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints in:") + " " + file, ACTION_DELETE_BREAKPOINTS_IN_FILE);
breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints"), ACTION_DELETE_ALL_BREAKPOINTS); breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints"), ACTION_DELETE_ALL_BREAKPOINTS);
breakpoints_menu->set_position(breakpoints_tree->get_global_position() + p_pos); breakpoints_menu->set_position(breakpoints_tree->get_global_position() + p_pos);

View file

@ -1215,7 +1215,7 @@ void EditorAudioBuses::_load_default_layout() {
} }
edited_path = layout_path; edited_path = layout_path;
file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file()); file->set_text(String(TTR("Layout:")) + " " + layout_path.get_file());
AudioServer::get_singleton()->set_bus_layout(state); AudioServer::get_singleton()->set_bus_layout(state);
_update_buses(); _update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history(); EditorNode::get_singleton()->get_undo_redo()->clear_history();
@ -1231,7 +1231,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) {
} }
edited_path = p_string; edited_path = p_string;
file->set_text(String(TTR("Layout")) + ": " + p_string.get_file()); file->set_text(String(TTR("Layout:")) + " " + p_string.get_file());
AudioServer::get_singleton()->set_bus_layout(state); AudioServer::get_singleton()->set_bus_layout(state);
_update_buses(); _update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history(); EditorNode::get_singleton()->get_undo_redo()->clear_history();
@ -1252,7 +1252,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) {
} }
edited_path = p_string; edited_path = p_string;
file->set_text(String(TTR("Layout")) + ": " + p_string.get_file()); file->set_text(String(TTR("Layout:")) + " " + p_string.get_file());
_update_buses(); _update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history(); EditorNode::get_singleton()->get_undo_redo()->clear_history();
call_deferred(SNAME("_select_layout")); call_deferred(SNAME("_select_layout"));
@ -1272,7 +1272,7 @@ EditorAudioBuses::EditorAudioBuses() {
file = memnew(Label); file = memnew(Label);
String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout");
file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file()); file->set_text(String(TTR("Layout:")) + " " + layout_path.get_file());
file->set_clip_text(true); file->set_clip_text(true);
file->set_h_size_flags(SIZE_EXPAND_FILL); file->set_h_size_flags(SIZE_EXPAND_FILL);
top_hb->add_child(file); top_hb->add_child(file);

View file

@ -249,7 +249,7 @@ void EditorPropertyArray::update_property() {
HBoxContainer *hbox = memnew(HBoxContainer); HBoxContainer *hbox = memnew(HBoxContainer);
vbox->add_child(hbox); vbox->add_child(hbox);
Label *label = memnew(Label(TTR("Size: "))); Label *label = memnew(Label(TTR("Size:")));
label->set_h_size_flags(SIZE_EXPAND_FILL); label->set_h_size_flags(SIZE_EXPAND_FILL);
hbox->add_child(label); hbox->add_child(label);

View file

@ -723,6 +723,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
/* Extra config */ /* Extra config */
// TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "project_manager/sorting_order", 0, "Last Edited,Name,Path") EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "project_manager/sorting_order", 0, "Last Edited,Name,Path")
if (p_extra_config.is_valid()) { if (p_extra_config.is_valid()) {

View file

@ -566,7 +566,7 @@ FindInFilesPanel::FindInFilesPanel() {
HBoxContainer *hbc = memnew(HBoxContainer); HBoxContainer *hbc = memnew(HBoxContainer);
Label *find_label = memnew(Label); Label *find_label = memnew(Label);
find_label->set_text(TTR("Find: ")); find_label->set_text(TTR("Find:"));
hbc->add_child(find_label); hbc->add_child(find_label);
_search_text_label = memnew(Label); _search_text_label = memnew(Label);
@ -614,7 +614,7 @@ FindInFilesPanel::FindInFilesPanel() {
_replace_container = memnew(HBoxContainer); _replace_container = memnew(HBoxContainer);
Label *replace_label = memnew(Label); Label *replace_label = memnew(Label);
replace_label->set_text(TTR("Replace: ")); replace_label->set_text(TTR("Replace:"));
_replace_container->add_child(replace_label); _replace_container->add_child(replace_label);
_replace_line_edit = memnew(LineEdit); _replace_line_edit = memnew(LineEdit);

View file

@ -625,7 +625,7 @@ void DynamicFontImportSettings::_change_text_opts() {
void DynamicFontImportSettings::_glyph_clear() { void DynamicFontImportSettings::_glyph_clear() {
selected_glyphs.clear(); selected_glyphs.clear();
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size())); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
_range_selected(); _range_selected();
} }
@ -654,7 +654,7 @@ void DynamicFontImportSettings::_glyph_text_selected() {
} }
} }
TS->free_rid(text_rid); TS->free_rid(text_rid);
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size())); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
} }
_range_selected(); _range_selected();
} }
@ -681,7 +681,7 @@ void DynamicFontImportSettings::_glyph_selected() {
item->clear_custom_bg_color(glyph_table->get_selected_column()); item->clear_custom_bg_color(glyph_table->get_selected_column());
} }
} }
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size())); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
item = glyph_tree->get_selected(); item = glyph_tree->get_selected();
ERR_FAIL_NULL(item); ERR_FAIL_NULL(item);
@ -769,7 +769,7 @@ void DynamicFontImportSettings::_edit_range(int32_t p_start, int32_t p_end) {
col = 0; col = 0;
} }
} }
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size())); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
} }
bool DynamicFontImportSettings::_char_update(int32_t p_char) { bool DynamicFontImportSettings::_char_update(int32_t p_char) {
@ -1292,7 +1292,7 @@ void DynamicFontImportSettings::open_settings(const String &p_path) {
} }
} }
} }
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size())); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
import_settings_data->options = options_general; import_settings_data->options = options_general;
inspector_general->edit(import_settings_data.ptr()); inspector_general->edit(import_settings_data.ptr());
@ -1556,7 +1556,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
label_glyphs = memnew(Label); label_glyphs = memnew(Label);
text_hb->add_child(label_glyphs); text_hb->add_child(label_glyphs);
label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(0)); label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(0));
label_glyphs->set_custom_minimum_size(Size2(50 * EDSCALE, 0)); label_glyphs->set_custom_minimum_size(Size2(50 * EDSCALE, 0));
Button *btn_fill = memnew(Button); Button *btn_fill = memnew(Button);

View file

@ -107,7 +107,7 @@ Error ResourceImporterImageFont::import(const String &p_source_file, const Strin
Ref<Image> img; Ref<Image> img;
img.instantiate(); img.instantiate();
Error err = ImageLoader::load_image(p_source_file, img); Error err = ImageLoader::load_image(p_source_file, img);
ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture: ") + "\"" + p_source_file + "\"."); ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture:") + " \"" + p_source_file + "\".");
font->set_texture_image(0, Vector2i(base_size, 0), 0, img); font->set_texture_image(0, Vector2i(base_size, 0), 0, img);
int count = columns * rows; int count = columns * rows;

View file

@ -1354,7 +1354,7 @@ SceneImportSettings::SceneImportSettings() {
HBoxContainer *extension_hb = memnew(HBoxContainer); HBoxContainer *extension_hb = memnew(HBoxContainer);
save_path->get_vbox()->add_child(extension_hb); save_path->get_vbox()->add_child(extension_hb);
extension_hb->add_spacer(); extension_hb->add_spacer();
extension_hb->add_child(memnew(Label(TTR("Save Extension: ")))); extension_hb->add_child(memnew(Label(TTR("Save Extension:"))));
external_extension_type = memnew(OptionButton); external_extension_type = memnew(OptionButton);
extension_hb->add_child(external_extension_type); extension_hb->add_child(external_extension_type);
external_extension_type->add_item(TTR("Text: *.tres")); external_extension_type->add_item(TTR("Text: *.tres"));

View file

@ -1639,8 +1639,10 @@ AnimationPlayerEditor::AnimationPlayerEditor(AnimationPlayerEditorPlugin *p_plug
onion_skinning = memnew(MenuButton); onion_skinning = memnew(MenuButton);
onion_skinning->set_tooltip(TTR("Onion Skinning Options")); onion_skinning->set_tooltip(TTR("Onion Skinning Options"));
onion_skinning->get_popup()->add_separator(TTR("Directions")); onion_skinning->get_popup()->add_separator(TTR("Directions"));
// TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
onion_skinning->get_popup()->add_check_item(TTR("Past"), ONION_SKINNING_PAST); onion_skinning->get_popup()->add_check_item(TTR("Past"), ONION_SKINNING_PAST);
onion_skinning->get_popup()->set_item_checked(-1, true); onion_skinning->get_popup()->set_item_checked(-1, true);
// TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
onion_skinning->get_popup()->add_check_item(TTR("Future"), ONION_SKINNING_FUTURE); onion_skinning->get_popup()->add_check_item(TTR("Future"), ONION_SKINNING_FUTURE);
onion_skinning->get_popup()->add_separator(TTR("Depth")); onion_skinning->get_popup()->add_separator(TTR("Depth"));
onion_skinning->get_popup()->add_radio_check_item(TTR("1 step"), ONION_SKINNING_1_STEP); onion_skinning->get_popup()->add_radio_check_item(TTR("1 step"), ONION_SKINNING_1_STEP);

View file

@ -1943,7 +1943,7 @@ AnimationNodeStateMachineEditor::AnimationNodeStateMachineEditor() {
tool_erase_hb->add_child(tool_erase); tool_erase_hb->add_child(tool_erase);
top_hb->add_child(memnew(VSeparator)); top_hb->add_child(memnew(VSeparator));
top_hb->add_child(memnew(Label(TTR("Transition: ")))); top_hb->add_child(memnew(Label(TTR("Transition:"))));
transition_mode = memnew(OptionButton); transition_mode = memnew(OptionButton);
top_hb->add_child(transition_mode); top_hb->add_child(transition_mode);

View file

@ -5171,11 +5171,12 @@ CanvasItemEditor::CanvasItemEditor() {
hb->add_child(memnew(VSeparator)); hb->add_child(memnew(VSeparator));
view_menu = memnew(MenuButton); view_menu = memnew(MenuButton);
view_menu->set_shortcut_context(this); // TRANSLATORS: Noun, name of the 2D/3D View menus.
view_menu->set_text(TTR("View")); view_menu->set_text(TTR("View"));
view_menu->set_switch_on_hover(true);
view_menu->set_shortcut_context(this);
hb->add_child(view_menu); hb->add_child(view_menu);
view_menu->get_popup()->connect("id_pressed", callable_mp(this, &CanvasItemEditor::_popup_callback)); view_menu->get_popup()->connect("id_pressed", callable_mp(this, &CanvasItemEditor::_popup_callback));
view_menu->set_switch_on_hover(true);
p = view_menu->get_popup(); p = view_menu->get_popup();
p->set_hide_on_checkable_item_selection(false); p->set_hide_on_checkable_item_selection(false);

View file

@ -213,7 +213,7 @@ GPUParticles3DEditorBase::GPUParticles3DEditorBase() {
emission_fill->add_item(TTR("Surface Points")); emission_fill->add_item(TTR("Surface Points"));
emission_fill->add_item(TTR("Surface Points+Normal (Directed)")); emission_fill->add_item(TTR("Surface Points+Normal (Directed)"));
emission_fill->add_item(TTR("Volume")); emission_fill->add_item(TTR("Volume"));
emd_vb->add_margin_child(TTR("Emission Source: "), emission_fill); emd_vb->add_margin_child(TTR("Emission Source:"), emission_fill);
emission_dialog->get_ok_button()->set_text(TTR("Create")); emission_dialog->get_ok_button()->set_text(TTR("Create"));
emission_dialog->connect("confirmed", callable_mp(this, &GPUParticles3DEditorBase::_generate_emission_points)); emission_dialog->connect("confirmed", callable_mp(this, &GPUParticles3DEditorBase::_generate_emission_points));

View file

@ -4167,7 +4167,8 @@ void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) {
Vector3 motion_snapped = motion; Vector3 motion_snapped = motion;
motion_snapped.snap(Vector3(snap, snap, snap)); motion_snapped.snap(Vector3(snap, snap, snap));
// This might not be necessary anymore after issue #288 is solved (in 4.0?). // This might not be necessary anymore after issue #288 is solved (in 4.0?).
set_message(TTR("Scaling: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " + // TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
set_message(TTR("Scaling:") + " (" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")"); String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
motion = _edit.original.basis.inverse().xform(motion); motion = _edit.original.basis.inverse().xform(motion);
@ -4267,7 +4268,8 @@ void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) {
} }
Vector3 motion_snapped = motion; Vector3 motion_snapped = motion;
motion_snapped.snap(Vector3(snap, snap, snap)); motion_snapped.snap(Vector3(snap, snap, snap));
set_message(TTR("Translating: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " + // TRANSLATORS: Refers to changing the position of a node in the 3D editor.
set_message(TTR("Translating:") + " (" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")"); String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
motion = spatial_editor->get_gizmo_transform().basis.inverse().xform(motion); motion = spatial_editor->get_gizmo_transform().basis.inverse().xform(motion);
@ -7711,6 +7713,7 @@ Node3DEditor::Node3DEditor() {
p->connect("id_pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed)); p->connect("id_pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed));
view_menu = memnew(MenuButton); view_menu = memnew(MenuButton);
// TRANSLATORS: Noun, name of the 2D/3D View menus.
view_menu->set_text(TTR("View")); view_menu->set_text(TTR("View"));
view_menu->set_switch_on_hover(true); view_menu->set_switch_on_hover(true);
view_menu->set_shortcut_context(this); view_menu->set_shortcut_context(this);

View file

@ -63,7 +63,7 @@ void OccluderInstance3DEditorPlugin::_bake_select_file(const String &p_file) {
break; break;
} }
case OccluderInstance3D::BAKE_ERROR_CANT_SAVE: { case OccluderInstance3D::BAKE_ERROR_CANT_SAVE: {
EditorNode::get_singleton()->show_warning(TTR("Could not save the new occluder at the specified path: ") + p_file); EditorNode::get_singleton()->show_warning(TTR("Could not save the new occluder at the specified path:") + " " + p_file);
break; break;
} }
default: { default: {

View file

@ -420,11 +420,8 @@ ResourcePreloaderEditorPlugin::ResourcePreloaderEditorPlugin() {
preloader_editor = memnew(ResourcePreloaderEditor); preloader_editor = memnew(ResourcePreloaderEditor);
preloader_editor->set_custom_minimum_size(Size2(0, 250) * EDSCALE); preloader_editor->set_custom_minimum_size(Size2(0, 250) * EDSCALE);
button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("ResourcePreloader"), preloader_editor); button = EditorNode::get_singleton()->add_bottom_panel_item("ResourcePreloader", preloader_editor);
button->hide(); button->hide();
//preloader_editor->set_anchor( MARGIN_TOP, Control::ANCHOR_END);
//preloader_editor->set_margin( MARGIN_TOP, 120 );
} }
ResourcePreloaderEditorPlugin::~ResourcePreloaderEditorPlugin() { ResourcePreloaderEditorPlugin::~ResourcePreloaderEditorPlugin() {

View file

@ -546,7 +546,7 @@ Sprite2DEditor::Sprite2DEditor() {
debug_uv_dialog->connect("confirmed", callable_mp(this, &Sprite2DEditor::_create_node)); debug_uv_dialog->connect("confirmed", callable_mp(this, &Sprite2DEditor::_create_node));
HBoxContainer *hb = memnew(HBoxContainer); HBoxContainer *hb = memnew(HBoxContainer);
hb->add_child(memnew(Label(TTR("Simplification: ")))); hb->add_child(memnew(Label(TTR("Simplification:"))));
simplification = memnew(SpinBox); simplification = memnew(SpinBox);
simplification->set_min(0.01); simplification->set_min(0.01);
simplification->set_max(10.00); simplification->set_max(10.00);
@ -554,7 +554,7 @@ Sprite2DEditor::Sprite2DEditor() {
simplification->set_value(2); simplification->set_value(2);
hb->add_child(simplification); hb->add_child(simplification);
hb->add_spacer(); hb->add_spacer();
hb->add_child(memnew(Label(TTR("Shrink (Pixels): ")))); hb->add_child(memnew(Label(TTR("Shrink (Pixels):"))));
shrink_pixels = memnew(SpinBox); shrink_pixels = memnew(SpinBox);
shrink_pixels->set_min(0); shrink_pixels->set_min(0);
shrink_pixels->set_max(10); shrink_pixels->set_max(10);
@ -562,7 +562,7 @@ Sprite2DEditor::Sprite2DEditor() {
shrink_pixels->set_value(0); shrink_pixels->set_value(0);
hb->add_child(shrink_pixels); hb->add_child(shrink_pixels);
hb->add_spacer(); hb->add_spacer();
hb->add_child(memnew(Label(TTR("Grow (Pixels): ")))); hb->add_child(memnew(Label(TTR("Grow (Pixels):"))));
grow_pixels = memnew(SpinBox); grow_pixels = memnew(SpinBox);
grow_pixels->set_min(0); grow_pixels->set_min(0);
grow_pixels->set_max(10); grow_pixels->set_max(10);

View file

@ -1528,7 +1528,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// If no exit bit was set, and has sequence outputs, guess next node. // If no exit bit was set, and has sequence outputs, guess next node.
if (output >= node->sequence_output_count) { if (output >= node->sequence_output_count) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
error_str = RTR("Node returned an invalid sequence output: ") + itos(output); error_str = RTR("Node returned an invalid sequence output:") + " " + itos(output);
error = true; error = true;
break; break;
} }
@ -1594,7 +1594,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// Check for stack overflow. // Check for stack overflow.
if (flow_stack_pos + 1 >= flow_max) { if (flow_stack_pos + 1 >= flow_max) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
error_str = RTR("Stack overflow with stack depth: ") + itos(output); error_str = RTR("Stack overflow with stack depth:") + " " + itos(output);
error = true; error = true;
break; break;
} }

View file

@ -391,7 +391,7 @@ public:
if (!valid) { if (!valid) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("Input type not iterable: ") + Variant::get_type_name(p_inputs[0]->get_type()); r_error_str = RTR("Input type not iterable:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
return 0; return 0;
} }
@ -414,7 +414,7 @@ public:
if (!valid) { if (!valid) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("Iterator became invalid: ") + Variant::get_type_name(p_inputs[0]->get_type()); r_error_str = RTR("Iterator became invalid:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
return 0; return 0;
} }

View file

@ -1116,9 +1116,9 @@ public:
r_error_str = *p_outputs[0]; r_error_str = *p_outputs[0];
} else { } else {
if (unary) { if (unary) {
r_error_str = String(Variant::get_operator_name(op)) + RTR(": Invalid argument of type: ") + Variant::get_type_name(p_inputs[0]->get_type()); r_error_str = String(Variant::get_operator_name(op)) + ": " + RTR("Invalid argument of type:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
} else { } else {
r_error_str = String(Variant::get_operator_name(op)) + RTR(": Invalid arguments: ") + "A: " + Variant::get_type_name(p_inputs[0]->get_type()) + " B: " + Variant::get_type_name(p_inputs[1]->get_type()); r_error_str = String(Variant::get_operator_name(op)) + ": " + RTR("Invalid arguments:") + " A: " + Variant::get_type_name(p_inputs[0]->get_type()) + ", B: " + Variant::get_type_name(p_inputs[1]->get_type());
} }
} }
} }
@ -1335,7 +1335,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override { virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override {
if (!instance->get_variable(variable, p_outputs[0])) { if (!instance->get_variable(variable, p_outputs[0])) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("VariableGet not found in script: ") + "'" + String(variable) + "'"; r_error_str = RTR("VariableGet not found in script:") + " '" + String(variable) + "'";
return 0; return 0;
} }
return 0; return 0;
@ -1447,7 +1447,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override { virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override {
if (!instance->set_variable(variable, *p_inputs[0])) { if (!instance->set_variable(variable, *p_inputs[0])) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("VariableSet not found in script: ") + "'" + String(variable) + "'"; r_error_str = RTR("VariableSet not found in script:") + " '" + String(variable) + "'";
} }
return 0; return 0;