2011-09-27 48 views
5

Hiện tại tôi có một ngôn ngữ được tải bên trong MY_Controller, mở rộng CI_Controller. Nhưng bên trong một trang đặc biệt mà bộ điều khiển (chúng ta hãy gọi nó là bộ điều khiển ABC) mở rộng MY_Controller, tôi cần phải ghi đè lên ngôn ngữ được nạp với một ngôn ngữ khác. Tôi đã thử tải một ngôn ngữ khác bên trong bộ điều khiển ABC này, nhưng không thành công. Có cách nào để tải ngôn ngữ đã tải xuống và tải ngôn ngữ khác không?Codeigniter Thay đổi ngôn ngữ đã tải

+0

Kiểm tra câu trả lời trong bài đăng này http://stackoverflow.com/questions/31895341/codeigniter-dynamic-language-functionality/41661355#41661355 –

Trả lời

3

Bạn đã thử tải tệp ngôn ngữ mình cần chưa?

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

Nó phải là sau đó truy cập giống như ngôn ngữ mặc định của bạn. Tôi đã không thử nghiệm tho này, nhưng từ sự hiểu biết của tôi điều này nên là con đường để đi về nó.

tham khảo: http://codeigniter.com/user_guide/libraries/language.html


SỬA ĐỔI

tôi đã kết thúc đào hơn một chút cho bạn, và thấy rằng bạn KHÔNG THỂ tải một ngôn ngữ mặc định (xác định nó như là mặc định trong điều khiển của bạn) và sau đó cố gắng thay đổi nó thành một thứ khác.

Thực hiện theo các bước sau:

  • Nếu bạn cần một ngôn ngữ khác ngoài tiếng Anh (mặc định), thiết lập rằng trong cấu hình của bạn.
  • Nếu bạn muốn tải ngôn ngữ KHÁC trên cơ sở bộ điều khiển, bạn cần phải xác định rằng (phổ biến nhất trong số constructor của bạn bằng cách sử dụng một cái gì đó như mảng phiên/lựa chọn người dùng.
  • Bạn không thể tải 2 ngôn ngữ (1 trong hàm tạo khác trong một lớp học khác nhau .. sẽ không hoạt động)

tham khảo ở đây mỗi bài viết diễn đàn: http://codeigniter.com/forums/viewthread/176223/

+0

có, tôi đã tải ngôn ngữ mặc định (tiếng Anh) bên trong MY_Controller được mở rộng bởi các bộ điều khiển khác. Tôi đã thử tải một ngôn ngữ thứ cấp (Trung Quốc) hy vọng nó sẽ ghi đè lên ngôn ngữ tiếng Anh bên trong bộ điều khiển ABC này cũng mở rộng MY_Controller, nhưng vẫn còn, chỉ có ngôn ngữ tiếng Anh có thể truy cập. – coder

+0

Tôi đã cập nhật câu trả lời của tôi, có vẻ như bạn cần phải sửa chữa bộ điều khiển của bạn, không thể tuyên bố 2 ngôn ngữ trong 1 bộ điều khiển (hoặc một bộ điều khiển bạn mở rộng). – Jakub

+0

Thx lạnh. Tôi figured tôi chỉ cần thực hiện một param tùy chọn để xây dựng MY_Controller của tôi để xác định ngôn ngữ để tải. Điều đó sẽ làm việc cho trường hợp của tôi. Thx cho các nỗ lực !!! – coder

4

tôi gặp phải vấn đề này và tìm một giải pháp khéo léo

$this->lang->load('text', 'english'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 

//CI will record your lang file is loaded, unset it and then you will able to load another 
//unset the lang file to allow the loading of another file 
if(isset($this->lang->is_loaded)){ 
    for($i=0; $i<=sizeof($this->lang->is_loaded); $i++){ 
     unset($this->lang->is_loaded[$i]); 
    } 
} 

$this->lang->load('text', 'chinese'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 
.

Hy vọng điều đó sẽ hữu ích.

+0

Đây là giải pháp làm việc duy nhất khi làm việc với các tập tin ngôn ngữ có cùng các phím –

+0

Làm việc như một sự quyến rũ! Cảm ơn! – Roomm

17

một cách dễ dàng hơn là để thiết lập lại các dữ liệu ngôn ngữ và is_loaded

$this->lang->is_loaded = array(); 
$this->lang->language = array(); 
+1

hoạt động hoàn hảo! Chỉ cần những gì tôi đang tìm kiếm. – JoshHighland

+1

Câu trả lời hay, cảm ơn vì đã mang nó lên! – Ando

+0

Điều này làm việc hoàn toàn tốt cho tôi. Cảm ơn! – grpaiva

4

Tôi biết đó là một chút muộn để trả lời này nhưng tôi nghĩ bạn có thể thay đổi mục config 'ngôn ngữ' tự động dựa trên yêu cầu trang.

$this->config->set_item('language', 'chinese'); 
$this->config->set_item('language', 'english'); // based on the language folder of course holding language files 

Tôi có yêu cầu gửi bản tin trong ngôn ngữ cơ sở của người dùng và điều này đã giúp tôi thay đổi ngôn ngữ khi đang di chuyển, hy vọng điều này có thể hữu ích ..

+0

Làm việc cho tôi: D ... Đây phải là câu trả lời được chấp nhận, tôi tin rằng, đó là giải pháp đơn giản nhất trong số tất cả các câu trả lời được đưa ra. –

-1

Nếu bạn có bất kỳ ứng dụng được cài đặt sẵn trong codeigniter và bạn muốn thêm một gói ngôn ngữ, chỉ cần làm theo các bước sau:

  1. Thêm tập tin ngôn ngữ trong thư mục application/language/arabic
  2. (tôi đã thêm arabic lang trong sma2 xây dựng trong ci)
  3. Chuyển đến file có tên setting.php
  4. Trong application/modules/settings/views/setting.php bạn sẽ tìm thấy các mảng:
<div class="controls"> 

    <?php /* 

    $lang = array (
     'english' => 'English', 

     'arabic' => 'Arabic', // +++ Add this line 

     'spanish' => 'Español' 

Bây giờ hãy lưu và chạy ứng dụng.

Các vấn đề liên quan