Runtime
API Runtime
Referencia tecnica para programadores que escriben sus propios scripts UdonSharp
⚠
Esta pagina es solo para programadores. Si solo quieres traducir los textos de tu mundo, no necesitas leerla: usa el Flujo Automatico con los componentes LocalizationManager y CanvasLocalizer. Esta referencia es util solo si vas a escribir tu propio script UdonSharp que interactua con el sistema de localizacion.
Descripcion
Esta pagina documenta todos los metodos publicos disponibles para interactuar con el sistema de localizacion desde tus propios scripts UdonSharp. Todos los componentes estan en el namespace BenderDios.Idiomas.
using BenderDios.Idiomas;
LocalizationManager
Obtener traducciones
| Metodo | Retorno | Descripcion |
GetValue(string key) |
string |
Obtiene la traduccion de una clave. Cascada: idioma actual → fallback → otros idiomas → "[key]". |
GetPluralValue(string key, int count) |
string |
Traduccion con pluralizacion. Busca {key}_zero (count==0), {key}_one (count==1), {key}_other. Reemplaza {n} con count. |
Gestion de idioma
| Metodo | Retorno | Descripcion |
SetLanguage(string lang) |
void |
Cambia el idioma activo. Notifica a todos los localizadores y listeners. |
GetCurrentLanguage() |
string |
Devuelve el codigo del idioma activo (ej: "es", "ja"). |
GetAvailableLanguages() |
string[] |
Array con todos los codigos de idioma del JSON. |
GetLanguageCount() |
int |
Numero de idiomas disponibles. |
HasLanguage(string code) |
bool |
true si el idioma existe en el JSON. |
IsReady() |
bool |
true si el manager esta inicializado y listo. |
Registro de componentes
| Metodo | Retorno | Descripcion |
RegisterListener(UdonSharpBehaviour) |
void |
Registra un script para recibir _OnLanguageChanged. |
RegisterLocalizer(TextLocalizer) |
void |
Registra un TextLocalizer en runtime. |
RegisterCanvasLocalizer(CanvasLocalizer) |
void |
Registra un CanvasLocalizer en runtime. |
Metodos sin parametros (para SendCustomEvent)
Estos metodos existen porque SendCustomEvent de VRChat no soporta parametros. Ideales para conectar botones de UI.
| Metodo | Idioma |
SetLanguageAuto() | Deteccion automatica |
SetLanguageEnglish() | en — English |
SetLanguageSpanish() | es — Español |
SetLanguageJapanese() | ja — 日本語 |
SetLanguageKorean() | ko — 한국어 |
SetLanguageChineseSimplified() | zh-CN — 中文 (简体) |
SetLanguageChineseTraditional() | zh-TW — 中文 (繁體) |
SetLanguageRussian() | ru — Русский |
SetLanguagePortuguese() | pt-BR — Português |
SetLanguageFrench() | fr — Français |
SetLanguageGerman() | de — Deutsch |
SetLanguageCatalan() | ca — Català |
OnLanguageDropdownChanged() | Callback del dropdown TMP |
TextLocalizer
| Metodo | Retorno | Descripcion |
UpdateText() |
void |
Actualiza el texto con la traduccion actual. Se llama automaticamente. |
SetTranslationKey(string newKey) |
void |
Cambia la clave de traduccion y actualiza el texto. |
SetParams(string p0) |
void |
Establece {0} y actualiza. |
SetParams2(string p0, string p1) |
void |
Establece {0} y {1} y actualiza. |
SetParams3(string p0, string p1, string p2) |
void |
Establece {0}, {1} y {2} y actualiza. |
GetTranslationKey() |
string |
Devuelve la clave actual. |
GetManager() |
LocalizationManager |
Devuelve el manager. |
SetManager(LocalizationManager m) |
void |
Establece el manager manualmente. |
CanvasLocalizer
| Metodo | Retorno | Descripcion |
UpdateAllTexts() |
void |
Actualiza todos los textos del Canvas. Se llama automaticamente. |
GetCanvasId() |
string |
Devuelve el ID del Canvas. |
GetBaseLanguage() |
string |
Devuelve el idioma base. |
GetManager() |
LocalizationManager |
Devuelve el manager. |
GetTextCount() |
int |
Numero de textos gestionados. |
Evento _OnLanguageChanged
Los scripts registrados como listener reciben este evento via SendCustomEvent cada vez que cambia el idioma activo. No recibe parametros (limitacion de UdonSharp).
Ejemplo completo
using UdonSharp;
using UnityEngine;
using TMPro;
using BenderDios.Idiomas;
public class LanguageReactor : UdonSharpBehaviour
{
[SerializeField] private LocalizationManager _manager;
[SerializeField] private TextMeshProUGUI _customText;
void Start()
{
// Registrarse como listener
_manager.RegisterListener(this);
UpdateCustomText();
}
// Este metodo se llama automaticamente al cambiar idioma
public void _OnLanguageChanged()
{
UpdateCustomText();
}
private void UpdateCustomText()
{
string lang = _manager.GetCurrentLanguage();
string welcome = _manager.GetValue("custom_welcome");
_customText.text = welcome;
}
}
Formato del JSON
{
"en": {
"key1": "English text",
"key2": "Text with {0} parameter",
"messages_zero": "No messages",
"messages_one": "{n} message",
"messages_other": "{n} messages"
},
"es": {
"key1": "Texto en español",
"key2": "Texto con parametro {0}",
"messages_zero": "Sin mensajes",
"messages_one": "{n} mensaje",
"messages_other": "{n} mensajes"
}
}
Funcionalidades especiales en claves
| Funcionalidad | Sintaxis | Descripcion |
| Parametros |
{0}, {1}, {2} |
Reemplazados en runtime por SetParams() |
| Pluralizacion |
{key}_zero, {key}_one, {key}_other |
Variantes segun cantidad |
| Contador plural |
{n} |
Reemplazado con el valor de count |
| Rich text |
<color>, <b>, <i>, <size> |
Preservados durante la traduccion automatica |
| Saltos de linea |
\n |
Escapados en JSON, renderizados en Unity |