Novedades
Música
 
Imagen, foto o portada de Que Te Perdone de Nanpa Básico, Nejo (Letra, Música)
Que Te Perdone de Nanpa Básico, Nejo (Letra, Música)
Imagen, foto o portada de Mi Complejo de Andry Kiddos (Letra, Música)
Mi Complejo de Andry Kiddos (Letra, Música)
Imagen, foto o portada de Contigo (feat. Kenzy) de Ren Kai (Letra, Música)
Contigo (feat. Kenzy) de Ren Kai (Letra, Música)
Imagen, foto o portada de Fundota de Bryant Myers (Letra, Música)
Fundota de Bryant Myers (Letra, Música)
Imagen, foto o portada de Hookiao de Lil Silvio & El Vega (Letra, Música)
Hookiao de Lil Silvio & El Vega (Letra, Música)
Imagen, foto o portada de Fenomenal de L-Gante, Noriel, Negro Dub (Letra, Música)
Fenomenal de L-Gante, Noriel, Negro Dub (Letra, Música)
Imagen, foto o portada de El Case de Hozwal (Letra, Música)
El Case de Hozwal (Letra, Música)
Imagen, foto o portada de Pecado Original de María José (Letra, Música)
Pecado Original de María José (Letra, Música)
Imagen, foto o portada de Agradecido de Don Omar (Letra, Música)
Agradecido de Don Omar (Letra, Música)
Imagen, foto o portada de Siempre Le Meto Bellako de Yozuel, Rvsell (Letra, Música)
Siempre Le Meto Bellako de Yozuel, Rvsell (Letra, Música)
Imagen, foto o portada de Gafas de Sol de Lérica (Letra, Música)
Gafas de Sol de Lérica (Letra, Música)
Imagen, foto o portada de Envidia de Neutro Shorty, Ovi (Letra, Música)
Envidia de Neutro Shorty, Ovi (Letra, Música)
Imagen, foto o portada de Ulala de Myke Towers, Daddy Yankee (Letra, Música)
Ulala de Myke Towers, Daddy Yankee (Letra, Música)
Imagen, foto o portada de VICTORIA de Izaak, Lenny Tavarez (Letra, Música)
VICTORIA de Izaak, Lenny Tavarez (Letra, Música)
Imagen, foto o portada de Frío de NICKI NICOLE (Letra, Música)
Frío de NICKI NICOLE (Letra, Música)
Imagen, foto o portada de Si Yo Me Muero de Anuel AA, Mvsis (Letra, Música)
Si Yo Me Muero de Anuel AA, Mvsis (Letra, Música)
Imagen, foto o portada de Eres de Manuel Carrasco (Letra, Música)
Eres de Manuel Carrasco (Letra, Música)
Imagen, foto o portada de Necio de Paulo Londra, Lit Killah (Letra, Música)
Necio de Paulo Londra, Lit Killah (Letra, Música)
Imagen, foto o portada de Freestyle de Darkiel, Nino Freestyle, Jon Z (Letra, Música)
Freestyle de Darkiel, Nino Freestyle, Jon Z (Letra, Música)
Imagen, foto o portada de Baila En La 42 de Nacho, Don Forty Five, Mercenario Musik (Letra, Música)
Baila En La 42 de Nacho, Don Forty Five, Mercenario Musik (Letra, Música)
Imagen, foto o portada de NOTEVI de Noreh, Jimmix (Letra, Música)
NOTEVI de Noreh, Jimmix (Letra, Música)
Imagen, foto o portada de Fiesta del Amor (feat. Fabianporti) de MarLo La Letra (Letra, Música)
Fiesta del Amor (feat. Fabianporti) de MarLo La Letra (Letra, Música)
Imagen, foto o portada de Desorden de Sharlene (Letra, Música)
Desorden de Sharlene (Letra, Música)
Imagen, foto o portada de Vaina Bacana de Martina La Peligrosa (Letra, Música)
Vaina Bacana de Martina La Peligrosa (Letra, Música)
Imagen, foto o portada de Mi Rival de Karen Méndez (Letra, Música)
Mi Rival de Karen Méndez (Letra, Música)
Imagen, foto o portada de Pa La Vuelta de ITZZA PRIMERA, Cauty (Letra, Música)
Pa La Vuelta de ITZZA PRIMERA, Cauty (Letra, Música)
Imagen, foto o portada de Bayamón de Elena Rose (Letra, Música)
Bayamón de Elena Rose (Letra, Música)
Imagen, foto o portada de Tu Cariñito de Olga Tañón (Letra, Música)
Tu Cariñito de Olga Tañón (Letra, Música)
Imagen, foto o portada de Judas de Pipe Calderón (Letra, Música)
Judas de Pipe Calderón (Letra, Música)
Imagen, foto o portada de Indestructible de Le Coco (Letra, Música)
Indestructible de Le Coco (Letra, Música)
Imagen, foto o portada de QUIÉN SABE de Joey Montana, El Zeta (Letra, Música)
QUIÉN SABE de Joey Montana, El Zeta (Letra, Música)
Imagen, foto o portada de Aroma de Brytiago, Lenny Tavárez, Beéle (Letra, Música)
Aroma de Brytiago, Lenny Tavárez, Beéle (Letra, Música)
Imagen, foto o portada de Sueños (feat. La Tinta) de AnnyBell, Sixto Rein, La Tinta (Letra, Música)
Sueños (feat. La Tinta) de AnnyBell, Sixto Rein, La Tinta (Letra, Música)
Imagen, foto o portada de Peru - Spanish Version (Remix) de Jay Maly (Letra, Música)
Peru - Spanish Version (Remix) de Jay Maly (Letra, Música)
Imagen, foto o portada de Quemando Money de Freitas (Letra, Música)
Quemando Money de Freitas (Letra, Música)
Imagen, foto o portada de Underground de Emilia (Letra, Música)
Underground de Emilia (Letra, Música)
Imagen, foto o portada de Sin Ti de Agus Padilla, Lauta, Migrantes (Letra, Música)
Sin Ti de Agus Padilla, Lauta, Migrantes (Letra, Música)
Imagen, foto o portada de Presidentes Muertos (feat. YOVNGCHIMI) de Casper Mágico, Anuel AA, Bryant Myers (Letra, Música)
Presidentes Muertos (feat. YOVNGCHIMI) de Casper Mágico, Anuel AA, Bryant Myers (Letra, Música)
Imagen, foto o portada de Intensa de Danny Romero (Letra, Música)
Intensa de Danny Romero (Letra, Música)
Imagen, foto o portada de La Clave de Luis Figueroa (Letra, Música)
La Clave de Luis Figueroa (Letra, Música)
Imagen, foto o portada de Delirio Y Tortura (feat. Luar La L) de Brray, Luar La L (Letra, Música)
Delirio Y Tortura (feat. Luar La L) de Brray, Luar La L (Letra, Música)
Imagen, foto o portada de Dubai de IAmChino, Rafa Pabön (Letra, Música)
Dubai de IAmChino, Rafa Pabön (Letra, Música)
Imagen, foto o portada de Mi Felicidad de j mena (Letra, Música)
Mi Felicidad de j mena (Letra, Música)
Imagen, foto o portada de Benzo de Messiah (Letra, Música)
Benzo de Messiah (Letra, Música)
Imagen, foto o portada de SOMOS NOSOTROS de REI (Letra, Música)
SOMOS NOSOTROS de REI (Letra, Música)
Imagen, foto o portada de Lágrimas de Champan de Gente De Zona, Dale Pututi, El Carli (Letra, Música)
Lágrimas de Champan de Gente De Zona, Dale Pututi, El Carli (Letra, Música)
Imagen, foto o portada de CAIRO de Karol G, Ovy On The Drums (Letra, Música)
CAIRO de Karol G, Ovy On The Drums (Letra, Música)
Imagen, foto o portada de Puntos Débiles de Omy de Oro, Brytiago (Letra, Música)
Puntos Débiles de Omy de Oro, Brytiago (Letra, Música)
Biografías
 
