Browse Source

editor russification, add warnings to Localization::LoadJSON

Ivan K 10 years ago
parent
commit
eb2457ce6a

+ 1 - 1
Source/Tools/Urho3DPlayer/CMakeLists.txt

@@ -43,7 +43,7 @@ endif ()
 if (NOT IOS AND NOT ANDROID AND NOT EMSCRIPTEN AND NOT CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
     # Ensure the output directory exist before creating the symlinks
     file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-    foreach (FILE Editor NinjaSnowWar)
+    foreach (FILE Editor EditorRu NinjaSnowWar)
         create_symlink (${CMAKE_SOURCE_DIR}/bin/${FILE}${SCRIPT_EXT} ${CMAKE_BINARY_DIR}/bin/${FILE}${SCRIPT_EXT} FALLBACK_TO_COPY)
     endforeach ()
 endif ()

+ 16 - 0
Source/Urho3D/Resource/Localization.cpp

@@ -160,12 +160,28 @@ void Localization::LoadJSON(const JSONValue &source)
     for (unsigned i = 0; i < ids.Size(); i++)
     {
         String id = ids[i];
+        if (id.Empty())
+        {
+            LOGWARNING("Localization::LoadJSON(source): string ID is empty");
+            continue;
+        }
         JSONValue value = source.GetChild(id);
         Vector<String> langs = value.GetValueNames();
         for (unsigned j = 0; j < langs.Size(); j++)
         {
             String lang = langs[j];
+            if (lang.Empty())
+            {
+                LOGWARNING("Localization::LoadJSON(source): language name is empty, string ID=\"" + id + "\"");
+                continue;
+            }
             String string = value.GetString(lang);
+            if (string.Empty())
+            {
+                LOGWARNING("Localization::LoadJSON(source): translation is empty, string ID=\"" + id +
+                           "\", language=\"" + lang + "\"");
+                continue;
+            }
             strings_[StringHash(lang)][StringHash(id)] = string;
             if (!languages_.Contains(lang))
                 languages_.Push(lang);

+ 302 - 2
bin/Data/EditorStrings.json

@@ -149,11 +149,11 @@
 	},
 	"Replicated node":{
 		"en":"Replicated node",
-		"ru":"Реплицируемую ноду"
+		"ru":"Реплицируемая нода"
 	},
 	"Local node":{
 		"en":"Local node",
-		"ru":"Локальную ноду"
+		"ru":"Локальная нода"
 	},
 	"Component":{
 		"en":"Component",
@@ -263,10 +263,134 @@
 		"en":"Spawn editor",
 		"ru":"Редактор спауна"
 	},
+	"Spawn settings":{
+		"en":"Spawn settings",
+		"ru":"Настройки спауна"
+	},
 	"Sound Type editor":{
 		"en":"Sound Type editor",
 		"ru":"Тип звука"
 	},
+	"Expand":{
+		"en":"Expand",
+		"ru":"Развернуть"
+	},
+	"Collapse":{
+		"en":"Collapse",
+		"ru":"Свернуть"
+	},
+	"All":{
+		"en":"All",
+		"ru":"Все"
+	},
+	"Mode: ":{
+		"en":"Mode: ",
+		"ru":"Режим: "
+	},
+	"  Axis: ":{
+		"en":"  Axis: ",
+		"ru":"  Оси: "
+	},
+	"  Pick: ":{
+		"en":"  Pick: ",
+		"ru":"  Выбор: "
+	},
+	"  Fill: ":{
+		"en":"  Fill: ",
+		"ru":"  Отображение: "
+	},
+	"  Updates: ":{
+		"en":"  Updates: ",
+		"ru":"  Обновления: "
+	},
+	"Running":{
+		"en":"Running",
+		"ru":"Запущены"
+	},
+	"Paused":{
+		"en":"Paused",
+		"ru":"На паузе"
+	},
+	"Tris: ":{
+		"en":"Tris: ",
+		"ru":"Треуг-в: "
+	},
+	"  Batches: ":{
+		"en":"  Batches: ",
+		"ru":"  Батчей: "
+	},
+	"  Lights: ":{
+		"en":"  Lights: ",
+		"ru":"  Ист-в света: "
+	},
+	"  Shadowmaps: ":{
+		"en":"  Shadowmaps: ",
+		"ru":"  Теневых карт: "
+	},
+	"  Occluders: ":{
+		"en":"  Occluders: ",
+		"ru":"  Окклюдеров: "
+	},
+	"Move":{
+		"en":"Move",
+		"ru":"Перемещение"
+	},
+	"Rotate":{
+		"en":"Rotate",
+		"ru":"Вращение"
+	},
+	"Scale":{
+		"en":"Scale",
+		"ru":"Масштабирование"
+	},
+	"Select":{
+		"en":"Select",
+		"ru":"Выделение"
+	},
+	"Spawn":{
+		"en":"Spawn",
+		"ru":"Спаун"
+	},
+	"World":{
+		"en":"World",
+		"ru":"Мировые"
+	},
+	"Local":{
+		"en":"Local",
+		"ru":"Локальные"
+	},
+	"Geometries":{
+		"en":"Geometries",
+		"ru":"Геометрия"
+	},
+	"Lights":{
+		"en":"Lights",
+		"ru":"Источники света"
+	},
+	"Zones":{
+		"en":"Zones",
+		"ru":"Зоны"
+	},
+	"Rigidbodies":{
+		"en":"Rigidbodies",
+		"ru":"Твердые тела"
+	},
+	"UI-elements":{
+		"en":"UI-elements",
+		"ru":"Элементы интерфейса"
+	},
+	"Solid":{
+		"en":"Solid",
+		"ru":"Материал"
+	},
+	"Wire":{
+		"en":"Wire",
+		"ru":"Сетка"
+	},
+	"Point":{
+		"en":"Point",
+		"ru":"Вершины"
+	},
 	"Editor settings":{
 		"en":"Editor settings",
 		"ru":"Настройки редактора"
@@ -303,6 +427,182 @@
 		"en":"Showing files: ",
 		"ru":"Показано файлов: "
 	},
+	"Camera":{
+		"en":"Camera",
+		"ru":"Камера"
+	},
+	"RunUpdatePlay":{
+		"en":"RunUpdatePlay",
+		"ru":"Запустить"
+	},
+	"RunUpdatePause":{
+		"en":"RunUpdatePause",
+		"ru":"Пауза"
+	},
+	"RevertOnPause":{
+		"en":"RevertOnPause",
+		"ru":"Вернуться на паузе"
+	},
+	"EditMove":{
+		"en":"EditMove",
+		"ru":"Перемещение"
+	},
+	"EditRotate":{
+		"en":"EditRotate",
+		"ru":"Вращение"
+	},
+	"EditScale":{
+		"en":"EditScale",
+		"ru":"Масштабирование"
+	},
+	"EditSelect":{
+		"en":"EditSelect",
+		"ru":"Выделение"
+	},
+	"AxisWorld":{
+		"en":"AxisWorld",
+		"ru":"Мировые оси"
+	},
+	"AxisLocal":{
+		"en":"AxisLocal",
+		"ru":"Локальные оси"
+	},
+	"MoveSnap":{
+		"en":"MoveSnap",
+		"ru":"Дискретное перемещение"
+	},
+	"RotateSnap":{
+		"en":"RotateSnap",
+		"ru":"Дискретное вращение"
+	},
+	"ScaleSnap":{
+		"en":"ScaleSnap",
+		"ru":"Дискретное масштабирование"
+	},
+	"SnapScaleHalf":{
+		"en":"SnapScaleHalf",
+		"ru":"Половина дискретного масштабирования"
+	},
+	"SnapScaleQuarter":{
+		"en":"SnapScaleQuarter",
+		"ru":"Четверть дискретного масштабирования"
+	},
+	"PickGeometries":{
+		"en":"PickGeometries",
+		"ru":"Выделении геометрии"
+	},
+	"PickLights":{
+		"en":"PickLights",
+		"ru":"Выделение источников света"
+	},
+	"PickZones":{
+		"en":"PickZones",
+		"ru":"Выделение зон"
+	},
+	"PickRigidBodies":{
+		"en":"PickRigidBodies",
+		"ru":"Выделение твердых тел"
+	},
+	"PickUIElements":{
+		"en":"PickUIElements",
+		"ru":"Выделение элементов интерфейса"
+	},
+	"FillPoint":{
+		"en":"FillPoint",
+		"ru":"Отображать вершины"
+	},
+	"FillWireFrame":{
+		"en":"FillWireFrame",
+		"ru":"Отображать сетку"
+	},
+	"FillSolid":{
+		"en":"FillSolid",
+		"ru":"Отображать материалы"
+	},
+	"Light":{
+		"en":"Light",
+		"ru":"Источник света"
+	},
+	"Zone":{
+		"en":"Zone",
+		"ru":"Зона"
+	},
+	"StaticModel":{
+		"en":"StaticModel",
+		"ru":"Статическая модель"
+	},
+	"AnimatedModel":{
+		"en":"AnimatedModel",
+		"ru":"Анимированная модель"
+	},
+	"BillboardSet":{
+		"en":"BillboardSet",
+		"ru":"Набор билбордов"
+	},
+	"ParticleEmitter":{
+		"en":"ParticleEmitter",
+		"ru":"Излучатель частиц"
+	},
+	"Skybox":{
+		"en":"Skybox",
+		"ru":"Скайбокс"
+	},
+	"Terrain":{
+		"en":"Terrain",
+		"ru":"Ландшафт"
+	},
+	"Text3D":{
+		"en":"Text3D",
+		"ru":"Текст 3D"
+	},
+	"SoundListener":{
+		"en":"SoundListener",
+		"ru":"Звукоприемник"
+	},
+	"SoundSource3D":{
+		"en":"SoundSource3D",
+		"ru":"Источник звука 3D"
+	},
+	"SoundSource":{
+		"en":"SoundSource",
+		"ru":"Источник звука"
+	},
+	"RigidBody":{
+		"en":"RigidBody",
+		"ru":"Твердое тело"
+	},
+	"CollisionShape":{
+		"en":"CollisionShape",
+		"ru":"КолижнШейп"
+	},
+	"Constraint":{
+		"en":"Constraint",
+		"ru":"Ограничитель"
+	},
+	"AnimationController":{
+		"en":"AnimationController",
+		"ru":"Контроллер анимации"
+	},
+	"ScriptInstance":{
+		"en":"ScriptInstance",
+		"ru":"Скрипт"
+	},
+	"Navigable":{
+		"en":"Navigable",
+		"ru":"Navigable"
+	},
+	"NavigationMesh":{
+		"en":"NavigationMesh",
+		"ru":"NavigationMesh"
+	},
+	"OffMeshConnection":{
+		"en":"OffMeshConnection",
+		"ru":"OffMeshConnection"
+	},
+	"NetworkPriority":{
+		"en":"NetworkPriority",
+		"ru":"Сетевой приоритет"
+	},
 	"File":{
 		"en":"File",
 		"ru":"Файл"

+ 1 - 0
bin/Data/Scripts/Editor/EditorToolBar.as

@@ -168,6 +168,7 @@ UIElement@ CreateToolTip(UIElement@ parent, const String&in title, const IntVect
 
     Text@ toolTipText = textHolder.CreateChild("Text");
     toolTipText.SetStyle("ToolTipText");
+    toolTipText.autoLocalizable = true;
     toolTipText.text = title;
 
     return toolTip;

+ 10 - 10
bin/Data/Scripts/Editor/EditorView.as

@@ -1125,18 +1125,18 @@ void SetupStatsBarText(Text@ text, Font@ font, int x, int y, HorizontalAlignment
 void UpdateStats(float timeStep)
 {
     editorModeText.text = String(
-        "Mode: " + editModeText[editMode] +
-        "  Axis: " + axisModeText[axisMode] +
-        "  Pick: " + pickModeText[pickMode] +
-        "  Fill: " + fillModeText[fillMode] +
-        "  Updates: " + (runUpdate ? "Running" : "Paused"));
+        localization.Get("Mode: ") + localization.Get(editModeText[editMode]) +
+        localization.Get("  Axis: ") + localization.Get(axisModeText[axisMode]) +
+        localization.Get("  Pick: ") + localization.Get(pickModeText[pickMode]) +
+        localization.Get("  Fill: ") + localization.Get(fillModeText[fillMode]) +
+        localization.Get("  Updates: ") + (runUpdate ? localization.Get("Running") : localization.Get("Paused")));
 
     renderStatsText.text = String(
-        "Tris: " + renderer.numPrimitives +
-        "  Batches: " + renderer.numBatches +
-        "  Lights: " + renderer.numLights[true] +
-        "  Shadowmaps: " + renderer.numShadowMaps[true] +
-        "  Occluders: " + renderer.numOccluders[true]);
+        localization.Get("Tris: ") + renderer.numPrimitives +
+        localization.Get("  Batches: ") + renderer.numBatches +
+        localization.Get("  Lights: ") + renderer.numLights[true] +
+        localization.Get("  Shadowmaps: ") + renderer.numShadowMaps[true] +
+        localization.Get("  Occluders: ") + renderer.numOccluders[true]);
 
     editorModeText.size = editorModeText.minSize;
     renderStatsText.size = renderStatsText.minSize;

+ 2 - 2
bin/Data/UI/DefaultStyle.xml

@@ -315,7 +315,7 @@
     </element>
     <element type="EditorMenuText" style="Text" auto="false" />
     <element type="EditorAttributeText" auto="false">
-        <attribute name="Font" value="Font;Fonts/BlueHighway.ttf" />
+        <attribute name="Font" value="Font;Fonts/Anonymous Pro.ttf" />
         <attribute name="Font Size" value="9" />
     </element>
     <element type="EditorEnumAttributeText" style="EditorAttributeText" auto="false">
@@ -359,7 +359,7 @@
         <attribute name="Border" value="6 2 2 2" />
     </element>
     <element type="ToolTipText" style="Text">
-        <attribute name="Font" value="Font;Fonts/BlueHighway.ttf" />
+        <attribute name="Font" value="Font;Fonts/Anonymous Pro.ttf" />
         <attribute name="Font Size" value="9" />
     </element>
     <element type="ViewportBorder" style="BorderImage">

+ 8 - 4
bin/Data/UI/EditorHierarchyWindow.xml

@@ -12,6 +12,7 @@
         <attribute name="Layout Mode" value="Horizontal" />
         <element type="Text">
             <attribute name="Text" value="Hierarchy" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="CloseButton">
             <attribute name="Name" value="CloseButton" />
@@ -25,24 +26,26 @@
         <attribute name="Layout Spacing" value="4" />
         <element type="Button">
             <attribute name="Name" value="ExpandButton" />
-            <attribute name="Min Size" value="70 17" />
-            <attribute name="Max Size" value="70 17" />
+            <attribute name="Min Size" value="100 17" />
+            <attribute name="Max Size" value="100 17" />
             <attribute name="Layout Mode" value="Horizontal" />
             <attribute name="Layout Border" value="1 1 1 1" />
             <element type="Text">
                 <attribute name="Text" value="Expand" />
                 <attribute name="Text Alignment" value="Center" />
+                <attribute name="Auto Localizable" value="true" />
             </element>
         </element>
         <element type="Button">
             <attribute name="Name" value="CollapseButton" />
-            <attribute name="Min Size" value="70 17" />
-            <attribute name="Max Size" value="70 17" />
+            <attribute name="Min Size" value="100 17" />
+            <attribute name="Max Size" value="100 17" />
             <attribute name="Layout Mode" value="Horizontal" />
             <attribute name="Layout Border" value="1 1 1 1" />
             <element type="Text">
                 <attribute name="Text" value="Collapse" />
                 <attribute name="Text Alignment" value="Center" />
+                <attribute name="Auto Localizable" value="true" />
             </element>
         </element>
         <element type="CheckBox">
@@ -55,6 +58,7 @@
             <attribute name="Layout Border" value="5 1 1 1" />
             <element type="Text">
                 <attribute name="Text" value="All" />
+                <attribute name="Auto Localizable" value="true" />
             </element>
         </element>
     </element>

+ 1 - 0
bin/Data/UI/EditorInspectorWindow.xml

@@ -13,6 +13,7 @@
         <attribute name="Layout Spacing" value="4" />
         <element type="Text">
             <attribute name="Text" value="Attribute inspector" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="Button">
                 <attribute name="Name" value="LockButton" />

+ 1 - 0
bin/Data/UI/EditorMaterialWindow.xml

@@ -12,6 +12,7 @@
         <attribute name="Layout Mode" value="Horizontal" />
         <element type="Text">
             <attribute name="Text" value="Material editor" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="CloseButton">
             <attribute name="Name" value="CloseButton" />

+ 1 - 0
bin/Data/UI/EditorParticleEffectWindow.xml

@@ -12,6 +12,7 @@
         <attribute name="Layout Mode" value="Horizontal" />
         <element type="Text">
             <attribute name="Text" value="Particle editor" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="CloseButton">
             <attribute name="Name" value="CloseButton" />

+ 1 - 0
bin/Data/UI/EditorPreferencesDialog.xml

@@ -14,6 +14,7 @@
         <attribute name="Layout Mode" value="Horizontal" />
         <element type="Text">
             <attribute name="Text" value="Editor preferences" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="CloseButton">
             <attribute name="Name" value="CloseButton" />

+ 1 - 0
bin/Data/UI/EditorSettingsDialog.xml

@@ -14,6 +14,7 @@
         <attribute name="Layout Mode" value="Horizontal" />
         <element type="Text">
             <attribute name="Text" value="Editor settings" />
+            <attribute name="Auto Localizable" value="true" />
         </element>
         <element type="Button" style="CloseButton">
             <attribute name="Name" value="CloseButton" />

+ 1 - 0
bin/Data/UI/EditorSoundTypeWindow.xml

@@ -13,6 +13,7 @@
 		<attribute name="Layout Mode" value="Horizontal" />
 		<element type="Text">
 			<attribute name="Text" value="Sound Type editor" />
+			<attribute name="Auto Localizable" value="true" />
 		</element>
 		<element type="Button" style="CloseButton">
 			<attribute name="Name" value="CloseButton" />

+ 1 - 0
bin/Data/UI/EditorSpawnWindow.xml

@@ -20,6 +20,7 @@
 			<attribute name="Bottom Left Color" value="0.85 0.85 0.85 1" />
 			<attribute name="Bottom Right Color" value="0.85 0.85 0.85 1" />
 			<attribute name="Text" value="Spawn settings" />
+			<attribute name="Auto Localizable" value="true" />
 		</element>
 		<element type="Button" style="CloseButton">
 			<attribute name="Name" value="CloseButton" />

+ 1 - 1
bin/Data/UI/OldStyle.xml

@@ -247,7 +247,7 @@
     </element>
     <element type="EditorMenuText" style="Text" auto="false" />
     <element type="EditorAttributeText" auto="false">
-        <attribute name="Font" value="Font;Fonts/BlueHighway.ttf" />
+        <attribute name="Font" value="Font;Fonts/Anonymous Pro.ttf" />
         <attribute name="Font Size" value="9" />
     </element>
     <element type="EditorEnumAttributeText" style="EditorAttributeText" auto="false">

+ 5 - 2
bin/EditorRu.bat

@@ -1,2 +1,5 @@
-Editor.bat -language ru -w -s
-
+@echo off
+if exist "%~dp0Urho3DPlayer.exe" (set "DEBUG=") else (set "DEBUG=_d")
+if exist "%~dp0..\share\Urho3D\Resources" (set "OPT1=-pp ..\share\Urho3D\Resources") else (set "OPT1=")
+if [%1] == [] (set "OPT2=-w -s") else (set "OPT2=")
+start "" "%~dp0Urho3DPlayer%DEBUG%" Scripts/Editor.as -language ru %OPT1% %OPT2% %*

+ 4 - 0
bin/EditorRu.sh

@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+if [ -d $(dirname $0)/../share/Urho3D/Resources ]; then OPT1="-pp ../share/Urho3D/Resources"; fi
+if [ $# -eq 0 ]; then OPT2="-w -s"; fi
+$(dirname $0)/Urho3DPlayer Scripts/Editor.as -language ru $OPT1 $OPT2 $@