Merge pull request #309 from kalilistic/embedded-loc

This commit is contained in:
goaaats 2021-04-14 21:13:55 +02:00 committed by GitHub
commit 0437783b4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

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"));
} }
} }
} }