🌐 CLDR — formatos de moneda, fecha y numero
Actualizado: 2024-12-01
CLDR (Common Locale Data Repository) es el estandar que PrestaShop 1.7+ usa para formatear precios, fechas y numeros segun la configuracion regional. Reemplazo al sistema antiguo de formatos hardcoded.
#Que es CLDR en PrestaShop
Sistema CLDR
php
<?php
// ── PrestaShop usa CLDR para formatear precios automaticamente ──
// El formato depende del locale del idioma activo:
// es-ES: 29,99 €
// en-US: €29.99
// de-DE: 29,99 €
// ja-JP: €29.99
// ── Obtener el locale actual ──
$locale = Context::getContext()->language->locale; // 'es-ES'
// ── Formatear precio usando el servicio de locale ──
// En Symfony (PS 1.7.6+):
$priceFormatter = $this->get('prestashop.core.localization.locale.context_locale');
$formatted = $priceFormatter->formatPrice(29.99, 'EUR');
// Resultado: "29,99 €" (en es-ES)
// ── En un modulo (sin inyeccion de dependencias) ──
use PrestaShop\PrestaShop\Core\Localization\Locale\Locale;
$locale = Context::getContext()->getCurrentLocale();
if ($locale) {
$formatted = $locale->formatPrice(29.99, 'EUR');
}
// ── Formatear numero ──
$formatted = $locale->formatNumber(12345.67);
// es-ES: 12.345,67
// en-US: 12,345.67
#Formatos de precio y moneda
| Locale | Formato precio | Separador decimal | Separador miles | Posicion simbolo |
|---|---|---|---|---|
| es-ES | 29,99 € | Coma | Punto | Despues |
| en-US | $29.99 | Punto | Coma | Antes |
| en-GB | £29.99 | Punto | Coma | Antes |
| fr-FR | 29,99 € | Coma | Espacio | Despues |
| de-DE | 29,99 € | Coma | Punto | Despues |
| pt-BR | R$ 29,99 | Coma | Punto | Antes |
#Formatos de fecha
Formatear fechas segun locale
php
<?php
// ── PrestaShop usa los formatos de fecha del idioma ──
$lang = Context::getContext()->language;
echo $lang->date_format_lite; // 'd/m/Y' para es-ES
echo $lang->date_format_full; // 'd/m/Y H:i:s' para es-ES
// ── Formatear fecha ──
$date = Tools::displayDate('2024-12-25 14:30:00');
// Resultado segun locale: "25/12/2024" (es), "12/25/2024" (en-US)
$dateFull = Tools::displayDate('2024-12-25 14:30:00', null, true);
// Con hora: "25/12/2024 14:30:00"
// ── En Smarty ──
// {$order.date_add|date_format:'%d/%m/%Y'}
// O usar el helper de PS:
// {dateFormat date=$order.date_add full=true}
#Personalizar formatos
Personalizar formatos regionales
text
BO → Localizacion → Idiomas → Editar idioma
- Formato de fecha: d/m/Y (personalizable)
- Formato de fecha completo: d/m/Y H:i:s
- Estos formatos se usan en todo el front y BO
BO → Localizacion → Monedas → Editar moneda
- Formato: #,##0.00 (patron CLDR)
- Simbolo: €
- Codigo ISO: EUR
- Precision decimal: 2
NOTA: Los formatos CLDR se pueden sobreescribir
por idioma en la base de datos:
ps_lang.date_format_lite
ps_lang.date_format_full
ps_currency.pattern
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.