summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca <Luca@hackerspace-bamberg.de>2019-10-25 09:33:09 +0200
committerLuca <Luca@hackerspace-bamberg.de>2019-10-28 14:25:31 +0100
commit6cde313e47cd08216ff15d733c8de894f2657a8b (patch)
tree21158b5c4ba3b84307f5c946d5dcffa20cd828f1
parentd10fe2336671905c8529095c896031a56dbe1b29 (diff)
Move translations whose message ids do not appear as literals in the sources into a separate file
Test whether additional.{m,p}o files are loaded correctly
-rw-r--r--resources/lang/de_DE/additional.po36
-rw-r--r--resources/lang/de_DE/default.po29
-rw-r--r--resources/lang/en_US/additional.po34
-rw-r--r--resources/lang/en_US/default.po24
-rw-r--r--src/Helpers/Translation/TranslationServiceProvider.php18
-rw-r--r--tests/Unit/Helpers/Translation/Assets/ba_RR/additional.po3
-rw-r--r--tests/Unit/Helpers/Translation/Assets/fo_OO/additional.mobin0 -> 93 bytes
-rw-r--r--tests/Unit/Helpers/Translation/Assets/fo_OO/additional.po3
-rw-r--r--tests/Unit/Helpers/Translation/TranslationServiceProviderTest.php7
9 files changed, 96 insertions, 58 deletions
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 b3184f41..105d7330 100644
--- a/resources/lang/de_DE/default.po
+++ b/resources/lang/de_DE/default.po
@@ -1536,10 +1536,10 @@ msgstr "Pflichtfeld!"
#~ 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.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 +2767,5 @@ 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."
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..f7566f1d 100644
--- a/resources/lang/en_US/default.po
+++ b/resources/lang/en_US/default.po
@@ -22,29 +22,5 @@ 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."
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
--- /dev/null
+++ b/tests/Unit/Helpers/Translation/Assets/fo_OO/additional.mo
Binary files 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'));
}
}