viernes, 22 de julio de 2011

Manejo de una página web multilanguage con Sesiones en CodeIgniter

Para manejar una página multilanguage en codeigniter es bastante sensillo si sabemos un poco de sesiones en este framework.
Este ejemplo es para aquellos que quieren tener su página web en diferentes idiomas y no quieren que el idioma se muestre en la URL, para lo cual son indispensables las sesiones.
Primero creamos un archivo en el Core, el cual va a extender de CI_controller y así ahorrarnos varias lineas de código, ya que en este archivo estaremos haciendo el cambio de idioma.

<?php if (!defined('BASEPATH'))   exit('No direct script access allowed');

class BaseController extends CI_Controller
{
    public $data = array();

    function __construct() {
        $this->data["headline"] = "HeadLine del BaseController";
        parent::__construct();
        // aca establesemos la sesion de idioma, "lang".
        // notese que en este caso nuestro idioma por defecto será el español, porque la primera vez la sesion no está establecida
        // por lo cual se ejecuta el else.
        if ($this->session->userdata('lang') == 'en') {
            $this->config->set_item('language', 'english'); //esto cambia el archivo de configuracion config[language] = "english";
            $this->lang->load('datos', 'english'); //cargamos los archivos que agregamos a /system/language/english
        } else {
            $this->config->set_item('language', 'spanish'); //esto cambia el archivo de configuracion config[language] = "spanish";
            $this->lang->load('datos', 'spanish'); //cargamos los archivos que agregamos a /system/language/spanish
        }
    }

    //la funcion current_page la utilizaremos para saber desde que página se hizo click para cambiar el idioma.
   //la sesion que utilizamos es "current_url" y debemos colocarla en la primera línea de cada función en nuestros controllers
    function current_page()
    {
            $this->session->set_userdata('current_url',  $this->uri->uri_string());
    }
}
?>

Creamos un controller en el cual tendremos las funciones de cambio de idioma, en este caso el nombre es Categoria.php

<?php if (!defined('BASEPATH'))   exit('No direct script access allowed');

class Categoria extends BaseController {

    function __construct() {
        parent::__construct();
    }

    public function espanol() {
        $this->session->set_userdata(array('language' => TRUE, 'lang' => 'es')); //establecemos la sesion lang en "es"
        $current_url = $this->session->userdata('current_url'); //la sesion establecida en BaseController
        //comprobamos que la sesion tenga la url desde donde se quiere cambiar al idioma español,
                if (isset($current_url) && $current_url != '') {
                    redirect($this->session->userdata('current_url')); //redireccionamos a la url desde donde se hizo el cambio de idioma
                }
                else
                    $this->index(); //cargamos la funcion index de este controller.
    }

    public function english() {
        $this->session->set_userdata(array('language' => TRUE, 'lang' => 'en')); //establecemos la sesion lang en "es"
        $current_url = $this->session->userdata('current_url');
                if (isset($current_url) && $current_url != '') {
                    redirect($this->session->userdata('current_url'));
                }
                else
                    $this->index();
    }

    public function index($someslug="") {
            $this->current_page(); //siempre colocamos esta función de BaseController en la primera línea de las funciones
            $this->data["title"] = "Inicio"; //titulo para la vista
            //hacemos unas querys o algo y luego cargamos la vista
            $this->data["main_content"] = "inicio/login";
            $this->load->view("template/layout", $this->data);
    }

Creamos una vista para login, en este caso es sólo parte del ejemplo, no le pusimos ningun tipo de utilidad.

<div>
<fieldset>
<legend><?php echo $this->lang->line('titulo_form_post'); ?></legend>

<?php echo form_open('categoria/index');?>
<div>
<label><?php echo $this->lang->line('Nombre_de_Usuario'); ?></label>
<input name="user" size="30" type="text" value="<?php echo set_value('user'); ?>" />
<div class="error"><?php echo form_error('user');?></div>

<label><?php echo $this->lang->line('Password'); ?></label>
<input name="password" size="30" type="password" value="<?php echo set_value('password'); ?>" />
<div class="error"><?php echo form_error('password');?></div>

<div><input class="input-submit" type="submit" value="Submit" /></div></fieldset>
</div>
<?php echo form_close();?>

</fieldset>
</div>

También tenemos el layout que es parte de nuestra forma de trabajar con plantillas, en esta vista le ponemos los links a las funciones de cambio de idioma, estos links deben de ser mostrados en todas las pantallas de nuestra web, es recomendable colocarlas en el header.

<?php
     $this->load->view('template/header');

