2011-10-01 4 views
5

원래 스페인 사람들만을 대상으로 작성된 오래된 프로젝트를 구했고 지금은 국제화해야합니다. PHP에서 작성기존 웹 프로젝트에서 번역을 구현하는 방법은 무엇입니까?

  • 문자열 : 예를 들면 다음과 같습니다 :

    이 프로젝트는 텍스트 문자열 3 종류가 텍스트를 포함하는 데이터베이스 필드 : "안녕하세요 세계"데이터베이스 필드에서

  • 짧은 문자열 에코 (예 : 국가 이름 목록).
  • HTML 포함 된 문자열 (정적 파일)는 예를 들어 정적 HTML 파일이 포함 파일 : <html>...<body>...<p>Hello world</p>을 ...
  • HTML 포함 된 문자열 (데이터베이스) : 위와 동일하지만, HTML 파일이에 삽입 텍스트 필드

실제로는 문자열이 거의없고 매우 현지화되어 있기 때문에 처음에는 문제가되지 않습니다. 두 번째 경우도 매우 현지화되어 있으므로 큰 문제는 아닙니다. 그러나 지난 2 건의 경우에는 수백 개의 HTML 파일 (정적 + 데이터베이스)과 수백 개의 문자열이 있습니다.

그래서 모든 문자열을 인식 가능한 형식으로 추출하여 번역자에게 제공 한 다음 다른 언어로 된 내 페이지가있는 자동화 된 방법을 찾고 있습니다.

비슷한 것이 있습니까? 아니면 사용자 지정 솔루션을 만들어야합니까? 이 경우, 어떤 생각?

답변

8

확인. I18n (국제화)은 아주 이상한 일입니다. 다국어로 작성하려면 코드를 많이 변경해야합니다.

나를 위해, 가장 좋은 해결책은 이미 많은 레이어에서 I18n을 지원하는 CakePHP로 옮기는 것입니다. 그러나이 솔루션을 사용하면 많은 시간을 할애 할 수 있습니다. 그래서 ....

echo "Hello World" 

또는

<p>Hello World</p> 

같은 내부 텍스트를 변환하는 빠른 방법은 (각 언어 PHP 확장하여 적절한 언어 파일을 만드는 것입니다 예 : 말이지. php, el.php, en.php 등)에 다음과 같은 키와 값이 포함 된 배열이 포함됩니다.

$l = array(
    'WEB_TITLE' => 'My web site title', 
    'GEN_HELLO' => 'Hello World', 
    'MENU_HOME' => 'Home', 
    'MENU_PRODUCTS' => 'Products', 
    ... 
); 

echo $l['GEN_HELLO']; 

<p><?php echo $l['GEN_HELLO']; ?></p> 

은 다음과 같습니다

는 다음 웹 사이트에 당신은 당신이 그런 일을 할 필요가 각 페이지의 맨 처음에 당신의 페이지에 해당 언어 파일을로드해야 애플리케이션의 프런트 엔드 측. 이제 다국어로 데이터를 만들려면 어떻게 데이터베이스 구조를 변경해야합니다.

당신이 제목 및 내용 국제화 호환되도록해야 위의 구조에서 해당 테이블을

ARTICLES 
id Title Content Date Active 

이 있다고 할 수 있습니다. 제목 : 위의 표에서 그

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 

같은 것입니다 외모가 당신이 번역이 속해있는 열을 문서 ID를 저장해야 예제 ARTICLES_L에서 호출 다른 테이블을 만들어야 할 열 것을 (예를 번역하기 위해) 언어 및 번역 된 내용.

그래서 당신은 기사의 레코드가

ARTICLES 
id Title Content   Date     Active 
1  Title 1 This is content 1 2011-10-01 13:28:45 1 
2  Title 2 This is content 2 2011-10-01 13:28:45 1 
3  Title 3 This is content 3 2011-10-01 13:28:45 1 

테이블 ARTICLES_L 현실에서 기록

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 
1  1   title  es_ES  Título 1 
2  1   content es_ES  Este es el contenido 1 
3  1   title  el_GR  Τίτλος 1 
4  1   content el_GR  Αυτό είναι το περιεχόμενο 1 
5  2   title  es_ES  Título 2 
6  2   content es_ES  Este es el contenido 1 
.... 

당신이해야 할 많은 많은 다른 작업이 있다는 것을 포함 할 것이다, 그러나 이것은 경우 내가 당신에게주는 해결책 뒤에있는 아이디어 :

굿 럭

PN : 응용 프로그램의 프론트 엔드에서 더 나은 점은 그 것을 사용하는 것입니다. http://php.net/manual/en/book.gettext.php 이 방법은 WordPress 및 CakePHP에서 사용되는 방법이지만 매우 낮은 수준입니다. 한번보세요. 이것은 각 언어에 대한 파일을 만드는 것보다 낫습니다.

+0

도움이 되었습니까? –

+1

정말로 감사합니다 !! – Ivan

+0

당신은 환영합니다 :) –

관련 문제