diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index e15fce7d..284937e9 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-ef": { - "version": "6.0.5", + "version": "6.0.7", "commands": [ "dotnet-ef" ] diff --git a/.gitignore b/.gitignore index 900a9589..21e2fcf2 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,8 @@ gitRemotes.txt gitUnpushed.txt logs/* npTicket* +r.tar.gz +lighthouse.yml.configme # MSBuild stuff bin/ @@ -44,4 +46,4 @@ BACKUP* backup* *.tmp -*.bin +*.bin \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-ar-SA.resx b/ProjectLighthouse.Localization/BaseLayout.lang-ar-SA.resx index d4b69b2e..5ec98bf6 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-ar-SA.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-ar-SA.resx @@ -57,4 +57,28 @@ تسجيل الخروج A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-da-DK.resx b/ProjectLighthouse.Localization/BaseLayout.lang-da-DK.resx index e73812c8..afe68cdf 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-da-DK.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-da-DK.resx @@ -1,66 +1,84 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Forside A button on the header that takes you to the landing page. - - + Brugere A button on the header that takes you to the user listing. - - + Fotos A button on the header that takes you to a list of user-uploaded photos. - - + Baner A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". - - + Godkendelse A button on the header that takes you to a list of authentication attempts. - - + Log ind / Registrer A button on the header that lets you log in or register. - + Profil A quick shortcut on the header to take you to your profile if logged in. - + Administrationspanel A header link that takes you to the admin panel if available. - + Log ud A shortcut to log you out of your account. + + Siden genereret af {0}. + + + Denne side blev genereret brugt af en ændret version af Project Lighthouse. Sørg for, at du afslører kildekoden korrekt til alle brugere, der muligvis bruger denne instans. + + + Mens vi har til hensigt at have så lidt JavaScript som muligt, kan vi ikke garantere alt vil fungere uden det. Vi anbefaler, at du hvidliste JavaScript til Project Lighthouse. + + + JavaScript er ikke aktiveret + + + Potentiel Licens Overtrædelse + + + Denne instans er en offentlig instans, der er blevet ændret uden de offentliggjorte ændringer. Du kan være i strid med {0}. + + + Hvis du mener, at dette er en fejl, opret et problem med output fra {0} løb fra roden af serverens kildekode i beskrivelsen på vores {1}issue tracker{2}. + + + Hvis ikke, bedes du publicere kildekoden et eller andet sted, der er tilgængeligt for dine brugere. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-de-DE.resx b/ProjectLighthouse.Localization/BaseLayout.lang-de-DE.resx index d198e2d9..da2127fa 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-de-DE.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-de-DE.resx @@ -57,4 +57,28 @@ Abmelden A shortcut to log you out of your account. + + Diese Seite wurde von {0} generiert. + + + Diese Seite wurde von einer modifizierten Version von Project Lighthouse generiert. Stelle bitte sicher, dass du den veränderten Quellcode für alle Nutzer, die diese Instanz benutzen dürfen, sichtbar machst. + + + Obwohl wir versuchen, so wenig JavaScript wie möglich zu benutzen, können wir nicht garantieren, dass alles ohne JavaScript funktionieren wird. Wir empfehlen dir, JavaScript für Project Lighthouse zu erlauben. + + + JavaScript ist nicht aktiviert + + + Potenzieller Lizenzverstoß + + + Dies ist eine öffentlich zugängliche Instanz, dessen Quellcode verändert aber nicht veröffentlicht wurde. Es könnte sein, dass du gegen die {0} verstoßt. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + Falls nicht, veröffentliche den Quellcode irgendwo, wo die Nutzer deiner Instanz darauf zugreifen können. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-en-PT.resx b/ProjectLighthouse.Localization/BaseLayout.lang-en-PT.resx new file mode 100644 index 00000000..977eede9 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-en-PT.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 'ome + A button on the header that takes you to the landing page. + + + Gentlemen o' fortune + A button on the header that takes you to the user listing. + + + Maps + A button on the header that takes you to a list of user-uploaded photos. + + + Tales + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Go Aboard / Register + A button on the header that lets you log in or register. + + + Ship + A quick shortcut on the header to take you to your profile if logged in. + + + Cap'n's panel + A header link that takes you to the admin panel if available. + + + Sleep + A shortcut to log you out of your account. + + + This here ship be made by {0}. + + + This here page been generated usin' a modified version o' project lighthouse. Please make sure ye be properly disclosin' the source code to any users who may be usin' this here instance. + + + While we intend to 'ave as little javascript as possible, we can not guarantee everythin' will work without it. We recommend that there ye whitelist javascript fer project lighthouse. + + + Javascript be not enabled + + + This here looks like a potential license violation mate. + + + This here instance be a public-facin' instance that there been modified without the changes published. Ye may be in violation o' the {0}. + + + If ye believe this here be an error, please create an issue with the output o' {0} ran from the root o' the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to yer users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-eo-UY.resx b/ProjectLighthouse.Localization/BaseLayout.lang-eo-UY.resx index 68388e30..cbdf94f5 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-eo-UY.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-eo-UY.resx @@ -1,66 +1,84 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Hejmo A button on the header that takes you to the landing page. - - + Uzantoj A button on the header that takes you to the user listing. - - + Fotoj A button on the header that takes you to a list of user-uploaded photos. - - + Etaĝoj A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". - - + Aŭtentigado A button on the header that takes you to a list of authentication attempts. - - + Ensaluto / Registro A button on the header that lets you log in or register. - + Profilo A quick shortcut on the header to take you to your profile if logged in. - + Panelo de administranto A header link that takes you to the admin panel if available. - + Adiaŭi A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-es-ES.resx b/ProjectLighthouse.Localization/BaseLayout.lang-es-ES.resx new file mode 100644 index 00000000..f97e2f38 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-es-ES.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Inicio + A button on the header that takes you to the landing page. + + + Usuarios + A button on the header that takes you to the user listing. + + + Fotos + A button on the header that takes you to a list of user-uploaded photos. + + + Niveles + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Autenticación + A button on the header that takes you to a list of authentication attempts. + + + Iniciar sesión / Registrarse + A button on the header that lets you log in or register. + + + Perfil + A quick shortcut on the header to take you to your profile if logged in. + + + Panel de administración + A header link that takes you to the admin panel if available. + + + Cerrar sesión + A shortcut to log you out of your account. + + + Página generada por {0}. + + + Esta página fue generada usando una versión modificada de Project Lighthouse. Por favor asegúrese de que está revelando correctamente el código principal a los usuarios que están usando está instancia + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-es-MX.resx b/ProjectLighthouse.Localization/BaseLayout.lang-es-MX.resx index 9f37276f..238e19ec 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-es-MX.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-es-MX.resx @@ -1,66 +1,84 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Inicio A button on the header that takes you to the landing page. - - + Usuarios A button on the header that takes you to the user listing. - - + Fotos A button on the header that takes you to a list of user-uploaded photos. - - + Niveles A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". - - + Autenticación A button on the header that takes you to a list of authentication attempts. - - + Iniciar sesión / Registrarse A button on the header that lets you log in or register. - + Perfil A quick shortcut on the header to take you to your profile if logged in. - + Panel de administración A header link that takes you to the admin panel if available. - + Cerrar sesión A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-et-EE.resx b/ProjectLighthouse.Localization/BaseLayout.lang-et-EE.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-et-EE.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-fi-FI.resx b/ProjectLighthouse.Localization/BaseLayout.lang-fi-FI.resx new file mode 100644 index 00000000..31587ae0 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-fi-FI.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Etusivu + A button on the header that takes you to the landing page. + + + Käyttäjät + A button on the header that takes you to the user listing. + + + Kuvat + A button on the header that takes you to a list of user-uploaded photos. + + + Kentät + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Todennus + A button on the header that takes you to a list of authentication attempts. + + + Kirjaudu sisään / rekisteröidy + A button on the header that lets you log in or register. + + + Profiili + A quick shortcut on the header to take you to your profile if logged in. + + + Ylläpito Paneeli + A header link that takes you to the admin panel if available. + + + Kirjaudu ulos + A shortcut to log you out of your account. + + + Sivun luoja {0}. + + + Tämä sivu on luotu käyttäen muunneltua versiota Project Lighthouse. Varmista, että ilmoitat lähdekoodin oikein kaikille käyttäjille, jotka saattavat käyttää tätä instanssia. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-fil-PH.resx b/ProjectLighthouse.Localization/BaseLayout.lang-fil-PH.resx index 99855be2..923a2001 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-fil-PH.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-fil-PH.resx @@ -57,4 +57,28 @@ Log out A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-fr-FR.resx b/ProjectLighthouse.Localization/BaseLayout.lang-fr-FR.resx index 97b37c32..74a64e58 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-fr-FR.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-fr-FR.resx @@ -57,4 +57,28 @@ Déconnexion A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-ga-IE.resx b/ProjectLighthouse.Localization/BaseLayout.lang-ga-IE.resx index 616ba8ce..88a9da42 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-ga-IE.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-ga-IE.resx @@ -57,4 +57,28 @@ Logáil amach A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-he-IL.resx b/ProjectLighthouse.Localization/BaseLayout.lang-he-IL.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-he-IL.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-hi-IN.resx b/ProjectLighthouse.Localization/BaseLayout.lang-hi-IN.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-hi-IN.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-id-ID.resx b/ProjectLighthouse.Localization/BaseLayout.lang-id-ID.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-id-ID.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-it-IT.resx b/ProjectLighthouse.Localization/BaseLayout.lang-it-IT.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-it-IT.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-ja-JP.resx b/ProjectLighthouse.Localization/BaseLayout.lang-ja-JP.resx index fb8efb4d..2ed1636d 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-ja-JP.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-ja-JP.resx @@ -1,66 +1,84 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + ホーム A button on the header that takes you to the landing page. - - + ユーザー A button on the header that takes you to the user listing. - - + 画像 A button on the header that takes you to a list of user-uploaded photos. - - + レベル A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". - - + 認証 A button on the header that takes you to a list of authentication attempts. - - + ログイン/サインアップ A button on the header that lets you log in or register. - + プロフィール A quick shortcut on the header to take you to your profile if logged in. - + 管理者の部屋 A header link that takes you to the admin panel if available. - + ログアウト A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-nl-NL.resx b/ProjectLighthouse.Localization/BaseLayout.lang-nl-NL.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-nl-NL.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-no-NO.resx b/ProjectLighthouse.Localization/BaseLayout.lang-no-NO.resx index aef7314b..080a8c48 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-no-NO.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-no-NO.resx @@ -1,66 +1,84 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Hjem A button on the header that takes you to the landing page. - - + Brukere A button on the header that takes you to the user listing. - - + Bilder A button on the header that takes you to a list of user-uploaded photos. - - + Nivåer A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". - - + Godkjenning A button on the header that takes you to a list of authentication attempts. - - + Logg inn/Registrer A button on the header that lets you log in or register. - + Profil A quick shortcut on the header to take you to your profile if logged in. - + Administrasjon A header link that takes you to the admin panel if available. - + Logg ut A shortcut to log you out of your account. + + Side generert av {0}. + + + Denne siden ble generert med en modifisert versjon av Project Lighthouse. Sørg for at du avslører kildekoden på riktig måte til brukere som kan bruke denne forekomsten. + + + Selv om vi har til hensikt å ha så lite JavaScript som mulig, kan vi ikke garantere at alt vil fungere uten det. Vi anbefaler at du godkjenner JavaScript for Projekt Lighthouse. + + + JacaScript er ikke aktivert + + + Potensielt brudd på lisensen + + + Denne forekomsten er en offentlig forekomst som har blitt endret uten at endringene er publisert. Du kan være i strid med {0}. + + + Hvis du mener dette er en feil, kan du opprette et problem med utdataene til {0} kjørte fra roten til serverkildekoden i beskrivelsen på vår {1}problemsporing{2}. + + + Hvis ikke, vennligst publiser kildekoden et sted som er tilgjengelig for brukerne dine + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-pl-PL.resx b/ProjectLighthouse.Localization/BaseLayout.lang-pl-PL.resx index af175fe4..367ce23c 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-pl-PL.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-pl-PL.resx @@ -57,4 +57,28 @@ Wyloguj A shortcut to log you out of your account. + + Strona wygenerowana przez {0}. + + + Ta strona została wygenerowana przy użyciu zmodyfikowanej wersji Projektu Lighthouse. Upewnij się, że poprawnie ujawniasz kod źródłowy wszystkim użytkownikom, którzy mogą używać tej instancji + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-pt-PT.resx b/ProjectLighthouse.Localization/BaseLayout.lang-pt-PT.resx index 2b2874d9..53742bdf 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-pt-PT.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-pt-PT.resx @@ -57,4 +57,28 @@ Terminar sessão A shortcut to log you out of your account. + + Página gerada por {0}. + + + Esta página foi gerada usando uma versão modificada do Projeto Lighthouse. Certifique-se de que você está divulgando corretamente o código fonte para qualquer usuário que possa estar usando esta instância. + + + Embora a nossa intenção seja ter o mínimo possível de JavaScript, não é possível garantir que tudo funcionará sem a sua presença. Recomendamos que dê whitelist ao JavaScript para o Projeto Lighthouse + + + O JavaScript não está ativado + + + Potencial Violação de Licença + + + Esta é uma instância pública que foi modificada sem ter tido as suas alterações publicadas. Poderá estar em violação de {0}. + + + Se acredita que isto possa ser um erro, por favor cria uma "solicitação" com saída {0} executada na raiz do código-fonte do servidor na descrição no nosso {1}rastreador de problemas{2} + + + Se não for o caso, publique o código-fonte em um local acessível aos seus utilizadores. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-ru-RU.resx b/ProjectLighthouse.Localization/BaseLayout.lang-ru-RU.resx index 495f908d..64df1af7 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-ru-RU.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-ru-RU.resx @@ -57,4 +57,28 @@ Выйти A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-sv-SE.resx b/ProjectLighthouse.Localization/BaseLayout.lang-sv-SE.resx index 208ed3c6..b98367cf 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-sv-SE.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-sv-SE.resx @@ -57,4 +57,28 @@ Logga ut A shortcut to log you out of your account. + + Sida genererad av {0}. + + + Den här sidan genererades av en modifierad version av Project Lighthouse. Se till att du ger ut källkoden till alla användare som använder den här instansen. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-th-TH.resx b/ProjectLighthouse.Localization/BaseLayout.lang-th-TH.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-th-TH.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-tr-TR.resx b/ProjectLighthouse.Localization/BaseLayout.lang-tr-TR.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-tr-TR.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-uk-UA.resx b/ProjectLighthouse.Localization/BaseLayout.lang-uk-UA.resx new file mode 100644 index 00000000..8dba8969 --- /dev/null +++ b/ProjectLighthouse.Localization/BaseLayout.lang-uk-UA.resx @@ -0,0 +1,84 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Home + A button on the header that takes you to the landing page. + + + Users + A button on the header that takes you to the user listing. + + + Photos + A button on the header that takes you to a list of user-uploaded photos. + + + Levels + A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots". + + + Authentication + A button on the header that takes you to a list of authentication attempts. + + + Login / Register + A button on the header that lets you log in or register. + + + Profile + A quick shortcut on the header to take you to your profile if logged in. + + + Admin Panel + A header link that takes you to the admin panel if available. + + + Log out + A shortcut to log you out of your account. + + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-zh-CN.resx b/ProjectLighthouse.Localization/BaseLayout.lang-zh-CN.resx index 421d41af..89c5bdb0 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-zh-CN.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-zh-CN.resx @@ -57,4 +57,28 @@ 登出 A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-zh-TW.resx b/ProjectLighthouse.Localization/BaseLayout.lang-zh-TW.resx index 81fdf571..8c5689ad 100644 --- a/ProjectLighthouse.Localization/BaseLayout.lang-zh-TW.resx +++ b/ProjectLighthouse.Localization/BaseLayout.lang-zh-TW.resx @@ -57,4 +57,28 @@ 登出 A shortcut to log you out of your account. + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/BaseLayout.resx b/ProjectLighthouse.Localization/BaseLayout.resx index e7b34891..6ba09a5c 100644 --- a/ProjectLighthouse.Localization/BaseLayout.resx +++ b/ProjectLighthouse.Localization/BaseLayout.resx @@ -68,4 +68,28 @@ Mod Panel + + Page generated by {0}. + + + This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance. + + + While we intend to have as little JavaScript as possible, we can not guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. + + + JavaScript is not enabled + + + Potential License Violation + + + This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the {0}. + + + If you believe this is an error, please create an issue with the output of {0} ran from the root of the server source code in the description on our {1}issue tracker{2}. + + + If not, please publish the source code somewhere accessible to your users. + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-ar-SA.resx b/ProjectLighthouse.Localization/Error.lang-ar-SA.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-ar-SA.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-da-DK.resx b/ProjectLighthouse.Localization/Error.lang-da-DK.resx new file mode 100644 index 00000000..d591472d --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-da-DK.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Brugernavn feltet er tomt + + + Det brugernavn, du har valgt, er allerede taget. + + + Adgangskode er påkrævet. + + + Adgangskoder matcher ikke! + + + Ugyldig Token + + + Du skal fuldføre captcha korrekt. + + + Den e-mailadresse, du har valgt, er allerede taget. + + + E-mailadresse er påkrævet. + + + Du er blevet forbudt. Kontakt venligst en administrator for mere information.\nGrund: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-de-DE.resx b/ProjectLighthouse.Localization/Error.lang-de-DE.resx new file mode 100644 index 00000000..e60202b9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-de-DE.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Es wurde kein Benutzername eingegeben. + + + Der Benutzername wird bereits verwendet. + + + Es wird ein Passwort benötigt + + + Das Passwort stimmt nicht überein. + + + Token ist ungültig. + + + Du musst die Captcha richtig abschließen. + + + Die E-Mail Adresse wird bereits verwendet + + + Es wird eine E-Mail Adresse benötigt. + + + Du wurdest gebannt. Bitte kontaktiere einen Administrator dieser Instanz für mehr Informationen.\nGrund: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-en-PT.resx b/ProjectLighthouse.Localization/Error.lang-en-PT.resx new file mode 100644 index 00000000..d40f2e19 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-en-PT.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field be blank. + + + The username ye've chosen be already taken. + + + Password field be required. + + + Secret keys do not match! + + + Invalid Token + + + Ye must complete the captcha correctly. + + + The email address ye've chosen be already taken. + + + Email address field be required. + + + Ye 'ave been banned. Please contact an administrator fer more information.\nreason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-eo-UY.resx b/ProjectLighthouse.Localization/Error.lang-eo-UY.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-eo-UY.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-es-ES.resx b/ProjectLighthouse.Localization/Error.lang-es-ES.resx new file mode 100644 index 00000000..b03810f7 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-es-ES.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Debes colocar un nombre de usuario + + + El nombre que elegiste ya está en uso + + + Debes de crear una contraseña + + + ¡Las contraseñas no coinciden! + + + Toquen inválido + + + Debes completar el captcha correctamente + + + La dirección de correo electrónico que elegiste ya está en uso + + + Debes de colocar un correo electrónico + + + Has sido vetado. Por favor contacta a un administrador para más información.\n Razón: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-es-MX.resx b/ProjectLighthouse.Localization/Error.lang-es-MX.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-es-MX.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-et-EE.resx b/ProjectLighthouse.Localization/Error.lang-et-EE.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-et-EE.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-fi-FI.resx b/ProjectLighthouse.Localization/Error.lang-fi-FI.resx new file mode 100644 index 00000000..8efc946f --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-fi-FI.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Käyttäjänimen kenttä on tyhjä. + + + Valitsemasi käyttäjänimi on jo käytössä. + + + "Salasana" kenttä on pakollinen. + + + Salasanat eivät täsmää! + + + Istuntokohtainen avain ei kelpaa + + + Sinun täytyy suorittaa captcha oikein. + + + Valitsemasi sähköpostiosoite on jo käytössä. + + + Sähköpostiosoite on pakollinen. + + + Sinulle on annettu porttikielto. Ota yhteyttä järjestelmänvalvojaan saadaksesi lisätietoja. \nSyy: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-fil-PH.resx b/ProjectLighthouse.Localization/Error.lang-fil-PH.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-fil-PH.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-fr-FR.resx b/ProjectLighthouse.Localization/Error.lang-fr-FR.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-fr-FR.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-ga-IE.resx b/ProjectLighthouse.Localization/Error.lang-ga-IE.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-ga-IE.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-he-IL.resx b/ProjectLighthouse.Localization/Error.lang-he-IL.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-he-IL.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-hi-IN.resx b/ProjectLighthouse.Localization/Error.lang-hi-IN.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-hi-IN.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-id-ID.resx b/ProjectLighthouse.Localization/Error.lang-id-ID.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-id-ID.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-it-IT.resx b/ProjectLighthouse.Localization/Error.lang-it-IT.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-it-IT.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-ja-JP.resx b/ProjectLighthouse.Localization/Error.lang-ja-JP.resx new file mode 100644 index 00000000..8048c0db --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-ja-JP.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ユーザーネームを入力してください。 + + + このユーザー名は既に使用されています。 + + + パスワードが必要です. + + + パスワードが一致しません。 + + + このトークンが無効です + + + キャプチャを正しく完了してください + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-nl-NL.resx b/ProjectLighthouse.Localization/Error.lang-nl-NL.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-nl-NL.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-no-NO.resx b/ProjectLighthouse.Localization/Error.lang-no-NO.resx new file mode 100644 index 00000000..7d6dcd69 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-no-NO.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Brukernavnfeltet er tomt. + + + Brukernavnet du har valgt er allerede tatt. + + + Passordfelt er obligatorisk. + + + Passordene er ikke like! + + + Ugyldig token + + + Du må fullføre captchaen riktig. + + + E-postadressen du har valgt er allerede tatt. + + + E-postadressefelt er obligatorisk. + + + Du har blitt bannlyst. Kontakt en administrator for mer informasjon.\nÅrsak: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-pl-PL.resx b/ProjectLighthouse.Localization/Error.lang-pl-PL.resx new file mode 100644 index 00000000..222569be --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-pl-PL.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Pole nazwy użytkownika jest puste. + + + Nazwa użytkownika, którą wybrałeś, jest już zajęta. + + + Pole Hasła jest wymagane. + + + Hasła nie są identyczne! + + + Nieprawidłowy Token + + + Musisz ukończyć kod Captcha poprawnie. + + + Adres E-mail, który wybrałeś, jest już zajęty. + + + Pole adresu E-mail jest wymagane. + + + Zostałeś zbanowany. Skontaktuj się z administratorem, aby uzyskać więcej informacje. \nPowód: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-pt-PT.resx b/ProjectLighthouse.Localization/Error.lang-pt-PT.resx new file mode 100644 index 00000000..ca00d866 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-pt-PT.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + O nome de usuário está em branco. + + + O nome de usuário escolhido já existe. + + + O campo da senha é obrigatório. + + + As senhas não combinam! + + + Token inválido + + + Você deve completar o captcha corretamente. + + + O e-mail que você escolheu já está sendo usado. + + + O campo de endereço de e-mail é obrigatório. + + + Você foi banido. Por favor, contate um administrador para mais informações.\nMotivo: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-ru-RU.resx b/ProjectLighthouse.Localization/Error.lang-ru-RU.resx new file mode 100644 index 00000000..da414456 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-ru-RU.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + Выбранное имя пользователя уже занято. + + + Password field is required. + + + Пароли не совпадают! + + + Неверный Токен + + + Вы должны правильно завершить капчу. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + Вы были заблокированы. Пожалуйста, свяжитесь с администратором для получения дополнительной информации.\nПричина: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-sv-SE.resx b/ProjectLighthouse.Localization/Error.lang-sv-SE.resx new file mode 100644 index 00000000..c1e19065 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-sv-SE.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Användarnamnfältet är tomt. + + + Användarnamnet du har valt är redan taget. + + + Lösenord krävs + + + Lösenorden matchar inte! + + + Ogiltig kupong + + + Du måste slutföra captchan. + + + E-postadressen du har valt är redan tagen. + + + E-postadress krävs. + + + Du har blivit bannad. Kontakta en administratör för mer information.\nAnledning: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-th-TH.resx b/ProjectLighthouse.Localization/Error.lang-th-TH.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-th-TH.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-tr-TR.resx b/ProjectLighthouse.Localization/Error.lang-tr-TR.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-tr-TR.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-uk-UA.resx b/ProjectLighthouse.Localization/Error.lang-uk-UA.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-uk-UA.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-zh-CN.resx b/ProjectLighthouse.Localization/Error.lang-zh-CN.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-zh-CN.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.lang-zh-TW.resx b/ProjectLighthouse.Localization/Error.lang-zh-TW.resx new file mode 100644 index 00000000..ab9123e9 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.lang-zh-TW.resx @@ -0,0 +1,47 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Error.resx b/ProjectLighthouse.Localization/Error.resx new file mode 100644 index 00000000..131424b0 --- /dev/null +++ b/ProjectLighthouse.Localization/Error.resx @@ -0,0 +1,48 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The username field is blank. + + + The username you've chosen is already taken. + + + Password field is required. + + + Passwords do not match! + + + Invalid Token + + + You must complete the captcha correctly. + + + The email address you've chosen is already taken. + + + Email address field is required. + + + You have been banned. Please contact an administrator for more information.\nReason: {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-ar-SA.resx b/ProjectLighthouse.Localization/General.lang-ar-SA.resx index 47789ff9..16a1a80d 100644 --- a/ProjectLighthouse.Localization/General.lang-ar-SA.resx +++ b/ProjectLighthouse.Localization/General.lang-ar-SA.resx @@ -36,6 +36,21 @@ دخول - Unknown + غير معروف + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-da-DK.resx b/ProjectLighthouse.Localization/General.lang-da-DK.resx index f1a96972..fb9cc03a 100644 --- a/ProjectLighthouse.Localization/General.lang-da-DK.resx +++ b/ProjectLighthouse.Localization/General.lang-da-DK.resx @@ -36,6 +36,21 @@ Log ind - Unknown + Ukendt + + + Succes! + + + Nulstil adgangskode + + + Seneste Aktivitet + + + Kommer snart! + + + De seneste billeder \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-de-DE.resx b/ProjectLighthouse.Localization/General.lang-de-DE.resx index 74fb5c8e..a4ed9594 100644 --- a/ProjectLighthouse.Localization/General.lang-de-DE.resx +++ b/ProjectLighthouse.Localization/General.lang-de-DE.resx @@ -36,6 +36,21 @@ Anmelden - Unknown + Unbekannt + + + Erfolg! + + + Passwort zurücksetzen + + + Letzte Aktivitäten + + + Kommt bald! + + + Neueste Fotos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-en-PT.resx b/ProjectLighthouse.Localization/General.lang-en-PT.resx new file mode 100644 index 00000000..8c46dc33 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-en-PT.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ye name + + + Secret key + + + Register + + + Forgot yer secret key? + + + Shiver me timbers! + + + Go Aboard + + + Unknown + + + Success! + + + New secret key + + + Recent Happenin's + + + Comin' soon! + + + Most recent maps + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-eo-UY.resx b/ProjectLighthouse.Localization/General.lang-eo-UY.resx index a4d94879..de48e2cb 100644 --- a/ProjectLighthouse.Localization/General.lang-eo-UY.resx +++ b/ProjectLighthouse.Localization/General.lang-eo-UY.resx @@ -18,24 +18,39 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Username + Uzantnomo - Password + Pasvorto - Register + Registriĝi - Forgot Password? + Forgesis pasvorton? - Uh oh! + Oh oh! - Log In + Ensaluti - Unknown + Nekonata + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-es-ES.resx b/ProjectLighthouse.Localization/General.lang-es-ES.resx new file mode 100644 index 00000000..bfb2f43f --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-es-ES.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nombre de usuario + + + Contraseña + + + Registrarse + + + ¿Has olvidado la contraseña? + + + ¡Oh oh! + + + Iniciar sesión + + + Desconocido + + + ¡Éxito! + + + Restablecer contraseña + + + Actividad reciente + + + ¡Próximamente! + + + Fotos más recientes + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-es-MX.resx b/ProjectLighthouse.Localization/General.lang-es-MX.resx index a4d94879..dfea621b 100644 --- a/ProjectLighthouse.Localization/General.lang-es-MX.resx +++ b/ProjectLighthouse.Localization/General.lang-es-MX.resx @@ -18,24 +18,39 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Username + Nombre de Usuario - Password + Contraseña - Register + Registro - Forgot Password? + ¿Olvidaste tu contraseña? - Uh oh! + ¡Uh oh! - Log In + Iniciar Sesión - Unknown + Desconocido + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-et-EE.resx b/ProjectLighthouse.Localization/General.lang-et-EE.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-et-EE.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-fi-FI.resx b/ProjectLighthouse.Localization/General.lang-fi-FI.resx new file mode 100644 index 00000000..49b80ec7 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-fi-FI.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Käyttäjänimi + + + Salasana + + + Rekisteröidy + + + Unohditko salasanasi? + + + Voi ei! + + + Kirjaudu sisään + + + Tuntematon + + + Menestys! + + + Nollaa salasana + + + Viimeaikainen toiminta + + + Tulossa pian! + + + Viimeisimmät kuvat + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-fil-PH.resx b/ProjectLighthouse.Localization/General.lang-fil-PH.resx index b7eb468b..88945423 100644 --- a/ProjectLighthouse.Localization/General.lang-fil-PH.resx +++ b/ProjectLighthouse.Localization/General.lang-fil-PH.resx @@ -36,6 +36,21 @@ Mag log in - Unknown + Hindi kilala + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-fr-FR.resx b/ProjectLighthouse.Localization/General.lang-fr-FR.resx index 1ecc23be..65c30c8a 100644 --- a/ProjectLighthouse.Localization/General.lang-fr-FR.resx +++ b/ProjectLighthouse.Localization/General.lang-fr-FR.resx @@ -36,6 +36,21 @@ Ouvrir une session - Unknown + Inconnu + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-ga-IE.resx b/ProjectLighthouse.Localization/General.lang-ga-IE.resx index 7252d310..bbd6553d 100644 --- a/ProjectLighthouse.Localization/General.lang-ga-IE.resx +++ b/ProjectLighthouse.Localization/General.lang-ga-IE.resx @@ -38,4 +38,19 @@ Unknown + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-he-IL.resx b/ProjectLighthouse.Localization/General.lang-he-IL.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-he-IL.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-hi-IN.resx b/ProjectLighthouse.Localization/General.lang-hi-IN.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-hi-IN.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-id-ID.resx b/ProjectLighthouse.Localization/General.lang-id-ID.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-id-ID.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-it-IT.resx b/ProjectLighthouse.Localization/General.lang-it-IT.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-it-IT.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-ja-JP.resx b/ProjectLighthouse.Localization/General.lang-ja-JP.resx index 47666d0a..b164cd2f 100644 --- a/ProjectLighthouse.Localization/General.lang-ja-JP.resx +++ b/ProjectLighthouse.Localization/General.lang-ja-JP.resx @@ -36,6 +36,21 @@ ログイン - Unknown + 不明 + + + 成功! + + + パスワードのリセット + + + 最近のアクティビティ + + + 近日公開! + + + 最近の写真 \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-nl-NL.resx b/ProjectLighthouse.Localization/General.lang-nl-NL.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-nl-NL.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-no-NO.resx b/ProjectLighthouse.Localization/General.lang-no-NO.resx index 52a1ff93..fafe11cf 100644 --- a/ProjectLighthouse.Localization/General.lang-no-NO.resx +++ b/ProjectLighthouse.Localization/General.lang-no-NO.resx @@ -36,6 +36,21 @@ Logg in - Unknown + Ukjent + + + Suksess! + + + Tilbakestill passord + + + Nyglig aktivitet + + + Kommer snart! + + + Siste bilder \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-pl-PL.resx b/ProjectLighthouse.Localization/General.lang-pl-PL.resx index 1b9d7ee1..9079146a 100644 --- a/ProjectLighthouse.Localization/General.lang-pl-PL.resx +++ b/ProjectLighthouse.Localization/General.lang-pl-PL.resx @@ -36,6 +36,21 @@ Zaloguj się - Unknown + Nieznane + + + Sukces! + + + Zresetuj Hasło + + + Ostatnia Aktywność + + + Dostępne wkrótce! + + + Ostatnie zdjęcia \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-pt-PT.resx b/ProjectLighthouse.Localization/General.lang-pt-PT.resx index 630a52e4..4ec21051 100644 --- a/ProjectLighthouse.Localization/General.lang-pt-PT.resx +++ b/ProjectLighthouse.Localization/General.lang-pt-PT.resx @@ -36,6 +36,21 @@ Iniciar Sessão - Unknown + Desconhecido + + + Sucesso! + + + Repor Palavra-passe + + + Atividades Recentes + + + Em breve! + + + Fotos mais recentes \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-ru-RU.resx b/ProjectLighthouse.Localization/General.lang-ru-RU.resx index f7120d74..8c79526c 100644 --- a/ProjectLighthouse.Localization/General.lang-ru-RU.resx +++ b/ProjectLighthouse.Localization/General.lang-ru-RU.resx @@ -36,6 +36,21 @@ Вход - Unknown + Неизвестно + + + Успешно! + + + Сбросить пароль + + + Recent Activity + + + Скоро будет! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-sv-SE.resx b/ProjectLighthouse.Localization/General.lang-sv-SE.resx index ee0009b1..b543cc11 100644 --- a/ProjectLighthouse.Localization/General.lang-sv-SE.resx +++ b/ProjectLighthouse.Localization/General.lang-sv-SE.resx @@ -36,6 +36,21 @@ Logga in - Unknown + Okänd + + + Succé! + + + Återställ lösenord + + + Senaste aktivitet + + + Kommer snart! + + + Senaste foton \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-th-TH.resx b/ProjectLighthouse.Localization/General.lang-th-TH.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-th-TH.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-tr-TR.resx b/ProjectLighthouse.Localization/General.lang-tr-TR.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-tr-TR.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-uk-UA.resx b/ProjectLighthouse.Localization/General.lang-uk-UA.resx new file mode 100644 index 00000000..e78d2849 --- /dev/null +++ b/ProjectLighthouse.Localization/General.lang-uk-UA.resx @@ -0,0 +1,56 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Username + + + Password + + + Register + + + Forgot Password? + + + Uh oh! + + + Log In + + + Unknown + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-zh-CN.resx b/ProjectLighthouse.Localization/General.lang-zh-CN.resx index d520df7a..c47dce25 100644 --- a/ProjectLighthouse.Localization/General.lang-zh-CN.resx +++ b/ProjectLighthouse.Localization/General.lang-zh-CN.resx @@ -36,6 +36,21 @@ 登入 - Unknown + 未知 + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.lang-zh-TW.resx b/ProjectLighthouse.Localization/General.lang-zh-TW.resx index 341f4e41..601772cf 100644 --- a/ProjectLighthouse.Localization/General.lang-zh-TW.resx +++ b/ProjectLighthouse.Localization/General.lang-zh-TW.resx @@ -36,6 +36,21 @@ 登入 - Unknown + 未知 + + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos \ No newline at end of file diff --git a/ProjectLighthouse.Localization/General.resx b/ProjectLighthouse.Localization/General.resx index 99b27d7d..f3bd12b5 100644 --- a/ProjectLighthouse.Localization/General.resx +++ b/ProjectLighthouse.Localization/General.resx @@ -39,4 +39,19 @@ Unknown + + Success! + + + Reset Password + + + Recent Activity + + + Coming soon! + + + Most recent photos + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-da-DK.resx b/ProjectLighthouse.Localization/LandingPage.lang-da-DK.resx index 160394c2..8a8ca8e0 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-da-DK.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-da-DK.resx @@ -1,62 +1,54 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Velkommen til {0}! A greeting on the main page of the website. - - + Du er i øjeblikket logget ind som {0}. A greeting on the main page of the website. - - + Der er ingen brugere online. Hvorfor ikke hoppe på? A greeting on the main page of the website. - - + Der er 1 bruger online: A greeting on the main page of the website. - - + Der er {0} brugere online: A greeting on the main page of the website. - - + Du har {0} godkendelsesforsøg afventende. Klik her for at se dem. A greeting on the main page of the website. - - + Seneste Baner - - + Seneste Team Picks \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-en-PT.resx b/ProjectLighthouse.Localization/LandingPage.lang-en-PT.resx new file mode 100644 index 00000000..8f3fd263 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-en-PT.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Ye be welcome to {0}! + A greeting on the main page of the website. + + + Ye be currently logged in as {0}. + A greeting on the main page of the website. + + + There be no users online. Why not 'op on? + A greeting on the main page of the website. + + + There be 1 user currently online: + A greeting on the main page of the website. + + + There be currently {0} users online: + A greeting on the main page of the website. + + + Ye 'ave {0} authentication attempts pendin'. Click 'ere to view them. + A greeting on the main page of the website. + + + Latest Tales + + + Latest Legends + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-eo-UY.resx b/ProjectLighthouse.Localization/LandingPage.lang-eo-UY.resx index 17c09a1d..80128e9d 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-eo-UY.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-eo-UY.resx @@ -1,62 +1,54 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Welcome to {0}! + + + Bonvenon al {0}! A greeting on the main page of the website. - - + Vi ensalutinta kiel {0}. A greeting on the main page of the website. - - + Ne estas uzantoj enretaj. Kial ne sursalti? A greeting on the main page of the website. - - + Estas 1 uzanto enreta: A greeting on the main page of the website. - - + Estas {0} uzantoj enretaj: A greeting on the main page of the website. - - + Vi havas {0} pritraktatajn aŭtentigajn provojn. Klaku ĉi tie por vidi ilin. A greeting on the main page of the website. - - - Newest Levels + + Plej Novaj Niveloj - - - Latest Team Picks + + Plej Novaj Teamaj Elektoj \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-es-ES.resx b/ProjectLighthouse.Localization/LandingPage.lang-es-ES.resx new file mode 100644 index 00000000..8b9e26e3 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-es-ES.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Bienvenido a {0} + A greeting on the main page of the website. + + + Actualmente has iniciado sesión como {0} + A greeting on the main page of the website. + + + No hay usuarios en línea. ¿Por qué no te unes? + A greeting on the main page of the website. + + + Actualmente hay un usuario en línea: + A greeting on the main page of the website. + + + Actualmente hay {0} usuarios en línea: + A greeting on the main page of the website. + + + Tienes {0} intentos de autenticación pendientes. Haz clic aquí para verlos + A greeting on the main page of the website. + + + Niveles recientes + + + Selecciones del equipo más recientes + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-es-MX.resx b/ProjectLighthouse.Localization/LandingPage.lang-es-MX.resx index 874ee983..036488e7 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-es-MX.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-es-MX.resx @@ -1,62 +1,54 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Welcome to {0}! + + + ¡Bienvenido a {0}! A greeting on the main page of the website. - - + Estás conectado actualmente como {0} A greeting on the main page of the website. - - + No hay usuarios en línea. ¿Por qué no subirse? A greeting on the main page of the website. - - + Hay 1 usuario actualmente en línea: A greeting on the main page of the website. - - + Actualmente hay {0} usuarios en línea: A greeting on the main page of the website. - - + Tiene {0} intentos de autenticación pendientes. Haga clic aquí para verlos. A greeting on the main page of the website. - - - Newest Levels + + Niveles más nuevos - - - Latest Team Picks + + Últimos niveles selecciónados \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-et-EE.resx b/ProjectLighthouse.Localization/LandingPage.lang-et-EE.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-et-EE.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-fi-FI.resx b/ProjectLighthouse.Localization/LandingPage.lang-fi-FI.resx new file mode 100644 index 00000000..509ec19b --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-fi-FI.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Tervetuloa {0}! + A greeting on the main page of the website. + + + Olet tällä hetkellä kirjautunut sisään käyttäjänä {0}. + A greeting on the main page of the website. + + + Kukaan käyttäjistä ei ole Online-tilassa. + A greeting on the main page of the website. + + + Yksi käyttäjä on tällä hetkellä Online-tilassa: + A greeting on the main page of the website. + + + {0} käyttäjää on tällä hetkellä Online-tilassa: + A greeting on the main page of the website. + + + Sinulla on {0} todennusta jäljellä. Klikkaa tästä nähdäksesi ne. + A greeting on the main page of the website. + + + Uusimmat Kentät. + + + Viimeisimmät Tiimin Valinnat + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-he-IL.resx b/ProjectLighthouse.Localization/LandingPage.lang-he-IL.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-he-IL.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-hi-IN.resx b/ProjectLighthouse.Localization/LandingPage.lang-hi-IN.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-hi-IN.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-id-ID.resx b/ProjectLighthouse.Localization/LandingPage.lang-id-ID.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-id-ID.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-it-IT.resx b/ProjectLighthouse.Localization/LandingPage.lang-it-IT.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-it-IT.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-ja-JP.resx b/ProjectLighthouse.Localization/LandingPage.lang-ja-JP.resx index 3611578d..8d478b27 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-ja-JP.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-ja-JP.resx @@ -1,62 +1,54 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + {0}へようこそ A greeting on the main page of the website. - - + {0}がログインしています A greeting on the main page of the website. - - + オンラインユーザーはなし A greeting on the main page of the website. - - + 1人のユーザーがオンライン A greeting on the main page of the website. - - + {0}人のユーザーがオンライン A greeting on the main page of the website. - - + {0} の認証が保留中です。ここをクリックして確認してください。 A greeting on the main page of the website. - - + 最新のレベル - - + 最新のチームピック \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-nl-NL.resx b/ProjectLighthouse.Localization/LandingPage.lang-nl-NL.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-nl-NL.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-no-NO.resx b/ProjectLighthouse.Localization/LandingPage.lang-no-NO.resx index bb049a4d..f2e9ee3b 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-no-NO.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-no-NO.resx @@ -1,62 +1,54 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + Velkommen til {0} A greeting on the main page of the website. - - + Du er logget inn som {0} A greeting on the main page of the website. - - + Det er ingen brukere på. Hvorfor ikke hoppe på? A greeting on the main page of the website. - - + Det er 1 bruker på for øyeblikket: A greeting on the main page of the website. - - + For tiden er {0} brukere pålogget: A greeting on the main page of the website. - - + Du har {0} autentiseringsforsøk. Klikk her for å se dem. A greeting on the main page of the website. - - + Nyeste nivåer - - + Siste lag valg \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-sv-SE.resx b/ProjectLighthouse.Localization/LandingPage.lang-sv-SE.resx index 20a803cc..ee257412 100644 --- a/ProjectLighthouse.Localization/LandingPage.lang-sv-SE.resx +++ b/ProjectLighthouse.Localization/LandingPage.lang-sv-SE.resx @@ -49,6 +49,6 @@ Senaste Banor - Senaste Team Picks + Senaste Teamets val \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-th-TH.resx b/ProjectLighthouse.Localization/LandingPage.lang-th-TH.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-th-TH.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-tr-TR.resx b/ProjectLighthouse.Localization/LandingPage.lang-tr-TR.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-tr-TR.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LandingPage.lang-uk-UA.resx b/ProjectLighthouse.Localization/LandingPage.lang-uk-UA.resx new file mode 100644 index 00000000..6a297b27 --- /dev/null +++ b/ProjectLighthouse.Localization/LandingPage.lang-uk-UA.resx @@ -0,0 +1,54 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Welcome to {0}! + A greeting on the main page of the website. + + + You are currently logged in as {0}. + A greeting on the main page of the website. + + + There are no users online. Why not hop on? + A greeting on the main page of the website. + + + There is 1 user currently online: + A greeting on the main page of the website. + + + There are currently {0} users online: + A greeting on the main page of the website. + + + You have {0} authentication attempts pending. Click here to view them. + A greeting on the main page of the website. + + + Newest Levels + + + Latest Team Picks + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LocalizationManager.cs b/ProjectLighthouse.Localization/LocalizationManager.cs index f7334cb6..a29fdf16 100644 --- a/ProjectLighthouse.Localization/LocalizationManager.cs +++ b/ProjectLighthouse.Localization/LocalizationManager.cs @@ -7,10 +7,12 @@ namespace LBPUnion.ProjectLighthouse.Localization; public static class LocalizationManager { private static readonly string namespaceStr = typeof(LocalizationManager).Namespace ?? ""; - public const string DefaultLang = "en-US"; + public const string DefaultLang = "en"; public static string GetLocalizedString(TranslationAreas translationArea, string language, string key) { +// return $"{translationArea.ToString()}.{language}.{key}"; + // ASP.NET requires specific names for certain languages (like ja for japanese as opposed to the standard ja-JP) // We map that value back here. language = mapLanguageBack(language); @@ -21,7 +23,7 @@ public static class LocalizationManager string resourceBasename = $"{namespaceStr}.{translationArea.ToString()}"; - // We don't have an en-US .resx, so if we aren't using en-US then we need to add the appropriate language. + // We don't have an en .resx, so if we aren't using en then we need to add the appropriate language. // Otherwise, keep it to the normal .resx file // e.g. BaseLayout.resx as opposed to BaseLayout.lang-da-DK.resx. if (language != DefaultLang) resourceBasename += $".lang-{language}"; @@ -47,7 +49,7 @@ public static class LocalizationManager return $"{translationArea.ToString()}.{language}.{key}"; } - return localizedString; + return localizedString.Replace("\\n", "\n"); } // If a language isn't working, it might be because a language is using a different name than what ASP.NET expects. diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-da-DK.resx b/ProjectLighthouse.Localization/LoggedOut.lang-da-DK.resx index 2c1315cd..7242687c 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-da-DK.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-da-DK.resx @@ -1,29 +1,29 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Logget ud - + Du er blevet logget ud. Du vil blive omdirigeret om 5 sekunder, eller du kan klikke nedenfor for at gøre det manuelt. - + Omdiriger \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-en-PT.resx b/ProjectLighthouse.Localization/LoggedOut.lang-en-PT.resx new file mode 100644 index 00000000..928fc0fb --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-en-PT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Gone to rest + + + Ye 'ave been successfully logged out. Ye be redirected in 5 seconds, or ye may click below to do so manually. + + + Travel + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-eo-UY.resx b/ProjectLighthouse.Localization/LoggedOut.lang-eo-UY.resx index 9f53122d..3df18706 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-eo-UY.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-eo-UY.resx @@ -1,29 +1,29 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Logged Out + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Elsalutita - - You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + Vi estis sukcese elsalutinta. Vi estos redirektita en 5 sekundoj, aŭ vi povas alklaki sube por fari tion permane. - - Redirect + + Plusendo \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-es-ES.resx b/ProjectLighthouse.Localization/LoggedOut.lang-es-ES.resx new file mode 100644 index 00000000..2b6c1b62 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-es-ES.resx @@ -0,0 +1,30 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sesión cerrada + + + Has cerrado sesión satisfactoriamente. +Serás redirigido en 5 segundos, o haz clic aquí abajo para hacerlo manualmente + + + Redirigido + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-es-MX.resx b/ProjectLighthouse.Localization/LoggedOut.lang-es-MX.resx index 9f53122d..d23af8b0 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-es-MX.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-es-MX.resx @@ -1,29 +1,29 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Logged Out + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cerrado sesión - - You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + Has cerrado la sesión con éxito. Serás redirigido en 5 segundos, o puedes hacer clic abajo para hacerlo manualmente. - - Redirect + + Redirigir \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-et-EE.resx b/ProjectLighthouse.Localization/LoggedOut.lang-et-EE.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-et-EE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-fi-FI.resx b/ProjectLighthouse.Localization/LoggedOut.lang-fi-FI.resx new file mode 100644 index 00000000..1326dfa8 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-fi-FI.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Kirjauduttu Ulos + + + Sinut on onnistuneesti kirjattu ulos. Sinut ohjataan uudelleen 5 sekunnin kuluttua, tai voit klikata alla olevaa linkkiä tehdäksesi sen manuaalisesti. + + + Uudelleenohjaus + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-he-IL.resx b/ProjectLighthouse.Localization/LoggedOut.lang-he-IL.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-he-IL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-hi-IN.resx b/ProjectLighthouse.Localization/LoggedOut.lang-hi-IN.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-hi-IN.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-id-ID.resx b/ProjectLighthouse.Localization/LoggedOut.lang-id-ID.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-id-ID.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-it-IT.resx b/ProjectLighthouse.Localization/LoggedOut.lang-it-IT.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-it-IT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-ja-JP.resx b/ProjectLighthouse.Localization/LoggedOut.lang-ja-JP.resx index 09810770..a81d769d 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-ja-JP.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-ja-JP.resx @@ -1,29 +1,29 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ログアウトしました - + 正常にログアウトされました。5秒後にリダイレクトされるか、以下をクリックして手動でログアウトできます。 - + リダイレクト \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-nl-NL.resx b/ProjectLighthouse.Localization/LoggedOut.lang-nl-NL.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-nl-NL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-no-NO.resx b/ProjectLighthouse.Localization/LoggedOut.lang-no-NO.resx index a33eb4e2..366ce1ec 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-no-NO.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-no-NO.resx @@ -1,29 +1,29 @@ - - + + - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Logget ut - + Du har blitt logget ut. Du vil bli omdirigert om 5 sekunder, eller du kan klikke nedenfor for å gjøre det manuelt. - + Videresend \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-sv-SE.resx b/ProjectLighthouse.Localization/LoggedOut.lang-sv-SE.resx index 031ea76b..fac1f700 100644 --- a/ProjectLighthouse.Localization/LoggedOut.lang-sv-SE.resx +++ b/ProjectLighthouse.Localization/LoggedOut.lang-sv-SE.resx @@ -21,7 +21,7 @@ Utloggad - Du har loggat ut. Om 5 sekunder kommer du bli omderigerad, eller kan du klicka på knappen under, manuellt. + Du har loggat ut. Om 5 sekunder kommer du bli omdirigerad, eller kan du klicka på knappen under, manuellt. Omdirigera diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-th-TH.resx b/ProjectLighthouse.Localization/LoggedOut.lang-th-TH.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-th-TH.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-tr-TR.resx b/ProjectLighthouse.Localization/LoggedOut.lang-tr-TR.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-tr-TR.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-uk-UA.resx b/ProjectLighthouse.Localization/LoggedOut.lang-uk-UA.resx new file mode 100644 index 00000000..7a193889 --- /dev/null +++ b/ProjectLighthouse.Localization/LoggedOut.lang-uk-UA.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logged Out + + + You have been successfully logged out. You will be redirected in 5 seconds, or you may click below to do so manually. + + + Redirect + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-ar-SA.resx b/ProjectLighthouse.Localization/Profile.lang-ar-SA.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-ar-SA.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-da-DK.resx b/ProjectLighthouse.Localization/Profile.lang-da-DK.resx new file mode 100644 index 00000000..35ad6f9c --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-da-DK.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografi + + + {0} har ikke introduceret sig selv endnu. + + + {0}'s brugerside + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-de-DE.resx b/ProjectLighthouse.Localization/Profile.lang-de-DE.resx new file mode 100644 index 00000000..ffe7290c --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-de-DE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Beschreibung + + + {0} hat sich noch nicht vorgestellt. + + + {0}s Profilseite + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-en-PT.resx b/ProjectLighthouse.Localization/Profile.lang-en-PT.resx new file mode 100644 index 00000000..25f48bc4 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-en-PT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Journal + + + {0} 'asn't introduced themselves yet. + + + {0}'s ship + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-eo-UY.resx b/ProjectLighthouse.Localization/Profile.lang-eo-UY.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-eo-UY.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-es-ES.resx b/ProjectLighthouse.Localization/Profile.lang-es-ES.resx new file mode 100644 index 00000000..91111c98 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-es-ES.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografía + + + {0} No se ha presentado aún + + + Página de usuario de {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-es-MX.resx b/ProjectLighthouse.Localization/Profile.lang-es-MX.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-es-MX.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-et-EE.resx b/ProjectLighthouse.Localization/Profile.lang-et-EE.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-et-EE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-fi-FI.resx b/ProjectLighthouse.Localization/Profile.lang-fi-FI.resx new file mode 100644 index 00000000..633abf6e --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-fi-FI.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Elämäkerta + + + {0} ei ole vielä esitellyt itseään. + + + {0}n käyttäjäsivu + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-fil-PH.resx b/ProjectLighthouse.Localization/Profile.lang-fil-PH.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-fil-PH.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-fr-FR.resx b/ProjectLighthouse.Localization/Profile.lang-fr-FR.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-fr-FR.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-ga-IE.resx b/ProjectLighthouse.Localization/Profile.lang-ga-IE.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-ga-IE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-he-IL.resx b/ProjectLighthouse.Localization/Profile.lang-he-IL.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-he-IL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-hi-IN.resx b/ProjectLighthouse.Localization/Profile.lang-hi-IN.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-hi-IN.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-id-ID.resx b/ProjectLighthouse.Localization/Profile.lang-id-ID.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-id-ID.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-it-IT.resx b/ProjectLighthouse.Localization/Profile.lang-it-IT.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-it-IT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-ja-JP.resx b/ProjectLighthouse.Localization/Profile.lang-ja-JP.resx new file mode 100644 index 00000000..a4aa4624 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-ja-JP.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 自己紹介 + + + {0} はまだ自己紹介していません + + + {0}のページ + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-nl-NL.resx b/ProjectLighthouse.Localization/Profile.lang-nl-NL.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-nl-NL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-no-NO.resx b/ProjectLighthouse.Localization/Profile.lang-no-NO.resx new file mode 100644 index 00000000..b8c762e7 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-no-NO.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografi + + + {0} har ikke introdusert seg selv ennå. + + + {0} sin brukerside + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-pl-PL.resx b/ProjectLighthouse.Localization/Profile.lang-pl-PL.resx new file mode 100644 index 00000000..822cc1e6 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-pl-PL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografia + + + {0} jeszcze się nie przedstawił. + + + Strona użytkownika {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-pt-PT.resx b/ProjectLighthouse.Localization/Profile.lang-pt-PT.resx new file mode 100644 index 00000000..cbe8cd8a --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-pt-PT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografia + + + {0} ainda não se apresentou. + + + Página do usuário {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-ru-RU.resx b/ProjectLighthouse.Localization/Profile.lang-ru-RU.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-ru-RU.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-sv-SE.resx b/ProjectLighthouse.Localization/Profile.lang-sv-SE.resx new file mode 100644 index 00000000..bf3f79ab --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-sv-SE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biografi + + + {0} har inte presenterat sig än. + + + {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-th-TH.resx b/ProjectLighthouse.Localization/Profile.lang-th-TH.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-th-TH.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-tr-TR.resx b/ProjectLighthouse.Localization/Profile.lang-tr-TR.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-tr-TR.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-uk-UA.resx b/ProjectLighthouse.Localization/Profile.lang-uk-UA.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-uk-UA.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-zh-CN.resx b/ProjectLighthouse.Localization/Profile.lang-zh-CN.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-zh-CN.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.lang-zh-TW.resx b/ProjectLighthouse.Localization/Profile.lang-zh-TW.resx new file mode 100644 index 00000000..e3252b0b --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.lang-zh-TW.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Profile.resx b/ProjectLighthouse.Localization/Profile.resx new file mode 100644 index 00000000..fb0fade3 --- /dev/null +++ b/ProjectLighthouse.Localization/Profile.resx @@ -0,0 +1,30 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Biography + + + {0} hasn't introduced themselves yet. + + + {0}'s user page + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Program.cs b/ProjectLighthouse.Localization/Program.cs deleted file mode 100644 index a4603129..00000000 --- a/ProjectLighthouse.Localization/Program.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Reflection; - -namespace LBPUnion.ProjectLighthouse.Localization; - -public static class Program -{ - public static void Main() - { - Console.WriteLine("Resource files loaded:"); - foreach (string resourceFile in Assembly.GetExecutingAssembly().GetManifestResourceNames()) - { - Console.WriteLine(" " + resourceFile); - } - - Console.Write('\n'); - - foreach (string language in LocalizationManager.GetAvailableLanguages()) - { - Console.WriteLine(LocalizationManager.GetLocalizedString(TranslationAreas.BaseLayout, language, "header_home")); - } - } -} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj b/ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj index 2d0984a7..50028a67 100644 --- a/ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj +++ b/ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj @@ -5,7 +5,6 @@ enable enable LBPUnion.ProjectLighthouse.Localization - Exe @@ -25,6 +24,18 @@ ResXFileCodeGenerator Status.Designer.cs + + ResXFileCodeGenerator + Register.Designer.cs + + + ResXFileCodeGenerator + Error.Designer.cs + + + ResXFileCodeGenerator + Profile.Designer.cs + ResXFileCodeGenerator ModPanel.Designer.cs diff --git a/ProjectLighthouse.Localization/Register.lang-ar-SA.resx b/ProjectLighthouse.Localization/Register.lang-ar-SA.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-ar-SA.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-da-DK.resx b/ProjectLighthouse.Localization/Register.lang-da-DK.resx new file mode 100644 index 00000000..9b74543a --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-da-DK.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Forsigtig: Dit brugernavn SKAL matche dit PSN/RPCN brugernavn for at kunne logge ind i spillet. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-de-DE.resx b/ProjectLighthouse.Localization/Register.lang-de-DE.resx new file mode 100644 index 00000000..b0b4e8a6 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-de-DE.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Wichtig: Dein Benutzername MUSS mit deiner PSN/RPCN Online-ID übereinstimmen, damit du dich im Spiel anmelden kannst. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-en-PT.resx b/ProjectLighthouse.Localization/Register.lang-en-PT.resx new file mode 100644 index 00000000..d6a400dd --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-en-PT.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Yer username must match yer PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-eo-UY.resx b/ProjectLighthouse.Localization/Register.lang-eo-UY.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-eo-UY.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-es-ES.resx b/ProjectLighthouse.Localization/Register.lang-es-ES.resx new file mode 100644 index 00000000..62028824 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-es-ES.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Precaución: tu nombre de usuario DEBE coincidir con tu cuenta de PSN/RPCN para poder iniciar sesión en el juego + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-es-MX.resx b/ProjectLighthouse.Localization/Register.lang-es-MX.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-es-MX.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-et-EE.resx b/ProjectLighthouse.Localization/Register.lang-et-EE.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-et-EE.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-fi-FI.resx b/ProjectLighthouse.Localization/Register.lang-fi-FI.resx new file mode 100644 index 00000000..ed0029f1 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-fi-FI.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Varoitus: Käyttäjänimesi TÄYTYY sovittaa PSN/RPCN-käyttäjätunnukseesi, jotta voit kirjautua sisään pelin sisällä. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-fil-PH.resx b/ProjectLighthouse.Localization/Register.lang-fil-PH.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-fil-PH.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-fr-FR.resx b/ProjectLighthouse.Localization/Register.lang-fr-FR.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-fr-FR.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-ga-IE.resx b/ProjectLighthouse.Localization/Register.lang-ga-IE.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-ga-IE.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-he-IL.resx b/ProjectLighthouse.Localization/Register.lang-he-IL.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-he-IL.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-hi-IN.resx b/ProjectLighthouse.Localization/Register.lang-hi-IN.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-hi-IN.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-id-ID.resx b/ProjectLighthouse.Localization/Register.lang-id-ID.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-id-ID.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-it-IT.resx b/ProjectLighthouse.Localization/Register.lang-it-IT.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-it-IT.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-ja-JP.resx b/ProjectLighthouse.Localization/Register.lang-ja-JP.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-ja-JP.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-nl-NL.resx b/ProjectLighthouse.Localization/Register.lang-nl-NL.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-nl-NL.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-no-NO.resx b/ProjectLighthouse.Localization/Register.lang-no-NO.resx new file mode 100644 index 00000000..cc7a2834 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-no-NO.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Forsiktig: Brukernavnet ditt MÅ samsvare med PSN/RPCN-brukernavnet ditt for å kunne logge på fra i spillet. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-pl-PL.resx b/ProjectLighthouse.Localization/Register.lang-pl-PL.resx new file mode 100644 index 00000000..4c35c692 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-pl-PL.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Uwaga: twoja nazwa użytkownika MUSI pasować do twojej nazwy użytkownika PSN lub RPCN, aby móc się zalogować w grze. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-pt-PT.resx b/ProjectLighthouse.Localization/Register.lang-pt-PT.resx new file mode 100644 index 00000000..1cc29082 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-pt-PT.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Atenção: Seu nome de usuário PRECISA combinar com o seu nome de usuário PSN/RPCN para poder entrar no jogo. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-ru-RU.resx b/ProjectLighthouse.Localization/Register.lang-ru-RU.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-ru-RU.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-sv-SE.resx b/ProjectLighthouse.Localization/Register.lang-sv-SE.resx new file mode 100644 index 00000000..f56e424c --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-sv-SE.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Varning: Ditt användarnamn MÅSTE matcha ditt PSN/RPCN användarnamn för att kunna logga in i spelet. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-th-TH.resx b/ProjectLighthouse.Localization/Register.lang-th-TH.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-th-TH.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-tr-TR.resx b/ProjectLighthouse.Localization/Register.lang-tr-TR.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-tr-TR.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-uk-UA.resx b/ProjectLighthouse.Localization/Register.lang-uk-UA.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-uk-UA.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-zh-CN.resx b/ProjectLighthouse.Localization/Register.lang-zh-CN.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-zh-CN.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.lang-zh-TW.resx b/ProjectLighthouse.Localization/Register.lang-zh-TW.resx new file mode 100644 index 00000000..abd741d2 --- /dev/null +++ b/ProjectLighthouse.Localization/Register.lang-zh-TW.resx @@ -0,0 +1,23 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Register.resx b/ProjectLighthouse.Localization/Register.resx new file mode 100644 index 00000000..15a1183e --- /dev/null +++ b/ProjectLighthouse.Localization/Register.resx @@ -0,0 +1,24 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Caution: Your username MUST match your PSN/RPCN username in order to be able to sign in from in-game. + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-ar-SA.resx b/ProjectLighthouse.Localization/Status.lang-ar-SA.resx index 6669ee19..151385a9 100644 --- a/ProjectLighthouse.Localization/Status.lang-ar-SA.resx +++ b/ProjectLighthouse.Localization/Status.lang-ar-SA.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + متصل حاليا على {0} في {1} - Offline + غير مُتصل - Offline since {0} + غير متصل منذ {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-da-DK.resx b/ProjectLighthouse.Localization/Status.lang-da-DK.resx index 6669ee19..dc45d96e 100644 --- a/ProjectLighthouse.Localization/Status.lang-da-DK.resx +++ b/ProjectLighthouse.Localization/Status.lang-da-DK.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Nu online på {0} på {1} Offline - Offline since {0} + Offline siden {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-de-DE.resx b/ProjectLighthouse.Localization/Status.lang-de-DE.resx index 6669ee19..6bb4b095 100644 --- a/ProjectLighthouse.Localization/Status.lang-de-DE.resx +++ b/ProjectLighthouse.Localization/Status.lang-de-DE.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Spielt gerade {0} auf {1} Offline - Offline since {0} + Offline seit {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-en-PT.resx b/ProjectLighthouse.Localization/Status.lang-en-PT.resx new file mode 100644 index 00000000..8f063e25 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-en-PT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently sailin' at {0} on {1} + + + Out fishin' + + + Out fishin' since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-eo-UY.resx b/ProjectLighthouse.Localization/Status.lang-eo-UY.resx index 6669ee19..79881906 100644 --- a/ProjectLighthouse.Localization/Status.lang-eo-UY.resx +++ b/ProjectLighthouse.Localization/Status.lang-eo-UY.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Nuntempe interrete sur {0} sur {1} - Offline + Eksterretas - Offline since {0} + Eksterrete ekde {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-es-ES.resx b/ProjectLighthouse.Localization/Status.lang-es-ES.resx new file mode 100644 index 00000000..72d34b34 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-es-ES.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actualmente en línea en {0} en {1} + + + Desconectado + + + Desconectado desde hace {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-es-MX.resx b/ProjectLighthouse.Localization/Status.lang-es-MX.resx index 6669ee19..bc34dc95 100644 --- a/ProjectLighthouse.Localization/Status.lang-es-MX.resx +++ b/ProjectLighthouse.Localization/Status.lang-es-MX.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Actualmente conectado el {0} del {1} - Offline + Desconectado - Offline since {0} + Desconectado desde {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-et-EE.resx b/ProjectLighthouse.Localization/Status.lang-et-EE.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-et-EE.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-fi-FI.resx b/ProjectLighthouse.Localization/Status.lang-fi-FI.resx new file mode 100644 index 00000000..f1fae852 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-fi-FI.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tällä hetkellä Online-tilassa {0} {1}:ssa + + + Offline-tilassa + + + Offline-tilassa {0} jälkeen + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-fil-PH.resx b/ProjectLighthouse.Localization/Status.lang-fil-PH.resx index 6669ee19..1fcb4498 100644 --- a/ProjectLighthouse.Localization/Status.lang-fil-PH.resx +++ b/ProjectLighthouse.Localization/Status.lang-fil-PH.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Kasalukuyang online sa {0} sa {1} Offline - Offline since {0} + Offline mula noong {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-he-IL.resx b/ProjectLighthouse.Localization/Status.lang-he-IL.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-he-IL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-hi-IN.resx b/ProjectLighthouse.Localization/Status.lang-hi-IN.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-hi-IN.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-id-ID.resx b/ProjectLighthouse.Localization/Status.lang-id-ID.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-id-ID.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-it-IT.resx b/ProjectLighthouse.Localization/Status.lang-it-IT.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-it-IT.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-ja-JP.resx b/ProjectLighthouse.Localization/Status.lang-ja-JP.resx index 6669ee19..5d835d24 100644 --- a/ProjectLighthouse.Localization/Status.lang-ja-JP.resx +++ b/ProjectLighthouse.Localization/Status.lang-ja-JP.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + 現在 {0} に {1} でオンライン - Offline + オフライン - Offline since {0} + {0} からオフライン \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-nl-NL.resx b/ProjectLighthouse.Localization/Status.lang-nl-NL.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-nl-NL.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-no-NO.resx b/ProjectLighthouse.Localization/Status.lang-no-NO.resx index 6669ee19..62f43274 100644 --- a/ProjectLighthouse.Localization/Status.lang-no-NO.resx +++ b/ProjectLighthouse.Localization/Status.lang-no-NO.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + For øyeblikket tilkoblet {0} på {1} - Offline + Frakoblet - Offline since {0} + Frakoblet siden {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-pl-PL.resx b/ProjectLighthouse.Localization/Status.lang-pl-PL.resx index 6669ee19..c894c9b5 100644 --- a/ProjectLighthouse.Localization/Status.lang-pl-PL.resx +++ b/ProjectLighthouse.Localization/Status.lang-pl-PL.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Online na {0} na {1} Offline - Offline since {0} + Offline od {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-pt-PT.resx b/ProjectLighthouse.Localization/Status.lang-pt-PT.resx index 6669ee19..f09d2460 100644 --- a/ProjectLighthouse.Localization/Status.lang-pt-PT.resx +++ b/ProjectLighthouse.Localization/Status.lang-pt-PT.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Atualmente online em {0} na {1} Offline - Offline since {0} + Offline desde {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-ru-RU.resx b/ProjectLighthouse.Localization/Status.lang-ru-RU.resx index 6669ee19..ba574bfb 100644 --- a/ProjectLighthouse.Localization/Status.lang-ru-RU.resx +++ b/ProjectLighthouse.Localization/Status.lang-ru-RU.resx @@ -21,7 +21,7 @@ Currently online on {0} on {1} - Offline + Не в сети Offline since {0} diff --git a/ProjectLighthouse.Localization/Status.lang-sv-SE.resx b/ProjectLighthouse.Localization/Status.lang-sv-SE.resx index 6669ee19..a87b1ce0 100644 --- a/ProjectLighthouse.Localization/Status.lang-sv-SE.resx +++ b/ProjectLighthouse.Localization/Status.lang-sv-SE.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + Spelar {0}, {1} Offline - Offline since {0} + Offline sedan {0} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-th-TH.resx b/ProjectLighthouse.Localization/Status.lang-th-TH.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-th-TH.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-tr-TR.resx b/ProjectLighthouse.Localization/Status.lang-tr-TR.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-tr-TR.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-uk-UA.resx b/ProjectLighthouse.Localization/Status.lang-uk-UA.resx new file mode 100644 index 00000000..6669ee19 --- /dev/null +++ b/ProjectLighthouse.Localization/Status.lang-uk-UA.resx @@ -0,0 +1,29 @@ + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Currently online on {0} on {1} + + + Offline + + + Offline since {0} + + \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-zh-CN.resx b/ProjectLighthouse.Localization/Status.lang-zh-CN.resx index 6669ee19..c257cc22 100644 --- a/ProjectLighthouse.Localization/Status.lang-zh-CN.resx +++ b/ProjectLighthouse.Localization/Status.lang-zh-CN.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + 目前在 {0} 于 {1} 在线 - Offline + 离线 - Offline since {0} + 自{0}以来离线 \ No newline at end of file diff --git a/ProjectLighthouse.Localization/Status.lang-zh-TW.resx b/ProjectLighthouse.Localization/Status.lang-zh-TW.resx index 6669ee19..dc480bda 100644 --- a/ProjectLighthouse.Localization/Status.lang-zh-TW.resx +++ b/ProjectLighthouse.Localization/Status.lang-zh-TW.resx @@ -18,12 +18,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Currently online on {0} on {1} + 目前在 {0} 於 {1} 在線 - Offline + 離線 - Offline since {0} + 自{0}以來離線 \ No newline at end of file diff --git a/ProjectLighthouse.Localization/StringLists/BaseLayoutStrings.cs b/ProjectLighthouse.Localization/StringLists/BaseLayoutStrings.cs index 52fe7f61..f6f2b9e8 100644 --- a/ProjectLighthouse.Localization/StringLists/BaseLayoutStrings.cs +++ b/ProjectLighthouse.Localization/StringLists/BaseLayoutStrings.cs @@ -14,5 +14,15 @@ public static class BaseLayoutStrings public static readonly TranslatableString HeaderModPanel = create("header_modPanel"); public static readonly TranslatableString HeaderLogout = create("header_logout"); + public static readonly TranslatableString GeneratedBy = create("generated_by"); + public static readonly TranslatableString GeneratedModified = create("generated_modified"); + + public static readonly TranslatableString JavaScriptWarnTitle = create("js_warn_title"); + public static readonly TranslatableString JavaScriptWarn = create("js_warn"); + public static readonly TranslatableString LicenseWarnTitle = create("license_warn_title"); + public static readonly TranslatableString LicenseWarn1 = create("license_warn_1"); + public static readonly TranslatableString LicenseWarn2 = create("license_warn_2"); + public static readonly TranslatableString LicenseWarn3 = create("license_warn_3"); + private static TranslatableString create(string key) => new(TranslationAreas.BaseLayout, key); } \ No newline at end of file diff --git a/ProjectLighthouse.Localization/StringLists/ErrorStrings.cs b/ProjectLighthouse.Localization/StringLists/ErrorStrings.cs new file mode 100644 index 00000000..ea942865 --- /dev/null +++ b/ProjectLighthouse.Localization/StringLists/ErrorStrings.cs @@ -0,0 +1,16 @@ +namespace LBPUnion.ProjectLighthouse.Localization.StringLists; + +public static class ErrorStrings +{ + public static readonly TranslatableString UsernameInvalid = create("username_invalid"); + public static readonly TranslatableString UsernameTaken = create("username_taken"); + public static readonly TranslatableString PasswordInvalid = create("password_invalid"); + public static readonly TranslatableString PasswordDoesntMatch = create("password_doesnt_match"); + public static readonly TranslatableString EmailInvalid = create("email_invalid"); + public static readonly TranslatableString EmailTaken = create("email_taken"); + public static readonly TranslatableString CaptchaFailed = create("captcha_failed"); + public static readonly TranslatableString TokenInvalid = create("token_invalid"); + public static readonly TranslatableString UserIsBanned = create("user_banned"); + + private static TranslatableString create(string key) => new(TranslationAreas.Error, key); +} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/StringLists/GeneralStrings.cs b/ProjectLighthouse.Localization/StringLists/GeneralStrings.cs index 1b17015e..1b30afc9 100644 --- a/ProjectLighthouse.Localization/StringLists/GeneralStrings.cs +++ b/ProjectLighthouse.Localization/StringLists/GeneralStrings.cs @@ -5,10 +5,15 @@ public static class GeneralStrings public static readonly TranslatableString Username = create("username"); public static readonly TranslatableString Password = create("password"); public static readonly TranslatableString Register = create("register"); + public static readonly TranslatableString ResetPassword = create("reset_password"); public static readonly TranslatableString ForgotPassword = create("forgot_password"); + public static readonly TranslatableString Success = create("success"); public static readonly TranslatableString Error = create("error"); public static readonly TranslatableString LogIn = create("log_in"); public static readonly TranslatableString Unknown = create("unknown"); + public static readonly TranslatableString RecentPhotos = create("recent_photos"); + public static readonly TranslatableString RecentActivity = create("recent_activity"); + public static readonly TranslatableString Soon = create("soon"); private static TranslatableString create(string key) => new(TranslationAreas.General, key); } \ No newline at end of file diff --git a/ProjectLighthouse.Localization/StringLists/ProfileStrings.cs b/ProjectLighthouse.Localization/StringLists/ProfileStrings.cs new file mode 100644 index 00000000..2c0c3879 --- /dev/null +++ b/ProjectLighthouse.Localization/StringLists/ProfileStrings.cs @@ -0,0 +1,10 @@ +namespace LBPUnion.ProjectLighthouse.Localization.StringLists; + +public static class ProfileStrings +{ + public static readonly TranslatableString Title = create("title"); + public static readonly TranslatableString Biography = create("biography"); + public static readonly TranslatableString NoBiography = create("no_biography"); + + private static TranslatableString create(string key) => new(TranslationAreas.Profile, key); +} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/StringLists/RegisterStrings.cs b/ProjectLighthouse.Localization/StringLists/RegisterStrings.cs new file mode 100644 index 00000000..c9acf363 --- /dev/null +++ b/ProjectLighthouse.Localization/StringLists/RegisterStrings.cs @@ -0,0 +1,8 @@ +namespace LBPUnion.ProjectLighthouse.Localization.StringLists; + +public static class RegisterStrings +{ + public static readonly TranslatableString UsernameNotice = create("username_notice"); + + private static TranslatableString create(string key) => new(TranslationAreas.Register, key); +} \ No newline at end of file diff --git a/ProjectLighthouse.Localization/TranslationAreas.cs b/ProjectLighthouse.Localization/TranslationAreas.cs index 017424b3..085ade23 100644 --- a/ProjectLighthouse.Localization/TranslationAreas.cs +++ b/ProjectLighthouse.Localization/TranslationAreas.cs @@ -7,5 +7,8 @@ public enum TranslationAreas General, LoggedOut, Status, + Register, + Error, + Profile, ModPanel, } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/StatusController.cs b/ProjectLighthouse.Servers.API/Controllers/StatusController.cs new file mode 100644 index 00000000..fcd91964 --- /dev/null +++ b/ProjectLighthouse.Servers.API/Controllers/StatusController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +[ApiController] +[Route("/api/v1")] +[Produces("application/json")] +public class StatusController : ControllerBase +{ + [HttpGet("status")] + public IActionResult GetStatus() => this.Ok(); +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/ProjectLighthouse.Servers.API.csproj b/ProjectLighthouse.Servers.API/ProjectLighthouse.Servers.API.csproj index fca0d2c5..b8d70527 100644 --- a/ProjectLighthouse.Servers.API/ProjectLighthouse.Servers.API.csproj +++ b/ProjectLighthouse.Servers.API/ProjectLighthouse.Servers.API.csproj @@ -15,32 +15,32 @@ - + - + Always - + Always - + Always - + Always - - - - + + + + diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/ClientConfigurationController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/ClientConfigurationController.cs index ad1652c4..5d037fa0 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/ClientConfigurationController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/ClientConfigurationController.cs @@ -1,7 +1,9 @@ #nullable enable using System.Diagnostics.CodeAnalysis; +using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.PlayerData; +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; @@ -45,12 +47,56 @@ public class ClientConfigurationController : ControllerBase [HttpGet("privacySettings")] [Produces("text/xml")] - public IActionResult PrivacySettings() + public async Task GetPrivacySettings() { + User? user = await this.database.UserFromGameRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + PrivacySettings ps = new() { - LevelVisibility = "all", - ProfileVisibility = "all", + LevelVisibility = user.LevelVisibility.ToSerializedString(), + ProfileVisibility = user.ProfileVisibility.ToSerializedString(), + }; + + return this.Ok(ps.Serialize()); + } + + [HttpPost("privacySettings")] + [Produces("text/xml")] + public async Task SetPrivacySetting() + { + User? user = await this.database.UserFromGameRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + this.Request.Body.Position = 0; + string bodyString = await new StreamReader(this.Request.Body).ReadToEndAsync(); + + XmlSerializer serializer = new(typeof(PrivacySettings)); + PrivacySettings? settings = (PrivacySettings?)serializer.Deserialize(new StringReader(bodyString)); + if (settings == null) return this.BadRequest(); + + if (settings.LevelVisibility != null) + { + PrivacyType? type = PrivacyTypeExtensions.FromSerializedString(settings.LevelVisibility); + if (type == null) return this.BadRequest(); + + user.LevelVisibility = (PrivacyType)type; + } + + if (settings.ProfileVisibility != null) + { + PrivacyType? type = PrivacyTypeExtensions.FromSerializedString(settings.ProfileVisibility); + if (type == null) return this.BadRequest(); + + user.ProfileVisibility = (PrivacyType)type; + } + + await this.database.SaveChangesAsync(); + + PrivacySettings ps = new() + { + LevelVisibility = user.LevelVisibility.ToSerializedString(), + ProfileVisibility = user.ProfileVisibility.ToSerializedString(), }; return this.Ok(ps.Serialize()); diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs index 46c239f5..b2c501ba 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs @@ -23,32 +23,40 @@ public class CommentController : ControllerBase } [HttpPost("rateUserComment/{username}")] - [HttpPost("rateComment/user/{slotId:int}")] - public async Task RateComment([FromQuery] int commentId, [FromQuery] int rating, string? username, int? slotId) + [HttpPost("rateComment/{slotType}/{slotId:int}")] + public async Task RateComment([FromQuery] int commentId, [FromQuery] int rating, string? username, string? slotType, int slotId) { User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); + if (SlotHelper.IsTypeInvalid(slotType)) return this.BadRequest(); + bool success = await this.database.RateComment(user, commentId, rating); if (!success) return this.BadRequest(); return this.Ok(); } - [HttpGet("comments/user/{slotId:int}")] + [HttpGet("comments/{slotType}/{slotId:int}")] [HttpGet("userComments/{username}")] - public async Task GetComments([FromQuery] int pageStart, [FromQuery] int pageSize, string? username, int? slotId) + public async Task GetComments([FromQuery] int pageStart, [FromQuery] int pageSize, string? username, string? slotType, int slotId) { User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); - int targetId = slotId.GetValueOrDefault(); + int targetId = slotId; CommentType type = CommentType.Level; if (!string.IsNullOrWhiteSpace(username)) { targetId = this.database.Users.First(u => u.Username.Equals(username)).UserId; type = CommentType.Profile; } + else + { + if (SlotHelper.IsTypeInvalid(slotType) || slotId == 0) return this.BadRequest(); + } + + if (type == CommentType.Level && slotType == "developer") targetId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); List comments = await this.database.Comments.Include (c => c.Poster) @@ -72,8 +80,8 @@ public class CommentController : ControllerBase } [HttpPost("postUserComment/{username}")] - [HttpPost("postComment/user/{slotId:int}")] - public async Task PostComment(string? username, int? slotId) + [HttpPost("postComment/{slotType}/{slotId:int}")] + public async Task PostComment(string? username, string? slotType, int slotId) { User? poster = await this.database.UserFromGameRequest(this.Request); if (poster == null) return this.StatusCode(403, ""); @@ -86,14 +94,18 @@ public class CommentController : ControllerBase SanitizationHelper.SanitizeStringsInClass(comment); - CommentType type = (slotId.GetValueOrDefault() == 0 ? CommentType.Profile : CommentType.Level); + CommentType type = (slotId == 0 ? CommentType.Profile : CommentType.Level); + + if (type == CommentType.Level && (SlotHelper.IsTypeInvalid(slotType) || slotId == 0)) return this.BadRequest(); if (comment == null) return this.BadRequest(); - int targetId = slotId.GetValueOrDefault(); + int targetId = slotId; if (type == CommentType.Profile) targetId = this.database.Users.First(u => u.Username == username).UserId; + if (slotType == "developer") targetId = await SlotHelper.GetPlaceholderSlotId(this.database, targetId, SlotType.Developer); + bool success = await this.database.PostComment(poster, targetId, type, comment.Message); if (success) return this.Ok(); @@ -101,8 +113,8 @@ public class CommentController : ControllerBase } [HttpPost("deleteUserComment/{username}")] - [HttpPost("deleteComment/user/{slotId:int}")] - public async Task DeleteComment([FromQuery] int commentId, string? username, int? slotId) + [HttpPost("deleteComment/{slotType}/{slotId:int}")] + public async Task DeleteComment([FromQuery] int commentId, string? username, string? slotType, int slotId) { User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); @@ -110,6 +122,10 @@ public class CommentController : ControllerBase Comment? comment = await this.database.Comments.FirstOrDefaultAsync(c => c.CommentId == commentId); if (comment == null) return this.NotFound(); + if (comment.Type == CommentType.Level && (SlotHelper.IsTypeInvalid(slotType) || slotId == 0)) return this.BadRequest(); + + if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); + // if you are not the poster if (comment.PosterUserId != user.UserId) { @@ -125,7 +141,7 @@ public class CommentController : ControllerBase { Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.SlotId == comment.TargetId); // if you aren't the creator of the level - if (slot == null || slot.CreatorId != user.UserId || slotId.GetValueOrDefault() != slot.SlotId) + if (slot == null || slot.CreatorId != user.UserId || slotId != slot.SlotId) { return this.StatusCode(403, ""); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/LoginController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/LoginController.cs index e9eea89d..5296ff22 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/LoginController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/LoginController.cs @@ -57,9 +57,10 @@ public class LoginController : ControllerBase string ipAddress = remoteIpAddress.ToString(); + await this.database.RemoveExpiredTokens(); + // Get an existing token from the IP & username - GameToken? token = await this.database.GameTokens.Include - (t => t.User) + GameToken? token = await this.database.GameTokens.Include(t => t.User) .FirstOrDefaultAsync(t => t.UserLocation == ipAddress && t.User.Username == npTicket.Username && !t.Used); if (token == null) // If we cant find an existing token, try to generate a new one @@ -67,7 +68,8 @@ public class LoginController : ControllerBase token = await this.database.AuthenticateUser(npTicket, ipAddress); if (token == null) { - Logger.Warn($"Unable to find/generate a token for username {npTicket.Username}", LogArea.Login); + Logger.Warn($"Unable to " + + $"find/generate a token for username {npTicket.Username}", LogArea.Login); return this.StatusCode(403, ""); // If not, then 403. } } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Matching/MatchController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Matching/MatchController.cs index 23a195a5..c6c8097a 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Matching/MatchController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Matching/MatchController.cs @@ -8,7 +8,6 @@ using LBPUnion.ProjectLighthouse.Match.MatchCommands; using LBPUnion.ProjectLighthouse.Match.Rooms; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -71,7 +70,7 @@ public class MatchController : ControllerBase #endregion - await LastContactHelper.SetLastContact(user, gameToken.GameVersion, gameToken.Platform); + await LastContactHelper.SetLastContact(this.database, user, gameToken.GameVersion, gameToken.Platform); #region Process match data diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs index 63067c7a..e2048035 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs @@ -1,4 +1,5 @@ #nullable enable +using System.Globalization; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Logging; @@ -75,9 +76,10 @@ along with this program. If not, see ."; $"token.Used: {gameToken.Used}\n" + $"token.UserLocation: {gameToken.UserLocation}\n" + $"token.GameVersion: {gameToken.GameVersion}\n" + + $"token.ExpiresAt: {gameToken.ExpiresAt.ToString(CultureInfo.CurrentCulture)}\n" + "---DEBUG INFO---" + #endif - "\n" + (announceText != "" ? "\n" : "") ); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs index f9461c8d..7452c77c 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs @@ -3,11 +3,11 @@ using System.Xml.Serialization; using Discord; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -53,6 +53,38 @@ public class PhotosController : ControllerBase photo.CreatorId = user.UserId; photo.Creator = user; + if (photo.XmlLevelInfo != null) + { + bool validLevel = false; + PhotoSlot photoSlot = photo.XmlLevelInfo; + if (photoSlot.SlotType is SlotType.Pod or SlotType.Local) photoSlot.SlotId = 0; + switch (photoSlot.SlotType) + { + case SlotType.User: + { + Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.Type == SlotType.User && s.SlotId == photoSlot.SlotId); + if (slot != null) validLevel = slot.RootLevel == photoSlot.RootLevel; + break; + } + case SlotType.Pod: + case SlotType.Local: + case SlotType.Developer: + { + Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.Type == photoSlot.SlotType && s.InternalSlotId == photoSlot.SlotId); + if (slot != null) + photoSlot.SlotId = slot.SlotId; + else + photoSlot.SlotId = await SlotHelper.GetPlaceholderSlotId(this.database, photoSlot.SlotId, photoSlot.SlotType); + validLevel = true; + break; + } + default: Logger.Warn($"Invalid photo level type: {photoSlot.SlotType}", LogArea.Photos); + break; + } + + if (validLevel) photo.SlotId = photo.XmlLevelInfo.SlotId; + } + if (photo.Subjects.Count > 4) return this.BadRequest(); if (photo.Timestamp > TimeHelper.Timestamp) photo.Timestamp = TimeHelper.Timestamp; @@ -104,11 +136,23 @@ public class PhotosController : ControllerBase return this.Ok(); } - [HttpGet("photos/user/{id:int}")] - public async Task SlotPhotos(int id) + [HttpGet("photos/{slotType}/{id:int}")] + public async Task SlotPhotos([FromQuery] int pageStart, [FromQuery] int pageSize, string slotType, int id) { - List photos = await this.database.Photos.Include(p => p.Creator).Take(10).ToListAsync(); - string response = photos.Aggregate(string.Empty, (s, photo) => s + photo.Serialize(id)); + User? user = await this.database.UserFromGameRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + if (SlotHelper.IsTypeInvalid(slotType)) return this.BadRequest(); + + if (slotType == "developer") id = await SlotHelper.GetPlaceholderSlotId(this.database, id, SlotType.Developer); + + List photos = await this.database.Photos.Include(p => p.Creator) + .Where(p => p.SlotId == id) + .OrderByDescending(s => s.Timestamp) + .Skip(pageStart - 1) + .Take(Math.Min(pageSize, 30)) + .ToListAsync(); + string response = photos.Aggregate(string.Empty, (s, photo) => s + photo.Serialize(id, SlotHelper.ParseType(slotType))); return this.Ok(LbpSerializer.StringElement("photos", response)); } @@ -126,7 +170,7 @@ public class PhotosController : ControllerBase .Skip(pageStart - 1) .Take(Math.Min(pageSize, 30)) .ToListAsync(); - string response = photos.Aggregate(string.Empty, (s, photo) => s + photo.Serialize(0)); + string response = photos.Aggregate(string.Empty, (s, photo) => s + photo.Serialize()); return this.Ok(LbpSerializer.StringElement("photos", response)); } @@ -145,7 +189,7 @@ public class PhotosController : ControllerBase (s => s.Timestamp) .Skip(pageStart - 1) .Take(Math.Min(pageSize, 30)) - .Aggregate(string.Empty, (s, photo) => s + photo.Serialize(0)); + .Aggregate(string.Empty, (s, photo) => s + photo.Serialize()); return this.Ok(LbpSerializer.StringElement("photos", response)); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/ResourcesController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/ResourcesController.cs index 1ea40e45..84a94038 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/ResourcesController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/ResourcesController.cs @@ -75,7 +75,7 @@ public class ResourcesController : ControllerBase FileHelper.EnsureDirectoryCreated(assetsDirectory); // lbp treats code 409 as success and as an indicator that the file is already present - if (FileHelper.ResourceExists(hash)) this.Conflict(); + if (FileHelper.ResourceExists(hash)) return this.Conflict(); Logger.Info($"Processing resource upload (hash: {hash})", LogArea.Resources); LbpFile file = new(await readFromPipeReader(this.Request.BodyReader)); diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/CollectionController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/CollectionController.cs index c6ce69db..4d7eb1b8 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/CollectionController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/CollectionController.cs @@ -47,6 +47,8 @@ public class CollectionController : ControllerBase } ); + categoriesSerialized += LbpSerializer.StringElement("text_search", LbpSerializer.StringElement("url", "/slots/searchLBP3")); + return this.Ok ( LbpSerializer.TaggedStringElement diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ListController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ListController.cs index e888f4ad..e577b9d1 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ListController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ListController.cs @@ -1,9 +1,10 @@ #nullable enable +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -25,24 +26,23 @@ public class ListController : ControllerBase #region Level Queue (lolcatftw) [HttpGet("slots/lolcatftw/{username}")] - public async Task GetLevelQueue(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) + public async Task GetQueuedLevels(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) { GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; - IEnumerable queuedLevels = this.database.QueuedLevels.Include(q => q.User) - .Include(q => q.Slot) - .Include(q => q.Slot.Location) + IEnumerable queuedLevels = this.database.QueuedLevels.Where(q => q.User.Username == username) .Include(q => q.Slot.Creator) - .Where(q => q.Slot.GameVersion <= gameVersion) - .Where(q => q.User.Username == username) + .Include(q => q.Slot.Location) + .Select(q => q.Slot) + .ByGameVersion(gameVersion) .Skip(pageStart - 1) .Take(Math.Min(pageSize, 30)) .AsEnumerable(); - string response = queuedLevels.Aggregate(string.Empty, (current, q) => current + q.Slot.Serialize(gameVersion)); + string response = queuedLevels.Aggregate(string.Empty, (current, q) => current + q.Serialize(gameVersion)); return this.Ok ( @@ -104,22 +104,24 @@ public class ListController : ControllerBase GameVersion gameVersion = token.GameVersion; - IEnumerable heartedLevels = this.database.HeartedLevels.Include(q => q.User) - .Include(q => q.Slot) - .Include(q => q.Slot.Location) + IEnumerable heartedLevels = this.database.HeartedLevels.Where(q => q.User.Username == username) .Include(q => q.Slot.Creator) - .Where(q => q.Slot.GameVersion <= gameVersion) - .Where(q => q.User.Username == username) + .Include(q => q.Slot.Location) + .Select(q => q.Slot) + .ByGameVersion(gameVersion) .Skip(pageStart - 1) .Take(Math.Min(pageSize, 30)) .AsEnumerable(); - string response = heartedLevels.Aggregate(string.Empty, (current, q) => current + q.Slot.Serialize(gameVersion)); + string response = heartedLevels.Aggregate(string.Empty, (current, q) => current + q.Serialize(gameVersion)); return this.Ok ( - LbpSerializer.TaggedStringElement - ("favouriteSlots", response, "total", this.database.HeartedLevels.Include(q => q.User).Count(q => q.User.Username == username)) + LbpSerializer.TaggedStringElement("favouriteSlots", response, new Dictionary + { + { "total", this.database.HeartedLevels.Include(q => q.User).Count(q => q.User.Username == username) }, + { "hint_start", pageStart + Math.Min(pageSize, 30) }, + }) ); } @@ -176,8 +178,11 @@ public class ListController : ControllerBase return this.Ok ( - LbpSerializer.TaggedStringElement - ("favouriteUsers", response, "total", this.database.HeartedProfiles.Include(q => q.User).Count(q => q.User.Username == username)) + LbpSerializer.TaggedStringElement("favouriteUsers", response, new Dictionary + { + { "total", this.database.HeartedProfiles.Include(q => q.User).Count(q => q.User.Username == username) }, + { "hint_start", pageStart + Math.Min(pageSize, 30) }, + }) ); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs index 5f5d423c..cd45cfca 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs @@ -8,7 +8,6 @@ using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -41,9 +40,16 @@ public class PublishController : ControllerBase GameToken gameToken = userAndToken.Value.Item2; Slot? slot = await this.getSlotFromBody(); - if (slot == null) return this.BadRequest(); // if the level cant be parsed then it obviously cant be uploaded + if (slot == null) { + Logger.Warn("Rejecting level upload, slot is null", LogArea.Publish); + return this.BadRequest(); // if the level cant be parsed then it obviously cant be uploaded + } - if (string.IsNullOrEmpty(slot.RootLevel)) return this.BadRequest(); + if (string.IsNullOrEmpty(slot.RootLevel)) + { + Logger.Warn("Rejecting level upload, slot does not include rootLevel", LogArea.Publish); + return this.BadRequest(); + } if (string.IsNullOrEmpty(slot.ResourceCollection)) slot.ResourceCollection = slot.RootLevel; @@ -51,8 +57,16 @@ public class PublishController : ControllerBase if (slot.SlotId != 0) { Slot? oldSlot = await this.database.Slots.FirstOrDefaultAsync(s => s.SlotId == slot.SlotId); - if (oldSlot == null) return this.NotFound(); - if (oldSlot.CreatorId != user.UserId) return this.BadRequest(); + if (oldSlot == null) + { + Logger.Warn("Rejecting level reupload, could not find old slot", LogArea.Publish); + return this.NotFound(); + } + if (oldSlot.CreatorId != user.UserId) + { + Logger.Warn("Rejecting level reupload, old slot's creator is not publishing user", LogArea.Publish); + return this.BadRequest(); + } } else if (user.GetUsedSlotsForGame(gameToken.GameVersion) > ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots) { @@ -127,6 +141,11 @@ public class PublishController : ControllerBase return this.BadRequest(); } + GameVersion slotVersion = FileHelper.ParseLevelVersion(rootLevel); + + slot.GameVersion = slotVersion; + if (slotVersion == GameVersion.Unknown) slot.GameVersion = gameToken.GameVersion; + // Republish logic if (slot.SlotId != 0) { @@ -177,16 +196,6 @@ public class PublishController : ControllerBase slot.TeamPick = oldSlot.TeamPick; - // Only update a slot's gameVersion if the level was actually change - if (oldSlot.RootLevel != slot.RootLevel) - { - slot.GameVersion = gameToken.GameVersion; - } - else - { - slot.GameVersion = oldSlot.GameVersion; - } - if (slot.MinimumPlayers == 0 || slot.MaximumPlayers == 0) { slot.MinimumPlayers = 1; @@ -198,7 +207,7 @@ public class PublishController : ControllerBase return this.Ok(oldSlot.Serialize(gameToken.GameVersion)); } - if (user.GetUsedSlotsForGame(gameToken.GameVersion) > ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots) + if (user.GetUsedSlotsForGame(slotVersion) > ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots) { Logger.Warn("Rejecting level upload, too many published slots", LogArea.Publish); return this.BadRequest(); @@ -216,7 +225,6 @@ public class PublishController : ControllerBase slot.CreatorId = user.UserId; slot.FirstUploaded = TimeHelper.UnixTimeMilliseconds(); slot.LastUpdated = TimeHelper.UnixTimeMilliseconds(); - slot.GameVersion = gameToken.GameVersion; if (slot.MinimumPlayers == 0 || slot.MaximumPlayers == 0) { @@ -226,13 +234,13 @@ public class PublishController : ControllerBase this.database.Slots.Add(slot); await this.database.SaveChangesAsync(); - - await WebhookHelper.SendWebhook - ( - "New level published!", - $"**{user.Username}** just published a new level: [**{slot.Name}**]({ServerConfiguration.Instance.ExternalUrl}/slot/{slot.SlotId})\n{slot.Description}" - ); + if (user.LevelVisibility == PrivacyType.All) + { + await WebhookHelper.SendWebhook("New level published!", + $"**{user.Username}** just published a new level: [**{slot.Name}**]({ServerConfiguration.Instance.ExternalUrl}/slot/{slot.SlotId})\n{slot.Description}"); + } + Logger.Success($"Successfully published level {slot.Name} (id: {slot.SlotId}) by {user.Username} (id: {user.UserId})", LogArea.Publish); return this.Ok(slot.Serialize(gameToken.GameVersion)); diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ScoreController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ScoreController.cs index cc61df46..34696cf3 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ScoreController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ScoreController.cs @@ -1,6 +1,7 @@ #nullable enable using System.Diagnostics.CodeAnalysis; using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; @@ -23,13 +24,15 @@ public class ScoreController : ControllerBase this.database = database; } - [HttpPost("scoreboard/user/{id:int}")] - public async Task SubmitScore(int id, [FromQuery] bool lbp1 = false, [FromQuery] bool lbp2 = false, [FromQuery] bool lbp3 = false) + [HttpPost("scoreboard/{slotType}/{id:int}")] + public async Task SubmitScore(string slotType, int id, [FromQuery] bool lbp1 = false, [FromQuery] bool lbp2 = false, [FromQuery] bool lbp3 = false) { (User, GameToken)? userAndToken = await this.database.UserAndGameTokenFromRequest(this.Request); if (userAndToken == null) return this.StatusCode(403, ""); + if (SlotHelper.IsTypeInvalid(slotType)) return this.BadRequest(); + // ReSharper disable once PossibleInvalidOperationException User user = userAndToken.Value.Item1; GameToken gameToken = userAndToken.Value.Item2; @@ -43,6 +46,8 @@ public class ScoreController : ControllerBase SanitizationHelper.SanitizeStringsInClass(score); + if (slotType == "developer") id = await SlotHelper.GetPlaceholderSlotId(this.database, id, SlotType.Developer); + score.SlotId = id; Slot? slot = this.database.Slots.FirstOrDefault(s => s.SlotId == score.SlotId); @@ -92,15 +97,19 @@ public class ScoreController : ControllerBase //=> await TopScores(slotId, type); => this.Ok(LbpSerializer.BlankElement("scores")); - [HttpGet("topscores/user/{slotId:int}/{type:int}")] + [HttpGet("topscores/{slotType}/{slotId:int}/{type:int}")] [SuppressMessage("ReSharper", "PossibleMultipleEnumeration")] - public async Task TopScores(int slotId, int type, [FromQuery] int pageStart = -1, [FromQuery] int pageSize = 5) + public async Task TopScores(string slotType, int slotId, int type, [FromQuery] int pageStart = -1, [FromQuery] int pageSize = 5) { // Get username User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); + if (SlotHelper.IsTypeInvalid(slotType)) return this.BadRequest(); + + if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); + return this.Ok(this.getScores(slotId, type, user, pageStart, pageSize)); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SearchController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SearchController.cs index 8e6e43bf..fab980fc 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SearchController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SearchController.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore; namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; [ApiController] -[Route("LITTLEBIGPLANETPS3_XML/")] +[Route("LITTLEBIGPLANETPS3_XML/slots")] [Produces("text/xml")] public class SearchController : ControllerBase { @@ -19,8 +19,17 @@ public class SearchController : ControllerBase this.database = database; } - [HttpGet("slots/search")] - public async Task SearchSlots([FromQuery] string query, [FromQuery] int pageSize, [FromQuery] int pageStart) + [HttpGet("searchLBP3")] + public Task SearchSlotsLBP3([FromQuery] int pageSize, [FromQuery] int pageStart, [FromQuery] string textFilter) + => SearchSlots(textFilter, pageSize, pageStart, "results"); + + [HttpGet("search")] + public async Task SearchSlots( + [FromQuery] string query, + [FromQuery] int pageSize, + [FromQuery] int pageStart, + string? keyName = "slots" + ) { GameToken? gameToken = await this.database.GameTokenFromRequest(this.Request); if (gameToken == null) return this.StatusCode(403, ""); @@ -31,8 +40,7 @@ public class SearchController : ControllerBase string[] keywords = query.Split(" "); - IQueryable dbQuery = this.database.Slots.Include - (s => s.Creator) + IQueryable dbQuery = this.database.Slots.Include(s => s.Creator) .Include(s => s.Location) .OrderBy(s => !s.TeamPick) .ThenByDescending(s => s.FirstUploaded) @@ -52,6 +60,9 @@ public class SearchController : ControllerBase string response = slots.Aggregate("", (current, slot) => current + slot.Serialize(gameToken.GameVersion)); - return this.Ok(LbpSerializer.TaggedStringElement("slots", response, "total", dbQuery.Count())); + return this.Ok(LbpSerializer.TaggedStringElement(keyName, response, "total", dbQuery.Count())); } -} \ No newline at end of file + + // /LITTLEBIGPLANETPS3_XML?pageStart=1&pageSize=10&resultTypes[]=slot&resultTypes[]=playlist&resultTypes[]=user&adventure=dontCare&textFilter=qwer + +} diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs index 5fab0b3b..fc421375 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs @@ -3,11 +3,11 @@ using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Levels; +using LBPUnion.ProjectLighthouse.Match.Rooms; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.PlayerData.Reviews; using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -64,6 +64,72 @@ public class SlotsController : ControllerBase ); } + [HttpGet("slotList")] + public async Task GetSlotListAlt([FromQuery] int[] s) + { + GameToken? token = await this.database.GameTokenFromRequest(this.Request); + if (token == null) return this.StatusCode(403, ""); + + List serializedSlots = new(); + foreach (int slotId in s) + { + Slot? slot = await this.database.Slots.Include(t => t.Creator).Include(t => t.Location).Where(t => t.SlotId == slotId && t.Type == SlotType.User).FirstOrDefaultAsync(); + if (slot == null) + { + slot = await this.database.Slots.Where(t => t.InternalSlotId == slotId && t.Type == SlotType.Developer).FirstOrDefaultAsync(); + if (slot == null) + { + serializedSlots.Add($"{slotId}"); + continue; + } + } + serializedSlots.Add(slot.Serialize()); + } + string serialized = serializedSlots.Aggregate(string.Empty, (current, slot) => slot == null ? current : current + slot); + + return this.Ok(LbpSerializer.TaggedStringElement("slots", serialized, "total", serializedSlots.Count)); + } + + [HttpGet("slots/developer")] + public async Task StoryPlayers() + { + User? user = await this.database.UserFromGameRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + GameToken? token = await this.database.GameTokenFromRequest(this.Request); + if (token == null) return this.StatusCode(403, ""); + + List activeSlotIds = RoomHelper.Rooms.Where(r => r.Slot.SlotType == SlotType.Developer).Select(r => r.Slot.SlotId).ToList(); + + List serializedSlots = new(); + + foreach (int id in activeSlotIds) + { + int placeholderSlotId = await SlotHelper.GetPlaceholderSlotId(this.database, id, SlotType.Developer); + Slot slot = await this.database.Slots.FirstAsync(s => s.SlotId == placeholderSlotId); + serializedSlots.Add(slot.SerializeDevSlot(false)); + } + + string serialized = serializedSlots.Aggregate(string.Empty, (current, slot) => current + slot); + + return this.Ok(LbpSerializer.StringElement("slots", serialized)); + } + + [HttpGet("s/developer/{id:int}")] + public async Task SDev(int id) + { + User? user = await this.database.UserFromGameRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + GameToken? token = await this.database.GameTokenFromRequest(this.Request); + if (token == null) return this.StatusCode(403, ""); + + int slotId = await SlotHelper.GetPlaceholderSlotId(this.database, id, SlotType.Developer); + Slot slot = await this.database.Slots.FirstAsync(s => s.SlotId == slotId); + + return this.Ok(slot.SerializeDevSlot()); + } + [HttpGet("s/user/{id:int}")] public async Task SUser(int id) { @@ -353,6 +419,69 @@ public class SlotsController : ControllerBase ) ); } + + // /slots/busiest?pageStart=1&pageSize=30&gameFilterType=both&players=1&move=true + [HttpGet("slots/busiest")] + public async Task BusiestLevels + ( + [FromQuery] int pageStart, + [FromQuery] int pageSize, + [FromQuery] string? gameFilterType = null, + [FromQuery] int? players = null, + [FromQuery] bool? move = null + ) + { + GameToken? token = await this.database.GameTokenFromRequest(this.Request); + if (token == null) return this.StatusCode(403, ""); + + Dictionary playersBySlotId = new(); + + foreach (Room room in RoomHelper.Rooms) + { + // TODO: support developer slotTypes? + if(room.Slot.SlotType != SlotType.User) continue; + + if (!playersBySlotId.TryGetValue(room.Slot.SlotId, out int playerCount)) + playersBySlotId.Add(room.Slot.SlotId, 0); + + playerCount += room.PlayerIds.Count; + + playersBySlotId.Remove(room.Slot.SlotId); + playersBySlotId.Add(room.Slot.SlotId, playerCount); + } + + IEnumerable orderedPlayersBySlotId = playersBySlotId + .Skip(pageStart - 1) + .Take(Math.Min(pageSize, 30)) + .OrderByDescending(kvp => kvp.Value) + .Select(kvp => kvp.Key); + + List slots = new(); + + foreach (int slotId in orderedPlayersBySlotId) + { + Slot? slot = await this.database.Slots.ByGameVersion(token.GameVersion, false, true) + .FirstOrDefaultAsync(s => s.SlotId == slotId); + if(slot == null) continue; // shouldn't happen ever unless the room is borked + + slots.Add(slot); + } + + string response = slots.Aggregate(string.Empty, (current, slot) => current + slot.Serialize(token.GameVersion)); + + return this.Ok(LbpSerializer.TaggedStringElement("slots", + response, + new Dictionary + { + { + "hint_start", pageStart + Math.Min(pageSize, ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots) + }, + { + "total", playersBySlotId.Count + }, + })); + } + private GameVersion getGameFilter(string? gameFilterType, GameVersion version) { @@ -394,10 +523,10 @@ public class SlotsController : ControllerBase if (gameFilterType == "both") // Get game versions less than the current version // Needs support for LBP3 ("both" = LBP1+2) - whereSlots = this.database.Slots.Where(s => s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime); + whereSlots = this.database.Slots.Where(s => s.Type == SlotType.User && s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime); else // Get game versions exactly equal to gamefiltertype - whereSlots = this.database.Slots.Where(s => s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime); + whereSlots = this.database.Slots.Where(s => s.Type == SlotType.User && s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime); return whereSlots.Include(s => s.Creator).Include(s => s.Location); } diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/StatusController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/StatusController.cs new file mode 100644 index 00000000..2e108e1e --- /dev/null +++ b/ProjectLighthouse.Servers.GameServer/Controllers/StatusController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; + +[ApiController] +[Route("/LITTLEBIGPLANETPS3_XML")] +[Produces("application/json")] +public class StatusController : ControllerBase +{ + [HttpGet("status")] + public IActionResult GetStatus() => this.Ok(); +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs index 5f3defaa..3b6a08b0 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs @@ -104,9 +104,15 @@ public class UserController : ControllerBase user.Biography = update.Biography; } + // ReSharper disable once LoopCanBeConvertedToQuery foreach (string? resource in new[]{update.IconHash, update.YayHash, update.MehHash, update.BooHash, update.PlanetHash,}) { - if (resource != null && !resource.StartsWith('g') && !FileHelper.ResourceExists(resource)) return this.BadRequest(); + if (resource == "0") continue; + + if (resource != null && !resource.StartsWith('g') && !FileHelper.ResourceExists(resource)) + { + return this.BadRequest(); + } } if (update.IconHash != null) user.IconHash = update.IconHash; diff --git a/ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj b/ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj index 2636686a..8bc55451 100644 --- a/ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj +++ b/ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj @@ -10,32 +10,32 @@ - + - + Always - + Always - + Always - + Always - - - - + + + + diff --git a/ProjectLighthouse.Servers.GameServer/Startup/GameServerStartup.cs b/ProjectLighthouse.Servers.GameServer/Startup/GameServerStartup.cs index 2c316e72..495bf66f 100644 --- a/ProjectLighthouse.Servers.GameServer/Startup/GameServerStartup.cs +++ b/ProjectLighthouse.Servers.GameServer/Startup/GameServerStartup.cs @@ -164,7 +164,7 @@ public class GameServerStartup if (gameToken != null && gameToken.GameVersion == GameVersion.LittleBigPlanet1) // Ignore UserFromGameToken null because user must exist for a token to exist await LastContactHelper.SetLastContact - ((await database.UserFromGameToken(gameToken))!, GameVersion.LittleBigPlanet1, gameToken.Platform); + (database, (await database.UserFromGameToken(gameToken))!, GameVersion.LittleBigPlanet1, gameToken.Platform); } #nullable disable diff --git a/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminReportController.cs b/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminReportController.cs index 1748f1e3..d2c43f51 100644 --- a/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminReportController.cs +++ b/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminReportController.cs @@ -31,8 +31,9 @@ public class AdminReportController : ControllerBase { report.JpegHash, report.GriefStateHash, - report.InitialStateHash, }; + if(report.LevelType != "user") + hashes.Add(report.InitialStateHash); foreach (string hash in hashes) { if (System.IO.File.Exists(Path.Combine("png", $"{hash}.png"))) diff --git a/ProjectLighthouse.Servers.Website/Controllers/StatusController.cs b/ProjectLighthouse.Servers.Website/Controllers/StatusController.cs new file mode 100644 index 00000000..3d36329e --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Controllers/StatusController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.Website.Controllers; + +[ApiController] +[Route("/")] +[Produces("application/json")] +public class StatusController : ControllerBase +{ + [HttpGet("status")] + public IActionResult GetStatus() => this.Ok(); +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.Website/Pages/LandingPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/LandingPage.cshtml.cs index fecee91b..bd7c1707 100644 --- a/ProjectLighthouse.Servers.Website/Pages/LandingPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/LandingPage.cshtml.cs @@ -43,13 +43,14 @@ public class LandingPage : BaseLayout const int maxShownLevels = 5; this.LatestTeamPicks = await this.Database.Slots.Where - (s => s.TeamPick) + (s => s.Type == SlotType.User) + .Where(s => s.TeamPick) .OrderByDescending(s => s.FirstUploaded) .Take(maxShownLevels) .Include(s => s.Creator) .ToListAsync(); - this.NewestLevels = await this.Database.Slots.OrderByDescending(s => s.FirstUploaded).Take(maxShownLevels).Include(s => s.Creator).ToListAsync(); + this.NewestLevels = await this.Database.Slots.Where(s => s.Type == SlotType.User).OrderByDescending(s => s.FirstUploaded).Take(maxShownLevels).Include(s => s.Creator).ToListAsync(); return this.Page(); } diff --git a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml index d6da5335..8cd56d17 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml @@ -127,28 +127,36 @@
- JavaScript not enabled + @Model.Translate(BaseLayoutStrings.JavaScriptWarnTitle)
-

