TextLocalizer
Para traducir un texto puntual que necesita datos dinamicos
¿Que hace?
El TextLocalizer es un componente opcional que se añade a un texto individual cuando ese texto necesita algo especial que el CanvasLocalizer no puede hacer:
- Insertar datos dinamicos como el nombre del jugador, un contador, una puntuacion...
- Aplicar formato (negrita, color, tamaño) que depende del idioma.
Para textos normales (titulos, botones, etiquetas) no necesitas TextLocalizer: el CanvasLocalizer ya los gestiona automaticamente. Usa TextLocalizer solo cuando un texto cambia en tiempo real con valores que tu mundo calcula.
Cuando usar uno u otro
| CanvasLocalizer | TextLocalizer | |
|---|---|---|
| Para textos... | fijos (titulos, botones, etiquetas) | que cambian en tiempo real con datos del mundo |
| Cantidad | todos los textos del Canvas a la vez | uno por componente |
| Configuracion | automatica (escaneo) | manual (uno por uno) |
| ¿Necesita programar? | no | si, requiere un script UdonSharp que llame al componente |
Como configurarlo
Selecciona el GameObject que contiene el texto que quieres traducir y añade el componente TextLocalizer. En el inspector veras:
- Manager — arrastra aqui tu LocalizationManager (si solo hay uno en la escena, se rellena solo).
- Clave de traduccion — el identificador que quieres usar en el archivo JSON. Por ejemplo:
welcome_message. - Prefijo / Sufijo — texto que quieres añadir antes o despues de la traduccion (opcional).
- Formato rich text — permite envolver la traduccion en etiquetas TMP, por ejemplo para ponerla en negrita o de color.
El componente detecta solo si el GameObject tiene un texto TMP o un texto Legacy, no tienes que decirselo.
Datos dinamicos en las traducciones
Si quieres mostrar un texto como "Hola, Bender. Tienes 5 mensajes" donde "Bender" y "5" cambian segun el jugador, escribe la traduccion en el JSON con marcadores {0}, {1}, {2}:
{
"es": { "welcome": "Hola {0}, tienes {1} mensajes" },
"en": { "welcome": "Hello {0}, you have {1} messages" },
"ja": { "welcome": "こんにちは{0}、{1}件のメッセージがあります" }
}
Despues, desde tu script UdonSharp, llamas al TextLocalizer y le pasas los valores:
// Desde otro script UdonSharp:
textLocalizer.SetParams2("Bender", "5");
// En español: "Hola Bender, tienes 5 mensajes"
// En japones: "こんにちはBender、5件のメッセージがあります"
Tienes tres metodos segun cuantos valores quieras inyectar:
SetParams("Bender")— un solo valor ({0})SetParams2("Bender", "5")— dos valores ({0}y{1})SetParams3("Bender", "5", "20")— tres valores ({0},{1}y{2})
Pluralizacion (singular / plural)
Si necesitas textos como "1 mensaje" vs "5 mensajes", escribe varias variantes en el JSON con los sufijos _zero, _one y _other:
{
"es": {
"messages_zero": "Sin mensajes",
"messages_one": "{n} mensaje",
"messages_other": "{n} mensajes"
}
}
El marcador {n} se sustituye automaticamente por el numero. Para usar pluralizacion necesitas llamar al manager desde tu script con GetPluralValue("messages", 5).