Leng. De Program.
 
Listas De Páginas
 
Lo+ Visto
Lenguajes De Programación
  1. Enorable
  2. Lenguajes De Programación
  3. Php
11
 
27/02/2021 |  vistas:

Código php para páginas en diferentes idiomas o dirigidas a distintas regiones

Código php para páginas en diferentes idiomas o dirigidas a distintas regionesUna clase en php para trabajar con diferentes idiomas las páginas de nuestro sitio web tomando en cuenta las distintas regiones a las cuales se quiere llegar.

Ya es algo normal que los clientes nos exijan que las páginas de sus sitios web se puedan establecer correctamente en diferentes idiomas o que vayan dirigidas a distintas regiones, y la razón de ello es poder mostrar ciertos mensajes en las páginas que de acuerdo a la configuración regional del equipo que manejan los usuarios, estos puedan comprender enteramente el contenido que se les presenta.

Supongamos que un cliente establecido en la ciudad de Miami quiere un sitio web que se pueda mostrar en los idiomas inglés y español, y dependiendo de la versión que elijan los usuarios que visiten su negocio online se pueda mostrar la descripción de los productos que ofrecen en el idioma que puedan comprender. Es por ello que he creado un código en php que permite cumplir a cabalidad dicha funcionalidad.

Esto se puede lograr sin muchas complicaciones mediante el uso de una sesión y de un parámetro que ha de pasarse a través de la URL del navegador, y así mostrar la lógica y el funcionamiento del código que necesitamos implementar para satisfacer dicho requerimiento.

