From 4275a778aa133ac51382c6fdf8e0d596be5a0644 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Tue, 24 Dec 2024 23:28:44 +0100 Subject: [PATCH 01/43] update gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9a192926f..c1d99010a 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,9 @@ build/ AppDir/ publish_appimage/ +# Validation project assemblies folder +/src/Ryujinx.BuildValidationTasks/temp_assemblies + # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets !packages/*/build/ From f538cee2e80a32899c397acaa7f36041ea0dd523 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 03:56:59 +0100 Subject: [PATCH 02/43] please don't fail --- .gitignore | 2 +- Directory.Packages.props | 8 +-- Ryujinx.sln | 6 +- ...dationTask.cs => LocalesValidationTask.cs} | 4 +- .../Ryujinx.BuildValidationTasks.csproj | 60 +++++++++++++++++-- src/Ryujinx/Ryujinx.csproj | 4 +- 6 files changed, 68 insertions(+), 16 deletions(-) rename src/Ryujinx.BuildValidationTasks/{LocaleValidationTask.cs => LocalesValidationTask.cs} (98%) diff --git a/.gitignore b/.gitignore index c1d99010a..ace5554f4 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ AppDir/ publish_appimage/ # Validation project assemblies folder -/src/Ryujinx.BuildValidationTasks/temp_assemblies +/src/Ryujinx.BuildValidationTasks/temp_assemblies/ # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets !packages/*/build/ diff --git a/Directory.Packages.props b/Directory.Packages.props index 07fc8cc28..4057a019e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,12 +10,12 @@ - + - - + + @@ -56,4 +56,4 @@ - + \ No newline at end of file diff --git a/Ryujinx.sln b/Ryujinx.sln index 71d5f6dd9..cfd7a08da 100644 --- a/Ryujinx.sln +++ b/Ryujinx.sln @@ -80,6 +80,7 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "src\Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7F55A45D-4E1D-4A36-ADD3-87F29A285AA2}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "src\Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{B575BCDE-2FD8-4A5D-8756-31CDD7FE81F0}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ryujinx.Graphics.Metal", "src\Ryujinx.Graphics.Metal\Ryujinx.Graphics.Metal.csproj", "{C08931FA-1191-417A-864F-3882D93E683B}" ProjectSection(ProjectDependencies) = postProject {A602AE97-91A5-4608-8DF1-EBF4ED7A0B9E} = {A602AE97-91A5-4608-8DF1-EBF4ED7A0B9E} @@ -258,13 +259,12 @@ Global {B575BCDE-2FD8-4A5D-8756-31CDD7FE81F0}.Debug|Any CPU.Build.0 = Debug|Any CPU {B575BCDE-2FD8-4A5D-8756-31CDD7FE81F0}.Release|Any CPU.ActiveCfg = Release|Any CPU {B575BCDE-2FD8-4A5D-8756-31CDD7FE81F0}.Release|Any CPU.Build.0 = Release|Any CPU - {4A89A234-4F19-497D-A576-DDE8CDFC5B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A89A234-4F19-497D-A576-DDE8CDFC5B22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A89A234-4F19-497D-A576-DDE8CDFC5B22}.Release|Any CPU.ActiveCfg = Release|Any CPU {C08931FA-1191-417A-864F-3882D93E683B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C08931FA-1191-417A-864F-3882D93E683B}.Debug|Any CPU.Build.0 = Debug|Any CPU {C08931FA-1191-417A-864F-3882D93E683B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C08931FA-1191-417A-864F-3882D93E683B}.Release|Any CPU.Build.0 = Release|Any CPU + {4A89A234-4F19-497D-A576-DDE8CDFC5B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A89A234-4F19-497D-A576-DDE8CDFC5B22}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Ryujinx.BuildValidationTasks/LocaleValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs similarity index 98% rename from src/Ryujinx.BuildValidationTasks/LocaleValidationTask.cs rename to src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 6dc3d8aa8..d58531960 100644 --- a/src/Ryujinx.BuildValidationTasks/LocaleValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -8,7 +8,7 @@ using Microsoft.Build.Framework; namespace Ryujinx.BuildValidationTasks { - public class LocaleValidationTask : Task + public class LocalesValidationTask : Task { public override bool Execute() { @@ -32,8 +32,10 @@ namespace Ryujinx.BuildValidationTasks data = sr.ReadToEnd(); } + LocalesJson json = JsonConvert.DeserializeObject(data); + for (int i = 0; i < json.Locales.Count; i++) { LocalesEntry locale = json.Locales[i]; diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index dbd9492df..eeb4f40d1 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -3,17 +3,67 @@ netstandard2.0 true + + $(MSBuildThisFileDirectory)temp_assemblies/ - - + + + - + + - - + + + + + + + + + + + + + + + + + + LocalesValidation + + LocalesValidationTask.dll + + + + + + + + + + + + + + + + + diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index d5bad2ee6..5ce148630 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -13,8 +13,8 @@ $(DefaultItemExcludes);._* - - + + From 732a1af863669e2a1fb956fa700ebf8edab58cbf Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 04:02:22 +0100 Subject: [PATCH 03/43] copying is not necessary anymore --- .../Ryujinx.BuildValidationTasks.csproj | 5 ----- src/Ryujinx/Assets/locales.json | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index eeb4f40d1..ea86eeb0f 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -18,11 +18,6 @@ - - - - - diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index cdf43f474..0c64c21db 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -21694,4 +21694,4 @@ } } ] -} +} \ No newline at end of file From 748e93ba65df5a1182334ed3d23a3af8608cc51d Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 17:09:57 +0100 Subject: [PATCH 04/43] lets give this another shot moved from netstandard to netframework --- .../LocalesValidationTask.cs | 13 ++++++++++++- .../LocalesValidationTask.dll | Bin 0 -> 7680 bytes .../Ryujinx.BuildValidationTasks.csproj | 15 ++++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index d58531960..29dd6314f 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -32,8 +32,19 @@ namespace Ryujinx.BuildValidationTasks data = sr.ReadToEnd(); } + LocalesJson json; - LocalesJson json = JsonConvert.DeserializeObject(data); + try + { + json = JsonConvert.DeserializeObject(data); + + } + catch (Exception e) + { + Log.LogError($"Json Validation failed! {e.Message}"); + + return false; + } for (int i = 0; i < json.Locales.Count; i++) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll new file mode 100644 index 0000000000000000000000000000000000000000..13e9f7769dc4ad0884221151dcf07260e23f69e6 GIT binary patch literal 7680 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 NU+&OX_5S}e@K1nkzx@CJ literal 0 HcmV?d00001 diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index ea86eeb0f..d36c2a945 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,7 +1,6 @@ - netstandard2.0 true $(MSBuildThisFileDirectory)temp_assemblies/ @@ -14,17 +13,19 @@ - - + + + + - + @@ -48,10 +49,10 @@ $(PkgMicrosoft_Build_Framework)/ref/netstandard2.0/Microsoft.Build.Framework.dll; $(PkgMicrosoft_Build_Utilities_Core)/ref/netstandard2.0/Microsoft.Build.Utilities.Core.dll; $(PkgNewtonsoft_Json)/lib/netstandard2.0/Newtonsoft.Json.dll" - TargetType="Library" OutputAssembly="$(MSBuildThisFileDirectory)temp_assemblies/$(Dll)"/> + TargetType="Library" OutputAssembly="$(temp_assemblies)$(Dll)"/> - + @@ -61,4 +62,4 @@ - + \ No newline at end of file From b19ee23c6b54922e38075062c3e1adb817af0b78 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 20:48:28 +0100 Subject: [PATCH 05/43] this won't work --- .../LocalesValidationTask.cs | 14 +++++++++++--- .../LocalesValidationTask.dll | Bin 7680 -> 0 bytes .../Ryujinx.BuildValidationTasks.csproj | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 11 deletions(-) delete mode 100644 src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 29dd6314f..d599ca7ef 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -3,8 +3,9 @@ using Microsoft.Build.Utilities; using System.Collections.Generic; using System.Linq; using System.IO; -using Newtonsoft.Json; +using System.Text.Json; using Microsoft.Build.Framework; +using System.Text.Encodings.Web; namespace Ryujinx.BuildValidationTasks { @@ -34,9 +35,10 @@ namespace Ryujinx.BuildValidationTasks LocalesJson json; + try { - json = JsonConvert.DeserializeObject(data); + json = JsonSerializer.Deserialize(data); } catch (Exception e) @@ -61,7 +63,13 @@ namespace Ryujinx.BuildValidationTasks json.Locales[i] = locale; } - string jsonString = JsonConvert.SerializeObject(json, Formatting.Indented); + JsonSerializerOptions jsonOptions = new JsonSerializerOptions() + { + WriteIndented = true, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + + string jsonString = JsonSerializer.Serialize(json, jsonOptions); using (StreamWriter sw = new(path)) { diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.dll deleted file mode 100644 index 13e9f7769dc4ad0884221151dcf07260e23f69e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 NU+&OX_5S}e@K1nkzx@CJ diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index d36c2a945..a9ca04a60 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,6 +1,7 @@ + net9.0 true $(MSBuildThisFileDirectory)temp_assemblies/ @@ -9,16 +10,11 @@ - - - - - @@ -36,6 +32,11 @@ + + + + + From 695f9e277d8209c7a1703cc37ee53b630a43f5b9 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:13:54 +0100 Subject: [PATCH 06/43] v3 --- Directory.Packages.props | 1 + .../LocalesValidationTask.cs | 15 ++---- .../Ryujinx.BuildValidationTasks.csproj | 49 +++++++------------ 3 files changed, 21 insertions(+), 44 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 4057a019e..93ea99a3e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,6 +11,7 @@ + diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index d599ca7ef..62096cb18 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -11,20 +11,11 @@ namespace Ryujinx.BuildValidationTasks { public class LocalesValidationTask : Task { + public string Path { get; set; } + public override bool Execute() { - string path = System.Reflection.Assembly.GetExecutingAssembly().Location; - - if (path.Split(["src"], StringSplitOptions.None).Length == 1) - { - //i assume that we are in a build directory in the solution dir - path = new FileInfo(path).Directory!.Parent!.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName; - } - else - { - path = path.Split(["src"], StringSplitOptions.None)[0]; - path = new FileInfo(path).Directory!.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName; - } + string path = Path; string data; diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index a9ca04a60..e7182a4d1 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,15 +1,15 @@ - net9.0 true $(MSBuildThisFileDirectory)temp_assemblies/ - - + + + @@ -26,42 +26,27 @@ LocalesValidation - - LocalesValidationTask.dll - - - - - - - - - - - - + + + + + + + + + + + - + - + - \ No newline at end of file + From 097836bfacfd66276a2c516a33373783cfdbacff Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:14:20 +0100 Subject: [PATCH 07/43] NO-BREAK SPACE is now escaped --- src/Ryujinx/Assets/locales.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 0c64c21db..cc140c68e 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -3797,7 +3797,7 @@ "el_GR": "Ζώνη Ώρας Συστήματος:", "en_US": "System Time Zone:", "es_ES": "Zona horaria del sistema:", - "fr_FR": "Fuseau horaire du système :", + "fr_FR": "Fuseau horaire du système\u00A0:", "he_IL": "אזור זמן מערכת:", "it_IT": "Fuso orario del sistema:", "ja_JP": "タイムゾーン:", @@ -15125,7 +15125,7 @@ "el_GR": "", "en_US": "Aspect Ratio applied to the renderer window.\n\nOnly change this if you're using an aspect ratio mod for your game, otherwise the graphics will be stretched.\n\nLeave on 16:9 if unsure.", "es_ES": "Relación de aspecto aplicada a la ventana del renderizador.\n\nSolamente modificar esto si estás utilizando un mod de relación de aspecto para su juego, en cualquier otro caso los gráficos se estirarán.\n\nDejar en 16:9 si no sabe que hacer.", - "fr_FR": "Format d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", + "fr_FR": "Format\u00A0d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format\u00A0d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", "he_IL": "", "it_IT": "Proporzioni dello schermo applicate alla finestra di renderizzazione.\n\nCambialo solo se stai usando una mod di proporzioni per il tuo gioco, altrimenti la grafica verrà allungata.\n\nLasciare il 16:9 se incerto.", "ja_JP": "レンダリングウインドウに適用するアスペクト比です.\n\nゲームにアスペクト比を変更する mod を使用している場合のみ変更してください.\n\nわからない場合は16:9のままにしておいてください.\n", @@ -20213,7 +20213,7 @@ "el_GR": "Όνομα", "en_US": "Name", "es_ES": "Nombre", - "fr_FR": "Nom ", + "fr_FR": "Nom\u00A0", "he_IL": "שם", "it_IT": "Nome", "ja_JP": "名称", From d83d80de73dcf99ef6e51e5bb3c50b3537528195 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 23:22:38 +0100 Subject: [PATCH 08/43] here we go --- Directory.Packages.props | 3 +++ .../Ryujinx.BuildValidationTasks.csproj | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 93ea99a3e..b5e4b4aa7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -55,6 +55,9 @@ + + + \ No newline at end of file diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index e7182a4d1..79455bf09 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,6 +1,7 @@ + net9.0 true $(MSBuildThisFileDirectory)temp_assemblies/ @@ -10,6 +11,9 @@ + + + @@ -34,9 +38,9 @@ - - - + + + From dac137fd437ea1bd521332201ad9e4bff49beb34 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 25 Dec 2024 23:47:20 +0100 Subject: [PATCH 09/43] test stuff --- .../Ryujinx.BuildValidationTasks.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 79455bf09..2a290da99 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -48,6 +48,8 @@ + + From 1bac6ab19ef1a979c9f4acb05b1ecb008dd4f08a Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 00:00:05 +0100 Subject: [PATCH 10/43] please --- .../Ryujinx.BuildValidationTasks.csproj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 2a290da99..c9f687f0e 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,7 +1,6 @@ - net9.0 true $(MSBuildThisFileDirectory)temp_assemblies/ @@ -17,6 +16,10 @@ + + + + @@ -48,7 +51,6 @@ - From 8c0a82bb6ea5b12a7b5d82648ab8a52ff2beff2a Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 19:54:02 +0100 Subject: [PATCH 11/43] v4 --- .../LocalesValidationTask.cs | 15 ++--- .../Ryujinx.BuildValidationTasks.csproj | 55 +++---------------- .../ValidationTask.cs | 13 +++++ src/Ryujinx.BuildValidationTasks/program.cs | 33 +++++++++++ src/Ryujinx/Ryujinx.csproj | 5 +- 5 files changed, 63 insertions(+), 58 deletions(-) create mode 100644 src/Ryujinx.BuildValidationTasks/ValidationTask.cs create mode 100644 src/Ryujinx.BuildValidationTasks/program.cs diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 62096cb18..63bbeb72f 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -1,22 +1,17 @@ using System; -using Microsoft.Build.Utilities; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text.Json; -using Microsoft.Build.Framework; using System.Text.Encodings.Web; namespace Ryujinx.BuildValidationTasks { - public class LocalesValidationTask : Task + public class LocalesValidationTask : ValidationTask { - public string Path { get; set; } - - public override bool Execute() + public static bool Execute(string projectPath) { - string path = Path; - + string path = projectPath + "src\\Ryujinx\\Assets\\locales.json"; string data; using (StreamReader sr = new(path)) @@ -34,7 +29,7 @@ namespace Ryujinx.BuildValidationTasks } catch (Exception e) { - Log.LogError($"Json Validation failed! {e.Message}"); + //Log.LogError($"Json Validation failed! {e.Message}"); return false; } @@ -47,7 +42,7 @@ namespace Ryujinx.BuildValidationTasks foreach (string langCode in json.Languages.Where(it => !locale.Translations.ContainsKey(it))) { locale.Translations.Add(langCode, string.Empty); - Log.LogMessage(MessageImportance.High, $"Added '{langCode}' to Locale '{locale.ID}'"); + //Log.LogMessage(MessageImportance.High, $"Added '{langCode}' to Locale '{locale.ID}'"); } locale.Translations = locale.Translations.OrderBy(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value); diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index c9f687f0e..12db48287 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -1,60 +1,23 @@ + net9.0 true $(MSBuildThisFileDirectory)temp_assemblies/ - - - - - - - - - - - - - - - - - - - - - - - - - - LocalesValidation + Exe + + - - - - - - - - - - - - - - - - - - - + - + \ No newline at end of file diff --git a/src/Ryujinx.BuildValidationTasks/ValidationTask.cs b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs new file mode 100644 index 000000000..9577fa973 --- /dev/null +++ b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ryujinx.BuildValidationTasks +{ + public interface ValidationTask + { + public static bool Execute(string projectPath) { return true; } + } +} diff --git a/src/Ryujinx.BuildValidationTasks/program.cs b/src/Ryujinx.BuildValidationTasks/program.cs new file mode 100644 index 000000000..14dabc662 --- /dev/null +++ b/src/Ryujinx.BuildValidationTasks/program.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ryujinx.BuildValidationTasks +{ + public class Program + { + static void Main(string[] args) + { + // Display the number of command line arguments. + if (args.Length != 1) + { + if (args.Length == 0) + throw new ArgumentException("Error: too few arguments!"); + else + throw new ArgumentException("Error: too many arguments!"); + } + if (string.IsNullOrEmpty(args[0])) + throw new ArgumentException("Error: path is null or empty!"); + + if (!Path.Exists(args[0])) + throw new ArgumentException("Error: path does not exist!"); + + Console.WriteLine(args[0]); + Console.WriteLine(Path.GetFullPath(args[0])); + LocalesValidationTask.Execute(args[0]); + } + } +} diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index 5ce148630..3594997b9 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -14,8 +14,9 @@ - - + + + From b00d80c17a818283a37bf9967ea1efb9a11e0ca9 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:00:04 +0100 Subject: [PATCH 12/43] use outdir --- .../Ryujinx.BuildValidationTasks.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 12db48287..8572eb15c 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -14,7 +14,7 @@ - From 7b8c8776a22fddd77661eabc534d265b2d8f2b00 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:06:07 +0100 Subject: [PATCH 13/43] Revert "use outdir" This reverts commit b00d80c17a818283a37bf9967ea1efb9a11e0ca9. --- .../Ryujinx.BuildValidationTasks.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 8572eb15c..12db48287 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -14,7 +14,7 @@ - From 9ca0926439c78ff5723694ac7afb0a6a5603476c Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:07:45 +0100 Subject: [PATCH 14/43] confirm that it actually builds --- .../Ryujinx.BuildValidationTasks.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 12db48287..899f60d93 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -14,10 +14,10 @@ - + />--> \ No newline at end of file From 21f23f0a2e75cd864221c6ef01f0c9eeab157362 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:13:18 +0100 Subject: [PATCH 15/43] lets see what's actually going on --- .../Ryujinx.BuildValidationTasks.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 899f60d93..1e1c87999 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -18,6 +18,7 @@ Command="Ryujinx.BuildValidationTasks.exe $(ProjectDir)..\..\" ConsoleToMsBuild="true" />--> + \ No newline at end of file From c91d9d80499f2f45fd84c86ba6aadae6fdeded74 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:18:29 +0100 Subject: [PATCH 16/43] build target fix --- .../Ryujinx.BuildValidationTasks.csproj | 2 +- src/Ryujinx/Ryujinx.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 1e1c87999..99a88a367 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -11,7 +11,7 @@ Exe - + - + \ No newline at end of file From bad1f7291860daa855a7f8e41d3c4458b298dc36 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:54:22 +0100 Subject: [PATCH 25/43] v4 first test, will fail due to new validation step --- .../LocalesValidationTask.cs | 43 ++++++++++++++++--- .../Ryujinx.BuildValidationTasks.csproj | 7 ++- src/Ryujinx.BuildValidationTasks/program.cs | 9 ++-- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 63bbeb72f..75fb06f7a 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -27,28 +27,57 @@ namespace Ryujinx.BuildValidationTasks json = JsonSerializer.Deserialize(data); } - catch (Exception e) + catch (JsonException e) { - //Log.LogError($"Json Validation failed! {e.Message}"); - - return false; + throw new JsonException(e.Message); //shorter and easier stacktrace } + bool isGitRunner = path.Contains("runner"); + if (isGitRunner) + Console.WriteLine("Is Git Runner!"); + bool encounteredLanguageIssue = false; for (int i = 0; i < json.Locales.Count; i++) { LocalesEntry locale = json.Locales[i]; - foreach (string langCode in json.Languages.Where(it => !locale.Translations.ContainsKey(it))) + foreach (string langCode in json.Languages.Where(lang => !locale.Translations.ContainsKey(lang))) { - locale.Translations.Add(langCode, string.Empty); - //Log.LogMessage(MessageImportance.High, $"Added '{langCode}' to Locale '{locale.ID}'"); + encounteredLanguageIssue = true; + + if (!isGitRunner) + { + locale.Translations.Add(langCode, string.Empty); + Console.WriteLine($"Added '{langCode}' to Locale '{locale.ID}'"); + } + else + { + Console.WriteLine($"Missing '{langCode}' in Locale '{locale.ID}'!"); + } + } + + foreach (string langCode in json.Languages.Where(lang => locale.Translations.ContainsKey(lang) && lang != "en_US" && locale.Translations[lang] == locale.Translations["en_US"])) + { + encounteredLanguageIssue = true; + + if (!isGitRunner) + { + locale.Translations[langCode] = string.Empty; + Console.WriteLine($"Lanugage '{langCode}' is a dupelicate of en_US in Locale '{locale.ID}'! Resetting it..."); + } + else + { + Console.WriteLine($"Lanugage '{langCode}' is a dupelicate of en_US in Locale '{locale.ID}'!"); + } } locale.Translations = locale.Translations.OrderBy(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value); json.Locales[i] = locale; } + if (isGitRunner && encounteredLanguageIssue) + throw new JsonException("1 or more locales are invalid!"); + JsonSerializerOptions jsonOptions = new JsonSerializerOptions() { WriteIndented = true, diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index d9c6c0b8e..6f98b522a 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -7,11 +7,10 @@ - - + /> \ No newline at end of file diff --git a/src/Ryujinx.BuildValidationTasks/program.cs b/src/Ryujinx.BuildValidationTasks/program.cs index 14dabc662..a74a9bb63 100644 --- a/src/Ryujinx.BuildValidationTasks/program.cs +++ b/src/Ryujinx.BuildValidationTasks/program.cs @@ -23,11 +23,12 @@ namespace Ryujinx.BuildValidationTasks throw new ArgumentException("Error: path is null or empty!"); if (!Path.Exists(args[0])) - throw new ArgumentException("Error: path does not exist!"); + throw new ArgumentException($"path {{{args[0]}}} does not exist!"); - Console.WriteLine(args[0]); - Console.WriteLine(Path.GetFullPath(args[0])); - LocalesValidationTask.Execute(args[0]); + if (!Directory.GetDirectories(Path.GetFullPath(args[0])).Contains($"{Path.GetFullPath(args[0])}src")) + throw new ArgumentException($"path {{{args[0]}}} is not a valid ryujinx project!"); + + LocalesValidationTask.Execute(Path.GetFullPath(args[0])); } } } From 1dbcaf1fd77d96b0a346f3c4db1990eefa557e65 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:57:07 +0100 Subject: [PATCH 26/43] missing quote, will still fail --- .../Ryujinx.BuildValidationTasks.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 6f98b522a..6a7b3950b 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -8,7 +8,7 @@ From 80377c15538dc033d7131bfd487671650aac9ee3 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:04:05 +0100 Subject: [PATCH 27/43] run with dotnet dll runner --- .../Ryujinx.BuildValidationTasks.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj index 6a7b3950b..d77f3f204 100644 --- a/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj +++ b/src/Ryujinx.BuildValidationTasks/Ryujinx.BuildValidationTasks.csproj @@ -8,7 +8,7 @@ From 8cb6767c7c8311acbea282510e594b197d53eef0 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:10:36 +0100 Subject: [PATCH 28/43] slash instead of backslash --- src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 75fb06f7a..438bebf0c 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -11,7 +11,7 @@ namespace Ryujinx.BuildValidationTasks { public static bool Execute(string projectPath) { - string path = projectPath + "src\\Ryujinx\\Assets\\locales.json"; + string path = projectPath + "src/Ryujinx/Assets/locales.json"; string data; using (StreamReader sr = new(path)) From f976c3c362db187eb5d671b4ea86b4708374f1ad Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:20:06 +0100 Subject: [PATCH 29/43] simplify --- .../LocalesValidationTask.cs | 4 ++++ src/Ryujinx.BuildValidationTasks/program.cs | 15 ++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 438bebf0c..b1a3ca7f4 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -11,6 +11,8 @@ namespace Ryujinx.BuildValidationTasks { public static bool Execute(string projectPath) { + Console.WriteLine("Running Locale Validation Task..."); + string path = projectPath + "src/Ryujinx/Assets/locales.json"; string data; @@ -91,6 +93,8 @@ namespace Ryujinx.BuildValidationTasks sw.Write(jsonString); } + Console.WriteLine("Finished Locale Validation Task!"); + return true; } diff --git a/src/Ryujinx.BuildValidationTasks/program.cs b/src/Ryujinx.BuildValidationTasks/program.cs index a74a9bb63..45e700939 100644 --- a/src/Ryujinx.BuildValidationTasks/program.cs +++ b/src/Ryujinx.BuildValidationTasks/program.cs @@ -19,16 +19,21 @@ namespace Ryujinx.BuildValidationTasks else throw new ArgumentException("Error: too many arguments!"); } - if (string.IsNullOrEmpty(args[0])) + + string path = args[0]; + + if (string.IsNullOrEmpty(path)) throw new ArgumentException("Error: path is null or empty!"); if (!Path.Exists(args[0])) - throw new ArgumentException($"path {{{args[0]}}} does not exist!"); + throw new ArgumentException($"path {{{path}}} does not exist!"); - if (!Directory.GetDirectories(Path.GetFullPath(args[0])).Contains($"{Path.GetFullPath(args[0])}src")) - throw new ArgumentException($"path {{{args[0]}}} is not a valid ryujinx project!"); + path = Path.GetFullPath(path); - LocalesValidationTask.Execute(Path.GetFullPath(args[0])); + if (!Directory.GetDirectories(path).Contains($"{path}src")) + throw new ArgumentException($"path {{{path}}} is not a valid ryujinx project!"); + + LocalesValidationTask.Execute(path); } } } From d39b3a58643e09a6926d32a07d9ea38c4e9b5341 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:20:29 +0100 Subject: [PATCH 30/43] fix locales.json to comply with validation --- src/Ryujinx/Assets/locales.json | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index cc140c68e..68aceaf51 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -1042,7 +1042,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "720p", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -1066,7 +1066,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "1080p", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -2122,7 +2122,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "ExeFS", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -2170,7 +2170,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "RomFS", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -2218,7 +2218,7 @@ "it_IT": "", "ja_JP": "ロゴ", "ko_KR": "로고", - "no_NO": "Logo", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Логотип", @@ -3130,7 +3130,7 @@ "it_IT": "Sistema", "ja_JP": "システム", "ko_KR": "시스템", - "no_NO": "System", + "no_NO": "", "pl_PL": "", "pt_BR": "Sistema", "ru_RU": "Система", @@ -3202,7 +3202,7 @@ "it_IT": "Giappone", "ja_JP": "日本", "ko_KR": "일본", - "no_NO": "Japan", + "no_NO": "", "pl_PL": "Japonia", "pt_BR": "Japão", "ru_RU": "Япония", @@ -3226,7 +3226,7 @@ "it_IT": "Stati Uniti d'America", "ja_JP": "アメリカ", "ko_KR": "미국", - "no_NO": "USA", + "no_NO": "", "pl_PL": "Stany Zjednoczone", "pt_BR": "EUA", "ru_RU": "США", @@ -3274,7 +3274,7 @@ "it_IT": "", "ja_JP": "オーストラリア", "ko_KR": "호주", - "no_NO": "Australia", + "no_NO": "", "pl_PL": "", "pt_BR": "Austrália", "ru_RU": "Австралия", @@ -3322,7 +3322,7 @@ "it_IT": "Corea", "ja_JP": "韓国", "ko_KR": "한국", - "no_NO": "Korea", + "no_NO": "", "pl_PL": "", "pt_BR": "Coreia", "ru_RU": "Корея", @@ -3346,7 +3346,7 @@ "it_IT": "", "ja_JP": "台湾", "ko_KR": "대만", - "no_NO": "Taiwan", + "no_NO": "", "pl_PL": "Tajwan", "pt_BR": "", "ru_RU": "Тайвань", @@ -3970,7 +3970,7 @@ "it_IT": "", "ja_JP": "ダミー", "ko_KR": "더미", - "no_NO": "Dummy", + "no_NO": "", "pl_PL": "Atrapa", "pt_BR": "Nenhuma", "ru_RU": "Без звука", @@ -3994,7 +3994,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "OpenAL", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4042,7 +4042,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "SDL2", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4061,12 +4061,12 @@ "el_GR": "Μικροδιορθώσεις", "en_US": "Hacks", "es_ES": "", - "fr_FR": "Hacks", + "fr_FR": "", "he_IL": "האצות", "it_IT": "Espedienti", "ja_JP": "ハック", "ko_KR": "핵", - "no_NO": "Hacks", + "no_NO": "", "pl_PL": "Hacki", "pt_BR": "", "ru_RU": "Хаки", @@ -4402,7 +4402,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배", - "no_NO": "2x", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4426,7 +4426,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "4배", - "no_NO": "4x", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4450,7 +4450,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "8배", - "no_NO": "8x", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4474,7 +4474,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "16배", - "no_NO": "16x", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4570,7 +4570,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배(1440p/2160p)", - "no_NO": "2x (1440p/2160p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4594,7 +4594,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "3배(2160p/3240p)", - "no_NO": "3x (2160p/3240p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4666,7 +4666,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "4:3", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4690,7 +4690,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "16:9", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4714,7 +4714,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "16:10", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4738,7 +4738,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "21:9", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4762,7 +4762,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "32:9", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4858,7 +4858,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -4882,7 +4882,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -5434,7 +5434,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "확인", - "no_NO": "OK", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Ок", @@ -6106,7 +6106,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "A", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -6130,7 +6130,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "B", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -6154,7 +6154,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "X", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -6178,7 +6178,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "Y", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -18658,7 +18658,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "XCI 파일 트리머", - "no_NO": "XCI File Trimmer", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -21365,7 +21365,7 @@ "el_GR": "", "en_US": "Switch", "es_ES": "", - "fr_FR": "Switch", + "fr_FR": "", "he_IL": "", "it_IT": "", "ja_JP": "", From 02ff76f89aee451086bd0110434e76642b73a753 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:26:50 +0100 Subject: [PATCH 31/43] revert packages.props --- Directory.Packages.props | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index b5e4b4aa7..07fc8cc28 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,13 +10,12 @@ - - + - - + + @@ -55,9 +54,6 @@ - - - - \ No newline at end of file + From 6fb58a611ee233c042586bf9977198bdecf21c44 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:28:34 +0100 Subject: [PATCH 32/43] revert .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index ace5554f4..9a192926f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,9 +19,6 @@ build/ AppDir/ publish_appimage/ -# Validation project assemblies folder -/src/Ryujinx.BuildValidationTasks/temp_assemblies/ - # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets !packages/*/build/ From fdece62f880b9ab900bf0e9f523518d8140db529 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:32:14 +0100 Subject: [PATCH 33/43] fix matching windows runner --- src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index b1a3ca7f4..8f6b71de7 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -34,7 +34,7 @@ namespace Ryujinx.BuildValidationTasks throw new JsonException(e.Message); //shorter and easier stacktrace } - bool isGitRunner = path.Contains("runner"); + bool isGitRunner = path.Contains("runner") || path.Contains("D:\\a\\Ryujinx\\Ryujinx"); if (isGitRunner) Console.WriteLine("Is Git Runner!"); bool encounteredLanguageIssue = false; From 2a38f1bbbff0a596209952d9222f9f764f1df807 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:34:43 +0100 Subject: [PATCH 34/43] only log runtime if a runtime is set --- src/Ryujinx/Ryujinx.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index 57d3c72b1..a2315f9fc 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -14,7 +14,8 @@ - + + From aabb7860169a340b3248a982eaa4366045c68bfc Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Thu, 26 Dec 2024 23:42:53 +0100 Subject: [PATCH 35/43] fix spelling and names --- .../LocalesValidationTask.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 8f6b71de7..d4898ace6 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -37,7 +37,7 @@ namespace Ryujinx.BuildValidationTasks bool isGitRunner = path.Contains("runner") || path.Contains("D:\\a\\Ryujinx\\Ryujinx"); if (isGitRunner) Console.WriteLine("Is Git Runner!"); - bool encounteredLanguageIssue = false; + bool encounteredIssue = false; for (int i = 0; i < json.Locales.Count; i++) { @@ -45,7 +45,7 @@ namespace Ryujinx.BuildValidationTasks foreach (string langCode in json.Languages.Where(lang => !locale.Translations.ContainsKey(lang))) { - encounteredLanguageIssue = true; + encounteredIssue = true; if (!isGitRunner) { @@ -60,16 +60,16 @@ namespace Ryujinx.BuildValidationTasks foreach (string langCode in json.Languages.Where(lang => locale.Translations.ContainsKey(lang) && lang != "en_US" && locale.Translations[lang] == locale.Translations["en_US"])) { - encounteredLanguageIssue = true; + encounteredIssue = true; if (!isGitRunner) { locale.Translations[langCode] = string.Empty; - Console.WriteLine($"Lanugage '{langCode}' is a dupelicate of en_US in Locale '{locale.ID}'! Resetting it..."); + Console.WriteLine($"Lanugage '{langCode}' is a duplicate of en_US in Locale '{locale.ID}'! Resetting it..."); } else { - Console.WriteLine($"Lanugage '{langCode}' is a dupelicate of en_US in Locale '{locale.ID}'!"); + Console.WriteLine($"Lanugage '{langCode}' is a duplicate of en_US in Locale '{locale.ID}'!"); } } @@ -77,7 +77,7 @@ namespace Ryujinx.BuildValidationTasks json.Locales[i] = locale; } - if (isGitRunner && encounteredLanguageIssue) + if (isGitRunner && encounteredIssue) throw new JsonException("1 or more locales are invalid!"); JsonSerializerOptions jsonOptions = new JsonSerializerOptions() From aa806b1032caa171f329cac50f72ded661b53395 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Thu, 26 Dec 2024 21:07:29 -0600 Subject: [PATCH 36/43] Rename program.cs to Program.cs --- src/Ryujinx.BuildValidationTasks/{program.cs => Program.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Ryujinx.BuildValidationTasks/{program.cs => Program.cs} (100%) diff --git a/src/Ryujinx.BuildValidationTasks/program.cs b/src/Ryujinx.BuildValidationTasks/Program.cs similarity index 100% rename from src/Ryujinx.BuildValidationTasks/program.cs rename to src/Ryujinx.BuildValidationTasks/Program.cs From e2e85022788afbeed77cfd3405e257a8761cac1b Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Fri, 27 Dec 2024 12:10:50 +0100 Subject: [PATCH 37/43] force line endings to use LF --- src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index d4898ace6..52b90bd33 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -83,6 +83,7 @@ namespace Ryujinx.BuildValidationTasks JsonSerializerOptions jsonOptions = new JsonSerializerOptions() { WriteIndented = true, + NewLine = "\n", Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; From 4b84c5d240aa1c98af56cbad1f2a4d64c09e2f90 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sat, 28 Dec 2024 01:39:03 +0100 Subject: [PATCH 38/43] fix duplicates --- src/Ryujinx/Assets/locales.json | 174 ++++++++++++++++---------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 6b7fddb83..4b73878d8 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -1089,7 +1089,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "720p", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -1114,7 +1114,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "1080p", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -1139,7 +1139,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "1440p", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -1164,7 +1164,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "2160p", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -1564,7 +1564,7 @@ "pl_PL": "Wersja", "pt_BR": "Versão", "ru_RU": "Версия", - "sv_SE": "Version", + "sv_SE": "", "th_TH": "เวอร์ชั่น", "tr_TR": "Sürüm", "uk_UA": "Версія", @@ -2214,7 +2214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "ExeFS", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -2264,7 +2264,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "RomFS", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -3264,7 +3264,7 @@ "pl_PL": "", "pt_BR": "Sistema", "ru_RU": "Система", - "sv_SE": "System", + "sv_SE": "", "th_TH": "ระบบ", "tr_TR": "Sistem", "uk_UA": "Система", @@ -3339,7 +3339,7 @@ "pl_PL": "Japonia", "pt_BR": "Japão", "ru_RU": "Япония", - "sv_SE": "Japan", + "sv_SE": "", "th_TH": "ญี่ปุ่น", "tr_TR": "Japonya", "uk_UA": "Японія", @@ -3364,7 +3364,7 @@ "pl_PL": "Stany Zjednoczone", "pt_BR": "EUA", "ru_RU": "США", - "sv_SE": "USA", + "sv_SE": "", "th_TH": "สหรัฐอเมริกา", "tr_TR": "ABD", "uk_UA": "США", @@ -3464,7 +3464,7 @@ "pl_PL": "", "pt_BR": "Coreia", "ru_RU": "Корея", - "sv_SE": "Korea", + "sv_SE": "", "th_TH": "เกาหลี", "tr_TR": "Kore", "uk_UA": "Корея", @@ -3489,7 +3489,7 @@ "pl_PL": "Tajwan", "pt_BR": "", "ru_RU": "Тайвань", - "sv_SE": "Taiwan", + "sv_SE": "", "th_TH": "ไต้หวัน", "tr_TR": "Tayvan", "uk_UA": "Тайвань", @@ -4139,7 +4139,7 @@ "pl_PL": "Atrapa", "pt_BR": "Nenhuma", "ru_RU": "Без звука", - "sv_SE": "Dummy", + "sv_SE": "", "th_TH": "", "tr_TR": "Yapay", "uk_UA": "", @@ -4164,7 +4164,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "OpenAL", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4189,7 +4189,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SoundIO", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4214,7 +4214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SDL2", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4314,7 +4314,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "4GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "4Гб", @@ -4339,7 +4339,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "6GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "6Гб", @@ -4364,7 +4364,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "8GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "8Гб", @@ -4389,7 +4389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "12GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "12Гб", @@ -4589,7 +4589,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "2x", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4614,7 +4614,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "4x", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4639,7 +4639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "8x", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4664,7 +4664,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "16x", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4764,7 +4764,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "2x (1440p/2160p)", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4789,7 +4789,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "3x (2160p/3240p)", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4864,7 +4864,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "4:3", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4889,7 +4889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "16:9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4914,7 +4914,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "16:10", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4939,7 +4939,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "21:9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4964,7 +4964,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "32:9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6114,7 +6114,7 @@ "pl_PL": "Pro Kontroler", "pt_BR": "", "ru_RU": "", - "sv_SE": "Pro Controller", + "sv_SE": "", "th_TH": "โปรคอนโทรลเลอร์", "tr_TR": "Profesyonel Kumanda", "uk_UA": "Контролер Pro", @@ -6364,7 +6364,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "A", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6389,7 +6389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "B", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6414,7 +6414,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "X", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6439,7 +6439,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Y", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6464,7 +6464,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "+", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -6489,7 +6489,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "-", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7039,7 +7039,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "L", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7064,7 +7064,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "R", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7089,7 +7089,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "ZL", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7114,7 +7114,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "ZR", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7139,7 +7139,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SL", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7164,7 +7164,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SR", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7189,7 +7189,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SL", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -7214,7 +7214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "SR", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8089,7 +8089,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Enter", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8114,7 +8114,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Escape", + "sv_SE": "", "th_TH": "", "tr_TR": "Esc", "uk_UA": "", @@ -8164,7 +8164,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Tab", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8189,7 +8189,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Backspace", + "sv_SE": "", "th_TH": "", "tr_TR": "Geri tuşu", "uk_UA": "", @@ -8214,7 +8214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Insert", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8239,7 +8239,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Delete", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8264,7 +8264,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Page Up", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8289,7 +8289,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Page Down", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8314,7 +8314,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Home", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8339,7 +8339,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "End", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8364,7 +8364,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Caps Lock", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8389,7 +8389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Scroll Lock", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8414,7 +8414,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Print Screen", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8439,7 +8439,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Pause", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8464,7 +8464,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Num Lock", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8514,7 +8514,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 0", - "sv_SE": "Keypad 0", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8539,7 +8539,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 1", - "sv_SE": "Keypad 1", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8564,7 +8564,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 2", - "sv_SE": "Keypad 2", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8589,7 +8589,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 3", - "sv_SE": "Keypad 3", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8614,7 +8614,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 4", - "sv_SE": "Keypad 4", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8639,7 +8639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 5", - "sv_SE": "Keypad 5", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8664,7 +8664,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 6", - "sv_SE": "Keypad 6", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8689,7 +8689,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 7", - "sv_SE": "Keypad 7", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8714,7 +8714,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 8", - "sv_SE": "Keypad 8", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8739,7 +8739,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 9", - "sv_SE": "Keypad 9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8889,7 +8889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Enter (блок цифр)", - "sv_SE": "Keypad Enter", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -9789,7 +9789,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Кнопка Xbox", - "sv_SE": "Guide", + "sv_SE": "", "th_TH": "", "tr_TR": "Rehber", "uk_UA": "", @@ -14289,7 +14289,7 @@ "pl_PL": "Seria Amiibo", "pt_BR": "Franquia Amiibo", "ru_RU": "Серия Amiibo", - "sv_SE": "Amiibo Series", + "sv_SE": "", "th_TH": "", "tr_TR": "Amiibo Serisi", "uk_UA": "Серія Amiibo", @@ -17426,8 +17426,8 @@ "ID": "TitleUpdateVersionLabel", "Translations": { "ar_SA": "الإصدار: {0}", - "de_DE": "Version {0} - {1}", - "el_GR": "Version {0} - {1}", + "de_DE": "", + "el_GR": "", "en_US": "Version {0} - {1}", "es_ES": "Versión {0} - {1}", "fr_FR": "", @@ -17438,8 +17438,8 @@ "no_NO": "Versjon {0} - {1}", "pl_PL": "Wersja {0} - {1}", "pt_BR": "Versão {0} - {1}", - "ru_RU": "Version {0} - {1}", - "sv_SE": "Version {0} - {1}", + "ru_RU": "", + "sv_SE": "", "th_TH": "เวอร์ชั่น {0} - {1}", "tr_TR": "Sürüm {0} - {1}", "uk_UA": "Версія {0} - {1}", @@ -17664,7 +17664,7 @@ "pl_PL": "", "pt_BR": "Ryujinx - Informação", "ru_RU": "Ryujinx - Информация", - "sv_SE": "Ryujinx - Info", + "sv_SE": "", "th_TH": "Ryujinx – ข้อมูล", "tr_TR": "Ryujinx - Bilgi", "uk_UA": "Ryujin x - Інформація", @@ -18814,7 +18814,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Amiibo", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -19639,7 +19639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "{0:n0} Mb", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "{0:n0} Мб", @@ -20914,7 +20914,7 @@ "pl_PL": "Głoś", "pt_BR": "", "ru_RU": "Громкость", - "sv_SE": "Vol", + "sv_SE": "", "th_TH": "ระดับเสียง", "tr_TR": "Ses", "uk_UA": "Гуч.", @@ -21389,7 +21389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "FSR", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21889,7 +21889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "ldn_mitm", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21914,7 +21914,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "RyuLDN", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -22214,7 +22214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "VSync:", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "Вертикальна синхронізація (VSync):", @@ -22264,7 +22264,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "Switch", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", From 43f6e4a8730b4b6588eef1088dcb623774b4532c Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sat, 28 Dec 2024 01:58:35 +0100 Subject: [PATCH 39/43] remove dupelicates --- src/Ryujinx/Assets/locales.json | 302 ++++++++++++++++---------------- 1 file changed, 151 insertions(+), 151 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index fc77cf458..9d2abbfbe 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -1564,7 +1564,7 @@ "pl_PL": "Wersja", "pt_BR": "Versão", "ru_RU": "Версия", - "sv_SE": "Version", + "sv_SE": "", "th_TH": "เวอร์ชั่น", "tr_TR": "Sürüm", "uk_UA": "Версія", @@ -2213,8 +2213,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "ExeFS", - "sv_SE": "ExeFS", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -2263,8 +2263,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "RomFS", - "sv_SE": "RomFS", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -2310,7 +2310,7 @@ "it_IT": "", "ja_JP": "ロゴ", "ko_KR": "로고", - "no_NO": "Logo", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Лого", @@ -3260,11 +3260,11 @@ "it_IT": "Sistema", "ja_JP": "システム", "ko_KR": "시스템", - "no_NO": "System", + "no_NO": "", "pl_PL": "", "pt_BR": "Sistema", "ru_RU": "Система", - "sv_SE": "System", + "sv_SE": "", "th_TH": "ระบบ", "tr_TR": "Sistem", "uk_UA": "Система", @@ -3335,11 +3335,11 @@ "it_IT": "Giappone", "ja_JP": "日本", "ko_KR": "일본", - "no_NO": "Japan", + "no_NO": "", "pl_PL": "Japonia", "pt_BR": "Japão", "ru_RU": "Япония", - "sv_SE": "Japan", + "sv_SE": "", "th_TH": "ญี่ปุ่น", "tr_TR": "Japonya", "uk_UA": "Японія", @@ -3360,11 +3360,11 @@ "it_IT": "Stati Uniti d'America", "ja_JP": "アメリカ", "ko_KR": "미국", - "no_NO": "USA", + "no_NO": "", "pl_PL": "Stany Zjednoczone", "pt_BR": "EUA", "ru_RU": "США", - "sv_SE": "USA", + "sv_SE": "", "th_TH": "สหรัฐอเมริกา", "tr_TR": "ABD", "uk_UA": "США", @@ -3410,7 +3410,7 @@ "it_IT": "", "ja_JP": "オーストラリア", "ko_KR": "호주", - "no_NO": "Australia", + "no_NO": "", "pl_PL": "", "pt_BR": "Austrália", "ru_RU": "Австралия", @@ -3460,11 +3460,11 @@ "it_IT": "Corea", "ja_JP": "韓国", "ko_KR": "한국", - "no_NO": "Korea", + "no_NO": "", "pl_PL": "", "pt_BR": "Coreia", "ru_RU": "Корея", - "sv_SE": "Korea", + "sv_SE": "", "th_TH": "เกาหลี", "tr_TR": "Kore", "uk_UA": "Корея", @@ -3485,11 +3485,11 @@ "it_IT": "", "ja_JP": "台湾", "ko_KR": "대만", - "no_NO": "Taiwan", + "no_NO": "", "pl_PL": "Tajwan", "pt_BR": "", "ru_RU": "Тайвань", - "sv_SE": "Taiwan", + "sv_SE": "", "th_TH": "ไต้หวัน", "tr_TR": "Tayvan", "uk_UA": "Тайвань", @@ -3955,7 +3955,7 @@ "el_GR": "Ζώνη Ώρας Συστήματος:", "en_US": "System Time Zone:", "es_ES": "Zona horaria del sistema:", - "fr_FR": "Fuseau horaire du système :", + "fr_FR": "Fuseau horaire du système\u00A0:", "he_IL": "אזור זמן מערכת:", "it_IT": "Fuso orario del sistema:", "ja_JP": "タイムゾーン:", @@ -4135,11 +4135,11 @@ "it_IT": "", "ja_JP": "ダミー", "ko_KR": "더미", - "no_NO": "Dummy", + "no_NO": "", "pl_PL": "Atrapa", "pt_BR": "Nenhuma", "ru_RU": "Без звука", - "sv_SE": "Dummy", + "sv_SE": "", "th_TH": "", "tr_TR": "Yapay", "uk_UA": "", @@ -4163,8 +4163,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "OpenAL", - "sv_SE": "OpenAL", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4188,8 +4188,8 @@ "no_NO": "Lyd Inn/Ut", "pl_PL": "", "pt_BR": "", - "ru_RU": "SoundIO", - "sv_SE": "SoundIO", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4213,8 +4213,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "SDL2", - "sv_SE": "SDL2", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4230,12 +4230,12 @@ "el_GR": "Μικροδιορθώσεις", "en_US": "Hacks", "es_ES": "", - "fr_FR": "Hacks", + "fr_FR": "", "he_IL": "האצות", "it_IT": "Espedienti", "ja_JP": "ハック", "ko_KR": "핵", - "no_NO": "Hacks", + "no_NO": "", "pl_PL": "Hacki", "pt_BR": "", "ru_RU": "Хаки", @@ -4314,7 +4314,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "4ГиБ", - "sv_SE": "4GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "4Гб", @@ -4339,7 +4339,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "6ГиБ", - "sv_SE": "6GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "6Гб", @@ -4364,7 +4364,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "8ГиБ", - "sv_SE": "8GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "8Гб", @@ -4389,7 +4389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "12ГиБ", - "sv_SE": "12GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "12Гб", @@ -4585,11 +4585,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배", - "no_NO": "2x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2x", - "sv_SE": "2x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4610,11 +4610,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "4배", - "no_NO": "4x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4x", - "sv_SE": "4x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4635,11 +4635,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "8배", - "no_NO": "8x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "8x", - "sv_SE": "8x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4660,11 +4660,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "16배", - "no_NO": "16x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16x", - "sv_SE": "16x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4760,11 +4760,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배(1440p/2160p)", - "no_NO": "2x (1440p/2160p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2x (1440p/2160p)", - "sv_SE": "2x (1440p/2160p)", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4785,11 +4785,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "3배(2160p/3240p)", - "no_NO": "3x (2160p/3240p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "3x (2160p/3240p)", - "sv_SE": "3x (2160p/3240p)", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4863,8 +4863,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4:3", - "sv_SE": "4:3", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4888,8 +4888,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16:9", - "sv_SE": "16:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4913,8 +4913,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16:10", - "sv_SE": "16:10", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4938,8 +4938,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "21:9", - "sv_SE": "21:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4960,11 +4960,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "32:9", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "32:9", - "sv_SE": "32:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -5060,7 +5060,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -5085,7 +5085,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -6113,8 +6113,8 @@ "no_NO": "", "pl_PL": "Pro Kontroler", "pt_BR": "", - "ru_RU": "Pro Controller", - "sv_SE": "Pro Controller", + "ru_RU": "", + "sv_SE": "", "th_TH": "โปรคอนโทรลเลอร์", "tr_TR": "Profesyonel Kumanda", "uk_UA": "Контролер Pro", @@ -8088,8 +8088,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Enter", - "sv_SE": "Enter", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8114,7 +8114,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Esc", - "sv_SE": "Escape", + "sv_SE": "", "th_TH": "", "tr_TR": "Esc", "uk_UA": "", @@ -8163,8 +8163,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Tab", - "sv_SE": "Tab", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8188,8 +8188,8 @@ "no_NO": "Tilbaketast", "pl_PL": "", "pt_BR": "", - "ru_RU": "Backspace", - "sv_SE": "Backspace", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "Geri tuşu", "uk_UA": "", @@ -8213,8 +8213,8 @@ "no_NO": "Sett inn", "pl_PL": "", "pt_BR": "", - "ru_RU": "Insert", - "sv_SE": "Insert", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8238,8 +8238,8 @@ "no_NO": "Slett", "pl_PL": "", "pt_BR": "", - "ru_RU": "Delete", - "sv_SE": "Delete", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8263,8 +8263,8 @@ "no_NO": "Side opp", "pl_PL": "", "pt_BR": "", - "ru_RU": "Page Up", - "sv_SE": "Page Up", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8288,8 +8288,8 @@ "no_NO": "Side ned", "pl_PL": "", "pt_BR": "", - "ru_RU": "Page Down", - "sv_SE": "Page Down", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8313,8 +8313,8 @@ "no_NO": "Hjem", "pl_PL": "", "pt_BR": "", - "ru_RU": "Home", - "sv_SE": "Home", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8338,8 +8338,8 @@ "no_NO": "Avslutt", "pl_PL": "", "pt_BR": "", - "ru_RU": "End", - "sv_SE": "End", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8363,8 +8363,8 @@ "no_NO": "Skiftelås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Caps Lock", - "sv_SE": "Caps Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8388,8 +8388,8 @@ "no_NO": "Rullelås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Scroll Lock", - "sv_SE": "Scroll Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8413,8 +8413,8 @@ "no_NO": "Skjermbilde", "pl_PL": "", "pt_BR": "", - "ru_RU": "Print Screen", - "sv_SE": "Print Screen", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8438,8 +8438,8 @@ "no_NO": "Stans midlertidig", "pl_PL": "", "pt_BR": "", - "ru_RU": "Pause", - "sv_SE": "Pause", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8463,8 +8463,8 @@ "no_NO": "Numerisk Lås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Num Lock", - "sv_SE": "Num Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8514,7 +8514,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 0", - "sv_SE": "Keypad 0", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8539,7 +8539,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 1", - "sv_SE": "Keypad 1", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8564,7 +8564,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 2", - "sv_SE": "Keypad 2", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8589,7 +8589,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 3", - "sv_SE": "Keypad 3", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8614,7 +8614,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 4", - "sv_SE": "Keypad 4", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8639,7 +8639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 5", - "sv_SE": "Keypad 5", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8664,7 +8664,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 6", - "sv_SE": "Keypad 6", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8689,7 +8689,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 7", - "sv_SE": "Keypad 7", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8714,7 +8714,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 8", - "sv_SE": "Keypad 8", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8739,7 +8739,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 9", - "sv_SE": "Keypad 9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8889,7 +8889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Enter (блок цифр)", - "sv_SE": "Keypad Enter", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8913,7 +8913,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "0", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8938,7 +8938,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "1", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8963,7 +8963,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8988,7 +8988,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "3", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9013,7 +9013,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9038,7 +9038,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "5", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9063,7 +9063,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "6", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9088,7 +9088,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "7", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9113,7 +9113,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "8", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9138,7 +9138,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "9", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9163,7 +9163,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "~", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9188,7 +9188,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "`", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9213,7 +9213,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "-", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9238,7 +9238,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "+", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9263,7 +9263,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "[", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9288,7 +9288,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "]", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9313,7 +9313,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ";", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9363,7 +9363,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ",", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9388,7 +9388,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ".", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9413,7 +9413,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "/", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9738,7 +9738,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "-", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9763,7 +9763,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "+", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "4", @@ -9789,7 +9789,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Кнопка меню", - "sv_SE": "Guide", + "sv_SE": "", "th_TH": "", "tr_TR": "Rehber", "uk_UA": "", @@ -12438,7 +12438,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "{0}: {1}", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -14289,7 +14289,7 @@ "pl_PL": "Seria Amiibo", "pt_BR": "Franquia Amiibo", "ru_RU": "Серия Amiibo", - "sv_SE": "Amiibo Series", + "sv_SE": "", "th_TH": "", "tr_TR": "Amiibo Serisi", "uk_UA": "Серія Amiibo", @@ -15755,7 +15755,7 @@ "el_GR": "", "en_US": "Aspect Ratio applied to the renderer window.\n\nOnly change this if you're using an aspect ratio mod for your game, otherwise the graphics will be stretched.\n\nLeave on 16:9 if unsure.", "es_ES": "Relación de aspecto aplicada a la ventana del renderizador.\n\nSolamente modificar esto si estás utilizando un mod de relación de aspecto para su juego, en cualquier otro caso los gráficos se estirarán.\n\nDejar en 16:9 si no sabe que hacer.", - "fr_FR": "Format d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", + "fr_FR": "Format\u00A0d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format\u00A0d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", "he_IL": "", "it_IT": "Proporzioni dello schermo applicate alla finestra di renderizzazione.\n\nCambialo solo se stai usando una mod di proporzioni per il tuo gioco, altrimenti la grafica verrà allungata.\n\nLasciare il 16:9 se incerto.", "ja_JP": "レンダリングウインドウに適用するアスペクト比です.\n\nゲームにアスペクト比を変更する mod を使用している場合のみ変更してください.\n\nわからない場合は16:9のままにしておいてください.\n", @@ -17426,8 +17426,8 @@ "ID": "TitleUpdateVersionLabel", "Translations": { "ar_SA": "الإصدار: {0}", - "de_DE": "Version {0} - {1}", - "el_GR": "Version {0} - {1}", + "de_DE": "", + "el_GR": "", "en_US": "Version {0} - {1}", "es_ES": "Versión {0} - {1}", "fr_FR": "", @@ -17439,7 +17439,7 @@ "pl_PL": "Wersja {0} - {1}", "pt_BR": "Versão {0} - {1}", "ru_RU": "Версия {0} - {1}", - "sv_SE": "Version {0} - {1}", + "sv_SE": "", "th_TH": "เวอร์ชั่น {0} - {1}", "tr_TR": "Sürüm {0} - {1}", "uk_UA": "Версія {0} - {1}", @@ -17664,7 +17664,7 @@ "pl_PL": "", "pt_BR": "Ryujinx - Informação", "ru_RU": "Ryujinx - Информация", - "sv_SE": "Ryujinx - Info", + "sv_SE": "", "th_TH": "Ryujinx – ข้อมูล", "tr_TR": "Ryujinx - Bilgi", "uk_UA": "Ryujin x - Інформація", @@ -18813,8 +18813,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Amiibo", - "sv_SE": "Amiibo", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -19435,7 +19435,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "XCI 파일 트리머", - "no_NO": "XCI File Trimmer", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Уменьшение размера XCI файлов", @@ -19639,7 +19639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "{0:n0} Мб", - "sv_SE": "{0:n0} Mb", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "{0:n0} Мб", @@ -20914,7 +20914,7 @@ "pl_PL": "Głoś", "pt_BR": "", "ru_RU": "Громкость", - "sv_SE": "Vol", + "sv_SE": "", "th_TH": "ระดับเสียง", "tr_TR": "Ses", "uk_UA": "Гуч.", @@ -21055,7 +21055,7 @@ "el_GR": "Όνομα", "en_US": "Name", "es_ES": "Nombre", - "fr_FR": "Nom ", + "fr_FR": "Nom\u00A0", "he_IL": "שם", "it_IT": "Nome", "ja_JP": "名称", @@ -21388,8 +21388,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "FSR", - "sv_SE": "FSR", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21888,8 +21888,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "ldn_mitm", - "sv_SE": "ldn_mitm", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21913,8 +21913,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "RyuLDN", - "sv_SE": "RyuLDN", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -22214,7 +22214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Вертикальная синхронизация:", - "sv_SE": "VSync:", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "Вертикальна синхронізація (VSync):", @@ -22255,7 +22255,7 @@ "el_GR": "", "en_US": "Switch", "es_ES": "", - "fr_FR": "Switch", + "fr_FR": "", "he_IL": "", "it_IT": "", "ja_JP": "", @@ -22264,7 +22264,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Консоль", - "sv_SE": "Switch", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -22598,4 +22598,4 @@ } } ] -} \ No newline at end of file +} From 4e56b1493fd453500e13ed919cc8d122f7326f46 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sat, 28 Dec 2024 02:00:24 +0100 Subject: [PATCH 40/43] validate that line endings are LF on build if running on git it will now fail if the file contains CRLF line endings and tell the user to run a local build to fix it. --- src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 4 ++++ src/Ryujinx/Assets/locales.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 52b90bd33..3c9e5925f 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -37,6 +37,10 @@ namespace Ryujinx.BuildValidationTasks bool isGitRunner = path.Contains("runner") || path.Contains("D:\\a\\Ryujinx\\Ryujinx"); if (isGitRunner) Console.WriteLine("Is Git Runner!"); + + if (isGitRunner && data.Contains("\r\n")) + throw new FormatException("locales.json is using CRLF line endings! It should be using LF line endings, build locally to fix..."); + bool encounteredIssue = false; for (int i = 0; i < json.Locales.Count; i++) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 9d2abbfbe..5dc387730 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -22598,4 +22598,4 @@ } } ] -} +} \ No newline at end of file From 8efefeaacadf84f767599b5259b6a3e83edc928d Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sat, 28 Dec 2024 02:16:17 +0100 Subject: [PATCH 41/43] slight refactor isGitRunner is now a variable passed to all tasks. Validation project can now accept more arguments, only the first argument is used at the moment. Execute is no longer static, and you can now pass extra data to the task constructor if needed. --- .../LocalesValidationTask.cs | 11 ++++----- src/Ryujinx.BuildValidationTasks/Program.cs | 23 ++++++++++--------- .../ValidationTask.cs | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index 3c9e5925f..05eaee539 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -9,7 +9,9 @@ namespace Ryujinx.BuildValidationTasks { public class LocalesValidationTask : ValidationTask { - public static bool Execute(string projectPath) + public LocalesValidationTask() { } + + public bool Execute(string projectPath, bool isGitRunner) { Console.WriteLine("Running Locale Validation Task..."); @@ -23,6 +25,8 @@ namespace Ryujinx.BuildValidationTasks LocalesJson json; + if (isGitRunner && data.Contains("\r\n")) + throw new FormatException("locales.json is using CRLF line endings! It should be using LF line endings, build locally to fix..."); try { @@ -34,12 +38,7 @@ namespace Ryujinx.BuildValidationTasks throw new JsonException(e.Message); //shorter and easier stacktrace } - bool isGitRunner = path.Contains("runner") || path.Contains("D:\\a\\Ryujinx\\Ryujinx"); - if (isGitRunner) - Console.WriteLine("Is Git Runner!"); - if (isGitRunner && data.Contains("\r\n")) - throw new FormatException("locales.json is using CRLF line endings! It should be using LF line endings, build locally to fix..."); bool encounteredIssue = false; diff --git a/src/Ryujinx.BuildValidationTasks/Program.cs b/src/Ryujinx.BuildValidationTasks/Program.cs index 45e700939..5245c1083 100644 --- a/src/Ryujinx.BuildValidationTasks/Program.cs +++ b/src/Ryujinx.BuildValidationTasks/Program.cs @@ -12,28 +12,29 @@ namespace Ryujinx.BuildValidationTasks static void Main(string[] args) { // Display the number of command line arguments. - if (args.Length != 1) - { - if (args.Length == 0) - throw new ArgumentException("Error: too few arguments!"); - else - throw new ArgumentException("Error: too many arguments!"); - } + if (args.Length == 0) + throw new ArgumentException("Error: too few arguments!"); string path = args[0]; if (string.IsNullOrEmpty(path)) throw new ArgumentException("Error: path is null or empty!"); - if (!Path.Exists(args[0])) - throw new ArgumentException($"path {{{path}}} does not exist!"); + if (!Path.Exists(path)) + throw new FileLoadException($"path {{{path}}} does not exist!"); path = Path.GetFullPath(path); if (!Directory.GetDirectories(path).Contains($"{path}src")) - throw new ArgumentException($"path {{{path}}} is not a valid ryujinx project!"); + throw new FileLoadException($"path {{{path}}} is not a valid ryujinx project!"); - LocalesValidationTask.Execute(path); + bool isGitRunner = path.Contains("runner") || path.Contains("D:\\a\\Ryujinx\\Ryujinx"); + if (isGitRunner) + Console.WriteLine("Is Git Runner!"); + + // Run tasks + // Pass extra info needed in the task constructors + new LocalesValidationTask().Execute(path, isGitRunner); } } } diff --git a/src/Ryujinx.BuildValidationTasks/ValidationTask.cs b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs index 9577fa973..091cb6825 100644 --- a/src/Ryujinx.BuildValidationTasks/ValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs @@ -8,6 +8,6 @@ namespace Ryujinx.BuildValidationTasks { public interface ValidationTask { - public static bool Execute(string projectPath) { return true; } + public bool Execute(string projectPath, bool isGitRunner); } } From e9b614d7d41610d0c904835f219176c52b2663dc Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sun, 29 Dec 2024 17:45:58 +0100 Subject: [PATCH 42/43] remove unnecessary references --- src/Ryujinx.BuildValidationTasks/Program.cs | 3 --- src/Ryujinx.BuildValidationTasks/ValidationTask.cs | 6 ------ 2 files changed, 9 deletions(-) diff --git a/src/Ryujinx.BuildValidationTasks/Program.cs b/src/Ryujinx.BuildValidationTasks/Program.cs index 5245c1083..ed1cee490 100644 --- a/src/Ryujinx.BuildValidationTasks/Program.cs +++ b/src/Ryujinx.BuildValidationTasks/Program.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Ryujinx.BuildValidationTasks { diff --git a/src/Ryujinx.BuildValidationTasks/ValidationTask.cs b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs index 091cb6825..f11c87f3b 100644 --- a/src/Ryujinx.BuildValidationTasks/ValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/ValidationTask.cs @@ -1,9 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - namespace Ryujinx.BuildValidationTasks { public interface ValidationTask From 33800c12accfa68e529da32345015e4a981cc5ea Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Sun, 29 Dec 2024 17:47:47 +0100 Subject: [PATCH 43/43] validate json --- src/Ryujinx/Assets/locales.json | 298 ++++++++++++++++---------------- 1 file changed, 149 insertions(+), 149 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 6bede7999..31cba38dd 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -1564,7 +1564,7 @@ "pl_PL": "Wersja", "pt_BR": "Versão", "ru_RU": "Версия", - "sv_SE": "Version", + "sv_SE": "", "th_TH": "เวอร์ชั่น", "tr_TR": "Sürüm", "uk_UA": "Версія", @@ -2213,8 +2213,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "ExeFS", - "sv_SE": "ExeFS", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -2263,8 +2263,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "RomFS", - "sv_SE": "RomFS", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -2310,7 +2310,7 @@ "it_IT": "", "ja_JP": "ロゴ", "ko_KR": "로고", - "no_NO": "Logo", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Лого", @@ -3260,11 +3260,11 @@ "it_IT": "Sistema", "ja_JP": "システム", "ko_KR": "시스템", - "no_NO": "System", + "no_NO": "", "pl_PL": "", "pt_BR": "Sistema", "ru_RU": "Система", - "sv_SE": "System", + "sv_SE": "", "th_TH": "ระบบ", "tr_TR": "Sistem", "uk_UA": "Система", @@ -3335,11 +3335,11 @@ "it_IT": "Giappone", "ja_JP": "日本", "ko_KR": "일본", - "no_NO": "Japan", + "no_NO": "", "pl_PL": "Japonia", "pt_BR": "Japão", "ru_RU": "Япония", - "sv_SE": "Japan", + "sv_SE": "", "th_TH": "ญี่ปุ่น", "tr_TR": "Japonya", "uk_UA": "Японія", @@ -3360,11 +3360,11 @@ "it_IT": "Stati Uniti d'America", "ja_JP": "アメリカ", "ko_KR": "미국", - "no_NO": "USA", + "no_NO": "", "pl_PL": "Stany Zjednoczone", "pt_BR": "EUA", "ru_RU": "США", - "sv_SE": "USA", + "sv_SE": "", "th_TH": "สหรัฐอเมริกา", "tr_TR": "ABD", "uk_UA": "США", @@ -3410,7 +3410,7 @@ "it_IT": "", "ja_JP": "オーストラリア", "ko_KR": "호주", - "no_NO": "Australia", + "no_NO": "", "pl_PL": "", "pt_BR": "Austrália", "ru_RU": "Австралия", @@ -3460,11 +3460,11 @@ "it_IT": "Corea", "ja_JP": "韓国", "ko_KR": "한국", - "no_NO": "Korea", + "no_NO": "", "pl_PL": "", "pt_BR": "Coreia", "ru_RU": "Корея", - "sv_SE": "Korea", + "sv_SE": "", "th_TH": "เกาหลี", "tr_TR": "Kore", "uk_UA": "Корея", @@ -3485,11 +3485,11 @@ "it_IT": "", "ja_JP": "台湾", "ko_KR": "대만", - "no_NO": "Taiwan", + "no_NO": "", "pl_PL": "Tajwan", "pt_BR": "", "ru_RU": "Тайвань", - "sv_SE": "Taiwan", + "sv_SE": "", "th_TH": "ไต้หวัน", "tr_TR": "Tayvan", "uk_UA": "Тайвань", @@ -3955,7 +3955,7 @@ "el_GR": "Ζώνη Ώρας Συστήματος:", "en_US": "System Time Zone:", "es_ES": "Zona horaria del sistema:", - "fr_FR": "Fuseau horaire du système :", + "fr_FR": "Fuseau horaire du système\u00A0:", "he_IL": "אזור זמן מערכת:", "it_IT": "Fuso orario del sistema:", "ja_JP": "タイムゾーン:", @@ -4135,11 +4135,11 @@ "it_IT": "", "ja_JP": "ダミー", "ko_KR": "더미", - "no_NO": "Dummy", + "no_NO": "", "pl_PL": "Atrapa", "pt_BR": "Nenhuma", "ru_RU": "Без звука", - "sv_SE": "Dummy", + "sv_SE": "", "th_TH": "", "tr_TR": "Yapay", "uk_UA": "", @@ -4163,8 +4163,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "OpenAL", - "sv_SE": "OpenAL", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4188,8 +4188,8 @@ "no_NO": "Lyd Inn/Ut", "pl_PL": "", "pt_BR": "", - "ru_RU": "SoundIO", - "sv_SE": "SoundIO", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4213,8 +4213,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "SDL2", - "sv_SE": "SDL2", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4230,12 +4230,12 @@ "el_GR": "Μικροδιορθώσεις", "en_US": "Hacks", "es_ES": "", - "fr_FR": "Hacks", + "fr_FR": "", "he_IL": "האצות", "it_IT": "Espedienti", "ja_JP": "ハック", "ko_KR": "핵", - "no_NO": "Hacks", + "no_NO": "", "pl_PL": "Hacki", "pt_BR": "", "ru_RU": "Хаки", @@ -4314,7 +4314,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "4ГиБ", - "sv_SE": "4GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "4Гб", @@ -4339,7 +4339,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "6ГиБ", - "sv_SE": "6GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "6Гб", @@ -4364,7 +4364,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "8ГиБ", - "sv_SE": "8GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "8Гб", @@ -4389,7 +4389,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "12ГиБ", - "sv_SE": "12GiB", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "12Гб", @@ -4585,11 +4585,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배", - "no_NO": "2x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2x", - "sv_SE": "2x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4610,11 +4610,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "4배", - "no_NO": "4x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4x", - "sv_SE": "4x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4635,11 +4635,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "8배", - "no_NO": "8x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "8x", - "sv_SE": "8x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4660,11 +4660,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "16배", - "no_NO": "16x", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16x", - "sv_SE": "16x", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4760,11 +4760,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "2배(1440p/2160p)", - "no_NO": "2x (1440p/2160p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2x (1440p/2160p)", - "sv_SE": "2x (1440p/2160p)", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4785,11 +4785,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "3배(2160p/3240p)", - "no_NO": "3x (2160p/3240p)", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "3x (2160p/3240p)", - "sv_SE": "3x (2160p/3240p)", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4863,8 +4863,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4:3", - "sv_SE": "4:3", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4888,8 +4888,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16:9", - "sv_SE": "16:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4913,8 +4913,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "16:10", - "sv_SE": "16:10", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4938,8 +4938,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "21:9", - "sv_SE": "21:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4960,11 +4960,11 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "32:9", + "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "32:9", - "sv_SE": "32:9", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -5060,7 +5060,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -5085,7 +5085,7 @@ "it_IT": "Log", "ja_JP": "ロギング", "ko_KR": "로그 기록", - "no_NO": "Logging", + "no_NO": "", "pl_PL": "Dziennik zdarzeń", "pt_BR": "Log", "ru_RU": "Журналирование", @@ -6113,8 +6113,8 @@ "no_NO": "", "pl_PL": "Pro Kontroler", "pt_BR": "", - "ru_RU": "Pro Controller", - "sv_SE": "Pro Controller", + "ru_RU": "", + "sv_SE": "", "th_TH": "โปรคอนโทรลเลอร์", "tr_TR": "Profesyonel Kumanda", "uk_UA": "Контролер Pro", @@ -8088,8 +8088,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Enter", - "sv_SE": "Enter", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8114,7 +8114,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Esc", - "sv_SE": "Escape", + "sv_SE": "", "th_TH": "", "tr_TR": "Esc", "uk_UA": "", @@ -8163,8 +8163,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Tab", - "sv_SE": "Tab", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8188,8 +8188,8 @@ "no_NO": "Tilbaketast", "pl_PL": "", "pt_BR": "", - "ru_RU": "Backspace", - "sv_SE": "Backspace", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "Geri tuşu", "uk_UA": "", @@ -8213,8 +8213,8 @@ "no_NO": "Sett inn", "pl_PL": "", "pt_BR": "", - "ru_RU": "Insert", - "sv_SE": "Insert", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8238,8 +8238,8 @@ "no_NO": "Slett", "pl_PL": "", "pt_BR": "", - "ru_RU": "Delete", - "sv_SE": "Delete", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8263,8 +8263,8 @@ "no_NO": "Side opp", "pl_PL": "", "pt_BR": "", - "ru_RU": "Page Up", - "sv_SE": "Page Up", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8288,8 +8288,8 @@ "no_NO": "Side ned", "pl_PL": "", "pt_BR": "", - "ru_RU": "Page Down", - "sv_SE": "Page Down", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8313,8 +8313,8 @@ "no_NO": "Hjem", "pl_PL": "", "pt_BR": "", - "ru_RU": "Home", - "sv_SE": "Home", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8338,8 +8338,8 @@ "no_NO": "Avslutt", "pl_PL": "", "pt_BR": "", - "ru_RU": "End", - "sv_SE": "End", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8363,8 +8363,8 @@ "no_NO": "Skiftelås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Caps Lock", - "sv_SE": "Caps Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8388,8 +8388,8 @@ "no_NO": "Rullelås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Scroll Lock", - "sv_SE": "Scroll Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8413,8 +8413,8 @@ "no_NO": "Skjermbilde", "pl_PL": "", "pt_BR": "", - "ru_RU": "Print Screen", - "sv_SE": "Print Screen", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8438,8 +8438,8 @@ "no_NO": "Stans midlertidig", "pl_PL": "", "pt_BR": "", - "ru_RU": "Pause", - "sv_SE": "Pause", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8463,8 +8463,8 @@ "no_NO": "Numerisk Lås", "pl_PL": "", "pt_BR": "", - "ru_RU": "Num Lock", - "sv_SE": "Num Lock", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8514,7 +8514,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 0", - "sv_SE": "Keypad 0", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8539,7 +8539,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 1", - "sv_SE": "Keypad 1", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8564,7 +8564,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 2", - "sv_SE": "Keypad 2", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8589,7 +8589,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 3", - "sv_SE": "Keypad 3", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8614,7 +8614,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 4", - "sv_SE": "Keypad 4", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8639,7 +8639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 5", - "sv_SE": "Keypad 5", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8664,7 +8664,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 6", - "sv_SE": "Keypad 6", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8689,7 +8689,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 7", - "sv_SE": "Keypad 7", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8714,7 +8714,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 8", - "sv_SE": "Keypad 8", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8739,7 +8739,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Блок цифр 9", - "sv_SE": "Keypad 9", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8889,7 +8889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Enter (блок цифр)", - "sv_SE": "Keypad Enter", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -8913,7 +8913,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "0", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8938,7 +8938,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "1", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8963,7 +8963,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "2", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -8988,7 +8988,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "3", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9013,7 +9013,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "4", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9038,7 +9038,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "5", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9063,7 +9063,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "6", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9088,7 +9088,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "7", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9113,7 +9113,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "8", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9138,7 +9138,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "9", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9163,7 +9163,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "~", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9188,7 +9188,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "`", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9213,7 +9213,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "-", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9238,7 +9238,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "+", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9263,7 +9263,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "[", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9288,7 +9288,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "]", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9313,7 +9313,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ";", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9363,7 +9363,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ",", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9388,7 +9388,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": ".", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9413,7 +9413,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "/", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9738,7 +9738,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "-", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -9763,7 +9763,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "+", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "4", @@ -9789,7 +9789,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Кнопка меню", - "sv_SE": "Guide", + "sv_SE": "", "th_TH": "", "tr_TR": "Rehber", "uk_UA": "", @@ -12438,7 +12438,7 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "{0}: {1}", + "ru_RU": "", "sv_SE": "", "th_TH": "", "tr_TR": "", @@ -14289,7 +14289,7 @@ "pl_PL": "Seria Amiibo", "pt_BR": "Franquia Amiibo", "ru_RU": "Серия Amiibo", - "sv_SE": "Amiibo Series", + "sv_SE": "", "th_TH": "", "tr_TR": "Amiibo Serisi", "uk_UA": "Серія Amiibo", @@ -15755,7 +15755,7 @@ "el_GR": "", "en_US": "Aspect Ratio applied to the renderer window.\n\nOnly change this if you're using an aspect ratio mod for your game, otherwise the graphics will be stretched.\n\nLeave on 16:9 if unsure.", "es_ES": "Relación de aspecto aplicada a la ventana del renderizador.\n\nSolamente modificar esto si estás utilizando un mod de relación de aspecto para su juego, en cualquier otro caso los gráficos se estirarán.\n\nDejar en 16:9 si no sabe que hacer.", - "fr_FR": "Format d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", + "fr_FR": "Format\u00A0d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format\u00A0d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.", "he_IL": "", "it_IT": "Proporzioni dello schermo applicate alla finestra di renderizzazione.\n\nCambialo solo se stai usando una mod di proporzioni per il tuo gioco, altrimenti la grafica verrà allungata.\n\nLasciare il 16:9 se incerto.", "ja_JP": "レンダリングウインドウに適用するアスペクト比です.\n\nゲームにアスペクト比を変更する mod を使用している場合のみ変更してください.\n\nわからない場合は16:9のままにしておいてください.\n", @@ -17439,7 +17439,7 @@ "pl_PL": "Wersja {0}", "pt_BR": "Versão {0}", "ru_RU": "Версия {0}", - "sv_SE": "Version {0}", + "sv_SE": "", "th_TH": "เวอร์ชั่น {0}", "tr_TR": "Sürüm {0}", "uk_UA": "Версія {0}", @@ -17664,7 +17664,7 @@ "pl_PL": "", "pt_BR": "Ryujinx - Informação", "ru_RU": "Ryujinx - Информация", - "sv_SE": "Ryujinx - Info", + "sv_SE": "", "th_TH": "Ryujinx – ข้อมูล", "tr_TR": "Ryujinx - Bilgi", "uk_UA": "Ryujin x - Інформація", @@ -18813,8 +18813,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "Amiibo", - "sv_SE": "Amiibo", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -19435,7 +19435,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "XCI 파일 트리머", - "no_NO": "XCI File Trimmer", + "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "Уменьшение размера XCI файлов", @@ -19639,7 +19639,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "{0:n0} Мб", - "sv_SE": "{0:n0} Mb", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "{0:n0} Мб", @@ -20914,7 +20914,7 @@ "pl_PL": "Głoś", "pt_BR": "", "ru_RU": "Громкость", - "sv_SE": "Vol", + "sv_SE": "", "th_TH": "ระดับเสียง", "tr_TR": "Ses", "uk_UA": "Гуч.", @@ -21055,7 +21055,7 @@ "el_GR": "Όνομα", "en_US": "Name", "es_ES": "Nombre", - "fr_FR": "Nom ", + "fr_FR": "Nom\u00A0", "he_IL": "שם", "it_IT": "Nome", "ja_JP": "名称", @@ -21388,8 +21388,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "FSR", - "sv_SE": "FSR", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21888,8 +21888,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "ldn_mitm", - "sv_SE": "ldn_mitm", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -21913,8 +21913,8 @@ "no_NO": "", "pl_PL": "", "pt_BR": "", - "ru_RU": "RyuLDN", - "sv_SE": "RyuLDN", + "ru_RU": "", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -22214,7 +22214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Вертикальная синхронизация:", - "sv_SE": "VSync:", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "Вертикальна синхронізація (VSync):", @@ -22255,7 +22255,7 @@ "el_GR": "", "en_US": "Switch", "es_ES": "", - "fr_FR": "Switch", + "fr_FR": "", "he_IL": "", "it_IT": "", "ja_JP": "", @@ -22264,7 +22264,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Консоль", - "sv_SE": "Switch", + "sv_SE": "", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -22598,4 +22598,4 @@ } } ] -} +} \ No newline at end of file