2010-06-03 4 views
2

나는 웹 응용 프로그램을 i18n-ize하려고합니다. 사이트는 끊임없이 변할 것입니다 : 텍스트는 재 작성되고, 새로운 것들이 추가됩니다. 웹 어플리케이션은 PHP로 작성되었지만, 모든 언어에 똑같이 적용됩니다. 기본적으로웹 응용 프로그램에 i18n을 추가하는 가장 좋은 방법은 무엇입니까?

내가 원하는 :

1) 코드는 2) 번역 읽기 쉽고 유지 관리로 새로운 물건이 영어로 추가 또는 영어가 3 변경 될 때 무언가가 있는지 여부를 알려면) 이메일을 보낼 최신 또는 아닙니다. 4) 번역사가 온라인으로 업데이트 할 수 있습니다.

최선의 아이디어는 모든 것을 데이터베이스에 저장하고 PO 파일과 gettext보다 처리하는 것입니다. 그러나 가장 좋은 방법은 무엇입니까?

$ lang ('contactus')은 코드를 읽을 수없고 (코드 명), 개발이 느려지는 단점이 있습니다 (모든 영어가 고유 한 키가 주어져 데이터베이스에 저장되어야 함)

$ lang ('자세한 정보는 문의 해주십시오.')가 읽기 쉽고 빠르지 만 영어가 변경되면 (오타, 문법 수정, 업데이트 됨) 번역이 완전히 사라집니다.

다른 앱/프레임 워크가 어떻게 처리합니까?

답변

1

번역해야 할 문자열을 데이터베이스에 저장하지 마십시오. 나 자신과 그것을 후회했다. 번역자에게 보낼 수있는 외부 파일을 사용하십시오. 원하는 언어로 된 문자열을 키로 사용하십시오. 그래서 당신의 예를 들어 $ lang ('자세한 정보는 저희에게 문의하십시오') 가야 할 길입니다. 영어로 된 텍스트 변경은 아마도 번역의 해당 변경을 의미하므로 유지 관리의 골치 거리입니다.

플러스 문자열 번역보다 더있어. 통화 기호 및 형식, 숫자 형식 (십진수, 숫자 그룹화 기호, 기호가 나타나는 곳), 날짜 형식이 있습니다. 이름 형식 - 일부 지역에서는 일반적으로 사용하지 않는 다른 사람의 중간 이름을 사용하는 경우가 많습니다. 오른쪽에서 왼쪽으로 텍스트를 왼쪽에서 오른쪽으로 읽는 것입니다. 우.

웹 응용 프로그램의 경우 웹 페이지를 언어 로케일 디렉토리로 분리하고 그런 식으로 처리하는 것이 훨씬 간단합니다. 비즈니스 로직을 뷰 코드와 별도로 구분해야합니까? 이것은 일반적인 PHP 접근법이 실제로 상처를주기 시작하는 html ala 내에 비즈니스 로직을 직접 포함시키는 곳입니다.

+0

왜 데이터베이스를 사용하여 후회할 수 있는지 명확하게 설명해 주시겠습니까? 저에게 db 프로젝트로 보이는 이유는 아마도 번역사 (현지 지사에서 일하는 사람들)가 정규 (매주) 기준으로 번역 및 업데이트를 제공하기를 원할 것입니다. 전문 소프트웨어가없는 20 명의 훈련받지 않은 사람들이 5 일마다 PO 파일을 이메일로 보낸 다음 우리가 관제탑과 무례한 사람들에 의해 그들을 되 찾는 작업 흐름보다는 웹 사이트를 통해 업데이트하도록하는 것이 매우 중요합니다. – Apemantus

+0

(웹 UI를 통해 파일을 편집 할 수 있지만 편집 된 날짜와 같은 다른 이점이 있음을 알고 있습니다.) – Apemantus

1

예를 들어 t ($ key)와 같이 쉽게 이름을 입력하거나 _ ($ key) 기능을 제공하는 기존 솔루션 (예 : Zend_Translate) 또는 PHP gettext를 사용하여 번역 기능을 만드십시오.

번역 파일의 형식은 그다지 중요하지 않아야합니다. 번역 프로세스에 가장 적합합니다.

키와 같은 원래 언어 (예 : 영어)를 사용하십시오. 긴 문자열의 경우 때때로 "introduction_text_1"과 같은 인공 키를 생성하는 것이 좋습니다.

0

상수 나 단축키를 사용하지 마십시오. 데이터베이스를 사용하지 말고 배열 만 사용하지 마십시오. 번역을 처리하는 전문적인 방법은 gettext (같은) 함수뿐입니다.

_ ("Original english text queries") 만 사용해야합니다. 번역 데이터/파일에 액세스 할 수없는 경우 최소한 기본 언어 텍스트를 계속 사용할 수 있다는 장점이 있습니다.
텍스트 문자열의 변경에 대해 걱정하지 마십시오. 실제로 이는 드문 경우입니다.gettext 구문을 사용하면 자동으로 언어 파일을 적용 할 수있는 도구도 있습니다. 별로 좋은 도구가 아닙니다. 당신을 생각해보십시오. 그러나 자작 번역 방법보다 더 많은 일을하고 있습니다. PHP 인터프리터가 기본 gettext를 지원하지 않으면 "php-gettext"에뮬레이션 또는 "upgradephp"를 검색하십시오.

관련 문제