Compare commits
2 Commits
ebfc5677cd
...
da2edd5504
Author | SHA1 | Date | |
---|---|---|---|
![]() |
da2edd5504 | ||
![]() |
8ee7d89b0c |
@ -1,25 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 3888c1c1b587a654a919e0f68b03567e, type: 3}
|
|
||||||
m_Name: Google Sheets Service
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_ApiKey:
|
|
||||||
m_ClientId:
|
|
||||||
m_ClientSecret:
|
|
||||||
m_AuthenticationType: 2
|
|
||||||
m_ApplicationName: ProjectDDD
|
|
||||||
m_NewSheetProperties:
|
|
||||||
m_HeaderForegroundColor: {r: 0.8941177, g: 0.8941177, b: 0.8941177, a: 1}
|
|
||||||
m_HeaderBackgroundColor: {r: 0.2196079, g: 0.2196079, b: 0.2196079, a: 1}
|
|
||||||
m_DuplicateKeyColor: {r: 0.8745098, g: 0.2240707, b: 0.1921569, a: 1}
|
|
||||||
m_HighlightDuplicateKeys: 1
|
|
||||||
m_FreezeTitleRowAndKeyColumn: 1
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8a1c16f69c73e2745a19e71a1ebbc308
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -22,6 +22,14 @@ MonoBehaviour:
|
|||||||
m_Localized: Test
|
m_Localized: Test
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
|
- m_Id: 359826040094720
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 359826048483328
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -22,6 +22,14 @@ MonoBehaviour:
|
|||||||
m_Localized: ???
|
m_Localized: ???
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
|
- m_Id: 359826040094720
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 359826048483328
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -22,6 +22,14 @@ MonoBehaviour:
|
|||||||
m_Localized: "\uD14C\uC2A4\uD2B8"
|
m_Localized: "\uD14C\uC2A4\uD2B8"
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
|
- m_Id: 359826040094720
|
||||||
|
m_Localized: 436
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 359826048483328
|
||||||
|
m_Localized: 343
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -14,7 +14,27 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_TableCollectionName: Item_Name
|
m_TableCollectionName: Item_Name
|
||||||
m_TableCollectionNameGuidString: a1547fb82effcb847a7246892ab65b3b
|
m_TableCollectionNameGuidString: a1547fb82effcb847a7246892ab65b3b
|
||||||
m_Entries: []
|
m_Entries:
|
||||||
|
- m_Id: 362496616366080
|
||||||
|
m_Key: Item_Test001
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362572734595072
|
||||||
|
m_Key: New Entry
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469248
|
||||||
|
m_Key: Item_Test002
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469249
|
||||||
|
m_Key: Item_Test003
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876800663552
|
||||||
|
m_Key: Item_Test004
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
m_KeyGenerator:
|
m_KeyGenerator:
|
||||||
|
@ -17,7 +17,23 @@ MonoBehaviour:
|
|||||||
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
m_TableData: []
|
m_TableData:
|
||||||
|
- m_Id: 362496616366080
|
||||||
|
m_Localized: One
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469248
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469249
|
||||||
|
m_Localized: 435
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876800663552
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -17,7 +17,23 @@ MonoBehaviour:
|
|||||||
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
m_TableData: []
|
m_TableData:
|
||||||
|
- m_Id: 362496616366080
|
||||||
|
m_Localized: itch
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469248
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469249
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876800663552
|
||||||
|
m_Localized: 63
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -17,7 +17,23 @@ MonoBehaviour:
|
|||||||
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
m_SharedData: {fileID: 11400000, guid: a1547fb82effcb847a7246892ab65b3b, type: 2}
|
||||||
m_Metadata:
|
m_Metadata:
|
||||||
m_Items: []
|
m_Items: []
|
||||||
m_TableData: []
|
m_TableData:
|
||||||
|
- m_Id: 362496616366080
|
||||||
|
m_Localized: "\uC77C\uBC88"
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469248
|
||||||
|
m_Localized: "2\uBC88"
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876796469249
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
|
- m_Id: 362876800663552
|
||||||
|
m_Localized:
|
||||||
|
m_Metadata:
|
||||||
|
m_Items: []
|
||||||
references:
|
references:
|
||||||
version: 2
|
version: 2
|
||||||
RefIds: []
|
RefIds: []
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class SheetTableData
|
||||||
|
{
|
||||||
|
public string Key;
|
||||||
|
public Dictionary<string, string> LocaleValues = new(); // ex: "en" → "Potion"
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class SheetUploadPayload
|
||||||
|
{
|
||||||
|
public Dictionary<string, List<SheetTableData>> Tables = new(); // TableName → Entries
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class SheetDownloadPayload
|
||||||
|
{
|
||||||
|
public Dictionary<string, List<Dictionary<string, string>>> Tables = new(); // TableName → Rows (Key, en, ko, ja ...)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6ba28c67204e4fdbbfbabb96c8c71d00
|
||||||
|
timeCreated: 1752744774
|
@ -0,0 +1,48 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class GoogleSheetWebClient
|
||||||
|
{
|
||||||
|
public static async Task<string> Get(string url)
|
||||||
|
{
|
||||||
|
var req = UnityWebRequest.Get(url);
|
||||||
|
var op = req.SendWebRequest();
|
||||||
|
|
||||||
|
while (!op.isDone)
|
||||||
|
await Task.Yield();
|
||||||
|
|
||||||
|
if (req.result != UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
Debug.LogError("GET Failed: " + req.error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return req.downloadHandler.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<string> Post(string url, string json)
|
||||||
|
{
|
||||||
|
var req = new UnityWebRequest(url, "POST");
|
||||||
|
byte[] bodyRaw = Encoding.UTF8.GetBytes(json);
|
||||||
|
req.uploadHandler = new UploadHandlerRaw(bodyRaw);
|
||||||
|
req.downloadHandler = new DownloadHandlerBuffer();
|
||||||
|
req.SetRequestHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
var op = req.SendWebRequest();
|
||||||
|
while (!op.isDone)
|
||||||
|
await Task.Yield();
|
||||||
|
|
||||||
|
if (req.result != UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
Debug.LogError("POST Failed: " + req.error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return req.downloadHandler.text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 96b36a0cc10b43feb168d8fccabde4f3
|
||||||
|
timeCreated: 1752744790
|
@ -0,0 +1,66 @@
|
|||||||
|
#if UNITY_EDITOR
|
||||||
|
using UnityEngine;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using UnityEditor.Localization;
|
||||||
|
using UnityEngine.Localization.Settings;
|
||||||
|
using UnityEngine.Localization.Tables;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class LocalizationExporter
|
||||||
|
{
|
||||||
|
public static async void ExportAllToSheet(string webAppUrl)
|
||||||
|
{
|
||||||
|
var collections = LocalizationEditorSettings.GetStringTableCollections();
|
||||||
|
var exportPayload = new SheetUploadPayload();
|
||||||
|
|
||||||
|
List<string> localeOrder = GetOrderedLocaleCodes();
|
||||||
|
|
||||||
|
foreach (var collection in collections)
|
||||||
|
{
|
||||||
|
string tableName = collection.TableCollectionName;
|
||||||
|
var shared = collection.SharedData;
|
||||||
|
var entries = new List<SheetTableData>();
|
||||||
|
|
||||||
|
foreach (var sharedEntry in shared.Entries)
|
||||||
|
{
|
||||||
|
var row = new SheetTableData { Key = sharedEntry.Key };
|
||||||
|
foreach (var localeCode in localeOrder)
|
||||||
|
{
|
||||||
|
var table = collection.GetTable(localeCode) as StringTable;
|
||||||
|
if (table != null)
|
||||||
|
{
|
||||||
|
string value = table.GetEntry(sharedEntry.Id)?.Value ?? "";
|
||||||
|
row.LocaleValues[localeCode] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entries.Add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
exportPayload.Tables[tableName] = entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
string json = JsonConvert.SerializeObject(exportPayload);
|
||||||
|
Debug.Log($"Localization Exporting...");
|
||||||
|
|
||||||
|
var response = await GoogleSheetWebClient.Post(webAppUrl, json);
|
||||||
|
Debug.Log($"<color=green>[Localization Export 완료]</color> 응답: {response}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Localization Settings에 등록된 Locale 순서대로 Locale 코드 리스트 반환
|
||||||
|
/// </summary>
|
||||||
|
public static List<string> GetOrderedLocaleCodes()
|
||||||
|
{
|
||||||
|
var locales = LocalizationSettings.AvailableLocales.Locales;
|
||||||
|
var result = new List<string>();
|
||||||
|
foreach (var locale in locales)
|
||||||
|
{
|
||||||
|
result.Add(locale.Identifier.Code); // 예: "ko", "en", "ja"
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b05234504d7d482b9c38fd9cfc816df6
|
||||||
|
timeCreated: 1752744753
|
@ -0,0 +1,56 @@
|
|||||||
|
#if UNITY_EDITOR
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine.Localization.Tables;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using UnityEditor.Localization;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class LocalizationImporter
|
||||||
|
{
|
||||||
|
public static async void ImportAllFromSheet(string webAppUrl)
|
||||||
|
{
|
||||||
|
string json = await GoogleSheetWebClient.Get(webAppUrl);
|
||||||
|
if (string.IsNullOrEmpty(json)) return;
|
||||||
|
|
||||||
|
var payload = JsonConvert.DeserializeObject<SheetDownloadPayload>(json);
|
||||||
|
foreach (var kv in payload.Tables)
|
||||||
|
{
|
||||||
|
string tableName = kv.Key;
|
||||||
|
List<Dictionary<string, string>> rows = kv.Value;
|
||||||
|
|
||||||
|
var collection = LocalizationEditorSettings.GetStringTableCollection(tableName);
|
||||||
|
if (collection == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"[Localization] Table not found: {tableName}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shared = collection.SharedData;
|
||||||
|
|
||||||
|
foreach (var row in rows)
|
||||||
|
{
|
||||||
|
if (!row.TryGetValue("Key", out var key)) continue;
|
||||||
|
var sharedEntry = shared.GetEntry(key) ?? shared.AddKey(key);
|
||||||
|
|
||||||
|
foreach (var localeCode in row.Keys)
|
||||||
|
{
|
||||||
|
if (localeCode == "Key") continue;
|
||||||
|
var table = collection.GetTable(localeCode) as StringTable;
|
||||||
|
if (table == null) continue;
|
||||||
|
|
||||||
|
table.AddEntry(sharedEntry.Id, row[localeCode]);
|
||||||
|
EditorUtility.SetDirty(table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("<color=green>[Localization Import]</color> 완료");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bae5f92d4e8a4f4da04d7c89dcc49a87
|
||||||
|
timeCreated: 1752744725
|
@ -1,31 +1,56 @@
|
|||||||
#if UNITY_EDITOR
|
using UnityEngine.Localization.Settings;
|
||||||
using UnityEditor;
|
using System.Linq;
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace DDD
|
namespace DDD
|
||||||
{
|
{
|
||||||
public class LocalizationManager : MonoBehaviour
|
public enum TableName
|
||||||
{
|
{
|
||||||
[SerializeField]
|
None = 0,
|
||||||
private string _webUrl = "https://script.google.com/macros/s/AKfycbx6ZrQNJIot1A_uwjilgOxHEm7zPommHyi7nH-x1d8sNgMEUeoqHf8iwvEnA1AxKBU6/exec";
|
Item_Name,
|
||||||
|
Item_Description,
|
||||||
// [MenuItem("Tools/Localization/Import All From Sheet")]
|
|
||||||
// public static void ImportAll()
|
|
||||||
// {
|
|
||||||
// var url = GetManager()?.WebUrl;
|
|
||||||
// if (string.IsNullOrEmpty(url)) return;
|
|
||||||
//
|
|
||||||
// LocalizationImporter.ImportAll(url);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// [MenuItem("Tools/Localization/Export All To Sheet")]
|
|
||||||
// public static void ExportAll()
|
|
||||||
// {
|
|
||||||
// var url = GetManager()?.WebUrl;
|
|
||||||
// if (string.IsNullOrEmpty(url)) return;
|
|
||||||
//
|
|
||||||
// LocalizationExporter.ExportAll(url);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
public static class LocalizationManager
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 현재 선택된 로케일 기준으로 로컬라이징 텍스트를 가져옵니다.
|
||||||
|
/// </summary>
|
||||||
|
public static string GetString(TableName table, string key)
|
||||||
|
{
|
||||||
|
if (table == TableName.None || string.IsNullOrEmpty(key))
|
||||||
|
return $"[Invalid:{table}/{key}]";
|
||||||
|
|
||||||
|
var locale = LocalizationSettings.SelectedLocale;
|
||||||
|
var tableName = table.ToString();
|
||||||
|
|
||||||
|
var stringTable = LocalizationSettings.StringDatabase.GetTable(tableName, locale);
|
||||||
|
if (stringTable == null)
|
||||||
|
return $"[Missing Table:{tableName}]";
|
||||||
|
|
||||||
|
var entry = stringTable.GetEntry(key);
|
||||||
|
if (entry == null)
|
||||||
|
return $"[Missing Key:{key}]";
|
||||||
|
|
||||||
|
return entry.GetLocalizedString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 현재 사용 중인 로케일 코드 반환 (예: "ko", "en", "ja")
|
||||||
|
/// </summary>
|
||||||
|
public static string GetCurrentLocaleCode()
|
||||||
|
{
|
||||||
|
return LocalizationSettings.SelectedLocale.Identifier.Code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 로케일 코드로 현재 언어를 설정합니다. (예: "ko", "en", "ja")
|
||||||
|
/// </summary>
|
||||||
|
public static void SetLocale(string code)
|
||||||
|
{
|
||||||
|
var locale = LocalizationSettings.AvailableLocales.Locales
|
||||||
|
.FirstOrDefault(l => l.Identifier.Code == code);
|
||||||
|
if (locale != null)
|
||||||
|
LocalizationSettings.SelectedLocale = locale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,2 +1,3 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 69393d2561741b345802e4b85624d850
|
guid: 5afd6884905a4646b9c4137e9300b255
|
||||||
|
timeCreated: 1752746540
|
@ -0,0 +1,23 @@
|
|||||||
|
#if UNITY_EDITOR
|
||||||
|
using UnityEditor;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class LocalizationSyncTool
|
||||||
|
{
|
||||||
|
public static readonly string WebAppUrl = "https://script.google.com/macros/s/AKfycbwVQ7_x0Didf_13h3qPB9lSMobBR9xr6nLffj_n8znNvfs-pdNylNA7nWzd2R-_IHGf/exec";
|
||||||
|
|
||||||
|
[MenuItem("Tools/Localization/Google Sheet → Unity")]
|
||||||
|
public static void ImportAll()
|
||||||
|
{
|
||||||
|
LocalizationImporter.ImportAllFromSheet(WebAppUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Tools/Localization/Unity → Google Sheet")]
|
||||||
|
public static void ExportAll()
|
||||||
|
{
|
||||||
|
LocalizationExporter.ExportAllToSheet(WebAppUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 69393d2561741b345802e4b85624d850
|
Loading…
Reference in New Issue
Block a user