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
This commit is contained in:
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."
|
#~ msgstr "Gib bitte ein Passwort ein."
|
||||||
|
|
||||||
#: includes/pages/guest_login.php:418
|
#: includes/pages/guest_login.php:418
|
||||||
msgid "auth.not-found"
|
#~ msgid "auth.not-found"
|
||||||
msgstr ""
|
#~ msgstr ""
|
||||||
"Es wurde kein User gefunden oder das Passwort ist falsch. Probiere es bitte noch einmal. Wenn das Problem "
|
#~ "Es wurde kein User gefunden oder das Passwort ist falsch. Probiere es bitte noch einmal. Wenn das Problem "
|
||||||
"weiterhin besteht, melde dich im Himmel."
|
#~ "weiterhin besteht, melde dich im Himmel."
|
||||||
|
|
||||||
#~ msgid "auth.no-nickname"
|
#~ msgid "auth.no-nickname"
|
||||||
#~ msgstr "Gib bitte einen Nick an."
|
#~ msgstr "Gib bitte einen Nick an."
|
||||||
|
@ -2767,26 +2767,5 @@ msgstr ""
|
||||||
"Diese Seite existiert nicht oder Du hast keinen Zugriff. Melde Dich an um "
|
"Diese Seite existiert nicht oder Du hast keinen Zugriff. Melde Dich an um "
|
||||||
"Zugriff zu erhalten!"
|
"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"
|
msgid "form.submit"
|
||||||
msgstr "Absenden"
|
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"
|
#~ msgid "auth.no-password"
|
||||||
#~ msgstr "Please enter a 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"
|
msgid "form.submit"
|
||||||
msgstr "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,18 +70,21 @@ class TranslationServiceProvider extends ServiceProvider
|
||||||
public function getTranslator(string $locale): GettextTranslator
|
public function getTranslator(string $locale): GettextTranslator
|
||||||
{
|
{
|
||||||
if (!isset($this->translators[$locale])) {
|
if (!isset($this->translators[$locale])) {
|
||||||
$file = $this->getFile($locale);
|
$names = ['default', 'additional'];
|
||||||
|
|
||||||
/** @var GettextTranslator $translator */
|
/** @var GettextTranslator $translator */
|
||||||
$translator = $this->app->make(GettextTranslator::class);
|
$translator = $this->app->make(GettextTranslator::class);
|
||||||
|
|
||||||
/** @var Translations $translations */
|
/** @var Translations $translations */
|
||||||
$translations = $this->app->make(Translations::class);
|
$translations = $this->app->make(Translations::class);
|
||||||
|
foreach ($names as $name) {
|
||||||
|
$file = $this->getFile($locale, $name);
|
||||||
if (Str::endsWith($file, '.mo')) {
|
if (Str::endsWith($file, '.mo')) {
|
||||||
$translations->addFromMoFile($file);
|
$translations->addFromMoFile($file);
|
||||||
} else {
|
} else {
|
||||||
$translations->addFromPoFile($file);
|
$translations->addFromPoFile($file);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$translator->loadTranslations($translations);
|
$translator->loadTranslations($translations);
|
||||||
|
|
||||||
|
@ -93,11 +96,12 @@ class TranslationServiceProvider extends ServiceProvider
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $locale
|
* @param string $locale
|
||||||
|
* @param string $name
|
||||||
* @return string
|
* @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';
|
$file = $filepath . '.mo';
|
||||||
|
|
||||||
if (!file_exists($file)) {
|
if (!file_exists($file)) {
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Testing content
|
||||||
|
msgid "validation.foo.bar"
|
||||||
|
msgstr "B Arr required!"
|
Binary file not shown.
|
@ -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\Helpers\Translation\Translator;
|
||||||
use Engelsystem\Test\Unit\ServiceProviderTest;
|
use Engelsystem\Test\Unit\ServiceProviderTest;
|
||||||
use PHPUnit\Framework\MockObject\MockObject;
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
|
use PHPUnit\Framework\MockObject\Rule\InvokedCount;
|
||||||
use Symfony\Component\HttpFoundation\Session\Session;
|
use Symfony\Component\HttpFoundation\Session\Session;
|
||||||
|
|
||||||
class TranslationServiceProviderTest extends ServiceProviderTest
|
class TranslationServiceProviderTest extends ServiceProviderTest
|
||||||
|
@ -82,11 +83,12 @@ class TranslationServiceProviderTest extends ServiceProviderTest
|
||||||
$app = $this->getApp(['get']);
|
$app = $this->getApp(['get']);
|
||||||
$serviceProvider = new TranslationServiceProvider($app);
|
$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
|
// Get translator
|
||||||
$translator = $serviceProvider->getTranslator('fo_OO');
|
$translator = $serviceProvider->getTranslator('fo_OO');
|
||||||
$this->assertEquals('Foo Bar!', $translator->gettext('foo.bar'));
|
$this->assertEquals('Foo Bar!', $translator->gettext('foo.bar'));
|
||||||
|
$this->assertEquals('Foo Bar required!', $translator->gettext('validation.foo.bar'));
|
||||||
|
|
||||||
// Retry from cache
|
// Retry from cache
|
||||||
$serviceProvider->getTranslator('fo_OO');
|
$serviceProvider->getTranslator('fo_OO');
|
||||||
|
@ -99,12 +101,13 @@ class TranslationServiceProviderTest extends ServiceProviderTest
|
||||||
public function testGetTranslatorFromPo(): void
|
public function testGetTranslatorFromPo(): void
|
||||||
{
|
{
|
||||||
$app = $this->getApp(['get']);
|
$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);
|
$serviceProvider = new TranslationServiceProvider($app);
|
||||||
|
|
||||||
// Get translator using a .po file
|
// Get translator using a .po file
|
||||||
$translator = $serviceProvider->getTranslator('ba_RR');
|
$translator = $serviceProvider->getTranslator('ba_RR');
|
||||||
$this->assertEquals('B Arr!', $translator->gettext('foo.bar'));
|
$this->assertEquals('B Arr!', $translator->gettext('foo.bar'));
|
||||||
|
$this->assertEquals('B Arr required!', $translator->gettext('validation.foo.bar'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue