feat: add option to use embedded loc resources

This commit is contained in:
kalilistic 2021-04-12 10:49:15 -04:00
parent b6af8260be
commit 8b736e5e7f

View file

@ -23,6 +23,7 @@ namespace Dalamud
private readonly string locResourceDirectory; private readonly string locResourceDirectory;
private readonly string locResourcePrefix; private readonly string locResourcePrefix;
private readonly bool useEmbedded;
private readonly Assembly assembly; private readonly Assembly assembly;
/// <summary> /// <summary>
@ -30,10 +31,12 @@ namespace Dalamud
/// </summary> /// </summary>
/// <param name="locResourceDirectory">The working directory to load language files from.</param> /// <param name="locResourceDirectory">The working directory to load language files from.</param>
/// <param name="locResourcePrefix">The prefix on the loc resource file name (e.g. dalamud_).</param> /// <param name="locResourcePrefix">The prefix on the loc resource file name (e.g. dalamud_).</param>
public Localization(string locResourceDirectory, string locResourcePrefix = "") /// <param name="useEmbedded">Use embedded loc resource files.</param>
public Localization(string locResourceDirectory, string locResourcePrefix = "", bool useEmbedded = false)
{ {
this.locResourceDirectory = locResourceDirectory; this.locResourceDirectory = locResourceDirectory;
this.locResourcePrefix = locResourcePrefix; this.locResourcePrefix = locResourcePrefix;
this.useEmbedded = useEmbedded;
this.assembly = Assembly.GetCallingAssembly(); this.assembly = Assembly.GetCallingAssembly();
} }
@ -130,9 +133,16 @@ namespace Dalamud
private string ReadLocData(string langCode) private string ReadLocData(string langCode)
{ {
return File.ReadAllText(Path.Combine( if (this.useEmbedded)
this.locResourceDirectory, {
$"{this.locResourcePrefix}{langCode}.json")); var resourceStream =
this.assembly.GetManifestResourceStream($"{this.locResourceDirectory}{this.locResourcePrefix}{langCode}.json");
if (resourceStream == null) return null;
using var reader = new StreamReader(resourceStream);
return reader.ReadToEnd();
}
return File.ReadAllText(Path.Combine(this.locResourceDirectory, $"{this.locResourcePrefix}{langCode}.json"));
} }
} }
} }