Localizar addons é fácil.
Adicionando mensagens
Em addons-l10n/en/
, crie um arquivo chamado ADDONID.json
, mas substitua ADDONID pelo ID do seu addon (mesmo nome da pasta). Escreva as mensagens que você quer traduzir lá:
{
"ADDONID/meow": "Meow",
"ADDONID/cats": "{number, plural, one {1 cat} other {# cats}}",
"ADDONID/eat": "I want to eat {food}!",
"ADDONID/salmon": "salmon",
"ADDONID/sardine": "sardine",
"ADDONID/move-steps": {
"string": "move {number} steps",
"developer_comment": "Please translate this to match Scratch's official translation for the block."
}
}
Placeholders
Algumas mensagens precisam de partes geradas dinamicamente. Por exemplo, se você quiser mostrar o número de gatos, ou texto fornecido pelo usuário. Para lidar com isso, você pode usar placeholders assim {nomeDoPlaceholder}
. O nome do placeholder deve conter apenas letras (sem números).
Plurais
E se o placeholder for um número? Podemos usar plurais assim {nomeDoPlaceholder, plural, one {aqui só tem uma coisa} other {aqui tem # coisas}}
. Se o placeholder for 1, a mensagem mostrada será “aqui só tem uma coisa”, senão será “aqui tem (placeholder) coisas”.
Developer comments
Transifex will display the developer comment when a translator has selected the specified string. These comments are usually used to ask for a particular translation of the string or to provide additional information for languages that do not differentiate between uppercase and lowercase characters.
Usando as traduções
Mude a primeira linha do seu userscript de:
export default async function ({ addon, console }) {
para:
export default async function ({ addon, console, msg }) {
O msg
que foi adicionado é uma função que você pode usar para obter as traduções. Por exemplo, text = "Meow"
pode ser substituído por text = msg("meow")
. O ID do addon e a barra são omitidos.
Placeholders
Você pode passar os valores dos placeholders para a função:
cat = msg("cats", {number: 1}) // mostra "1 cat"
cats = msg("cats", {number: 3}) // mostra "3 cats"
hungry = msg("eat", {food: "cod"}) // mostra "I want to eat cod!"
Você também pode passar mensagens como valores de placeholder:
hungry2 = msg("eat", {food: msg("salmon")}) // mostra "I want to eat salmon!"
Segurança
Se você estiver escrevendo HTML puro, msg
deve ser substituído pela versão mais segura safeMsg
.
Comentários
Esteja ciente em seguir o código de conduta. Você pode ver esta seção de comentários no GitHub Discussions, além de editar e remover o seu comentário.