1

저는 젠드 MVC 프레임 워크를 기반으로 다국어가되는 PHP 웹 애플리케이션을 업데이트하고 있습니다. 다른 클래스/레이어로 변환 객체를 전달하는 최선의 방법을 찾아 내려고하고 있습니다.번역 오브젝트를 전달하기위한 디자인 패턴? PHP

대부분의 번역은보기 수준에서 수행되지만 사용자 지정 라이브러리에서 상태 메시지를 반환해야하는 경우가 있습니다.

라이브러리의 속성을 만들고 번역기를 설정할 수 있지만 번역기 개체를 기존 응용 프로그램에 통합하는 더 좋은 방법이 있는지 궁금합니다.

답변

0

번역기를 bootstrap.php에서 인스턴스화 할 수 있으므로 모든 클래스가 전역으로 사용할 수 있습니다. 그렇게하면 어디서나 사용할 필요가 있기 때문에 그렇게 할 수 있습니다. 우아하지는 않지만 클래스가 예외를 throw하거나 오류 메시지를 반환해야하는 경우 코드를 추가하지 않아도됩니다.

+0

그래 그 하나 개의 옵션입니다 참조 더 높은 품질 (및 검증) 코드를 만들 수 있습니다 그 방법 I 당신이 말한 것처럼 우아하지만 실용적이지는 않습니다. 라이브러리에서 컨트롤러가 알아야하는 상태 코드를 다시 보내도록 언어 별 코드를 한 단계 위로 밀어 넣으려고하면이 작업을 수행하지 않아도됩니다. 답장을 보내 주셔서 감사합니다. – AndreLiem

0

많은 컨트롤러를 설치하지 않은 경우 기본 컨트롤러를 확장하고 거기에서 변환기를 인스턴스화 할 수 있습니까? 그러면 시스템 전체에서 사용할 수 있어야합니다. 이 같은

뭔가 연장 :

<?php 
class BaseController extends Zend_Controller_Action 
{ 
    public function init() 
    { 
    //setup translation object 
    } 
} 
?> 
2

는 사용자가 Memento에 lanaguage 잡고 당신이 번역은 언어를 식별 사용 할 필요가있을 때, 프로그램 로직을 통해 그것을 전달합니다.

2

Zend_Translate를 사용하는 경우 가장 좋은 방법은 register를 사용하는 것입니다.

Zend_Registry::set('Zend_Translate', $translate); 

모든 클래스 (Zend_Form, Zend_Validate, ...)를 자동으로 찾을 수있는이 방법

+0

올바르게 기억하면 번역자는 이미보기 스크립트, 유효성 검사기 및 양식에서 사용하기 위해 해당 키에 등록되어 있습니다. –