Caracteres cirílicos en caracteres latinos en php

Para convertir un texto de cirílico a latino o viceversa, se puede hacer de la siguiente forma, que es bastante sencilla aunque no es seguro 100% (cosas del idioma)

$cyr  = array('а','б','в','г','д','e','ж','з','и','й','к','л','м','н','о','п','р','с','т','у', 'ф','х','ц','ч','ш','щ','ъ','ь','ю','я','А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У', 'Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ь', 'Ю','Я' );
$lat = array( 'a','b','v','g','d','e','zh','z','i','y','k','l','m','n','o','p','r','s','t','u', 'f' ,'h' ,'ts' ,'ch','sh' ,'sht' ,'a' ,'y' ,'yu' ,'ya','A','B','V','G','D','E','Zh', 'Z','I','Y','K','L','M','N','O','P','R','S','T','U', 'F' ,'H' ,'Ts' ,'Ch','Sh' ,'Sht' ,'A' ,'Y' ,'Yu' ,'Ya' );
/*Variable que contiene el texto cirílico a latino*/
$cirilico_en_latino = str_replace($cyr, $lat, $cirilico);
/*Variable que contiene el texto latino a cirílico*/
$latino_en_cirilico = str_replace($lat, $cyr, $latino);
echo "$cirilico_en_latino $latino_en_cirilico";

 

Internacionalización i18n en CodeIgniter

Qué es lo que vamos a obtener en este tutorial?

Vamos a poder solventar tener  tu aplicación web o simplemente web en diferentes idiomas, con el siguiente formato.

  • dominio.com/es/
  • dominio.com/en/
  • dominio.com/cz/

Usaremos la clase Language de CodeIgniter y las librería ci_i18n_library de Maestric

Una vez que te descargues la librería ci_i18n_library, tienes que poner los archivos MY_Language.php y MY_Config.php en system/application/libraries

Configuración

Tienes que usar pretty URL, sin index.php. Si usas Apache, lo normal es que uses mod_rewrite en .htaccess

Aquí dejo un archivo .htaccess modificado para la ocasión

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} (index\.php|webroot/|images/|css/|js/|robots\.txt|favicon\.ico)
RewriteRule ^(images|css|files|js)/(.*)$ webroot/$1/$2 [L]
RewriteRule ^(favicon\.ico)$ webroot/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

En el archivo config.php tenemos que modificar:

$config['base_url'] que debe corresponder a tu configuración

$config['index_page'] = ”

 

En config/routes.php añadimos

// URI like '/en/test' -> use controller 'test'
$route['^es/(.+)$'] = "$1";
$route['^en/(.+)$'] = "$1";

// '/en' and '/es' URIs -> use default controller
$route['^es$'] = $route['default_controller'];
$route['^en$'] = $route['default_controller'];

 

Cómo usarlo?

Archivos de idioma

system/application/language/english/test_lang.php

<?php 
$lang['test_hello'] = "hello";

system/application/language/spanish/test_lang.php

<?php 
$lang['test_hello'] = "hola";

 

Controlador

system/application/controllers/test.php

<?php
class Test extends Controller {

	function index()
	{
		// Esto se podría poner en autoload
		$this->load->helper('language');
		$this->load->helper('url');

		// archivo de idioma
		$this->lang->load('test');

		$this->load->view('test');
	}
}

 

Vista

system/application/views/test.php

<p><?php echo lang('test_hello') ?></p>

 

Notas

Para obtener el idioma actual

$this->lang->lang();

 

Para cambiar de idioma

anchor($this->lang->switch_uri('en'),'English');

Página por defecto en CodeIgniter

Para asignar una página por defecto en tu instalación de CodeIgniter, es tan sencillo como ir a la carpeta config que se encuentra dentro de application y editar el archivo routes.php

En la línea 41 (si el archivo no ha sido modificado previamente) encontraréis $route['default_controller'] , donde tendréis que poner el controlador que queréis para que salga por defecto en vuestro dominio $route['default_controller'] = “controlador”

Este tutorial a sido muy básico, pero por algo se empieza.