Я пытался выяснить другой способ обработки i18n в FuelPHP (см. here).Кэширование каталогов из Symfony2 Перевод компонент
Я решил импортировать Symfony2 Translation component (используя композитор) в Fuel в качестве поставщика и управлять i18n с файлами xliff.
Вот мой (упрощенный) код:
use \Symfony\Component\Translation\Translator;
use \Symfony\Component\Translation\MessageSelector;
use \Symfony\Component\Translation\Loader\XliffFileLoader;
...
class I18N
{
private static $translator = NULL;
....
public static function get($key)
{
# Load and configure the translator
self::$translator = new Translator('en_GB', new MessageSelector());
self::$translator->addLoader('xliff', new XliffFileLoader());
self::$translator->addResource('xliff', 'path/to/xliff/file', 'en');
# Get the translation
$translation = self::$translator->trans($key, $params);
# Return the translation
return $translation;
}
}
Так я сначала подумал, что работал большой, так как я тестировал его на очень маленький файл XLIFF, но теперь, когда я сгенерировал полный каталог XLIFF (около 1400 записей) для всего моего приложения, каждый запрос выполняется очень медленно.
Итак, вопрос в том, есть ли способ кэшировать переводы при использовании Translation component так же, как вся Symfony2 Framework кэширует его изначально?
Translator Class from the FrameworkBundle имеет конструктор, который принимает параметры, в которых вы можете определить cache_dir. Во всяком случае, я могу достичь этого, используя Translation component?
Спасибо за любую помощь в этом вопросе.
Есть ли что-то неправильное с использованием класса Translator из FrameworkBundle? Я имею в виду, копируя метод loadCatalogue в соответствии с вашими потребностями? – Touki
Класс Translator из FrameworkBundle предназначен для использования в рамках Symfony Framework. Конструктор ожидает контейнерный интерфейс. Но да, я думаю, я попытаюсь сгенерировать свой собственный файл кеша php, чтобы компонент Translator мог использовать его, когда файл существует. – SebScoFr
Я имею в виду, вы должны создать своего собственного переводчика. Вам не нужно копировать часть конструктора, просто приспосабливайте его к вашим потребностям. Вы также можете использовать компонент 'Config \ ConfigCache' – Touki