- While we intend to have as little JavaScript as possible, we can not - guarantee everything will work without it. We recommend that you whitelist JavaScript for Project Lighthouse. - It's not too bloated, we promise. -

+

@Model.Translate(BaseLayoutStrings.JavaScriptWarn)

+ @* ReSharper disable HeuristicUnreachableCode *@ + @* ReSharper disable CSharpWarnings::CS0162 *@ @if (!ServerStatics.IsDebug && VersionHelper.IsDirty) {
- Potential License Violation -

This instance is a public-facing instance that has been modified without the changes published. You may be in violation of the GNU Affero General Public License v3.0.

-

If you believe this is an error, please create an issue with the output of git status ran from the root of the server source code in the description on our issue tracker.

-

If not, please publish the source code somewhere accessible to your users.

+ @Model.Translate(BaseLayoutStrings.LicenseWarnTitle) +

+ @Html.Raw(Model.Translate(BaseLayoutStrings.LicenseWarn1, + "GNU Affero General Public License v3.0")) +

+

+ @Html.Raw(Model.Translate(BaseLayoutStrings.LicenseWarn2, + "git status", "", "")) +

+

+ @Html.Raw(Model.Translate(BaseLayoutStrings.LicenseWarn3)) +

} + @* ReSharper restore CSharpWarnings::CS0162 *@ + @* ReSharper restore HeuristicUnreachableCode *@
@@ -165,10 +173,10 @@
-

Page generated by @VersionHelper.FullVersion.

+

@Model.Translate(BaseLayoutStrings.GeneratedBy, VersionHelper.FullVersion)

@if (VersionHelper.IsDirty) { -

This page was generated using a modified version of Project Lighthouse. Please make sure you are properly disclosing the source code to any users who may be using this instance.

+

@Model.Translate(BaseLayoutStrings.GeneratedModified)

}
diff --git a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml.cs index 93259557..1429e093 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml.cs @@ -52,6 +52,8 @@ public class BaseLayout : PageModel { if (ServerStatics.IsUnitTesting) return LocalizationManager.DefaultLang; if (this.language != null) return this.language; + + if (this.User?.IsAPirate ?? false) return "en-PT"; IRequestCultureFeature? requestCulture = Request.HttpContext.Features.Get(); if (requestCulture == null) return this.language = LocalizationManager.DefaultLang; diff --git a/ProjectLighthouse.Servers.Website/Pages/LoginForm.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/LoginForm.cshtml.cs index 9d766bb5..c751290e 100644 --- a/ProjectLighthouse.Servers.Website/Pages/LoginForm.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/LoginForm.cshtml.cs @@ -3,6 +3,7 @@ using JetBrains.Annotations; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Localization.StringLists; using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; @@ -26,19 +27,19 @@ public class LoginForm : BaseLayout { if (string.IsNullOrWhiteSpace(username)) { - this.Error = "The username field is required."; + this.Error = this.Translate(ErrorStrings.UsernameInvalid); return this.Page(); } if (string.IsNullOrWhiteSpace(password)) { - this.Error = "The password field is required."; + this.Error = this.Translate(ErrorStrings.PasswordInvalid); return this.Page(); } if (!await this.Request.CheckCaptchaValidity()) { - this.Error = "You must complete the captcha correctly."; + this.Error = this.Translate(ErrorStrings.CaptchaFailed); return this.Page(); } @@ -60,7 +61,7 @@ public class LoginForm : BaseLayout if (user.IsBanned) { Logger.Warn($"User {user.Username} (id: {user.UserId}) failed to login on web due to being banned", LogArea.Login); - this.Error = "You have been banned. Please contact an administrator for more information.\nReason: " + user.BannedReason; + this.Error = this.Translate(ErrorStrings.UserIsBanned, user.BannedReason); return this.Page(); } @@ -73,6 +74,7 @@ public class LoginForm : BaseLayout UserId = user.UserId, User = user, EmailToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromHours(6), }; this.Database.EmailSetTokens.Add(emailSetToken); @@ -85,6 +87,7 @@ public class LoginForm : BaseLayout { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromDays(7), }; this.Database.WebTokens.Add(webToken); diff --git a/ProjectLighthouse.Servers.Website/Pages/Partials/CommentsPartial.cshtml b/ProjectLighthouse.Servers.Website/Pages/Partials/CommentsPartial.cshtml index c1b9b962..8998a477 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Partials/CommentsPartial.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/Partials/CommentsPartial.cshtml @@ -52,7 +52,7 @@ string style = ""; if (Model.User?.UserId == comment.PosterUserId) { - style = "visibility: hidden"; + style = "pointer-events: none"; } }
diff --git a/ProjectLighthouse.Servers.Website/Pages/Partials/PhotoPartial.cshtml b/ProjectLighthouse.Servers.Website/Pages/Partials/PhotoPartial.cshtml index 66c8b0fa..da1a46b2 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Partials/PhotoPartial.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/Partials/PhotoPartial.cshtml @@ -1,5 +1,6 @@ +@using System.Globalization +@using LBPUnion.ProjectLighthouse.Levels @using LBPUnion.ProjectLighthouse.PlayerData -@using LBPUnion.ProjectLighthouse.Types @model LBPUnion.ProjectLighthouse.PlayerData.Photo @@ -18,6 +19,27 @@ @Model.Creator?.Username + @if (Model.Slot != null) + { + switch (Model.Slot.Type) + { + case SlotType.User: + + in level @Model.Slot.Name + + break; + case SlotType.Developer: + in a story mode level + break; + case SlotType.Pod: + in the pod + break; + case SlotType.Local: + in a level on the moon + break; + } + } + at @DateTime.UnixEpoch.AddSeconds(Model.Timestamp).ToString(CultureInfo.CurrentCulture)

