Histórico da Página
Apresentação
O Usuário Internacional surgiu para possibilitar que usuários de diferentes localidades utilizem o Datasul.
Para atender a esta necessidade, foi preciso adaptar o método de tradução já existente das interfaces Flex e Metadados.
Para entender melhor o que há de novo, segue um exemplo:
Antes a literal de tradução era composta conforme apresentado pela tabela abaixo.
Literal criada utilizando o padrão <CONTEXTO DE NEGÓCIO>.<LITERAL>.<CONTEXTO DE UTILIZAÇÃO>. | ||
---|---|---|
Literal | Locale | Tradução |
universal.new.label | pt_BR | Novo |
en_US | New | |
es_ES | Nuevo |
Agora a literal de tradução está mais simplificada, conforme apresentado pela tabela abaixo.
Literal sem o padrão, onde a literal é o próprio texto em português. | ||
---|---|---|
Literal | Locale | Tradução |
Novo | pt_BR | Novo |
en_US | New | |
es_ES | Nuevo |
Nota |
---|
Não haverá mais tratamento de contexto por literal de tradução; Atualmente não está sendo tratado a exceção da tradução de uma literal. |
Fle
Âncora | ||||
---|---|---|---|---|
|
Para não prejudicar o legado já desenvolvido em Flex, na utilização da metodologia de tradução, foram reaproveitados os métodos já existentes.
São eles:
Classe I18nUtil.as
Método getLabelBloco de código theme Eclipse language javascript linenumbers true public static function getLabel(label:String, stringID:String=null):String { var uLabel:String = ""; var runtimeMode:String = PropertyUtil.getInstance().getProperty("runtime.mode", "production"); var trans:String = ""; if(stringID==null){ if(label!=null){ uLabel = stringReplaceAll(label, " ", "_"); trans = I18NService.translate(uLabel); }else{ label = ""; } if(trans == uLabel){ trans = label; } }else{ uLabel = stringReplaceAll(stringID, " ", "_"); trans = I18NService.translate(uLabel); if (trans == uLabel) { trans = label; if (runtimeMode != "production") { trans += "#"; } } } return trans; }
Classe I18NService.as
Método translateBloco de código theme Eclipse language javascript linenumbers true public static function translate(key:String):String { var result:String = strings.getValue(key) as String; if (result == null) { result = literals[key] as String; } if(result == null){ result = key; } return result; }
Informações |
---|
Os métodos são do tipo "static", portanto, para utilizá-los, não há necessidade de instanciar a classe onde os mesmos foram definidos. |
Em ambos os métodos o desenvolvedor pode optar por utilizar a string id ou a própria literal em português. As formas de utilização são as seguintes:
Antigo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<mx:Button label="{I18NService.translate('universal.save.button')}" click="this.controller.saveCustomer()" styleName="focalButton" id="saveButton" /> |
Novo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<mx:Button label="{I18NService.translate('Salvar')}" click="this.controller.saveCustomer()" styleName="focalButton" id="saveButton" /> |
Antigo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<mx:Button label="{I18nUtil.getLabel('Salvar', 'universal.save.button')}" click="this.controller.saveCustomer()" styleName="focalButton" id="saveButton" /> |
Novo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<mx:Button label="{I18nUtil.getLabel('Salvar')}" click="this.controller.saveCustomer()" styleName="focalButton" id="saveButton" /> |
Os métodos utilizados nos exemplos acima funcionam tanto no modo de utilização antiga quanto na nova.
Para utilizar as classes citadas acima é necessário adicionar a dependência abaixo no arquivo pom.xml do seu projeto Flex.
Bloco de código | ||
---|---|---|
| ||
<dependency> <groupId>com.datasul.framework</groupId> <artifactId>datasul-framework-i18n-flex</artifactId> <version>${pom.version}</version> <type>swc</type> <scope>merged</scope> </dependency> |
Met
Âncora | ||||
---|---|---|---|---|
|
Foi atualizado o método de tradução GET-TRANSLATION.
Este método deixou de receber como parâmetro a literal de tradução em formato stringId (<contexto de negócio>.<literal>.<contexto de utilização>) e passou a receber a palavra/texto em português como parâmetro, conforme abaixo.
Antigo:
Bloco de código | ||
---|---|---|
| ||
DEFINE VARIABLE translatedText AS CHARACTER. translatedText = GET-TRANSLATION("universal.close.button"). |
Novo:
Bloco de código | ||
---|---|---|
| ||
DEFINE VARIABLE translatedText AS CHARACTER. translatedText = GET-TRANSLATION("Fechar"). |