2013-06-13 6 views
2

Codeigniter와 Language Class에 혼란을 느낍니다. Jerome Jaglale이 국제화에 대해 개발 한 라이브러리를 사용하고 있습니다. 질문은 어리석게 들릴 수도 있지만 다차원 배열이 언어 파일에 저장되어있는 경우 내 뷰에서 특정 배열 값을로드 할 수 있습니까? Codeigniter의 Language 클래스를 사용하여 다차원 배열의 특정 값을 에코합니다.

$lang = array( 
'description' => array(  
    'main' => 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.', 
    'secondary' => 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.', 
) 

); 

가 어떻게 '주'에코 수 있습니다 내 언어 파일에

class Statics extends CI_Controller { 

public function index($page = 'home') 
{ 
    // load language file 
    $this->lang->load($page); 
    $this->load->view($page); 
} 
} 

그리고이 내 컨트롤러에 말? 나는 아무 쓸모없는 다음을 시도했다.

<p><?php echo lang('description.main')?></p> 

<!-- I know this is wrong but tried it anyway --> 
<p><?php echo lang('home.description.main')?></p> 
<p><?php echo lang('lang.description.main')?></p> 

$ lang [ 'description.main'] = '여기 텍스트 ...'와 같은 프로그램이 있으면 테스트에 성공했음을 유의하십시오. 필자의 경우 모든 데이터를 대신 위의 배열과 비슷한 mutlidimensional 배열에 저장하는 것이 좋습니다.

도움 주셔서 감사합니다.

+0

에코 lang ('설명') [ '메인']; 또는'echo lang ('homedescription') [ 'main'];'? –

답변

2

아주 좋은 질문,하지만이 도움이 될 수 있습니다 : 당신에 LANG 파일 을 :

$lang['description']['main'] = 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.'; 
$lang['description']['secondary'] = 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.'; 

나 :

$lang = array( 
    'description' => array(  
     'main' => 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.', 
     'secondary' => 'Convallis habitant ultrices torquent consectetur sagittis eget metus magna elit fermentum diam tortor ad viverra nec consectetur id ac aliquam hac lobortis malesuada elit, elementum mollis tempor aliquam per nulla ipsum. Molestie non elit nec ante leo nam hendrerit aenean mauris aenean iaculis fringilla.', 
    ) 
); 

을 그들 중 하나에 액세스하려면 :

foreach ($this->lang->line('description') as $desc => $val) 
{ 
    echo $desc . " : " . $val . "<br />"; 
} 

그러나 for 다음 배열 타입은 잘 작동합니다!

echo $this->lang->line('description')['main']; 
+0

레자는, 실제로 달성하기 위해 노력하고있어 당신 세라고에 대한 덕분에 나는 "$ LANG을 입력 할 수 싶지 않기 때문에 $lang = array( 'description' => array ( 'main' => 'value', 'secondary' => value')); 이유는 형식의 단일 배열 내 모든 데이터를 가지고있다 [] [] "내 배열의 모든 단일 값에 대해. 또한 필자의 배열 파일을 스캔 할 때 배열 값을 빠르게 찾을 수 있기를 원합니다. 즉, 배열이 거대하다는 것을 고려하면 위의 예와 같이 들여 쓰기가 완벽 할 것입니다. – user1764094

+0

당신의 제안에서 나는 아래 문법에 익숙하지 않은 것으로 나타났습니다. 내 코드에서 줄을 시도하고 구문 오류가 발생합니다. echo $this->lang->line('description')['main']; 그래서 기본적으로 나는 두 가지 질문이 있습니다 1. 내 배열 내가 원하는 방식을 가질 수 있을까를, 아니면 반드시 $ LANG [] []처럼 개별적으로 제 값을 설정해야합니까? 2. 이전이 예인 경우 'main'을 어떻게 인쇄합니까? – user1764094

+0

이전에 Smarty를 사용 했었습니다. Smarty에서 템플릿 엔진없이 PHP로 다시 돌아가므로 혼란 스럽기 때문에 혼란이있었습니다. – user1764094

관련 문제