CI 묻고 답하기

제목 다국적 언어 개발 방법
글쓴이 작돌이 작성시각 2010/03/03 15:02:26
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 31907   RSS
ASP 닷넷이나 자바 웹개발 프레임웍에는 거의 international 관련한 내용들이 있어서 CI도 그런게 있을거라 생각하는데요

헬퍼중 Language 부분이 그러한 부분인 것 같은데 설명이 좀 짧아서 응용하기 힘들어요. 
관련 참고 사항이나 소스있으시면 알려주세요.

예를 들면 아래처럼 사용이 가능할까 해서요.

echo helper->lang('message_hello',locale->international());
로켈에 따라 해당 메시지가 해당 로켈로 출력되는 ... 물론 로켈에 따른 키와 벨류는 어딘가에 저장되어 있다고 전제 하에 말이죠.

있다면 좋겠습니다. ㅎㅎ


 다음글 뷰에 동적으로 데이터 추가하기 (3)
 이전글 [초보] mPDF 사용하게 되었습니다. (4)

댓글

변종원(웅파) / 2010/03/03 15:50:09 / 추천 0
헬퍼보다는 클래스를 먼저 참고하시기 바랍니다.
http://codeigniter-kr.org/user_guide/libraries/language.html

languages 디렉토리 열어보시면 단순히 배열로 선언되어 있습니다.

$lang['error_email_missing'] = "You must submit an email address";
$lang['error_url_missing'] = "You must submit a URL";
$lang['error_username_missing'] = "You must submit a username";
 
$this->lang->load('email', $translation);

echo $this->lang->line('error_url_missing');

$lang['....'] 배열내용이 email_lang.php 라는 언어파일에 들어있다면 위 구문의 5번째줄 처럼 로딩을 하면
$translation의 내용에 따라 영어, 한국어 등을 불러올 수 있습니다.
7번째 라인은 그중 error_url_missing 에 해당하는 값을 뿌릴 거구요.

You must submit an email address
변종원(웅파) / 2010/03/03 15:58:15 / 추천 0
단순하게 변수 하나의 내용 가져오는 것이라면 헬퍼가 편하겠네요.
단, 언어파일이 먼저 로딩이 되어 있어야 합니다.

$this->lang->load('email', $translation);
$this->load->helper('language');
echo lang('error_url_missing');


결과 You must submit an email address

헬퍼에서 두번째 파라미터는 그 내용으로 <label>을 만들어주는 겁니다.
변종원(웅파) / 2010/03/03 16:10:24 / 추천 0
한가지 덧붙인다면 xml을 이용한 방법도 있습니다.
1개의 파일로 언어파일을 사용하고 그 안에 계층적으로 넣어서
검색시 1단계 전체, 2단계 전체 또는 해당변수만 찾아올 수 있습니다.
ci의 현재 구조로 큰규모의 다국어사이트 개발하기는 좀 애로사항이 있습니다.
작돌이 / 2010/03/03 16:12:18 / 추천 0
시스템 메시지에 대한 내용은 알고 있었는데 이걸 응용하는 방법을 생각하지 못했네요.
우선 랭귀지 폴더와 파일을 생성하고 관련 내용을 입력 후 각 국가별로 저장한 다음

$this->lang->load('filename');

로 로딩한 후

$this->lang->line('message_hello');

이렇게 사용하면 되겠구나 라고 생각했습니다. 한 사이트 내에서 글로벌 변수로 언어를 변경할수 있도록 또는 자동으로 로켈을 인식하게 한 후

$this->lang->load('filename', $agent_locale);

이런식으로 사용해도 될 것 같습니다.

지금 다시 메뉴얼 읽다가. 자답해야지 하고 포럼 다시 왔는데 벌써 -ㅅ-! 메뉴얼은 읽어도 읽어도 기억이 안남아요...

변종원(웅파) / 2010/03/03 16:18:08 / 추천 0
네 저도 매뉴얼에 대충 뭐가 있다는 정도만 기억이 납니다. ^^
질문을 보고 '매뉴얼에 있었던 것 같은데..' 하면서 찾습니다. ㅎㅎ
아니면 치트가 한장 있는데 그거 출력해서 붙여놓고 보셔도 됩니다.
함수명과 간략한 설명이 되어 있는 치트. (이궁 지금보니 설명은 없네요. 그냥 대분류와 그 안에 포함되어 있는 함수명과 파라미터들만. 그런데 함수명이 직관적이라..)
매뉴얼에 ci치트시트 라고 라이브러리, 헬퍼 2장 있네요. (또 매뉴얼.  ㅋㅋㅋ)
미드필드 / 2010/03/06 11:46:43 / 추천 0
예전에도 올린적이 있는데

http://maestric.com/doc/php/codeigniter_i18n

저걸로 개발하는건 어떤가요..?