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/plugins 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) sendo definido. Eles podem ser definidos usando a CLI discourse_theme, importando um .tar.gz, instalando de um repositório GIT ou via editor em theme-creator.discourse.org.
Um arquivo de locale de exemplo pode se parecer com:
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 de 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 farão uso das chaves em inglês.
Administradores também podem gerenciar essas traduções em Aparência → Textos do site. Selecione um tema ou componente para pesquisar as strings do arquivo de locale, editar uma tradução no idioma selecionado ou reverter uma sobrescrita para o padrão do arquivo de locale. A seleção é vinculável 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 do 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.


