Serviço de tradução de klingon


História

Neste exercício vais fornecer um TranslationService onde os membros pagantes têm alguma garantia de qualidade.

Encontraste uma API mágica de tradução capaz de satisfazer qualquer pedido de tradução num período de tempo razoável, e queres tirar partido disso.

A API mágica tem uma interface muito minimalista:

Obter uma tradução

api.fetch(text) obtém a tradução de text e devolve dois valores:

  • translation: a tradução propriamente dita
  • quality: a qualidade expressa como um número

Se não houver tradução disponível (porque ainda não foi pedida), a API lança um erro. Isto também acontece se um texto não puder ser traduzido.

Pedir uma tradução

api.request(text, callback) pede a tradução de text e chama o callback assim que esta estiver pronta, sem qualquer valor.

A API request é instável, o que significa que, por vezes, a API chama o callback com um erro. Se isso acontecer, não há problema em voltar a pedir.

⚠ Aviso! ⚠

Como alguns utilizadores anteriores eram preguiçosos a programar e pediam sempre uma tradução, sem sequer verificar se o texto já estava traduzido, a API devolve um erro se o texto já tiver sido traduzido e bloqueia todo o acesso por completo, para sempre.

Tarefas

Estes são exemplos de tarefas que se enquadram na história do serviço de tradução:

  • Obter uma tradução, ignorando a qualidade
  • Obter um lote de traduções, tudo ou nada
  • Pedir uma tradução, tentando novamente no máximo 2 vezes
  • Obter uma tradução, inspecionar a qualidade ou pedi-la

Terminologia

Estas são recomendações, não regras, para a terminologia recorrente nas instruções (incluindo os comentários do stub)

  • A dependência injetada chama-se TranslationService, ou API
  • O serviço é assíncrono, mas isso nunca é mencionado
  • Uma falha num Future é a API lança um erro
  • Uma falha num Callback é a API vai chamar o callback com um erro

Todos os textos de tradução são de Klingon para inglês.

Implementações

Referência

Nota

A tradução correta de 'arlogh Qoylu'pu'? é How many times has it been heard?.