Skip to content

Runtime API (ES)

Esta es la referencia de runtime orientada al uso en producción.

Punto de entrada recomendado

Usa HyperPOLocalization en lugar de llamar LanguageManager directamente:

csharp
using Hyper.POLocalization;

titleLabel.text = HyperPOLocalization.GetString("Quest Title");

Ventajas:

  • Resuelve automáticamente el LanguageManager.
  • Tiene fallback seguro si no hay manager activo.
  • Mantiene el código de gameplay desacoplado.

Métodos más usados

Singular

csharp
HyperPOLocalization.GetString("Need {0} items", "3");

Para entradas normales msgid / msgstr.

Contexto

csharp
HyperPOLocalization.GetStringContext("menu", "Open");
HyperPOLocalization.GetStringContext("hud", "Open");

Para claves con distinto significado por contexto (msgctxt).

Plural

csharp
HyperPOLocalization.GetPlural(
    "{0} apple in bag",
    "{0} apples in bag",
    appleCount,
    appleCount.ToString());

Para msgid_plural + msgstr[n].

Plural con contexto

csharp
HyperPOLocalization.GetPluralContext(
    "inventory",
    "{0} apple in bag",
    "{0} apples in bag",
    appleCount,
    appleCount.ToString());

Atributos de metadata para extracción

Si usas extracción basada en assets y quieres metadata explícita para traductores, revisa:

  • Documentation/ExtractionAttributes_ES.md

Estado útil en runtime

csharp
if (!HyperPOLocalization.IsReady)
{
    // Fallback opcional de UI
}
csharp
LanguageManager manager = HyperPOLocalization.Manager;

Usa Manager solo cuando necesites control explícito del idioma.

Cambio manual de idioma

csharp
using Hyper.POLocalization;
using UnityEngine;

public class LanguageSwitcher : MonoBehaviour
{
    [SerializeField] private LanguageManager manager;

    public void SetSpanish()
    {
        bool exactMatch = manager.SetLanguage("es_ES", allowFallback: true, rescan: true);
        Debug.Log($"Idioma activo: {manager.currentLanguage} | Match exacto: {exactMatch}");
    }
}

Llamadas comunes:

  • SetLanguage(languageCode, allowFallback, rescan)
  • ScanAvailableLanguages()
  • HasLanguage(languageCode)

Convención de archivos de idioma

Carpeta por defecto:

  • StreamingAssets/Languages

Ejemplos:

  • en_US.po
  • es_ES.po
  • pt_BR.po

Los códigos se normalizan de - a _ (por ejemplo en-US -> en_US).