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