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.
Files changed (49) hide show
  1. package/Editor/LocalizationComponentEditor.cs +66 -0
  2. package/Editor/{LocalizationComponentBaseEditor.cs.meta → LocalizationComponentEditor.cs.meta} +11 -11
  3. package/Editor/LocalizationComponentWindowsEditor.cs +49 -5
  4. package/Editor/LocalizationKeyDrawer.cs +121 -0
  5. package/Editor/{TMP_LocalizationComponentWindowsEditor.cs.meta → LocalizationKeyDrawer.cs.meta} +11 -11
  6. package/Editor/LocalizationManagerEditor.cs +57 -13
  7. package/Editor/LocalizationSettingsEditor.cs +22 -8
  8. package/Editor/TMP_LocalizationComponentEditor.cs +66 -0
  9. package/Editor/TMP_LocalizationComponentEditor.cs.meta +11 -0
  10. package/Editor/Tools/GetLocalizationTools/linux-x64/GetLocalization +0 -0
  11. package/Editor/Tools/GetLocalizationTools/{GetLocalization.deps.json.meta → linux-x64/GetLocalization.meta} +7 -7
  12. package/Editor/Tools/GetLocalizationTools/linux-x64/GetLocalization.pdb +0 -0
  13. package/Editor/Tools/GetLocalizationTools/{GetLocalization.runtimeconfig.dev.json.meta → linux-x64/GetLocalization.pdb.meta} +7 -7
  14. package/Editor/Tools/GetLocalizationTools/linux-x64.meta +8 -0
  15. package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization +0 -0
  16. package/Editor/Tools/GetLocalizationTools/{GetLocalization.runtimeconfig.json.meta → osx-x64/GetLocalization.meta} +7 -7
  17. package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization.pdb +0 -0
  18. package/Editor/Tools/GetLocalizationTools/osx-x64/GetLocalization.pdb.meta +7 -0
  19. package/Editor/Tools/GetLocalizationTools/osx-x64.meta +8 -0
  20. package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.exe +0 -0
  21. package/Editor/Tools/GetLocalizationTools/{GetLocalization.exe.meta → win-x64/GetLocalization.exe.meta} +7 -7
  22. package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.pdb +0 -0
  23. package/Editor/Tools/GetLocalizationTools/win-x64/GetLocalization.pdb.meta +7 -0
  24. package/Editor/Tools/GetLocalizationTools/win-x64.meta +8 -0
  25. package/Runtime/LocalizationComponent.cs +3 -0
  26. package/Runtime/LocalizationConstanceId.cs +5 -0
  27. package/Runtime/LocalizationConstanceId.cs.meta +11 -0
  28. package/Runtime/LocalizationSettings.cs +9 -0
  29. package/package.json +1 -1
  30. package/Editor/LocalizationComponentBaseEditor.cs +0 -20
  31. package/Editor/TMP_LocalizationComponentWindowsEditor.cs +0 -133
  32. package/Editor/Tools/GetLocalizationTools/GetLocalization.deps.json +0 -119
  33. package/Editor/Tools/GetLocalizationTools/GetLocalization.dll +0 -0
  34. package/Editor/Tools/GetLocalizationTools/GetLocalization.dll.meta +0 -92
  35. package/Editor/Tools/GetLocalizationTools/GetLocalization.exe +0 -0
  36. package/Editor/Tools/GetLocalizationTools/GetLocalization.runtimeconfig.dev.json +0 -8
  37. package/Editor/Tools/GetLocalizationTools/GetLocalization.runtimeconfig.json +0 -9
  38. package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.PlatformServices.dll +0 -0
  39. package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.PlatformServices.dll.meta +0 -47
  40. package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.dll +0 -0
  41. package/Editor/Tools/GetLocalizationTools/Google.Apis.Auth.dll.meta +0 -47
  42. package/Editor/Tools/GetLocalizationTools/Google.Apis.Core.dll +0 -0
  43. package/Editor/Tools/GetLocalizationTools/Google.Apis.Core.dll.meta +0 -47
  44. package/Editor/Tools/GetLocalizationTools/Google.Apis.Sheets.v4.dll +0 -0
  45. package/Editor/Tools/GetLocalizationTools/Google.Apis.Sheets.v4.dll.meta +0 -47
  46. package/Editor/Tools/GetLocalizationTools/Google.Apis.dll +0 -0
  47. package/Editor/Tools/GetLocalizationTools/Google.Apis.dll.meta +0 -47
  48. package/Editor/Tools/GetLocalizationTools/Newtonsoft.Json.dll +0 -0
  49. 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
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: b28d11cb849fa424ca5aa367fb4dcf8a
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 Text[] textsInScene;
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
- textsInScene = parentGO.GetComponentsInChildren<Text>(true);
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 Text[0];
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<LocalizationComponent>();
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
- localizationComponent = text.gameObject.AddComponent<LocalizationComponent>();
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
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: b743c0e864bf0fb46a522d666e04073a
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.3.9";
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 ProcessPath = @"\Editor\Tools\GetLocalizationTools\GetLocalization.exe";
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
- ShowTMPLocalizationComponentWindowsEditor();
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
- TMP_LocalizationComponentWindowsEditor.ShowWindow();
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
- var process = System.Diagnostics.Process.Start(processPath, arguments);
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) EditorGUILayout.LabelField("The tab in wordsheet must is XmobiTea-Local-Localization");
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) EditorGUILayout.LabelField("The tab in wordsheet must is XmobiTea-Online-Localization");
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 C1: Key " + string.Join(" ", stringArgs));
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
- LocalizationManagerEditor.ShowTMPLocalizationComponentWindowsEditor();
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
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 34247ecb70b2da345b44ab74e5586a22
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: c80da9eea19ed984d9081387fde72adf
3
- TextScriptImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 7ae72a5d49f00b74d9f3bf38d3da3076
3
+ DefaultImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: fdc39b4ddef12dc45afc7dad0e6b5539
3
- TextScriptImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 51ee6a61c4b2e81498ff995e7ef42aa8
3
+ DefaultImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 7d06c03dd392877489ecb75f3130eba4
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: 2fb9e2d36e2b5174fa9925bfdfbeab26
3
- TextScriptImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 9dbff6f03e9e39347b2ffe90bd74c63f
3
+ DefaultImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 2ab4b2d5d7d41094ba11dd2559be72b5
3
+ DefaultImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant: