같은 문제가 발생했습니다. 내가 픽업 것 'FORM_HEADER_'코드의 난 (생성) 가지고 식별자하지 않은 poedit와 동기화 할 때, 예를 들면
난 PHP
//Gives FORM_HEADER_ADD or FORM_HEADER_EDIT
echo $this->translate('FORM_HEADER_' . strtoupper($this->data));
에
있다.
그래서 내가 수행하여이 UPDATE PHP
에
echo ($this->data === 'add') ? $this->translate('FORM_HEADER_ADD') : $this->translate('FORM_HEADER_EDIT');
다음과 같은 것을 내주는 Poedit 전체 식별자는 내가 해결 문제를 해결했다!
계속이 문제를 조사했습니다. 그리고 나는 근원지에서 수입을 포기했다. 이것은 내가 더 나은 해결책을 찾을 때까지 계속하는 것입니다.
- 가능한 한 많은 정적 식별자를 사용하고 사용하십시오.
소스와 동기화 미번역 (동적) 식별자
protected function _initMyTranslate(){
$date = new Zend_Date();
$fileName = sprintf('/../logs/translation_%1$s.log', $date->toString('dd-MM'));
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . $fileName);
$log = new Zend_Log($writer);
// get the translate resource from the ini file and fire it up
$resource = $this->getPluginResource('translate');
$translate = $resource->getTranslate();
// add the log to the translate
$translate->setOptions(
array(
'log' => $log,
'logUntranslated' => true
)
);
// return the translate to get it in the registry and so on
return $translate;
}
사용 Poedit를 기록 가능 및 발견 된 문자열을 번역.
- 테스트/디버깅 단계에서 번역되지 않은 문자열에 대한 로그를 확인하십시오.
번역되지 않은 문자열을 .po 파일에 추가하십시오.
msgid "IDENTIFIER"
msgstr "TRANSLATION STRING"
열기 PO 파일 및 모 파일 (원본과 동기화 또는 전부가 손실하지 마십시오) 작성에 저장합니다.
2.
지금 내 수동 식별자에 대한 별도의 파일을 사용하는 텍스트 편집기 (gedit를/메모장)를 사용하여 UPDATE. 지금은 두 개의 파일이 있습니다 poedit에 의해 생성
- 자동 < 언어라는를 >와 .po
- 수동으로 편집 해 파일이라고 < 언어 > _manual.po
난 구성 내 application.ini에서 번역 언어 디렉토리의 모든 파일을 검색합니다.
resources.translate.adapter = gettext
resources.translate.content = APPLICATION_PATH "/../library/languages/"
resources.translate.locale = auto ;use en to force english or nl for dutch..etc
resources.translate.scan = directory
resources.translate.options.disableNotices = false
poedit에서 다른 언어로 파일 -> POT 파일의 새 카탈로그를 작성하고 수동으로 추가 한 문자열의 번역을 시작하십시오.
내가 문제를 이해하지 못했습니다 :
크레딧에. 더 명확하게 설명해 주시겠습니까? – farzad