Para aqueles que desejam adicionar idiomas e traduções personalizados a um tema ou componente de tema do Discourse, eles agora podem incluir strings localizadas, que ficam disponíveis para uso em componentes de interface. As traduções são armazenadas no mesmo formato das traduções do núcleo/plugin e podem ser usadas de quase a mesma maneira.
Os temas podem fornecer arquivos de tradução em um formato como /locales/{locale}.yml. Esses arquivos devem ser YAML válidos, com uma única chave de nível superior igual ao idioma (locale) definido. Eles podem ser definidos usando a CLI discourse_theme, importando um .tar.gz, instalando a partir de um repositório GIT ou via editor em theme-creator.discourse.org.
Um arquivo de locale de exemplo pode ser assim:
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"
Administradores podem sobrescrever chaves individuais por tema na interface do usuário /admin/customize/themes. O fallback é tratado da mesma maneira que no núcleo, portanto, é aceitável ter traduções incompletas para idiomas não ingleses, pois as chaves em inglês serão utilizadas.
Administradores também podem gerenciar essas traduções em Aparência → Textos do site. Selecione um tema ou componente para buscar as strings do arquivo de locale, edite uma tradução no idioma selecionado ou reverta uma sobrescrita para o padrão do arquivo de locale. A seleção pode ser vinculada usando /admin/customize/site_texts?theme_id=THEME_ID. Os textos do site identificam essas entradas como js.theme_translations.THEME_ID.KEY; as edições usam as mesmas sobrescritas de tradução de tema que o editor de temas.
Em segundo plano, essas traduções são armazenadas junto com as traduções do núcleo, sob um namespace específico do tema. Por exemplo:
theme_translation.{theme_id}.sidebar.welcome
Você nunca deve codificar o theme_id diretamente no código do seu tema. Para construir dinamicamente a chave de tradução, use o 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 um exemplo completo de uso de traduções em um tema, confira o tema Fakebook do @awesomerobot: GitHub - discourse/Fakebook · GitHub
Este documento é controlado por versão - sugira alterações no github.