     <div id="language">
        <?php
                echo anchor('categoria/espanol', 'Ver la Página en Español');
        ?>
        </br>
        <?php
                echo anchor('categoria/english', 'Display current page in English');
        ?>
     </div>

     $this->load->view($main_content);
     $this->load->view('template/footer');

?>

Bueno eso es todo lo que puedo mostrarles sobre una página multilanguage, espero que todo haya quedado claro, y si tienen alguna duda, o algun error en el código que publiqué, sientanse libres de preguntar.

lunes, 13 de junio de 2011

¿Manejo de varios lenguajes en una Página web utilizando CodeIgniter?

El framework CodeIgniter permite el uso de varias librerias que nos facilitan el trabajo, una de esas librerias son las de lenguaje(language); podemos utilizar librerias para poder manejar diferentes lenguajes desde la URL o URI, como prefieran llamar a la dirección web.

Con esta librería el lenguaje que se mostrará en la página se debe especificar en la URI, por ejemplo:
Aqui vamos a mostrar dichas librerias, para CodeIgniter 2.x
Si necesitas la versión para CodeIgniter 1.7.X visita la siguiente página.

martes, 24 de mayo de 2011

Messenger estará perfectamente integrado en Windows Phone, con mensajes de texto y mensajería instantánea juntos

Ayer por la noche El equipo de Windows informó que hay muchas mejoras para el Messenger, especialmente en el Windows Phone.
Aca les dejo unas caracteristicas que tendrá el nuevo Aplicativo.

Elija los servicios que desea - Más de 300 millones de personas utilizan Messenger para conectarse a otras personas todos los meses, la gran mayoría de los usuarios de Messenger son también miembros de otros servicios como Facebook y Yahoo. Debido a esto, se han integrado en este proyecto.
Acceso a ellos desde todos sus dispositivos - Messenger está disponible desde hace muchos años en una amplia gama de dispositivos, utilizando las aplicaciones creadas tanto por Microsoft y/o por Socios. Además de los programas de escritorio clásico Messenger para PC y Mac, Messenger está integrado en la web de Hotmail, SkyDrive, y varios sitios de tercera en todo el mundo. Además, las aplicaciones de Messenger están disponibles para la mayoría de los teléfonos móviles y operadores móviles en todo el mundo, incluyendo teléfono de Windows 7, el iPhone, Android, Blackberry OS, Symbian de Nokia, Samsung Bada, y muchos más.

Organigrama

Este es un ejemplo de Organigrama de una empresa Constructora.

lunes, 23 de mayo de 2011

¿Cómo instalar en Ubuntu?

Para muchas personas que no estan acostumbradas a utilizar Sistemas operativos Libres, en este caso Ubuntu Desktop 9.10; talvez cuando quieran instalar un programa busquen los muy conocidos .exe en S.O. Windows.
Para instalar programas en Ubuntu, podemos hacerlo de diferentes formas, por ejemplo:

1)Menú Aplicaciones - Centro de Software de Ubuntu: Esta es la manera mas sencilla de instalar software, ya que sólo escogemos una categoria, luego buscamos por nombre y con un click ya podemos tener instalado el paquete (recordemos que en linux, a los programas, software se les conoce como paquetes).

viernes, 20 de mayo de 2011

¿Quieres ser un Superheroe?

¿Quieres ser un SuperHeroe?... Bueno, todos sabemos que eso es imposible pero al menos podemos conformarnos con tener nuestro propio comic, y si no eres de las personas que escriben historietas  pero igual quieres tener un superheroe, porque no crear un prototipo y hasta tener una portada de Comic sobre tu Superheroe!.

Pues ahora, hacer esto es fácil, simplemente hay que ir a la pagina The Hero Factory y crear uno, elegir su vestuario, sus rasgos faciales (puedes hacerlo parecido a ti), y sus poderes; al final cuando ya tengas tu superheroe creado tendrás lista la portada de tu Comic y puedes después mostrarla al mundo a través de las redes sociales.

Acá un ejemplo del SuperHeore de DivierTEC.

La Evolución de los Celulares

Divertido de ver como los celulares han ido cambiando año a año desde el primer celular, el Motorola DynaTAC de 1985 hasta el iPhone de Apple en el 2007, para luego ver diseños futuristas de celulares.

Los celulares mas representativos en el video son los de Motorola, Nokia, Siemens, Sony Ericcson, Samsung, BlackBerry.