diff --git a/resources/lang/de_DE/additional.po b/resources/lang/de_DE/additional.po new file mode 100644 index 00000000..00eb90b3 --- /dev/null +++ b/resources/lang/de_DE/additional.po @@ -0,0 +1,36 @@ +msgid "" +msgstr "" +"Project-Id-Version: Engelsystem 2.0\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: \n" +"Language: de_DE\n" + +msgid "auth.not-found" +msgstr "" +"Es wurde kein User gefunden oder das Passwort ist falsch. Probiere es bitte noch einmal. Wenn das Problem " +"weiterhin besteht, melde dich im Himmel." + +msgid "validation.password.required" +msgstr "Bitte gib ein Passwort an." + +msgid "validation.login.required" +msgstr "Bitte gib einen Loginnamen an." + +msgid "validation.email.required" +msgstr "Bitte gib eine E-Mail-Adresse an." + +msgid "validation.email.email" +msgstr "Die E-Mail-Adresse ist nicht gültig." + +msgid "validation.password.min" +msgstr "Dein angegebenes Passwort ist zu kurz." + +msgid "validation.password.confirmed" +msgstr "Deine Passwörter stimmen nicht überein." + +msgid "validation.password_confirmation.required" +msgstr "Du musst dein Passwort bestätigen." diff --git a/resources/lang/de_DE/default.po b/resources/lang/de_DE/default.po index 8dba9b4b..1370fca2 100644 --- a/resources/lang/de_DE/default.po +++ b/resources/lang/de_DE/default.po @@ -10,8 +10,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.11\n" -"X-Poedit-KeywordsList: __;_e;translate;translatePlural\n" -"X-Poedit-Basepath: ../../../..\n" +"X-Poedit-KeywordsList: __;_e:1,2;translate;translatePlural\n" +"X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: resources/views\n" @@ -1535,12 +1535,6 @@ msgstr "Pflichtfeld!" #~ msgid "auth.no-password" #~ msgstr "Gib bitte ein Passwort ein." -#: includes/pages/guest_login.php:418 -msgid "auth.not-found" -msgstr "" -"Es wurde kein User gefunden oder das Passwort ist falsch. Probiere es bitte noch einmal. Wenn das Problem " -"weiterhin besteht, melde dich im Himmel." - #~ msgid "auth.no-nickname" #~ msgstr "Gib bitte einen Nick an." @@ -2767,26 +2761,21 @@ msgstr "" "Diese Seite existiert nicht oder Du hast keinen Zugriff. Melde Dich an um " "Zugriff zu erhalten!" -msgid "validation.password.required" -msgstr "Bitte gib ein Passwort an." - -msgid "validation.login.required" -msgstr "Bitte gib einen Loginnamen an." - msgid "form.submit" msgstr "Absenden" -msgid "validation.email.required" -msgstr "Bitte gib eine E-Mail-Adresse an." - -msgid "validation.email.email" -msgstr "Die E-Mail-Adresse ist nicht gültig." - -msgid "validation.password.min" -msgstr "Dein angegebenes Passwort ist zu kurz." - -msgid "validation.password.confirmed" -msgstr "Deine Passwörter stimmen nicht überein." - -msgid "validation.password_confirmation.required" -msgstr "Du musst dein Passwort bestätigen." +msgid "credits.credit" +msgstr "" +"Das ursprüngliche Engelsystem wurde entwickelt von " +"[cookie](https://github.com/cookieBerlin/engelsystem)" +". Danach wurde es von " +"[msquare](https://notrademark.de)" +" (Maintainer) und " +"[MyIgel](https://myigel.name)" +" völlig überarbeitet und verbessert." + +msgid "credits.contributors" +msgstr "" +"Eine vollständige Liste der Mitwirkenden findest Du " +"[auf GitHub](https://github.com/engelsystem/engelsystem/graphs/contributors)" +"." diff --git a/resources/lang/en_US/additional.po b/resources/lang/en_US/additional.po new file mode 100644 index 00000000..9943b0ab --- /dev/null +++ b/resources/lang/en_US/additional.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: Engelsystem 2.0\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: \n" +"Language: en_US\n" + +msgid "auth.not-found" +msgstr "No user was found or password is wrong. Please try again. If you are still having problems, ask Heaven." + +msgid "validation.password.required" +msgstr "The password is required." + +msgid "validation.login.required" +msgstr "The login name is required." + +msgid "validation.email.required" +msgstr "The email address is required." + +msgid "validation.email.email" +msgstr "This email address is not valid." + +msgid "validation.password.min" +msgstr "Your password is too short." + +msgid "validation.password.confirmed" +msgstr "Your passwords are not equal." + +msgid "validation.password_confirmation.required" +msgstr "You have to confirm your password." diff --git a/resources/lang/en_US/default.po b/resources/lang/en_US/default.po index a2d56fd1..0119865b 100644 --- a/resources/lang/en_US/default.po +++ b/resources/lang/en_US/default.po @@ -22,29 +22,21 @@ msgstr "" #~ msgid "auth.no-password" #~ msgstr "Please enter a password." -msgid "auth.not-found" -msgstr "No user was found or password is wrong. Please try again. If you are still having problems, ask Heaven." - -msgid "validation.password.required" -msgstr "The password is required." - -msgid "validation.login.required" -msgstr "The login name is required." - msgid "form.submit" msgstr "Submit" -msgid "validation.email.required" -msgstr "The email address is required." - -msgid "validation.email.email" -msgstr "This email address is not valid." - -msgid "validation.password.min" -msgstr "Your password is too short." - -msgid "validation.password.confirmed" -msgstr "Your passwords are not equal." - -msgid "validation.password_confirmation.required" -msgstr "You have to confirm your password." +msgid "credits.credit" +msgstr "" +"The original engelsystem was written by " +"[cookie](https://github.com/cookieBerlin/engelsystem)" +". It was then completely rewritten and enhanced by " +"[msquare](https://notrademark.de)" +" (maintainer) and " +"[MyIgel](https://myigel.name)" +"." + +msgid "credits.contributors" +msgstr "" +"Please have a look at the " +"[contributors list on GitHub](https://github.com/engelsystem/engelsystem/graphs/contributors)" +" for a complete list." diff --git a/resources/views/pages/credits.twig b/resources/views/pages/credits.twig index 8bd1f694..7e0d3890 100644 --- a/resources/views/pages/credits.twig +++ b/resources/views/pages/credits.twig @@ -17,15 +17,10 @@
{{ __('Version: _%s_', [version])|markdown }}
- {{ __('The original engelsystem was written by -[cookie](https://github.com/cookieBerlin/engelsystem). -It was then completely rewritten and enhanced by [msquare](https://notrademark.de) (maintainer) and -[MyIgel](https://myigel.name).')|markdown }} + {{ __('credits.credit')|markdown }}
- {{ __('Please have a look at the -[contributors list on GitHub](https://github.com/engelsystem/engelsystem/graphs/contributors) -for a complete list.')|markdown }} + {{ __('credits.contributors')|markdown }}
diff --git a/src/Helpers/Translation/TranslationServiceProvider.php b/src/Helpers/Translation/TranslationServiceProvider.php index 6df9b0fe..5534a1c3 100644 --- a/src/Helpers/Translation/TranslationServiceProvider.php +++ b/src/Helpers/Translation/TranslationServiceProvider.php @@ -70,17 +70,20 @@ class TranslationServiceProvider extends ServiceProvider public function getTranslator(string $locale): GettextTranslator { if (!isset($this->translators[$locale])) { - $file = $this->getFile($locale); + $names = ['default', 'additional']; /** @var GettextTranslator $translator */ $translator = $this->app->make(GettextTranslator::class); /** @var Translations $translations */ $translations = $this->app->make(Translations::class); - if (Str::endsWith($file, '.mo')) { - $translations->addFromMoFile($file); - } else { - $translations->addFromPoFile($file); + foreach ($names as $name) { + $file = $this->getFile($locale, $name); + if (Str::endsWith($file, '.mo')) { + $translations->addFromMoFile($file); + } else { + $translations->addFromPoFile($file); + } } $translator->loadTranslations($translations); @@ -93,11 +96,12 @@ class TranslationServiceProvider extends ServiceProvider /** * @param string $locale + * @param string $name * @return string */ - protected function getFile(string $locale): string + protected function getFile(string $locale, string $name = 'default'): string { - $filepath = $file = $this->app->get('path.lang') . '/' . $locale . '/default'; + $filepath = $file = $this->app->get('path.lang') . '/' . $locale . '/' . $name; $file = $filepath . '.mo'; if (!file_exists($file)) { diff --git a/tests/Unit/Helpers/Translation/Assets/ba_RR/additional.po b/tests/Unit/Helpers/Translation/Assets/ba_RR/additional.po new file mode 100644 index 00000000..72383947 --- /dev/null +++ b/tests/Unit/Helpers/Translation/Assets/ba_RR/additional.po @@ -0,0 +1,3 @@ +# Testing content +msgid "validation.foo.bar" +msgstr "B Arr required!" diff --git a/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.mo b/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.mo new file mode 100644 index 00000000..73faf3ba Binary files /dev/null and b/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.mo differ diff --git a/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.po b/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.po new file mode 100644 index 00000000..8eea7df9 --- /dev/null +++ b/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.po @@ -0,0 +1,3 @@ +# Testing content +msgid "validation.foo.bar" +msgstr "Foo Bar required!" diff --git a/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php b/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php index e55fdf02..8c9e21b8 100644 --- a/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php +++ b/tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php @@ -7,6 +7,7 @@ use Engelsystem\Helpers\Translation\TranslationServiceProvider; use Engelsystem\Helpers\Translation\Translator; use Engelsystem\Test\Unit\ServiceProviderTest; use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\MockObject\Rule\InvokedCount; use Symfony\Component\HttpFoundation\Session\Session; class TranslationServiceProviderTest extends ServiceProviderTest @@ -82,11 +83,12 @@ class TranslationServiceProviderTest extends ServiceProviderTest $app = $this->getApp(['get']); $serviceProvider = new TranslationServiceProvider($app); - $this->setExpects($app, 'get', ['path.lang'], __DIR__ . '/Assets'); + $this->setExpects($app, 'get', ['path.lang'], __DIR__ . '/Assets', new InvokedCount(2)); // Get translator $translator = $serviceProvider->getTranslator('fo_OO'); $this->assertEquals('Foo Bar!', $translator->gettext('foo.bar')); + $this->assertEquals('Foo Bar required!', $translator->gettext('validation.foo.bar')); // Retry from cache $serviceProvider->getTranslator('fo_OO'); @@ -99,12 +101,13 @@ class TranslationServiceProviderTest extends ServiceProviderTest public function testGetTranslatorFromPo(): void { $app = $this->getApp(['get']); - $this->setExpects($app, 'get', ['path.lang'], __DIR__ . '/Assets'); + $this->setExpects($app, 'get', ['path.lang'], __DIR__ . '/Assets', new InvokedCount(2)); $serviceProvider = new TranslationServiceProvider($app); // Get translator using a .po file $translator = $serviceProvider->getTranslator('ba_RR'); $this->assertEquals('B Arr!', $translator->gettext('foo.bar')); + $this->assertEquals('B Arr required!', $translator->gettext('validation.foo.bar')); } }