여러 언어 지원 (영어, 프랑스어, 중국어 등)으로 PHP 응용 프로그램을 구축하는 방법

StackOverflow https://stackoverflow.com/questions/691218

  •  22-08-2019
  •  | 
  •  

문제

램프와 스마트 템플릿 프레임 워크를 사용하는 웹 응용 프로그램을 작성하고 있습니다. 웹 사이트에는 많은 정적 콘텐츠가 있습니다 (미국 페이지, 오류 경고, 확인 이메일 등).

웹 응용 프로그램은 여러 언어를 지원해야합니다. 다음 접근법이 적절합니까?

1) Smarty Template Pages (HTML 페이지)의 모든 정적 사본은 {lang file = 'about.xml'getterm = 'title'}과 같은 Smarty 플러그인으로의 통화로 대체됩니다.

2) About.xml에 대한 파일은 여러 언어 사전 역할을하는 웹 서버의 XML 문서입니다. 따라서 XML 노드가 있습니다

<term value="title">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; is a great site</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; c'est website magnifique</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; great deals!</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; magnifique deals!</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>

3) 사이트의 URL 구조는 http://mywebsite.com/language/index.php. 이를 위해 내 웹 서버는 다음과 같은ln -s ./en ./ ~하도록 하다 http://mywebsite.com/en/index.php 동일한 PHP 페이지를 가리 킵니다 http://mywebsite.com/fr/index.php, 그러나 언어 설정에 대한 URL을 확인하겠습니다. Google이 사이트의 두 버전을 모두 색인화 할 수 있기를 바랍니다.

이것은 좋은 접근법입니까? HTMlentity 인코딩 HTML 태그가 있어도 XML이 다른 언어의 컨텐츠를 저장하는 가장 좋은 형식입니까? 내가 간과 했습니까?

도움이 되었습니까?

해결책

질문의 세부 사항에 대해서는 확실하지 않지만 살펴보고 싶을 수도 있습니다. Zend_Translate.

다른 팁

XML은 컨테이너 형식 이며이 사용은 그리 나쁘지 않습니다. HTML 엔티티를 제외하고는 비교적 인간 읽기 가능의 이점이 있습니다. 이를 위해 CDATA 섹션을 사용해 볼 수 있습니다. 이를 위해 XML을 사용하는 한 가지 장점은 DTD를 사용하여 모든 언어에 모든 키에 대한 번역이 존재하는지 확인할 수 있다는 것입니다. UTF-8 또는 UTF-16을 사용하여 파일을 인코딩하고 인코딩을 파일 상단에 놓으면 도움이 될 수 있습니다. UTF-8을 추천합니다.

XML 데이터를로드하고 페이지에 통합하는 방법에 대해서는 "Smarty"를 모르지만 전반적인 접근 방식은 합리적으로 들립니다. 내가 볼 수있는 유일한 단점은 모든 번역을 동시에 방출해야한다는 것입니다 (이 문제를 피하기 어렵습니다).

내가 주목하는 한 가지는 CH를 중국어의 언어 코드로 사용한다는 것입니다. ZH를 사용해야합니다. 그것이 ISO 코드입니다. Ch입니다 다른 것.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top