>  기사  >  백엔드 개발  >  Cakephp의 현지화, 국제화에 대한 자세한 설명

Cakephp의 현지화, 국제화에 대한 자세한 설명

黄舟
黄舟원래의
2016-12-20 09:22:471130검색

CakePHP 프로그램 예제를 본 프로그래머는 컨트롤러 또는 뷰에서 대부분의 출력이 __("xxxx") 함수를 사용하여 수행된다는 것을 알 수 있습니다.

이 함수는 getText() 함수와 동일합니다. 다른 프레임워크에서는 키 값과 로캘을 기반으로 해당 언어 콘텐츠를 동적으로 가져옵니다.


1) i18n, l10n
먼저 Localization과 Internationalization이라는 두 단어를 이해해야 합니다. Localization은 웹 애플리케이션을 적응하도록 변환하는 것을 의미합니다. 특정 언어(또는 문화)가 필요한 반면, 국제화는 웹 애플리케이션의 지역화 기능을 나타냅니다. 국제화 및 현지화는 종종 i18n 및 l10n으로 축약됩니다. 숫자 18과 10은 단어의 첫 글자부터 마지막 ​​글자까지의 문자 수입니다.

2) 현지화된 언어 파일 구현

현지화된 콘텐츠가 필요한 모든 컨트롤러는 먼저 CakePHP의 L10n 클래스를 참조해야 합니다. AppController에서 가져올 수 있으므로 모든 컨트롤러에 사용할 수 있습니다.

view plaincopy

//참조 L10n 클래스:

 App::import('Core', 'l10n');

클래스 ProductController는 AppController를 확장합니다. >


다음으로 현지화된 콘텐츠를 관리하기 위해 해당 언어 파일(파일명은 default.po)을 생성해야 합니다. 파일에는 일련의 문자열과 해당 ID가 포함되어 있어 내용을 쉽게 구성, 관리 및 번역할 수 있으며 해당 언어 폴더에 저장됩니다. 예:

view plaincopy
/app/locale/eng/LC_MESSAGES/default.po(영어)

/app/locale/fre/LC_MESSAGES/default.po (French)
/app/locale/chi/LC_MESSAGES/default.po(중국어) )

현지화된 콘텐츠가 포함된 폴더는 CakePHP 설치 디렉터리/app/locale에 있습니다. 각 언어는 ISO 639-2 표준을 준수하는 서로 다른 3자리 코드에 해당합니다. (자세한 내용은 국회도서관 홈페이지(http://www.loc.gov/standards/iso639-2/php/code_list.php)를 참고하세요.)

파일을 생성한 후에는 현지화된 내용을 편집할 수 있습니다. 콘텐츠. 각 문자열의 키 값은 고유해야 하며 해당 값을 포함해야 합니다. 다음은 간단한 예입니다.

영문 default.po 파일의 내용:

view plaincopy
msgid "purchase" msgstr "공 이름을 선택하여 구매하세요." 🎜>

msgid "search" msgstr "제품 데이터베이스를 검색하려면 여기를 클릭하세요."
view plaincopy

중국어 default.po 파일의 내용에 해당:

msgid "purchase" msgstr "이름을 선택하여 공을 구매하세요.
 view plaincopy

msgid     "search"      msgstr     "点击搜索我们的产品列表。"
e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec
 view plaincopy
e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ecbc5574f69a0cba105bc93bd3dc13c4ec

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec

e03b848252eb9375d56be284e690e873 ;/pre>

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec

(msgid는 문자열을 식별하는 데 사용되며 msgstr은 해당 언어의 내용입니다)

.po 파일은 UTF-8로 인코딩되어야 하며 각 msmstr 값은 1014자로 제한되어야 합니다. Macintosh 컴퓨터를 사용하는 경우 파일을 편집할 때 Unix 줄 바꿈(LF)을 사용해야 합니다. 그렇지 않으면 파일이 올바르게 구문 분석되지 않습니다. 무료 편집기인 Poedit를 사용하여 .po 파일을 쉽게 편집할 수 있습니다.

3) 애플리케이션의 로컬 로케일을 설정합니다(이 단계는 생략 가능하며, cakephp는 사용자의 브라우저 설정에 따라 해당 언어를 사용하여 표시합니다)

1. config/core. php 구성::write:

Configure::write('Config.언어' , "chi");

여기서 chi는 중국어를 나타내고 영어는 eng이어야 합니다.

2. php 파일 프로그램 시작 전 쓰기(예를 들어 beforeFilter에서 사용자의 로케일에 맞게 해당 언어 설정):

$this->Session- >write ("Config.랭귀지","chi");

3. 다음 코드를 사용하여

App::import('Core', 'L10n)을 설정합니다. ' );

$l10n = & new L10n();
 view plaincopy

$l10n->get('chi') //로케일을 중국어로 설정

  

//然后使用_()函数来实现本地化  

_('msgid');  

4)实现本地化

    在需要实现本地化的地方,调用_()函数

1、直接输出字符串,没有返回值:

view plaincopy

__("msgid"); 或者  _("msgid", false);  

 

2、间接输出字符串,有返回值:

view plaincopy

__("msgid",true);  

 

3、还有input要加个label来使他出现中文。

view plaincopy

echo $form->input('name',array('label'=>__('msgid',true)));  


 5)没有覆盖的内容

    日期、货币格式的国际化可以直接用php中的setlocale函数来实现。

 以上就是Cakephp本地化和国际化详解 的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


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