Para quienes deseen agregar idiomas personalizados y traducciones a un tema o componente de tema de Discourse, ahora pueden incluir cadenas localizadas, 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 o de los plugins, y pueden utilizarse 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álidos, con una única clave de nivel superior igual al idioma (locale) que se está definiendo. Estos pueden definirse 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 idioma de ejemplo podría verse así:
en:
theme_metadata:
description: "This is a description for my theme"
settings:
theme_setting_name: "This is a description for the setting `theme_setting_name`"
another_theme_setting_name:
description: "This is a description for the setting `another_theme_setting_name`"
sidebar:
welcome: "Welcome"
back: "back,"
welcome_subhead: "We're glad you're here!"
likes_header: "Share the Love"
badges_header: "Your Top Badges"
full_profile: "View your full profile"
Los administradores pueden sobrescribir claves individuales por tema en la interfaz de usuario de /admin/customize/themes. El mecanismo de respaldo (fallback) se maneja de la misma manera que en el núcleo, por lo que está bien tener traducciones incompletas para idiomas que no sean el inglés; se utilizarán las claves en inglés.
Los administradores también pueden gestionar estas traducciones en Apariencia → Textos del sitio. Seleccione un tema o componente para buscar sus cadenas de archivo de idioma, edite una traducción en el idioma seleccionado o revierta una sobrescritura al valor predeterminado del archivo de idioma. La selección es enlazable usando /admin/customize/site_texts?theme_id=THEME_ID. Los textos del sitio identifican estas entradas como js.theme_translations.THEME_ID.KEY; las ediciones utilizan las mismas sobrescrituras de traducción del tema que el editor de temas.
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 debe codificar de forma fija el theme_id en el código de su tema. Para construir dinámicamente la clave de traducción, use el helper themePrefix:
import { i18n } from "discourse-i18n";
import { themePrefix } from "virtual:theme";
// In JS code:
const result = i18n(themePrefix("my_translation_key"));
console.log("From Javascript", result);
// In a template tag:
<template>{{i18n (themePrefix "blah")}}</template>
Para un ejemplo completo del uso de traducciones en un tema, consulte el tema Fakebook de @awesomerobot: GitHub - discourse/Fakebook · GitHub
Este documento está bajo control de versiones - sugiera cambios en github.


