Para aquellos que buscan añadir idiomas y traducciones personalizadas a un tema o componente de tema de Discourse, ahora pueden incluir cadenas localizables, que se ponen a disposición para su uso en componentes de la interfaz de usuario. Las traducciones se almacenan en el mismo formato que las traducciones del núcleo/plugin y se pueden usar de casi la misma manera.
Los temas pueden proporcionar archivos de traducción en un formato como /locales/{locale}.yml. Estos archivos deben ser YAML válido, con una única clave de nivel superior igual a la localización que se está definiendo. Estas se pueden definir usando la CLI discourse_theme, importando un .tar.gz, instalando desde un repositorio GIT, o a través del editor en theme-creator.discourse.org.
Un archivo de localización de ejemplo podría verse así:
en:
theme_metadata:
description: "Esta es una descripción para mi tema"
settings:
theme_setting_name: "Esta es una descripción para la configuración `theme_setting_name`"
another_theme_setting_name:
description: "Esta es una descripción para la configuración `another_theme_setting_name`"
sidebar:
welcome: "Bienvenido"
back: "atrás,"
welcome_subhead: "¡Estamos encantados de que estés aquí!"
likes_header: "Comparte el Amor"
badges_header: "Tus Mejores Insignias"
full_profile: "Ver tu perfil completo"
Los administradores pueden anular claves individuales por tema en la interfaz de usuario /admin/customize/themes. La reserva se maneja de la misma manera que el núcleo, por lo que está bien tener traducciones incompletas para idiomas que no sean inglés, ya que se utilizarán las claves en inglés.
En segundo plano, estas traducciones se almacenan junto con las traducciones del núcleo, bajo un espacio de nombres específico del tema. Por ejemplo:
theme_translation.{theme_id}.sidebar.welcome
Nunca debes codificar la theme_id en el código de tu tema, por lo que hay varias formas de ayudarte a acceder a las traducciones.
En archivos .hbs, puedes usar el helper dedicado
{{theme-i18n "my_translation_key"}}
O, si necesitas pasar la clave de traducción a otro componente, puedes usar el helper theme-prefix:
<DButton @label={{theme-prefix "my_translation_key"}} />
En Javascript, o en archivos .gjs, puedes usar la función themePrefix. Esta se inyecta automáticamente y no necesita ser importada:
const result = I18n.t(themePrefix("my_translation_key"));
<template>{{i18n (themePrefix "blah")}}</template>
Para un ejemplo completo de uso de traducciones en un tema, consulta el tema Fakebook de @awesomerobot: GitHub - discourse/Fakebook
Este documento está controlado por versiones: sugiere cambios en github.


