>백엔드 개발 >PHP 튜토리얼 >PHP 중국어, 영어 변환 수업에 대한 자세한 설명

PHP 중국어, 영어 변환 수업에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-07-14 10:37:573822검색

다국어웹사이트 개발은 언어 간의 문제 해결에 중점을 둡니다.
이 문제를 해결하는 방법은 무엇입니까? 대략 세 단계로 나눌 수 있습니다:

1. 다국어 페이지
2. 다국어 데이터베이스
3. 통합 사용자 액세스 언어

1. 다국어 페이지
고려해야 할 문제:
A. 자동 인식 사용자가 로그인하면 다른 언어 팩을 호출합니까?
B. 사용자가 다른 언어를 전환하면 다른 언어 패키지를 호출합니까?
C. 디렉토리 구조 여러 언어를 추가한 후?

페이지의 다국어화는 여기서 정적 언어 패키지를 사용할 수 있다는 의미입니다.
언어 디렉토리는 디자인 중에 포함되어야 하며, 언어별로 별도의 하위 디렉토리가 있어야 합니다.
예: 영어/en, 중국어 간체/gb, 중국어 번체/b5(다른 언어로 확장 가능)
각 디렉토리에는 각 페이지의 언어 버전이 포함되어 있습니다. 언어 버전 선택 시 해당 버전의 언어팩을 불러올 수 있습니다.

다음은 예제 코드입니다

class language 
{ 
static $lanObject; 
public $type; // unit , dashboard , menu ,other 
public $lan; // language 
private $special; // The common in the file 
private function construct() 
{ 
if( isset($_GET['hl']) || isset($_POST['hl']) ) 
{ 
switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) 
{ 
case 'en': 
$this->lan = 'en'; 
case 'zh': 
$this->lan = 'zh'; 
case 'all': 
$this->lan = 'all'; 
default: 
$this->error(); 
} 
} 
else 
$this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; 
} 
public static function getObject() 
{ 
if( !(self::$lanObject instanceof self) ) 
self::$lanObject = new language(); 
return self::$lanObject; 
} 
public function lto($key) //$key is English 
{ 
if( $this->lan !== 'zh' ) 
return $key; 
if( empty($this->special) ) // if the $special is null 
{ 
if( isset($this->type) ) 
$this->special = file_get_contents($this->type.'.txt'); 
else 
return $key; 
} 
echo $this->search($key); 
} 
private function search($searchTozh) // PHP String 
{ 
$key_start = strpos($this->special,$searchTozh); 
$key_end = strpos($this->special,' ',$key_start); 
$len_str = strlen($searchTozh); 
$for_sub = $key_start + $len_str + 1; 
return substr($this->special, $for_sub, $key_end - $for_sub); 
} 
}

strpos();는 'hello world'에서 'wo'와 같이 string이 처음 나타나는 위치를 찾는 것입니다. 반환 값은 6입니다.
substr(); 문자열 부분을 가로채기 위해
다음은 debugging

$la = language::getObject(); 
$la->type = 'unit'; 
$la->lto('min'); 
echo &#39;<br/>&#39;; 
$la->lto(&#39;hello&#39;);

lto 중에 추가된 코드입니다(영어는 여기에서 번역됨).
unit.txt 파일의 콘텐츠 형식은
hello-hello min-small Minute-Minutes-입니다. Minutes

$special은 lto()가 두 번 이상 호출되므로 파일을 반복적으로 로드하면 성능이 저하되므로 전역적으로 설계되었습니다.
$type은 로드된 파일의 효율성을 고려하여 공개되도록 설계되었습니다. 때로는 며칠 전에 이를 표시할 필요가 없으므로 사용 유형별로 구분하는 것이 좋습니다. 예를 들어 menu.txt가 있습니다. 이는 메뉴 번역을 특별히 담당하며, 삭제 등의 작업을 위해 번역된 txt 텍스트 전용 컬렉션도 있습니다. 이런 식으로 로드할 텍스트를 자유롭게 설정할 수 있습니다. 언어도 자유롭게 설정할 수 있습니다.

위 내용은 PHP 중국어, 영어 변환 수업에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.