6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API. Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa(). Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarr

Tradutores Online

O André Rubio fez um excelente post em seu blog sobre como  adicionar um plugin/gadget para tradução automática do seu site/blog.

O André explicou sobre os botões Convey This e Translate This. Eu vou falar sobre o google translator e o WordLingo. Você pode blogar e testar em trechos de livros em domínio público para ter uma idéia da precisão da tradução.

Porém já adianto: além das traduções serem bastante imprecisas as traduções acontecem "client-side" e não "server-side", ou seja, as traduções são feitas diretamente no seu navegador e não no servidor. Isso significa que  os robôs das ferramentas de busca (google, bing, yahoo etc) não  poderão achar sua página nas linguas traduzidas. Apenas na lingua em que você postar. Por isso, se quiser que seu blog atinja um público - alvo que fale inglês e espanhol você deve postar em inglês e espanhol, nem que seja em outro blog/cms e linque os dois depois.

Google Translator
Primeiro vamos falar do Google Translator. Como você pode ver, na parte superior esquerda desse blog o google translator já é utilizado. Para utilizar esse recurso vá em http://translate.google.com/translate_tools.
Com ele você tem as opções de selecionar as linguagens participantes, selecionar a aparência do botão e integrar com google analytics.

O código para aplicar é este abaixo:

<!-- inicio Google Translate Element -->
<div id="google_translate_element"></div><script>
function googleTranslateElementInit() {
  new google.translate.TranslateElement({
    pageLanguage: 'pt',   //parametro que indica a linguagem primaria do seu site
    multilanguagePage: true, //parametro que indica se seu site tem conteudo em outras linguagens
    gaTrack: true,    //parametro que define se a barra de tradução gerará conteudo para o analytics
    layout: google.translate.TranslateElement.InlineLayout.SIMPLE //layout do elemento
  }, 'google_translate_element');
}
</script><script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<!-- fim Google Translate Element -->



http://www.worldlingo.com/


O worldlingo tem uma série de ferramentas profissionais, porém limitadas, de tradução. Ele tem soluções pagas onde o preço varia de acordo com o total de palavras traduzidas e o número de vezes que é traduzido. Mas a versão free para blogs e sites é bem usável. Uma vantagem é que o texto é traduzido no servidor e uma cópia do texto vem ao seu navegador, com alertas dizendo que essa é apenas uma cópia traduzida, e pode não ser muito precisa. O texto também traz figuras que marcam onde começa e onde termina a tradução. Fora dessas marcas o texto continuará em portugues. Isso faz com que apenas uma parte do texto seja traduzida por vez, e deve-se clicar na figura ao final da tradução para que a área traduzida "ande" para a frente.

Por ser uma tradução server-side podem ser feitos links, redirecionamentos e encurtamentos de url direto para a tradução.

se pegarmos uma url de documento traduzido, podemos dissecar seus parâmetros:


http://www.worldlingo.com/wl/services/S1790.5/translation?wl_srclang=PT&wl_trglang=EN&wl_rurl=http://vitorrubio.blogspot.com/&wl_url=http://vitorrubio.blogspot.com/&wl_offset=525#wl_tstart

  • wl_srclang=PT --> linguagem de origem: português
  • wl_trglang=EN --> destino: inglês
  • wl_rurl=http://vitorrubio.blogspot.com/ --> referer da tradução (de onde veio)
  • wl_url=http://vitorrubio.blogspot.com/ --> url que está sendo traduzida
  • wl_offset=525#wl_tstart --> offset (a quantas palavras do início ou do último marco, não aparece se for a primeira parte)

O código para colocar ele no seu site/blog é este:
<!-- inicio do worldlingo -->
<center><img src="http://img176.imageshack.us/img176/6091/84056383at1.png"/> </center> 
<form id="translateForm" 
action="http://www.worldlingo.com/S1790.5/translation" 
target="_blank"> 
<input value="PT" name="wl_srclang" type="hidden"/> 
<select style="font-size: 90%; width: 160px;" 
name="wl_trglang"> 
<!-- linguagens de destino -->
<option value="EN"/>Português - Inglês 
<option value="ES"/>Português - Espanhol 
</select> 
<input value="seu site aqui" name="wl_url" 
type="hidden"/> 
<input style="font-size: 90%; width: 60px;" value="Traduza" 
type="submit"/> 
</form>
<!-- inicio do worldlingo -->

E o resultado:









Como já mencionado pelo André ainda há o Translate This e o Convey This

Translate This

<!-- Begin TranslateThis Button -->

<div id="translate-this"><a href="http://translateth.is/" class="translate-this-button">Translate</a></div>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://x.translateth.is/translate-this.js"></script>
<script type="text/javascript">
TranslateThis();
</script>

<!-- End TranslateThis Button -->









Convey This

<!-- Begin ConveyThis Button -->
<script type="text/javascript">
 var conveythis_src = 'pt';
</script>
<div class="conveythis">
 <a class="conveythis_drop" title="Translate" href="http://www.todayter.com/"><span class="conveythis_left_image">online dating</span></a>
 <a class="conveythis_drop" title="Translate" href="http://www.conveythis.com">Translate</a><span class="conveythis_seperator"> | </span>
 <a class="conveythis_no_drop" title="English" href="http://www.translation-services-usa.com/english.php" ><span class="conveythis_image_english">English</span></a>
 <a class="conveythis_no_drop" title="Spanish" href="http://www.translation-services-usa.com/spanish.php" ><span class="conveythis_image_spanish">Spanish</span></a> 
 <a class="conveythis_no_drop" title="German" href="http://www.translation-services-usa.com/german.php" ><span class="conveythis_image_german">German</span></a> 
 <a class="conveythis_no_drop" title="Chinese" href="http://www.translation-services-usa.com/chinese.php" ><span class="conveythis_image_chinese">Chinese</span></a> 
</div>
<script type="text/javascript" src="http://no-stats10.conveythis.com/kern_e2/_v_2_3/javascript/e2_3.js"></script>
<!-- End ConveyThis Button -->

O Convey This usa a API do Google, então dá no mesmo usar o Convey This ou usar o Google Translator

Bom, é isso, espero que seja útil a todos.

Have Fun ;)

Comentários

Postagens mais visitadas deste blog

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

Botão Add This para adicionar seu post em qualquer rede

Uso de memória no SQL Server