2013-01-11 4 views
0

저는 ZF2로 웹 애플리케이션을 개발 중입니다. 다국어 웹 사이트입니다. 번역을 위해 ZF2 Translator를 사용하고 싶습니다. 왜냐하면 관리자는 언어 변수를 수정할 수 있기 때문입니다. 그래서, 나는 언어 폴더 파일을 사용할 계획이다. 관리자가 언어 변수를 수정하는 동안 언어 파일을 업데이트합니다. 누구든지이 구현을위한 아이디어를 제안 할 수 있습니까? 감사.젠드 프레임 워크 2 - 번역 프로세스

답변

0

SkeletonApp에는 번역 지원 기능이 내장되어 있습니다. 그러나 그것을 사용하는 방법에 대한 자세한 내용은 매뉴얼에서 찾을 수 있습니다 ->http://zf2.readthedocs.org/en/latest/modules/zend.i18n.translating.html

개인적라는 폴더/언어 귀하의 의견에

을 모두 내 언어 파일을 유지 당신은 또한 단순히 호출 할 수

$this->translate('text_you_want_to_translate'); 
1

사용자 입력에 따라 번역하면 약간 지저분해질 수 있습니다. 현재 지원되는 형식은 모든 파일 형식 (배열이있는 php 파일, gettext .po 파일 또는 Tmx/Xliff 파일)이므로 쉽게 수행 할 수 없습니다. 가장 쉬운 액세스를 위해 번역을 데이터베이스에 저장할 가능성이 높습니다.

따라서 로더를 작성하여 데이터베이스에서 변환을로드해야합니다. 대안은 당신이 PHP 배열에 번역을 작성하고 파일로 내보낼 것입니다,하지만 난 권하고 싶지 않아요. 데이터베이스 로더의 경우 RemoteLoaderInterface을 구현해야합니다. 매우 간단한 용어로 :

use My\DbTable; 
use Zend\I18n\Translator\Loader\RemoteLoaderInterface; 
Zend\I18n\Translator\TextDoamin; 

class DbLoader implements RemoteLoaderInterface 
{ 
    protected $table; 

    public function __construct(DbTable $table) 
    { 
     $this->table = $table; 
    } 

    public function load($locale, $textDomain) 
    { 
     $data = $this->table->loadFromLocale($locale); 

     // process $data into $messages 
     // $messages is array(key=>value) with key translation key 

     $domain = new TextDomain($messages); 
     return $domain; 
    } 
} 

db 테이블은 지정한 로케일의 메시지를로드합니다. 텍스트 도메인을 사용하는 경우에도 텍스트 도메인을 전달하십시오. 그런 다음이 로더를 사용하여 메시지를로드하는 것과 같이 Translator을 구성해야합니다. 그 밖의 모든 것은 괜찮을 것입니다. 보기에서 다음과 같이 번역을 만들 수 있습니다.

<?php echo $this->translate('my original text'); ?>