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

86 lines
2.6 KiB
C#

using System.IO;
using UnityEditor.Localization;
using UnityEditor.Localization.Plugins.XLIFF;
using UnityEngine.Localization;
using UnityEngine.Localization.Tables;
public static class XliffSamples
{
public static void WriteXliff()
{
#region create-xliff
var document = XliffDocument.Create(XliffVersion.V20);
// The lnaguage to translate from.
document.SourceLanguage = "en";
// The language to translate into.
document.TargetLanguage = "fr";
var file = document.AddNewFile();
file.Id = "file id";
var group = file.AddNewGroup();
var start = group.AddNewTranslationUnit();
start.Id = "12345";
start.Name = "START";
start.Source = "Start Game";
var quit = group.AddNewTranslationUnit();
quit.Id = "12346";
quit.Name = "QUIT";
quit.Source = "Quit Game";
using (var stream = new FileStream("Exported XLIFF.xliff", FileMode.Create, FileAccess.Write))
{
document.Serialize(stream);
}
#endregion
}
#region load-xliff
public static void LoadXliffFile(string file)
{
var document = XliffDocument.Parse(new FileStream(file, FileMode.Open, FileAccess.Read));
if (document.Version == "1.2")
{
var v12 = document as UnityEditor.Localization.Plugins.XLIFF.V12.xliff;
// Unity now has access to a 1.2 XLIFF document and can use 1.2 features.
// The V12 namespace contains all the 1.2-specific nodes.
}
else
{
var v20 = document as UnityEditor.Localization.Plugins.XLIFF.V20.xliff;
// Unity now has access to a 2.0 XLIFF document and can use 2.0 features.
// The V20 namespace contains all the 2.0-specific nodes.
}
}
#endregion
#region export-xliff
public static void ExportTable(StringTable source, StringTable target, string dir)
{
Xliff.Export(source, dir, XliffVersion.V20, new[] { target });
}
public static void ExportCollection(StringTableCollection collection, LocaleIdentifier sourceLanguage, string dir)
{
Xliff.Export(sourceLanguage, dir, "My XLIFF Export", XliffVersion.V12, new[] { collection });
}
public static void ImportIntoStringTable(StringTable table, string file)
{
Xliff.ImportFileIntoTable(file, table);
}
public static void ImportIntoCollection(StringTableCollection collection, string file)
{
Xliff.ImportFileIntoCollection(collection, file);
}
#endregion
}