2012-12-04 67 views
0

我爲SF2使用gettext翻譯,並將我的翻譯文件安排在與普通包不同的文件夾結構中(我爲某些特定需求創建了自己的迷你插件系統)。如何加載和緩存翻譯?

在任何情況下,這是我如何加載我的翻譯文件:

$finder = new Finder(); 
$finder->files()->filter(function (\SplFileInfo $file) 
{ 
    return 2 === substr_count($file->getBasename(), '.') && preg_match('/\.\w+$/', $file->getBasename()); 
})->in($dirs); 
foreach ($finder as $file) { 
    // filename is domain.locale.format 
    list($domain, $locale, $format) = explode('.', $file->getBasename(), 3); 

    // we have to add resource right away or it will be too late 
    $translator->addResource($format, (string)$file, $locale, $domain); 
} 

它運作良好,唯一的問題是,它不會緩存,這是不是很有效。我想知道我應該做什麼來緩存這些翻譯?

+0

翻譯默認緩存,不知道你爲什麼會創建自己的系統。無論如何,緩存翻譯只是app/cache目錄中的一個文件,您可以將結果存儲在那裏。 – ChocoDeveloper

+0

原因是我沒有使用Bundles,我創建了自己的插件系統,所以我基本上需要編寫自己的代碼來遍歷每個插件來掃描並獲取翻譯文件(上面的代碼),並且到目前爲止,似乎如果我使用該代碼,它確實有效,但它不會緩存我的翻譯。 – mr1031011

回答

0

我的問題是,我忘了申報譯者在配置文件中,因此翻譯通不起作用

framework: 
    translator: { fallback: %locale% }