Я пытался найти другой способ обработки i18n в FuelPHP (см. здесь) .
Я решил импортировать компонент перевода Symfony2 (с помощью композитора) в 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 записей) для всего моего приложения, каждый запрос выполняется очень медленно.
Итак, вопрос в том, есть ли способ кэшировать переводы при использовании компонента перевода таким же образом, как и весь Symfony2 Framework кеширует его изначально?
Класс переводчика из FrameworkBundle имеет конструктор, который принимает параметры в котором вы можете определить cache_dir. В любом случае я могу добиться этого с помощью компонента перевода?
Спасибо за любую помощь в этом вопросе.
loadCatalogue
под свои нужды? - person Touki   schedule 04.09.2013Config\ConfigCache
- person Touki   schedule 05.09.2013