¿Cuál es la mejor manera de traducir el lenguaje de fechas en OpenCart?

Desafortunadamente, OpenCart no es 100% conocido internacionalmente, y esto causa un problema con las fechas. Debe saber que OpenCart no mantiene traducciones separadas de meses y fechas, sino que depende de la función de formato de fecha de PHP.

El método que sugiero le permitirá mostrar nombres de días y meses en el idioma local, pero en caso de que tenga una tienda web en varios idiomas, este cambio se propagará a todas las versiones de idioma.

El formato de fecha se especifica en el archivo de idioma para cada idioma. Además, se especifica por separado para el front-end y el back-end.

En el ejemplo de inglés (para versiones de OpenCart anteriores a 2.2.x):

/public_html/catalog/language/english/english.php
/public_html/admin/language/english/english.php

Desde OpenCart 2.2.x, los archivos de idioma se agrupan según la configuración regional en lugar del nombre del idioma, por lo que los archivos para inglés (Reino Unido), por ejemplo, se encuentran en:

/public_html/catalog/language/en_GB/english.php
/public_html/admin/language/en_GB/english.php

Debe seleccionar el idioma predeterminado para su sitio web y editar sus traducciones .php correspondientes. Dentro de cada uno de los dos archivos de idioma principales tiene los siguientes parámetros de configuración regional disponibles:

// Locale
$ _ [‘code’] = ‘en’;
$ _ [‘direction’] = ‘ltr’;
$ _ [‘date_format_short’] = ‘d / m / Y’;
$ _ [‘date_format_long’] = ‘l dS F Y’;
$ _ [‘time_format’] = ‘h: i: s A’;
$ _ [‘datetime_format’] = ‘d / m / YH: i: s’;
$ _ [‘decimal_point’] = ‘.’;
$ _ [‘mil_puntos’] = ‘,’;

Date_format_short y date_format_long le permiten especificar el formato de la fecha tal como la utiliza la función date () de PHP.

Hasta donde yo sé, OpenCart no permitirá configurar la configuración regional desde el panel de control o no, por lo que debe configurar la configuración regional para el host web a través del archivo .htaccess (he dado el ejemplo para mi propio idioma, se adaptará a la tuya):

SetEnv LC_TIME bg_BG.UTF-8

(Tenga en cuenta que lo anterior funcionará para Apache usando CGF / FCGI pero no para mod_php regular, o para php-fpm. Tampoco funcionará con Ngnix. Si usa alguno de estos, debe investigar más a fondo cómo configurar las variables de entorno PHP .)

Después de este ajuste, el nombre del día o mes aparecerá en el idioma que desee.

Como dije anteriormente, esta solución no es efectiva si su tienda web OpenCart admite múltiples idiomas. Cuando sus visitantes seleccionen un idioma diferente en el menú desplegable, las fechas seguirán formateadas de acuerdo con el formato local.

Para cambiar este comportamiento, debe refactorizar todos los fragmentos de código donde OpenCart usa fechas, y formatear la salida de fecha usando IntlDateFormatter, o escribir algún código que cambie la configuración regional sobre la marcha cuando el usuario cambia el idioma desde el menú desplegable . Cómo se puede implementar esto está más allá de mi capacidad de explicar aquí.