TIP게시판

제목 다국어 디비화(무식한 방법)수정2
글쓴이 방문넷 작성시각 2013/12/08 10:02:53
댓글 : 3 추천 : 0 스크랩 : 1 조회수 : 14982   RSS
 어제 하루종일

system/language/이하 폴더

application/language/이하폴더

로 다국어 작업하다가 깊은 빡침이 느껴지는 기분이 물씬들어서 과감히 디비에 넣자! 라는 신념하나로

다국어 디비 작업을 무식하게 했습니다.

구글링하면서 코드 재정리해서 작업하였습니다.

코어 확장으로 Lang.php 를 무력화 시켰구요
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//core 폴더 아래 MY_Lang.php 입니다..

class MY_Lang extends CI_Lang {
    function load($langfile = '', $idiom = '', $return = FALSE) {
        //랭귀지 무력화
    }
}
?>
따로 라이브러리 만들어서 디비로 무식하게 잡아 돌렸습니다.

라이브러리 에 올리시고 컨트롤러등에 적용하실때 load_lang_from_db 를 호출해주시면됩니다.

인자값으로 english 혹은 디비에 넣어주신 다국어 명을 넣어주시면되겠습니다~
/**
 * 다국어 디비화(system/language/폴더 미사용.)
 * @author 내가 만들었던 무슨소용있으리오~~
 */
function load_lang_from_db($nation = null){
  //따로 예외처리 안함.
  if($nation == null) {
    $nation = config_item('language');
  }
  //디비에있는 랭귀지를 불러들임
  $result = $this->ci->language_m->get_language($nation);

  foreach ($result as $row) {
    $this->ci->lang->language[$row->key] = $row->value;
  }
}
모델입니다. 디비 캐시까지 적용된거 수정해서 올립니다.
//디비에 저장된 랭귀지 불러옴.function lang_list() {
  //캐싱 드라이버 로드
  $this->load->driver('cache',array('adapter' => 'file'));

  //캐시가 없을경우.
  if(! $admin_lang_query = $this->cache->get('admin_lang_query')) {
   $this->db->select('*');
   $query = $this->db->get('lang');
   //result 자체를 캐싱해버림.
   $this->cache->save('admin_lang_query',$query->result(),300);

   if ($query->num_rows() >= 1){ 
    return $query->result();
   } else {
    return FALSE;
   }
  } else {
   //캐시가 있을경우.
   $query = $this->cache->get('admin_lang_query');
   return $query;
  }
 }

요롷쿵 해서 무식하게 잡아 돌렸습니다.. 팁아닌 팁이지만 저처럼 고민하시는분있으시면 맛만 보시고 저처럼 삽질하지마세용~~

아! 다국어 디비파일은 제가 따로 작업한게있어서 스키마 압축한거 파일로 올립니다!

#수정1!!!
다국어 디비파일 영어, 한국어 올렸습니다. 한국어 중에 누락된 부분있을수도있으니... 없는 부분에 대해서 추가해서 쓰시면됩니다!


첨부파일 lang.sql_.zip (6.7 KB)
sql_2.sql_.zip (12.2 KB)
 다음글 유용하지만 잘 사용되지 않는 CI 상수들 (2)
 이전글 Profiler 확장 (1)

댓글

한대승(불의회상) / 2013/12/08 12:56:50 / 추천 0
오... 저도 고민하고 있던 부분인데...
새로운 방법 제시를 하여 주셨군요.

디비의 부하가 염려 되신다면 디비 캐시를 이용하시면 좋을것 같습니다.
물론 2.1.4에 약간의 버그가 있으니 아래 URL 참고 하시구요.

http://cikorea.net/tip/view/1351/page/1
방문넷 / 2013/12/08 19:53:26 / 추천 0
불의회상. // 제가 작업하는 사이트가 트래픽이 얼마없는 사이트다보니 캐시를 고려 안했는데 오늘 때마침 문의가 와서 디비캐쉬를 진행중입니다.. 잘되면 다시 파일정리해서 올릴께요.  캐시 정보 감사합니다!
들국화 / 2013/12/10 14:10:56 / 추천 0
음 예전에 했던 방법인데.. 가장 좋은방법은 실제로 다국어 데이타를 치완해서 언어별로 떨구는 방법도 있습니다.
템플릿과 비슷할듯 한데 템플릿은 실시간 변환을 하지만 실제 변환되는 언어로 떨궈 놓는 거죠.
디자인이 바뀌면 당연 한번더 돌려줘야 한다는 귀찮음이...
다시 생각하니 좀 귀찮키는 하네요..ㅋㅋㅋ