Coroid traduz seu produto com o mesmo mecanismo que utiliza para seus próprios treze idiomas. Seus catálogos permanecem como arquivos no seu repositório. Qualquer alteração neles chega como uma tarefa e um pull request, e apenas as strings novas, alteradas ou com erros são enviadas ao modelo.
A Localização é a segunda parte da Globalização no menu principal. Ao abrir um projeto ali, é exibida sua área de trabalho: as seções à esquerda e a seção aberta ao lado delas. Projetos que ainda não são multilíngues começam com o Assistente de Internacionalização.
A área de trabalho
| Seção | Para que serve |
|---|---|
| Visão geral | O status de cada idioma e a única ação que traduz o que falta |
| Strings | Todas as strings em todos os idiomas, filtradas para o trabalho relevante |
| Sugestões | Correções feitas por colaboradores, aguardando decisão |
| Intercâmbio | Arquivos para agências, ferramentas de tradução e planilhas, além de suas respectivas traduções de volta |
| Colaboradores | Quem pode sugerir textos e em quais idiomas |
| Automações | Correções aplicadas todas as noites e tradução de strings mescladas fora do Coroid |
| Configurações | Idiomas, verificação de Globalização, acesso e gastos, além do arquivo de configuração |
Sugestões, Colaboradores e Automações são abordados em Mantenha traduções com sugestões. Acima dessas seções, sob Internacionalização, a barra lateral contém Prontidão global e Cultura.
A área de trabalho lê os catálogos do seu branch padrão. Quando eles mudam, Coroid os lê novamente na próxima vez que alguém abrir o projeto; até então, a Visão geral indica que está lendo-os. O Coroid nunca executa o código do seu repositório para fazer isso. Catálogos que usam um adaptador personalizado não são exibidos; suas strings ainda são verificadas nas tarefas.
Visão geral: uma linha por idioma
A Visão geral começa com quatro totais: strings, idiomas, quanto já foi traduzido e quantas strings precisam de trabalho. Abaixo deles, cada idioma percorre uma linha com três etapas:
- Internacionalizar. O catálogo do idioma existe e contém strings.
- Localizar. Cada string é traduzida a partir do texto-fonte atual.
- Verificar. Nenhuma string está com erro: todas são analisadas, mantêm os placeholders do fonte e possuem as formas plurais necessárias para o idioma.
A próxima etapa de um idioma é onde sua linha para. Uma parada verde indica conclusão, um anel turquesa é a parada que precisa de trabalho e uma âmbar indica strings com erros.
- Prontidão mundialCódigo que presume um idioma
- CulturaO que cada mercado espera
- Visão geralO status de cada idioma
- StringsTodas as strings em todos os idiomas
- SugestõesAguardando decisão
- TrocarArquivos para outras ferramentas
- ColaboradoresQuem pode sugerir redação
- AutomaçõesTrabalho noturno e no merge
- ConfiguraçõesIdiomas, acesso e custos
Cada idioma passa por três etapas. O próximo passo ocorre onde a linha atual terminar.
- Englishinglês · en · Origem
1.240 strings em 3 catálogos
- Deutschalemão · de100%ConcluídoAprovado
- Françaisfrancês · fr98%18 textos ausentesAprovado
- 日本語japonês · ja96,3%42 textos ausentes3 strings incorretas
- العربيةárabe · ar94,6%64 textos ausentesAprovado
- British Englishinglês (Reino Unido) · en-GB · Derivado de inglês100%Derivado e atualizadoAprovado
A visão geral da área de trabalho: cada idioma em sua linha através das fases de Internacionalizar, Localizar e Verificar, indicando a lacuna que impede o avanço. Dados ilustrativos.
A barra abaixo de Localizar lê desde o início: verde-escuro para strings revisadas por pessoas, verde-claro para strings escritas por um modelo, âmbar para strings que precisam de atenção e a parte vazia para strings que estão faltando. O texto abaixo da barra nomeia a lacuna, como 42 strings faltando, e abre exatamente essas strings.
Idiomas derivados de outro idioma por regras, como o inglês britânico do inglês americano, exibem Derivado e atualizado quando suas regras foram aplicadas a todas as strings.
Traduza o que falta
Proprietários e administradores veem uma ação no topo da Visão geral, Traduzir com o número de strings que precisam de trabalho: faltando, alteradas no fonte ou com erros. Elas são traduzidas na área de trabalho, em duas etapas:
- Memória de tradução. Uma string que outro projeto da sua organização já traduziu, com exatamente o mesmo texto-fonte, reutiliza essa tradução. As traduções feitas por pessoas têm prioridade sobre as feitas por máquina. Isso não gera chamada ao modelo e não custa nada.
- O modelo Tradutor. O mecanismo vinculado ao seu repositório traduz o restante através do gateway de tradução, verificando cada resposta em relação aos placeholders e formas plurais.
Enquanto ele roda, um painel abaixo dos totais mostra quantas strings foram escritas e quanto o processo gastou, e a barra de cada idioma se preenche com tinta listrada à medida que suas strings chegam. Parar de traduzir encerra o processo; o que foi escrito permanece.
- Prontidão mundialCódigo que presume um idioma
- CulturaO que cada mercado espera
- Visão geralO status de cada idioma
- StringsTodas as strings em todos os idiomas
- SugestõesAguardando decisão
- TrocarArquivos para outras ferramentas
- ColaboradoresQuem pode sugerir redação
- AutomaçõesTrabalho noturno e no merge
- ConfiguraçõesIdiomas, acesso e custos
Cada idioma passa por três etapas. O próximo passo ocorre onde a linha atual terminar.
Frases escritas até agora: 71 de 133
Reutilizado da memória de tradução sem custo: 26 · US$ 0,04 gasto do limite de US$ 5,00
- Deutschalemão · deConcluído
- Françaisfrancês · frTraduções prontas para commit: 24
- 日本語japonês · jaTraduzindo: 28 de 45 já escritos
- العربيةárabe · arTraduzindo: 19 de 64 já escritos
A visão geral durante a execução da tradução automática: a impressora funciona, cada idioma é preenchido com tinta listrada à medida que as strings chegam, e o banco de memória de tradução reproduz o que já foi dito em outros projetos. Dados ilustrativos.
As traduções não vão direto para o seu repositório. Elas aguardam Commit juntamente com suas outras alterações, marcadas como traduções automáticas, para que você possa verificá-las em Strings primeiro. Uma string que alguém já editou, ou que um colaborador sugeriu, é deixada com eles.
Strings
Strings lista cada string com seu texto-fonte e seu valor em um idioma. É aberto em Precisa de trabalho: as strings que estão ausentes, cuja fonte foi alterada, que estão corrompidas ou que permanecem iguais à versão original. Escolha outro idioma, um catálogo ou procure por chaves e texto.
| Estado | Significado |
|---|---|
| Ausente | A string não possui tradução |
| Fonte alterada | O texto original foi modificado após a tradução da string |
| Corrompida | Ela não é analisável, seus placeholders diferem da versão original ou suas formas plurais não se adequam ao idioma |
| Idêntica à versão original | É idêntica ao texto original |
| Máquina | Foi gerada por um modelo e não foi revisada por ninguém |
| Revisada | Foi escrita ou corrigida por uma pessoa |
| Derivada | Foi produzida por regras a partir de outro idioma |
Selecione uma string para vê-la em todos os idiomas. Placeholders e marcações aparecem como chips bloqueados, pois devem permanecer exatamente como estão na tradução. Para o idioma escolhido, os detalhes também indicam quem escreveu o valor, o que há de errado com ele e, para mensagens plurais, quais formas plurais o idioma requer.
- Prontidão mundialCódigo que presume um idioma
- CulturaO que cada mercado espera
- Visão geralO status de cada idioma
- StringsTodas as strings em todos os idiomas
- SugestõesAguardando decisão
- TrocarArquivos para outras ferramentas
- ColaboradoresQuem pode sugerir redação
- AutomaçõesTrabalho noturno e no merge
- ConfiguraçõesIdiomas, acesso e custos
Todas as strings em todos os idiomas. Os filtros começam pelo trabalho que realmente importa.
| Fonte | 日本語 |
|---|---|
| Total: {amount} | 合計: {price}Danificado |
| Your cart is empty | Ainda sem traduçãoFaltando |
| Welcome back, {name} | Ainda sem traduçãoFaltando |
| Prices include <b>VAT</b> | 価格には<b>消費税</b>が含まれますDanificado |
| Weekly deals | Ainda sem traduçãoFaltando |
- 日本語 · japonêsDanificado合計: {price}
Escrito por um modelo · Os espaços reservados diferem da fonte
- DeutschRevisadoGesamt: {amount}
- FrançaisMáquinaTotal : {amount}
- العربيةMáquinaالإجمالي: {amount}
- British EnglishDerivadoTotal: {amount}
Strings na área de trabalho, filtradas para as strings japonesas que precisam de trabalho; a string aberta exibe seus espaços reservados como chips bloqueados e o valor de cada idioma. Dados ilustrativos.
Editar e confirmar
Proprietários e administradores corrigem traduções em Strings. Selecione uma string, escolha Editar em um idioma e salve a alteração. O editor exibe os placeholders da versão original como chips que podem ser inseridos e verifica a alteração conforme você digita: os placeholders, as formas plurais exigidas pelo idioma, termos do seu glossário e o comprimento. Coroid faz nova validação contra o branch padrão ao salvar.
Sugerir no editor propõe uma tradução para aquela string específica: a partir da memória de tradução caso outro projeto já a tenha, ou do modelo de Tradutor caso contrário. Escolha Usar esta para inseri-la no editor; nada é salvo até que você confirme a alteração.
As alterações salvas ficam aguardando em uma barra abaixo das strings, onde é possível revisar ou descartar cada uma delas. Confirmar transforma todas elas, juntamente com as sugestões aprovadas de colaboradores e traduções automáticas, em uma única tarefa. A tarefa aplica exatamente esses valores com o mecanismo definido e abre uma pull request. Uma confirmação pode conter até 5.000 alterações; as demais aguardam a próxima vez. Enquanto essa pull request não for mesclada, as strings exibirão Não confirmada ou Sendo aplicada.
Uma tradução automática já confirmada permanece como tradução automática no cache do mecanismo, portanto ainda é classificada como Máquina até que seja revisada por uma pessoa.
A edição requer que o recurso de contribuições esteja ativado no arquivo de configuração; Assistente de internacionalização ativa essas opções por padrão. Os colaboradores também podem sugerir uma redação melhor no seu próprio site.
Trocar arquivos
Em Troca, faça o download das strings para uma agência, uma ferramenta de tradução ou uma planilha e importe as traduções de volta.
| Formato | Idiomas por arquivo | Para usar em |
|---|---|---|
| XLIFF 1.2 e 2.0 | Um | Ferramentas de tradução e agências; os placeholders chegam como tags bloqueadas |
| Gettext PO | Um | Poedit, Weblate e outras ferramentas gettext |
| CSV e Excel | Todos os idiomas | Planilhas, com todos os idiomas lado a lado |
| JSON | Um | Chaves e traduções |
| Catálogo de strings da Apple | Todos os idiomas | Xcode |
| Strings da Apple .strings | Um | Projetos Xcode |
| strings.xml do Android | Um | Android Studio |
| ARB do Flutter | Um | Flutter |
Uma exportação contém as strings que precisam de trabalho ou todas as strings. Placeholders e mensagens plurais são transferidos exatamente como foram escritos.
Uma importação exibe cada linha antes que algo seja mantido. Novas traduções e alterações podem ser aceitas. Coroid ignora uma chave que o projeto não possui, uma tradução feita a partir de uma fonte que foi alterada posteriormente, placeholders corrompidos e mensagens plurais sem uma forma exigida pelo idioma. As linhas aceitas viram alterações aguardando Confirmar, assim como as edições feitas em Strings.
JSON, arquivos .strings e Android não indicam qual idioma contêm. Coroid
extrai essa informação do nome do arquivo, como storefront-de.json, ou solicita.
Verificar cada alteração
A Verificação de globalização Funciona na verificação de tarefas e em pull requests. Ele analisa as strings que uma alteração afeta em todos os idiomas, bem como o código adicionado pela alteração. Na Visão geral, Visualizar a última verificação em Verificar abre a execução mais recente. Quando um problema de tradução bloqueia uma tarefa, o agente de desenvolvedor corrige isso por meio de uma sessão de tradução para essa tarefa; ele nunca edita manualmente os catálogos de outros idiomas.
O modelo Tradutor
A tradução possui sua própria função nos perfis do AI, Tradutor, ao lado de Arquiteto, Desenvolvedor, QA e Revisor. Por padrão, utiliza o Hy-MT2, um modelo de tradução, com o GPT-6 Luna como alternativa, quando a política da sua organização permitir. Altere o mapeamento em um perfil do AI da mesma forma que qualquer outra função.
O mecanismo também agrupa as strings por tamanho, valida cada resposta de acordo com seus placeholders e regras de plural, e repete ou encaminha para escalonamento uma string que falhar.
Custos
As traduções estão disponíveis em todos os planos. As chamadas de tradução passam pelo gateway de tradução do Coroid e são cobradas como uso de modelo para a sua organização, da mesma forma que as execuções de agentes. As tarefas de tradução contam para as horas de agente do seu plano, assim como qualquer outra tarefa.
Com a rota de Tradutor padrão, a tradução custa cerca de dois centavos por 1.000 strings por idioma. Traduzir um catálogo de 2.000 strings para dez idiomas custa aproximadamente US$ 0,33, conforme medido por nós.
- Só as alterações geram custos. O mecanismo mantém um cache indexado pelo texto original, de modo que strings não alteradas nunca sejam enviadas novamente.
- Cada tarefa e cada execução possuem um limite de tradução. A sessão de uma tarefa é interrompida no seu limite de gastos, US$ 1 por padrão; uma Traduzir execução na área de trabalho é interrompida em US$ 5. Um projeto pode definir um limite menor em Configurações → Acesso e gastos.
- O memória de tradução não tem custo algum. As strings que sua organização já Traduziu em outro lugar são reutilizadas sem necessidade de chamada ao modelo.
- A leitura não tem custo algum. A área de trabalho e a verificação de Globalização leem seus catálogos; eles não fazem chamadas ao modelo.
Traduzindo fora do Coroid
O mecanismo é uma ferramenta de linha de comando, coroid-i18n. Seu próprio CI pode executar a mesma versão fixada com sua própria chave OpenRouter. Dentro do Coroid, as tarefas sempre utilizam o gateway de tradução, de modo que os gastos e limites permaneçam em um único lugar.