Como liberar produtos continuamente em 20 idiomas e não morrer?

Neste artigo, descreveremos como traduzimos a localização de projetos móveis para o Smartcat , que dores tivemos inicialmente e como lidamos com eles.

imagem

Quem somos nós


Olá pessoal! Somos Ekaterina Galitskaya e Daria Egorushkina da Kaspersky Lab (departamento de documentação e localização). Um pouco mais específico: a equipe em que trabalhamos é responsável por escrever e localizar textos de interface e ajudar em aplicativos móveis.

Dor


O principal gatilho para a mudança foram as necessidades de desenvolvimento. O desenvolvimento mudou para lançamentos frequentes uma vez a cada duas semanas. O escopo diminuiu, mas eles começaram a ser traduzidos com mais frequência, e tivemos que fazer isso mais rapidamente. De fato, a localização se tornou um estreito pescoço de desenvolvimento. E se antes os gerentes de projeto nem conheciam os nomes dos localizadores - mas por que não, porque as traduções apareceram magicamente - agora quase todo mundo estava ciente dos problemas e sabia o que é o teste linguístico :)

Dados da fonte.

A temporização


O ciclo de localização levou três semanas:

  • 3-5 dias - transferência;
  • 2 semanas - teste linguístico.

Com a tradução, tudo fica claro, mas por que os testes linguísticos e o que é isso tudo?

O principal objetivo do teste linguístico é verificar a tradução em contexto, ou seja, realmente fazer a localização. Os tradutores conheciam nossa terminologia, mas ainda assim eles simplesmente traduziram o texto, não vendo que era um botão ou um cabeçalho, qual era o próximo texto.

Além disso, o teste lingüístico permite capturar inconsistências, sub-tradução, texto que não é colocado em linhas (texto codificado), reduzir riscos legais (quando textos de pagamento, por exemplo, não são colocados no campo correto). O teste linguístico é geralmente feito usando capturas de tela.

Volumes


Existe um mito de que, se o aplicativo é móvel, ele é pequeno e o que há para traduzir?
Haha Algumas estatísticas:

  • textos na interface - uma média de 25 mil palavras no projeto;
  • 10 aplicações;
  • em média 19 localizações em cada projeto;
  • atualização de textos na interface, tradução de documentação toda semana.

Por que não pôde acelerar?


Vamos ver em que consiste cada um dos estágios da localização. Etapa de tradução (9 etapas):

  1. escolha VCS manualmente de diferentes lanches;
  2. crie manualmente um delta de tradução;
  3. criar pacotes de tradução;
  4. upload para FTP;
  5. escreva um monte de cartas para agências, freelancers e escritórios locais;
  6. após a transferência, selecione FTP, faça o upload para o CAT, verifique;
  7. colocar no VCS - não se confunda com brunches;
  8. iniciar montagem, corrigir erros, reconstruir montagem;
  9. iniciar traduções adicionais e correções de erros nesses casos em que o processo de tradução teve que ser reiniciado.

Problemas no estágio de tradução: em resumo, é uma limitação de processos antigos e muito trabalho de rotina ao usar CATs antigos:

  • A coleção de linhas de vários brunches não é suportada - o delta para tradução de todos os brunches foi formado manualmente, e a tradução foi definida manualmente em brunches. Era difícil de manter, fácil de se confundir e impossível esquecer esse horror.
  • Manter a uniformidade no projeto e nos idiomas no modo manual não foi possível.
  • Você não pode executar a tradução paralela em paralelo - atualize os recursos de origem durante o processo de tradução. Foi necessário primeiro obter o primeiro lote de tradução e somente depois disso iniciar a tradução adicional.
  • Casos de falhas de montagem devido a erros nas variáveis, apóstrofes e devido a outros erros de localização tornaram-se mais frequentes.

Fase dos testes linguísticos (19 etapas):

  1. Execute a montagem e aguarde.
  2. , .
  3. , -.
  4. .
  5. 20+ .
  6. , .
  7. — .
  8. FTP.
  9. .
  10. .
  11. .
  12. .
  13. ( ).
  14. .
  15. ( , ).
  16. .
  17. FTP.
  18. .
  19. (, ) .

Problemas do estágio de teste linguístico: as capturas de tela manuais ocupavam a maior parte do tempo. Se o recurso tiver cerca de 40 telas e 20 idiomas, poderá atingir até 70 horas de capturas de tela manuais ...

Além disso, havia um fator humano.

Uma coisa é seguir essas etapas uma vez a cada três meses. Outra coisa é repetir tudo isso a cada duas semanas. A cada nova iteração, os localizadores mergulhavam no pântano da rotina - enviar-aceitar-remover-repetir.

Tivemos que procurar uma solução e, ao mesmo tempo, muito rapidamente. Quais eram as opções de solução? Poderia ser:

  • contratar mais estudantes;
  • reduzir o número de obras de localização (e, portanto, a qualidade do desperdício);
  • Automatize tarefas de rotina.

