# Localización

{% hint style="info" %}

#### Localización

La localización del esquema permite que tu cubo OLAP Mondrian se muestre en varios idiomas. En lugar de codificar directamente "Sales" o "Customer" en tu esquema, utilizas marcadores de posición (llamados tokens) que se reemplazan con la traducción apropiada según la preferencia de idioma de cada usuario.&#x20;

Piénsalo como combinar correspondencia para análisis: un esquema sirve para muchos idiomas.
{% endhint %}

marcador de posición para captura de pantalla del cubo localizado:

{% tabs %}
{% tab title="Tokenización" %}
{% hint style="info" %}

#### Tokenización

**Tokenización** es el proceso de reemplazar texto real como "Sales" por marcadores de posición como `%{sales.caption}` en tu archivo XML de esquema. Estos tokens actúan como variables que se completarán más adelante.
{% endhint %}

{% hint style="danger" %}

#### La Regla de Oro

Esta es la regla más importante en la localización de esquemas. Debes **solo** localizar los captions (el texto que ven los usuarios) y las descripciones. **Never** localizar los nombres técnicos que Mondrian usa internamente.

Por ejemplo, en `<Dimension name="Customer" caption="...">`, el `name="Customer"` siempre debe permanecer "Customer" en todos los idiomas, pero el `caption` puede cambiar a "Client" en francés. El name es para el sistema; el caption es para los usuarios.

Lo mismo se aplica a niveles, medidas y jerarquías. Siempre mantén los names estables y solo traduce lo que aparece en pantalla mediante captions.

**Por qué importa esta Regla ..!**

**Problemas de rendimiento**: Si localizas los names, la caché de Mondrian se rompe cada vez que alguien cambia de idioma. Los nombres de los miembros siguen cambiando, obligando al sistema a reconstruir las cachés constantemente. Esto hace que tus análisis sean increíblemente lentos.

**Fallos de consulta**: Un usuario francés escribe una consulta que referencia "\[Client].\[Europe]". Un usuario inglés intenta ejecutarla, pero su sistema está buscando "\[Customer].\[Europe]" – la consulta falla. Mantener los names consistentes significa que las consultas funcionan independientemente del idioma.

**Pesadilla de mantenimiento**: Imagina actualizar una dimensión referenciada por 50 consultas, pero tienes que hacerlo en 5 idiomas con nombres diferentes. Pasarás horas rastreando qué nombre va en cada lugar. Los names estables significan que solo actualizas una vez.
{% endhint %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Schema name="ClassicModels"
  caption="%{classicmodels.schema.caption}"
  description="%{classicmodels.schema.description}">
...
```

{% hint style="info" %}

### Qué localizar vs. Qué dejar intacto

**LOCALIZA** (estos son para que los usuarios los vean):

* Captions de dimensión, jerarquía, nivel y medida
* Texto de descripción
* Etiquetas y títulos visibles para el usuario

**NO localices** (estos son para el sistema):

* Nombres de dimensión, jerarquía, nivel y medida (el `name=` atributo)
* Nombres de columnas de la base de datos
* Nombres de tablas de la base de datos
* Identificadores técnicos

Piénsalo así: si está en un `caption=` o `description=` atributo, localízalo. Si está en un `name=` o `column=` atributo, déjalo intacto. Esta separación mantiene tu esquema funcionando sin problemas mientras ofrece a los usuarios su idioma preferido.
{% endhint %}
{% endtab %}

{% tab title="Paquetes de mensajes" %}
{% hint style="info" %}

#### Paquetes de mensajes

**Paquetes de mensajes** son archivos de texto simples (uno por idioma) que contienen las traducciones reales. Por ejemplo, `MondrianMessages_en.properties` tiene "Sales" mientras que `MondrianMessages_fr.properties` tiene "Ventes" para el mismo token.
{% endhint %}

```
classicmodels.schema.caption=Modèles Classiques
classicmodels.schema.description=La description
classicmodels.measures.caption=Mesures
classicmodels.measures.sales.caption=Ventes
classicmodels.dimension.customers.caption=CLIENTS
classicmodels.dimension.customers.description=La description
...
```

{% hint style="info" %}

### Buenas prácticas para archivos de propiedades

* Usa codificación UTF-8 para caracteres especiales
* Agrega comentarios para organizar secciones
* Mantén nombres de tokens consistentes en todos los archivos de idioma
* Prueba que todos los tokens tengan traducciones correspondientes
* Evita saltos de línea en los valores de las propiedades
* Escapa caracteres especiales con barra invertida si es necesario
  {% endhint %}

x
{% endtab %}

{% tab title="Procesador de Esquema Dinámico" %}
{% hint style="info" %}

#### Procesador de Esquema Dinámico

**Procesador de Esquema Dinámico** es el motor que realiza el reemplazo. Cuando un usuario francés abre Analyzer, lee tu esquema, encuentra todos los `%{...}` tokens, los busca en el archivo de propiedades en francés y los reemplaza con texto en francés – todo automáticamente.
{% endhint %}

x

x
{% endtab %}

{% tab title="Locale" %}
{% hint style="info" %}

#### Locale

**Locale** simplemente es un código de idioma como "en" para inglés o "fr" para francés que le indica al sistema qué archivo de traducción usar.
{% endhint %}

x
{% endtab %}

{% tab title="Segunda pestaña" %}

{% endtab %}
{% endtabs %}
