가장 effient 방법 템플릿에는 다국어 사이트
-
22-07-2019 - |
문제
내가 건축한 영국/프랑스 웹 사이트는지 궁금했 있는 경우에는 최상의 방법이 같은 작업입니다.
중복한 사이트를 만들고 프랑스와 영국 폴더와 적절한 사이트 내부입니다.
하기 위하여 PHP 스왑 콘텐츠에 html 태그가 있습니다.예를 들어.if($lang=='en'):
사용 php 스왑 콘텐츠만 떠나는 html 태그에 대해 동일한 모두.예를 들어.문 경우 모든 장소입니다.는 것이 나쁜 것은 효율성에 대한?
다른 어떤 제안을 감사하겠
해결책
우리는 프레임워크에 위치한 경우(만)우리의 사이트 간 국제는 다음과 같이...
폴더 구조;
/
lang/
english/
images/
text/
dutch/
images/
text/
어떤 텍스트나 이미지어 특정 제거 페이지에서 직접 교체하여 상수입니다.예를 들면 로그인 화면에서,우리가 드롭;
echo TEXT_LOGIN_WELCOME;
에 정의된/lang/english/text/login.php 으로;
define('TEXT_LOGIN_WELCOME', 'Welcome, please login:');
그러나/lang/dutch/text/login.php 그것은으로 정의된;
define('TEXT_LOGIN_WELCOME', 'Welcome, please login (in dutch):');
;-)
각 언어로 정의하는 파일의 이름은 정확히 동일한 페이지로 그것이 사용되는,그렇게 할 때 우리는 짐 공용 페이지리고 우리만 그는 언어 사용자가 말고 우리는 포함할 수 있습니다 해당 언어를 정의한 파일입니다.
좋은 일에 대해 이 시스템은 모든 언어로 정보가 중앙 집중식.추가해야 하는 경우 새로운 언어를 복사본(영어?) 폴더 이름을 바꾸 지퍼 모든 것을 보낼 번역 서비스 작업이 그들의 마법입니다.물론,단점은 이 시스템의 유지 모두 같은 언어와 컨텐츠 성장하는...사람이 어떤가있는 경우 밝은 아이디어와 이에 관해서는 다음을 듣고 싶어요 그들!
Btw,당신을 필요로 추측하는 사용자의 위치하여 IP,당신이를 확인 할 수 있습니다 geoIP.
다른 팁
템플릿 시스템을 사용하십시오. 스마트 템플릿 엔진 아마도 가장 잘 알려진 PHP 중 하나 일 것입니다. 템플릿 시스템은 당신이 달성하려는 정확한 목적에 도움이 될뿐만 아니라 컨텐츠에서 디스플레이 코드를 분리하여 페이지를 훨씬 쉽게 유지할 수 있습니다 (또한 다양한 콘텐츠 페이지에 동일한 템플릿을 사용할 수 있습니다. 비슷한 성격).
가장 간단한 방법으로 사용하는 것이 좋습니다 I18N 국제화 방법 & getText 카탈로그 (.PO 파일).
유명한 WordPress 프로젝트입니다 그것을 사용합니다.
1 -중복 사이트 전체 당신을 강제로 반복하는 모든 코드 터치로 최대 2 폴더:-[
2 -당신은 당신의 것을 의미 somenting 아
<?php if($lang=='en') { ?>
<p>English text</p>
<? } else { ?>
<p>Text français</p>
<? } ?>
이 솔루션은 완벽한 관리하는 두 개의 언어 같은 페이지입니다.
하지만 당신은 여전히 중복 태그가 있습니다.
3 -변경 내용만 그것은 정말 만족합니다.
어쩌면 증식의 경우에 문의 무게는 아래로 php 컴파일하기...모르겠습니다.
어쨌든 문서 더 할 수 있습니다 간결한 이 방법:
<?php
function interpreter($buffer) {
$pieces = explode('#', $buffer);
if (isset($_GET['lang'])) $begin=$_GET['lang'];
else $begin = 1; // 1 to display français, 2 to display english
$tot = count($pieces);
for ($i=$begin; $i<$tot; $i+=3) { // remove one language
unset($pieces[$i]); }
foreach ($pieces as $value) { // recompose the text
$output .= $value; }
return $output;
}
ob_start("interpreter");
?>
<a href="?lang=#1#2#">#Français#English#</a>
<p>#English text#Texte français#.</p>
<?php ob_end_flush() ?>
텍스트 사 ob_start
고 ob_end_flush
이 구문 분석된 후 php 컴파일.
즉 영향을 받는 문자열이 오는 예입니다.에서 에코 성명,내에 없 < ?php?> 태그입니다.
또한 컨텐츠에서 나오는 php 포함한 영향을 받습니다.
하지만 외부 css 나 자바스크립트.
한 관심을 유지하고 구분 #
지 않는 숙희 아직 다른 곳에서 사용.
어쩌면 당신은 당신이 선호하는 바꾸기 ||
나 ^^
의 코스를 미래에 적응할 수 있는 이 솔루션을 3 개 이상의 언어.그러나 있는 경우를 삽입하는"세 번째는 언어로 번역#"많은 선의 큰 위치,어쩌면에서 솔루션 MatW 맞는 당신입니다.