i18n: Make cross-file translation references work

This commit is contained in:
Toby Zerner 2015-10-24 13:16:26 +10:30
parent 59fa623f11
commit 0a65d2bb0d
2 changed files with 16 additions and 8 deletions

View File

@ -13,8 +13,8 @@ namespace Flarum\Locale;
use Flarum\Event\ConfigureLocales;
use Flarum\Foundation\AbstractServiceProvider;
use Illuminate\Contracts\Events\Dispatcher;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Translator;
class LocaleServiceProvider extends AbstractServiceProvider
{

View File

@ -10,25 +10,33 @@
namespace Flarum\Locale;
use Symfony\Component\Translation\Loader\YamlFileLoader as BaseYamlFileLoader;
use Symfony\Component\Translation\MessageCatalogueInterface;
use Symfony\Component\Translation\Translator as BaseTranslator;
class YamlFileLoader extends BaseYamlFileLoader
class Translator extends BaseTranslator
{
/**
* {@inheritdoc}
*/
public function load($resource, $locale, $domain = 'messages')
public function getCatalogue($locale = null)
{
$messages = parent::load($resource, $locale, $domain);
$catalogue = parent::getCatalogue($locale);
foreach ($messages->all($domain) as $id => $translation) {
$messages->set($id, $this->getTranslation($messages, $id, $domain));
foreach ($catalogue->all() as $domain => $messages) {
foreach ($messages as $id => $translation) {
$catalogue->set($id, $this->getTranslation($catalogue, $id, $domain), $domain);
}
}
return $messages;
return $catalogue;
}
/**
* @param MessageCatalogueInterface $messages
* @param string $id
* @param string $domain
* @return string
*/
private function getTranslation(MessageCatalogueInterface $messages, $id, $domain)
{
$translation = $messages->get($id, $domain);