@@ -124,4 +146,4 @@ context.setTransform(1, 0, 0, 1, 0, 0); }) }, false); - \ No newline at end of file + diff --git a/ProjectLighthouse.Servers.Website/Pages/PasswordResetPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/PasswordResetPage.cshtml index 2f8a3ff3..bbc2a2ab 100644 --- a/ProjectLighthouse.Servers.Website/Pages/PasswordResetPage.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/PasswordResetPage.cshtml @@ -1,4 +1,5 @@ @page "/passwordReset" +@using LBPUnion.ProjectLighthouse.Localization.StringLists @model LBPUnion.ProjectLighthouse.Servers.Website.Pages.PasswordResetPage @{ @@ -26,7 +27,7 @@ {
- Uh oh! + @Model.Translate(GeneralStrings.Error)

@Model.Error

diff --git a/ProjectLighthouse.Servers.Website/Pages/PasswordResetRequestForm.cshtml b/ProjectLighthouse.Servers.Website/Pages/PasswordResetRequestForm.cshtml index 22d590c2..53318893 100644 --- a/ProjectLighthouse.Servers.Website/Pages/PasswordResetRequestForm.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/PasswordResetRequestForm.cshtml @@ -1,4 +1,5 @@ @page "/passwordResetRequest" +@using LBPUnion.ProjectLighthouse.Localization.StringLists @model LBPUnion.ProjectLighthouse.Servers.Website.Pages.PasswordResetRequestForm @{ @@ -10,7 +11,7 @@ {
- Uh oh! + @Model.Translate(GeneralStrings.Error)

@Model.Error

@@ -20,7 +21,7 @@ {
- Success! + @Model.Translate(GeneralStrings.Success)

@Model.Status

diff --git a/ProjectLighthouse.Servers.Website/Pages/PhotosPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/PhotosPage.cshtml.cs index b636205e..f2ce8fb0 100644 --- a/ProjectLighthouse.Servers.Website/Pages/PhotosPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/PhotosPage.cshtml.cs @@ -40,6 +40,7 @@ public class PhotosPage : BaseLayout this.Photos = await this.Database.Photos.Include (p => p.Creator) + .Include(p => p.Slot) .Where(p => p.Creator!.Username.Contains(this.SearchValue) || p.PhotoSubjectCollection.Contains(this.SearchValue)) .OrderByDescending(p => p.Timestamp) .Skip(pageNumber * ServerStatics.PageSize) diff --git a/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml new file mode 100644 index 00000000..9d9b183e --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml @@ -0,0 +1,31 @@ +@page "/pirate" +@model LBPUnion.ProjectLighthouse.Servers.Website.Pages.PirateSignupPage + +@{ + Layout = "Layouts/BaseLayout"; + Model.Title = "ARRRRRRRRRR!"; +} + + +@if (!Model.User!.IsAPirate) +{ +

So, ye wanna be a pirate? Well, ye came to the right place!

+

Just click this 'ere button, and welcome aboard!

+

If you ever wanna walk the plank, come back 'ere.

+ +
+ @Html.AntiForgeryToken() + +
+} +else +{ +

Back so soon, aye?

+

If you're gonna walk the plank, then do it!

+ +
+ @Html.AntiForgeryToken() + +
+} + diff --git a/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml.cs new file mode 100644 index 00000000..445aed21 --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Pages/PirateSignupPage.cshtml.cs @@ -0,0 +1,32 @@ +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; +using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.EntityFrameworkCore.Metadata.Internal; + +namespace LBPUnion.ProjectLighthouse.Servers.Website.Pages; + +public class PirateSignupPage : BaseLayout +{ + public PirateSignupPage(Database database) : base(database) + {} + + public async Task OnGet() + { + User? user = this.Database.UserFromWebRequest(this.Request); + if (user == null) return this.RedirectToPage("/login"); + + return this.Page(); + } + + public async Task OnPost() + { + User? user = this.Database.UserFromWebRequest(this.Request); + if (user == null) return this.Redirect("/login"); + + user.IsAPirate = !user.IsAPirate; + await this.Database.SaveChangesAsync(); + + return this.Redirect("/"); + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml b/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml index 1a08875b..53a4c151 100644 --- a/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml @@ -1,5 +1,6 @@ @page "/register" @using LBPUnion.ProjectLighthouse.Configuration +@using LBPUnion.ProjectLighthouse.Localization.StringLists @model LBPUnion.ProjectLighthouse.Servers.Website.Pages.RegisterForm @{ @@ -26,12 +27,14 @@ {
- Uh oh! + @Model.Translate(GeneralStrings.Error)

@Model.Error

} +

@Model.Translate(RegisterStrings.UsernameNotice)

+
@Html.AntiForgeryToken() diff --git a/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml.cs index 4bbe3efb..6f6a7619 100644 --- a/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/RegisterForm.cshtml.cs @@ -3,6 +3,7 @@ using JetBrains.Annotations; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Localization.StringLists; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts; @@ -28,7 +29,7 @@ public class RegisterForm : BaseLayout if (this.Request.Query.ContainsKey("token")) { if (!this.Database.IsRegistrationTokenValid(this.Request.Query["token"])) - return this.StatusCode(403, "Invalid Token"); + return this.StatusCode(403, this.Translate(ErrorStrings.TokenInvalid)); } else { @@ -42,44 +43,44 @@ public class RegisterForm : BaseLayout if (string.IsNullOrWhiteSpace(username)) { - this.Error = "The username field is blank."; + this.Error = this.Translate(ErrorStrings.UsernameInvalid); return this.Page(); } if (string.IsNullOrWhiteSpace(password)) { - this.Error = "Password field is required."; + this.Error = this.Translate(ErrorStrings.PasswordInvalid); return this.Page(); } if (string.IsNullOrWhiteSpace(emailAddress) && ServerConfiguration.Instance.Mail.MailEnabled) { - this.Error = "Email address field is required."; + this.Error = this.Translate(ErrorStrings.EmailInvalid); return this.Page(); } if (password != confirmPassword) { - this.Error = "Passwords do not match!"; + this.Error = this.Translate(ErrorStrings.PasswordDoesntMatch); return this.Page(); } if (await this.Database.Users.FirstOrDefaultAsync(u => u.Username.ToLower() == username.ToLower()) != null) { - this.Error = "The username you've chosen is already taken."; + this.Error = this.Translate(ErrorStrings.UsernameTaken); return this.Page(); } if (ServerConfiguration.Instance.Mail.MailEnabled && await this.Database.Users.FirstOrDefaultAsync(u => u.EmailAddress != null && u.EmailAddress.ToLower() == emailAddress.ToLower()) != null) { - this.Error = "The email address you've chosen is already taken."; + this.Error = this.Translate(ErrorStrings.EmailTaken); return this.Page(); } if (!await this.Request.CheckCaptchaValidity()) { - this.Error = "You must complete the captcha correctly."; + this.Error = this.Translate(ErrorStrings.CaptchaFailed); return this.Page(); } @@ -94,6 +95,7 @@ public class RegisterForm : BaseLayout { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromDays(7), }; this.Database.WebTokens.Add(webToken); @@ -116,7 +118,7 @@ public class RegisterForm : BaseLayout if (this.Request.Query.ContainsKey("token")) { if (!this.Database.IsRegistrationTokenValid(this.Request.Query["token"])) - return this.StatusCode(403, "Invalid Token"); + return this.StatusCode(403, this.Translate(ErrorStrings.TokenInvalid)); } else { diff --git a/ProjectLighthouse.Servers.Website/Pages/ReportPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/ReportPage.cshtml.cs index 20f5cb4f..f4c73ff4 100644 --- a/ProjectLighthouse.Servers.Website/Pages/ReportPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/ReportPage.cshtml.cs @@ -13,7 +13,7 @@ public class ReportPage : BaseLayout public ReportPage(Database database) : base(database) {} - public GriefReport Report; + public GriefReport Report = null!; // Report is not used if it's null in OnGet public async Task OnGet([FromRoute] int reportId) { diff --git a/ProjectLighthouse.Servers.Website/Pages/SetEmailForm.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/SetEmailForm.cshtml.cs index 05d57ee3..01ca1262 100644 --- a/ProjectLighthouse.Servers.Website/Pages/SetEmailForm.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/SetEmailForm.cshtml.cs @@ -49,15 +49,18 @@ public class SetEmailForm : BaseLayout UserId = user.UserId, User = user, EmailToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromHours(6), }; this.Database.EmailVerificationTokens.Add(emailVerifyToken); // The user just set their email address. Now, let's grant them a token to proceed with verifying the email. + // TODO: insecure WebToken webToken = new() { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromDays(7), }; this.Response.Cookies.Append diff --git a/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml index 68123f54..4c0cd9c6 100644 --- a/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml @@ -3,6 +3,7 @@ @using LBPUnion.ProjectLighthouse.Administration @using LBPUnion.ProjectLighthouse.Configuration @using LBPUnion.ProjectLighthouse.Extensions +@using LBPUnion.ProjectLighthouse.PlayerData @using LBPUnion.ProjectLighthouse.PlayerData.Reviews @model LBPUnion.ProjectLighthouse.Servers.Website.Pages.SlotPage @@ -163,6 +164,22 @@
+@if (Model.Photos.Count != 0) +{ +
+

Most recent photos

+ +
+ @foreach (Photo photo in Model.Photos) + { +
+ @await Html.PartialAsync("Partials/PhotoPartial", photo) +
+ } +
+
+} + @if (Model.User != null && Model.User.IsModerator) {
diff --git a/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml.cs index 47d8f265..c870bfc1 100644 --- a/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/SlotPage.cshtml.cs @@ -15,6 +15,7 @@ public class SlotPage : BaseLayout { public List Comments = new(); public List Reviews = new(); + public List Photos = new(); public readonly bool CommentsEnabled = ServerConfiguration.Instance.UserGeneratedContentLimits.LevelCommentsEnabled; public readonly bool ReviewsEnabled = ServerConfiguration.Instance.UserGeneratedContentLimits.LevelReviewsEnabled; @@ -25,8 +26,34 @@ public class SlotPage : BaseLayout public async Task OnGet([FromRoute] int id) { - Slot? slot = await this.Database.Slots.Include(s => s.Creator).FirstOrDefaultAsync(s => s.SlotId == id); + Slot? slot = await this.Database.Slots.Include + (s => s.Creator) + .Where(s => s.Type == SlotType.User) + .FirstOrDefaultAsync(s => s.SlotId == id); if (slot == null) return this.NotFound(); + System.Diagnostics.Debug.Assert(slot.Creator != null); + + // Determine if user can view slot according to creator's privacy settings + if (this.User == null || !this.User.IsAdmin) + { + switch (slot.Creator.ProfileVisibility) + { + case PrivacyType.PSN: + { + if (this.User != null) return this.NotFound(); + + break; + } + case PrivacyType.Game: + { + if (slot.Creator != this.User) return this.NotFound(); + + break; + } + case PrivacyType.All: break; + default: throw new ArgumentOutOfRangeException(); + } + } this.Slot = slot; @@ -57,6 +84,12 @@ public class SlotPage : BaseLayout this.Reviews = new List(); } + this.Photos = await this.Database.Photos.Include(p => p.Creator) + .OrderByDescending(p => p.Timestamp) + .Where(r => r.SlotId == id) + .Take(10) + .ToListAsync(); + if (this.User == null) return this.Page(); foreach (Comment c in this.Comments) diff --git a/ProjectLighthouse.Servers.Website/Pages/SlotsPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/SlotsPage.cshtml.cs index 2bc11efa..e844102e 100644 --- a/ProjectLighthouse.Servers.Website/Pages/SlotsPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/SlotsPage.cshtml.cs @@ -3,6 +3,7 @@ using System.Text; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts; using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; @@ -55,6 +56,7 @@ public class SlotsPage : BaseLayout this.SearchValue = name.Trim(); this.SlotCount = await this.Database.Slots.Include(p => p.Creator) + .Where(p => p.Type == SlotType.User) .Where(p => p.Name.Contains(finalSearch.ToString())) .Where(p => p.Creator != null && (targetAuthor == null || string.Equals(p.Creator.Username.ToLower(), targetAuthor.ToLower()))) .Where(p => targetGame == null || p.GameVersion == targetGame) @@ -66,8 +68,10 @@ public class SlotsPage : BaseLayout if (this.PageNumber < 0 || this.PageNumber >= this.PageAmount) return this.Redirect($"/slots/{Math.Clamp(this.PageNumber, 0, this.PageAmount - 1)}"); this.Slots = await this.Database.Slots.Include(p => p.Creator) + .Where(p => p.Type == SlotType.User) .Where(p => p.Name.Contains(finalSearch.ToString())) .Where(p => p.Creator != null && (targetAuthor == null || string.Equals(p.Creator.Username.ToLower(), targetAuthor.ToLower()))) + .Where(p => p.Creator!.LevelVisibility == PrivacyType.All) // TODO: change check for when user is logged in .Where(p => targetGame == null || p.GameVersion == targetGame) .OrderByDescending(p => p.FirstUploaded) .Skip(pageNumber * ServerStatics.PageSize) diff --git a/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml index 3050ef8d..c0013525 100644 --- a/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml @@ -1,6 +1,7 @@ @page "/user/{userId:int}" @using System.Web @using LBPUnion.ProjectLighthouse.Extensions +@using LBPUnion.ProjectLighthouse.Localization.StringLists @using LBPUnion.ProjectLighthouse.PlayerData @using LBPUnion.ProjectLighthouse.Types @model LBPUnion.ProjectLighthouse.Servers.Website.Pages.UserPage @@ -9,7 +10,7 @@ Layout = "Layouts/BaseLayout"; Model.ShowTitleInPage = false; - Model.Title = Model.ProfileUser!.Username + "'s user page"; + Model.Title = Model.Translate(ProfileStrings.Title, Model.ProfileUser!.Username); Model.Description = Model.ProfileUser!.Biography; } @@ -74,16 +75,16 @@ { - Reset Password + @Model.Translate(GeneralStrings.ResetPassword) }
-

Biography

+

@Model.Translate(ProfileStrings.Biography)

@if (string.IsNullOrWhiteSpace(Model.ProfileUser.Biography)) { -

@Model.ProfileUser.Username hasn't introduced themselves yet

+

@Model.Translate(ProfileStrings.NoBiography, Model.ProfileUser.Username)

} else { @@ -93,8 +94,8 @@
-

Recent Activity

-

Coming soon?

+

@Model.Translate(GeneralStrings.RecentActivity)

+

@Model.Translate(GeneralStrings.Soon)

@@ -103,7 +104,7 @@ @if (Model.Photos != null && Model.Photos.Count != 0) {
-

Most recent photos

+

@Model.Translate(GeneralStrings.RecentPhotos)

@foreach (Photo photo in Model.Photos) diff --git a/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml.cs index 067ee0a2..4d6d941e 100644 --- a/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml.cs @@ -28,7 +28,29 @@ public class UserPage : BaseLayout this.ProfileUser = await this.Database.Users.FirstOrDefaultAsync(u => u.UserId == userId); if (this.ProfileUser == null) return this.NotFound(); - this.Photos = await this.Database.Photos.OrderByDescending(p => p.Timestamp).Where(p => p.CreatorId == userId).Take(6).ToListAsync(); + // Determine if user can view profile according to profileUser's privacy settings + if (this.User == null || !this.User.IsAdmin) + { + switch (this.ProfileUser.ProfileVisibility) + { + case PrivacyType.PSN: + { + if (this.User != null) return this.NotFound(); + + break; + } + case PrivacyType.Game: + { + if (this.ProfileUser != this.User) return this.NotFound(); + + break; + } + case PrivacyType.All: break; + default: throw new ArgumentOutOfRangeException(); + } + } + + this.Photos = await this.Database.Photos.Include(p => p.Slot).OrderByDescending(p => p.Timestamp).Where(p => p.CreatorId == userId).Take(6).ToListAsync(); if (this.CommentsEnabled) { this.Comments = await this.Database.Comments.Include(p => p.Poster) diff --git a/ProjectLighthouse.Servers.Website/Pages/UsersPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/UsersPage.cshtml.cs index 63ef9bbf..6ebf1e7e 100644 --- a/ProjectLighthouse.Servers.Website/Pages/UsersPage.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/UsersPage.cshtml.cs @@ -38,6 +38,7 @@ public class UsersPage : BaseLayout if (this.PageNumber < 0 || this.PageNumber >= this.PageAmount) return this.Redirect($"/users/{Math.Clamp(this.PageNumber, 0, this.PageAmount - 1)}"); this.Users = await this.Database.Users.Where(u => u.PermissionLevel != PermissionLevel.Banned && u.Username.Contains(this.SearchValue)) + .Where(u => u.ProfileVisibility == PrivacyType.All) // TODO: change check for when user is logged in .OrderByDescending(b => b.UserId) .Skip(pageNumber * ServerStatics.PageSize) .Take(ServerStatics.PageSize) diff --git a/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs b/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs index f1f80025..14e48f97 100644 --- a/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs +++ b/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs @@ -45,7 +45,7 @@ public class WebsiteStartup { List languages = LocalizationManager.GetAvailableLanguages().Select(l => new CultureInfo(LocalizationManager.MapLanguage(l))).ToList(); - config.DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US")); + config.DefaultRequestCulture = new RequestCulture(new CultureInfo("en")); config.SupportedCultures = languages; config.SupportedUICultures = languages; @@ -81,4 +81,4 @@ public class WebsiteStartup app.UseEndpoints(endpoints => endpoints.MapControllers()); app.UseEndpoints(endpoints => endpoints.MapRazorPages()); } -} \ No newline at end of file +} diff --git a/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj b/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj index a1a4cfad..d18791bd 100644 --- a/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj +++ b/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj @@ -15,7 +15,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -27,6 +27,7 @@ + diff --git a/ProjectLighthouse.Tests.GameApiTests/Tests/AuthenticationTests.cs b/ProjectLighthouse.Tests.GameApiTests/Tests/AuthenticationTests.cs index 70fcf8bc..b81102d5 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Tests/AuthenticationTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Tests/AuthenticationTests.cs @@ -4,12 +4,13 @@ using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.PlayerData; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; using LBPUnion.ProjectLighthouse.Tests; using Xunit; namespace ProjectLighthouse.Tests.GameApiTests.Tests; -public class AuthenticationTests : LighthouseServerTest +public class AuthenticationTests : LighthouseServerTest { [Fact] public async Task ShouldReturnErrorOnNoPostData() diff --git a/ProjectLighthouse.Tests.GameApiTests/Tests/DatabaseTests.cs b/ProjectLighthouse.Tests.GameApiTests/Tests/DatabaseTests.cs index ef3fd8dd..7959c255 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Tests/DatabaseTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Tests/DatabaseTests.cs @@ -3,12 +3,13 @@ using System.Threading.Tasks; using LBPUnion.ProjectLighthouse; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; using LBPUnion.ProjectLighthouse.Tests; using Xunit; namespace ProjectLighthouse.Tests.GameApiTests.Tests; -public class DatabaseTests : LighthouseServerTest +public class DatabaseTests : LighthouseServerTest { [DatabaseFact] public async Task CanCreateUserTwice() diff --git a/ProjectLighthouse.Tests.GameApiTests/Tests/MatchTests.cs b/ProjectLighthouse.Tests.GameApiTests/Tests/MatchTests.cs index 4bcf3324..f79bf007 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Tests/MatchTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Tests/MatchTests.cs @@ -5,12 +5,13 @@ using System.Threading; using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.PlayerData; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; using LBPUnion.ProjectLighthouse.Tests; using Xunit; namespace ProjectLighthouse.Tests.GameApiTests.Tests; -public class MatchTests : LighthouseServerTest +public class MatchTests : LighthouseServerTest { private static readonly SemaphoreSlim semaphore = new(1, 1); diff --git a/ProjectLighthouse.Tests.GameApiTests/Tests/SlotTests.cs b/ProjectLighthouse.Tests.GameApiTests/Tests/SlotTests.cs index f9d96442..7ff8326d 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Tests/SlotTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Tests/SlotTests.cs @@ -6,12 +6,13 @@ using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; using LBPUnion.ProjectLighthouse.Tests; using Xunit; namespace ProjectLighthouse.Tests.GameApiTests.Tests; -public class SlotTests : LighthouseServerTest +public class SlotTests : LighthouseServerTest { [DatabaseFact] public async Task ShouldOnlyShowUsersLevels() diff --git a/ProjectLighthouse.Tests.GameApiTests/Tests/UploadTests.cs b/ProjectLighthouse.Tests.GameApiTests/Tests/UploadTests.cs index ddfa5043..3c32ab52 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Tests/UploadTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Tests/UploadTests.cs @@ -4,12 +4,13 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.PlayerData; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; using LBPUnion.ProjectLighthouse.Tests; using Xunit; namespace ProjectLighthouse.Tests.GameApiTests.Tests; -public class UploadTests : LighthouseServerTest +public class UploadTests : LighthouseServerTest { public UploadTests() { @@ -17,7 +18,7 @@ public class UploadTests : LighthouseServerTest if (Directory.Exists(assetsDirectory)) Directory.Delete(assetsDirectory, true); } - [Fact] + [DatabaseFact] public async Task ShouldNotAcceptScript() { LoginResult loginResult = await this.Authenticate(); @@ -27,7 +28,7 @@ public class UploadTests : LighthouseServerTest Assert.False(response.IsSuccessStatusCode); } - [Fact] + [DatabaseFact] public async Task ShouldNotAcceptFarc() { LoginResult loginResult = await this.Authenticate(); @@ -37,7 +38,7 @@ public class UploadTests : LighthouseServerTest Assert.False(response.IsSuccessStatusCode); } - [Fact] + [DatabaseFact] public async Task ShouldNotAcceptGarbage() { LoginResult loginResult = await this.Authenticate(); @@ -47,7 +48,7 @@ public class UploadTests : LighthouseServerTest Assert.False(response.IsSuccessStatusCode); } - [Fact] + [DatabaseFact] public async Task ShouldAcceptTexture() { LoginResult loginResult = await this.Authenticate(); @@ -57,7 +58,7 @@ public class UploadTests : LighthouseServerTest Assert.True(response.IsSuccessStatusCode); } - [Fact] + [DatabaseFact] public async Task ShouldAcceptLevel() { LoginResult loginResult = await this.Authenticate(); diff --git a/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj b/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj index be7ef808..51f575f5 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj +++ b/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj @@ -17,7 +17,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -29,6 +29,7 @@ + diff --git a/ProjectLighthouse.Tests.WebsiteTests/Tests/AdminTests.cs b/ProjectLighthouse.Tests.WebsiteTests/Tests/AdminTests.cs index f654ed7e..bcafc867 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Tests/AdminTests.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Tests/AdminTests.cs @@ -26,6 +26,7 @@ public class AdminTests : LighthouseWebTest { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromHours(1), }; database.WebTokens.Add(webToken); @@ -50,6 +51,7 @@ public class AdminTests : LighthouseWebTest { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromHours(1), }; database.WebTokens.Add(webToken); diff --git a/ProjectLighthouse.Tests.WebsiteTests/Tests/AuthenticationTests.cs b/ProjectLighthouse.Tests.WebsiteTests/Tests/AuthenticationTests.cs index af4c9af2..f85d0c99 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Tests/AuthenticationTests.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Tests/AuthenticationTests.cs @@ -88,6 +88,7 @@ public class AuthenticationTests : LighthouseWebTest { UserId = user.UserId, UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.Now + TimeSpan.FromHours(1), }; database.WebTokens.Add(webToken); diff --git a/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff b/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff index ba1ce0e4..dfc876f9 100644 --- a/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff +++ b/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff @@ -1,3 +1,3 @@ -FSH +FSHb this is not my stuff to upload so its just gonna be a file like this for now :/ \ No newline at end of file diff --git a/ProjectLighthouse.Tests/LighthouseServerTest.cs b/ProjectLighthouse.Tests/LighthouseServerTest.cs index bd18d63d..cb3df9f1 100644 --- a/ProjectLighthouse.Tests/LighthouseServerTest.cs +++ b/ProjectLighthouse.Tests/LighthouseServerTest.cs @@ -7,8 +7,6 @@ using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; using Microsoft.EntityFrameworkCore; @@ -16,14 +14,14 @@ using Microsoft.EntityFrameworkCore; namespace LBPUnion.ProjectLighthouse.Tests; [SuppressMessage("ReSharper", "UnusedMember.Global")] -public class LighthouseServerTest +public class LighthouseServerTest where TStartup : class { public readonly HttpClient Client; public readonly TestServer Server; public LighthouseServerTest() { - this.Server = new TestServer(new WebHostBuilder().UseStartup()); + this.Server = new TestServer(new WebHostBuilder().UseStartup()); this.Client = this.Server.CreateClient(); } public async Task AuthenticateResponse(int number = -1, bool createUser = true) diff --git a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj index 7b85a6a0..e03e490f 100644 --- a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj +++ b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj @@ -20,7 +20,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -35,9 +35,6 @@ PreserveNewest - - - diff --git a/ProjectLighthouse.sln.DotSettings b/ProjectLighthouse.sln.DotSettings index 3277a838..51f63b76 100644 --- a/ProjectLighthouse.sln.DotSettings +++ b/ProjectLighthouse.sln.DotSettings @@ -87,6 +87,7 @@ NP PNG PS + PSN PSP RPCS SMTP @@ -101,6 +102,7 @@ True True True + True True True True diff --git a/ProjectLighthouse/Administration/Maintenance/MigrationTasks/CleanupSlotVersionMismatchMigration.cs b/ProjectLighthouse/Administration/Maintenance/MigrationTasks/CleanupSlotVersionMismatchMigration.cs new file mode 100644 index 00000000..0b48441d --- /dev/null +++ b/ProjectLighthouse/Administration/Maintenance/MigrationTasks/CleanupSlotVersionMismatchMigration.cs @@ -0,0 +1,27 @@ +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Files; +using LBPUnion.ProjectLighthouse.Levels; +using LBPUnion.ProjectLighthouse.PlayerData; + +namespace LBPUnion.ProjectLighthouse.Administration.Maintenance.MigrationTasks; + +public class CleanupSlotVersionMismatchMigration : IMigrationTask +{ + public string Name() => "Cleanup slot versions"; + + async Task IMigrationTask.Run(Database database) + { + foreach (Slot slot in database.Slots) + { + LbpFile rootLevel = LbpFile.FromHash(slot.RootLevel); + if (rootLevel == null) continue; + + GameVersion slotVersion = FileHelper.ParseLevelVersion(rootLevel); + + if (slotVersion != GameVersion.Unknown) slot.GameVersion = slotVersion; + } + + await database.SaveChangesAsync(); + return true; + } +} \ No newline at end of file diff --git a/ProjectLighthouse/Configuration/PrivacySettings.cs b/ProjectLighthouse/Configuration/PrivacySettings.cs index 1bd96e1c..e5ec67ea 100644 --- a/ProjectLighthouse/Configuration/PrivacySettings.cs +++ b/ProjectLighthouse/Configuration/PrivacySettings.cs @@ -1,16 +1,26 @@ +#nullable enable +using System; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Configuration; +[XmlRoot("privacySettings")] +[XmlType("privacySettings")] public class PrivacySettings { - public string LevelVisibility { get; set; } - public string ProfileVisibility { get; set; } + [XmlElement("levelVisiblity")] + public string? LevelVisibility { get; set; } + + [XmlElement("profileVisiblity")] + public string? ProfileVisibility { get; set; } public string Serialize() => LbpSerializer.StringElement ( "privacySettings", - LbpSerializer.StringElement("levelVisibility", this.LevelVisibility) + LbpSerializer.StringElement("profileVisibility", this.ProfileVisibility) + LbpSerializer.StringElement("levelVisibility", this.LevelVisibility) + + LbpSerializer.StringElement("profileVisibility", this.ProfileVisibility) ); } \ No newline at end of file diff --git a/ProjectLighthouse/Database.cs b/ProjectLighthouse/Database.cs index 12fbe302..5e758490 100644 --- a/ProjectLighthouse/Database.cs +++ b/ProjectLighthouse/Database.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.Administration; using LBPUnion.ProjectLighthouse.Administration.Reports; using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.Levels.Categories; @@ -112,6 +113,8 @@ public class Database : DbContext UserLocation = userLocation, GameVersion = npTicket.GameVersion, Platform = npTicket.Platform, + // we can get away with a low expiry here since LBP will just get a new token everytime it gets 403'd + ExpiresAt = DateTime.Now + TimeSpan.FromHours(1), }; this.GameTokens.Add(gameToken); @@ -290,6 +293,13 @@ public class Database : DbContext if (token == null) return null; if (!allowUnapproved && !token.Approved) return null; + if (DateTime.Now > token.ExpiresAt) + { + this.Remove(token); + await this.SaveChangesAsync(); + return null; + } + return await this.Users.Include(u => u.Location).FirstOrDefaultAsync(u => u.UserId == token.UserId); } @@ -315,6 +325,13 @@ public class Database : DbContext if (token == null) return null; if (!allowUnapproved && !token.Approved) return null; + if (DateTime.Now > token.ExpiresAt) + { + this.Remove(token); + await this.SaveChangesAsync(); + return null; + } + return token; } @@ -327,6 +344,13 @@ public class Database : DbContext if (token == null) return null; if (!allowUnapproved && !token.Approved) return null; + if (DateTime.Now > token.ExpiresAt) + { + this.Remove(token); + await this.SaveChangesAsync(); + return null; + } + User? user = await this.UserFromGameToken(token); if (user == null) return null; @@ -343,6 +367,13 @@ public class Database : DbContext WebToken? token = this.WebTokens.FirstOrDefault(t => t.UserToken == lighthouseToken); if (token == null) return null; + if (DateTime.Now > token.ExpiresAt) + { + this.Remove(token); + this.SaveChanges(); + return null; + } + return this.Users.Include(u => u.Location).FirstOrDefault(u => u.UserId == token.UserId); } @@ -357,12 +388,21 @@ public class Database : DbContext { if (!request.Cookies.TryGetValue("LighthouseToken", out string? lighthouseToken) || lighthouseToken == null) return null; - return this.WebTokens.FirstOrDefault(t => t.UserToken == lighthouseToken); + WebToken? token = this.WebTokens.FirstOrDefault(t => t.UserToken == lighthouseToken); + if (token == null) return null; + + if (DateTime.Now > token.ExpiresAt) + { + this.Remove(token); + this.SaveChanges(); + return null; + } + + return token; } public async Task UserFromPasswordResetToken(string resetToken) { - PasswordResetToken? token = await this.PasswordResetTokens.FirstOrDefaultAsync(token => token.ResetToken == resetToken); if (token == null) { @@ -372,8 +412,10 @@ public class Database : DbContext if (token.Created < DateTime.Now.AddHours(-1)) // if token is expired { this.PasswordResetTokens.Remove(token); + await this.SaveChangesAsync(); return null; } + return await this.Users.FirstOrDefaultAsync(user => user.UserId == token.UserId); } @@ -386,12 +428,23 @@ public class Database : DbContext if (token.Created < DateTime.Now.AddDays(-7)) // if token is expired { this.RegistrationTokens.Remove(token); + this.SaveChanges(); return false; } return true; } + public async Task RemoveExpiredTokens() + { + this.GameTokens.RemoveWhere(t => DateTime.Now > t.ExpiresAt); + this.WebTokens.RemoveWhere(t => DateTime.Now > t.ExpiresAt); + this.EmailVerificationTokens.RemoveWhere(t => DateTime.Now > t.ExpiresAt); + this.EmailSetTokens.RemoveWhere(t => DateTime.Now > t.ExpiresAt); + + await this.SaveChangesAsync(); + } + public async Task RemoveRegistrationToken(string tokenString) { RegistrationToken? token = await this.RegistrationTokens.FirstOrDefaultAsync(t => t.Token == tokenString); @@ -399,7 +452,6 @@ public class Database : DbContext if (token == null) return; this.RegistrationTokens.Remove(token); - await this.SaveChangesAsync(); } @@ -427,10 +479,10 @@ public class Database : DbContext this.RatedLevels.RemoveRange(this.RatedLevels.Where(r => r.UserId == user.UserId)); this.GameTokens.RemoveRange(this.GameTokens.Where(t => t.UserId == user.UserId)); this.WebTokens.RemoveRange(this.WebTokens.Where(t => t.UserId == user.UserId)); + this.Reactions.RemoveRange(this.Reactions.Where(p => p.UserId == user.UserId)); this.Comments.RemoveRange(this.Comments.Where(c => c.PosterUserId == user.UserId)); this.Reviews.RemoveRange(this.Reviews.Where(r => r.ReviewerId == user.UserId)); this.Photos.RemoveRange(this.Photos.Where(p => p.CreatorId == user.UserId)); - this.Reactions.RemoveRange(this.Reactions.Where(p => p.UserId == user.UserId)); this.Users.Remove(user); diff --git a/ProjectLighthouse/Extensions/DatabaseExtensions.cs b/ProjectLighthouse/Extensions/DatabaseExtensions.cs index a7e27782..b1335ca1 100644 --- a/ProjectLighthouse/Extensions/DatabaseExtensions.cs +++ b/ProjectLighthouse/Extensions/DatabaseExtensions.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Reviews; -using LBPUnion.ProjectLighthouse.Types; using Microsoft.EntityFrameworkCore; namespace LBPUnion.ProjectLighthouse.Extensions; @@ -19,6 +18,8 @@ public static class DatabaseExtensions public static IQueryable ByGameVersion (this IQueryable query, GameVersion gameVersion, bool includeSublevels = false, bool includeCreatorAndLocation = false) { + query = query.Where(s => s.Type == SlotType.User); + if (includeCreatorAndLocation) { query = query.Include(s => s.Creator).Include(s => s.Location); @@ -56,6 +57,9 @@ public static class DatabaseExtensions return query; } - public static async Task Has(this IQueryable queryable, Expression> predicate) => - await queryable.FirstOrDefaultAsync(predicate) != null; + public static async Task Has(this IQueryable queryable, Expression> predicate) + => await queryable.FirstOrDefaultAsync(predicate) != null; + + public static void RemoveWhere(this DbSet queryable, Expression> predicate) where T : class + => queryable.RemoveRange(queryable.Where(predicate)); } \ No newline at end of file diff --git a/ProjectLighthouse/Files/FileHelper.cs b/ProjectLighthouse/Files/FileHelper.cs index 18a542fc..710af8b9 100644 --- a/ProjectLighthouse/Files/FileHelper.cs +++ b/ProjectLighthouse/Files/FileHelper.cs @@ -11,6 +11,7 @@ using ICSharpCode.SharpZipLib.Zip.Compression; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Logging; +using LBPUnion.ProjectLighthouse.PlayerData; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; @@ -50,6 +51,51 @@ public static class FileHelper }; } + public static GameVersion ParseLevelVersion(LbpFile file) + { + if (file.FileType != LbpFileType.Level || file.Data.Length < 16 || file.Data[3] != 'b') return GameVersion.Unknown; + + // Revision numbers borrowed from https://github.com/ennuo/toolkit/blob/main/src/main/java/ennuo/craftworld/resources/structs/Revision.java + + const ushort lbp2Latest = 0x3F8; + const ushort lbp1Latest = 0x272; + const ushort lbpVitaLatest = 0x3E2; + const ushort lbpVitaDescriptor = 0x4431; + // There are like 1600 revisions so this doesn't cover everything + uint revision = 0; + + // construct a 32 bit number from 4 individual bytes + for (int i = 4; i <= 7; i++) + { + revision <<= 8; + revision |= file.Data[i]; + } + + if (revision >= 0x271) + { + // construct a 16 bit number from 2 individual bytes + ushort branchDescriptor = (ushort) (file.Data[12] << 8 | file.Data[13]); + if (revision == lbpVitaLatest && branchDescriptor == lbpVitaDescriptor) return GameVersion.LittleBigPlanetVita; + } + + + GameVersion version = GameVersion.Unknown; + if (revision <= lbp1Latest) + { + version = GameVersion.LittleBigPlanet1; + } + else if (revision >> 0x10 != 0) + { + version = GameVersion.LittleBigPlanet3; + } + else if(revision <= lbp2Latest) + { + version = GameVersion.LittleBigPlanet2; + } + + return version; + } + public static LbpFileType DetermineFileType(byte[] data) { if (data.Length == 0) return LbpFileType.Unknown; // Can't be anything if theres no data. @@ -63,18 +109,18 @@ public static class FileHelper string footer = Encoding.ASCII.GetString(readLastBytes(reader, 4)); if (footer == "FARC") return LbpFileType.FileArchive; - byte[] header = reader.ReadBytes(3); + byte[] header = reader.ReadBytes(4); return Encoding.ASCII.GetString(header) switch { - "REC" => LbpFileType.MotionRecording, - "PRF" => LbpFileType.CrossLevel, - "PTG" => LbpFileType.Painting, - "TEX" => LbpFileType.Texture, - "FSH" => LbpFileType.Script, - "VOP" => LbpFileType.Voice, - "LVL" => LbpFileType.Level, - "PLN" => LbpFileType.Plan, + "RECb" => LbpFileType.MotionRecording, + "PRFb" => LbpFileType.CrossLevel, + "PTGb" => LbpFileType.Painting, + "TEX " => LbpFileType.Texture, + "FSHb" => LbpFileType.Script, + "VOPb" => LbpFileType.Voice, + "LVLb" => LbpFileType.Level, + "PLNb" => LbpFileType.Plan, _ => readAlternateHeader(reader), }; } diff --git a/ProjectLighthouse/Helpers/SlotHelper.cs b/ProjectLighthouse/Helpers/SlotHelper.cs new file mode 100644 index 00000000..f2b8abb3 --- /dev/null +++ b/ProjectLighthouse/Helpers/SlotHelper.cs @@ -0,0 +1,106 @@ +#nullable enable +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Levels; +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Helpers; + +public static class SlotHelper +{ + + public static SlotType ParseType(string? slotType) + { + if (slotType == null) return SlotType.Unknown; + return slotType switch + { + "developer" => SlotType.Developer, + "user" => SlotType.User, + "moon" => SlotType.Moon, + "pod" => SlotType.Pod, + "local" => SlotType.Local, + _ => SlotType.Unknown, + }; + + } + + public static bool IsTypeInvalid(string? slotType) + { + if (slotType == null) return true; + return slotType switch + { + "developer" => false, + "user" => false, + _ => true, + }; + } + + private static readonly SemaphoreSlim semaphore = new(1, 1); + + public static async Task GetPlaceholderSlotId(Database database, int guid, SlotType slotType) + { + int slotId = await database.Slots.Where(s => s.Type == slotType && s.InternalSlotId == guid).Select(s => s.SlotId).FirstOrDefaultAsync(); + if (slotId != 0) return slotId; + + await semaphore.WaitAsync(TimeSpan.FromSeconds(5)); + try + { + // if two requests come in at the same time for the same story level which hasn't been generated + // one will wait for the lock to be released and the second will be caught by this second check + slotId = await database.Slots + .Where(s => s.Type == slotType && s.InternalSlotId == guid) + .Select(s => s.SlotId) + .FirstOrDefaultAsync(); + + if (slotId != 0) return slotId; + + Location? devLocation = await database.Locations.FirstOrDefaultAsync(l => l.Id == 1); + if (devLocation == null) + { + devLocation = new Location + { + Id = 1, + }; + database.Locations.Add(devLocation); + } + + int devCreatorId = await database.Users.Where(u => u.Username.Length == 0).Select(u => u.UserId).FirstOrDefaultAsync(); + if (devCreatorId == 0) + { + User devCreator = new() + { + Username = "", + Banned = true, + Biography = "Placeholder author of story levels", + BannedReason = "Banned to not show in users list", + LocationId = devLocation.Id, + }; + database.Users.Add(devCreator); + await database.SaveChangesAsync(); + devCreatorId = devCreator.UserId; + } + + Slot slot = new() + { + Name = $"{slotType} slot {guid}", + Description = $"Placeholder for {slotType} type level", + CreatorId = devCreatorId, + InternalSlotId = guid, + LocationId = devLocation.Id, + Type = slotType, + }; + + database.Slots.Add(slot); + await database.SaveChangesAsync(); + return slot.SlotId; + } + finally + { + semaphore.Release(); + } + } + +} \ No newline at end of file diff --git a/ProjectLighthouse/Helpers/StatisticsHelper.cs b/ProjectLighthouse/Helpers/StatisticsHelper.cs index 2ec0dba0..e0a0ff70 100644 --- a/ProjectLighthouse/Helpers/StatisticsHelper.cs +++ b/ProjectLighthouse/Helpers/StatisticsHelper.cs @@ -1,6 +1,7 @@ using System.Linq; using System.Threading.Tasks; using LBPUnion.ProjectLighthouse.Administration; +using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.Types; using Microsoft.EntityFrameworkCore; @@ -16,7 +17,7 @@ public static class StatisticsHelper public static async Task RecentMatchesForGame(GameVersion gameVersion) => await database.LastContacts.Where(l => TimeHelper.Timestamp - l.Timestamp < 300 && l.GameVersion == gameVersion).CountAsync(); - public static async Task SlotCount() => await database.Slots.CountAsync(); + public static async Task SlotCount() => await database.Slots.Where(s => s.Type == SlotType.User).CountAsync(); public static async Task UserCount() => await database.Users.CountAsync(u => u.PermissionLevel != PermissionLevel.Banned); diff --git a/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs b/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs index a5d41b16..9ba8a23d 100644 --- a/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs +++ b/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs @@ -13,12 +13,12 @@ public class NewestLevelsCategory : Category public override string Description { get; set; } = "Levels recently published"; public override string IconHash { get; set; } = "g820623"; public override string Endpoint { get; set; } = "newest"; - public override Slot? GetPreviewSlot(Database database) => database.Slots.OrderByDescending(s => s.FirstUploaded).FirstOrDefault(); + public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).OrderByDescending(s => s.FirstUploaded).FirstOrDefault(); public override IEnumerable GetSlots (Database database, int pageStart, int pageSize) => database.Slots.ByGameVersion(GameVersion.LittleBigPlanet3, false, true) .OrderByDescending(s => s.FirstUploaded) .Skip(pageStart - 1) .Take(Math.Min(pageSize, 20)); - public override int GetTotalSlots(Database database) => database.Slots.Count(); + public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.Type == SlotType.User); } \ No newline at end of file diff --git a/ProjectLighthouse/Levels/Slot.cs b/ProjectLighthouse/Levels/Slot.cs index 098d7760..caf72beb 100644 --- a/ProjectLighthouse/Levels/Slot.cs +++ b/ProjectLighthouse/Levels/Slot.cs @@ -1,4 +1,5 @@ #nullable enable +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; @@ -40,14 +41,15 @@ public class Slot } [XmlAttribute("type")] - [NotMapped] [JsonIgnore] - public string Type { get; set; } = "user"; + public SlotType Type { get; set; } = SlotType.User; [Key] [XmlElement("id")] public int SlotId { get; set; } + public int InternalSlotId { get; set; } + [XmlElement("name")] public string Name { get; set; } = ""; @@ -141,6 +143,16 @@ public class Slot [JsonIgnore] public int Comments => this.database.Comments.Count(c => c.Type == CommentType.Level && c.TargetId == this.SlotId); + [XmlIgnore] + [NotMapped] + [JsonIgnore] + public int Photos => this.database.Photos.Count(p => p.SlotId == this.SlotId); + + [XmlIgnore] + [NotMapped] + [JsonIgnore] + public int PhotosWithAuthor => this.database.Photos.Count(p => p.SlotId == this.SlotId && p.CreatorId == this.CreatorId); + [XmlIgnore] [NotMapped] public int Plays => this.PlaysLBP1 + this.PlaysLBP2 + this.PlaysLBP3 + this.PlaysLBPVita; @@ -240,6 +252,31 @@ public class Slot LbpSerializer.StringElement("sizeOfResources", this.Resources.Sum(FileHelper.ResourceSize)); } + public string SerializeDevSlot(bool includeExtras = true) + { + + int comments = 0, photos = 0; + if (includeExtras) + { + comments = this.database.Comments.Count(c => c.Type == CommentType.Level && c.TargetId == this.SlotId); + + photos = this.database.Photos.Count(c => c.SlotId == this.SlotId); + } + + int players = RoomHelper.Rooms + .Where(r => r.Slot.SlotType == SlotType.Developer && r.Slot.SlotId == this.InternalSlotId) + .Sum(r => r.PlayerIds.Count); + + string slotData = LbpSerializer.StringElement("id", this.InternalSlotId) + + LbpSerializer.StringElement("playerCount", players); + + if(includeExtras) + slotData += LbpSerializer.StringElement("commentCount", comments) + + LbpSerializer.StringElement("photoCount", photos); + + return LbpSerializer.TaggedStringElement("slot", slotData, "type", "developer"); + } + public string Serialize ( GameVersion gameVersion = GameVersion.LittleBigPlanet1, @@ -248,6 +285,8 @@ public class Slot Review? yourReview = null ) { + if (this.Type == SlotType.Developer) return this.SerializeDevSlot(); + int playerCount = RoomHelper.Rooms.Count(r => r.Slot.SlotType == SlotType.User && r.Slot.SlotId == this.SlotId); string slotData = LbpSerializer.StringElement("name", this.Name) + @@ -274,6 +313,8 @@ public class Slot LbpSerializer.StringElement("mmpick", this.TeamPick) + LbpSerializer.StringElement("heartCount", this.Hearts) + LbpSerializer.StringElement("playCount", this.Plays) + + LbpSerializer.StringElement("photoCount", this.Photos) + + LbpSerializer.StringElement("authorPhotoCount", this.PhotosWithAuthor) + LbpSerializer.StringElement("commentCount", this.Comments) + LbpSerializer.StringElement("uniquePlayCount", this.PlaysLBP2Unique) + // ??? good naming scheme lol LbpSerializer.StringElement("completionCount", this.PlaysComplete) + diff --git a/ProjectLighthouse/Levels/SlotType.cs b/ProjectLighthouse/Levels/SlotType.cs index a34876c9..90e7ea76 100644 --- a/ProjectLighthouse/Levels/SlotType.cs +++ b/ProjectLighthouse/Levels/SlotType.cs @@ -1,12 +1,20 @@ +using System.Xml.Serialization; + namespace LBPUnion.ProjectLighthouse.Levels; public enum SlotType { + [XmlEnum("developer")] Developer = 0, + [XmlEnum("user")] User = 1, + [XmlEnum("moon")] Moon = 2, Unknown = 3, Unknown2 = 4, + [XmlEnum("pod")] Pod = 5, + [XmlEnum("local")] + Local = 6, DLC = 8, } \ No newline at end of file diff --git a/ProjectLighthouse/Migrations/20220729002704_DeveloperSlots.cs b/ProjectLighthouse/Migrations/20220729002704_DeveloperSlots.cs new file mode 100644 index 00000000..d05747f6 --- /dev/null +++ b/ProjectLighthouse/Migrations/20220729002704_DeveloperSlots.cs @@ -0,0 +1,72 @@ +using LBPUnion.ProjectLighthouse; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ProjectLighthouse.Migrations +{ + [DbContext(typeof(Database))] + [Migration("20220729002704_DeveloperSlots")] + public partial class DeveloperSlots : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "InternalSlotId", + table: "Slots", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "Type", + table: "Slots", + type: "int", + defaultValue: 1, + nullable: false); + + migrationBuilder.AddColumn( + name: "SlotId", + table: "Photos", + type: "int", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Photos_SlotId", + table: "Photos", + column: "SlotId"); + + migrationBuilder.AddForeignKey( + name: "FK_Photos_Slots_SlotId", + table: "Photos", + column: "SlotId", + principalTable: "Slots", + principalColumn: "SlotId", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Photos_Slots_SlotId", + table: "Photos"); + + migrationBuilder.DropIndex( + name: "IX_Photos_SlotId", + table: "Photos"); + + migrationBuilder.DropColumn( + name: "InternalSlotId", + table: "Slots"); + + migrationBuilder.DropColumn( + name: "Type", + table: "Slots"); + + migrationBuilder.DropColumn( + name: "SlotId", + table: "Photos"); + } + } +} diff --git a/ProjectLighthouse/Migrations/20220729182709_AddExpiryTimesToTokens.cs b/ProjectLighthouse/Migrations/20220729182709_AddExpiryTimesToTokens.cs new file mode 100644 index 00000000..1560ad99 --- /dev/null +++ b/ProjectLighthouse/Migrations/20220729182709_AddExpiryTimesToTokens.cs @@ -0,0 +1,80 @@ +using System; +using LBPUnion.ProjectLighthouse; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ProjectLighthouse.Migrations +{ + [DbContext(typeof(Database))] + [Migration("20220729182709_AddExpiryTimesToTokens")] + public partial class AddExpiryTimesToTokens : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + // Remove existing tokens + migrationBuilder.Sql("DELETE FROM GameTokens;"); + migrationBuilder.Sql("DELETE FROM WebTokens;"); + migrationBuilder.Sql("DELETE FROM EmailSetTokens;"); + migrationBuilder.Sql("DELETE FROM EmailVerificationTokens;"); + migrationBuilder.Sql("DELETE FROM PasswordResetTokens;"); + migrationBuilder.Sql("DELETE FROM RegistrationTokens;"); + + migrationBuilder.AddColumn( + name: "ExpiresAt", + table: "WebTokens", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "ExpiresAt", + table: "GameTokens", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "ExpiresAt", + table: "EmailVerificationTokens", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "ExpiresAt", + table: "EmailSetTokens", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "WebTokens"); + + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "RegistrationTokens"); + + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "PasswordResetTokens"); + + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "GameTokens"); + + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "EmailVerificationTokens"); + + migrationBuilder.DropColumn( + name: "ExpiresAt", + table: "EmailSetTokens"); + } + } +} diff --git a/ProjectLighthouse/Migrations/20220801055525_AddPrivacySettingsToUser.cs b/ProjectLighthouse/Migrations/20220801055525_AddPrivacySettingsToUser.cs new file mode 100644 index 00000000..d0735a73 --- /dev/null +++ b/ProjectLighthouse/Migrations/20220801055525_AddPrivacySettingsToUser.cs @@ -0,0 +1,42 @@ +using System; +using LBPUnion.ProjectLighthouse; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ProjectLighthouse.Migrations +{ + [DbContext(typeof(Database))] + [Migration("20220801055525_AddPrivacySettingsToUser")] + public partial class AddPrivacySettingsToUser : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "LevelVisibility", + table: "Users", + type: "int", + nullable: false, + defaultValue: 2); + + migrationBuilder.AddColumn( + name: "ProfileVisibility", + table: "Users", + type: "int", + nullable: false, + defaultValue: 2); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LevelVisibility", + table: "Users"); + + migrationBuilder.DropColumn( + name: "ProfileVisibility", + table: "Users"); + } + } +} diff --git a/ProjectLighthouse/Migrations/20220802150408_Arrrrrr.cs b/ProjectLighthouse/Migrations/20220802150408_Arrrrrr.cs new file mode 100644 index 00000000..43659add --- /dev/null +++ b/ProjectLighthouse/Migrations/20220802150408_Arrrrrr.cs @@ -0,0 +1,31 @@ +using System; +using LBPUnion.ProjectLighthouse; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ProjectLighthouse.Migrations +{ + [DbContext(typeof(Database))] + [Migration("20220802150408_Arrrrrr")] + public partial class Arrrrrr : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IsAPirate", + table: "Users", + type: "tinyint(1)", + nullable: false, + defaultValue: false); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IsAPirate", + table: "Users"); + } + } +} diff --git a/ProjectLighthouse/PlayerData/GameToken.cs b/ProjectLighthouse/PlayerData/GameToken.cs index dd83924a..1317b34f 100644 --- a/ProjectLighthouse/PlayerData/GameToken.cs +++ b/ProjectLighthouse/PlayerData/GameToken.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; @@ -28,4 +29,6 @@ public class GameToken // Set to true on login public bool Used { get; set; } + + public DateTime ExpiresAt { get; set; } } \ No newline at end of file diff --git a/ProjectLighthouse/PlayerData/LastContactHelper.cs b/ProjectLighthouse/PlayerData/LastContactHelper.cs index 28c9ae6c..78a31531 100644 --- a/ProjectLighthouse/PlayerData/LastContactHelper.cs +++ b/ProjectLighthouse/PlayerData/LastContactHelper.cs @@ -9,9 +9,8 @@ namespace LBPUnion.ProjectLighthouse.PlayerData; public static class LastContactHelper { - private static readonly Database database = new(); - public static async Task SetLastContact(User user, GameVersion gameVersion, Platform platform) + public static async Task SetLastContact(Database database, User user, GameVersion gameVersion, Platform platform) { LastContact? lastContact = await database.LastContacts.Where(l => l.UserId == user.UserId).FirstOrDefaultAsync(); diff --git a/ProjectLighthouse/PlayerData/Photo.cs b/ProjectLighthouse/PlayerData/Photo.cs index 8a8ca224..302d5366 100644 --- a/ProjectLighthouse/PlayerData/Photo.cs +++ b/ProjectLighthouse/PlayerData/Photo.cs @@ -5,6 +5,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.Serialization; using Microsoft.EntityFrameworkCore; @@ -19,6 +20,10 @@ public class Photo [NotMapped] private List? _subjects; + [NotMapped] + [XmlElement("slot")] + public PhotoSlot? XmlLevelInfo; + [NotMapped] [XmlArray("subjects")] [XmlArrayItem("subject")] @@ -81,9 +86,34 @@ public class Photo [ForeignKey(nameof(CreatorId))] public User? Creator { get; set; } - public string Serialize(int slotId) + public int? SlotId { get; set; } + + [ForeignKey(nameof(SlotId))] + public Slot? Slot { get; set; } + + public string Serialize() { - string slot = LbpSerializer.TaggedStringElement("slot", LbpSerializer.StringElement("id", slotId), "type", "user"); + using Database database = new(); + var partialSlot = database.Slots.Where(s => s.SlotId == this.SlotId.GetValueOrDefault()) + .Select(s => new + { + s.InternalSlotId, + s.Type, + }) + .FirstOrDefault(); + if (partialSlot == null) return this.Serialize(0, SlotType.User); + + int serializedSlotId = partialSlot.InternalSlotId; + if (serializedSlotId == 0) serializedSlotId = this.SlotId.GetValueOrDefault(); + + return this.Serialize(serializedSlotId, partialSlot.Type); + } + + public string Serialize(int slotId, SlotType slotType) + { + + string slot = LbpSerializer.TaggedStringElement("slot", LbpSerializer.StringElement("id", slotId), "type", slotType.ToString().ToLower()); + if (slotId == 0) slot = ""; string subjectsAggregate = this.Subjects.Aggregate(string.Empty, (s, subject) => s + subject.Serialize()); diff --git a/ProjectLighthouse/PlayerData/PhotoSlot.cs b/ProjectLighthouse/PlayerData/PhotoSlot.cs new file mode 100644 index 00000000..2726a932 --- /dev/null +++ b/ProjectLighthouse/PlayerData/PhotoSlot.cs @@ -0,0 +1,20 @@ +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Levels; + +namespace LBPUnion.ProjectLighthouse.PlayerData; + +[XmlRoot("slot")] +public class PhotoSlot +{ + [XmlAttribute("type")] + public SlotType SlotType { get; set; } + + [XmlElement("id")] + public int SlotId { get; set; } + + [XmlElement("rootLevel")] + public string RootLevel { get; set; } + + [XmlElement("name")] + public string LevelName { get; set; } +} \ No newline at end of file diff --git a/ProjectLighthouse/PlayerData/Profiles/Email/EmailSetToken.cs b/ProjectLighthouse/PlayerData/Profiles/Email/EmailSetToken.cs index 152e42ed..879efce9 100644 --- a/ProjectLighthouse/PlayerData/Profiles/Email/EmailSetToken.cs +++ b/ProjectLighthouse/PlayerData/Profiles/Email/EmailSetToken.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -14,4 +15,6 @@ public class EmailSetToken public User User { get; set; } public string EmailToken { get; set; } + + public DateTime ExpiresAt { get; set; } } \ No newline at end of file diff --git a/ProjectLighthouse/PlayerData/Profiles/Email/EmailVerificationToken.cs b/ProjectLighthouse/PlayerData/Profiles/Email/EmailVerificationToken.cs index 61559cce..d2c9e866 100644 --- a/ProjectLighthouse/PlayerData/Profiles/Email/EmailVerificationToken.cs +++ b/ProjectLighthouse/PlayerData/Profiles/Email/EmailVerificationToken.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -14,4 +15,6 @@ public class EmailVerificationToken public User User { get; set; } public string EmailToken { get; set; } + + public DateTime ExpiresAt { get; set; } } \ No newline at end of file diff --git a/ProjectLighthouse/PlayerData/Profiles/PrivacyType.cs b/ProjectLighthouse/PlayerData/Profiles/PrivacyType.cs new file mode 100644 index 00000000..0ac9e4e8 --- /dev/null +++ b/ProjectLighthouse/PlayerData/Profiles/PrivacyType.cs @@ -0,0 +1,41 @@ +using System; +using System.Diagnostics.CodeAnalysis; + +namespace LBPUnion.ProjectLighthouse.PlayerData.Profiles; + +/// +/// Where user levels/profiles should show. +/// +[SuppressMessage("ReSharper", "UnusedMember.Global")] +public enum PrivacyType +{ + /// + /// Shows your levels/profile only to those signed in on the website or the game. + /// + PSN = 0, + /// + /// Shows your levels/profile only to those in-game. + /// + Game = 1, + /// + /// Shows your levels/profile to everyone. + /// + All = 2, +} + +public static class PrivacyTypeExtensions +{ + public static string ToSerializedString(this PrivacyType type) + => type.ToString().ToLower(); + + public static PrivacyType? FromSerializedString(string type) + { + return type switch + { + "psn" => PrivacyType.PSN, + "game" => PrivacyType.Game, + "all" => PrivacyType.All, + _ => null, + }; + } +} \ No newline at end of file diff --git a/ProjectLighthouse/PlayerData/Profiles/User.cs b/ProjectLighthouse/PlayerData/Profiles/User.cs index 99664812..1ae3d804 100644 --- a/ProjectLighthouse/PlayerData/Profiles/User.cs +++ b/ProjectLighthouse/PlayerData/Profiles/User.cs @@ -154,6 +154,15 @@ public class User [JsonIgnore] public string? ApprovedIPAddress { get; set; } #nullable disable + + /// + /// ARRR! Forces the user to see Pirate English translations on the website. + /// + public bool IsAPirate { get; set; } + + public PrivacyType LevelVisibility { get; set; } = PrivacyType.All; + + public PrivacyType ProfileVisibility { get; set; } = PrivacyType.All; public string Serialize(GameVersion gameVersion = GameVersion.LittleBigPlanet1) { diff --git a/ProjectLighthouse/PlayerData/Reviews/Review.cs b/ProjectLighthouse/PlayerData/Reviews/Review.cs index 6843df3c..be4035c2 100644 --- a/ProjectLighthouse/PlayerData/Reviews/Review.cs +++ b/ProjectLighthouse/PlayerData/Reviews/Review.cs @@ -74,7 +74,7 @@ public class Review _ => "none", }; - string reviewData = LbpSerializer.TaggedStringElement("slot_id", this.SlotId, "type", this.Slot?.Type) + + string reviewData = LbpSerializer.TaggedStringElement("slot_id", this.SlotId, "type", this.Slot?.Type.ToString().ToLower()) + LbpSerializer.StringElement("reviewer", this.Reviewer?.Username) + LbpSerializer.StringElement("thumb", this.Thumb) + LbpSerializer.StringElement("timestamp", this.Timestamp) + diff --git a/ProjectLighthouse/PlayerData/WebToken.cs b/ProjectLighthouse/PlayerData/WebToken.cs index 7860a418..9ad0f5be 100644 --- a/ProjectLighthouse/PlayerData/WebToken.cs +++ b/ProjectLighthouse/PlayerData/WebToken.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace LBPUnion.ProjectLighthouse.PlayerData; @@ -11,4 +12,6 @@ public class WebToken public int UserId { get; set; } public string UserToken { get; set; } + + public DateTime ExpiresAt { get; set; } } \ No newline at end of file diff --git a/ProjectLighthouse/ProjectLighthouse.csproj b/ProjectLighthouse/ProjectLighthouse.csproj index bee4e972..d7565d7a 100644 --- a/ProjectLighthouse/ProjectLighthouse.csproj +++ b/ProjectLighthouse/ProjectLighthouse.csproj @@ -12,7 +12,7 @@ - + diff --git a/ProjectLighthouse/ProjectLighthouse/Migrations/DatabaseModelSnapshot.cs b/ProjectLighthouse/ProjectLighthouse/Migrations/DatabaseModelSnapshot.cs index 7bde9ec0..4ec291e0 100644 --- a/ProjectLighthouse/ProjectLighthouse/Migrations/DatabaseModelSnapshot.cs +++ b/ProjectLighthouse/ProjectLighthouse/Migrations/DatabaseModelSnapshot.cs @@ -242,6 +242,9 @@ namespace ProjectLighthouse.Migrations b.Property("InitiallyLocked") .HasColumnType("tinyint(1)"); + b.Property("InternalSlotId") + .HasColumnType("int"); + b.Property("LastUpdated") .HasColumnType("bigint"); @@ -321,6 +324,9 @@ namespace ProjectLighthouse.Migrations b.Property("TeamPick") .HasColumnType("tinyint(1)"); + b.Property("Type") + .HasColumnType("int"); + b.HasKey("SlotId"); b.HasIndex("CreatorId"); @@ -417,6 +423,9 @@ namespace ProjectLighthouse.Migrations b.Property("Approved") .HasColumnType("tinyint(1)"); + b.Property("ExpiresAt") + .HasColumnType("datetime(6)"); + b.Property("GameVersion") .HasColumnType("int"); @@ -487,6 +496,9 @@ namespace ProjectLighthouse.Migrations .IsRequired() .HasColumnType("longtext"); + b.Property("SlotId") + .HasColumnType("int"); + b.Property("SmallHash") .IsRequired() .HasColumnType("longtext"); @@ -498,6 +510,8 @@ namespace ProjectLighthouse.Migrations b.HasIndex("CreatorId"); + b.HasIndex("SlotId"); + b.ToTable("Photos"); }); @@ -572,6 +586,9 @@ namespace ProjectLighthouse.Migrations b.Property("EmailToken") .HasColumnType("longtext"); + b.Property("ExpiresAt") + .HasColumnType("datetime(6)"); + b.Property("UserId") .HasColumnType("int"); @@ -591,6 +608,9 @@ namespace ProjectLighthouse.Migrations b.Property("EmailToken") .HasColumnType("longtext"); + b.Property("ExpiresAt") + .HasColumnType("datetime(6)"); + b.Property("UserId") .HasColumnType("int"); @@ -694,6 +714,12 @@ namespace ProjectLighthouse.Migrations b.Property("IconHash") .HasColumnType("longtext"); + b.Property("IsAPirate") + .HasColumnType("tinyint(1)"); + + b.Property("LevelVisibility") + .HasColumnType("int"); + b.Property("LocationId") .HasColumnType("int"); @@ -721,6 +747,9 @@ namespace ProjectLighthouse.Migrations b.Property("PlanetHashLBPVita") .HasColumnType("longtext"); + b.Property("ProfileVisibility") + .HasColumnType("int"); + b.Property("Username") .IsRequired() .HasColumnType("longtext"); @@ -874,6 +903,9 @@ namespace ProjectLighthouse.Migrations .ValueGeneratedOnAdd() .HasColumnType("int"); + b.Property("ExpiresAt") + .HasColumnType("datetime(6)"); + b.Property("UserId") .HasColumnType("int"); @@ -1032,7 +1064,13 @@ namespace ProjectLighthouse.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("LBPUnion.ProjectLighthouse.Levels.Slot", "Slot") + .WithMany() + .HasForeignKey("SlotId"); + b.Navigation("Creator"); + + b.Navigation("Slot"); }); modelBuilder.Entity("LBPUnion.ProjectLighthouse.PlayerData.PhotoSubject", b =>