Para comprender el código es necesario conocer lo siguiente:

  • Se requieren conocimientos básicos de HTML y php.
  • El código implementado fue probado en la versión 7.3 de php y un entorno de prueba de Apache

El recurso consta principalmente de un archivo llamado «language.class.php», el cual contiene la clase «language» que se extiende de una clase genérica llamada «general».

Puede comprobar el resultado a través de una demostración en vivo.

Así debe ir nuestro archivo «language.class.php»

<?php

/////////////////////////
// language.class.php //
/////////////////////////

/**
* Clase que crea o mantiene una sesión con el idioma ("en", "es", "fr", "pt") de la página web
*
* @class language
* @constructor
* @extends general
* @methods language_session_start
* @variables public $hl
*/

class language extends general {

public $hl = '';

/**
* @resume constructor que llama función o método language_session_start( $lang )
*/

public function __construct( $lang = 'es' ) {
$this->hl = $this->language_session_start( $lang );
}

/**
* @resume establece el lenguaje de la sesión del usuario en el navegador
* @param $lang
* @return $_SESSION['hl']
* @variables array $optlang
*/

public function language_session_start( $lang = 'es' ) {

// Inicializar la sesión del usuario si no está activa

if ( session_id() == '' && !isset( $_SESSION ) ) { session_start(); }

// $optlang almacena las opciones de los lenguajes admitidos

$optlang = array( 'en' => 'en', 'es' => 'es', 'fr' => 'fr', 'pt' => 'pt' );

// Si se recibe una opción no existente en $optlang
// Entonces se asume la opción predeterminada en el parámetro $lang

if( in_array( $lang, array_keys( $optlang ) ) ) $default = $optlang[$lang];

// Controla el valor de la sesión según la variable ?hl pasada por la URL

if( empty( $_SESSION['hl'] ) ) {

// Si la variable ?hl no está definida y validada correctamente
// Entonces se asume el valor del parámetro $lang
// En caso contrario se asigna el valor de $lang a la $_SESSION['hl']

if( !$this->get_g_vars( 'hl' ) || !$this->validates( 'twoLetters', $this->get_g_vars( 'hl' ) ) ) {
$_SESSION['hl'] = $default; // Asignando el valor del parámetro $lang
} else {
if( in_array( $this->get_g_vars( 'hl' ), array_keys( $optlang ) ) ) {
$_SESSION['hl'] = $optlang[$this->get_g_vars( 'hl' )]; // Asignando ?hl a $_SESSION['hl']
} else {
$_SESSION['hl'] = $default; // Asignando el valor del parámetro $lang
}
}
} else {

// Si la sesión $_SESSION['hl'] está activa
// Y no ha cambiado el valor de ?hl a través de la URL
// Entonces se mantiene, de lo contrario, se limpia la sesión
// Se verifica el nuevo valor de ?hl
// Se asigna el nuevo valor a $_SESSION['hl'] o
// Se asume el valor predeterminado de $lang

if( $this->get_g_vars( 'hl' ) && $this->validates( 'twoLetters', $this->get_g_vars( 'hl' ) ) ) {
if( $_SESSION['hl'] !== $this->get_g_vars( 'hl' ) ) {
unset( $_SESSION['hl'] ); // Limpia la sesión
if( in_array( $this->get_g_vars( 'hl' ), array_keys( $optlang ) ) ) {
$_SESSION['hl'] = $optlang[$this->get_g_vars( 'hl' )]; // Asignando ?hl a $_SESSION['hl']
} else {
$_SESSION['hl'] = $default; // Asignando el valor del parámetro $lang
}
}
} else {
if( empty( $_SESSION['hl'] ) ) $_SESSION['hl'] = $default; // Asignando el valor del parámetro $lang
}
}
return mb_strtolower( $_SESSION['hl'], 'UTF-8' ); // Retorna el valor de $_SESSION['hl']
}
}

