summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/editor/connections_dialog.cpp2
-rw-r--r--tools/editor/editor_file_dialog.cpp18
-rw-r--r--tools/editor/editor_file_dialog.h4
-rw-r--r--tools/editor/editor_node.cpp16
-rw-r--r--tools/editor/icons/2x/icon_loop_interpolation.pngbin0 -> 709 bytes
-rw-r--r--tools/editor/icons/2x/icon_track_trigger.pngbin0 -> 214 bytes
-rw-r--r--tools/editor/icons/icon_loop_interpolation.pngbin342 -> 374 bytes
-rw-r--r--tools/editor/icons/icon_track_trigger.pngbin0 -> 158 bytes
-rw-r--r--tools/editor/icons/source/icon_loop_interpolation.svg111
-rw-r--r--tools/editor/icons/source/icon_track_trigger.svg109
-rw-r--r--tools/editor/io_plugins/editor_font_import_plugin.cpp2
-rw-r--r--tools/editor/io_plugins/editor_import_collada.cpp6
-rw-r--r--tools/editor/io_plugins/editor_scene_import_plugin.cpp160
-rw-r--r--tools/editor/io_plugins/editor_scene_import_plugin.h8
-rw-r--r--tools/editor/plugins/script_editor_plugin.cpp16
-rw-r--r--tools/editor/plugins/script_editor_plugin.h4
-rw-r--r--tools/editor/plugins/shader_editor_plugin.cpp32
-rw-r--r--tools/editor/scene_tree_dock.cpp77
-rw-r--r--tools/editor/script_create_dialog.cpp1
-rw-r--r--tools/translations/es.po86
-rw-r--r--tools/translations/es_AR.po82
-rw-r--r--tools/translations/fr.po69
-rw-r--r--tools/translations/ko.po262
-rw-r--r--tools/translations/pt_BR.po84
-rw-r--r--tools/translations/ru.po105
-rw-r--r--tools/translations/tools.pot34
26 files changed, 827 insertions, 461 deletions
diff --git a/tools/editor/connections_dialog.cpp b/tools/editor/connections_dialog.cpp
index 8847654ad7..faaae4360b 100644
--- a/tools/editor/connections_dialog.cpp
+++ b/tools/editor/connections_dialog.cpp
@@ -309,7 +309,7 @@ ConnectDialog::ConnectDialog() {
tree = memnew(SceneTreeEditor(false));
- vbc_left->add_margin_child(TTR("Conect To Node:"),tree,true);
+ vbc_left->add_margin_child(TTR("Connect To Node:"),tree,true);
diff --git a/tools/editor/editor_file_dialog.cpp b/tools/editor/editor_file_dialog.cpp
index 5afc4a7192..97feaa80a5 100644
--- a/tools/editor/editor_file_dialog.cpp
+++ b/tools/editor/editor_file_dialog.cpp
@@ -380,7 +380,7 @@ void EditorFileDialog::_action_pressed() {
}
- if (dir_access->file_exists(f)) {
+ if (dir_access->file_exists(f) && !disable_overwrite_warning) {
confirm_save->set_text(TTR("File Exists, Overwrite?"));
confirm_save->popup_centered(Size2(200,80));
} else {
@@ -1162,6 +1162,8 @@ void EditorFileDialog::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_display_mode","mode"),&EditorFileDialog::set_display_mode);
ObjectTypeDB::bind_method(_MD("get_display_mode"),&EditorFileDialog::get_display_mode);
ObjectTypeDB::bind_method(_MD("_thumbnail_result"),&EditorFileDialog::_thumbnail_result);
+ ObjectTypeDB::bind_method(_MD("set_disable_overwrite_warning","disable"),&EditorFileDialog::set_disable_overwrite_warning);
+ ObjectTypeDB::bind_method(_MD("is_overwrite_warning_disabled"),&EditorFileDialog::is_overwrite_warning_disabled);
ObjectTypeDB::bind_method(_MD("_recent_selected"),&EditorFileDialog::_recent_selected);
ObjectTypeDB::bind_method(_MD("_go_back"),&EditorFileDialog::_go_back);
@@ -1235,12 +1237,23 @@ void EditorFileDialog::_save_to_recent() {
}
+void EditorFileDialog::set_disable_overwrite_warning(bool p_disable) {
+
+ disable_overwrite_warning=p_disable;
+}
+
+bool EditorFileDialog::is_overwrite_warning_disabled() const{
+
+ return disable_overwrite_warning;
+}
+
+
EditorFileDialog::EditorFileDialog() {
show_hidden_files=default_show_hidden_files;
display_mode=default_display_mode;
local_history_pos=0;
-
+ disable_overwrite_warning=false;
VBoxContainer *vbc = memnew( VBoxContainer );
add_child(vbc);
set_child_rect(vbc);
@@ -1466,4 +1479,5 @@ EditorLineEditFileChooser::EditorLineEditFileChooser() {
dialog->connect("dir_selected",this,"_chosen");
dialog->connect("files_selected",this,"_chosen");
+
}
diff --git a/tools/editor/editor_file_dialog.h b/tools/editor/editor_file_dialog.h
index 5de33e2597..14683856c0 100644
--- a/tools/editor/editor_file_dialog.h
+++ b/tools/editor/editor_file_dialog.h
@@ -130,6 +130,7 @@ private:
bool show_hidden_files;
DisplayMode display_mode;
+ bool disable_overwrite_warning;
bool invalidated;
void update_dir();
@@ -216,6 +217,9 @@ public:
void invalidate();
+ void set_disable_overwrite_warning(bool p_disable);
+ bool is_overwrite_warning_disabled() const;
+
EditorFileDialog();
~EditorFileDialog();
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index dd50b720f7..5a3e3069e4 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -205,6 +205,18 @@ void EditorNode::_unhandled_input(const InputEvent& p_event) {
case KEY_F6: _menu_option_confirm(RUN_PLAY_SCENE,true); break;
//case KEY_F7: _menu_option_confirm(RUN_PAUSE,true); break;
case KEY_F8: _menu_option_confirm(RUN_STOP,true); break;*/
+ case KEY_TAB:
+ if (p_event.key.mod.command) {
+ int current_tab = editor_data.get_edited_scene();
+ int tab_offset = 1;
+ if (p_event.key.mod.shift)
+ tab_offset = -1;
+ int next_tab = current_tab + tab_offset;
+ next_tab = next_tab >= 0 ? next_tab : editor_data.get_edited_scene_count() - 1;
+ next_tab %= editor_data.get_edited_scene_count();
+ _scene_tab_changed(next_tab);
+ }
+ break;
}
}
@@ -4606,9 +4618,9 @@ void EditorNode::_update_layouts_menu() {
editor_layouts->set_size(Vector2());
editor_layouts->add_shortcut(ED_SHORTCUT("layout/save",TTR("Save Layout")), SETTINGS_LAYOUT_SAVE);
- editor_layouts->add_shortcut(ED_SHORTCUT("layout/load",TTR("Load Layout")), SETTINGS_LAYOUT_DELETE);
+ editor_layouts->add_shortcut(ED_SHORTCUT("layout/delete",TTR("Delete Layout")), SETTINGS_LAYOUT_DELETE);
editor_layouts->add_separator();
- editor_layouts->add_shortcut(ED_SHORTCUT("property_editor/reset",TTR("Default")), SETTINGS_LAYOUT_DEFAULT);
+ editor_layouts->add_shortcut(ED_SHORTCUT("layout/default",TTR("Default")), SETTINGS_LAYOUT_DEFAULT);
Ref<ConfigFile> config;
config.instance();
diff --git a/tools/editor/icons/2x/icon_loop_interpolation.png b/tools/editor/icons/2x/icon_loop_interpolation.png
new file mode 100644
index 0000000000..6009b50300
--- /dev/null
+++ b/tools/editor/icons/2x/icon_loop_interpolation.png
Binary files differ
diff --git a/tools/editor/icons/2x/icon_track_trigger.png b/tools/editor/icons/2x/icon_track_trigger.png
new file mode 100644
index 0000000000..c04d47f9a4
--- /dev/null
+++ b/tools/editor/icons/2x/icon_track_trigger.png
Binary files differ
diff --git a/tools/editor/icons/icon_loop_interpolation.png b/tools/editor/icons/icon_loop_interpolation.png
index 2f92ab7bf3..488b33316e 100644
--- a/tools/editor/icons/icon_loop_interpolation.png
+++ b/tools/editor/icons/icon_loop_interpolation.png
Binary files differ
diff --git a/tools/editor/icons/icon_track_trigger.png b/tools/editor/icons/icon_track_trigger.png
new file mode 100644
index 0000000000..e89f95561a
--- /dev/null
+++ b/tools/editor/icons/icon_track_trigger.png
Binary files differ
diff --git a/tools/editor/icons/source/icon_loop_interpolation.svg b/tools/editor/icons/source/icon_loop_interpolation.svg
new file mode 100644
index 0000000000..3733acb253
--- /dev/null
+++ b/tools/editor/icons/source/icon_loop_interpolation.svg
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ viewBox="0 0 16 16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_loop_interpolation.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:docname="icon_loop_interpolation.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="32"
+ inkscape:cx="3.8522581"
+ inkscape:cy="6.9411054"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-paths="true"
+ inkscape:bbox-nodes="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-object-midpoints="true"
+ inkscape:snap-center="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-midpoints="true"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:object-nodes="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3336" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <g
+ id="layer1-8"
+ inkscape:label="Layer 1"
+ transform="matrix(0,-1,1,0,-1021.3622,1033.3622)" />
+ <circle
+ style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4155"
+ cx="3"
+ cy="1048.3622"
+ r="2" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="M 4 3 A 2 2 0 0 0 2.2675781 4 A 2 2 0 0 0 2.0019531 5 L 2 5 L 2 5.046875 L 2 12 L 4 12 L 4 7 L 4 5 L 6 5 L 6 3 L 4 3 z "
+ transform="translate(0,1036.3622)"
+ id="path4157" />
+ <path
+ style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 6,1037.3622 0,6 4,-3 z"
+ id="path4159"
+ inkscape:connector-curvature="0" />
+ <circle
+ r="2"
+ cy="1040.3622"
+ cx="13"
+ id="circle4161"
+ style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="M 12 4 L 12 9 L 12 11 L 10 11 L 10 13 L 12 13 A 2 2 0 0 0 13.732422 12 A 2 2 0 0 0 13.998047 11 L 14 11 L 14 4 L 12 4 z "
+ transform="translate(0,1036.3622)"
+ id="path4163" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path4165"
+ d="m 10,1045.3622 0,6 -4,-3 z"
+ style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/tools/editor/icons/source/icon_track_trigger.svg b/tools/editor/icons/source/icon_track_trigger.svg
new file mode 100644
index 0000000000..9c13791f70
--- /dev/null
+++ b/tools/editor/icons/source/icon_track_trigger.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="8"
+ viewBox="0 0 16 8"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_track_trigger.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:docname="icon_track_trigger.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="32"
+ inkscape:cx="0.93634514"
+ inkscape:cy="3.5256605"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-paths="true"
+ inkscape:bbox-nodes="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-object-midpoints="true"
+ inkscape:snap-center="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ showguides="true"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:object-nodes="true"
+ inkscape:object-paths="true"
+ inkscape:snap-intersection-paths="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3336" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1044.3622)">
+ <circle
+ r="1"
+ cy="1048.3622"
+ cx="11"
+ id="circle4232"
+ style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle4234"
+ cx="14"
+ cy="1046.3622"
+ r="1" />
+ <rect
+ style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4169"
+ width="6"
+ height="2"
+ x="1"
+ y="1045.3622" />
+ <rect
+ style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4171"
+ width="2"
+ height="3.9999826"
+ x="3"
+ y="1047.3622" />
+ <circle
+ style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle4173"
+ cx="8"
+ cy="1050.3622"
+ r="1" />
+ </g>
+</svg>
diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp
index caa838cfd1..97ccb766c0 100644
--- a/tools/editor/io_plugins/editor_font_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp
@@ -533,7 +533,7 @@ class EditorFontImportDialog : public ConfirmationDialog {
}
if (dest->get_line_edit()->get_text().extension().to_lower() != "fnt") {
- error_dialog->set_text(TTR("Invalid file extension. \nPlease use .fnt"));
+ error_dialog->set_text(TTR("Invalid file extension.\nPlease use .fnt."));
error_dialog->popup_centered(Size2(200,100));
return;
}
diff --git a/tools/editor/io_plugins/editor_import_collada.cpp b/tools/editor/io_plugins/editor_import_collada.cpp
index 80cd54756e..363cba3678 100644
--- a/tools/editor/io_plugins/editor_import_collada.cpp
+++ b/tools/editor/io_plugins/editor_import_collada.cpp
@@ -2077,6 +2077,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
animation->add_track(Animation::TYPE_TRANSFORM);
int track = animation->get_track_count() -1;
animation->track_set_path( track , path );
+ animation->track_set_imported( track , true ); //helps merging later
Vector<float> snapshots = base_snapshots;
@@ -2229,6 +2230,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
animation->add_track(Animation::TYPE_TRANSFORM);
int track = animation->get_track_count() -1;
animation->track_set_path( track , path );
+ animation->track_set_imported( track , true ); //helps merging later
Transform xform = cn->compute_transform(collada);
@@ -2284,8 +2286,11 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
animation->add_track(Animation::TYPE_VALUE);
int track = animation->get_track_count() -1;
+
path = path +":"+at.param;
animation->track_set_path( track , path );
+ animation->track_set_imported( track , true ); //helps merging later
+
for(int i=0;i<at.keys.size();i++) {
@@ -2376,6 +2381,7 @@ Node* EditorSceneImporterCollada::import_scene(const String& p_path, uint32_t p_
state.create_animations(p_flags&IMPORT_ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS);
AnimationPlayer *ap = memnew( AnimationPlayer );
+ ap->set_name("animations");
for(int i=0;i<state.animations.size();i++) {
String name;
if (state.animations[i]->get_name()=="")
diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp
index ed766c6598..c7d92a9658 100644
--- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp
@@ -1069,11 +1069,13 @@ const EditorSceneImportDialog::FlagInfo EditorSceneImportDialog::scene_flag_name
{EditorSceneImportPlugin::SCENE_FLAG_IMPORT_ANIMATIONS,("Actions"),"Import Animations",true},
{EditorSceneImportPlugin::SCENE_FLAG_COMPRESS_GEOMETRY,("Actions"),"Compress Geometry",false},
{EditorSceneImportPlugin::SCENE_FLAG_GENERATE_TANGENT_ARRAYS,("Actions"),"Force Generation of Tangent Arrays",false},
- {EditorSceneImportPlugin::SCENE_FLAG_DETECT_ALPHA,("Materials"),"Set Alpha in Materials (-alpha)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_DETECT_VCOLOR,("Materials"),"Set Vert. Color in Materials (-vcol)",true},
{EditorSceneImportPlugin::SCENE_FLAG_LINEARIZE_DIFFUSE_TEXTURES,("Actions"),"SRGB->Linear Of Diffuse Textures",false},
{EditorSceneImportPlugin::SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY,("Actions"),"Convert Normal Maps to XY",true},
{EditorSceneImportPlugin::SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS,("Actions"),"Set Material Lightmap to UV2 if Tex2Array Exists",true},
+ {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_MATERIALS,("Merge"),"Keep Materials after first import (delete them for re-import).",true},
+ {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,("Merge"),"Keep user-added Animation tracks.",true},
+ {EditorSceneImportPlugin::SCENE_FLAG_DETECT_ALPHA,("Materials"),"Set Alpha in Materials (-alpha)",true},
+ {EditorSceneImportPlugin::SCENE_FLAG_DETECT_VCOLOR,("Materials"),"Set Vert. Color in Materials (-vcol)",true},
{EditorSceneImportPlugin::SCENE_FLAG_CREATE_COLLISIONS,("Create"),"Create Collisions and/or Rigid Bodies (-col,-colonly,-rigid)",true},
{EditorSceneImportPlugin::SCENE_FLAG_CREATE_PORTALS,("Create"),"Create Portals (-portal)",true},
{EditorSceneImportPlugin::SCENE_FLAG_CREATE_ROOMS,("Create"),"Create Rooms (-room)",true},
@@ -2455,6 +2457,138 @@ void EditorSceneImportPlugin::_optimize_animations(Node *scene, float p_max_lin_
}
+void EditorSceneImportPlugin::_find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String, Ref<Material> > &materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims,Set<Ref<Mesh> > &tested_meshes) {
+
+ if (node->get_owner()!=scene)
+ return;
+
+ String path = scene->get_path_to(node);
+
+ if (p_merge_anims && node->cast_to<AnimationPlayer>()) {
+
+ AnimationPlayer *ap = node->cast_to<AnimationPlayer>();
+ List<StringName> anims;
+ ap->get_animation_list(&anims);
+ for (List<StringName>::Element *E=anims.front();E;E=E->next()) {
+ Ref<Animation> anim = ap->get_animation(E->get());
+ Ref<Animation> clone;
+
+ bool has_user_tracks=false;
+
+ for(int i=0;i<anim->get_track_count();i++) {
+
+ if (!anim->track_is_imported(i)) {
+ has_user_tracks=true;
+ break;
+ }
+ }
+
+ if (has_user_tracks) {
+
+ clone = anim->duplicate();
+ for(int i=0;i<clone->get_track_count();i++) {
+ if (clone->track_is_imported(i)) {
+ clone->remove_track(i);
+ i--;
+ }
+ }
+
+ merged_anims[path+"::"+String(E->get())]=clone;
+ }
+ }
+ }
+
+
+
+ if (p_merge_material && node->cast_to<MeshInstance>()) {
+ MeshInstance *mi=node->cast_to<MeshInstance>();
+ Ref<Mesh> mesh = mi->get_mesh();
+ if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) {
+
+ for(int i=0;i<mesh->get_surface_count();i++) {
+ Ref<Material> material = mesh->surface_get_material(i);
+ materials[mesh->get_name()+":surf:"+mesh->surface_get_name(i)]=material;
+ }
+
+ tested_meshes.insert(mesh);
+ }
+ }
+
+
+
+ for(int i=0;i<node->get_child_count();i++) {
+ _find_resources_to_merge(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes);
+ }
+
+}
+
+
+void EditorSceneImportPlugin::_merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes) {
+
+ if (node->get_owner()!=scene)
+ return;
+
+ String path = scene->get_path_to(node);
+
+ if (node->cast_to<AnimationPlayer>()) {
+
+ AnimationPlayer *ap = node->cast_to<AnimationPlayer>();
+ List<StringName> anims;
+ ap->get_animation_list(&anims);
+ for (List<StringName>::Element *E=anims.front();E;E=E->next()) {
+ Ref<Animation> anim = ap->get_animation(E->get());
+
+ String anim_path = path+"::"+String(E->get());
+
+ if (merged_anims.has(anim_path)) {
+
+ Ref<Animation> user_tracks = merged_anims[anim_path];
+ for(int i=0;i<user_tracks->get_track_count();i++) {
+
+ int idx = anim->get_track_count();
+ anim->add_track(user_tracks->track_get_type(i));
+ anim->track_set_path(idx,user_tracks->track_get_path(i));
+ anim->track_set_interpolation_type(idx,user_tracks->track_get_interpolation_type(i));
+ for(int j=0;j<user_tracks->track_get_key_count(i);j++) {
+
+ float ofs = user_tracks->track_get_key_time(i,j);
+ float trans = user_tracks->track_get_key_transition(i,j);
+ Variant value = user_tracks->track_get_key_value(i,j);
+
+ anim->track_insert_key(idx,ofs,value,trans);
+ }
+ }
+ }
+ }
+ }
+
+
+
+ if (node->cast_to<MeshInstance>()) {
+ MeshInstance *mi=node->cast_to<MeshInstance>();
+ Ref<Mesh> mesh = mi->get_mesh();
+ if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) {
+
+ for(int i=0;i<mesh->get_surface_count();i++) {
+ String sname = mesh->get_name()+":surf:"+mesh->surface_get_name(i);
+
+ if (materials.has(sname)) {
+ mesh->surface_set_material(i,materials[sname]);
+ }
+ }
+
+ tested_meshes.insert(mesh);
+ }
+ }
+
+
+
+ for(int i=0;i<node->get_child_count();i++) {
+ _merge_found_resources(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes);
+ }
+
+}
+
Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, const Ref<ResourceImportMetadata>& p_from) {
Error err=OK;
@@ -2506,6 +2640,28 @@ Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, c
_filter_tracks(scene,animation_filter);
+ if (scene_flags&(SCENE_FLAG_MERGE_KEEP_MATERIALS|SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS) && FileAccess::exists(p_dest_path)) {
+ //must merge!
+
+ Ref<PackedScene> pscene = ResourceLoader::load(p_dest_path,"PackedScene",true);
+ if (pscene.is_valid()) {
+
+ Node *instance = pscene->instance();
+ if (instance) {
+ Map<String,Ref<Animation> > merged_anims;
+ Map<String,Ref<Material> > merged_materials;
+ Set<Ref<Mesh> > tested_meshes;
+
+ _find_resources_to_merge(instance,instance,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes);
+ tested_meshes.clear();
+ _merge_found_resources(instance,instance,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes);
+
+ memdelete(instance);
+ }
+
+ }
+
+ }
/// BEFORE ANYTHING, RUN SCRIPT
diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.h b/tools/editor/io_plugins/editor_scene_import_plugin.h
index 8a2d30f1f6..c31d3a33d3 100644
--- a/tools/editor/io_plugins/editor_scene_import_plugin.h
+++ b/tools/editor/io_plugins/editor_scene_import_plugin.h
@@ -116,6 +116,10 @@ class EditorSceneImportPlugin : public EditorImportPlugin {
void _tag_import_paths(Node *p_scene,Node *p_node);
+ void _find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String,Ref<Material> >&materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes);
+ void _merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes);
+
+
public:
enum SceneFlags {
@@ -134,6 +138,9 @@ public:
SCENE_FLAG_CREATE_NAVMESH=1<<17,
SCENE_FLAG_DETECT_LIGHTMAP_LAYER=1<<18,
+ SCENE_FLAG_MERGE_KEEP_MATERIALS=1<<20,
+ SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS=1<<21,
+
SCENE_FLAG_REMOVE_NOIMP=1<<24,
SCENE_FLAG_IMPORT_ANIMATIONS=1<<25,
SCENE_FLAG_COMPRESS_GEOMETRY=1<<26,
@@ -144,6 +151,7 @@ public:
};
+
virtual String get_name() const;
virtual String get_visible_name() const;
virtual void import_dialog(const String& p_from="");
diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp
index f459bf483a..4061bb9827 100644
--- a/tools/editor/plugins/script_editor_plugin.cpp
+++ b/tools/editor/plugins/script_editor_plugin.cpp
@@ -531,7 +531,7 @@ static void _find_changed_scripts_for_external_editor(Node* p_base, Node*p_curre
}
-void ScriptEditor::_update_modified_scripts_for_external_editor() {
+void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_for_script) {
if (!bool(EditorSettings::get_singleton()->get("external_editor/use_external_editor")))
return;
@@ -547,6 +547,9 @@ void ScriptEditor::_update_modified_scripts_for_external_editor() {
Ref<Script> script = E->get();
+ if (p_for_script.is_valid() && p_for_script!=script)
+ continue;
+
if (script->get_path()=="" || script->get_path().find("local://")!=-1 || script->get_path().find("::")!=-1) {
continue; //internal script, who cares, though weird
@@ -900,7 +903,7 @@ void ScriptEditor::_live_auto_reload_running_scripts() {
}
-bool ScriptEditor::_test_script_times_on_disk() {
+bool ScriptEditor::_test_script_times_on_disk(Ref<Script> p_for_script) {
disk_changed_list->clear();
@@ -920,6 +923,9 @@ bool ScriptEditor::_test_script_times_on_disk() {
Ref<Script> script = ste->get_edited_script();
+ if (p_for_script.is_valid() && p_for_script!=script)
+ continue;
+
if (script->get_path()=="" || script->get_path().find("local://")!=-1 || script->get_path().find("::")!=-1)
continue; //internal script, who cares
@@ -2128,6 +2134,12 @@ void ScriptEditor::edit(const Ref<Script>& p_script) {
if (!restoring_layout) {
EditorNode::get_singleton()->save_layout();
}
+
+ //test for modification, maybe the script was not edited but was loaded
+
+ _test_script_times_on_disk(p_script);
+ _update_modified_scripts_for_external_editor(p_script);
+
}
void ScriptEditor::save_all_scripts() {
diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h
index 3d723adfe9..0636190a41 100644
--- a/tools/editor/plugins/script_editor_plugin.h
+++ b/tools/editor/plugins/script_editor_plugin.h
@@ -232,7 +232,7 @@ class ScriptEditor : public VBoxContainer {
void _resave_scripts(const String& p_str);
void _reload_scripts();
- bool _test_script_times_on_disk();
+ bool _test_script_times_on_disk(Ref<Script> p_for_script=Ref<Script>());
void _close_current_tab();
@@ -291,7 +291,7 @@ class ScriptEditor : public VBoxContainer {
void _go_to_tab(int p_idx);
void _update_history_pos(int p_new_pos);
void _update_script_colors();
- void _update_modified_scripts_for_external_editor();
+ void _update_modified_scripts_for_external_editor(Ref<Script> p_for_script=Ref<Script>());
int file_dialog_option;
void _file_dialog_action(String p_file);
diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp
index f4b294daa5..83db650952 100644
--- a/tools/editor/plugins/shader_editor_plugin.cpp
+++ b/tools/editor/plugins/shader_editor_plugin.cpp
@@ -30,6 +30,7 @@
#include "tools/editor/editor_settings.h"
#include "spatial_editor_plugin.h"
+#include "scene/resources/shader_graph.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
#include "os/keyboard.h"
@@ -144,8 +145,6 @@ void ShaderTextEditor::_validate_script() {
//List<StringName> params;
//shader->get_param_list(&params);
- print_line("compile: type: "+itos(type)+" code:\n"+code);
-
Error err = ShaderLanguage::compile(code,type,NULL,NULL,&errortxt,&line,&col);
if (err!=OK) {
@@ -557,34 +556,41 @@ ShaderEditor::ShaderEditor() {
void ShaderEditorPlugin::edit(Object *p_object) {
- if (!p_object->cast_to<Shader>())
+ Shader* s = p_object->cast_to<Shader>();
+ if (!s || s->cast_to<ShaderGraph>()) {
+ shader_editor->hide(); //Dont edit ShaderGraph
return;
+ }
- shader_editor->edit(p_object->cast_to<Shader>());
+ if (_2d && s->get_mode()==Shader::MODE_CANVAS_ITEM)
+ shader_editor->edit(s);
+ else if (!_2d && s->get_mode()==Shader::MODE_MATERIAL)
+ shader_editor->edit(s);
}
bool ShaderEditorPlugin::handles(Object *p_object) const {
+ bool handles = true;
Shader *shader=p_object->cast_to<Shader>();
- if (!shader)
- return false;
- if (_2d)
- return shader->get_mode()==Shader::MODE_CANVAS_ITEM;
- else
+ if (!shader || shader->cast_to<ShaderGraph>()) // Dont handle ShaderGraph's
+ handles = false;
+ if (handles && _2d)
+ handles = shader->get_mode()==Shader::MODE_CANVAS_ITEM;
+ else if (handles && !_2d)
return shader->get_mode()==Shader::MODE_MATERIAL;
+
+ if (!handles)
+ shader_editor->hide();
+ return handles;
}
void ShaderEditorPlugin::make_visible(bool p_visible) {
if (p_visible) {
shader_editor->show();
- //shader_editor->set_process(true);
} else {
-
shader_editor->apply_shaders();
- //shader_editor->hide();
- //shader_editor->set_process(false);
}
}
diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp
index 16ae14c0b5..69d6d97980 100644
--- a/tools/editor/scene_tree_dock.cpp
+++ b/tools/editor/scene_tree_dock.cpp
@@ -49,11 +49,37 @@ void SceneTreeDock::_unhandled_key_input(InputEvent p_event) {
if (!p_event.key.pressed || p_event.key.echo)
return;
+ if (ED_IS_SHORTCUT("scene_tree/add_child_node", p_event)) {
+ _tool_selected(TOOL_NEW);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/instance_scene", p_event)) {
+ _tool_selected(TOOL_INSTANCE);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/change_node_type", p_event)) {
+ _tool_selected(TOOL_REPLACE);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/duplicate", p_event)) {
+ _tool_selected(TOOL_DUPLICATE);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/add_script", p_event)) {
+ _tool_selected(TOOL_SCRIPT);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/move_up", p_event)) {
+ _tool_selected(TOOL_MOVE_UP);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/move_down", p_event)) {
+ _tool_selected(TOOL_MOVE_DOWN);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/reparent", p_event)) {
+ _tool_selected(TOOL_REPARENT);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/merge_from_scene", p_event)) {
+ _tool_selected(TOOL_MERGE_FROM_SCENE);
+ }
+ else if (ED_IS_SHORTCUT("scene_tree/save_branch_as_scene", p_event)) {
+ _tool_selected(TOOL_NEW_SCENE_FROM);
+ }
switch(sc) {
- case KEY_MASK_CMD|KEY_A: { _tool_selected(TOOL_NEW); } break;
- case KEY_MASK_CMD|KEY_D: { _tool_selected(TOOL_DUPLICATE); } break;
- case KEY_MASK_CMD|KEY_UP: { _tool_selected(TOOL_MOVE_UP); } break;
- case KEY_MASK_CMD|KEY_DOWN: { _tool_selected(TOOL_MOVE_DOWN); } break;
case KEY_MASK_SHIFT|KEY_DELETE: { _tool_selected(TOOL_ERASE, true); } break;
case KEY_DELETE: { _tool_selected(TOOL_ERASE); } break;
}
@@ -1675,13 +1701,11 @@ void SceneTreeDock::_nodes_dragged(Array p_nodes,NodePath p_to,int p_type) {
}
void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) {
-
-
if (!EditorNode::get_singleton()->get_edited_scene()) {
menu->clear();
- menu->add_icon_item(get_icon("Add","EditorIcons"),TTR("New Scene Root"),TOOL_NEW,KEY_MASK_CMD|KEY_A);
- menu->add_icon_item(get_icon("Instance","EditorIcons"),TTR("Inherit Scene"),TOOL_INSTANCE);
+ menu->add_icon_shortcut(get_icon("Add","EditorIcons"), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW);
+ menu->add_icon_shortcut(get_icon("Instance","EditorIcons"), ED_GET_SHORTCUT("scene_tree/instance_scene"), TOOL_INSTANCE);
menu->set_size(Size2(1,1));
menu->set_pos(p_menu_pos);
@@ -1698,31 +1722,31 @@ void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) {
if (selection.size()==1) {
- menu->add_icon_item(get_icon("Add","EditorIcons"),TTR("Add Child Node"),TOOL_NEW,KEY_MASK_CMD|KEY_A);
- menu->add_icon_item(get_icon("Instance","EditorIcons"),TTR("Instance Child Scene"),TOOL_INSTANCE);
+ menu->add_icon_shortcut(get_icon("Add","EditorIcons"), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW);
+ menu->add_icon_shortcut(get_icon("Instance","EditorIcons"), ED_GET_SHORTCUT("scene_tree/instance_scene"), TOOL_INSTANCE);
menu->add_separator();
- menu->add_icon_item(get_icon("Reload","EditorIcons"),TTR("Change Type"),TOOL_REPLACE);
+ menu->add_icon_shortcut(get_icon("Reload","EditorIcons"),ED_GET_SHORTCUT("scene_tree/change_node_type"), TOOL_REPLACE);
//menu->add_separator(); moved to their own dock
//menu->add_icon_item(get_icon("Groups","EditorIcons"),TTR("Edit Groups"),TOOL_GROUP);
//menu->add_icon_item(get_icon("Connect","EditorIcons"),TTR("Edit Connections"),TOOL_CONNECT);
menu->add_separator();
- menu->add_icon_item(get_icon("Script","EditorIcons"),TTR("Add Script"),TOOL_SCRIPT);
+ menu->add_icon_shortcut(get_icon("Script","EditorIcons"),ED_GET_SHORTCUT("scene_tree/add_script"), TOOL_SCRIPT);
menu->add_separator();
}
- menu->add_icon_item(get_icon("Up","EditorIcons"),TTR("Move Up"),TOOL_MOVE_UP,KEY_MASK_CMD|KEY_UP);
- menu->add_icon_item(get_icon("Down","EditorIcons"),TTR("Move Down"),TOOL_MOVE_DOWN,KEY_MASK_CMD|KEY_DOWN);
- menu->add_icon_item(get_icon("Duplicate","EditorIcons"),TTR("Duplicate"),TOOL_DUPLICATE,KEY_MASK_CMD|KEY_D);
- menu->add_icon_item(get_icon("Reparent","EditorIcons"),TTR("Reparent"),TOOL_REPARENT);
+ menu->add_icon_shortcut(get_icon("Up","EditorIcons"),ED_GET_SHORTCUT("scene_tree/move_up"), TOOL_MOVE_UP);
+ menu->add_icon_shortcut(get_icon("Down","EditorIcons"),ED_GET_SHORTCUT("scene_tree/move_down"), TOOL_MOVE_DOWN);
+ menu->add_icon_shortcut(get_icon("Duplicate","EditorIcons"),ED_GET_SHORTCUT("scene_tree/duplicate"), TOOL_DUPLICATE);
+ menu->add_icon_shortcut(get_icon("Reparent","EditorIcons"),ED_GET_SHORTCUT("scene_tree/reparent"), TOOL_REPARENT);
if (selection.size()==1) {
menu->add_separator();
- menu->add_icon_item(get_icon("Blend","EditorIcons"),TTR("Merge From Scene"),TOOL_MERGE_FROM_SCENE);
- menu->add_icon_item(get_icon("Save","EditorIcons"),TTR("Save Branch as Scene"),TOOL_NEW_SCENE_FROM);
+ menu->add_icon_shortcut(get_icon("Blend","EditorIcons"),ED_GET_SHORTCUT("scene_tree/merge_from_scene"), TOOL_MERGE_FROM_SCENE);
+ menu->add_icon_shortcut(get_icon("Save","EditorIcons"),ED_GET_SHORTCUT("scene_tree/save_branch_as_scene"), TOOL_NEW_SCENE_FROM);
}
menu->add_separator();
- menu->add_icon_item(get_icon("Remove","EditorIcons"),TTR("Delete Node(s)"),TOOL_ERASE,KEY_DELETE);
+ menu->add_icon_item(get_icon("Remove","EditorIcons"),TTR("Delete Node(s)"), TOOL_ERASE, KEY_DELETE);
menu->set_size(Size2(1,1));
menu->set_pos(p_menu_pos);
@@ -1789,15 +1813,28 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec
HBoxContainer *filter_hbc = memnew( HBoxContainer );
ToolButton *tb;
+ ED_SHORTCUT("scene_tree/add_child_node",TTR("Add Child Node"), KEY_MASK_CMD|KEY_A);
+ ED_SHORTCUT("scene_tree/instance_scene",TTR("Instance Child Scene"));
+ ED_SHORTCUT("scene_tree/change_node_type", TTR("Change Type"));
+ ED_SHORTCUT("scene_tree/add_script", TTR("Add Script"));
+ ED_SHORTCUT("scene_tree/move_up", TTR("Move Up"), KEY_MASK_CMD | KEY_UP);
+ ED_SHORTCUT("scene_tree/move_down", TTR("Move Down"), KEY_MASK_CMD | KEY_DOWN);
+ ED_SHORTCUT("scene_tree/duplicate", TTR("Duplicate"),KEY_MASK_CMD | KEY_D);
+ ED_SHORTCUT("scene_tree/reparent", TTR("Reparent"));
+ ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene"));
+ ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene"));
+
tb = memnew( ToolButton );
tb->connect("pressed",this,"_tool_selected",make_binds(TOOL_NEW, false));
- tb->set_tooltip(TTR("Add/Create a New Node")+"\n("+keycode_get_string(KEY_MASK_CMD|KEY_A)+")");
+ tb->set_tooltip(TTR("Add/Create a New Node"));
+ tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/add_child_node"));
filter_hbc->add_child(tb);
button_add=tb;
tb = memnew( ToolButton );
tb->connect("pressed",this,"_tool_selected",make_binds(TOOL_INSTANCE, false));
tb->set_tooltip(TTR("Instance a scene file as a Node. Creates an inherited scene if no root node exists."));
+ tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/instance_scene"));
filter_hbc->add_child(tb);
button_instance=tb;
diff --git a/tools/editor/script_create_dialog.cpp b/tools/editor/script_create_dialog.cpp
index e88d603b30..e93a40efbc 100644
--- a/tools/editor/script_create_dialog.cpp
+++ b/tools/editor/script_create_dialog.cpp
@@ -185,6 +185,7 @@ void ScriptCreateDialog::_built_in_pressed() {
void ScriptCreateDialog::_browse_path() {
file_browse->set_mode(EditorFileDialog::MODE_SAVE_FILE);
+ file_browse->set_disable_overwrite_warning(true);
file_browse->clear_filters();
List<String> extensions;
diff --git a/tools/translations/es.po b/tools/translations/es.po
index 84e241c7a3..3f727d18c3 100644
--- a/tools/translations/es.po
+++ b/tools/translations/es.po
@@ -21,45 +21,47 @@ msgstr ""
#: modules/gdscript/gd_functions.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*."
#: modules/gdscript/gd_functions.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
+"No hay suficientes bytes para decodificar bytes, o el formato es inválido."
#: modules/gdscript/gd_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "el argumento step es cero!"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "Ninguna escena seleccionada a la instancia!"
+msgstr "No es un script con una instancia"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "No está basado en un script"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "Sin recurso de tipografías de destino!"
+msgstr "No está basado en un archivo de recursos"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Formato de diccionario de instancias inválido (@path faltante)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Formato de diccionario de instancias inválido (no se puede cargar el script "
+"en @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
msgstr ""
+"Formato de diccionario de instancias inválido (script inválido en @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "Diccionario de instancias inválido (subclases inválidas)"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -578,18 +580,16 @@ msgid "Anim Delete Keys"
msgstr "Borrar Claves de Anim"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Continuar"
+msgstr "Contínuo"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "Desconectar"
+msgstr "Discreto"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Trigger"
#: tools/editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -699,9 +699,8 @@ msgid "Change Anim Loop"
msgstr "Cambiar Loop de Anim"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "Cambiar Loop de Anim"
+msgstr "Cambiar Interpolación de Loop de Anim"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -744,9 +743,8 @@ msgid "Enable/Disable looping in animation."
msgstr "Activar/Desactivar loopeo en la animación."
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Enable/Disable interpolation when looping animation."
-msgstr "Activar/Desactivar loopeo en la animación."
+msgstr "Activar/Desactivar interpolación al loopear animación."
#: tools/editor/animation_editor.cpp
msgid "Add new tracks."
@@ -1013,7 +1011,6 @@ msgid "Method in target Node must be specified!"
msgstr "El método en el Nodo objetivo debe ser especificado!"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "Conectar a Nodo:"
@@ -1033,15 +1030,13 @@ msgstr "Quitar"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Agregar Argumento de Llamada Extra:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "Argumentos:"
+msgstr "Argumentos de Llamada Extras:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
msgstr "Ruta al Nodo:"
@@ -1066,9 +1061,8 @@ msgid "Connect '%s' to '%s'"
msgstr "Conectar '%s' a '%s'"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "Conecciones:"
+msgstr "Conectando Señal:"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -1499,8 +1493,7 @@ msgstr ""
#: tools/editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"La escena actual nunca se guardó. Favor de guardarla antes de ejecutar."
+msgstr "La escena actual nunca se guardó. Favor de guardarla antes de ejecutar."
#: tools/editor/editor_node.cpp
msgid "Could not start subprocess!"
@@ -1648,11 +1641,11 @@ msgstr "Ir a la escena abierta previamente."
#: tools/editor/editor_node.cpp
msgid "Fullscreen Mode"
-msgstr ""
+msgstr "Modo Pantalla Completa"
#: tools/editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Modo Sin Distracciones"
#: tools/editor/editor_node.cpp
msgid "Operations with scene files."
@@ -2844,7 +2837,6 @@ msgid "Create new animation in player."
msgstr "Crear nueva animación en el reproductor."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
msgstr "Cargar una animación desde disco."
@@ -2857,9 +2849,8 @@ msgid "Save the current animation"
msgstr "Guardar la animación actual"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
-msgstr "Guardar Como.."
+msgstr "Guardar Como"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4059,9 +4050,8 @@ msgid "Auto Indent"
msgstr "Auto Indentar"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Soft Reload Script"
-msgstr "Volver a Cargar un Script de Herramientas"
+msgstr "Recarga Soft de Script"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4153,9 +4143,8 @@ msgid "Help"
msgstr "Ayuda"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
-msgstr "Contextual"
+msgstr "Ayuda Contextual"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Tutorials"
@@ -4760,14 +4749,12 @@ msgid "Remove Class Items"
msgstr "Quitar Items de Clases"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "Crear Template"
+msgstr "Crear Template Vacío"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "Crear Template"
+msgstr "Crear Template de Editor Vacío"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -4853,28 +4840,24 @@ msgid "Erase TileMap"
msgstr "Borrar TileMap"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
msgstr "Eliminar Selección"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "Encontrar Siguiente"
+msgstr "Encontrar tile"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "Transponer"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "Espejar X (A)"
+msgstr "Espejar X"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Espejar Y (S)"
+msgstr "Espejar Y"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
@@ -5035,8 +5018,8 @@ msgstr ""
#: tools/editor/project_export.cpp
msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):"
msgstr ""
-"Filtros para excluir de la exportación (separados por comas, ej: *.json, *."
-"txt):"
+"Filtros para excluir de la exportación (separados por comas, ej: *.json, "
+"*.txt):"
#: tools/editor/project_export.cpp
msgid "Convert text scenes to binary on export."
@@ -5789,8 +5772,7 @@ msgstr "No se puede operar sobre los nodos de una escena externa!"
#: tools/editor/scene_tree_dock.cpp
msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-"No se puede operar sobre los nodos de los cual hereda la escena actual!"
+msgstr "No se puede operar sobre los nodos de los cual hereda la escena actual!"
#: tools/editor/scene_tree_dock.cpp
msgid "Remove Node(s)"
@@ -5914,7 +5896,7 @@ msgstr "Cargar Como Placeholder"
#: tools/editor/scene_tree_editor.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "Descartar Instanciado"
#: tools/editor/scene_tree_editor.cpp
msgid "Open in Editor"
diff --git a/tools/translations/es_AR.po b/tools/translations/es_AR.po
index 5fd39b0ede..e9dc591b98 100644
--- a/tools/translations/es_AR.po
+++ b/tools/translations/es_AR.po
@@ -8,10 +8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2016-06-14 14:09+0000\n"
+"PO-Revision-Date: 2016-06-19 12:39+0000\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
-"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
-"godot-engine/godot/es_AR/>\n"
+"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects"
+"/godot-engine/godot/es_AR/>\n"
"Language: es_AR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,45 +21,47 @@ msgstr ""
#: modules/gdscript/gd_functions.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*."
#: modules/gdscript/gd_functions.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
+"No hay suficientes bytes para decodificar bytes, o el formato es inválido."
#: modules/gdscript/gd_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "el argumento step es cero!"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "Ninguna escena seleccionada a la instancia!"
+msgstr "No es un script con una instancia"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "No está basado en un script"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "Sin recurso de tipografías de destino!"
+msgstr "No está basado en un archivo de recursos"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Formato de diccionario de instancias inválido (@path faltante)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Formato de diccionario de instancias inválido (no se puede cargar el script "
+"en @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
msgstr ""
+"Formato de diccionario de instancias inválido (script inválido en @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "Diccionario de instancias inválido (subclases inválidas)"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -578,18 +580,16 @@ msgid "Anim Delete Keys"
msgstr "Borrar Claves de Anim"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Continuar"
+msgstr "Contínuo"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "Desconectar"
+msgstr "Discreto"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Trigger"
#: tools/editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -699,9 +699,8 @@ msgid "Change Anim Loop"
msgstr "Cambiar Loop de Anim"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "Cambiar Loop de Anim"
+msgstr "Cambiar Interpolación de Loop de Anim"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -744,9 +743,8 @@ msgid "Enable/Disable looping in animation."
msgstr "Activar/Desactivar loopeo en la animación."
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Enable/Disable interpolation when looping animation."
-msgstr "Activar/Desactivar loopeo en la animación."
+msgstr "Activar/Desactivar interpolación al loopear animación."
#: tools/editor/animation_editor.cpp
msgid "Add new tracks."
@@ -1013,7 +1011,6 @@ msgid "Method in target Node must be specified!"
msgstr "El método en el Nodo objetivo debe ser especificado!"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "Conectar a Nodo:"
@@ -1033,15 +1030,13 @@ msgstr "Quitar"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Agregar Argumento de Llamada Extra:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "Argumentos:"
+msgstr "Argumentos de Llamada Extras:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
msgstr "Ruta al Nodo:"
@@ -1066,9 +1061,8 @@ msgid "Connect '%s' to '%s'"
msgstr "Conectar '%s' a '%s'"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "Conecciones:"
+msgstr "Conectando Señal:"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -1648,11 +1642,11 @@ msgstr "Ir a la escena abierta previamente."
#: tools/editor/editor_node.cpp
msgid "Fullscreen Mode"
-msgstr ""
+msgstr "Modo Pantalla Completa"
#: tools/editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Modo Sin Distracciones"
#: tools/editor/editor_node.cpp
msgid "Operations with scene files."
@@ -2844,7 +2838,6 @@ msgid "Create new animation in player."
msgstr "Crear nueva animación en el reproductor."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
msgstr "Cargar una animación desde disco."
@@ -2857,9 +2850,8 @@ msgid "Save the current animation"
msgstr "Guardar la animación actual"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
-msgstr "Guardar Como.."
+msgstr "Guardar Como"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4059,9 +4051,8 @@ msgid "Auto Indent"
msgstr "Auto Indentar"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Soft Reload Script"
-msgstr "Volver a Cargar un Script de Herramientas"
+msgstr "Recarga Soft de Script"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4153,9 +4144,8 @@ msgid "Help"
msgstr "Ayuda"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
-msgstr "Contextual"
+msgstr "Ayuda Contextual"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Tutorials"
@@ -4760,14 +4750,12 @@ msgid "Remove Class Items"
msgstr "Quitar Items de Clases"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "Crear Template"
+msgstr "Crear Template Vacío"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "Crear Template"
+msgstr "Crear Template de Editor Vacío"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -4853,28 +4841,24 @@ msgid "Erase TileMap"
msgstr "Borrar TileMap"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
msgstr "Eliminar Selección"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "Encontrar Siguiente"
+msgstr "Encontrar tile"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "Transponer"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "Espejar X (A)"
+msgstr "Espejar X"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Espejar Y (S)"
+msgstr "Espejar Y"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
@@ -5914,7 +5898,7 @@ msgstr "Cargar Como Placeholder"
#: tools/editor/scene_tree_editor.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "Descartar Instanciado"
#: tools/editor/scene_tree_editor.cpp
msgid "Open in Editor"
diff --git a/tools/translations/fr.po b/tools/translations/fr.po
index 37159f6b3d..386a7e6170 100644
--- a/tools/translations/fr.po
+++ b/tools/translations/fr.po
@@ -11,10 +11,10 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2016-06-13 17:52+0000\n"
-"Last-Translator: Hugo Locurcio <hugo.l@openmailbox.org>\n"
-"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
-"godot/fr/>\n"
+"PO-Revision-Date: 2016-06-19 13:17+0000\n"
+"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n"
+"Language-Team: French <https://hosted.weblate.org/projects/godot-"
+"engine/godot/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -35,42 +35,44 @@ msgid "step argument is zero!"
msgstr ""
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "Pas de scène sélectionnée à instancier !"
+msgstr "N'est pas un script avec une instance"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "N'est pas basé sur un script"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "Pas de ressource de police de destination !"
+msgstr "N'est pas basé sur un fichier de ressource"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Instance invalide pour le format de dictionnaire (@path manquant)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Instance invalide pour le format de dictionnaire (impossible de charger le "
+"script depuis @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
msgstr ""
+"Instance invalide pour le format de dictionnaire (script invalide dans @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+"Instance invalide pour le format de dictionnaire (sous-classes invalides)"
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
"order for AnimatedSprite to display frames."
msgstr ""
-"Une ressource SpriteFrames doit être créée et assignée à la propriété « "
-"Frames » afin qu'AnimatedSprite les affiche."
+"Une ressource SpriteFrames doit être créée ou assignée à la propriété « "
+"Frames » afin qu'AnimatedSprite affiche les images."
#: scene/2d/canvas_modulate.cpp
msgid ""
@@ -588,14 +590,12 @@ msgid "Anim Delete Keys"
msgstr ""
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Continuer"
+msgstr "Continu"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "Déconnecter"
+msgstr "Discret"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
@@ -711,7 +711,7 @@ msgstr ""
#: tools/editor/animation_editor.cpp
#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "Modifier le nom de l'animation :"
+msgstr "Changer l'interpolation de l'animation bouclée"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -1019,10 +1019,9 @@ msgstr "Colonne :"
#: tools/editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr ""
+msgstr "La méthode du nœud cible doit être spécifiée !"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "Connecter au nœud :"
@@ -1042,15 +1041,13 @@ msgstr "Supprimer"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Ajouter des arguments supplémentaires :"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "Paramètres :"
+msgstr "Arguments supplémentaires :"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
msgstr "Chemin vers le nœud :"
@@ -1075,9 +1072,8 @@ msgid "Connect '%s' to '%s'"
msgstr "Connecter « %s » à « %s »"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "Connexions :"
+msgstr "Connecter un signal :"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -2834,7 +2830,6 @@ msgid "Create new animation in player."
msgstr ""
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
msgstr "Charger une animation depuis le disque."
@@ -2847,9 +2842,8 @@ msgid "Save the current animation"
msgstr "Enregistrer l'animation actuelle"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
-msgstr "Enregistrer sous…"
+msgstr "Enregistrer sous"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4045,7 +4039,7 @@ msgstr "Indentation automatique"
#: tools/editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Soft Reload Script"
-msgstr "Recharger le script outil"
+msgstr "Recharger le script (mode doux)"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4137,7 +4131,6 @@ msgid "Help"
msgstr "Aide"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
msgstr "Aide contextuelle"
@@ -4742,14 +4735,12 @@ msgid "Remove Class Items"
msgstr ""
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "Créer un modèle"
+msgstr "Créer un nouveau modèle"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "Créer un modèle"
+msgstr "Créer un nouveau modèle d'éditeur"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -4835,28 +4826,24 @@ msgid "Erase TileMap"
msgstr ""
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
msgstr "Supprimer la sélection"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "Trouver le suivant"
+msgstr "Chercher une case"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "Transposer"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "Miroir X (A)"
+msgstr "Miroir X"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Miroir Y (S)"
+msgstr "Miroir Y"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
diff --git a/tools/translations/ko.po b/tools/translations/ko.po
index afbe17965e..990a9aba82 100644
--- a/tools/translations/ko.po
+++ b/tools/translations/ko.po
@@ -8,57 +8,56 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: volzhs <volzhs@gmail.com>\n"
-"Language-Team: \n"
+"PO-Revision-Date: 2016-06-19 13:30+0000\n"
+"Last-Translator: 박한얼 <volzhs@gmail.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/godot-"
+"engine/godot/ko/>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.8\n"
+"X-Generator: Weblate 2.7-dev\n"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "convert()하기 위한 인자 타입이 유효하지 않습니다, TYPE_* 상수를 사용하세요."
#: modules/gdscript/gd_functions.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
+msgstr "디코딩할 바이트가 모자라거나, 유효하지 않은 형식입니다."
#: modules/gdscript/gd_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "스텝 인자가 제로입니다!"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "인스턴스할 씬이 선택되지 않았습니다!"
+msgstr "스크립트의 인스턴스가 아님"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "스크립트에 기반하지 않음"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "폰트 리소스 경로가 없습니다."
+msgstr "리소스 파일에 기반하지 않음"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "유효하지 않은 인스턴스 Dictionary 형식 (@path 없음)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
+msgstr "유효하지 않은 인스턴스 Dictionary 형식 (@path 에서 스크립트를 로드할 수 없음)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
+msgstr "유효하지 않은 인스턴스 Dictionary 형식 (@path의 스크립트가 유효하지 않음)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "유효하지 않은 인스턴스 Dictionary (서브클래스가 유효하지 않음)"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -475,22 +474,22 @@ msgstr ""
#: scene/resources/dynamic_font.cpp
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Error initializing FreeType."
-msgstr "FreeType 초기화 에러"
+msgstr "FreeType 초기화 에러."
#: scene/resources/dynamic_font.cpp
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Unknown font format."
-msgstr "알 수 없는 폰트 포멧"
+msgstr "알 수 없는 폰트 포멧."
#: scene/resources/dynamic_font.cpp
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Error loading font."
-msgstr "폰트 로딩 에러"
+msgstr "폰트 로딩 에러."
#: scene/resources/dynamic_font.cpp
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Invalid font size."
-msgstr "유요하지 않은 폰트 사이즈"
+msgstr "유요하지 않은 폰트 사이즈."
#: tools/editor/animation_editor.cpp
msgid "Disabled"
@@ -569,18 +568,16 @@ msgid "Anim Delete Keys"
msgstr "키 삭제"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "계속"
+msgstr "연속적인"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "연결해제"
+msgstr "비연속적인"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "트리거"
#: tools/editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -690,9 +687,8 @@ msgid "Change Anim Loop"
msgstr "애니메이션 루프 변경"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "애니메이션 루프 변경"
+msgstr "애니메이션 루프 보간 변경"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -732,28 +728,27 @@ msgstr "커서 단계 스냅 (초)."
#: tools/editor/animation_editor.cpp
msgid "Enable/Disable looping in animation."
-msgstr "애니메이션 루프 활성화/비활성화 "
+msgstr "애니메이션 루프 활성화/비활성화."
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Enable/Disable interpolation when looping animation."
-msgstr "애니메이션 루프 활성화/비활성화 "
+msgstr "애니메이션 루프 시 보간 활성화/비활성화."
#: tools/editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr "새 트랙 추가"
+msgstr "새 트랙 추가."
#: tools/editor/animation_editor.cpp
msgid "Move current track up."
-msgstr "현재 트랙을 위로 이동"
+msgstr "현재 트랙을 위로 이동."
#: tools/editor/animation_editor.cpp
msgid "Move current track down."
-msgstr "현재 트랙을 아래로 이동"
+msgstr "현재 트랙을 아래로 이동."
#: tools/editor/animation_editor.cpp
msgid "Remove selected track."
-msgstr "선택된 트랙 삭제"
+msgstr "선택된 트랙 삭제."
#: tools/editor/animation_editor.cpp
msgid "Track tools"
@@ -761,7 +756,7 @@ msgstr "트랙 도구"
#: tools/editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr "개별 키를 클릭함으로써 편집 활성화"
+msgstr "개별 키를 클릭함으로써 편집 활성화."
#: tools/editor/animation_editor.cpp
msgid "Anim. Optimizer"
@@ -926,7 +921,7 @@ msgstr "일치 결과 없음"
#: tools/editor/code_editor.cpp
msgid "Replaced %d Ocurrence(s)."
-msgstr "%d 회 바뀜"
+msgstr "%d 회 변경됨."
#: tools/editor/code_editor.cpp
msgid "Replace"
@@ -965,11 +960,11 @@ msgstr "다음"
#: tools/editor/code_editor.cpp
msgid "Replaced %d ocurrence(s)."
-msgstr "%d 회 바뀜"
+msgstr "%d 회 변경됨."
#: tools/editor/code_editor.cpp
msgid "Not found!"
-msgstr "찾을 수 없습니다."
+msgstr "찾을 수 없습니다!"
#: tools/editor/code_editor.cpp
msgid "Replace By"
@@ -1001,10 +996,9 @@ msgstr "칼럼:"
#: tools/editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr "대상 노드의 함수를 명시해야합니다."
+msgstr "대상 노드의 함수를 명시해야합니다!"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "연결할 노드:"
@@ -1024,17 +1018,15 @@ msgstr "삭제"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "별도의 호출 인자 추가:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "인수:"
+msgstr "별도의 호출 인자:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
-msgstr "노드 경로"
+msgstr "노드 경로:"
#: tools/editor/connections_dialog.cpp
msgid "Make Function"
@@ -1057,9 +1049,8 @@ msgid "Connect '%s' to '%s'"
msgstr "'%s'를 '%s'에 연결"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "연결:"
+msgstr "시그널 연결:"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -1241,7 +1232,7 @@ msgstr "미리보기:"
#: tools/editor/editor_file_system.cpp
msgid "Cannot go into subdir:"
-msgstr "하위 디렉토리로 이동할 수 없습니다."
+msgstr "하위 디렉토리로 이동할 수 없습니다:"
#: tools/editor/editor_file_system.cpp
msgid "ScanSources"
@@ -1338,7 +1329,7 @@ msgstr "설정 중.."
#: tools/editor/editor_log.cpp
msgid " Output:"
-msgstr "출력:"
+msgstr " 출력:"
#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp
msgid "Re-Importing"
@@ -1404,7 +1395,7 @@ msgstr ""
#: tools/editor/editor_node.cpp
msgid "Failed to load resource."
-msgstr "리소스 로드 실패"
+msgstr "리소스 로드 실패."
#: tools/editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1493,7 +1484,7 @@ msgstr "현재 씬이 저장되지 않았습니다. 실행전에 저장해주세
#: tools/editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr "서브 프로세스를 시작할 수 없습니다."
+msgstr "서브 프로세스를 시작할 수 없습니다!"
#: tools/editor/editor_node.cpp
msgid "Open Scene"
@@ -1609,7 +1600,7 @@ msgstr "레이아웃 로드"
#: tools/editor/editor_node.cpp tools/editor/project_export.cpp
msgid "Default"
-msgstr ""
+msgstr "Default"
#: tools/editor/editor_node.cpp
msgid "Delete Layout"
@@ -1634,19 +1625,19 @@ msgstr "씬"
#: tools/editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr "이전에 열었던 씬으로 가기"
+msgstr "이전에 열었던 씬으로 가기."
#: tools/editor/editor_node.cpp
msgid "Fullscreen Mode"
-msgstr ""
+msgstr "전체화면 모드"
#: tools/editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "초집중 모드"
#: tools/editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr "씬 파일 동작"
+msgstr "씬 파일 동작."
#: tools/editor/editor_node.cpp
msgid "New Scene"
@@ -1719,7 +1710,7 @@ msgstr "종료하고 프로젝트 목록으로 돌아가기"
#: tools/editor/editor_node.cpp
msgid "Import assets to the project."
-msgstr "프로젝트로 에셋 가져오기"
+msgstr "프로젝트로 에셋 가져오기."
#: tools/editor/editor_node.cpp
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
@@ -1743,7 +1734,7 @@ msgstr "도구"
#: tools/editor/editor_node.cpp
msgid "Export the project to many platforms."
-msgstr "프로젝트를 많은 플랫폼으로 내보내기"
+msgstr "프로젝트를 많은 플랫폼으로 내보내기."
#: tools/editor/editor_node.cpp tools/editor/project_export.cpp
msgid "Export"
@@ -1768,7 +1759,7 @@ msgstr "씬 일시 정지"
#: tools/editor/editor_node.cpp
msgid "Stop the scene."
-msgstr "씬 정지"
+msgstr "씬 정지."
#: tools/editor/editor_node.cpp
#: tools/editor/plugins/sample_library_editor_plugin.cpp
@@ -1777,7 +1768,7 @@ msgstr "정지"
#: tools/editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr "편집 중인 씬 실행"
+msgstr "편집 중인 씬 실행."
#: tools/editor/editor_node.cpp
msgid "Play Scene"
@@ -1929,23 +1920,23 @@ msgstr "디스크에서 기존 리소스를 로드하여 편집합니다."
#: tools/editor/editor_node.cpp
msgid "Save the currently edited resource."
-msgstr "현재 편집된 리소스 저장"
+msgstr "현재 편집된 리소스 저장."
#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr "다른 이름으로 저장"
+msgstr "다른 이름으로 저장.."
#: tools/editor/editor_node.cpp
msgid "Go to the previous edited object in history."
-msgstr "히스토리상 이전에 편집한 오브젝트로 가기"
+msgstr "히스토리상 이전에 편집한 오브젝트로 가기."
#: tools/editor/editor_node.cpp
msgid "Go to the next edited object in history."
-msgstr "히스토리상 다음에 편집한 오브젝트로 가기"
+msgstr "히스토리상 다음에 편집한 오브젝트로 가기."
#: tools/editor/editor_node.cpp
msgid "History of recently edited objects."
-msgstr "최근 편집 오브젝트 히스토리"
+msgstr "최근 편집 오브젝트 히스토리."
#: tools/editor/editor_node.cpp
msgid "Object properties."
@@ -2122,7 +2113,7 @@ msgstr "노드에서 가져오기:"
#: tools/editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
-msgstr "file_type_cache.cch를 열수 없어서, 파일 타입 캐쉬를 저장하지 않습니다."
+msgstr "file_type_cache.cch를 열수 없어서, 파일 타입 캐쉬를 저장하지 않습니다!"
#: tools/editor/groups_editor.cpp
msgid "Add to Group"
@@ -2145,7 +2136,7 @@ msgstr "가져올 비트 마스크가 없습니다!"
#: tools/editor/io_plugins/editor_scene_import_plugin.cpp
#: tools/editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Target path is empty."
-msgstr "대상 경로가 없습니다!"
+msgstr "대상 경로가 없습니다."
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
#: tools/editor/io_plugins/editor_sample_import_plugin.cpp
@@ -2204,7 +2195,7 @@ msgstr "소스 폰트 파일이 없습니다!"
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "No target font resource!"
-msgstr "폰트 리소스 경로가 없습니다."
+msgstr "폰트 리소스 경로가 없습니다!"
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2228,7 +2219,7 @@ msgstr "리소스 경로:"
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
+msgstr "The quick brown fox jumps over the lazy dog."
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Test:"
@@ -2374,7 +2365,7 @@ msgstr "가져오기 후 실행할 스크립트가 유효하지 않거나 깨져
#: tools/editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error importing scene."
-msgstr "씬 가져오기 에러"
+msgstr "씬 가져오기 에러."
#: tools/editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Import 3D Scene"
@@ -2728,7 +2719,7 @@ msgstr "새 애니메이션 이름:"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "New Anim"
-msgstr ""
+msgstr "New Anim"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Animation Name:"
@@ -2823,29 +2814,27 @@ msgstr "애니메이션 재생 속도를 전체적으로 조절."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Create new animation in player."
-msgstr "새로운 애니메이션 만들기"
+msgstr "새로운 애니메이션 만들기."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
-msgstr "디스크에서 애니메이션 로드"
+msgstr "디스크에서 애니메이션 로드."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Load an animation from disk."
-msgstr "디스크에서 애니메이션 로드"
+msgstr "디스크에서 애니메이션 로드."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
msgstr "현재 애니메이션 저장"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
msgstr "다른 이름으로 저장"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
-msgstr "애니메이션 목록 표시"
+msgstr "애니메이션 목록 표시."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Autoplay on Load"
@@ -3101,7 +3090,7 @@ msgstr "라이트맵 오크트리 굽기 프로세스 재설정 (처음부터
#: tools/editor/plugins/camera_editor_plugin.cpp
#: tools/editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
-msgstr "미리보기:"
+msgstr "미리보기"
#: tools/editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
@@ -3196,7 +3185,7 @@ msgstr ""
#: tools/editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
-msgstr "오브젝트의 회전 피벗 변경"
+msgstr "오브젝트의 회전 피벗 변경."
#: tools/editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan Mode"
@@ -3368,7 +3357,7 @@ msgstr "폴리곤 편집 (점 삭제)"
#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp
#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create a new polygon from scratch."
-msgstr "처음부터 새로운 폴리곤 만들기"
+msgstr "처음부터 새로운 폴리곤 만들기."
#: tools/editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
@@ -3441,17 +3430,17 @@ msgstr "기존 폴리곤 편집:"
#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp
#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
-msgstr "좌클릭: 포인트 이동"
+msgstr "좌클릭: 포인트 이동."
#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp
#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
-msgstr "컨트롤+좌클릭: 세그먼트 분할"
+msgstr "컨트롤+좌클릭: 세그먼트 분할."
#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp
#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
-msgstr "우클릭: 포인트 삭제"
+msgstr "우클릭: 포인트 삭제."
#: tools/editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
@@ -3487,7 +3476,7 @@ msgstr "MeshInstance에 메쉬가 없습니다!"
#: tools/editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
-msgstr "외곽선을 만들수 없습니다."
+msgstr "외곽선을 만들수 없습니다!"
#: tools/editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline"
@@ -3901,7 +3890,7 @@ msgstr "샘플 파일 열기"
#: tools/editor/plugins/sample_library_editor_plugin.cpp
msgid "ERROR: Couldn't load sample!"
-msgstr "에러: 샘플을 로드할 수 없습니다."
+msgstr "에러: 샘플을 로드할 수 없습니다!"
#: tools/editor/plugins/sample_library_editor_plugin.cpp
msgid "Add Sample"
@@ -4131,9 +4120,8 @@ msgid "Help"
msgstr "도움말"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
-msgstr "문맥상 찾기"
+msgstr "도움말 보기"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Tutorials"
@@ -4157,15 +4145,15 @@ msgstr "도움말 검색"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
-msgstr "레퍼런스 문서 검색"
+msgstr "레퍼런스 문서 검색."
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Go to previous edited document."
-msgstr "이전 편집 문서로 이동"
+msgstr "이전 편집 문서로 이동."
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Go to next edited document."
-msgstr "다음 편집 문서로 이동"
+msgstr "다음 편집 문서로 이동."
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -4578,7 +4566,7 @@ msgstr "회전 스냅 (도):"
#: tools/editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
-msgstr "크기 스냅 (%)"
+msgstr "크기 스냅 (%):"
#: tools/editor/plugins/spatial_editor_plugin.cpp
msgid "Viewport Settings"
@@ -4626,11 +4614,11 @@ msgstr "변환 타입"
#: tools/editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
-msgstr ""
+msgstr "Pre"
#: tools/editor/plugins/spatial_editor_plugin.cpp
msgid "Post"
-msgstr ""
+msgstr "Post"
#: tools/editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
@@ -4738,62 +4726,60 @@ msgid "Remove Class Items"
msgstr "클래스 아이템 삭제"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "템플릿 만들기"
+msgstr "빈 템플릿 만들기"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "템플릿 만들기"
+msgstr "빈 에디터 템플릿 만들기"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
-msgstr ""
+msgstr "CheckBox Radio1"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio2"
-msgstr ""
+msgstr "CheckBox Radio2"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Item"
-msgstr ""
+msgstr "Item"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Check Item"
-msgstr ""
+msgstr "Check Item"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Checked Item"
-msgstr ""
+msgstr "Checked Item"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Has"
-msgstr ""
+msgstr "Has"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Many"
-msgstr ""
+msgstr "Many"
#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp
msgid "Options"
-msgstr ""
+msgstr "옵션"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Have,Many,Several,Options!"
-msgstr ""
+msgstr "Have,Many,Several,Options!"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Tab 1"
-msgstr ""
+msgstr "Tab 1"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Tab 2"
-msgstr ""
+msgstr "Tab 2"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Tab 3"
-msgstr ""
+msgstr "Tab 3"
#: tools/editor/plugins/theme_editor_plugin.cpp
#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp
@@ -4831,28 +4817,24 @@ msgid "Erase TileMap"
msgstr "타일맵 지우기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
-msgstr "선택 지우기"
+msgstr "선택부분 지우기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "다음 찾기"
+msgstr "타일 찾기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "바꾸기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "X축 뒤집기 (A)"
+msgstr "X축 뒤집기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Y축 뒤집기 (S)"
+msgstr "Y축 뒤집기"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
@@ -4917,15 +4899,15 @@ msgstr "스크립트 옵션 편집"
#: tools/editor/project_export.cpp
msgid "Please export outside the project folder!"
-msgstr "프로젝트 폴더 바깥에 내보내기를 하세요."
+msgstr "프로젝트 폴더 바깥에 내보내기를 하세요!"
#: tools/editor/project_export.cpp
msgid "Error exporting project!"
-msgstr "프로젝트 내보내기 중 에러"
+msgstr "프로젝트 내보내기 중 에러!"
#: tools/editor/project_export.cpp
msgid "Error writing the project PCK!"
-msgstr "프로젝트 PCK 작성중 에러"
+msgstr "프로젝트 PCK 작성중 에러!"
#: tools/editor/project_export.cpp
msgid "No exporter for platform '%s' yet."
@@ -4941,15 +4923,15 @@ msgstr "이미지 그룹 변경"
#: tools/editor/project_export.cpp
msgid "Group name can't be empty!"
-msgstr "그룹 이름을 지정해야 합니다."
+msgstr "그룹 이름을 지정해야 합니다!"
#: tools/editor/project_export.cpp
msgid "Invalid character in group name!"
-msgstr "그룹 이름에 유효하지 않은 문자가 사용되었습니다."
+msgstr "그룹 이름에 유효하지 않은 문자가 사용되었습니다!"
#: tools/editor/project_export.cpp
msgid "Group name already exists!"
-msgstr "그룹 이름이 이미 사용중입니다."
+msgstr "그룹 이름이 이미 사용중입니다!"
#: tools/editor/project_export.cpp
msgid "Add Image Group"
@@ -4981,15 +4963,15 @@ msgstr "리소스"
#: tools/editor/project_export.cpp
msgid "Export selected resources (including dependencies)."
-msgstr "선택된 리소스 내보내기 (종속된 리소스 포함)"
+msgstr "선택된 리소스 내보내기 (종속된 리소스 포함)."
#: tools/editor/project_export.cpp
msgid "Export all resources in the project."
-msgstr "프로젝트의 모든 리소스 내보내기"
+msgstr "프로젝트의 모든 리소스 내보내기."
#: tools/editor/project_export.cpp
msgid "Export all files in the project directory."
-msgstr "프로젝트 디렉토리 안의 모든 파일 내보내기"
+msgstr "프로젝트 디렉토리 안의 모든 파일 내보내기."
#: tools/editor/project_export.cpp
msgid "Export Mode:"
@@ -5014,7 +4996,7 @@ msgstr "내보내기 시, 제외시킬 파일 (콤마로 구분, 예: *.json, *.
#: tools/editor/project_export.cpp
msgid "Convert text scenes to binary on export."
-msgstr "내보내기 시, 텍스트 기반 씬 파일을 바이너리 형식으로 변환"
+msgstr "내보내기 시, 텍스트 기반 씬 파일을 바이너리 형식으로 변환."
#: tools/editor/project_export.cpp
msgid "Images"
@@ -5271,7 +5253,7 @@ msgstr "종료"
#: tools/editor/project_settings.cpp
msgid "Key "
-msgstr "키"
+msgstr "키 "
#: tools/editor/project_settings.cpp
msgid "Joy Button"
@@ -5287,7 +5269,7 @@ msgstr "마우스 버튼"
#: tools/editor/project_settings.cpp
msgid "Invalid action (anything goes but '/' or ':')."
-msgstr "유효하지 않은 액션 ('/' 또는 ':' 문자 사용 불가)"
+msgstr "유효하지 않은 액션 ('/' 또는 ':' 문자 사용 불가)."
#: tools/editor/project_settings.cpp
msgid "Action '%s' already exists!"
@@ -5589,11 +5571,11 @@ msgstr "파일 로드 에러: 리소스가 아닙니다!"
#: tools/editor/property_editor.cpp
msgid "Couldn't load image"
-msgstr "이미지를 로드할 수 없습니다."
+msgstr "이미지를 로드할 수 없음"
#: tools/editor/property_editor.cpp
msgid "Bit %d, val %d."
-msgstr ""
+msgstr "Bit %d, val %d."
#: tools/editor/property_editor.cpp
msgid "On"
@@ -5609,7 +5591,7 @@ msgstr "속성:"
#: tools/editor/property_editor.cpp
msgid "Global"
-msgstr ""
+msgstr "Global"
#: tools/editor/property_editor.cpp
msgid "Sections:"
@@ -5877,7 +5859,7 @@ msgstr "Placeholder로써 로드"
#: tools/editor/scene_tree_editor.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "인스턴스 폐기"
#: tools/editor/scene_tree_editor.cpp
msgid "Open in Editor"
@@ -5913,7 +5895,7 @@ msgstr "디렉토리를 자신으로 이동할 수 없습니다."
#: tools/editor/scenes_dock.cpp
msgid "Can't operate on '..'"
-msgstr "'..'에 수행할 수 없습니다."
+msgstr "'..'에 수행할 수 없음"
#: tools/editor/scenes_dock.cpp
msgid "Pick New Name and Location For:"
@@ -6017,23 +5999,23 @@ msgstr "파일 시스템에 스크립트를 생성할 수 없습니다."
#: tools/editor/script_create_dialog.cpp
msgid "Path is empty"
-msgstr "경로가 비어 있습니다."
+msgstr "경로가 비어 있음"
#: tools/editor/script_create_dialog.cpp
msgid "Path is not local"
-msgstr "경로가 로컬이 아닙니다."
+msgstr "경로가 로컬이 아님"
#: tools/editor/script_create_dialog.cpp
msgid "Invalid base path"
-msgstr "기본 경로가 유요하지 않습니다."
+msgstr "기본 경로가 유요하지 않음"
#: tools/editor/script_create_dialog.cpp
msgid "File exists"
-msgstr "파일이 존재합니다."
+msgstr "파일이 존재함"
#: tools/editor/script_create_dialog.cpp
msgid "Invalid extension"
-msgstr "확장자가 유요하지 않습니다."
+msgstr "확장자가 유요하지 않음"
#: tools/editor/script_create_dialog.cpp
msgid "Valid path"
@@ -6113,7 +6095,7 @@ msgstr "실시간 씬 트리:"
#: tools/editor/script_editor_debugger.cpp
msgid "Remote Object Properties: "
-msgstr "원격 오브젝트 속성:"
+msgstr "원격 오브젝트 속성: "
#: tools/editor/script_editor_debugger.cpp
msgid "Profiler"
diff --git a/tools/translations/pt_BR.po b/tools/translations/pt_BR.po
index eeab9625cf..dadd54d273 100644
--- a/tools/translations/pt_BR.po
+++ b/tools/translations/pt_BR.po
@@ -9,10 +9,10 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2016-06-15 01:22+0000\n"
+"PO-Revision-Date: 2016-06-20 01:48+0000\n"
"Last-Translator: George Marques <georgemjesus@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
-"godot-engine/godot/pt_BR/>\n"
+"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects"
+"/godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,45 +22,45 @@ msgstr ""
#: modules/gdscript/gd_functions.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "Argumento de tipo inválido para convert(), use constantes TYPE_*."
#: modules/gdscript/gd_functions.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
+msgstr "Não há bytes suficientes para decodificar, ou o formato é inválido."
#: modules/gdscript/gd_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "o argumento step é zero!"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "Nenhuma cena selecionada para instanciar!"
+msgstr "Não é um script com uma instância"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "Não é baseado num script"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "Falta recurso de fonte destino!"
+msgstr "Não é baseado num arquivo de recurso"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Formato de dicionário de instância inválido (faltando @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Formato de dicionário de instância inválido (não se pôde carregar o script "
+"em @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
+msgstr "Formato de dicionário de instância inválido (script inválido em @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "Dicionário de instância inválido (subclasses inválidas)"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -582,18 +582,16 @@ msgid "Anim Delete Keys"
msgstr "Excluir Chaves da Anim"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Continuar"
+msgstr "Contínuo"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "Disconectar"
+msgstr "Discreto"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Gatilho"
#: tools/editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -703,9 +701,8 @@ msgid "Change Anim Loop"
msgstr "Mudar Loop da Animação"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "Mudar Loop da Animação"
+msgstr "Mudar Interpolação do Loop da Animação"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -748,9 +745,8 @@ msgid "Enable/Disable looping in animation."
msgstr "Habilitar/Desabilitar loop de animação."
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Enable/Disable interpolation when looping animation."
-msgstr "Habilitar/Desabilitar loop de animação."
+msgstr "Habilitar/Desabilitar interpolação quando repetindo a animação."
#: tools/editor/animation_editor.cpp
msgid "Add new tracks."
@@ -1017,7 +1013,6 @@ msgid "Method in target Node must be specified!"
msgstr "O método no Nó destino precisa ser especificado!"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "Conectar ao Nó:"
@@ -1037,15 +1032,13 @@ msgstr "Remover"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Adicionar Argumento de Chamada Extra:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "Argumentos:"
+msgstr "Argumentos de Chamada Extras:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
msgstr "Caminho para o Nó:"
@@ -1070,9 +1063,8 @@ msgid "Connect '%s' to '%s'"
msgstr "Conectar \"%s\" a \"%s\""
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "Conexões:"
+msgstr "Conectando Sinal:"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -1653,11 +1645,11 @@ msgstr "Ir para cena aberta anteriormente."
#: tools/editor/editor_node.cpp
msgid "Fullscreen Mode"
-msgstr ""
+msgstr "Modo Tela-Cheia"
#: tools/editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Modo Sem Distrações"
#: tools/editor/editor_node.cpp
msgid "Operations with scene files."
@@ -2849,7 +2841,6 @@ msgid "Create new animation in player."
msgstr "Criar nova animação no player."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
msgstr "Carregar uma animação do disco."
@@ -2862,9 +2853,8 @@ msgid "Save the current animation"
msgstr "Salvar a animação atual"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
-msgstr "Salvar Como..."
+msgstr "Salvar Como"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4063,9 +4053,8 @@ msgid "Auto Indent"
msgstr "Auto Recuar"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Soft Reload Script"
-msgstr "Recarregar Tool Script"
+msgstr "Recarregar Script (suave)"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4157,9 +4146,8 @@ msgid "Help"
msgstr "Ajuda"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
-msgstr "Contextual"
+msgstr "Ajuda Contextual"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Tutorials"
@@ -4764,14 +4752,12 @@ msgid "Remove Class Items"
msgstr "Remover Itens de Classe"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "Criar Modelo"
+msgstr "Criar Modelo Vazio"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "Criar Modelo"
+msgstr "Criar Modelo de Editor Vazio"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -4857,28 +4843,24 @@ msgid "Erase TileMap"
msgstr "Apagar TileMap"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
msgstr "Apagar Seleção"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "Localizar próximo"
+msgstr "Localizar tile"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "Transpor"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "Espelhar X (A)"
+msgstr "Espelhar X"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Espelhar Y (S)"
+msgstr "Espelhar Y"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
@@ -5911,7 +5893,7 @@ msgstr "Carregar como Substituto"
#: tools/editor/scene_tree_editor.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "Descartar Instanciação"
#: tools/editor/scene_tree_editor.cpp
msgid "Open in Editor"
diff --git a/tools/translations/ru.po b/tools/translations/ru.po
index e80f237577..63fb6c4177 100644
--- a/tools/translations/ru.po
+++ b/tools/translations/ru.po
@@ -9,59 +9,58 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2016-06-10 11:37+0000\n"
+"PO-Revision-Date: 2016-06-19 17:29+0300\n"
"Last-Translator: DimOkGamer <dimokgamer@gmail.com>\n"
-"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
-"godot/ru/>\n"
+"Language-Team: Russian <https://hosted.weblate.org/projects/godot-"
+"engine/godot/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 2.7-dev\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Poedit 1.8.8\n"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "Неверный тип аргумента для convert(), используйте TYPE_* константы."
#: modules/gdscript/gd_functions.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
+msgstr "Не хватает байтов для декодирования байтов, или неверный формат."
#: modules/gdscript/gd_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "Аргумент шага равен нулю!"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not a script with an instance"
-msgstr "Не выбрана сцена!"
+msgstr "Скрипт без экземпляра"
#: modules/gdscript/gd_functions.cpp
msgid "Not based on a script"
-msgstr ""
+msgstr "Основан не на скрипте"
#: modules/gdscript/gd_functions.cpp
-#, fuzzy
msgid "Not based on a resource file"
-msgstr "Нет целевого ресурса шрифта!"
+msgstr "Основан не на файле ресурсов"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Недопустимый формат экземпляра словаря (отсутствует @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Недопустимый формат экземпляра словаря (невозможно загрузить скрипт из @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
+msgstr "Недопустимый формат экземпляра словаря (неверный скрипт в @path)"
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "Недопустимый экземпляр словаря (неверные подклассы)"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -168,8 +167,7 @@ msgstr ""
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-"Свойство Path должен указывать на действительный нод Node2D для работы."
+msgstr "Свойство Path должен указывать на действительный нод Node2D для работы."
#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp
msgid ""
@@ -192,8 +190,8 @@ msgid ""
"The Viewport set in the path property must be set as 'render target' in "
"order for this sprite to work."
msgstr ""
-"Области просмотра установленная в свойстве path должна быть назначена "
-"\"целью визуализации\" для того, чтобы этот спрайт работал."
+"Области просмотра установленная в свойстве path должна быть назначена \""
+"целью визуализации\" для того, чтобы этот спрайт работал."
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -237,8 +235,7 @@ msgstr "Пустой CollisionPolygon не влияет на столкнове
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-"Ресурс NavigationMesh должен быть установлен или создан для этого нода."
+msgstr "Ресурс NavigationMesh должен быть установлен или создан для этого нода."
#: scene/3d/navigation_mesh.cpp
msgid ""
@@ -585,18 +582,16 @@ msgid "Anim Delete Keys"
msgstr "Ключ удалён"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Продолжить"
+msgstr "Непрерывная"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Discrete"
-msgstr "Отсоединить"
+msgstr "Дискретная"
#: tools/editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Триггер"
#: tools/editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -706,9 +701,8 @@ msgid "Change Anim Loop"
msgstr "Изменено зацикливание анимации"
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Change Anim Loop Interpolation"
-msgstr "Изменено зацикливание анимации"
+msgstr "Изменена интерполяция анимации"
#: tools/editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -751,9 +745,8 @@ msgid "Enable/Disable looping in animation."
msgstr "Включить/отключить зацикливание в анимации."
#: tools/editor/animation_editor.cpp
-#, fuzzy
msgid "Enable/Disable interpolation when looping animation."
-msgstr "Включить/отключить зацикливание в анимации."
+msgstr "Включить/отключить интерполяцию при зацикливании анимации."
#: tools/editor/animation_editor.cpp
msgid "Add new tracks."
@@ -1020,7 +1013,6 @@ msgid "Method in target Node must be specified!"
msgstr "Метод должен быть указан в целевом Ноде!"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Conect To Node:"
msgstr "Присоединить к ноду:"
@@ -1040,15 +1032,13 @@ msgstr "Удалить"
#: tools/editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Добавить дополнительный параметр вызова:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Extra Call Arguments:"
-msgstr "Аргументы:"
+msgstr "Дополнительные параметры вызова:"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Path to Node:"
msgstr "Путь к ноду:"
@@ -1073,9 +1063,8 @@ msgid "Connect '%s' to '%s'"
msgstr "Присоединить '%s' к '%s'"
#: tools/editor/connections_dialog.cpp
-#, fuzzy
msgid "Connecting Signal:"
-msgstr "Связи:"
+msgstr "Подключение сигнала:"
#: tools/editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -1657,11 +1646,11 @@ msgstr "Перейти к предыдущей открытой сцене."
#: tools/editor/editor_node.cpp
msgid "Fullscreen Mode"
-msgstr ""
+msgstr "Полноэкранный режим"
#: tools/editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Свободный режим"
#: tools/editor/editor_node.cpp
msgid "Operations with scene files."
@@ -2857,22 +2846,20 @@ msgid "Create new animation in player."
msgstr "Создать новую анимацию."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Load animation from disk."
msgstr "Загрузить анимацию с диска."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Load an animation from disk."
-msgstr "Загрузить анимацию с диска."
+msgstr "Загрузить эту анимацию с диска."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
msgstr "Сохранить текущую анимацию"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Save As"
-msgstr "Сохранить как.."
+msgstr "Сохранить как"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4070,9 +4057,8 @@ msgid "Auto Indent"
msgstr "Автоотступ"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Soft Reload Script"
-msgstr "Перезагрузить инструм. скрипт"
+msgstr "Мягко перезагрузить скрипты"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4164,9 +4150,8 @@ msgid "Help"
msgstr "Справка"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Contextual Help"
-msgstr "Контекстная"
+msgstr "Контекстная справка"
#: tools/editor/plugins/script_editor_plugin.cpp
msgid "Tutorials"
@@ -4771,14 +4756,12 @@ msgid "Remove Class Items"
msgstr "Удалить элемент класса"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Template"
-msgstr "Создать шаблон"
+msgstr "Создать пустой образец"
#: tools/editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create Empty Editor Template"
-msgstr "Создать шаблон"
+msgstr "Создать пустой образец редактора"
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -4864,28 +4847,24 @@ msgid "Erase TileMap"
msgstr "Стирать карту тайлов"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase selection"
msgstr "Очистить выделенное"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find tile"
-msgstr "Найти следующее"
+msgstr "Найти тайл"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
msgstr "Транспонировать"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror X"
-msgstr "Зеркально по X (A)"
+msgstr "Зеркально по X"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Mirror Y"
-msgstr "Зеркально по Y (S)"
+msgstr "Зеркально по Y"
#: tools/editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket"
@@ -5040,8 +5019,8 @@ msgstr "Действие"
msgid ""
"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):"
msgstr ""
-"Фильтр для экспорта не ресурсных файлов (через запятую, например: *.json, *."
-"txt):"
+"Фильтр для экспорта не ресурсных файлов (через запятую, например: *.json, "
+"*.txt):"
#: tools/editor/project_export.cpp
msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):"
@@ -5921,7 +5900,7 @@ msgstr "Загрузить как заполнитель"
#: tools/editor/scene_tree_editor.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "Отбросить инстансинг"
#: tools/editor/scene_tree_editor.cpp
msgid "Open in Editor"
diff --git a/tools/translations/tools.pot b/tools/translations/tools.pot
index 1c22ffbc78..854f8fef78 100644
--- a/tools/translations/tools.pot
+++ b/tools/translations/tools.pot
@@ -943,7 +943,7 @@ msgid "Method in target Node must be specified!"
msgstr ""
#: tools/editor/connections_dialog.cpp
-msgid "Conect To Node:"
+msgid "Connect To Node:"
msgstr ""
#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp
@@ -1526,7 +1526,7 @@ msgid "Save Layout"
msgstr ""
#: tools/editor/editor_node.cpp
-msgid "Load Layout"
+msgid "Delete Layout"
msgstr ""
#: tools/editor/editor_node.cpp tools/editor/project_export.cpp
@@ -1534,10 +1534,6 @@ msgid "Default"
msgstr ""
#: tools/editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: tools/editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -2109,6 +2105,12 @@ msgid "No target font resource!"
msgstr ""
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
+msgid ""
+"Invalid file extension.\n"
+"Please use .fnt."
+msgstr ""
+
+#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
msgstr ""
@@ -5661,31 +5663,27 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: tools/editor/scene_tree_dock.cpp
-msgid "Inherit Scene"
+msgid "Edit Groups"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Add Child Node"
+msgid "Edit Connections"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
+msgid "Delete Node(s)"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Change Type"
+msgid "Add Child Node"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Edit Groups"
+msgid "Instance Child Scene"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Edit Connections"
+msgid "Change Type"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
@@ -5701,10 +5699,6 @@ msgid "Save Branch as Scene"
msgstr ""
#: tools/editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: tools/editor/scene_tree_dock.cpp
msgid "Add/Create a New Node"
msgstr ""