Localize server location notifications

This commit is contained in:
pizzaboxer 2024-06-14 21:27:50 +01:00
parent 3fc1ff443f
commit 13f2690084
No known key found for this signature in database
GPG Key ID: 59D4A1DBAD0F2BA8
5 changed files with 48 additions and 10 deletions

View File

@ -0,0 +1,13 @@
namespace Bloxstrap.Extensions
{
static class ServerTypeEx
{
public static string ToTranslatedString(this ServerType value) => value switch
{
ServerType.Public => Resources.Strings.Enums_ServerType_Public,
ServerType.Private => Resources.Strings.Enums_ServerType_Private,
ServerType.Reserved => Resources.Strings.Enums_ServerType_Reserved,
_ => "?"
};
}
}

View File

@ -294,17 +294,17 @@
var ipInfo = await Http.GetJson<IPInfoResponse>($"https://ipinfo.io/{ActivityMachineAddress}/json");
if (ipInfo is null)
return $"N/A ({Resources.Strings.ActivityTracker_LookupFailed})";
return $"? ({Resources.Strings.ActivityTracker_LookupFailed})";
if (string.IsNullOrEmpty(ipInfo.Country))
location = "N/A";
location = "?";
else if (ipInfo.City == ipInfo.Region)
location = $"{ipInfo.Region}, {ipInfo.Country}";
else
location = $"{ipInfo.City}, {ipInfo.Region}, {ipInfo.Country}";
if (!ActivityInGame)
return $"N/A ({Resources.Strings.ActivityTracker_LeftGame})";
return $"? ({Resources.Strings.ActivityTracker_LeftGame})";
GeolocationCache[ActivityMachineAddress] = location;
@ -315,7 +315,7 @@
App.Logger.WriteLine(LOG_IDENT, $"Failed to get server location for {ActivityMachineAddress}");
App.Logger.WriteException(LOG_IDENT, ex);
return $"N/A ({Resources.Strings.ActivityTracker_LookupFailed})";
return $"? ({Resources.Strings.ActivityTracker_LookupFailed})";
}
}

View File

@ -548,6 +548,25 @@ namespace Bloxstrap.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Located at {0}
///Click for more information.
/// </summary>
public static string ContextMenu_ServerInformation_Notification_Text {
get {
return ResourceManager.GetString("ContextMenu.ServerInformation.Notification.Text", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Connected to {0} server.
/// </summary>
public static string ContextMenu_ServerInformation_Notification_Title {
get {
return ResourceManager.GetString("ContextMenu.ServerInformation.Notification.Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Server information.
/// </summary>

View File

@ -283,6 +283,14 @@ Your ReShade configuration files will still be saved, and you can locate them by
<data name="ContextMenu.ServerInformation.Location" xml:space="preserve">
<value>Location</value>
</data>
<data name="ContextMenu.ServerInformation.Notification.Text" xml:space="preserve">
<value>Located at {0}
Click for more information</value>
</data>
<data name="ContextMenu.ServerInformation.Notification.Title" xml:space="preserve">
<value>Connected to {0} server</value>
<comment>Enums.ServerType fills in {0} and is dynamically converted to lowercase when inserted here</comment>
</data>
<data name="ContextMenu.ServerInformation.Title" xml:space="preserve">
<value>Server information</value>
</data>

View File

@ -1,6 +1,4 @@
using System.Windows;
using Bloxstrap.Integrations;
using Bloxstrap.Integrations;
using Bloxstrap.UI.Elements.ContextMenu;
namespace Bloxstrap.UI
@ -91,8 +89,8 @@ namespace Bloxstrap.UI
string serverLocation = await _activityWatcher!.GetServerLocation();
ShowAlert(
$"Connected to {_activityWatcher.ActivityServerType.ToString().ToLower()} server",
$"Located at {serverLocation}\nClick for more information",
String.Format(Resources.Strings.ContextMenu_ServerInformation_Notification_Title, _activityWatcher.ActivityServerType.ToTranslatedString().ToLower()),
String.Format(Resources.Strings.ContextMenu_ServerInformation_Notification_Text, serverLocation),
10,
(_, _) => _menuContainer?.ShowServerInformationWindow()
);