Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion BepisLocaleLoader.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>1.0.0</Version>
<Version>1.0.1</Version>
<Authors>ResoniteModding</Authors>
<TargetFramework>net9.0</TargetFramework>
<PackageProjectUrl>https://github.com/ResoniteModding/BepisLocaleLoader</PackageProjectUrl>
Expand Down Expand Up @@ -33,6 +33,7 @@
<PackageReference Include="BepInEx.NET.CoreCLR" Version="6.0.0-be.*" IncludeAssets="compile"/>
<PackageReference Include="BepInEx.ResonitePluginInfoProps" Version="3.*"/>
<PackageReference Include="ResoniteModding.BepInExResoniteShim" Version="0.8.*"/>
<PackageReference Include="ResoniteModding.BepisResoniteWrapper" Version="1.*" />
</ItemGroup>

<!-- NuGet fallback stripped game references -->
Expand Down
22 changes: 22 additions & 0 deletions ConfigLocale.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Elements.Core;

namespace BepisLocaleLoader;

// We could maybe add more things to this later if needed
public struct ConfigLocale
{
public ConfigLocale(string name, string description)
{
Name = name.AsLocaleKey();
Description = description.AsLocaleKey();
}

public ConfigLocale(LocaleString name, LocaleString description)
{
Name = name;
Description = description;
}

public LocaleString Name;
public LocaleString Description;
}
31 changes: 30 additions & 1 deletion LocaleLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public static void AddLocaleFromFile(string path)
return;
}

Plugin.Log.LogDebug($"- {localeData.LocaleCode} - c-{localeData.Messages.Count}");
Plugin.Log.LogDebug($"- LocaleCode: {localeData.LocaleCode}, Message Count: {localeData.Messages.Count}");

Update(localeData, true);
}
Expand Down Expand Up @@ -164,6 +164,35 @@ private static void ProcessDirectory(string directory, Action<string> fileAction
}
}

private static string GetFormattedLocaleString(this string key, string format, Dictionary<string, object> dict, (string, object)[] arguments)
{
Dictionary<string, object> merged = dict != null ? new Dictionary<string, object>(dict) : new Dictionary<string, object>();

if (arguments != null)
{
foreach ((string name, object value) in arguments)
{
merged[name] = value;
}
}

string formatted = _localeProvider?.Asset?.Format(key, merged);

if (!string.IsNullOrWhiteSpace(format))
{
formatted = string.Format(format, formatted);
}

return formatted;
}

public static string GetFormattedLocaleString(this string key) => key.GetFormattedLocaleString(null, null, null);
public static string GetFormattedLocaleString(this string key, string format) => key.GetFormattedLocaleString(format, null, null);
public static string GetFormattedLocaleString(this string key, string argName, object argField) => key.GetFormattedLocaleString(null, null, new (string, object)[] { (argName, argField) });
public static string GetFormattedLocaleString(this string key, string format, string argName, object argField) => key.GetFormattedLocaleString(format, null, new (string, object)[] { (argName, argField) });
public static string GetFormattedLocaleString(this string key, params (string, object)[] arguments) => key.GetFormattedLocaleString(null, null, arguments);
public static string GetFormattedLocaleString(this string key, string format, params (string, object)[] arguments) => key.GetFormattedLocaleString(format, null, arguments);

public static LocaleString T(this string str, string argName, object argField) => str.AsLocaleKey(null, (argName, argField));
public static LocaleString T(this string str, string format, string argName, object argField) => str.AsLocaleKey(format, (argName, argField));
public static LocaleString T(this string str, params (string, object)[] arguments) => str.AsLocaleKey(null, arguments);
Expand Down
11 changes: 3 additions & 8 deletions Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using BepInEx.Logging;
using BepInEx.NET.Common;
using BepInExResoniteShim;
using BepisResoniteWrapper;
using FrooxEngine;
using HarmonyLib;

Expand All @@ -18,20 +19,14 @@ public override void Load()
// Plugin startup logic
Log = base.Log;

// TODO: Switch this to a event subscription when BepInExResoniteShim is updated
Task.Run(async () =>
ResoniteHooks.OnEngineReady += async () =>
{
while (Engine.Current == null || Userspace.UserspaceWorld == null)
{
await Task.Delay(10);
}

await Task.Delay(5000);

if (NetChainloader.Instance.Plugins.Count <= 0) return;

NetChainloader.Instance.Plugins.Values.Do(LocaleLoader.AddLocaleFromPlugin);
});
};

Log.LogInfo($"Plugin {PluginMetadata.GUID} is loaded!");
}
Expand Down
Loading