2025-05-01 01:48:08 -07:00

101 lines
4.0 KiB
C#

using UnityEditor.Localization.Reporting;
using UnityEngine;
using UnityEngine.Localization.Tables;
using UnityEngine.UIElements;
namespace UnityEditor.Localization.Plugins.XLIFF
{
static class MenuItems
{
const string k_PrefXliffDirectory = "Localization-xliff-import-directory";
const string k_PrefXliffFile = "Localization-xliff-import-file";
[LocalizationImportMenu]
public static void PopulateImportMenu(LocalizationTableCollection collection, DropdownMenu menu)
{
if (collection is StringTableCollection)
{
menu.AppendAction(L10n.Tr("XLIFF into collection"), _ => ImportIntoCollection(new MenuCommand(collection)));
menu.AppendAction(L10n.Tr("XLIFF file"), _ => ImportXliffFile());
menu.AppendAction(L10n.Tr("XLIFF directory"), _ => ImportXliffDirectory());
}
}
[LocalizationExportMenu]
public static void PopulateExportMenu(LocalizationTableCollection collection, DropdownMenu menu)
{
if (collection is StringTableCollection)
{
menu.AppendAction(L10n.Tr("XLIFF..."), _ => ExportCollection(new MenuCommand(collection)));
}
}
[MenuItem("CONTEXT/StringTableCollection/Export/XLIFF...")]
public static void ExportCollection(MenuCommand command)
{
var collection = command.context as StringTableCollection;
Debug.Assert(collection != null, "Expected StringTableCollection");
var wnd = ExporterWindow.ShowWindow();
wnd.SelectedTables.SetSelection(collection);
}
[MenuItem("CONTEXT/StringTable/Export/XLIFF...")]
static void ExportStringTable(MenuCommand command)
{
var table = command.context as StringTable;
Debug.Assert(table != null, "Expected StringTable");
var wnd = ExporterWindow.ShowWindow();
wnd.SelectedTables.SetSelection(table);
}
[MenuItem("CONTEXT/StringTableCollection/Import/XLIFF...")]
public static void ImportIntoCollection(MenuCommand command)
{
var collection = command.context as StringTableCollection;
Debug.Assert(collection != null, "Expected StringTableCollection");
var file = EditorUtility.OpenFilePanel("Import XLIFF", EditorPrefs.GetString(k_PrefXliffFile, ""), "xlf");
if (string.IsNullOrEmpty(file))
return;
EditorPrefs.SetString(k_PrefXliffFile, file);
Xliff.ImportFileIntoCollection(collection, file, null, TaskReporter.CreateDefaultReporter());
}
[MenuItem("CONTEXT/StringTable/Import/XLIFF...")]
static void ImportIntoTable(MenuCommand command)
{
var table = command.context as StringTable;
Debug.Assert(table != null, "Expected StringTable");
var file = EditorUtility.OpenFilePanel("Import XLIFF", EditorPrefs.GetString(k_PrefXliffFile, ""), "xlf");
if (string.IsNullOrEmpty(file))
return;
EditorPrefs.SetString(k_PrefXliffFile, file);
Xliff.ImportFileIntoTable(file, table, Xliff.ImportNotesBehavior.Replace, TaskReporter.CreateDefaultReporter());
}
public static void ImportXliffDirectory()
{
var dir = EditorUtility.OpenFolderPanel("Import XLIFF from directory", EditorPrefs.GetString(k_PrefXliffDirectory, ""), "");
if (string.IsNullOrEmpty(dir))
return;
EditorPrefs.SetString(k_PrefXliffDirectory, dir);
Xliff.ImportDirectory(dir, null, TaskReporter.CreateDefaultReporter());
}
public static void ImportXliffFile()
{
var file = EditorUtility.OpenFilePanel("Import XLIFF", "", "xlf");
if (string.IsNullOrEmpty(file))
return;
Xliff.ImportFile(file, null, TaskReporter.CreateDefaultReporter());
}
}
}