Nós decidimos sobre o último.

O que você queria


Não tivemos cem anos para sentar, servir uma xícara de café, arregaçar as mangas e começar a analisar todo o mercado de soluções em nuvem em um ano. Estávamos procurando uma solução pronta para começar a trabalhar amanhã. Nosso objetivo era resolver o problema.

Que outros requisitos tínhamos:

  • Menos aprovações : para não esperar até que a compra seja acordada, eles escreverão as chaves e pronto.
  • Função básica pronta l: sentar e começar a fazer. O que não precisa ser escrito do zero. Estábulo. O resto pode ser torcido ao longo do caminho.
  • Ele não requer grandes capacidades de servidor : novamente, para não ficar preso em longas aprovações.
  • Entrada inicial barata (de preferência gratuita) para o serviço.
  • Não havia necessidade de um desenvolvedor interno : ou seja, suporte adequado do servidor e a capacidade de implantá-lo você mesmo.
  • Conformidade do serviço com os requisitos de segurança interna : nos conectamos ao serviço, e não a nós.
  • Suporte para trabalho simultâneo com vários brunches : tradução de vários recursos em paralelo.
  • Lançamento paralelo de transferências adicionais .

Das várias opções, analisamos mais de perto o Zing (um serviço de tradução dos desenvolvedores do Evernote).

Dos profissionais :
  • personalização para si mesmo;
  • pacote de instalação gratuito - apenas as capacidades do servidor eram necessárias;
  • nenhuma taxa mensal;
  • conectando seus tradutores;
  • acesso privado (pode ser hospedado internamente).

Contras : para conectar tradutores e abri-los, era necessário conectar pelo menos duas unidades. O que aumentou drasticamente o custo do serviço em termos de tempo e recursos. 


O que você escolheu


Como não podemos conectar diretamente o sistema CAT ao sistema de controle de versão interno, precisávamos de um conector diferente. Você pode escrever a si mesmo ou pegar um já existente. Então testamos um monte de Git - Serge - Smartcat.

Dos profissionais :

  • Suporte para trabalhar com vários brunches.
  • Atualize recursos em tempo real.
  • Independência dos analisadores CAT (gravando arquivos de configuração do nosso lado). O Smartcat deixa os arquivos PO.
  • A correspondência com freelancers é praticamente "em uma janela".
  • Há uma pesquisa e seleção de freelancers (comunicação direta, seleção para as necessidades do projeto - no nosso caso, a velocidade e a qualidade da tradução são importantes).
  • Você pode pagar pelo trabalho em todos os idiomas e projetos em uma conta.
  • A nosso pedido, eles aumentaram a prioridade no desenvolvimento de novos recursos: introduziram novos recursos (pesquisa de texto em todos os arquivos de projeto etc.), corrigiram alguns problemas.
  • Quick TechSupport - ajuda na configuração.
  • Acesso realmente gratuito ao serviço (a assinatura é opcional).
  • Verificações.

Contras :

  • Não houve pesquisa de texto em todo o projeto (e pode haver mais de 1000 arquivos no projeto). Mas os desenvolvedores do Smartcat introduziram esse recurso no final do ano passado.
  • Você não pode abrir vários documentos em uma guia do navegador.
  • Os arquivos de recursos (documentos no Smartcat) em um idioma podem ter até 200. O usuário precisa fazer correções nas traduções após verificar o texto nas capturas de tela. O usuário não sabe em qual documento o segmento está. Portanto, o usuário precisa abrir todos os 200 documentos e procurar essa linha.
  • Ainda existe um problema com as notificações para freelancers: eles as desativam e não recebem notificação de uma atualização de documento. Nesse caso, ainda escrevemos no chat.

O que fez e como se tornou


Resumidamente - mudou o processo de trabalhar com textos de interface :) O que fez:

  • Testou um monte de Git - Serge - Smartcat.
  • Concordamos com os desenvolvedores sobre as regras de nomeação de brunch para escritores e localizadores (isso é necessário para remover a correspondência com os desenvolvedores e para configurar as regras para o locobot).
  • ( 25  — , 20+ ).
  • Smartcat, Serge.
  • .
  • Serge: ID , , .
  • cron, () .
  • - ().
  • , : , , .
  • Monorepo: Serge .
  • Nossos desenvolvedores implementaram uma captura de tela de recursos com base na estrutura Kaspresso . Isso nos permitiu resolver não apenas o problema com as capturas automáticas * , mas também criar contexto para os tradutores. Portanto, para cada nova linha no arquivo, um link para uma captura de tela é adicionado para entender onde e como essa nova linha é usada. Quando o arquivo com novas linhas "voa" para o Smartcat, os links para a captura de tela caem no campo "Comentários no segmento".

