첫째, gettext
좋은 방법입니다. 처음에 쉽게 들리지 않으면 무시하지 마십시오. 그러나 알아야 할 다른 옵션도 있습니다. 설명하기 전에 먼저 제안 사항을 살펴 보겠습니다.
당신에 array
이 일을 웨이, 당신은 꽤 많은 간단한 해결책을 가지고 있습니다. 좋은 점은 번역을 데이터 스토리지에 저장 한 다음 PHP 스크립트에 배열로로드하는 것입니다. 그러나 배열을 PHP 파일에 정적으로 저장하려면 편집하려면 a) PHP 프로그래머 또는 PHP 구문에 익숙한 숙련 된 사용자가 파일을 편집하기 만하면됩니다. b) 4-5 개의 다른 언어 파일간에 동기화 상당히 성 가시고 오류가 발생할 수 있습니다.
여기서 고려해야 할 것은 나중에 언어 파일에 새 요소를 추가하는 방법은 무엇입니까? 번역가에게 맡기거나 PHP 프로그래머가 있어야합니까?
당신 variable
의 방법은 실용적이지 않습니다. 왜? 나는 적어도 당신의 응용 프로그램에 몇 가지 기능이 있다고 가정합니까? 그런 다음 함수를 호출 할 때 이러한 변수를 모두 전달해야 global
합니다. 이런 식으로 10 개 이상의 변수가 있다고 생각하면 이렇게하지 않는 것이 좋습니다. 이름 충돌도있을 수 있습니다. 같은 이름으로 다른 변수의 값을 무시할 수도 있지만 밑줄처럼 간단한 접두사를 추가하면이 문제를 해결할 수 있습니다 $_welcome
. 어쨌든, 내가 당신이라면 나는 그것에 대해 생각조차하지 않을 것입니다. 하지마
이를 수행하는 좋은 방법 중 하나 는 접두사로 상수 를 정의하는 것입니다 . 그래서, 예를 들어 en.lang.php
당신이 뭔가를해야합니다 define( 'LABEL_WELCOME', 'Welcome' );
그리고 당신의 no.lang.php
, 당신은 것입니다 define ( 'LABEL_WELCOME', 'Velkommen' );
. 변수 대신 상수를 사용하는 좋은 점은 스크립트에서 항상 사용할 수 있다는 것입니다. 따라서 주입하거나 전역 화 할 필요가 없습니다. 배열과 변수에 비해 PHP가 처리하는 방식으로 인해 속도가 빠릅니다. 메모리에서 공간을 덜 차지합니다. 단점은 번역기에 전달할 수 없기 때문에 다시 PHP 개발자가 필요하다는 것입니다. 또한 파일 간 동기화는 약간의 고통이 될 수 있습니다.
다른 옵션은 번역을 검색하기 위한 함수 또는 클래스 / 방법 을 갖는 것입니다. 효율성이 떨어질 것입니다. 그러나 전혀 마이크로 최적화가 필요하다고 생각하지는 않지만 추가 이점은 번역을 검색하는 동안 사용자 정의 논리를 적용 할 수 있다는 것입니다. 예를 들어 언젠가 사랑하는 프로젝트 관리자가 모든 텍스트를 대문자로 숨길 수 있는지 묻는다고 상상해보십시오. 당신은 그것을 거부 할 수 없기 때문에, 그 사이에 기능이 있으면 모든 번역에 패턴을 적용 / 변경해야 할 때 많은 도움이 될 수 있습니다.
그것을 마무리하려면 :
번역가가 어떻게 그것을 사용할 수 있는지 생각하고 작동하는 KISS 솔루션을 생각해보십시오.
다른 언어 간 동기화를 유지하는 방법에 대해 생각해보십시오.
동일한 번역이 필요한지 생각해보십시오. 모바일 앱에 대해 말하십시오. 크로스 플랫폼 솔루션으로 시간을 절약 할 수 있습니다. JSON 및 일반 데이터베이스를 닫지 마십시오.
번역을 검색 할 때 논리를 어떻게 적용 / 변경할 수 있는지 생각해보십시오.
성능을 잊었습니다. 상수 대 변수 대 함수 호출 과 같은 미세 최적화를 수행하지 못하는 횟수는 99.9 %입니다 . 나는 개발자 / 직원으로서의 시간이 프로세서 시간보다 비싸다고 가정합니다.
업데이트 # 1
나는 선한 질문에 대한 답변을 게시했습니다. 왜 아무도 여기에 아무 말도하지 않습니까? 이러한 경우에 대한 경고가 필요합니다.
업데이트 # 2
오른쪽에는 1 년 전의 질문이 있습니다. 그러나 그것은 2 년 전에 요청되었습니다! 여기에 모든 것이 오도됩니다!