2011-09-27 12 views
5

Actualmente tengo un idioma cargado dentro de MY_Controller que extiende CI_Controller. Pero dentro de una página especial cuyo controlador (llamémoslo controlador ABC) amplía MY_Controller, necesito anular el idioma cargado con otro idioma. Intenté cargar otro idioma dentro de este controlador ABC, pero sin éxito. ¿Hay alguna forma de descargar el idioma cargado y cargar otro idioma?Codeigniter Cambia el idioma cargado

+0

Compruebe la respuesta en esta publicación http://stackoverflow.com/questions/31895341/codeigniter-dynamic-language-functionality/41661355#41661355 –

Respuesta

3

¿Ha intentado solo con cargar el archivo de idioma que necesita?

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

Debe ser accesible a continuación, al igual que su idioma predeterminado. No he probado esto aunque, desde mi entendimiento, esta debería ser la manera de hacerlo.

Referencia: http://codeigniter.com/user_guide/libraries/language.html


REVISADO

terminé cavar un poco más para usted, y se encontró que no se puede cargar un idioma por defecto (definirlo como predeterminado en el controlador) y luego intente cambiarlo a otra cosa.

siga estos pasos:

  • Si necesita un idioma que no sea Inglés (por defecto), establece que, en su configuración.
  • Si desea cargar otro idioma de forma controlador, es necesario definir que (más comúnmente en su constructor usando algo como la selección gama sesión/usuario.
  • no puede cargar 2 idiomas (1 en el constructor, a continuación, otra en una clase diferente .. no funcionará)

referencia aquí por mensajes en el foro: http://codeigniter.com/forums/viewthread/176223/

+0

sí, he cargado el idioma predeterminado (inglés) dentro de MY_Controller que se amplía por otros controladores. Intenté cargar un idioma secundario (chino) con la esperanza de que anulará el idioma inglés dentro de este controlador ABC que también amplía MY_Controller, pero aún así, solo se puede acceder al idioma inglés. – coder

+0

He actualizado mi respuesta, parece que necesita reparar sus controladores, no puede declarar 2 idiomas en 1 controlador (o un controlador que extienda). – Jakub

+0

Cool thx. Pensé que solo tenía que implementar otro parámetro opcional para mi constructor MY_Controller para determinar qué idioma cargar. Eso debería funcionar para mi caso. ¡Gracias por el esfuerzo! – coder

4

me encuentro con este problema y encontrar una solución complicado

$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__'); 
.

Espero que ayude.

+0

Esta es la única solución de trabajo cuando se trabaja con archivos de idioma que tienen las mismas claves –

+0

¡Funcionó como un amuleto! ¡Gracias! – Roomm

17

una manera más fácil es para restablecer los datos de lengua y is_loaded

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

funciona perfecto! Justo lo que estaba buscando. – JoshHighland

+1

¡Gran respuesta, gracias por traer eso! – Ando

+0

Esto funciona perfectamente bien para mí. ¡Gracias! – grpaiva

4

Sé que es un poco tarde para responder a esto, pero creo que se puede cambiar el 'lenguaje' elemento de configuración dinámica en función de los requerimientos página.

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

que tenían un requisito de enviar boletines de noticias de la base de usuarios de Lang, y esto me ayudó a cambiar el idioma sobre la marcha, espero que esto podría ayudar ..

+0

Funciona para mí: D ... Esta debería ser la respuesta aceptada, creo, porque es la solución más fácil de todas las respuestas dadas. –

-1

Si tiene cualquier aplicación instalada construido en codeigniter y desea agregar un paquete de idioma, sólo tienes que seguir estos pasos:

  1. Añadir archivos de idioma en la carpeta application/language/arabic
  2. (añadí árabe lang en SMA2 construida en ci)
  3. Ir al archivo llamado setting.php
  4. En application/modules/settings/views/setting.php se encuentra la matriz:
<div class="controls"> 

    <?php /* 

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

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

     'spanish' => 'Español' 

Ahora guarde y ejecute la aplicación.