Como é a localização agora (9 etapas para tudo):

  1. O escritor confirma novas linhas no Git. As strings são processadas automaticamente e voam para longe no Smartcat.
  2. O localizador nomeia tradutores (esta etapa desaparecerá em breve, é verdade, pessoal do Smartcat?)))
  3. Os tradutores traduzem não apenas assim, mas com capturas de tela - isto é, no contexto.
  4. Localizadores verificam a tradução (faça um arquivo completo). O robô recupera a tradução não por linha, mas quando o trabalho em todo o arquivo é concluído. A tradução retorna automaticamente e é enviada ao Git.
  5. Localizadores executam capturas automáticas.
  6. Localizadores enviam capturas de tela para FTP.
  7. Os localizadores respondem às perguntas dos linguistas.
  8. Localizadores, se necessário, fazem alterações no Smartcat. As edições são automaticamente confirmadas no Git.
  9. Localizadores fecham solicitação pull.

Obviamente, ainda há um campo para automação e melhorias. Mas você já pode sentir a diferença com o que foi o primeiro.

O que é Serge


Esta é uma solução de código aberto, um conector entre um sistema de controle de versão (SVN, Git, Gerrit (sistema de revisão de código baseado em Git), Mercurial) e TMS, no nosso caso, o Smartcat.

Por que estamos "logados": todos os TMS na nuvem têm um conector pronto para uso. Mas esses conectores in a box se conectam diretamente ao repositório. O que é impossível no nosso caso. Quais são as opções:

  • divulgar parte do sistema de controle de versão;
  • Clone pastas com arquivos de recursos para acesso público;
  • receba e processe arquivos de recursos antes de enviar para o TMS, depois exporte para o TMS.

Revelar parte do sistema é arriscado.

É possível criar um clone, apenas isso requer recursos humanos e temporários.

Serge pode apenas receber arquivos de recursos e processá-los antes de enviá-los ao TMS. Como resultado, a arquitetura é a seguinte: Git - Serge - TMS.

Serge pega arquivos do Git e os processa de acordo com certas regras. Em seguida, os converte para o formato PO e os envia para o Smartcat. Serge obtém os arquivos PO traduzidos do Smartcat, os converte e se compromete com o Git.

Além disso, a grande vantagem de Serge para nós é que ele é implantado em nossa empresa. Assim, toda a "cozinha" permanece atrás de um muro de pedra. Nada é revelado em segredo :)

Principais características:

  • Corresponda o destino desejado pelo ID da sequência de arquivos e recursos.
  • A capacidade de selecionar arquivos por máscara no caminho ou por conteúdo.
  • Processando o conteúdo dos arquivos de recursos antes / depois da análise.
  • Configurando Analisadores.

Você pode se familiarizar com outros recursos de Serge no site ou assistir ao vídeo .

Sumário


O mais importante é que, em um tempo relativamente curto, cerca de três meses, resolvemos o problema e deixamos de ser um pescoço estreito.

Resultados e números


EtapaQuantas horas foram (2018)Quantas horas se tornaram (final de 2019)
Colete linhas de todos os brunches. Manualmente1 10 0
Obtenha apenas linhas novas ou alteradas para iteração, carregue na ferramenta CAT antiga para 20 idiomas40,25
Crie pacotes de tradução. Repita para 20 idiomas.0,50 0
Defina tarefas para agências / tradutores. 1 idioma = 1 agência.20 0
Baixe pacotes com traduções de FTP para cada idioma. Repita para 20 idiomas.0,50 0
Anule, obtenha confirmação da agência / tradutor de que a tarefa foi realizada. Repita para 20 idiomas.2-30 0
Responda às perguntas do tradutor. Repita para 20 idiomas.2-40,5
Aceitar tradução para cada idioma1 10,25
Executar construção<8 (editando bugs da ferramenta CAT antiga)0,25
Tradução adicional (repita todas as opções acima)80,25
Obter capturas de tela16-32 (manualmente você mesmo)8 (captura de tela automática)
Carregar para FTP81 1
Converse com a agência / freelancers81 1
Editar recursos82
Despeje alterações no git80,25
Tempo puro8414

Bônus:

  • As montagens não caem: variáveis, palavras não traduzíveis são colocadas em espaços reservados, apóstrofos são escapados no estágio de aplicação do analisador.
  • Não selecionamos dispositivos dos testadores.
  • Não perdemos tempo com desenvolvedores e testadores para consertar a montagem ou descobrir como tirar uma ou outra captura de tela.
  • Tradução no contexto: as capturas de tela em inglês já estão na fase de tradução e são FÁCEIS de abrir e visualizar.
  • O Smartcat torna possível levar segmentos não traduzidos a um erro crítico - eles encontraram algumas linhas importantes do antigo CAT.

Além disso, vários Git-Serge-Smartcat permitiram traduzir o trabalho dos escritores de UX para o Smartcat. Como fizemos isso, contaremos no próximo artigo :).

* Mais sobre as capturas automáticas: nossos colegas escreveram autotestes e criaram o Kaspresso, uma estrutura para autotestes . Apenas nele, é feita a captura automática, que usamos na localização. Como subproduto dos autotestes.

All Articles