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/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml
new file mode 100644
index 000000000..b3df742ba
--- /dev/null
+++ b/.github/workflows/qodana_code_quality.yml
@@ -0,0 +1,33 @@
+name: Qodana
+on:
+ workflow_dispatch:
+ pull_request_target:
+ branches:
+ - main
+ push:
+ branches: # Specify your branches here
+ - main # The 'main' branch
+ - 'releases/*' # The release branches
+
+jobs:
+ qodana:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pull-requests: write
+ checks: write
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
+ fetch-depth: 0 # a full history is required for pull request analysis
+ - name: 'Qodana Scan'
+ uses: JetBrains/qodana-action@v2024.1
+ with:
+ pr-mode: false
+ env:
+ QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_1488465344 }}
+ QODANA_ENDPOINT: 'https://qodana.cloud'
+ - uses: github/codeql-action/upload-sarif@v2
+ with:
+ sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
diff --git a/.idea/.idea.ProjectLighthouse/.idea/projectSettingsUpdater.xml b/.idea/.idea.ProjectLighthouse/.idea/projectSettingsUpdater.xml
index 4bb9f4d2a..64af657f5 100644
--- a/.idea/.idea.ProjectLighthouse/.idea/projectSettingsUpdater.xml
+++ b/.idea/.idea.ProjectLighthouse/.idea/projectSettingsUpdater.xml
@@ -1,6 +1,7 @@
-
+
+
\ No newline at end of file
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.GameServer/Controllers/CommentController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs
index a906b170b..7e3baeb9e 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs
@@ -3,12 +3,10 @@
using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Helpers;
-using LBPUnion.ProjectLighthouse.Logging;
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Levels;
-using LBPUnion.ProjectLighthouse.Types.Logging;
using LBPUnion.ProjectLighthouse.Types.Serialization;
using LBPUnion.ProjectLighthouse.Types.Users;
using Microsoft.AspNetCore.Authorization;
@@ -144,11 +142,7 @@ public async Task PostComment(string? username, string? slotType,
targetId = await this.database.UserIdFromUsername(username!);
}
- string filteredText = CensorHelper.FilterMessage(comment.Message);
-
- if (ServerConfiguration.Instance.LogChatFiltering && filteredText != comment.Message)
- Logger.Info($"Censored profane word(s) from in-game comment sent by {username}: \"{comment.Message}\" => \"{filteredText}\"",
- LogArea.Filter);
+ string filteredText = CensorHelper.FilterMessage(comment.Message, FilterLocation.ChatMessage, username);
bool success = await this.database.PostComment(token.UserId, targetId, type, filteredText);
if (success) return this.Ok();
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Login/LoginController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Login/LoginController.cs
index 7a4834634..077f1b006 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/Login/LoginController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/Login/LoginController.cs
@@ -1,4 +1,3 @@
-#nullable enable
using System.Net;
using LBPUnion.ProjectLighthouse.Configuration;
using LBPUnion.ProjectLighthouse.Database;
@@ -21,12 +20,10 @@ namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Login;
public class LoginController : ControllerBase
{
private readonly DatabaseContext database;
-
public LoginController(DatabaseContext database)
{
this.database = database;
}
-
[HttpPost]
public async Task Login()
{
@@ -57,9 +54,9 @@ public async Task Login()
string ipAddress = remoteIpAddress.ToString();
- string? username = npTicket.Username;
+ string username = npTicket.Username;
- if (username == null)
+ if (string.IsNullOrEmpty(username))
{
Logger.Warn("Unable to determine username, rejecting login", LogArea.Login);
return this.Forbid();
@@ -77,7 +74,7 @@ public async Task Login()
case Platform.PS3:
case Platform.Vita:
case Platform.UnitTest:
- user = await this.database.Users.FirstOrDefaultAsync(u => u.LinkedPsnId == npTicket.UserId);
+ user = await database.Users.FirstOrDefaultAsync(u => u.LinkedPsnId == npTicket.UserId);
break;
case Platform.PSP:
case Platform.Unknown:
@@ -89,7 +86,7 @@ public async Task Login()
if (user == null)
{
// Check if there is an account with that username already
- UserEntity? targetUsername = await this.database.Users.FirstOrDefaultAsync(u => u.Username == npTicket.Username);
+ UserEntity? targetUsername = await database.Users.FirstOrDefaultAsync(u => u.Username == npTicket.Username);
if (targetUsername != null)
{
ulong targetPlatform = npTicket.Platform == Platform.RPCS3
@@ -104,7 +101,7 @@ public async Task Login()
}
// if there is already a pending link request don't create another
- bool linkAttemptExists = await this.database.PlatformLinkAttempts.AnyAsync(p =>
+ bool linkAttemptExists = await database.PlatformLinkAttempts.AnyAsync(p =>
p.Platform == npTicket.Platform &&
p.PlatformId == npTicket.UserId &&
p.UserId == targetUsername.UserId);
@@ -119,8 +116,8 @@ public async Task Login()
Timestamp = TimeHelper.TimestampMillis,
PlatformId = npTicket.UserId,
};
- this.database.PlatformLinkAttempts.Add(linkAttempt);
- await this.database.SaveChangesAsync();
+ database.PlatformLinkAttempts.Add(linkAttempt);
+ await database.SaveChangesAsync();
Logger.Success($"User '{npTicket.Username}' tried to login but platform isn't linked, platform={npTicket.Platform}", LogArea.Login);
return this.Forbid();
}
@@ -130,12 +127,31 @@ public async Task Login()
Logger.Warn($"Unknown user tried to connect username={username}", LogArea.Login);
return this.Forbid();
}
+
+ // Block RPCN signups if forbidden in config
+ if (npTicket.Platform == Platform.RPCS3 && !ServerConfiguration.Instance.Authentication.AllowRPCNSignup)
+ {
+ Logger.Warn(
+ $"New user tried to sign up via RPCN, and that is forbidden in the config, username={username}, remoteIpAddress={remoteIpAddress}",
+ LogArea.Login);
+ return this.Forbid();
+ }
+
+ // Block PSN signups if forbidden in config
+ if (npTicket.Platform.IsPSN() && !ServerConfiguration.Instance.Authentication.AllowPSNSignup)
+ {
+ Logger.Warn(
+ $"New user tried to sign up via PSN, and that is forbidden in the config, username={username}, remoteIpAddress={remoteIpAddress}",
+ LogArea.Login);
+ return this.Forbid();
+ }
+
// create account for user if they don't exist
- user = await this.database.CreateUser(username, "$");
+ user = await database.CreateUser(username, "$");
user.Password = null;
user.LinkedRpcnId = npTicket.Platform == Platform.RPCS3 ? npTicket.UserId : 0;
user.LinkedPsnId = npTicket.Platform != Platform.RPCS3 ? npTicket.UserId : 0;
- await this.database.SaveChangesAsync();
+ await database.SaveChangesAsync();
if (DiscordConfiguration.Instance.DiscordIntegrationEnabled)
{
@@ -155,7 +171,7 @@ public async Task Login()
// automatically change username if it doesn't match
else if (user.Username != npTicket.Username)
{
- bool usernameExists = await this.database.Users.AnyAsync(u => u.Username == npTicket.Username);
+ bool usernameExists = await database.Users.AnyAsync(u => u.Username == npTicket.Username);
if (usernameExists)
{
Logger.Warn($"{npTicket.Platform} user changed their name to a name that is already taken," +
@@ -164,17 +180,17 @@ public async Task Login()
}
Logger.Info($"User's username has changed, old='{user.Username}', new='{npTicket.Username}', platform={npTicket.Platform}", LogArea.Login);
user.Username = username;
- await this.database.PlatformLinkAttempts.RemoveWhere(p => p.UserId == user.UserId);
+ await database.PlatformLinkAttempts.RemoveWhere(p => p.UserId == user.UserId);
// unlink other platforms because the names no longer match
if (npTicket.Platform == Platform.RPCS3)
user.LinkedPsnId = 0;
else
user.LinkedRpcnId = 0;
- await this.database.SaveChangesAsync();
+ await database.SaveChangesAsync();
}
- GameTokenEntity? token = await this.database.GameTokens.Include(t => t.User)
+ GameTokenEntity? token = await database.GameTokens.Include(t => t.User)
.FirstOrDefaultAsync(t => t.User.Username == npTicket.Username && t.TicketHash == npTicket.TicketHash);
if (token != null)
@@ -183,7 +199,7 @@ public async Task Login()
return this.Forbid();
}
- token = await this.database.AuthenticateUser(user, npTicket, ipAddress);
+ token = await database.AuthenticateUser(user, npTicket, ipAddress);
if (token == null)
{
Logger.Warn($"Unable to find/generate a token for username {npTicket.Username}", LogArea.Login);
@@ -200,7 +216,7 @@ public async Task Login()
user.LastLogin = TimeHelper.TimestampMillis;
- await this.database.SaveChangesAsync();
+ await database.SaveChangesAsync();
// Create a new room on LBP2/3/Vita
if (token.GameVersion != GameVersion.LittleBigPlanet1) RoomHelper.CreateRoom(user.UserId, token.GameVersion, token.Platform);
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs
index 26ae10acf..42b1d1b7b 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs
@@ -10,6 +10,7 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Notifications;
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Logging;
using LBPUnion.ProjectLighthouse.Types.Mail;
using LBPUnion.ProjectLighthouse.Types.Serialization;
@@ -143,15 +144,10 @@ public async Task Filter(IMailService mailService)
string username = await this.database.UsernameFromGameToken(token);
- string filteredText = CensorHelper.FilterMessage(message);
-
if (ServerConfiguration.Instance.LogChatMessages) Logger.Info($"{username}: \"{message}\"", LogArea.Filter);
- if (ServerConfiguration.Instance.LogChatFiltering && filteredText != message)
- Logger.Info(
- $"Censored profane word(s) from in-game text sent by {username}: \"{message}\" => \"{filteredText}\"",
- LogArea.Filter);
+ message = CensorHelper.FilterMessage(message, FilterLocation.ChatMessage, username);
- return this.Ok(filteredText);
+ return this.Ok(message);
}
}
\ No newline at end of file
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs
index 7bedc01dc..dfb42c710 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs
@@ -10,6 +10,7 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
using LBPUnion.ProjectLighthouse.Types.Logging;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Resources;
using LBPUnion.ProjectLighthouse.Types.Serialization;
using LBPUnion.ProjectLighthouse.Types.Users;
@@ -142,7 +143,7 @@ await this.database.SendNotification(user.UserId,
// Yes Rider, this isn't null
Debug.Assert(slot.Resources != null, "slot.ResourceList != null");
- slot.Name = CensorHelper.FilterMessage(slot.Name);
+ slot.Name = CensorHelper.FilterMessage(slot.Name, FilterLocation.SlotName, user.Username);
if (slot.Name.Length > 64)
{
@@ -153,7 +154,7 @@ await this.database.SendNotification(user.UserId,
return this.BadRequest();
}
- slot.Description = CensorHelper.FilterMessage(slot.Description);
+ slot.Description = CensorHelper.FilterMessage(slot.Description, FilterLocation.SlotDescription, user.Username);
if (slot.Description.Length > 512)
{
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ReviewController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ReviewController.cs
index 0dd54c078..3b2a7fbbf 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ReviewController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/ReviewController.cs
@@ -99,7 +99,9 @@ public async Task PostReview(int slotId)
GameReview? newReview = await this.DeserializeBody();
if (newReview == null) return this.BadRequest();
- newReview.Text = CensorHelper.FilterMessage(newReview.Text);
+ // Temporary fix until this can be refactored to use a UserEntity properly
+ string username = await this.database.UsernameFromGameToken(token);
+ newReview.Text = CensorHelper.FilterMessage(newReview.Text, FilterLocation.SlotReview, username);
if (newReview.Text.Length > 512) return this.BadRequest();
diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs
index 7019cdd76..7301bc52c 100644
--- a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs
+++ b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs
@@ -3,6 +3,7 @@
using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Files;
+using LBPUnion.ProjectLighthouse.Helpers;
using LBPUnion.ProjectLighthouse.Logging;
using LBPUnion.ProjectLighthouse.Servers.GameServer.Helpers;
using LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Users;
@@ -11,6 +12,7 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
using LBPUnion.ProjectLighthouse.Types.Levels;
using LBPUnion.ProjectLighthouse.Types.Logging;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Serialization;
using LBPUnion.ProjectLighthouse.Types.Users;
using Microsoft.AspNetCore.Authorization;
@@ -79,7 +81,9 @@ public async Task UpdateUser()
if (update.Biography.Length > 512) return this.BadRequest();
- user.Biography = update.Biography;
+ string filteredBio = CensorHelper.FilterMessage(update.Biography, FilterLocation.UserBiography, user.Username);
+
+ user.Biography = filteredBio;
}
if (update.Location != null) user.Location = update.Location;
diff --git a/ProjectLighthouse.Servers.Website/Controllers/Moderator/ModerationRemovalController.cs b/ProjectLighthouse.Servers.Website/Controllers/Moderator/ModerationRemovalController.cs
index 782b39919..ec088e13b 100644
--- a/ProjectLighthouse.Servers.Website/Controllers/Moderator/ModerationRemovalController.cs
+++ b/ProjectLighthouse.Servers.Website/Controllers/Moderator/ModerationRemovalController.cs
@@ -56,52 +56,58 @@ public async Task DeleteComment(int commentId, [FromQuery] string
UserEntity? user = this.database.UserFromWebRequest(this.Request);
if (user == null) return this.Redirect("~/login");
- CommentEntity? comment = await this.database.Comments
- .Include(c => c.TargetUser)
+ CommentEntity? comment = await this.database.Comments.Include(c => c.TargetUser)
.Include(c => c.TargetSlot)
+ .ThenInclude(s => s!.Creator)
.FirstOrDefaultAsync(c => c.CommentId == commentId);
if (comment == null) return this.Redirect("~/404");
-
if (comment.Deleted) return this.Redirect(callbackUrl ?? "~/");
- bool canDelete;
- switch (comment.Type)
+ bool canDelete = comment.Type switch
{
- case CommentType.Level:
- int slotCreatorId = await this.database.Slots.Where(s => s.SlotId == comment.TargetSlotId)
- .Select(s => s.CreatorId)
- .FirstOrDefaultAsync();
- canDelete = user.UserId == comment.PosterUserId || user.UserId == slotCreatorId;
- break;
- case CommentType.Profile:
- canDelete = user.UserId == comment.PosterUserId || user.UserId == comment.TargetUserId;
- break;
- default: throw new ArgumentOutOfRangeException(nameof(commentId));
- }
-
+ CommentType.Level => user.UserId == comment.PosterUserId || user.UserId == comment.TargetSlot?.CreatorId,
+ CommentType.Profile => user.UserId == comment.PosterUserId || user.UserId == comment.TargetUserId,
+ _ => throw new ArgumentOutOfRangeException(nameof(comment.Type),
+ @"Comment type is not recognized (impossible)."),
+ };
if (!canDelete && !user.IsModerator) return this.Redirect(callbackUrl ?? "~/");
comment.Deleted = true;
comment.DeletedBy = user.Username;
comment.DeletedType = !canDelete && user.IsModerator ? "moderator" : "user";
- switch (comment.Type)
+ switch (comment.DeletedType)
{
- case CommentType.Profile when comment.DeletedType == "moderator" && comment.TargetUser != null:
+ case "moderator":
{
- await this.database.SendNotification(comment.PosterUserId,
- $"Your comment on {comment.TargetUser.Username}'s profile has been removed by a moderator.");
-
+ string? notificationMessage = comment.Type switch
+ {
+ CommentType.Profile when comment.TargetUser != null =>
+ $"Your comment on {comment.TargetUser.Username}'s profile has been removed by a moderator.",
+ CommentType.Level when comment.TargetSlot != null =>
+ $"Your comment on level {comment.TargetSlot.Name} has been removed by a moderator.",
+ _ => null,
+ };
+
+ if (notificationMessage != null)
+ await this.database.SendNotification(comment.PosterUserId, notificationMessage);
break;
}
- case CommentType.Level when comment.DeletedType == "moderator" && comment.TargetSlot != null:
+ case "user":
{
- await this.database.SendNotification(comment.PosterUserId,
- $"Your comment on level {comment.TargetSlot.Name} has been removed by a moderator.");
-
+ string? notificationMessage = comment.Type switch
+ {
+ CommentType.Profile when comment.TargetUser != null && user != comment.TargetUser =>
+ $"Your comment on {comment.TargetUser.Username}'s profile has been removed by the user.",
+ CommentType.Level when comment.TargetSlot != null && user != comment.TargetSlot.Creator =>
+ $"Your comment on level {comment.TargetSlot.Name} has been removed by the user.",
+ _ => null,
+ };
+
+ if (notificationMessage != null)
+ await this.database.SendNotification(comment.PosterUserId, notificationMessage);
break;
}
- default: throw new ArgumentOutOfRangeException(nameof(comment.Type), @"Comment type is out of range.");
}
await this.database.SaveChangesAsync();
diff --git a/ProjectLighthouse.Servers.Website/Controllers/SlotPageController.cs b/ProjectLighthouse.Servers.Website/Controllers/SlotPageController.cs
index 7f22b0b6b..1b4381c1a 100644
--- a/ProjectLighthouse.Servers.Website/Controllers/SlotPageController.cs
+++ b/ProjectLighthouse.Servers.Website/Controllers/SlotPageController.cs
@@ -6,6 +6,7 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Logging;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
@@ -73,11 +74,7 @@ public async Task PostComment([FromRoute] int id, [FromForm] stri
}
string username = await this.database.UsernameFromWebToken(token);
- string filteredText = CensorHelper.FilterMessage(msg);
-
- if (ServerConfiguration.Instance.LogChatFiltering && filteredText != msg)
- Logger.Info($"Censored profane word(s) from slot comment sent by {username}: \"{msg}\" => \"{filteredText}\"",
- LogArea.Filter);
+ string filteredText = CensorHelper.FilterMessage(msg, FilterLocation.SlotReview, username);
bool success = await this.database.PostComment(token.UserId, id, CommentType.Level, filteredText);
if (success)
diff --git a/ProjectLighthouse.Servers.Website/Controllers/UserPageController.cs b/ProjectLighthouse.Servers.Website/Controllers/UserPageController.cs
index afd23458d..9c1883529 100644
--- a/ProjectLighthouse.Servers.Website/Controllers/UserPageController.cs
+++ b/ProjectLighthouse.Servers.Website/Controllers/UserPageController.cs
@@ -5,6 +5,7 @@
using LBPUnion.ProjectLighthouse.Logging;
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Types.Logging;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
@@ -49,11 +50,7 @@ public async Task PostComment([FromRoute] int id, [FromForm] stri
}
string username = await this.database.UsernameFromWebToken(token);
- string filteredText = CensorHelper.FilterMessage(msg);
-
- if (ServerConfiguration.Instance.LogChatFiltering && filteredText != msg)
- Logger.Info($"Censored profane word(s) from user comment sent by {username}: \"{msg}\" => \"{filteredText}\"",
- LogArea.Filter);
+ string filteredText = CensorHelper.FilterMessage(msg, FilterLocation.UserComment, username);
bool success = await this.database.PostComment(token.UserId, id, CommentType.Profile, filteredText);
if (success)
diff --git a/ProjectLighthouse.Servers.Website/Pages/Debug/FilterTestPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/Debug/FilterTestPage.cshtml.cs
index fe61d7e87..e8e613ec0 100644
--- a/ProjectLighthouse.Servers.Website/Pages/Debug/FilterTestPage.cshtml.cs
+++ b/ProjectLighthouse.Servers.Website/Pages/Debug/FilterTestPage.cshtml.cs
@@ -3,6 +3,7 @@
using LBPUnion.ProjectLighthouse.Helpers;
#endif
using LBPUnion.ProjectLighthouse.Database;
+using LBPUnion.ProjectLighthouse.Types.Filter;
using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts;
using Microsoft.AspNetCore.Mvc;
@@ -19,7 +20,7 @@ public FilterTestPage(DatabaseContext database) : base(database)
public IActionResult OnGet(string? text = null)
{
#if DEBUG
- if (text != null) this.FilteredText = CensorHelper.FilterMessage(text);
+ if (text != null) this.FilteredText = CensorHelper.FilterMessage(text, FilterLocation.Test);
this.Text = text;
return this.Page();
diff --git a/ProjectLighthouse.Servers.Website/Pages/SlotSettingsPage.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/SlotSettingsPage.cshtml.cs
index 02ce1e615..39db9def9 100644
--- a/ProjectLighthouse.Servers.Website/Pages/SlotSettingsPage.cshtml.cs
+++ b/ProjectLighthouse.Servers.Website/Pages/SlotSettingsPage.cshtml.cs
@@ -49,15 +49,15 @@ [FromForm] bool lbp1Only
if (name != null)
{
- name = CensorHelper.FilterMessage(name);
- if (this.Slot.Name != name && name.Length <= 64)
+ name = CensorHelper.FilterMessage(name, FilterLocation.SlotName, this.User.Username);
+ if (this.Slot.Name != name && name.Length <= 64)
this.Slot.Name = name;
}
if (description != null)
{
- description = CensorHelper.FilterMessage(description);
- if (this.Slot.Description != description && description?.Length <= 512)
+ description = CensorHelper.FilterMessage(description, FilterLocation.SlotDescription, this.User.Username);
+ if (this.Slot.Description != description && description.Length <= 512)
this.Slot.Description = description;
}
diff --git a/ProjectLighthouse.Servers.Website/Pages/TwoFactor/SetupTwoFactorPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/TwoFactor/SetupTwoFactorPage.cshtml
index 736e258e7..6bda7213f 100644
--- a/ProjectLighthouse.Servers.Website/Pages/TwoFactor/SetupTwoFactorPage.cshtml
+++ b/ProjectLighthouse.Servers.Website/Pages/TwoFactor/SetupTwoFactorPage.cshtml
@@ -18,6 +18,9 @@