Coroid traduz seu produto com o mesmo mecanismo que utiliza para suas treze línguas. Seus catálogos permanecem como arquivos em 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 tem seu próprio local no menu principal. Ela exibe as línguas de cada Projeto em uma única página e fornece uma estação de trabalho para cada Projeto. Projetos que ainda não são multilíngues começam com o Assistente de internacionalização.
Todos os projetos em uma única página
A Localização abre com os projetos que você pode ler. Cada linha mostra o idioma-fonte do Projeto, quantas línguas ele possui, quantas strings há e uma barra indicando o quanto foi traduzido em todas as suas línguas.
O pequeno globo ao lado de cada Projeto possui uma conta para cada língua: verde quando a língua está completa, um anel turquesa quando faltam strings ou houve alterações, e âmbar quando algumas strings estão com erros.
Faça com que cada projeto fale a língua dos seus usuários e mantenha isso enquanto o produto evolui.
- Loja virtualinglês fonte · 5 idiomas · 1.240 strings97,2%135 strings aguardando
- Central de ajudasueco fonte · 2 idiomas · 318 strings100%Todos os idiomas completos
- Iniciar o assistenteAplicativo de reservasAinda não internacionalizado
Localização: os idiomas de cada projeto aparecem como contas ao redor de um pequeno globo, mostrando quanto foi traduzido e o que ainda precisa de trabalho. Dados ilustrativos.
Um projeto sem traduções indica Ainda não internacionalizado. Proprietários e administradores iniciam o assistente a partir dessa linha, ou a partir de Internacionalizar um projeto no topo da página.
A estação de trabalho
Abrir um Projeto exibe sua estação de trabalho: as seções à esquerda e a seção aberta ao lado delas.
| Seção | Para que serve |
|---|---|
| Visão geral | O status de cada língua e a ação necessária para traduzir o que falta |
| Strings | Todas as strings em todas as línguas, 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 traduções de volta |
| Colaboradores | Quem pode sugerir texto e em quais línguas |
| Automações | Correções aplicadas todas as noites e tradução de strings mescladas fora do Coroid |
| Configurações | Línguas, a verificação de Traduções, acesso e gastos, além do arquivo de configuração |
Sugestões, Colaboradores e Automações são abordados em Manter traduções com sugestões.
A estação de trabalho lê os catálogos no seu branch padrão. Quando eles mudam, o 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 língua
A Visão geral começa com quatro totais: strings, línguas, quanto foi traduzido e quantas strings precisam de trabalho. Abaixo deles, cada língua percorre uma linha com três etapas:
- Internacionalizar. O catálogo da língua 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 corretamente, mantêm os placeholders do texto-fonte e possuem as formas plurais exigidas pela língua.
A próxima etapa de uma língua é 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.
- 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 modelo, âmbar para strings que precisam de atenção e a parte vazia para strings ausentes. O texto sob a barra indica a diferença, como 42 strings ausentes, e abre exatamente essas strings.
Línguas derivadas de outra por regras, como o inglês britânico do inglês americano, exibem Derivada e atualizada quando suas regras foram aplicadas a todas as strings.
Traduzir 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: ausentes, alteradas no texto-fonte ou com erros. Ele as traduz na estação 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 humanas têm prioridade sobre as automáticas. Isso não gera chamada ao modelo e não custa nada.
- O modelo Tradutor. O mecanismo fixado no 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 sob os totais mostra quantas strings foram escritas e quanto o processo gastou, e a barra de cada língua se preenche com tinta listrada à medida que suas strings chegam. Parar de traduzir encerra o processo; o que foi escrito permanece.
- 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 Confirmar juntamente com as demais alterações, marcadas como traduções automáticas, para que você possa verificá-las em Strings primeiro. Uma string que já foi editada por alguém ou sugerida por um colaborador permanece sob responsabilidade deles.
Strings
Strings lista todas as strings com seu texto original e seu valor em um determinado idioma. Ela abre em Precisa de trabalho: as strings que estão ausentes, cujo texto original mudou, que estão corrompidas ou que ainda são idênticas ao texto original. Escolha outro idioma, um catálogo ou pesquise por chaves e texto.
| Status | Significado |
|---|---|
| Ausente | A string não possui tradução |
| Texto original alterado | O texto original mudou após a tradução da string |
| Corrompida | Ela não é analisável, seus placeholders diferem do texto original ou suas formas plurais não se adequam ao idioma |
| Idêntica ao original | É idêntica ao texto original |
| Automática | Foi gerada por um modelo e nenhuma pessoa a revisou |
| 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 iguais após a tradução. Para o idioma escolhido, os detalhes também indicam quem escreveu o valor, qual o problema e, no caso de mensagens plurais, quais formas plurais o idioma requer.
- 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 do texto original como chips que podem ser inseridos e verifica a alteração à medida que você digita: os placeholders, as formas plurais exigidas pelo idioma, termos do seu glossário e o comprimento. Coroid verifica novamente em relação ao 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 a utilize, ou do modelo de Tradutor. Escolha Usar esta para inseri-la no editor; nada é salvo até que você salve a alteração.
As alterações salvas aguardam em uma barra abaixo das strings, onde você pode revisar ou descartar cada uma delas. Confirmar Confirma 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 fixo e abre um pull request. Uma confirmação acompanha até 5.000 alterações; o restante aguarda a próxima. Até que esse pull request seja mesclado, as strings exibirão Não confirmada ou Em processo de aplicação.
Uma tradução automática confirmada permanece como tradução automática no cache do mecanismo, portanto ainda é considerada Automática até que uma pessoa a revise.
A edição requer que as contribuições estejam habilitadas no arquivo de configuração; Assistente de internacionalização as habilita por default. 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 deles de volta.
| Formato | Idiomas por arquivo | Utilize para |
|---|---|---|
| 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 todas as linhas antes que algo seja mantido. Novas traduções e alterações podem ser aceitas. O Coroid ignora uma chave que o projeto não possui, uma tradução feita a partir de uma fonte que mudou desde então, placeholders quebrados e mensagens plurais sem a forma necessária para o idioma. As linhas aceitas viram alterações aguardando Commit, como edições feitas em Strings.
Os arquivos JSON, .strings e Android não indicam qual idioma contêm. O Coroid obtém essa informação do nome do arquivo, como storefront-de.json, ou pergunta.
Verificar cada alteração
O Traduções a verificação no Controle de Qualidade é executada na etapa de QA da tarefa e nos pull requests, e analisa apenas as strings afetadas pela alteração. O assistente ativa isso por padrão assim que o pull request for mesclado; Configurações mostra se está ativado e abre no Controle de Qualidade. Na Visão geral, Visualizar a última verificação em Verificar abre a execução mais recente.
Cada problema vira uma ocorrência com um código de issue:
| Código | Significado | Bloqueia por padrão |
|---|---|---|
missing | A string não tem tradução | Sim |
invalid_syntax | A tradução não é válida, por exemplo, por causa de um ICU quebrado | Sim |
placeholder_mismatch | Os placeholders diferem da fonte | Sim |
plural_categories | Falta uma forma plural necessária para o idioma | Sim |
stale | A fonte mudou após a tradução da string | Não |
Você escolhe quais códigos bloqueiam nas configurações da verificação. As regras de glossário, comprimento e termos proibidos informam seus próprios códigos quando o arquivo de configuração os define.
- Abrirui · checkout.total · fr: missingTraduções · Não traduzido
- Abrirui · nav.deals · de: staleTraduções · Origem alterada desde a tradução
- Em processo de correçãoui · cart.items · ja: placeholder_mismatchTraduções · Os placeholders diferem da origem
- Corrigidoui · cart.count · ar: plural_categoriesTraduções · Formas plurais ausentes para esta localidade
Achados de qualidade da verificação de traduções, um código de problema por achado. Dados ilustrativos.
Quando uma ocorrência de tradução bloqueia uma tarefa, o agente desenvolvedor a corrige sempre da mesma forma: abre uma sessão de tradução para a tarefa e executa o mecanismo nas strings alteradas. Ele nunca edita catálogos de destino manualmente.
O modelo Tradutor
A tradução tem sua própria função nos perfis do AI, Tradutor, ao lado de Arquiteto, Desenvolvedor, QA e Revisor. Por padrão, usa o Hy-MT2, um modelo de tradução, com GPT-6 Luna como fallback, quando a política da sua organização permitir. Altere o mapeamento em um perfil do AI como qualquer outra função.
O mecanismo também agrupa strings por tamanho, valida cada resposta conforme seus placeholders e regras plurais, e tenta novamente ou encaminha 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 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 como qualquer outra tarefa.
Com a rota padrão do Tradutor, traduzir custa cerca de dois centavos por 1.000 strings por idioma. Traduzir um catálogo de 2.000 strings para dez idiomas custou aproximadamente US$ 0,33 em nossos testes.
- Só as alterações geram custos. O mecanismo mantém um cache indexado pelo texto-fonte, para que strings inalteradas nunca sejam enviadas novamente.
- Cada tarefa e cada execução têm um limite de tradução. A sessão de uma tarefa para no seu limite de gastos, US$ 1 por padrão; uma execução de Traduzir no ambiente de trabalho para 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. O ambiente de trabalho e a verificação de Traduções 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 fixa com sua própria chave OpenRouter. Dentro do Coroid, as tarefas sempre usam o gateway de tradução, para que os gastos e limites fiquem em um só lugar.