Localización#

La administración web está completamente localizada a inglés, español e italiano. El modelo es un idioma por imagen de firmware — no hay cambio de idioma en ejecución, y las cadenas de ningún otro idioma se compilan en una compilación dada.

Nota

Esto aplica a la administración web del firmware. Esta documentación está disponible por separado en los tres idiomas a la vez, con un selector de idioma por página — eso es una propiedad de la documentación, no del firmware.

Cómo funciona#

  • app_config.h define los códigos de idioma LANG_EN 0, LANG_ES 1, LANG_IT 2 y el LANGUAGE activo (por defecto LANG_EN).

  • translations/translations.h es el único lugar que decide qué lang_xx.h se incluye, vía ramas #if LANGUAGE == ….

  • Cada cadena visible al usuario en la administración web pasa por una macro TR_xxx. Hay 1045 de esas macros, y cada uno de los tres archivos lang_*.h define todas. 230 de ellas son las cadenas de ayuda contextual TR_H_xxx que hay tras el signo de interrogación que cierra cada etiqueta de opción, de modo que los globos de ayuda se traducen igual que las etiquetas que explican.

Seleccionar el idioma en compilación#

idf.py build                      # inglés (por defecto)
idf.py build -DLANGUAGE=LANG_ES   # español
idf.py build -DLANGUAGE=LANG_IT   # italiano

También puedes fijarlo en CMakeLists.txt (set(LANGUAGE LANG_ES) / target_compile_definitions) o cambiar el valor por defecto en app_config.h.

Añadir un idioma#

  1. Copia translations/lang_en.h → lang_xx.h, traduce cada literal, y mantén cada nombre de macro idéntico.

  2. #define LANG_XX <siguiente número libre> en app_config.h.

  3. Añade una rama #elif LANGUAGE == LANG_XX en translations.h.

  4. Compila con -DLANGUAGE=LANG_XX.

Importante

Que falte un TR_xxx en un idioma es un error de compilación en la compilación de ese idioma — intencionado, para que las cadenas sin traducir nunca puedan salir en silencio. Por eso los tres archivos lang_*.h siempre llevan exactamente el mismo conjunto de macros.