diff --git a/Application/Application.csproj b/Application/Application.csproj index 370817d23..b02c1ff97 100644 --- a/Application/Application.csproj +++ b/Application/Application.csproj @@ -72,6 +72,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/Application/Localization/IW4MAdmin.en-US.json b/Application/Localization/IW4MAdmin.en-US.json index a1a39694e..65e4ba2c4 100644 --- a/Application/Localization/IW4MAdmin.en-US.json +++ b/Application/Localization/IW4MAdmin.en-US.json @@ -20,8 +20,9 @@ "SETUP_ENCODING_STRING": "Enter encoding string", "SETUP_ENABLE_VPNS": "Enable client VPNs", "SETUP_IPHUB_KEY": "Enter iphub.info api key", - "SETUP_DISPLAY_DISCORD": "Display discord link on webfront", - "SETUP_DISCORD_INVITE": "Enter discord invite link", + "SETUP_DISPLAY_SOCIAL": "Display social media link on webfront (discord, website, VK, etc..)", + "SETUP_SOCIAL_LINK": "Enter social media link", + "SETUP_SOCIAL_TITLE": "Enter social media name", "SETUP_SERVER_USET6M": "Use Pluto T6 parser", "SETUP_SERVER_USEIW5M": "Use Pluto IW5 Parser", "SETUP_SERVER_MANUALLOG": "Enter manual log file path", diff --git a/Application/Localization/IW4MAdmin.es-EC.json b/Application/Localization/IW4MAdmin.es-EC.json index 448f7afd5..9f303a8dd 100644 --- a/Application/Localization/IW4MAdmin.es-EC.json +++ b/Application/Localization/IW4MAdmin.es-EC.json @@ -20,8 +20,9 @@ "SETUP_ENCODING_STRING": "Ingresar cadena de codificación", "SETUP_ENABLE_VPNS": "Habilitar VPNs clientes", "SETUP_IPHUB_KEY": "Ingresar clave api de iphub.info", - "SETUP_DISPLAY_DISCORD": "Mostrar link de Discord en frente de la web", - "SETUP_DISCORD_INVITE": "Ingresar link de invitación a discord", + "SETUP_DISPLAY_SOCIAL": "Mostrar el link del medio de comunicación en la parte frontal de la web. (discord, website, VK, etc..)", + "SETUP_SOCIAL_LINK": "Ingresar link del medio de comunicación", + "SETUP_SOCIAL_TITLE": "Ingresa el nombre de la red de comunicación", "SETUP_SERVER_USET6M": "Usar analizador Pluto T6", "SETUP_SERVER_USEIW5M": "Usar analizador Pluto IW5", "SETUP_SERVER_MANUALLOG": "Ingresar manualmente la ruta del archivo de registro", diff --git a/Application/Localization/IW4MAdmin.ru-RU.json b/Application/Localization/IW4MAdmin.ru-RU.json index 8b635752b..a24138e43 100644 --- a/Application/Localization/IW4MAdmin.ru-RU.json +++ b/Application/Localization/IW4MAdmin.ru-RU.json @@ -17,8 +17,9 @@ "SETUP_ENCODING_STRING": "Введите кодировку", "SETUP_ENABLE_VPNS": "Включить поддержку VPN у игроков", "SETUP_IPHUB_KEY": "Введите iphub.info api-ключ", - "SETUP_DISPLAY_DISCORD": "Отображать ссылку на Discord в веб-интерфейсе", - "SETUP_DISCORD_INVITE": "Введите ссылку-приглашение в Discord", + "SETUP_DISPLAY_SOCIAL": "Отображать ссылку на социальную сеть в веб-интерфейсе (Discord, веб-сайт, ВК, и т.д.)", + "SETUP_SOCIAL_LINK": "Ввести ссылку на социальную сеть", + "SETUP_SOCIAL_TITLE": "Ввести имя социальной сети", "SETUP_SERVER_USET6M": "Использовать Pluto T6 парсер", "SETUP_SERVER_USEIW5M": "Использовать парсер Pluto IW5", "SETUP_SERVER_MANUALLOG": "Введите путь для лог-файла", diff --git a/Application/Localization/Webfront.en-US.json b/Application/Localization/Webfront.en-US.json new file mode 100644 index 000000000..fbe3d71df --- /dev/null +++ b/Application/Localization/Webfront.en-US.json @@ -0,0 +1,50 @@ +{ + "LocalizationName": "en-US", + "LocalizationIndex": { + "Set": { + "WEBFRONT_ACTION_BAN_NAME": "Ban", + "WEBFRONT_ACTION_LABEL_REASON": "Reason", + "WEBFRONT_ACTION_UNBAN_NAME": "Unban", + "WEBFRONT_ACTION_LOGIN_NAME": "Login", + "WEBFRONT_ACTION_LABEL_ID": "Client ID", + "WEBFRONT_ACTION_LABEL_PASSWORD": "Password", + "WEBFRONT_CLIENT_META_MASKED": "Masked", + "WEBFRONT_CLIENT_META_TRUE": "Is", + "WEBFRONT_CLIENT_META_FALSE": "Is not", + "WEBFRONT_CLIENT_META_JOINED": "Joined with alias", + "WEBFRONT_CLIENT_PROFILE_TITLE": "Profile", + "WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Privileged Clients", + "WEBFRONT_CLIENT_SEARCH_MATCHING": "Clients Matching", + "WEBFRONT_CONSOLE_TITLE": "Web Console", + "WEBFRONT_HOME_TITLE": "Server Overview", + "WEBFRONT_ERROR_DESC": "IW4MAdmin encountered an error", + "WEBFRONT_ERROR_TITLE": "Error!", + "WEBFRONT_PENALTY_TITLE": "Client Penalties", + "WEBFRONT_PENALTY_TEMPLATE_NAME": "Name", + "WEBFRONT_PENALTY_TEMPLATE_TYPE": "Type", + "WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Offense", + "WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Admin", + "WEBFRONT_PENALTY_TEMPLATE_TIME": "Time/Left", + "WEBFRONT_PROFILE_PLAYER": "Played", + "WEBFRONT_PROFILE_FSEEN": "First seen", + "WEBFRONT_PROFILE_LSEEN": "Last seen", + "WEBFRONT_PROFILE_LEVEL": "Level", + "WEBFRONT_CONSOLE_EXECUTE": "Execute", + "WEBFRONT_ERROR_GENERIC_TITLE": "Sorry!", + "WEBFRONT_ERROR_GENERIC_DESC": "An error occurred while processing your request", + "WEBFRONT_PENALTY_TEMPLATE_AGO": "ago", + "WEBFRONT_PENALTY_TEMPLATE_REMAINING": "left", + "WEBFRONT_PENALTY_TEMPLATE_SHOW": "Show", + "WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Show only", + "WEBFRONT_NAV_HOME": "Home", + "WEBFRONT_NAV_PENALTIES": "Penalties", + "WEBFRONT_NAV_PRIVILEGED": "Admins", + "WEBFRONT_NAV_SOCIAL": "Social", + "WEBFRONT_NAV_DISCORD": "Discord", + "WEBFRONT_NAV_CONSOLE": "Console", + "WEBFRONT_NAV_PROFILE": "Client Profile", + "WEBFRONT_NAV_LOGOUT": "Logout", + "WEBFRONT_NAV_SEARCH": "Find Client" + } + } +} diff --git a/Application/Localization/Webfront.es-EC.json b/Application/Localization/Webfront.es-EC.json new file mode 100644 index 000000000..c75926fa2 --- /dev/null +++ b/Application/Localization/Webfront.es-EC.json @@ -0,0 +1,50 @@ +{ + "LocalizationName": "es-BR", + "LocalizationIndex": { + "Set": { + "WEBFRONT_ACTION_BAN_NAME": "Ban", + "WEBFRONT_ACTION_LABEL_REASON": "Razón", + "WEBFRONT_ACTION_UNBAN_NAME": "Desban", + "WEBFRONT_ACTION_LOGIN_NAME": "Inicio de sesión", + "WEBFRONT_ACTION_LABEL_ID": "ID del Cliente", + "WEBFRONT_ACTION_LABEL_PASSWORD": "Contraseña", + "WEBFRONT_CLIENT_META_MASKED": "Enmascarado", + "WEBFRONT_CLIENT_META_TRUE": "Está", + "WEBFRONT_CLIENT_META_FALSE": "No está", + "WEBFRONT_CLIENT_META_JOINED": "Se unió con el alias", + "WEBFRONT_CLIENT_PROFILE_TITLE": "Perfil", + "WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Clientes privilegiados", + "WEBFRONT_CLIENT_SEARCH_MATCHING": "Clientes que concuerdan", + "WEBFRONT_CONSOLE_TITLE": "Consola Web", + "WEBFRONT_HOME_TITLE": "Vista general del servidor", + "WEBFRONT_ERROR_DESC": "IW4MAdmin encontró", + "WEBFRONT_ERROR_TITLE": "¡Error!", + "WEBFRONT_PENALTY_TITLE": "Faltas del cliente", + "WEBFRONT_PENALTY_TEMPLATE_NAME": "Nombre", + "WEBFRONT_PENALTY_TEMPLATE_TYPE": "Tipo", + "WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Ofensa", + "WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Administrador", + "WEBFRONT_PENALTY_TEMPLATE_TIME": "Tiempo/Restante", + "WEBFRONT_PROFILE_PLAYER": "Jugadas", + "WEBFRONT_PROFILE_FSEEN": "Primera vez visto hace", + "WEBFRONT_PROFILE_LSEEN": "Última vez visto hace", + "WEBFRONT_PROFILE_LEVEL": "Nivel", + "WEBFRONT_CONSOLE_EXECUTE": "Ejecutar", + "WEBFRONT_ERROR_GENERIC_TITLE": "¡Lo lamento!", + "WEBFRONT_ERROR_GENERIC_DESC": "Un error ha ocurrido mientras se procesaba tu solicitud", + "WEBFRONT_PENALTY_TEMPLATE_AGO": "atrás", + "WEBFRONT_PENALTY_TEMPLATE_REMAINING": "restante", + "WEBFRONT_PENALTY_TEMPLATE_SHOW": "Mostrar", + "WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Mostrar solamente", + "WEBFRONT_NAV_HOME": "Inicio", + "WEBFRONT_NAV_PENALTIES": "Sanciones", + "WEBFRONT_NAV_PRIVILEGED": "Administradores", + "WEBFRONT_NAV_SOCIAL": "Social", + "WEBFRONT_NAV_DISCORD": "Discord", + "WEBFRONT_NAV_CONSOLE": "Consola", + "WEBFRONT_NAV_PROFILE": "Perfil del cliente", + "WEBFRONT_NAV_LOGOUT": "Cerrar sesión", + "WEBFRONT_NAV_SEARCH": "Encontrar cliente" + } + } +} diff --git a/Application/Localization/Webfront.ru-RU.json b/Application/Localization/Webfront.ru-RU.json new file mode 100644 index 000000000..84ea9ff9a --- /dev/null +++ b/Application/Localization/Webfront.ru-RU.json @@ -0,0 +1,50 @@ +{ + "LocalizationName": "en-US", + "LocalizationIndex": { + "Set": { + "WEBFRONT_ACTION_BAN_NAME": "Забанить", + "WEBFRONT_ACTION_LABEL_REASON": "Причина", + "WEBFRONT_ACTION_UNBAN_NAME": "Разбанить", + "WEBFRONT_ACTION_LOGIN_NAME": "Войти", + "WEBFRONT_ACTION_LABEL_ID": "ID клиента", + "WEBFRONT_ACTION_LABEL_PASSWORD": "Пароль", + "WEBFRONT_CLIENT_META_MASKED": "Замаскирован", + "WEBFRONT_CLIENT_META_TRUE": "", + "WEBFRONT_CLIENT_META_FALSE": "не", + "WEBFRONT_CLIENT_META_JOINED": "Присоединился с именем", + "WEBFRONT_CLIENT_PROFILE_TITLE": "Профиль", + "WEBFRONT_CLIENT_PRIVILEGED_TITLE": "Клиенты с правами", + "WEBFRONT_CLIENT_SEARCH_MATCHING": "Подходящие клиенты", + "WEBFRONT_CONSOLE_TITLE": "Веб-консоль", + "WEBFRONT_HOME_TITLE": "Обзор сервера", + "WEBFRONT_ERROR_DESC": "IW4MAdmin столкнулся с ошибкой", + "WEBFRONT_ERROR_TITLE": "Ошибка!", + "WEBFRONT_PENALTY_TITLE": "Наказания клиентов", + "WEBFRONT_PENALTY_TEMPLATE_NAME": "Имя", + "WEBFRONT_PENALTY_TEMPLATE_TYPE": "Тип", + "WEBFRONT_PENALTY_TEMPLATE_OFFENSE": "Нарушение", + "WEBFRONT_PENALTY_TEMPLATE_ADMIN": "Админ", + "WEBFRONT_PENALTY_TEMPLATE_TIME": "Время/Осталось", + "WEBFRONT_PROFILE_PLAYER": "Наиграл", + "WEBFRONT_PROFILE_FSEEN": "Впервые заходил", + "WEBFRONT_PROFILE_LSEEN": "Последний раз заходил", + "WEBFRONT_PROFILE_LEVEL": "Уровень", + "WEBFRONT_CONSOLE_EXECUTE": "Выполнить", + "WEBFRONT_ERROR_GENERIC_TITLE": "Извините!", + "WEBFRONT_ERROR_GENERIC_DESC": "Произошла ошибка во время обработки вашего запроса", + "WEBFRONT_PENALTY_TEMPLATE_AGO": "назад", + "WEBFRONT_PENALTY_TEMPLATE_REMAINING": "осталось", + "WEBFRONT_PENALTY_TEMPLATE_SHOW": "Показывать", + "WEBFRONT_PENALTY_TEMPLATE_SHOWONLY": "Показывать только", + "WEBFRONT_NAV_HOME": "Домой", + "WEBFRONT_NAV_PENALTIES": "Наказания", + "WEBFRONT_NAV_PRIVILEGED": "Админы", + "WEBFRONT_NAV_SOCIAL": "Соц. сети", + "WEBFRONT_NAV_DISCORD": "Discord", + "WEBFRONT_NAV_CONSOLE": "Консоль", + "WEBFRONT_NAV_PROFILE": "Профиль клиента", + "WEBFRONT_NAV_LOGOUT": "Выйти", + "WEBFRONT_NAV_SEARCH": "Найти клиента" + } + } +} diff --git a/SharedLibraryCore/Configuration/ApplicationConfiguration.cs b/SharedLibraryCore/Configuration/ApplicationConfiguration.cs index 7454de6ad..b4205562a 100644 --- a/SharedLibraryCore/Configuration/ApplicationConfiguration.cs +++ b/SharedLibraryCore/Configuration/ApplicationConfiguration.cs @@ -15,6 +15,7 @@ namespace SharedLibraryCore.Configuration public bool EnableCustomSayName { get; set; } public string CustomSayName { get; set; } public string DiscordInviteCode { get; set; } + public string SocialLinkTitle { get; set; } public string IPHubAPIKey { get; set; } public string WebfrontBindUrl { get; set; } public string CustomParserEncoding { get; set; } @@ -51,10 +52,13 @@ namespace SharedLibraryCore.Configuration if (!EnableClientVPNs) IPHubAPIKey = Utilities.PromptString(loc["SETUP_IPHUB_KEY"]); - EnableDiscordLink = Utilities.PromptBool(loc["SETUP_DISPLAY_DISCORD"]); + EnableDiscordLink = Utilities.PromptBool(loc["SETUP_DISPLAY_SOCIAL"]); if (EnableDiscordLink) - DiscordInviteCode = Utilities.PromptString(loc["SETUP_DISCORD_INVITE"]); + { + SocialLinkTitle = Utilities.PromptString(loc["SETUP_SOCIAL_TITLE"]); + DiscordInviteCode = Utilities.PromptString(loc["SETUP_SOCIAL_LINK"]); + } return this; } diff --git a/SharedLibraryCore/Utilities.cs b/SharedLibraryCore/Utilities.cs index 49a0a749c..7a69b4cb0 100644 --- a/SharedLibraryCore/Utilities.cs +++ b/SharedLibraryCore/Utilities.cs @@ -210,27 +210,27 @@ namespace SharedLibraryCore public static String GetTimePassed(DateTime start, bool includeAgo) { TimeSpan Elapsed = DateTime.UtcNow - start; - string ago = includeAgo ? " ago" : ""; + string ago = includeAgo ? " " + CurrentLocalization.LocalizationIndex["WEBFRONT_PENALTY_TEMPLATE_AGO"] : ""; if (Elapsed.TotalSeconds < 30 && includeAgo) return "just now"; if (Elapsed.TotalMinutes < 120) { if (Elapsed.TotalMinutes < 1.5) - return $"1 minute{ago}"; - return Math.Round(Elapsed.TotalMinutes, 0) + $" minutes{ago}"; + return $"1 {CurrentLocalization.LocalizationIndex["GLOBAL_MINUTES"]}{ago}"; + return Math.Round(Elapsed.TotalMinutes, 0) + $" {CurrentLocalization.LocalizationIndex["GLOBAL_MINUTES"]}{ago}"; } if (Elapsed.TotalHours <= 24) { if (Elapsed.TotalHours < 1.5) - return $"1 hour{ago}"; - return Math.Round(Elapsed.TotalHours, 0) + $" hours{ago}"; + return $"1 {CurrentLocalization.LocalizationIndex["GLOBAL_HOURS"]}{ago}"; + return Math.Round(Elapsed.TotalHours, 0) + $" { CurrentLocalization.LocalizationIndex["GLOBAL_HOURS"]}{ago}"; } if (Elapsed.TotalDays <= 365) { if (Elapsed.TotalDays < 1.5) - return $"1 day{ago}"; - return Math.Round(Elapsed.TotalDays, 0) + $" days{ago}"; + return $"1 {CurrentLocalization.LocalizationIndex["GLOBAL_DAYS"]}{ago}"; + return Math.Round(Elapsed.TotalDays, 0) + $" {CurrentLocalization.LocalizationIndex["GLOBAL_DAYS"]}{ago}"; } else return $"a very long time{ago}"; diff --git a/WebfrontCore/Controllers/ActionController.cs b/WebfrontCore/Controllers/ActionController.cs index ce444834e..3fe3438f7 100644 --- a/WebfrontCore/Controllers/ActionController.cs +++ b/WebfrontCore/Controllers/ActionController.cs @@ -83,12 +83,12 @@ namespace WebfrontCore.Controllers new InputInfo() { Name = "clientId", - Label = "Client ID" + Label = Localization["WEBFRONT_ACTION_LABEL_ID"] }, new InputInfo() { Name = "Password", - Label ="Password", + Label = Localization["WEBFRONT_ACTION_LABEL_PASSWORD"], Type = "password", } }, diff --git a/WebfrontCore/Controllers/BaseController.cs b/WebfrontCore/Controllers/BaseController.cs index a83b7c2d0..8a681a0d8 100644 --- a/WebfrontCore/Controllers/BaseController.cs +++ b/WebfrontCore/Controllers/BaseController.cs @@ -20,18 +20,21 @@ namespace WebfrontCore.Controllers protected SharedLibraryCore.Localization.Index Localization { get; private set; } protected EFClient Client { get; private set; } private static byte[] LocalHost = { 127, 0, 0, 1 }; - private static string DiscordLink; + private static string SocialLink; + private static string SocialTitle; public BaseController() { - Manager = Program.Manager; - if (Manager.GetApplicationSettings().Configuration().EnableDiscordLink) + if (Manager == null) + Manager = Program.Manager; + + if (Localization == null) + Localization = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; + + if (Manager.GetApplicationSettings().Configuration().EnableDiscordLink && SocialLink == null) { - string inviteLink = Manager.GetApplicationSettings().Configuration().DiscordInviteCode; - if (inviteLink != null) - DiscordLink = inviteLink.Contains("https") ? inviteLink : $"https://discordapp.com/invite/{inviteLink}"; - else - DiscordLink = ""; + SocialLink = Manager.GetApplicationSettings().Configuration().DiscordInviteCode; + SocialTitle = Manager.GetApplicationSettings().Configuration().SocialLinkTitle; } } @@ -83,7 +86,8 @@ namespace WebfrontCore.Controllers ViewBag.Authorized = Authorized; ViewBag.Url = Manager.GetApplicationSettings().Configuration().WebfrontBindUrl; ViewBag.User = Client; - ViewBag.DiscordLink = DiscordLink ?? ""; + ViewBag.SocialLink = SocialLink ?? ""; + ViewBag.SocialTitle = SocialTitle; base.OnActionExecuting(context); } diff --git a/WebfrontCore/Controllers/ClientController.cs b/WebfrontCore/Controllers/ClientController.cs index 4528448b3..055bc9b16 100644 --- a/WebfrontCore/Controllers/ClientController.cs +++ b/WebfrontCore/Controllers/ClientController.cs @@ -53,8 +53,8 @@ namespace WebfrontCore.Controllers if (Authorized && client.Level > SharedLibraryCore.Objects.Player.Permission.Trusted) clientDto.Meta.Add(new ProfileMeta() { - Key = "Masked", - Value = client.Masked ? "Is" : "Is not", + Key = Localization["WEBFRONT_CLIENT_META_MASKED"], + Value = client.Masked ? Localization["WEBFRONT_CLIENT_META_TRUE"]: Localization["WEBFRONT_CLIENT_META_FALSE"], Sensitive = true, When = DateTime.MinValue }); @@ -67,7 +67,7 @@ namespace WebfrontCore.Controllers .Select(a => new ProfileMeta() { Key = "AliasEvent", - Value = $"Joined with alias {a.Name}", + Value = $"{Localization["WEBFRONT_CLIENT_META_JOINED"]} {a.Name}", Sensitive = true, When = a.DateAdded })); @@ -83,7 +83,7 @@ namespace WebfrontCore.Controllers ViewBag.Title = clientDto.Name.Substring(clientDto.Name.Length - 1).ToLower()[0] == 's' ? clientDto.Name + "'" : clientDto.Name + "'s"; - ViewBag.Title += " Profile"; + ViewBag.Title += " " + Localization["WEBFRONT_CLIENT_PROFILE_TITLE"]; ViewBag.Description = $"Client information for {clientDto.Name}"; ViewBag.Keywords = $"IW4MAdmin, client, profile, {clientDto.Name}"; @@ -109,7 +109,7 @@ namespace WebfrontCore.Controllers }); } - ViewBag.Title = "Privileged Clients"; + ViewBag.Title = Localization["WEBFRONT_CLIENT_PRIVILEGED_TITLE"]; ViewBag.Description = "List of all privileged clients on IW4MAdmin"; ViewBag.Keywords = "IW4MAdmin, privileged, admins, clients, administrators"; @@ -131,7 +131,7 @@ namespace WebfrontCore.Controllers }) .ToList(); - ViewBag.Title = $"{clientsDto.Count} Clients Matching \"{clientName}\""; + ViewBag.Title = $"{clientsDto.Count} {Localization["WEBFRONT_CLIENT_SEARCH_MATCHING"]} \"{clientName}\""; return View("Find/Index", clientsDto); } } diff --git a/WebfrontCore/Controllers/ConsoleController.cs b/WebfrontCore/Controllers/ConsoleController.cs index a9c604dad..36c6ccad2 100644 --- a/WebfrontCore/Controllers/ConsoleController.cs +++ b/WebfrontCore/Controllers/ConsoleController.cs @@ -20,7 +20,7 @@ namespace WebfrontCore.Controllers }); ViewBag.Description = "Use the IW4MAdmin web console to execute commands"; - ViewBag.Title = "Web Console"; + ViewBag.Title = Localization["WEBFRONT_CONSOLE_TITLE"]; ViewBag.Keywords = "IW4MAdmin, console, execute, commands"; return View(activeServers); diff --git a/WebfrontCore/Controllers/HomeController.cs b/WebfrontCore/Controllers/HomeController.cs index 6a391ffd7..30b2000c3 100644 --- a/WebfrontCore/Controllers/HomeController.cs +++ b/WebfrontCore/Controllers/HomeController.cs @@ -13,7 +13,7 @@ namespace WebfrontCore.Controllers public IActionResult Index() { ViewBag.Description = "IW4MAdmin is a complete server administration tool for IW4x."; - ViewBag.Title = "Server Overview"; + ViewBag.Title = Localization["WEBFRONT_HOME_TITLE"]; ViewBag.Keywords = "IW4MAdmin, server, administration, IW4x, MW2, Modern Warfare 2"; return View(); @@ -21,8 +21,8 @@ namespace WebfrontCore.Controllers public IActionResult Error() { - ViewBag.Description = "IW4MAdmin encountered an error"; - ViewBag.Title = "Error!"; + ViewBag.Description = Localization["WEBFRONT_ERROR_DESC"]; + ViewBag.Title = Localization["WEBFRONT_ERROR_TITLE"]; return View(); } } diff --git a/WebfrontCore/Controllers/PenaltyController.cs b/WebfrontCore/Controllers/PenaltyController.cs index 5fdf7ac4e..b708766b7 100644 --- a/WebfrontCore/Controllers/PenaltyController.cs +++ b/WebfrontCore/Controllers/PenaltyController.cs @@ -16,7 +16,7 @@ namespace WebfrontCore.Controllers public IActionResult List(int showOnly = (int)SharedLibraryCore.Objects.Penalty.PenaltyType.Any) { ViewBag.Description = "List of all the recent penalties (bans, kicks, warnings) on IW4MAdmin"; - ViewBag.Title = "Client Penalties"; + ViewBag.Title = Localization["WEBFRONT_PENALTY_TITLE"]; ViewBag.Keywords = "IW4MAdmin, penalties, ban, kick, warns"; return View((SharedLibraryCore.Objects.Penalty.PenaltyType)showOnly); diff --git a/WebfrontCore/Views/Client/Find/Index.cshtml b/WebfrontCore/Views/Client/Find/Index.cshtml index 2c6f8039c..dc87ab176 100644 --- a/WebfrontCore/Views/Client/Find/Index.cshtml +++ b/WebfrontCore/Views/Client/Find/Index.cshtml @@ -1,11 +1,14 @@ @model List +@{ + var loc = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; +}

@ViewBag.Title

-
Name
-
Level
-
Last Seen
+
@loc["WEBFRONT_PENALTY_TEMPLATE_NAME"]
+
@loc["WEBFRONT_PROFILE_LEVEL"]
+
@loc["WEBFRONT_PROFILE_LSEEN"]
@{ @@ -14,7 +17,7 @@
@Html.ActionLink(client.Name, "ProfileAsync", "Client", new { id = client.ClientId })
@client.Level
-
@client.LastSeen ago
+
@client.LastSeen @loc["WEBFRONT_PENALTY_TEMPLATE_AGO"]
} } diff --git a/WebfrontCore/Views/Client/Profile/Index.cshtml b/WebfrontCore/Views/Client/Profile/Index.cshtml index 37d64a173..71a8d3eea 100644 --- a/WebfrontCore/Views/Client/Profile/Index.cshtml +++ b/WebfrontCore/Views/Client/Profile/Index.cshtml @@ -2,6 +2,7 @@ @{ string match = System.Text.RegularExpressions.Regex.Match(Model.Name.ToUpper(), "[A-Z]").Value; string shortCode = match == string.Empty ? "?" : match; + var loc = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; }
@@ -30,13 +31,13 @@
@if (Model.LevelInt < (int)ViewBag.User.Level && - (SharedLibraryCore.Objects.Player.Permission)Model.LevelInt != SharedLibraryCore.Objects.Player.Permission.Banned) + (SharedLibraryCore.Objects.Player.Permission)Model.LevelInt != SharedLibraryCore.Objects.Player.Permission.Banned) { } @if (Model.LevelInt < (int)ViewBag.User.Level && - (SharedLibraryCore.Objects.Player.Permission)Model.LevelInt == SharedLibraryCore.Objects.Player.Permission.Banned) + (SharedLibraryCore.Objects.Player.Permission)Model.LevelInt == SharedLibraryCore.Objects.Player.Permission.Banned) { } @@ -44,6 +45,7 @@
@{ + @Model.NetworkId.ToString("X")
foreach (string alias in Model.Aliases) { @alias
@@ -65,13 +67,13 @@
@Model.Level
- Played @Model.TimePlayed hours + @loc["WEBFRONT_PROFILE_PLAYER"] @Model.TimePlayed @loc["GLOBAL_HOURS"]
- First seen @Model.FirstSeen ago + @loc["WEBFRONT_PROFILE_FSEEN"] @Model.FirstSeen @loc["WEBFRONT_PENALTY_TEMPLATE_AGO"]
- Last seen @Model.LastSeen ago + @loc["WEBFRONT_PROFILE_LSEEN"] @Model.LastSeen @loc["WEBFRONT_PENALTY_TEMPLATE_AGO"]
@@ -81,12 +83,6 @@
- @{ - if (Model.Meta.Count == 0) - { - No recent events - } - }
diff --git a/WebfrontCore/Views/Console/Index.cshtml b/WebfrontCore/Views/Console/Index.cshtml index f4351601f..f832baac4 100644 --- a/WebfrontCore/Views/Console/Index.cshtml +++ b/WebfrontCore/Views/Console/Index.cshtml @@ -10,7 +10,7 @@
- +
diff --git a/WebfrontCore/Views/Penalty/List.cshtml b/WebfrontCore/Views/Penalty/List.cshtml index 33e4241c9..dec24ca77 100644 --- a/WebfrontCore/Views/Penalty/List.cshtml +++ b/WebfrontCore/Views/Penalty/List.cshtml @@ -1,5 +1,7 @@ @model SharedLibraryCore.Objects.Penalty.PenaltyType - +@{ + var loc = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; +}

@ViewBag.Title

+