diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index a1b89d981..7217a983b 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"dotnet-ef": {
- "version": "8.0.3",
+ "version": "8.0.6",
"commands": [
"dotnet-ef"
]
diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml
index 1f36bca82..99b425b37 100644
--- a/.github/workflows/crowdin-pull.yml
+++ b/.github/workflows/crowdin-pull.yml
@@ -1,6 +1,7 @@
on:
schedule:
- cron: "*/60 * * * *"
+ workflow_dispatch:
name: Download Translations from Crowdin
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-en-GB.resx b/ProjectLighthouse.Localization/BaseLayout.lang-en-GB.resx
new file mode 100644
index 000000000..018d76883
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-en-GB.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ 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
+ A button on the header that lets you log in.
+
+
+ Login / Register
+ A button on the header that lets you log in or register.
+
+
+ Admin
+ A header link that takes you to the admin panel if available.
+
+
+ Log out
+ A shortcut to log you out of your account.
+
+
+ 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.
+
+
+ Read-Only Mode
+
+
+ This instance is currently in read-only mode. Level and photo uploads, comments, reviews, and certain profile changes will be restricted until read-only mode is disabled.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-en-UD.resx b/ProjectLighthouse.Localization/BaseLayout.lang-en-UD.resx
new file mode 100644
index 000000000..018d76883
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-en-UD.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ 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
+ A button on the header that lets you log in.
+
+
+ Login / Register
+ A button on the header that lets you log in or register.
+
+
+ Admin
+ A header link that takes you to the admin panel if available.
+
+
+ Log out
+ A shortcut to log you out of your account.
+
+
+ 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.
+
+
+ Read-Only Mode
+
+
+ This instance is currently in read-only mode. Level and photo uploads, comments, reviews, and certain profile changes will be restricted until read-only mode is disabled.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-fr-CA.resx b/ProjectLighthouse.Localization/BaseLayout.lang-fr-CA.resx
new file mode 100644
index 000000000..018d76883
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-fr-CA.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ 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
+ A button on the header that lets you log in.
+
+
+ Login / Register
+ A button on the header that lets you log in or register.
+
+
+ Admin
+ A header link that takes you to the admin panel if available.
+
+
+ Log out
+ A shortcut to log you out of your account.
+
+
+ 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.
+
+
+ Read-Only Mode
+
+
+ This instance is currently in read-only mode. Level and photo uploads, comments, reviews, and certain profile changes will be restricted until read-only mode is disabled.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-gd-GB.resx b/ProjectLighthouse.Localization/BaseLayout.lang-gd-GB.resx
deleted file mode 100644
index c799594c2..000000000
--- a/ProjectLighthouse.Localization/BaseLayout.lang-gd-GB.resx
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
- 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.
-
-
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-ko-KR.resx b/ProjectLighthouse.Localization/BaseLayout.lang-ko-KR.resx
new file mode 100644
index 000000000..018d76883
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-ko-KR.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ 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
+ A button on the header that lets you log in.
+
+
+ Login / Register
+ A button on the header that lets you log in or register.
+
+
+ Admin
+ A header link that takes you to the admin panel if available.
+
+
+ Log out
+ A shortcut to log you out of your account.
+
+
+ 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.
+
+
+ Read-Only Mode
+
+
+ This instance is currently in read-only mode. Level and photo uploads, comments, reviews, and certain profile changes will be restricted until read-only mode is disabled.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-nn-NO.resx b/ProjectLighthouse.Localization/BaseLayout.lang-nn-NO.resx
new file mode 100644
index 000000000..018d76883
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-nn-NO.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ 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
+ A button on the header that lets you log in.
+
+
+ Login / Register
+ A button on the header that lets you log in or register.
+
+
+ Admin
+ A header link that takes you to the admin panel if available.
+
+
+ Log out
+ A shortcut to log you out of your account.
+
+
+ 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.
+
+
+ Read-Only Mode
+
+
+ This instance is currently in read-only mode. Level and photo uploads, comments, reviews, and certain profile changes will be restricted until read-only mode is disabled.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/BaseLayout.lang-pt-BR.resx b/ProjectLighthouse.Localization/BaseLayout.lang-pt-BR.resx
new file mode 100644
index 000000000..23b769dc3
--- /dev/null
+++ b/ProjectLighthouse.Localization/BaseLayout.lang-pt-BR.resx
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ Usuários
+ A button on the header that takes you to the user listing.
+
+
+ Imagens
+ A button on the header that takes you to a list of user-uploaded photos.
+
+
+ Níveis
+ A button on the header that takes you to a list of user-uploaded levels. Levels are internally referred to as "slots".
+
+
+ Autenticação
+ A button on the header that takes you to a list of authentication attempts.
+
+
+ Entrar
+ A button on the header that lets you log in.
+
+
+ Entrar / Cadastrar
+ A button on the header that lets you log in or register.
+
+
+ Administrador
+ A header link that takes you to the admin panel if available.
+
+
+ Sair
+ A shortcut to log you out of your account.
+
+
+ Painel de Moderação
+
+
+ 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 tenhamos a intenção de ter o mínimo de JavaScript possível, nós não podemos garantir que tudo funcionará sem ele. Recomendamos que você coloque JavaScript na lista branca para o Projeto Lighthouse.
+
+
+ O JavaScript não está habilitado
+
+
+ Potencial Violação de Licença
+
+
+ Esta instância é uma instância pública que foi modificada sem as alterações publicadas. Você pode estar violando o {0}.
+
+
+ Se você acha que isso é um erro, por favor, crie um problema com a saída {0} executada a partir da raiz do código fonte do servidor na descrição do nosso rastreador de problemas {1}{2}.
+
+
+ Caso contrário, publique o código-fonte em algum lugar acessível aos seus usuários.
+
+
+ Modo somente leitura
+
+
+ Esta instância está atualmente em modo somente leitura. Envios de fotos, comentários, análises e certas alterações de perfil serão restringidas até que o modo somente leitura seja desativado.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-en-GB.resx b/ProjectLighthouse.Localization/Error.lang-en-GB.resx
new file mode 100644
index 000000000..6daa6b1af
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-en-GB.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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!
+
+
+ You must complete the captcha correctly.
+
+
+ The email address you've chosen is already taken.
+
+
+ Email address field is required.
+
+
+ You don't have permissions to perform this action.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-en-UD.resx b/ProjectLighthouse.Localization/Error.lang-en-UD.resx
new file mode 100644
index 000000000..6daa6b1af
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-en-UD.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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!
+
+
+ You must complete the captcha correctly.
+
+
+ The email address you've chosen is already taken.
+
+
+ Email address field is required.
+
+
+ You don't have permissions to perform this action.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-fr-CA.resx b/ProjectLighthouse.Localization/Error.lang-fr-CA.resx
new file mode 100644
index 000000000..6daa6b1af
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-fr-CA.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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!
+
+
+ You must complete the captcha correctly.
+
+
+ The email address you've chosen is already taken.
+
+
+ Email address field is required.
+
+
+ You don't have permissions to perform this action.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-ko-KR.resx b/ProjectLighthouse.Localization/Error.lang-ko-KR.resx
new file mode 100644
index 000000000..6daa6b1af
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-ko-KR.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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!
+
+
+ You must complete the captcha correctly.
+
+
+ The email address you've chosen is already taken.
+
+
+ Email address field is required.
+
+
+ You don't have permissions to perform this action.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-nn-NO.resx b/ProjectLighthouse.Localization/Error.lang-nn-NO.resx
new file mode 100644
index 000000000..6daa6b1af
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-nn-NO.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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!
+
+
+ You must complete the captcha correctly.
+
+
+ The email address you've chosen is already taken.
+
+
+ Email address field is required.
+
+
+ You don't have permissions to perform this action.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Error.lang-pt-BR.resx b/ProjectLighthouse.Localization/Error.lang-pt-BR.resx
new file mode 100644
index 000000000..dd024c132
--- /dev/null
+++ b/ProjectLighthouse.Localization/Error.lang-pt-BR.resx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ 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á vazio.
+
+
+ O nome de usuário que você escolheu já existe.
+
+
+ O campo de senha é obrigatório.
+
+
+ As senhas não coincidem!
+
+
+ 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ê não tem permissões para executar esta ação.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-en-GB.resx b/ProjectLighthouse.Localization/General.lang-en-GB.resx
new file mode 100644
index 000000000..5650186c9
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-en-GB.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Create an account
+
+
+ Forgot Password?
+
+
+ Uh oh!
+
+
+ Log In
+
+
+ Unknown
+
+
+ Success!
+
+
+ Reset Password
+
+
+ Recent Activity
+
+
+ Coming soon!
+
+
+ Most recent photos
+
+
+ Email
+
+
+ Announcements
+
+
+ Notifications
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-en-UD.resx b/ProjectLighthouse.Localization/General.lang-en-UD.resx
new file mode 100644
index 000000000..5650186c9
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-en-UD.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Create an account
+
+
+ Forgot Password?
+
+
+ Uh oh!
+
+
+ Log In
+
+
+ Unknown
+
+
+ Success!
+
+
+ Reset Password
+
+
+ Recent Activity
+
+
+ Coming soon!
+
+
+ Most recent photos
+
+
+ Email
+
+
+ Announcements
+
+
+ Notifications
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-fr-CA.resx b/ProjectLighthouse.Localization/General.lang-fr-CA.resx
new file mode 100644
index 000000000..5650186c9
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-fr-CA.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Create an account
+
+
+ Forgot Password?
+
+
+ Uh oh!
+
+
+ Log In
+
+
+ Unknown
+
+
+ Success!
+
+
+ Reset Password
+
+
+ Recent Activity
+
+
+ Coming soon!
+
+
+ Most recent photos
+
+
+ Email
+
+
+ Announcements
+
+
+ Notifications
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-ko-KR.resx b/ProjectLighthouse.Localization/General.lang-ko-KR.resx
new file mode 100644
index 000000000..5650186c9
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-ko-KR.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Create an account
+
+
+ Forgot Password?
+
+
+ Uh oh!
+
+
+ Log In
+
+
+ Unknown
+
+
+ Success!
+
+
+ Reset Password
+
+
+ Recent Activity
+
+
+ Coming soon!
+
+
+ Most recent photos
+
+
+ Email
+
+
+ Announcements
+
+
+ Notifications
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-nn-NO.resx b/ProjectLighthouse.Localization/General.lang-nn-NO.resx
new file mode 100644
index 000000000..5650186c9
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-nn-NO.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Create an account
+
+
+ Forgot Password?
+
+
+ Uh oh!
+
+
+ Log In
+
+
+ Unknown
+
+
+ Success!
+
+
+ Reset Password
+
+
+ Recent Activity
+
+
+ Coming soon!
+
+
+ Most recent photos
+
+
+ Email
+
+
+ Announcements
+
+
+ Notifications
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/General.lang-pt-BR.resx b/ProjectLighthouse.Localization/General.lang-pt-BR.resx
new file mode 100644
index 000000000..47b950433
--- /dev/null
+++ b/ProjectLighthouse.Localization/General.lang-pt-BR.resx
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Nome de usuário
+
+
+ Senha
+
+
+ Criar uma conta
+
+
+ Esqueceu sua senha?
+
+
+ Oh, não!
+
+
+ Entrar
+
+
+ Desconhecido
+
+
+ Sucesso!
+
+
+ Redefinir Senha
+
+
+ Atividade Recente
+
+
+ Em breve!
+
+
+ Imagens mais recentes
+
+
+ Email
+
+
+ Avisos
+
+
+ Notificações
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/LandingPage.lang-en-GB.resx b/ProjectLighthouse.Localization/LandingPage.lang-en-GB.resx
new file mode 100644
index 000000000..1a744b49d
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-en-GB.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.
+
+
+ Greetings, {0}.
+ A greeting on the main page of the website.
+
+
+ There are no people online. Why not hop on?
+ A greeting on the main page of the website.
+
+
+ There is 1 person currently online:
+ A greeting on the main page of the website.
+
+
+ There are currently {0} people 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-en-UD.resx b/ProjectLighthouse.Localization/LandingPage.lang-en-UD.resx
new file mode 100644
index 000000000..1a744b49d
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-en-UD.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.
+
+
+ Greetings, {0}.
+ A greeting on the main page of the website.
+
+
+ There are no people online. Why not hop on?
+ A greeting on the main page of the website.
+
+
+ There is 1 person currently online:
+ A greeting on the main page of the website.
+
+
+ There are currently {0} people 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-fr-CA.resx b/ProjectLighthouse.Localization/LandingPage.lang-fr-CA.resx
new file mode 100644
index 000000000..1a744b49d
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-fr-CA.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.
+
+
+ Greetings, {0}.
+ A greeting on the main page of the website.
+
+
+ There are no people online. Why not hop on?
+ A greeting on the main page of the website.
+
+
+ There is 1 person currently online:
+ A greeting on the main page of the website.
+
+
+ There are currently {0} people 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-ko-KR.resx b/ProjectLighthouse.Localization/LandingPage.lang-ko-KR.resx
new file mode 100644
index 000000000..1a744b49d
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-ko-KR.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.
+
+
+ Greetings, {0}.
+ A greeting on the main page of the website.
+
+
+ There are no people online. Why not hop on?
+ A greeting on the main page of the website.
+
+
+ There is 1 person currently online:
+ A greeting on the main page of the website.
+
+
+ There are currently {0} people 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-nn-NO.resx b/ProjectLighthouse.Localization/LandingPage.lang-nn-NO.resx
new file mode 100644
index 000000000..1a744b49d
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-nn-NO.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.
+
+
+ Greetings, {0}.
+ A greeting on the main page of the website.
+
+
+ There are no people online. Why not hop on?
+ A greeting on the main page of the website.
+
+
+ There is 1 person currently online:
+ A greeting on the main page of the website.
+
+
+ There are currently {0} people 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-pt-BR.resx b/ProjectLighthouse.Localization/LandingPage.lang-pt-BR.resx
new file mode 100644
index 000000000..9fc36db7b
--- /dev/null
+++ b/ProjectLighthouse.Localization/LandingPage.lang-pt-BR.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
+
+
+
+ Bem-vindo(a) ao {0}!
+ A greeting on the main page of the website.
+
+
+ Saudações, {0}.
+ A greeting on the main page of the website.
+
+
+ Não tem pessoas online. Por que não entrar?
+ A greeting on the main page of the website.
+
+
+ Tem 1 pessoa atualmente online:
+ A greeting on the main page of the website.
+
+
+ Atualmente tem {0} pessoas online:
+ A greeting on the main page of the website.
+
+
+ Você tem {0} tentativas pendentes de autenticação. Clique aqui para visualizá-las.
+ A greeting on the main page of the website.
+
+
+ Níveis Mais Recentes
+
+
+ Últimas Escolhas da Equipe
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/LoggedOut.lang-en-GB.resx b/ProjectLighthouse.Localization/LoggedOut.lang-en-GB.resx
new file mode 100644
index 000000000..7a1938893
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-en-GB.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-en-UD.resx b/ProjectLighthouse.Localization/LoggedOut.lang-en-UD.resx
new file mode 100644
index 000000000..7a1938893
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-en-UD.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-fr-CA.resx b/ProjectLighthouse.Localization/LoggedOut.lang-fr-CA.resx
new file mode 100644
index 000000000..7a1938893
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-fr-CA.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-ko-KR.resx b/ProjectLighthouse.Localization/LoggedOut.lang-ko-KR.resx
new file mode 100644
index 000000000..7a1938893
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-ko-KR.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-nn-NO.resx b/ProjectLighthouse.Localization/LoggedOut.lang-nn-NO.resx
new file mode 100644
index 000000000..7a1938893
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-nn-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
+
+
+ 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-pt-BR.resx b/ProjectLighthouse.Localization/LoggedOut.lang-pt-BR.resx
new file mode 100644
index 000000000..89908c612
--- /dev/null
+++ b/ProjectLighthouse.Localization/LoggedOut.lang-pt-BR.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
+
+
+ Desconectado
+
+
+ Você foi desconectado com sucesso. Você será redirecionado em 5 segundos, ou poderá clicar abaixo para fazê-lo manualmente.
+
+
+ Redirecionar
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-en-GB.resx b/ProjectLighthouse.Localization/ModPanel.lang-en-GB.resx
new file mode 100644
index 000000000..0471ed475
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-en-GB.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Moderation Panel
+
+
+ Welcome to the moderation panel, {0}!
+
+
+ Banned Users
+
+
+ Hidden Levels
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-en-UD.resx b/ProjectLighthouse.Localization/ModPanel.lang-en-UD.resx
new file mode 100644
index 000000000..0471ed475
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-en-UD.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Moderation Panel
+
+
+ Welcome to the moderation panel, {0}!
+
+
+ Banned Users
+
+
+ Hidden Levels
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-fr-CA.resx b/ProjectLighthouse.Localization/ModPanel.lang-fr-CA.resx
new file mode 100644
index 000000000..0471ed475
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-fr-CA.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Moderation Panel
+
+
+ Welcome to the moderation panel, {0}!
+
+
+ Banned Users
+
+
+ Hidden Levels
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-ko-KR.resx b/ProjectLighthouse.Localization/ModPanel.lang-ko-KR.resx
new file mode 100644
index 000000000..0471ed475
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-ko-KR.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Moderation Panel
+
+
+ Welcome to the moderation panel, {0}!
+
+
+ Banned Users
+
+
+ Hidden Levels
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-nn-NO.resx b/ProjectLighthouse.Localization/ModPanel.lang-nn-NO.resx
new file mode 100644
index 000000000..0471ed475
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-nn-NO.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Moderation Panel
+
+
+ Welcome to the moderation panel, {0}!
+
+
+ Banned Users
+
+
+ Hidden Levels
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/ModPanel.lang-pt-BR.resx b/ProjectLighthouse.Localization/ModPanel.lang-pt-BR.resx
new file mode 100644
index 000000000..80c04cd0b
--- /dev/null
+++ b/ProjectLighthouse.Localization/ModPanel.lang-pt-BR.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Painel de Moderação
+
+
+ Bem-vindo(a) ao painel de moderação, {0}!
+
+
+ Usuários Banidos
+
+
+ Níveis Ocultos
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-en-GB.resx b/ProjectLighthouse.Localization/Moderation.lang-en-GB.resx
new file mode 100644
index 000000000..89befa810
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-en-GB.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Account Suspended
+
+
+ Your {0} account has been suspended due to code of conduct violations.
+
+
+ During this suspension, the following features will be limited until {0}:
+
+
+ Reason for suspension: "{0}"
+
+
+ Attempts to circumvent this suspension will result in an extended suspension period.
+
+
+ LittleBigPlanet™ Online multiplayer
+
+
+ manually dismissed
+
+
+ Profile visibility
+
+
+ Browsing levels, photos, and profiles
+
+
+ Account and profile management
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-en-UD.resx b/ProjectLighthouse.Localization/Moderation.lang-en-UD.resx
new file mode 100644
index 000000000..89befa810
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-en-UD.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Account Suspended
+
+
+ Your {0} account has been suspended due to code of conduct violations.
+
+
+ During this suspension, the following features will be limited until {0}:
+
+
+ Reason for suspension: "{0}"
+
+
+ Attempts to circumvent this suspension will result in an extended suspension period.
+
+
+ LittleBigPlanet™ Online multiplayer
+
+
+ manually dismissed
+
+
+ Profile visibility
+
+
+ Browsing levels, photos, and profiles
+
+
+ Account and profile management
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-fr-CA.resx b/ProjectLighthouse.Localization/Moderation.lang-fr-CA.resx
new file mode 100644
index 000000000..89befa810
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-fr-CA.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Account Suspended
+
+
+ Your {0} account has been suspended due to code of conduct violations.
+
+
+ During this suspension, the following features will be limited until {0}:
+
+
+ Reason for suspension: "{0}"
+
+
+ Attempts to circumvent this suspension will result in an extended suspension period.
+
+
+ LittleBigPlanet™ Online multiplayer
+
+
+ manually dismissed
+
+
+ Profile visibility
+
+
+ Browsing levels, photos, and profiles
+
+
+ Account and profile management
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-ko-KR.resx b/ProjectLighthouse.Localization/Moderation.lang-ko-KR.resx
new file mode 100644
index 000000000..89befa810
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-ko-KR.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Account Suspended
+
+
+ Your {0} account has been suspended due to code of conduct violations.
+
+
+ During this suspension, the following features will be limited until {0}:
+
+
+ Reason for suspension: "{0}"
+
+
+ Attempts to circumvent this suspension will result in an extended suspension period.
+
+
+ LittleBigPlanet™ Online multiplayer
+
+
+ manually dismissed
+
+
+ Profile visibility
+
+
+ Browsing levels, photos, and profiles
+
+
+ Account and profile management
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-nn-NO.resx b/ProjectLighthouse.Localization/Moderation.lang-nn-NO.resx
new file mode 100644
index 000000000..89befa810
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-nn-NO.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Account Suspended
+
+
+ Your {0} account has been suspended due to code of conduct violations.
+
+
+ During this suspension, the following features will be limited until {0}:
+
+
+ Reason for suspension: "{0}"
+
+
+ Attempts to circumvent this suspension will result in an extended suspension period.
+
+
+ LittleBigPlanet™ Online multiplayer
+
+
+ manually dismissed
+
+
+ Profile visibility
+
+
+ Browsing levels, photos, and profiles
+
+
+ Account and profile management
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Moderation.lang-pt-BR.resx b/ProjectLighthouse.Localization/Moderation.lang-pt-BR.resx
new file mode 100644
index 000000000..8010e98c6
--- /dev/null
+++ b/ProjectLighthouse.Localization/Moderation.lang-pt-BR.resx
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Conta suspensa
+
+
+ A sua conta {0} foi suspensa devido a violação do código de conduta.
+
+
+ Durante esta suspensão, os seguintes recursos serão limitados até {0}:
+
+
+ Motivo da suspensão: "{0}"
+
+
+ Tentativas de contornar esta suspensão resultarão num período de suspensão maior.
+
+
+ Multiplayer Online LittleBigPlanet™
+
+
+ manualmente dispensados
+
+
+ Visibilidade do perfil
+
+
+ Navegando níveis, fotos e perfis
+
+
+ Gestão de conta e perfil
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-en-GB.resx b/ProjectLighthouse.Localization/Privacy.lang-en-GB.resx
new file mode 100644
index 000000000..6726d1db5
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-en-GB.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable commenting on your profile.
+
+
+ Disable commenting on your profile.
+
+
+ You have not blocked any users.
+
+
+ You have blocked {0} user(s).
+
+
+ Share your {0} with everyone!
+
+
+ Only share your {0} with users who are signed into the website or playing in-game.
+
+
+ Only share your {0} with users who are playing in-game.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-en-UD.resx b/ProjectLighthouse.Localization/Privacy.lang-en-UD.resx
new file mode 100644
index 000000000..6726d1db5
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-en-UD.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable commenting on your profile.
+
+
+ Disable commenting on your profile.
+
+
+ You have not blocked any users.
+
+
+ You have blocked {0} user(s).
+
+
+ Share your {0} with everyone!
+
+
+ Only share your {0} with users who are signed into the website or playing in-game.
+
+
+ Only share your {0} with users who are playing in-game.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-fr-CA.resx b/ProjectLighthouse.Localization/Privacy.lang-fr-CA.resx
new file mode 100644
index 000000000..6726d1db5
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-fr-CA.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable commenting on your profile.
+
+
+ Disable commenting on your profile.
+
+
+ You have not blocked any users.
+
+
+ You have blocked {0} user(s).
+
+
+ Share your {0} with everyone!
+
+
+ Only share your {0} with users who are signed into the website or playing in-game.
+
+
+ Only share your {0} with users who are playing in-game.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-ko-KR.resx b/ProjectLighthouse.Localization/Privacy.lang-ko-KR.resx
new file mode 100644
index 000000000..6726d1db5
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-ko-KR.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable commenting on your profile.
+
+
+ Disable commenting on your profile.
+
+
+ You have not blocked any users.
+
+
+ You have blocked {0} user(s).
+
+
+ Share your {0} with everyone!
+
+
+ Only share your {0} with users who are signed into the website or playing in-game.
+
+
+ Only share your {0} with users who are playing in-game.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-nn-NO.resx b/ProjectLighthouse.Localization/Privacy.lang-nn-NO.resx
new file mode 100644
index 000000000..6726d1db5
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-nn-NO.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable commenting on your profile.
+
+
+ Disable commenting on your profile.
+
+
+ You have not blocked any users.
+
+
+ You have blocked {0} user(s).
+
+
+ Share your {0} with everyone!
+
+
+ Only share your {0} with users who are signed into the website or playing in-game.
+
+
+ Only share your {0} with users who are playing in-game.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Privacy.lang-pt-BR.resx b/ProjectLighthouse.Localization/Privacy.lang-pt-BR.resx
new file mode 100644
index 000000000..6ff0e0f02
--- /dev/null
+++ b/ProjectLighthouse.Localization/Privacy.lang-pt-BR.resx
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Habilitar comentários no seu perfil.
+
+
+ Desativar comentários no seu perfil.
+
+
+ Você não bloqueou nenhum usuário.
+
+
+ Você bloqueou {0} usuário(s).
+
+
+ Compartilhe sua {0} com todo mundo!
+
+
+ Compartilhe apenas a sua {0} com os usuários que estão logados no site ou jogando.
+
+
+ Compartilhe a {0} apenas com usuários que estão jogando.
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-en-GB.resx b/ProjectLighthouse.Localization/Profile.lang-en-GB.resx
new file mode 100644
index 000000000..e175fd623
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-en-GB.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Profile Tag
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-en-UD.resx b/ProjectLighthouse.Localization/Profile.lang-en-UD.resx
new file mode 100644
index 000000000..e175fd623
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-en-UD.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Profile Tag
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-fr-CA.resx b/ProjectLighthouse.Localization/Profile.lang-fr-CA.resx
new file mode 100644
index 000000000..e175fd623
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-fr-CA.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Profile Tag
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-ko-KR.resx b/ProjectLighthouse.Localization/Profile.lang-ko-KR.resx
new file mode 100644
index 000000000..e175fd623
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-ko-KR.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Profile Tag
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-nn-NO.resx b/ProjectLighthouse.Localization/Profile.lang-nn-NO.resx
new file mode 100644
index 000000000..e175fd623
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-nn-NO.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Profile Tag
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Profile.lang-pt-BR.resx b/ProjectLighthouse.Localization/Profile.lang-pt-BR.resx
new file mode 100644
index 000000000..167321c78
--- /dev/null
+++ b/ProjectLighthouse.Localization/Profile.lang-pt-BR.resx
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ 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}
+
+
+ Tag do Perfil
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Register.lang-en-GB.resx b/ProjectLighthouse.Localization/Register.lang-en-GB.resx
new file mode 100644
index 000000000..abd741d26
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-en-GB.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-en-UD.resx b/ProjectLighthouse.Localization/Register.lang-en-UD.resx
new file mode 100644
index 000000000..abd741d26
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-en-UD.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-CA.resx b/ProjectLighthouse.Localization/Register.lang-fr-CA.resx
new file mode 100644
index 000000000..abd741d26
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-fr-CA.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-ko-KR.resx b/ProjectLighthouse.Localization/Register.lang-ko-KR.resx
new file mode 100644
index 000000000..abd741d26
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-ko-KR.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-nn-NO.resx b/ProjectLighthouse.Localization/Register.lang-nn-NO.resx
new file mode 100644
index 000000000..abd741d26
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-nn-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
+
+
+ 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-pt-BR.resx b/ProjectLighthouse.Localization/Register.lang-pt-BR.resx
new file mode 100644
index 000000000..1cc29082b
--- /dev/null
+++ b/ProjectLighthouse.Localization/Register.lang-pt-BR.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/Status.lang-en-GB.resx b/ProjectLighthouse.Localization/Status.lang-en-GB.resx
new file mode 100644
index 000000000..214b28fbb
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-en-GB.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 playing {0} on {1}
+
+
+ Offline
+
+
+ Offline since {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Status.lang-en-UD.resx b/ProjectLighthouse.Localization/Status.lang-en-UD.resx
new file mode 100644
index 000000000..214b28fbb
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-en-UD.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 playing {0} on {1}
+
+
+ Offline
+
+
+ Offline since {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Status.lang-fr-CA.resx b/ProjectLighthouse.Localization/Status.lang-fr-CA.resx
new file mode 100644
index 000000000..214b28fbb
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-fr-CA.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 playing {0} on {1}
+
+
+ Offline
+
+
+ Offline since {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Status.lang-ko-KR.resx b/ProjectLighthouse.Localization/Status.lang-ko-KR.resx
new file mode 100644
index 000000000..214b28fbb
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-ko-KR.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 playing {0} on {1}
+
+
+ Offline
+
+
+ Offline since {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Status.lang-nn-NO.resx b/ProjectLighthouse.Localization/Status.lang-nn-NO.resx
new file mode 100644
index 000000000..214b28fbb
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-nn-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
+
+
+ Currently playing {0} on {1}
+
+
+ Offline
+
+
+ Offline since {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/Status.lang-pt-BR.resx b/ProjectLighthouse.Localization/Status.lang-pt-BR.resx
new file mode 100644
index 000000000..489608e7a
--- /dev/null
+++ b/ProjectLighthouse.Localization/Status.lang-pt-BR.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
+
+
+ Atualmente jogando {0} em {1}
+
+
+ Offline
+
+
+ Offline desde {0}
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/StringLists/TwoFactorStrings.cs b/ProjectLighthouse.Localization/StringLists/TwoFactorStrings.cs
index 307ad97d5..799588003 100644
--- a/ProjectLighthouse.Localization/StringLists/TwoFactorStrings.cs
+++ b/ProjectLighthouse.Localization/StringLists/TwoFactorStrings.cs
@@ -24,6 +24,10 @@ public static class TwoFactorStrings
public static readonly TranslatableString QrTitle = create("qr_title");
public static readonly TranslatableString QrDescription = create("qr_description");
+ public static readonly TranslatableString QrAlternativeDescription = create("qr_alternative");
+ public static readonly TranslatableString QrAlternativeCopy = create("qr_alternative_copy");
+ public static readonly TranslatableString QrAlternativeCopySuccess = create("qr_alternative_copy_success");
+ public static readonly TranslatableString QrAlternativeCopyFail = create("qr_alternative_copy_success");
private static TranslatableString create(string key) => new(TranslationAreas.TwoFactor, key);
}
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-ar-SA.resx b/ProjectLighthouse.Localization/TwoFactor.lang-ar-SA.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-ar-SA.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-ar-SA.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-da-DK.resx b/ProjectLighthouse.Localization/TwoFactor.lang-da-DK.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-da-DK.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-da-DK.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-de-DE.resx b/ProjectLighthouse.Localization/TwoFactor.lang-de-DE.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-de-DE.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-de-DE.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-en-GB.resx b/ProjectLighthouse.Localization/TwoFactor.lang-en-GB.resx
new file mode 100644
index 000000000..78f4869f8
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-en-GB.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable Two-Factor
+
+
+ Disable Two-Factor
+
+
+ Once you have added this two factor code to your app of choice, enter a valid code below to finish the setup process
+
+
+ Here is your Two-Factor QR code
+
+
+ Backup codes
+
+
+ These codes will allow you to regain access to your account if you ever lose access to your 2FA device
+
+
+ Save these codes somewhere because otherwise you may be locked out of your account
+
+
+ I've saved these codes
+
+
+ Invalid 2FA Code
+
+
+ To disable two-factor authentication, enter a correct code from your authenticator app.
+
+
+ Two-Factor Authentication
+
+
+ You are required to setup 2FA because of your role within this instance.
+
+
+ Enter a valid 2FA code to continue
+
+
+ Alternatively, you can click {0}here{1} to enter one of your backup codes
+
+
+ Download backup codes
+
+
+ Invalid Backup Code
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-en-PT.resx b/ProjectLighthouse.Localization/TwoFactor.lang-en-PT.resx
index fba20be9d..6a8434f7c 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-en-PT.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-en-PT.resx
@@ -65,4 +65,16 @@
Rancid backup key
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-en-UD.resx b/ProjectLighthouse.Localization/TwoFactor.lang-en-UD.resx
new file mode 100644
index 000000000..78f4869f8
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-en-UD.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable Two-Factor
+
+
+ Disable Two-Factor
+
+
+ Once you have added this two factor code to your app of choice, enter a valid code below to finish the setup process
+
+
+ Here is your Two-Factor QR code
+
+
+ Backup codes
+
+
+ These codes will allow you to regain access to your account if you ever lose access to your 2FA device
+
+
+ Save these codes somewhere because otherwise you may be locked out of your account
+
+
+ I've saved these codes
+
+
+ Invalid 2FA Code
+
+
+ To disable two-factor authentication, enter a correct code from your authenticator app.
+
+
+ Two-Factor Authentication
+
+
+ You are required to setup 2FA because of your role within this instance.
+
+
+ Enter a valid 2FA code to continue
+
+
+ Alternatively, you can click {0}here{1} to enter one of your backup codes
+
+
+ Download backup codes
+
+
+ Invalid Backup Code
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-eo-UY.resx b/ProjectLighthouse.Localization/TwoFactor.lang-eo-UY.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-eo-UY.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-eo-UY.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-es-ES.resx b/ProjectLighthouse.Localization/TwoFactor.lang-es-ES.resx
index 37476cf38..aaeffe1d0 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-es-ES.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-es-ES.resx
@@ -65,4 +65,16 @@
Código de Respaldo Inválido
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-es-MX.resx b/ProjectLighthouse.Localization/TwoFactor.lang-es-MX.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-es-MX.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-es-MX.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-et-EE.resx b/ProjectLighthouse.Localization/TwoFactor.lang-et-EE.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-et-EE.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-et-EE.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-fi-FI.resx b/ProjectLighthouse.Localization/TwoFactor.lang-fi-FI.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-fi-FI.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-fi-FI.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-fil-PH.resx b/ProjectLighthouse.Localization/TwoFactor.lang-fil-PH.resx
index 1a03f1004..47b29c73a 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-fil-PH.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-fil-PH.resx
@@ -65,4 +65,16 @@
Hindi wastong Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-fr-CA.resx b/ProjectLighthouse.Localization/TwoFactor.lang-fr-CA.resx
new file mode 100644
index 000000000..78f4869f8
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-fr-CA.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable Two-Factor
+
+
+ Disable Two-Factor
+
+
+ Once you have added this two factor code to your app of choice, enter a valid code below to finish the setup process
+
+
+ Here is your Two-Factor QR code
+
+
+ Backup codes
+
+
+ These codes will allow you to regain access to your account if you ever lose access to your 2FA device
+
+
+ Save these codes somewhere because otherwise you may be locked out of your account
+
+
+ I've saved these codes
+
+
+ Invalid 2FA Code
+
+
+ To disable two-factor authentication, enter a correct code from your authenticator app.
+
+
+ Two-Factor Authentication
+
+
+ You are required to setup 2FA because of your role within this instance.
+
+
+ Enter a valid 2FA code to continue
+
+
+ Alternatively, you can click {0}here{1} to enter one of your backup codes
+
+
+ Download backup codes
+
+
+ Invalid Backup Code
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-fr-FR.resx b/ProjectLighthouse.Localization/TwoFactor.lang-fr-FR.resx
index d224bf5c4..0ca08a778 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-fr-FR.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-fr-FR.resx
@@ -65,4 +65,16 @@
Code de secours non valide
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-ga-IE.resx b/ProjectLighthouse.Localization/TwoFactor.lang-ga-IE.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-ga-IE.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-ga-IE.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-he-IL.resx b/ProjectLighthouse.Localization/TwoFactor.lang-he-IL.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-he-IL.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-he-IL.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-hi-IN.resx b/ProjectLighthouse.Localization/TwoFactor.lang-hi-IN.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-hi-IN.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-hi-IN.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-id-ID.resx b/ProjectLighthouse.Localization/TwoFactor.lang-id-ID.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-id-ID.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-id-ID.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-it-IT.resx b/ProjectLighthouse.Localization/TwoFactor.lang-it-IT.resx
index 4ebcb974b..8eabfef69 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-it-IT.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-it-IT.resx
@@ -65,4 +65,16 @@
Codice di backup non valido
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-ja-JP.resx b/ProjectLighthouse.Localization/TwoFactor.lang-ja-JP.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-ja-JP.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-ja-JP.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-ko-KR.resx b/ProjectLighthouse.Localization/TwoFactor.lang-ko-KR.resx
new file mode 100644
index 000000000..78f4869f8
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-ko-KR.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable Two-Factor
+
+
+ Disable Two-Factor
+
+
+ Once you have added this two factor code to your app of choice, enter a valid code below to finish the setup process
+
+
+ Here is your Two-Factor QR code
+
+
+ Backup codes
+
+
+ These codes will allow you to regain access to your account if you ever lose access to your 2FA device
+
+
+ Save these codes somewhere because otherwise you may be locked out of your account
+
+
+ I've saved these codes
+
+
+ Invalid 2FA Code
+
+
+ To disable two-factor authentication, enter a correct code from your authenticator app.
+
+
+ Two-Factor Authentication
+
+
+ You are required to setup 2FA because of your role within this instance.
+
+
+ Enter a valid 2FA code to continue
+
+
+ Alternatively, you can click {0}here{1} to enter one of your backup codes
+
+
+ Download backup codes
+
+
+ Invalid Backup Code
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-nl-NL.resx b/ProjectLighthouse.Localization/TwoFactor.lang-nl-NL.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-nl-NL.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-nl-NL.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-nn-NO.resx b/ProjectLighthouse.Localization/TwoFactor.lang-nn-NO.resx
new file mode 100644
index 000000000..78f4869f8
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-nn-NO.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Enable Two-Factor
+
+
+ Disable Two-Factor
+
+
+ Once you have added this two factor code to your app of choice, enter a valid code below to finish the setup process
+
+
+ Here is your Two-Factor QR code
+
+
+ Backup codes
+
+
+ These codes will allow you to regain access to your account if you ever lose access to your 2FA device
+
+
+ Save these codes somewhere because otherwise you may be locked out of your account
+
+
+ I've saved these codes
+
+
+ Invalid 2FA Code
+
+
+ To disable two-factor authentication, enter a correct code from your authenticator app.
+
+
+ Two-Factor Authentication
+
+
+ You are required to setup 2FA because of your role within this instance.
+
+
+ Enter a valid 2FA code to continue
+
+
+ Alternatively, you can click {0}here{1} to enter one of your backup codes
+
+
+ Download backup codes
+
+
+ Invalid Backup Code
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-no-NO.resx b/ProjectLighthouse.Localization/TwoFactor.lang-no-NO.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-no-NO.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-no-NO.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-pl-PL.resx b/ProjectLighthouse.Localization/TwoFactor.lang-pl-PL.resx
index c636d6402..c81a8285b 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-pl-PL.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-pl-PL.resx
@@ -65,4 +65,16 @@
Nieprawidłowy Kod Zapasowy
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-pt-BR.resx b/ProjectLighthouse.Localization/TwoFactor.lang-pt-BR.resx
new file mode 100644
index 000000000..a29f8e130
--- /dev/null
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-pt-BR.resx
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 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
+
+
+ Ativar autenticação de dois fatores
+
+
+ Desativar autenticação de dois fatores
+
+
+ Depois de adicionar este código de dois fatores em seu aplicativo favorito, insira um código válido abaixo para concluir o processo de configuração
+
+
+ Aqui está seu código QR de dois fatores
+
+
+ Códigos de backup
+
+
+ Estes códigos permitirão que você recupere o acesso à sua conta caso perca o acesso ao seu dispositivo 2FA
+
+
+ Salve estes códigos em algum lugar, caso contrário, você poderá ser bloqueado de sua conta
+
+
+ Eu salvei esses códigos
+
+
+ Código 2FA inválido
+
+
+ Para desativar a autenticação de dois fatores, insira um código correto do seu aplicativo de autenticação.
+
+
+ Autenticação de dois fatores
+
+
+ Você é obrigado a configurar a autenticação de dois fatores devido o seu papel nesta instância.
+
+
+ Digite um código de verificação em duas etapas para continuar
+
+
+ Como alternativa, você pode clicar {0}aqui{1} para inserir um dos seus códigos de backup
+
+
+ Baixar códigos de backup
+
+
+ Código de Backup Inválido
+
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-pt-PT.resx b/ProjectLighthouse.Localization/TwoFactor.lang-pt-PT.resx
index 5a92a0c03..f4bbf240c 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-pt-PT.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-pt-PT.resx
@@ -65,4 +65,16 @@
Código de Backup Inválido
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-ru-RU.resx b/ProjectLighthouse.Localization/TwoFactor.lang-ru-RU.resx
index dc37e87f6..64ffd8b17 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-ru-RU.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-ru-RU.resx
@@ -65,4 +65,16 @@
Неверный Резервный Код
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-sv-SE.resx b/ProjectLighthouse.Localization/TwoFactor.lang-sv-SE.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-sv-SE.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-sv-SE.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-th-TH.resx b/ProjectLighthouse.Localization/TwoFactor.lang-th-TH.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-th-TH.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-th-TH.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-tr-TR.resx b/ProjectLighthouse.Localization/TwoFactor.lang-tr-TR.resx
index 8c9e02d65..46d13b1a4 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-tr-TR.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-tr-TR.resx
@@ -65,4 +65,16 @@
Geçersiz Yedek Kodu
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-uk-UA.resx b/ProjectLighthouse.Localization/TwoFactor.lang-uk-UA.resx
index 3137d4f83..e9d0a7dbf 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-uk-UA.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-uk-UA.resx
@@ -65,4 +65,16 @@
Недійсний резервний код
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-zh-CN.resx b/ProjectLighthouse.Localization/TwoFactor.lang-zh-CN.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-zh-CN.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-zh-CN.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.lang-zh-TW.resx b/ProjectLighthouse.Localization/TwoFactor.lang-zh-TW.resx
index 139c6e6da..78f4869f8 100644
--- a/ProjectLighthouse.Localization/TwoFactor.lang-zh-TW.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.lang-zh-TW.resx
@@ -65,4 +65,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Localization/TwoFactor.resx b/ProjectLighthouse.Localization/TwoFactor.resx
index 21d78ec4e..45845e8f5 100644
--- a/ProjectLighthouse.Localization/TwoFactor.resx
+++ b/ProjectLighthouse.Localization/TwoFactor.resx
@@ -66,4 +66,16 @@
Invalid Backup Code
+
+ Can't use the QR code? You can use this secret key instead:
+
+
+ Copy secret code
+
+
+ Copied to clipboard
+
+
+ Failed to copy to clipboard
+
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs b/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs
index 736e47669..a906793b2 100644
--- a/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs
+++ b/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs
@@ -5,6 +5,7 @@
using LBPUnion.ProjectLighthouse.Servers.API.Responses;
using LBPUnion.ProjectLighthouse.Types.Users;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers;
@@ -49,24 +50,33 @@ public async Task GetStatistics()
GameVersion.LittleBigPlanetPSP,
};
+ private static readonly List platforms = new()
+ {
+ Platform.PS3,
+ Platform.RPCS3,
+ Platform.Vita,
+ Platform.PSP,
+ };
+
///
/// Get player counts for each individual title
///
- /// An instance of PlayerCountResponse
+ /// An instance of PlayerCountByGameResponse
[HttpGet("playerCount")]
- [ProducesResponseType(typeof(PlayerCountResponse), StatusCodes.Status200OK)]
+ [HttpGet("playerCount/game")]
+ [ProducesResponseType(typeof(PlayerCountByGameResponse), StatusCodes.Status200OK)]
public async Task GetPlayerCounts()
{
List gameList = new();
foreach (GameVersion version in gameVersions)
{
- gameList.Add(new PlayerCountObject
+ gameList.Add(new PlayerCountByGameObject
{
Game = version.ToString(),
- PlayerCount = await StatisticsHelper.RecentMatchesForGame(this.database, version),
+ PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.GameVersion == version),
});
}
- PlayerCountResponse response = new()
+ PlayerCountByGameResponse response = new()
{
TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database),
Games = gameList,
@@ -74,4 +84,56 @@ public async Task GetPlayerCounts()
return this.Ok(response);
}
+
+ ///
+ /// Get player counts for each individual platform
+ ///
+ /// An instance of PlayerCountByPlatformResponse
+ [HttpGet("playerCount/platform")]
+ [ProducesResponseType(typeof(PlayerCountByPlatformResponse), StatusCodes.Status200OK)]
+ public async Task GetPlayerCountsByPlatform()
+ {
+ List platformList = new();
+ foreach (Platform platform in platforms)
+ {
+ platformList.Add(new PlayerCountByPlatformObject
+ {
+ Platform = platform.ToString(),
+ PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.Platform == platform),
+ });
+ }
+
+ PlayerCountByPlatformResponse response = new()
+ {
+ TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database),
+ Platforms = platformList,
+ };
+
+ return this.Ok(response);
+ }
+
+ ///
+ /// Gets a list of online players
+ ///
+ /// An instance of PlayerListResponse
+ [HttpGet("players")]
+ [ProducesResponseType(typeof(PlayerListResponse), StatusCodes.Status200OK)]
+ public async Task GetPlayerList()
+ {
+ List players = await this.database.LastContacts.Where(l => TimeHelper.Timestamp - l.Timestamp < 300)
+ .Select(l => new PlayerListObject
+ {
+ Username = l.User!.Username,
+ Game = l.GameVersion.ToString(),
+ Platform = l.Platform.ToString(),
+ })
+ .ToListAsync();
+
+ PlayerListResponse response = new()
+ {
+ Players = players,
+ };
+
+ return this.Ok(response);
+ }
}
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.API/Responses/PlayerCountResponse.cs b/ProjectLighthouse.Servers.API/Responses/PlayerCountResponse.cs
index 27e82e306..619a848a9 100644
--- a/ProjectLighthouse.Servers.API/Responses/PlayerCountResponse.cs
+++ b/ProjectLighthouse.Servers.API/Responses/PlayerCountResponse.cs
@@ -1,13 +1,37 @@
-namespace LBPUnion.ProjectLighthouse.Servers.API.Responses;
+using System.Text.Json.Serialization;
+namespace LBPUnion.ProjectLighthouse.Servers.API.Responses;
+
+[JsonDerivedType(typeof(PlayerCountByGameObject))]
+[JsonDerivedType(typeof(PlayerCountByPlatformObject))]
public class PlayerCountObject
{
- public string Game { get; set; } = "";
public int PlayerCount { get; set; }
}
+public class PlayerCountByGameObject : PlayerCountObject
+{
+ public string Game { get; set; } = "";
+}
+
+public class PlayerCountByPlatformObject : PlayerCountObject
+{
+ public string Platform { get; set; } = "";
+}
+
+[JsonDerivedType(typeof(PlayerCountByGameResponse))]
+[JsonDerivedType(typeof(PlayerCountByPlatformResponse))]
public class PlayerCountResponse
{
public int TotalPlayerCount { get; set; }
+}
+
+public class PlayerCountByGameResponse : PlayerCountResponse
+{
public List Games { get; set; } = new();
+}
+
+public class PlayerCountByPlatformResponse : PlayerCountResponse
+{
+ public List Platforms { get; set; } = new();
}
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.API/Responses/PlayerListResponse.cs b/ProjectLighthouse.Servers.API/Responses/PlayerListResponse.cs
new file mode 100644
index 000000000..55470d4a4
--- /dev/null
+++ b/ProjectLighthouse.Servers.API/Responses/PlayerListResponse.cs
@@ -0,0 +1,13 @@
+namespace LBPUnion.ProjectLighthouse.Servers.API.Responses;
+
+public class PlayerListResponse
+{
+ public required List Players { get; set; }
+}
+
+public class PlayerListObject
+{
+ public required string Username { get; set; }
+ public required string Game { get; set; }
+ public required string Platform { get; set; }
+}
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs
index ff35092bc..a9580e387 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs
@@ -263,6 +263,7 @@ public async Task LuckyDipSlots([FromQuery] int seed)
PaginationData pageData = this.Request.GetPaginationData();
SlotQueryBuilder queryBuilder = this.FilterFromRequest(token);
+ queryBuilder.AddFilter(new LockedSlotFilter());
pageData.TotalElements = await StatisticsHelper.SlotCount(this.database, queryBuilder);
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs
index f6417ab35..78e70e612 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs
@@ -27,7 +27,8 @@ public StatisticsController(DatabaseContext database)
public IActionResult PlayersInPodCount() => this.Ok(StatisticsHelper.RoomCountForPlatform(this.GetToken().Platform).ToString());
[HttpGet("totalPlayerCount")]
- public async Task TotalPlayerCount() => this.Ok((await StatisticsHelper.RecentMatchesForGame(this.database, this.GetToken().GameVersion)).ToString());
+ public async Task TotalPlayerCount() =>
+ this.Ok((await StatisticsHelper.RecentMatches(this.database, l => l.GameVersion == this.GetToken().GameVersion)).ToString());
[HttpGet("planetStats")]
[Produces("text/xml")]
diff --git a/ProjectLighthouse.Servers.GameServer/Startup/TokenAuthHandler.cs b/ProjectLighthouse.Servers.GameServer/Startup/TokenAuthHandler.cs
index 02760bce4..cc97b80ff 100644
--- a/ProjectLighthouse.Servers.GameServer/Startup/TokenAuthHandler.cs
+++ b/ProjectLighthouse.Servers.GameServer/Startup/TokenAuthHandler.cs
@@ -1,6 +1,8 @@
-using System.Security.Claims;
+using System.Net;
+using System.Security.Claims;
using System.Text.Encodings.Web;
using LBPUnion.ProjectLighthouse.Database;
+using LBPUnion.ProjectLighthouse.Helpers;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Logging.Abstractions;
@@ -36,10 +38,17 @@ protected override async Task HandleAuthenticateAsync()
GameTokenEntity? gameToken = await this.database.GameTokenFromRequest(this.Request);
if (gameToken == null) return AuthenticateResult.Fail("No game token");
+ IPAddress? remoteIpAddress = this.Context.Connection.RemoteIpAddress;
+ if (remoteIpAddress == null) return AuthenticateResult.Fail("Failed to determine IP address");
+
+ if (CryptoHelper.Sha256Hash(remoteIpAddress.ToString()) != gameToken.LocationHash)
+ return AuthenticateResult.Fail("IP address change detected");
+
this.Context.Items["Token"] = gameToken;
- Claim[] claims = {
- new("userId", gameToken.UserId.ToString()),
- };
+ Claim[] claims =
+ [
+ new Claim("userId", gameToken.UserId.ToString()),
+ ];
ClaimsIdentity identity = new(claims, this.Scheme.Name);
ClaimsPrincipal principal = new(identity);
AuthenticationTicket ticket = new(principal, this.Scheme.Name);
diff --git a/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs b/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs
index 93bea8805..6d8528b4d 100644
--- a/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs
+++ b/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs
@@ -2,6 +2,7 @@
using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Filter;
+using LBPUnion.ProjectLighthouse.Filter.Filters;
using LBPUnion.ProjectLighthouse.Filter.Sorts;
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
@@ -16,7 +17,10 @@ public class LuckyDipCategory : SlotCategory
public override string Endpoint { get; set; } = "lucky_dip";
public override string Tag => "lucky_dip";
- public override IQueryable GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder) =>
- database.Slots.Where(queryBuilder.Build())
+ public override IQueryable GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder)
+ {
+ queryBuilder.AddFilter(new LockedSlotFilter());
+ return database.Slots.Where(queryBuilder.Build())
.ApplyOrdering(new SlotSortBuilder().AddSort(new RandomFirstUploadedSort()));
+ }
}
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminUserController.cs b/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminUserController.cs
index 84b024ff5..b4b0ec983 100644
--- a/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminUserController.cs
+++ b/ProjectLighthouse.Servers.Website/Controllers/Admin/AdminUserController.cs
@@ -1,8 +1,11 @@
#nullable enable
using LBPUnion.ProjectLighthouse.Database;
+using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Files;
using LBPUnion.ProjectLighthouse.Logging;
+using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
+using LBPUnion.ProjectLighthouse.Types.Entities.Token;
using LBPUnion.ProjectLighthouse.Types.Logging;
using LBPUnion.ProjectLighthouse.Types.Moderation.Cases;
using LBPUnion.ProjectLighthouse.Types.Users;
@@ -26,7 +29,8 @@ public AdminUserController(DatabaseContext database)
/// Resets the user's earth decorations to a blank state. Useful for users who abuse audio for example.
///
[HttpGet("wipePlanets")]
- public async Task WipePlanets([FromRoute] int id) {
+ public async Task WipePlanets([FromRoute] int id)
+ {
UserEntity? user = this.database.UserFromWebRequest(this.Request);
if (user == null || !user.IsModerator) return this.NotFound();
@@ -90,6 +94,100 @@ await this.database.SendNotification(targetedUser.UserId,
return this.Redirect($"/user/{targetedUser.UserId}");
}
+
+ ///
+ /// Deletes every comment by the user. Useful in case of mass spam
+ ///
+ [HttpGet("wipeComments")]
+ public async Task WipeComments([FromRoute] int id)
+ {
+ UserEntity? user = this.database.UserFromWebRequest(this.Request);
+ if (user == null || !user.IsModerator) return this.NotFound();
+
+ UserEntity? targetedUser = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id);
+ if (targetedUser == null) return this.NotFound();
+
+ // Find every comment by the user, then set the deletion info on them
+ await this.database.Comments.Where(c => c.PosterUserId == targetedUser.UserId)
+ .ExecuteUpdateAsync(s =>
+ s.SetProperty(c => c.Deleted, true)
+ .SetProperty(c => c.DeletedBy, user.Username)
+ .SetProperty(c => c.DeletedType, "moderator"));
+ Logger.Success($"Deleted comments for {targetedUser.Username} (id:{targetedUser.UserId})", LogArea.Admin);
+
+ await this.database.SendNotification(targetedUser.UserId,
+ "Your comments have been deleted by a moderator.");
+
+ return this.Redirect($"/user/{targetedUser.UserId}");
+ }
+
+ ///
+ /// Deletes every score from the user. Useful in the case where a user cheated a ton of scores
+ ///
+ [HttpGet("wipeScores")]
+ public async Task WipeScores([FromRoute] int id)
+ {
+ UserEntity? user = this.database.UserFromWebRequest(this.Request);
+ if (user == null || !user.IsModerator) return this.NotFound();
+
+ UserEntity? targetedUser = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id);
+ if (targetedUser == null) return this.NotFound();
+
+ // Find and delete every score uploaded by the target user
+ await this.database.Scores.Where(c => c.UserId == targetedUser.UserId).ExecuteDeleteAsync();
+ Logger.Success($"Deleted scores for {targetedUser.Username} (id:{targetedUser.UserId})", LogArea.Admin);
+
+ await this.database.SendNotification(targetedUser.UserId, "Your scores have been deleted by a moderator.");
+
+ return this.Redirect($"/user/{targetedUser.UserId}");
+ }
+
+ ///
+ /// Deletes the user's current avatar. Can prevent crashes in-game, or just be used to remove images that break guidelines.
+ ///
+ [HttpGet("wipeAvatar")]
+ public async Task WipeAvatar([FromRoute] int id)
+ {
+ UserEntity? user = this.database.UserFromWebRequest(this.Request);
+ if (user == null || !user.IsModerator) return this.NotFound();
+
+ UserEntity? targetedUser = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id);
+ if (targetedUser == null) return this.NotFound();
+
+ targetedUser.IconHash = "";
+
+ await this.database.SaveChangesAsync();
+ Logger.Success($"Reset profile picture for {targetedUser.Username} (id:{targetedUser.UserId})", LogArea.Admin);
+
+ await this.database.SendNotification(targetedUser.UserId, "Your profile picture has been reset by a moderator.");
+
+ return this.Redirect($"/user/{targetedUser.UserId}");
+ }
+
+ ///
+ /// Forces the email verification of a user.
+ ///
+ [HttpGet("forceVerifyEmail")]
+ public async Task ForceVerifyEmail([FromRoute] int id)
+ {
+ UserEntity? user = this.database.UserFromWebRequest(this.Request);
+ if (user == null || !user.IsModerator) return this.NotFound();
+
+ UserEntity? targetedUser = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id);
+ if (targetedUser == null) return this.NotFound();
+ if (targetedUser.EmailAddress == null || targetedUser.EmailAddressVerified) return this.NotFound();
+
+ List tokens = await this.database.EmailVerificationTokens
+ .Where(t => t.UserId == targetedUser.UserId)
+ .ToListAsync();
+ this.database.EmailVerificationTokens.RemoveRange(tokens);
+
+ targetedUser.EmailAddressVerified = true;
+
+ await this.database.SaveChangesAsync();
+
+ return this.Redirect($"/user/{targetedUser.UserId}");
+ }
[HttpPost("/admin/user/{id:int}/setPermissionLevel")]
public async Task SetUserPermissionLevel([FromRoute] int id, [FromForm] PermissionLevel role)
diff --git a/ProjectLighthouse.Servers.Website/Pages/Debug/VersionInfoPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/Debug/VersionInfoPage.cshtml
index d8eff2a43..f5bec53d6 100644
--- a/ProjectLighthouse.Servers.Website/Pages/Debug/VersionInfoPage.cshtml
+++ b/ProjectLighthouse.Servers.Website/Pages/Debug/VersionInfoPage.cshtml
@@ -14,5 +14,4 @@
Branch: @VersionHelper.Branch
Build: @VersionHelper.Build
CommitHash: @VersionHelper.CommitHash
-
IsDirty: @VersionHelper.IsDirty
RepositoryUrl: @VersionHelper.RepositoryUrl
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml
index 14f147822..725b59455 100644
--- a/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml
+++ b/ProjectLighthouse.Servers.Website/Pages/Layouts/BaseLayout.cshtml
@@ -158,26 +158,6 @@
- @if (!ServerStatics.IsDebug() && VersionHelper.IsDirty)
- {
-