/**
* Clase de uso genérico con las funciones o métodos que necesitamos
* @class general
* @methods define_g_vars, get_g_vars, validates
* @variables private $gvars
*/

class general {

private $gvars = array();

protected function define_g_vars(){
if( isset( $_REQUEST ) ) {
foreach( $_REQUEST as $key => $val ) {
$this->gvars[$key] = $val;
}
}
}

protected function get_g_vars( $key ) {
$this->define_g_vars();
return ( isset( $this->gvars[$key] ) ) ? $this->gvars[$key] : false;
}

protected function validates( $type, $string, $is_nullable = 'NO' ) {
$empty = '';
if( !isset( $type ) || !isset( $string ) || !isset( $is_nullable ) ) return;
if( $is_nullable == 'YES' && empty( $string ) ) return true;
if( ($is_nullable == 'YES' && !empty( $string ) ) OR ( $is_nullable == 'NO' ) ) $empty = ( !empty( $string ) );
switch( $type ) {
case 'twoLetters':
if( $empty
&& isset( $string )
&& preg_match_all( '/^[a-z]{2}$/i',$string, $coin ) ) {
/* print_r($coin); */
return true;
} else { return false; }
}
}

}

?>

Ahora que ya tenemos creado el archivo con las clases, procedemos a crear dos archivos adicionales en php para poner a prueba la funcionalidad de nuestro recurso a través del navegador web.

Así deben ir nuestros dos archivos php (ej, archivo1.php y archivo2.php):

<?php

require_once( "./language.class.php" );
$lang = new language( 'en' );
$hl = $lang->hl;

var_dump( $_SESSION['hl'] );
echo "<br /><br />";
echo ( ( $hl == "es" )
? "Lenguaje del sitio establecido para español"
: ( ( $hl == "en" )
? "Site language set for english"
: ( ( $hl == "fr" )
? "Langue du site définie pour le français"
: ( ( $hl == "pt" )
? "Idioma do site definido para português"
: "No definido" ) ) ) );
echo "<br /><br />";

?>

Explicación de nuestros archivos de navegación php.

Los dos archivos php creados deben contener un objeto inicializado con el valor de la clase «language», no sin antes invocar el recurso principal «language.class.php».

require_once( "./language.class.php" );
Esta línea llama el archivo donde está ubicada nuestra clase.

$lang = new language( 'en' );
Inicializamos nuestro objeto.

$hl = $lang->hl;
Asignamos el valor de $lang->hl (propiedad de nuestro objeto) a la variable $hl.

Con archivo1.php y archivo2.php lo que buscamos es evaluar el valor de la sesión cuando pasemos de un archivo a otro; en el navegador podemos hacer uso de la variable «hl» de la siguiente manera: archivo.php?hl=en o archivo.php?hl=es o archivo.php?hl=fr o archivo.php?hl=pt.
Consulta Lo+ Top de Lenguajes De Programación
Todos los titulares en un solo lugar...