From 8b736e5e7f6d241844412b3764567815fdd0ae43 Mon Sep 17 00:00:00 2001 From: kalilistic <35899782+kalilistic@users.noreply.github.com> Date: Mon, 12 Apr 2021 10:49:15 -0400 Subject: [PATCH] feat: add option to use embedded loc resources --- Dalamud/Localization.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Dalamud/Localization.cs b/Dalamud/Localization.cs index fe13c6bff..f1d2c3b0f 100644 --- a/Dalamud/Localization.cs +++ b/Dalamud/Localization.cs @@ -23,6 +23,7 @@ namespace Dalamud private readonly string locResourceDirectory; private readonly string locResourcePrefix; + private readonly bool useEmbedded; private readonly Assembly assembly; /// @@ -30,10 +31,12 @@ namespace Dalamud /// /// The working directory to load language files from. /// The prefix on the loc resource file name (e.g. dalamud_). - public Localization(string locResourceDirectory, string locResourcePrefix = "") + /// Use embedded loc resource files. + public Localization(string locResourceDirectory, string locResourcePrefix = "", bool useEmbedded = false) { this.locResourceDirectory = locResourceDirectory; this.locResourcePrefix = locResourcePrefix; + this.useEmbedded = useEmbedded; this.assembly = Assembly.GetCallingAssembly(); } @@ -130,9 +133,16 @@ namespace Dalamud private string ReadLocData(string langCode) { - return File.ReadAllText(Path.Combine( - this.locResourceDirectory, - $"{this.locResourcePrefix}{langCode}.json")); + if (this.useEmbedded) + { + 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")); } } }