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
main
Luca 5 years ago
parent d10fe23366
commit 6cde313e47

@ -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."

@ -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."

@ -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."

@ -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."

@ -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)) {

@ -0,0 +1,3 @@
# Testing content
msgid "validation.foo.bar"
msgstr "B Arr required!"

@ -0,0 +1,3 @@
# Testing content
msgid "validation.foo.bar"
msgstr "Foo Bar required!"

@ -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'));
}
}

Loading…
Cancel
Save