= '''Internacionalização do Expresso Livre''' = [[PageOutline]] == Estrutura: == Cada modulo possui seus arquivos de linguagem dentro da pasta nomedomodulo/setup/, o nome destes arquivos segue um padrão que é phpgw_ seguido da sigla da linguagem com a extensão .lang, por exemplo, a sigla para a linguagem português do Brasil é pt-br, então cada módulo que possui internacionalização para português precisa ter dentro da sua pasta setup um arquivo chamado phpgw_pt-br.lang com as strings utilizadas pelo módulo.[[br]][[br]] Estes arquivos de linguagem tem a seguinte estrutura: String Chave Nome do modulo sigla da linguagem String na linguagem destino, abaixo segue um exemplo de um arquivo de linguagem Português do Brasil do modulo [wiki:mail ExpressoMail]: {{{ Last expressoMail1_2 pt-br Última Less expressoMail1_2 pt-br Menos Link expressoMail1_2 pt-br Link }}} Estes arquivos são lidos pelo modulo !Setup e escritos no banco de dados do !ExpressoLivre onde são acessados pelos módulos. == Instalação de uma nova linguagem: == Para instalar uma nova linguagem, é necessário que os arquivos de tradução estejam nos diretórios corretos, após isto, é preciso adicionar a linguagem no arquivo expresso/setup/lang/languages (onde expresso é o diretório da sua instalação do !ExpressoLivre ) seguindo o padrão ''sigla Nome do idioma'', como ''pt-br Português do Brasil''. Feito isso, acesse pelo navegador o modulo setup do expresso (http://seuexpresso.com/setup), faça o login e clique no botão Manage Languages, a sua nova linguagem aparecerá na lista de linguagens disponíveis, agora é só clicar no botão !Install. [[Image(setup-lang.png, 50%)]] == Utilizando a API de internacionalização do Expresso Livre: == Para utilizar mensagens internacionalizadas no código do !ExpressoLivre é simples, a !API do !eGroupware disponibiliza a função php:[[br]] {{{ function lang($key,$m1='',$m2='',$m3='',$m4='',$m5='',$m6='',$m7='',$m8='',$m9='',$m10=''); }}} onde $key é a string a ser internacionalizada e $m1..$m10 são parâmetros opcionais que podem inserir valores dentro de $key, onde os valores %1..%10 serão substituídos pelos valores de $m1 ... $m10. ex:[[br]] {{{ lang("Internacionalizando o %1.", "!ExpressoLivre"); }}} irá retornar "Internacionalizando o !ExpressoLivre.". A string de retorno será na linguagem que está configurada nas opções do usuário, desde que $key esteja no arquivo de linguagem. == Internacionalização nos módulos que utilizam !JavaScript: == === !ExpressoMail: === No [wiki:mail ExpressoMail] 1.2, as strings dos arquivos !JavaScript são internacionalizadas usando a função !JavaScript:[[br]] {{{ function get_lang(_key,_arg1,_arg2,_arg3,_arg4); }}} Esta função tem a mesma estrutura da função php lang, por exemplo:[[br]] {{{ get_lang("Internacionalizando o %1.", "!ExpressoLivre"); }}} irá retornar "Internacionalizando o !ExpressoLivre." na linguagem configurada para o usuário. === !ContactCenter: === No [wiki:contactcenter ContactCenter] a internacionalização das strings em código !JavaScript funciona de uma maneira um pouco diferente pois, este módulo não possui uma função própria para a internacionalização, por isso é utilizado a função do lang do php. Para fazer isso, é necessário adicionar as strings que serão internacionalizadas como elementos hidden no html, esses elementos são lidos e armazenados em variáveis, para poderem ser utilizadas. Os elementos hidden são adicionados no arquivo index.tpl ( contactcenter/templates/default/index.tpl ), ex:[[br]] {{{ }}} A internacionalização da string é feita no arquivo class.ui_data.inc.php ( contactcenter/inc/class.ui_data.inc.php ), populando o campo do template. Ex:[[br]] {{{ $GLOBALS['phpgw']->template->set_var('cc_qa_save',lang('Save')); }}} No arquivo !JavaScript é carregado o campo do template para uma variavel. Ex:[[br]] {{{ var lang_save = Element('cc_qa_save').value; }}}