Condicionar, traducir, regionalizar
Un valor distinto según la pantalla, la máquina o el idioma.
Una condición sobre una propiedad
<text name="titre">
<fontSize if="crt">0.09</fontSize>
<fontSize if="!crt">0.05</fontSize>
<color>FFFFFF</color>
</text>
Un solo componente, dos tamaños según la pantalla. La lista de condiciones está en la página Mostrar bajo condición.
Una condición sobre el componente entero
<image name="filtre" if="crt">
<path>${root}/data/arts/scanlines.png</path>
</image>
El componente solo existe si la condición es verdadera. La lista completa está en Mostrar bajo condición, y Combinar varias condiciones explica y, o y los paréntesis.
ifexists e ifnotexists
Estos dos no comprueban la máquina sino la presencia de un archivo:
<image name="jaquette">
<path ifexists="${game.media.imagepath}">${game.media.imagepath}</path>
<path ifnotexists="${game.media.imagepath}">${root}/images/pas-dimage.png</path>
</image>
Es la forma limpia de gestionar los juegos sin carátula — sin eso la casilla queda vacía.
Traducir un texto
Basta un sufijo de idioma en la propiedad:
<text name="bienvenue">
<text>Bienvenue</text>
<text.en>Welcome</text.en>
<text.es>Bienvenido</text.es>
</text>
Recalbox toma la variante que corresponde, y la versión sin sufijo si ninguna corresponde.
Lo que acepta un sufijo
| Sufijo | A qué apunta |
|---|---|
.fr .es .de | el idioma de la máquina, en minúsculas |
.fr_FR | el idioma y el país |
.US .EU .JP | la región, en MAYÚSCULAS |
La región
Es lo que permite escribir «Genesis» en Estados Unidos y «Mega Drive» en Europa. El mismo mecanismo que el idioma, con un sufijo en mayúsculas — es lo que emplea el tema oficial de Recalbox:
<box name="fond"
color.US="2E447C"
color.EU="7C2E44"
color.JP="447C2E" />
Los tres valores son US, EU y JP. Una propiedad sin sufijo vale para todas las regiones.
⚠️ Siempre hay una región activa. En una máquina nueva es US: lo que escribas sin sufijo es lo que verá la mayoría, y .EU o .JP solo sirven para apartarse de ello.
La región se cambia en la máquina, en las propiedades de la interfaz — y Recalbox relee entonces el tema entero, como con una opción. El estudio ofrece la misma elección, para ver lo que verá cada público.
Sobre qué funciona: sobre TODO
No existe ninguna lista de propiedades traducibles. El sufijo se examina en cada propiedad antes incluso de que el motor sepa de cuál se trata — así que todas lo aceptan:
<text name="titre" text.fr="Bienvenue" text.es="Bienvenido" />
<image name="logo" path.US="genesis.png" path.EU="megadrive.png" />
<text name="mention" fontSize.de="0.03" /> <!-- el alemán es más largo -->
<box name="bandeau" color.JP="D62828" />
Las dos escrituras lo admiten — como atributo (size.fr="…") igual que como subnodo (<size.fr>…</size.fr>) — e incluso el nombre de la etiqueta (<text.fr name="…">). Vale también para el title y el help de una opción.
⚠️ La versión localizada gana definitivamente. En cuanto se ha aplicado una variante, la versión sin sufijo de la misma propiedad se rechaza, incluso en un archivo leído después. Una capa no puede por tanto «retomar el control» de una propiedad ya localizada: debe aportar su propia variante localizada.
Cargar un texto desde un archivo
text, scrolltext y markdown aceptan path en lugar de text: el contenido se lee entonces del archivo. Práctico para un texto largo de presentación.
<markdown name="apropos">
<path>${root}/data/textes/apropos.md</path>
</markdown>