com.xmobitea.changx.mini-localization 1.3.9 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Editor/LocalizationComponentEditor.cs +66 -0
- package/Editor/{LocalizationComponentBaseEditor.cs.meta → LocalizationComponentEditor.cs.meta} +11 -11
- package/Editor/LocalizationComponentWindowsEditor.cs +49 -5
- package/Editor/LocalizationKeyDrawer.cs +121 -0
- package/Editor/{TMP_LocalizationComponentWindowsEditor.cs.meta → LocalizationKeyDrawer.cs.meta} +11 -11
- package/Editor/LocalizationManagerEditor.cs +57 -13
- package/Editor/LocalizationSettingsEditor.cs +22 -8
- package/Editor/TMP_LocalizationComponentEditor.cs +66 -0
- package/Editor/TMP_LocalizationComponentEditor.cs.meta +11 -0
- package/Editor/Tools/GetLocalizationTools/linux-x64/GetLocalization +0 -0
- package/Editor/Tools/GetLocalizationTools/{GetLocalization.deps.json.meta → linux-x64/GetLocalization.meta} +7 -7
- package/Editor/Tools/GetLocalizationTools/linux-x64/GetLocalization.pdb +0 -0
- package/Editor/Tools/GetLocalizationTools/{GetLocalization.runtimeconfig.dev.json.meta → linux-x64/GetLocalization.pdb.meta} +7 -7
- package/Editor/Tools/GetLocalizationTools/linux-x64.meta +8 -0
- package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization +0 -0
- package/Editor/Tools/GetLocalizationTools/{GetLocalization.runtimeconfig.json.meta → osx-x64/GetLocalization.meta} +7 -7
- package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization.pdb +0 -0
- package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization.pdb.meta +7 -0
- package/Editor/Tools/GetLocalizationTools/osx-x64.meta +8 -0
- package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.exe +0 -0
- package/Editor/Tools/GetLocalizationTools/{GetLocalization.exe.meta → win-x64/GetLocalization.exe.meta} +7 -7
- package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.pdb +0 -0
- package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.pdb.meta +7 -0
- package/Editor/Tools/GetLocalizationTools/win-x64.meta +8 -0
- package/Runtime/LocalizationComponent.cs +3 -0
- package/Runtime/LocalizationConstanceId.cs +5 -0
- package/Runtime/LocalizationConstanceId.cs.meta +11 -0
- package/Runtime/LocalizationSettings.cs +9 -0
- package/package.json +1 -1
- package/Editor/LocalizationComponentBaseEditor.cs +0 -20
- package/Editor/TMP_LocalizationComponentWindowsEditor.cs +0 -133
- package/Editor/Tools/GetLocalizationTools/GetLocalization.deps.json +0 -119
- package/Editor/Tools/GetLocalizationTools/GetLocalization.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/GetLocalization.dll.meta +0 -92
- package/Editor/Tools/GetLocalizationTools/GetLocalization.exe +0 -0
- package/Editor/Tools/GetLocalizationTools/GetLocalization.runtimeconfig.dev.json +0 -8
- package/Editor/Tools/GetLocalizationTools/GetLocalization.runtimeconfig.json +0 -9
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.PlatformServices.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.PlatformServices.dll.meta +0 -47
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.dll.meta +0 -47
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Core.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Core.dll.meta +0 -47
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Sheets.v4.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Google.Apis.Sheets.v4.dll.meta +0 -47
- package/Editor/Tools/GetLocalizationTools/Google.Apis.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Google.Apis.dll.meta +0 -47
- package/Editor/Tools/GetLocalizationTools/Newtonsoft.Json.dll +0 -0
- package/Editor/Tools/GetLocalizationTools/Newtonsoft.Json.dll.meta +0 -47
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
namespace XmobiTea.MiniLocalization.Editor
|
|
2
|
+
{
|
|
3
|
+
using System.IO;
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
[CustomEditor(typeof(LocalizationComponent))]
|
|
9
|
+
public class LocalizationComponentEditor : Editor
|
|
10
|
+
{
|
|
11
|
+
SerializedProperty keyProp;
|
|
12
|
+
SerializedProperty mainTxtProp;
|
|
13
|
+
|
|
14
|
+
private void OnEnable()
|
|
15
|
+
{
|
|
16
|
+
keyProp = serializedObject.FindProperty("_key");
|
|
17
|
+
mainTxtProp = serializedObject.FindProperty("_mainTxt");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public override void OnInspectorGUI()
|
|
21
|
+
{
|
|
22
|
+
serializedObject.Update();
|
|
23
|
+
|
|
24
|
+
EditorGUILayout.PropertyField(mainTxtProp);
|
|
25
|
+
|
|
26
|
+
EditorGUILayout.PropertyField(keyProp);
|
|
27
|
+
|
|
28
|
+
if (serializedObject.hasModifiedProperties) serializedObject.ApplyModifiedProperties();
|
|
29
|
+
|
|
30
|
+
EditorGUILayout.Space(20);
|
|
31
|
+
|
|
32
|
+
if (GUILayout.Button("Reload Text"))
|
|
33
|
+
{
|
|
34
|
+
var localizationComponentBase = (LocalizationComponentBase)target;
|
|
35
|
+
localizationComponentBase.OnUpdateText();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[MenuItem("XmobiTea Tools/Localization/Open Settings")]
|
|
40
|
+
private static void OpenSettings()
|
|
41
|
+
{
|
|
42
|
+
var localizationSettings = GetSettings();
|
|
43
|
+
|
|
44
|
+
Selection.SetActiveObjectWithContext(localizationSettings, localizationSettings);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static LocalizationSettings GetSettings()
|
|
48
|
+
{
|
|
49
|
+
var localizationSettings = Resources.Load<LocalizationSettings>(LocalizationSettings.ResourcesPath);
|
|
50
|
+
if (localizationSettings == null)
|
|
51
|
+
{
|
|
52
|
+
localizationSettings = ScriptableObject.CreateInstance<LocalizationSettings>();
|
|
53
|
+
|
|
54
|
+
var dirPath = Application.dataPath + "/Resources";
|
|
55
|
+
if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath);
|
|
56
|
+
|
|
57
|
+
var path = "Assets/Resources/" + LocalizationSettings.ResourcesPath + ".asset";
|
|
58
|
+
AssetDatabase.CreateAsset(localizationSettings, path);
|
|
59
|
+
|
|
60
|
+
Debug.Log("[Localization] Localization Settings create success at path " + path);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return localizationSettings;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
package/Editor/{LocalizationComponentBaseEditor.cs.meta → LocalizationComponentEditor.cs.meta}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid:
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 5b5bfbf16db005d4c92afef84a4c324e
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
using UnityEngine;
|
|
7
7
|
using UnityEngine.UI;
|
|
8
|
+
using UnityEditor.IMGUI.Controls;
|
|
9
|
+
using TMPro;
|
|
8
10
|
|
|
9
11
|
public class LocalizationComponentWindowsEditor : EditorWindow
|
|
10
12
|
{
|
|
11
|
-
private
|
|
13
|
+
private AdvancedDropdownState dropdownState = new AdvancedDropdownState();
|
|
14
|
+
|
|
15
|
+
private GameObject[] textsInScene;
|
|
12
16
|
|
|
13
17
|
Vector2 scrollPos = new Vector2(0, 0);
|
|
14
18
|
GUIStyle grayTextColor = GUIStyle.none;
|
|
@@ -30,11 +34,24 @@
|
|
|
30
34
|
{
|
|
31
35
|
if (parentGO)
|
|
32
36
|
{
|
|
33
|
-
|
|
37
|
+
var texts = parentGO.GetComponentsInChildren<Text>(true);
|
|
38
|
+
var tmpTexts = parentGO.GetComponentsInChildren<TMP_Text>(true);
|
|
39
|
+
|
|
40
|
+
textsInScene = new GameObject[texts.Length + tmpTexts.Length];
|
|
41
|
+
|
|
42
|
+
for (var i = 0; i < texts.Length; i++)
|
|
43
|
+
{
|
|
44
|
+
textsInScene[i] = texts[i].gameObject;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
for (var i = 0; i < tmpTexts.Length; i++)
|
|
48
|
+
{
|
|
49
|
+
textsInScene[texts.Length + i] = tmpTexts[i].gameObject;
|
|
50
|
+
}
|
|
34
51
|
}
|
|
35
52
|
else
|
|
36
53
|
{
|
|
37
|
-
textsInScene = new
|
|
54
|
+
textsInScene = new GameObject[0];
|
|
38
55
|
}
|
|
39
56
|
}
|
|
40
57
|
|
|
@@ -81,21 +98,48 @@
|
|
|
81
98
|
}
|
|
82
99
|
}
|
|
83
100
|
|
|
84
|
-
var localizationComponent = text.GetComponent<
|
|
101
|
+
var localizationComponent = text.GetComponent<LocalizationComponentBase>();
|
|
85
102
|
if (localizationComponent)
|
|
86
103
|
{
|
|
87
104
|
localizationComponent.Key = GUILayout.TextField(localizationComponent.Key, GUILayout.Width(maxWidth * 2 / 5));
|
|
88
105
|
|
|
106
|
+
var keys = LocalizationKeyDrawer.GetKeys();
|
|
107
|
+
|
|
108
|
+
if (GUILayout.Button("▼", GUILayout.Width(maxWidth / 8)))
|
|
109
|
+
{
|
|
110
|
+
var buttonRect = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 30, EditorGUIUtility.singleLineHeight);
|
|
111
|
+
var dropdown = new LocalizationDropdown(dropdownState, keys, selectedKey =>
|
|
112
|
+
{
|
|
113
|
+
localizationComponent.Key = selectedKey;
|
|
114
|
+
});
|
|
115
|
+
dropdown.Show(buttonRect);
|
|
116
|
+
}
|
|
117
|
+
|
|
89
118
|
if (GUILayout.Button("Remove", GUILayout.Width(maxWidth / 5)))
|
|
90
119
|
{
|
|
91
120
|
DestroyImmediate(localizationComponent, true);
|
|
92
121
|
}
|
|
122
|
+
|
|
123
|
+
if (!string.IsNullOrEmpty(localizationComponent.Key))
|
|
124
|
+
{
|
|
125
|
+
if (!keys.Contains(localizationComponent.Key))
|
|
126
|
+
{
|
|
127
|
+
var style = new GUIStyle(EditorStyles.label);
|
|
128
|
+
style.richText = true;
|
|
129
|
+
|
|
130
|
+
GUILayout.Label("<color=red>" + localizationComponent.Key + "</color> missing on LocalizationConstanceId.cs", style);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
93
133
|
}
|
|
94
134
|
else
|
|
95
135
|
{
|
|
96
136
|
if (GUILayout.Button("Add LocalizationComponent", GUILayout.Width(maxWidth * 2 / 5)))
|
|
97
137
|
{
|
|
98
|
-
|
|
138
|
+
if (text.GetComponent<Text>() != null)
|
|
139
|
+
localizationComponent = text.gameObject.AddComponent<LocalizationComponent>();
|
|
140
|
+
else
|
|
141
|
+
localizationComponent = text.gameObject.AddComponent<TMP_LocalizationComponent>();
|
|
142
|
+
|
|
99
143
|
Selection.objects = new Object[] { text.gameObject };
|
|
100
144
|
}
|
|
101
145
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
namespace XmobiTea.MiniLocalization.Editor
|
|
2
|
+
{
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
|
|
6
|
+
using System;
|
|
7
|
+
using System.Collections.Generic;
|
|
8
|
+
using System.Linq;
|
|
9
|
+
using System.Reflection;
|
|
10
|
+
using UnityEditor.IMGUI.Controls;
|
|
11
|
+
|
|
12
|
+
public class LocalizationDropdown : AdvancedDropdown
|
|
13
|
+
{
|
|
14
|
+
private Action<string> onSelect;
|
|
15
|
+
private List<string> keys;
|
|
16
|
+
|
|
17
|
+
public LocalizationDropdown(AdvancedDropdownState state, List<string> keys, Action<string> onSelect) : base(state)
|
|
18
|
+
{
|
|
19
|
+
this.keys = keys;
|
|
20
|
+
this.onSelect = onSelect;
|
|
21
|
+
minimumSize = new Vector2(200, 300);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
protected override AdvancedDropdownItem BuildRoot()
|
|
25
|
+
{
|
|
26
|
+
var root = new AdvancedDropdownItem("Select Localization Key");
|
|
27
|
+
foreach (var key in keys)
|
|
28
|
+
{
|
|
29
|
+
root.AddChild(new AdvancedDropdownItem(key));
|
|
30
|
+
}
|
|
31
|
+
return root;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected override void ItemSelected(AdvancedDropdownItem item)
|
|
35
|
+
{
|
|
36
|
+
onSelect?.Invoke(item.name);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
[CustomPropertyDrawer(typeof(LocalizationKeyAttribute))]
|
|
41
|
+
public class LocalizationKeyDrawer : PropertyDrawer
|
|
42
|
+
{
|
|
43
|
+
private static List<string> keys = new List<string>();
|
|
44
|
+
private static long nextTimeUpdate;
|
|
45
|
+
|
|
46
|
+
private AdvancedDropdownState dropdownState = new AdvancedDropdownState();
|
|
47
|
+
|
|
48
|
+
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|
49
|
+
{
|
|
50
|
+
var keys = GetKeys();
|
|
51
|
+
|
|
52
|
+
EditorGUI.BeginProperty(position, label, property);
|
|
53
|
+
|
|
54
|
+
// Tạo khung cho filter và input text
|
|
55
|
+
var newKeyValue = EditorGUI.TextField(new Rect(position.x, position.y, position.width - 28, EditorGUIUtility.singleLineHeight), "Key", property.stringValue);
|
|
56
|
+
if (newKeyValue != property.stringValue) property.stringValue = newKeyValue;
|
|
57
|
+
|
|
58
|
+
if (!string.IsNullOrEmpty(property.stringValue))
|
|
59
|
+
{
|
|
60
|
+
if (!keys.Contains(property.stringValue))
|
|
61
|
+
{
|
|
62
|
+
var style = new GUIStyle(EditorStyles.label);
|
|
63
|
+
style.richText = true;
|
|
64
|
+
|
|
65
|
+
EditorGUI.LabelField(new Rect(position.x, position.y + EditorGUIUtility.singleLineHeight, position.width, EditorGUIUtility.singleLineHeight), "\t\t<color=red>" + property.stringValue + "</color> missing on LocalizationConstanceId.cs", style);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (GUI.Button(new Rect(position.x + position.width - 25, position.y, 25, EditorGUIUtility.singleLineHeight), "▼"))
|
|
70
|
+
{
|
|
71
|
+
var buttonRect = new Rect(position.x + position.width - 30, position.y, 30, EditorGUIUtility.singleLineHeight);
|
|
72
|
+
var dropdown = new LocalizationDropdown(dropdownState, keys, selectedKey =>
|
|
73
|
+
{
|
|
74
|
+
property.stringValue = selectedKey;
|
|
75
|
+
property.serializedObject.ApplyModifiedProperties();
|
|
76
|
+
});
|
|
77
|
+
dropdown.Show(buttonRect);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
EditorGUI.EndProperty();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public static List<string> GetKeys()
|
|
84
|
+
{
|
|
85
|
+
var milliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
86
|
+
|
|
87
|
+
if (nextTimeUpdate < milliseconds)
|
|
88
|
+
{
|
|
89
|
+
nextTimeUpdate = 60000 + milliseconds;
|
|
90
|
+
|
|
91
|
+
keys.Clear();
|
|
92
|
+
|
|
93
|
+
var types = AppDomain.CurrentDomain.GetAssemblies()
|
|
94
|
+
.SelectMany(s => s.GetTypes())
|
|
95
|
+
.Where(p => p.Name == "LocalizationConstanceId" && p.Namespace == "XmobiTea.MiniLocalization").ToList();
|
|
96
|
+
|
|
97
|
+
foreach (var type in types)
|
|
98
|
+
{
|
|
99
|
+
var fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);
|
|
100
|
+
|
|
101
|
+
foreach (var field in fields)
|
|
102
|
+
{
|
|
103
|
+
if (field.FieldType == typeof(string))
|
|
104
|
+
{
|
|
105
|
+
var value = field.GetValue(null) as string;
|
|
106
|
+
if (!string.IsNullOrEmpty(value))
|
|
107
|
+
{
|
|
108
|
+
if (!keys.Contains(value)) keys.Add(value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
keys = keys.OrderBy(x => x).ToList();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return keys;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
}
|
package/Editor/{TMP_LocalizationComponentWindowsEditor.cs.meta → LocalizationKeyDrawer.cs.meta}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid:
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: c89e549aa37295f4b934b14c58f5726d
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
[CustomEditor(typeof(LocalizationManager))]
|
|
11
11
|
public class LocalizationManagerEditor : Editor
|
|
12
12
|
{
|
|
13
|
-
private const string Version = "1.
|
|
13
|
+
private const string Version = "1.4.1";
|
|
14
14
|
private const string Library = @".\Library\PackageCache\com.xmobitea.changx.mini-localization@" + Version;
|
|
15
|
-
private const string
|
|
15
|
+
//private const string Library = @".\Assets\MiniLocalization";
|
|
16
|
+
private const string ProcessPath = @"\Editor\Tools\GetLocalizationTools";
|
|
16
17
|
private const string CredentialsPath = @"\Editor\Tools\GetLocalizationTools\credentials.json";
|
|
17
18
|
|
|
18
19
|
public override void OnInspectorGUI()
|
|
@@ -24,10 +25,10 @@
|
|
|
24
25
|
ShowLocalizationComponentWindowsEditor();
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
if (GUILayout.Button("Show TMP_LocalizationComponentWindows"))
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
}
|
|
28
|
+
//if (GUILayout.Button("Show TMP_LocalizationComponentWindows"))
|
|
29
|
+
//{
|
|
30
|
+
// ShowTMPLocalizationComponentWindowsEditor();
|
|
31
|
+
//}
|
|
31
32
|
|
|
32
33
|
if (GUILayout.Button("Generate LocalizationConstanceId.cs"))
|
|
33
34
|
{
|
|
@@ -46,11 +47,11 @@
|
|
|
46
47
|
LocalizationComponentWindowsEditor.ShowWindow();
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
[MenuItem("XmobiTea Tools/Localization/Show TMP_LocalizationComponentWindows")]
|
|
50
|
-
public static void ShowTMPLocalizationComponentWindowsEditor()
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
}
|
|
50
|
+
//[MenuItem("XmobiTea Tools/Localization/Show TMP_LocalizationComponentWindows")]
|
|
51
|
+
//public static void ShowTMPLocalizationComponentWindowsEditor()
|
|
52
|
+
//{
|
|
53
|
+
// TMP_LocalizationComponentWindowsEditor.ShowWindow();
|
|
54
|
+
//}
|
|
54
55
|
|
|
55
56
|
[MenuItem("XmobiTea Tools/Localization/Fetch Localization")]
|
|
56
57
|
public static void FetchLocalization()
|
|
@@ -72,17 +73,60 @@
|
|
|
72
73
|
if (!usingFetchLocalLocalization && !usingFetchOnlineLocalization) return;
|
|
73
74
|
|
|
74
75
|
var processPath = Library + ProcessPath;
|
|
76
|
+
|
|
77
|
+
var filePath123 = "GetLocalization";
|
|
78
|
+
var folderPath = "";
|
|
79
|
+
var platform = Application.platform;
|
|
80
|
+
if (platform == RuntimePlatform.WindowsEditor || platform == RuntimePlatform.WindowsPlayer || platform == RuntimePlatform.WindowsServer)
|
|
81
|
+
{
|
|
82
|
+
folderPath = "win-x64";
|
|
83
|
+
filePath123 += ".exe";
|
|
84
|
+
}
|
|
85
|
+
else if (platform == RuntimePlatform.OSXEditor || platform == RuntimePlatform.OSXPlayer || platform == RuntimePlatform.OSXServer)
|
|
86
|
+
{
|
|
87
|
+
folderPath = "osx-x64";
|
|
88
|
+
}
|
|
89
|
+
else
|
|
90
|
+
{
|
|
91
|
+
folderPath = "linux-x64";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
processPath += "\\" + folderPath + "\\" + filePath123;
|
|
95
|
+
|
|
75
96
|
var credentialsPath = Library + CredentialsPath;
|
|
76
97
|
|
|
77
|
-
var arguments = credentialsPath + " " + worksheetKey + (usingFetchLocalLocalization ? " true " : " false ") + (usingFetchOnlineLocalization ? "true" : "false");
|
|
98
|
+
var arguments = credentialsPath + " " + worksheetKey + (usingFetchLocalLocalization ? " true " : " false ") + (usingFetchOnlineLocalization ? "true " : "false ") + (string.IsNullOrEmpty(localizationSettings.SheetnameFetchLocalLocalization) ? "local" : localizationSettings.SheetnameFetchLocalLocalization) + " " + (string.IsNullOrEmpty(localizationSettings.SheetnameFetchOnlineLocalization) ? "online" : localizationSettings.SheetnameFetchOnlineLocalization);
|
|
78
99
|
|
|
79
100
|
var localizationLanguageItems = localizationSettings.LocalizationLanguageItems;
|
|
80
101
|
|
|
81
102
|
for (var i = 0; i < localizationLanguageItems.Length; i++) arguments += " " + localizationLanguageItems[i].SystemLanguage;
|
|
82
103
|
|
|
83
|
-
|
|
104
|
+
Debug.Log("Run CommandLine " + processPath + " " + arguments);
|
|
105
|
+
|
|
106
|
+
var process = new System.Diagnostics.Process
|
|
107
|
+
{
|
|
108
|
+
StartInfo = new System.Diagnostics.ProcessStartInfo
|
|
109
|
+
{
|
|
110
|
+
FileName = processPath,
|
|
111
|
+
Arguments = arguments,
|
|
112
|
+
RedirectStandardOutput = true,
|
|
113
|
+
RedirectStandardError = true,
|
|
114
|
+
UseShellExecute = false,
|
|
115
|
+
CreateNoWindow = true
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
process.Start();
|
|
120
|
+
var output = process.StandardOutput.ReadToEnd();
|
|
121
|
+
var error = process.StandardError.ReadToEnd();
|
|
84
122
|
process.WaitForExit();
|
|
85
123
|
|
|
124
|
+
if (!string.IsNullOrEmpty(output))
|
|
125
|
+
Debug.Log("CommandLine with output " + output);
|
|
126
|
+
|
|
127
|
+
if (!string.IsNullOrEmpty(error))
|
|
128
|
+
Debug.LogError("Error while running CommandLine " + error);
|
|
129
|
+
|
|
86
130
|
for (var i = 0; i < localizationLanguageItems.Length; i++)
|
|
87
131
|
{
|
|
88
132
|
var localizationLanguageItem = localizationLanguageItems[i];
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
namespace XmobiTea.MiniLocalization.Editor
|
|
2
2
|
{
|
|
3
3
|
using System.IO;
|
|
4
|
-
using NUnit.Framework;
|
|
5
4
|
using UnityEditor;
|
|
6
5
|
|
|
7
6
|
using UnityEngine;
|
|
@@ -14,7 +13,9 @@ namespace XmobiTea.MiniLocalization.Editor
|
|
|
14
13
|
SerializedProperty localizationLanguageItemsProp;
|
|
15
14
|
SerializedProperty worksheetKeyProp;
|
|
16
15
|
SerializedProperty usingFetchLocalLocalizationProp;
|
|
16
|
+
SerializedProperty sheetNameFetchLocalLocalizationProp;
|
|
17
17
|
SerializedProperty usingFetchOnlineLocalizationProp;
|
|
18
|
+
SerializedProperty sheetNameFetchOnlineLocalizationProp;
|
|
18
19
|
|
|
19
20
|
private void OnEnable()
|
|
20
21
|
{
|
|
@@ -23,7 +24,9 @@ namespace XmobiTea.MiniLocalization.Editor
|
|
|
23
24
|
localizationLanguageItemsSize = localizationLanguageItemsProp.arraySize;
|
|
24
25
|
|
|
25
26
|
usingFetchLocalLocalizationProp = serializedObject.FindProperty("usingFetchLocalLocalization");
|
|
27
|
+
sheetNameFetchLocalLocalizationProp = serializedObject.FindProperty("sheetNameFetchLocalLocalization");
|
|
26
28
|
usingFetchOnlineLocalizationProp = serializedObject.FindProperty("usingFetchOnlineLocalization");
|
|
29
|
+
sheetNameFetchOnlineLocalizationProp = serializedObject.FindProperty("sheetNameFetchOnlineLocalization");
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
public override void OnInspectorGUI()
|
|
@@ -47,16 +50,27 @@ namespace XmobiTea.MiniLocalization.Editor
|
|
|
47
50
|
EditorGUILayout.Space(20);
|
|
48
51
|
|
|
49
52
|
EditorGUILayout.PropertyField(usingFetchLocalLocalizationProp);
|
|
50
|
-
if (usingFetchLocalLocalizationProp.boolValue)
|
|
53
|
+
if (usingFetchLocalLocalizationProp.boolValue)
|
|
54
|
+
{
|
|
55
|
+
EditorGUILayout.PropertyField(sheetNameFetchLocalLocalizationProp);
|
|
56
|
+
|
|
57
|
+
if (string.IsNullOrEmpty(sheetNameFetchLocalLocalizationProp.stringValue))
|
|
58
|
+
EditorGUILayout.LabelField("The sheet name in wordsheet must is not null and not contains spacebar characters.");
|
|
59
|
+
}
|
|
51
60
|
|
|
52
61
|
EditorGUILayout.PropertyField(usingFetchOnlineLocalizationProp);
|
|
53
|
-
if (usingFetchOnlineLocalizationProp.boolValue)
|
|
62
|
+
if (usingFetchOnlineLocalizationProp.boolValue)
|
|
63
|
+
{
|
|
64
|
+
EditorGUILayout.PropertyField(sheetNameFetchOnlineLocalizationProp);
|
|
65
|
+
if (string.IsNullOrEmpty(sheetNameFetchOnlineLocalizationProp.stringValue))
|
|
66
|
+
EditorGUILayout.LabelField("The sheet name in wordsheet must is not null and not contains spacebar characters.");
|
|
67
|
+
}
|
|
54
68
|
|
|
55
69
|
if (usingFetchLocalLocalizationProp.boolValue || usingFetchOnlineLocalizationProp.boolValue)
|
|
56
70
|
{
|
|
57
71
|
EditorGUILayout.PropertyField(worksheetKeyProp);
|
|
58
72
|
|
|
59
|
-
EditorGUILayout.LabelField("The column must start at
|
|
73
|
+
EditorGUILayout.LabelField("The column must start at A1: Key " + string.Join(" ", stringArgs));
|
|
60
74
|
}
|
|
61
75
|
|
|
62
76
|
if (serializedObject.hasModifiedProperties) serializedObject.ApplyModifiedProperties();
|
|
@@ -68,10 +82,10 @@ namespace XmobiTea.MiniLocalization.Editor
|
|
|
68
82
|
LocalizationManagerEditor.ShowLocalizationComponentWindowsEditor();
|
|
69
83
|
}
|
|
70
84
|
|
|
71
|
-
if (GUILayout.Button("Show TMP_LocalizationComponentWindows"))
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
}
|
|
85
|
+
//if (GUILayout.Button("Show TMP_LocalizationComponentWindows"))
|
|
86
|
+
//{
|
|
87
|
+
// LocalizationManagerEditor.ShowTMPLocalizationComponentWindowsEditor();
|
|
88
|
+
//}
|
|
75
89
|
|
|
76
90
|
if (GUILayout.Button("Generate LocalizationConstanceId.cs"))
|
|
77
91
|
{
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
namespace XmobiTea.MiniLocalization.Editor
|
|
2
|
+
{
|
|
3
|
+
using System.IO;
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
[CustomEditor(typeof(TMP_LocalizationComponent))]
|
|
9
|
+
public class TMP_LocalizationComponentEditor : Editor
|
|
10
|
+
{
|
|
11
|
+
SerializedProperty keyProp;
|
|
12
|
+
SerializedProperty mainTxtProp;
|
|
13
|
+
|
|
14
|
+
private void OnEnable()
|
|
15
|
+
{
|
|
16
|
+
keyProp = serializedObject.FindProperty("_key");
|
|
17
|
+
mainTxtProp = serializedObject.FindProperty("_mainTxt");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public override void OnInspectorGUI()
|
|
21
|
+
{
|
|
22
|
+
serializedObject.Update();
|
|
23
|
+
|
|
24
|
+
EditorGUILayout.PropertyField(mainTxtProp);
|
|
25
|
+
|
|
26
|
+
EditorGUILayout.PropertyField(keyProp);
|
|
27
|
+
|
|
28
|
+
if (serializedObject.hasModifiedProperties) serializedObject.ApplyModifiedProperties();
|
|
29
|
+
|
|
30
|
+
EditorGUILayout.Space(20);
|
|
31
|
+
|
|
32
|
+
if (GUILayout.Button("Reload Text"))
|
|
33
|
+
{
|
|
34
|
+
var localizationComponentBase = (LocalizationComponentBase)target;
|
|
35
|
+
localizationComponentBase.OnUpdateText();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[MenuItem("XmobiTea Tools/Localization/Open Settings")]
|
|
40
|
+
private static void OpenSettings()
|
|
41
|
+
{
|
|
42
|
+
var localizationSettings = GetSettings();
|
|
43
|
+
|
|
44
|
+
Selection.SetActiveObjectWithContext(localizationSettings, localizationSettings);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static LocalizationSettings GetSettings()
|
|
48
|
+
{
|
|
49
|
+
var localizationSettings = Resources.Load<LocalizationSettings>(LocalizationSettings.ResourcesPath);
|
|
50
|
+
if (localizationSettings == null)
|
|
51
|
+
{
|
|
52
|
+
localizationSettings = ScriptableObject.CreateInstance<LocalizationSettings>();
|
|
53
|
+
|
|
54
|
+
var dirPath = Application.dataPath + "/Resources";
|
|
55
|
+
if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath);
|
|
56
|
+
|
|
57
|
+
var path = "Assets/Resources/" + LocalizationSettings.ResourcesPath + ".asset";
|
|
58
|
+
AssetDatabase.CreateAsset(localizationSettings, path);
|
|
59
|
+
|
|
60
|
+
Debug.Log("[Localization] Localization Settings create success at path " + path);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return localizationSettings;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid:
|
|
3
|
-
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 7ae72a5d49f00b74d9f3bf38d3da3076
|
|
3
|
+
DefaultImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid:
|
|
3
|
-
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 51ee6a61c4b2e81498ff995e7ef42aa8
|
|
3
|
+
DefaultImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid:
|
|
3
|
-
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 9dbff6f03e9e39347b2ffe90bd74c63f
|
|
3
|
+
DefaultImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
|
Binary file
|