4D suporta o padrão XLIFF para a localização de textos e títulos de interface. Esta tecnologia é utilizada internamente pelas aplicações 4D. Os desenvolvedores 4D, assim como os de plug-ins, podem beneficiar-se desta nova implementação em suas próprias aplicações e plug-ins personalizados.
O princípio de definição de uma interface de aplicação 4D que se traduz dinamicamente é o seguinte: todos os elementos dependentes da linguagem (texto, etiquetas e imagens) são armazenados fora da aplicação, na forma de arquivos, em uma pasta chamada Resources. Nos formulários, menus, etc., as etiquetas e as imagens são especificadas como referências. Durante a execução da aplicação, estes elementos se mostram dinamicamente desde arquivos externos dependendo do contexto lingüístico. O padrão XLIFF codifica o modo de referenciação e mostra as etiquetas.
Nol editor de formulário, pode ver o conteúdo "real" das áreas estáticas no editor de formulários clicando na área ou selecionando Mostrar formato ou Mostrar nome no menu Objeto:
Nota de compatibilidade: Além de XLIFF, 4D ainda é compatível com o sistema anterior, baseado no conceito de “recursos” (tipo STR#). No entanto, hoje em dia este sistema é obsoleto. Ambos sistemas podem ser utilizados ao mesmo tempo, principalmente nas aplicações convertidas (este ponto é explicado com mais detalhes nas páginas seguintes).
XLIFF (XML Localization Interchange File Format) é um padrão dedicado aos processos de tradução e adaptação lingüística. Permite estabelecer uma correspondência entre uma linguagem fonte e uma linguagem objetivo ao interior do arquivo XML.
O padrão XLIFF constitui uma alternativa aos sistemas de localização anteriores baseados em recursos. Várias ferramentas, incluindo software gratuito, permitem a gestão dos arquivos XLIFF.
Para maiores informações sobre o padrão XLIFF, consulte a especificação oficial XLIFF 1.1 que se encontra no seguinte endereço: http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm
Atenção: o padrão XLIFF é sensível a maiúsculas e minúsculas.
Campo “Nome do objeto” nas listas de propriedades do editor de formulários
Campo “Nome da janela” na caixa de diálogo de propriedades do formulário acessível desde o Explorador
Textos estáticos, incluindo títulos de botões, caixas de seleção, etc.
Editor de menus (exceto sintaxe NomeObjeto, ver a seguir)
Editor de mensagens de ajuda (exceto sintaxe NomeObjeto, ver a seguir).
Notas:
Para que a referência XLIFF seja reconhecida, deve localizar-se no início da área de texto.
Não é possível mostrar as referências XLIFF no editor de mensagens de ajuda. Para utilizar as mensagens de ajuda baseadas no XLIFF, Introduza diretamente as referências XLIFF no campo Mensagens de ajuda da lista de propriedades.
Em 4D, podem ser utilizadas referências XLIFF por meio de uma das seguintes sintaxes:
Sintaxe :15115,3
Quando esta sintaxe é utilizada com os arquivos XLIFF, o primeiro valor (15115 no exemplo) designa o atributo id do elemento grupo. O segundo valor (3 neste exemplo) designa o atributo id do elemento trans-unit. Nota de compatibilidade: Esta sintaxe é idêntica às das referências de recursos STR# “antiga geração”, de tipo “:xxxx,yyy” onde xxxx é o número do recurso STR# y yyy é o número do elemento. Por exemplo, “:10115,3” significa que 4D deve utilizar o terceiro elemento do recurso STR# número 10115. Desta forma, você pode conservar em uma base convertida um antigo sistema baseado em recursos enquanto instala um novo sistema XLIFF. De fato, 4D buscará primeiro os valores correspondentes a 1015,3 em todos os arquivos XLIFF carregados; logo, se não encontrar a cadeia, buscará em todos os arquivos de recursos abertos. Com este mecanismo, você pode implementar um sistema baseado em XLIFF em uma aplicação sem precisar editar as referências dinâmicas existentes: somente deve copiar um arquivo XLIFF na localização correta (ver a seguir) e será tido em conta por 4D. Ambos sistemas podem ser utilizados simultaneamente. Em todos os casos, os arquivos XLIFF têm prioridade sobre os arquivos de recursos se a mesma referência se apresenta em ambas localizações.
Sintaxe :xliff:OKButton Esta alternativa de sintaxe só pode ser utilizada com os arquivos XLIFF carregados. Neste caso, o valor referenciado (OKButton no exemplo) designa o atributo resname do elemento trans-unit.
Sintaxis ObjectName (baseado no campo “Nome”, na lista de propriedades) O propósito desta sintaxe é facilitar a tradução dos formulários existentes. Diferente de outras sintaxes, é utilizada apenas com formulários. O princípio é moldurar no arquivo XLIFF os elementos trans-unit para dois elementos group cujos atributos resname contém respectivamente o nome da tabela e do formulário.
Exemplo (formulário tabela)
Para traduzir a etiqueta do botão “Salvar” no formulário “Form1” da tabela [Clientes], o arquivo XLIFF tem estas linhas:
É possível visualizar a referência XLIFF ou o título traduzido em função da linguagem atual no editor de formulários utilizando, respectivamente, os comandos Show Name e Show Resource do menu Objeto. Para maiores informações, consulte Usar referências em texto estático.
Para implementar uma arquitetura XLIFF para sua aplicação localizada, você deve criar um ou mais arquivos XLIFF válidos e copiá-los na pasta e Resources do banco de dados.
Mac OS: MeuPacote:Resources:Lang.lproj:MyEnLoc.xlf
onde:
Meu Banco é a pasta que contém os arquivos do banco e MeuPacote é o pacote da base sob Mac OS.
Lang.lproj é uma pasta que contém os arquivos XLIFF para a linguagem Lang. O nome da pasta deve cumprir o padrão internacional (ver o parágrafo seguinte). Por exemplo, para as versões em inglês a pasta deve ter o nome en.lproj.
4D carregará automaticamente os arquivos XLIFF na pasta correspondente à linguagem atual do banco. Para definir a linguagem atual da base, 4D buscará sucessivamente na pasta Resources da base uma linguagem correspondente a (na seguinte ordem de prioridade):
A linguagem do sistema (sob Mac OS, vários idiomas podem ser definidos com uma ordem de preferência, 4D utiliza este parâmetro).
A linguagem da aplicação 4D.
Inglês
Se nenhuma destas buscas der resultados, é carregada a primeira linguagem que se encontra na pasta Resources.
Se for utilizada uma variação da linguagem e não estiver disponível nos arquivos XLIFF, será utilizada a linguagem seguinte mais próxima.
Os nomes dos arquivos XLIFF são livres; devem apenas ter a extensão “.xlf.”. Você pode localizar vários arquivos XLIFF na mesma pasta da linguagem; serão carregadas na ordem alfabética dos nomes dos arquivos.
O nome da pasta “.lproj” deve respeitar uma das normas descritas anteriormente. 4D buscará um nome de pasta válido baseado em cada uma destas normas, na seguinte ordem.
Language-Regional Codes Nesta combinação, um linguagem é descrito por um código linguagem (ISO639-1) + um signo menos + um código país (ISO3166) ou um código script de 4 letras (ISO15924). Por exemplo, “fr-ca” (fr-ca.lproj) para a linguagem francês canadense.
Nome Legacy Nesta convenção, o nome da linguagem é escrito completamente em inglês. Por exemplo, “inglês” (english.lproj) para o inglês. Nota: as duas primeiras convenções são compatíveis apenas com a versão 10.4 de Mac OS ou superiores. Com as versões anteriores deste sistema operativo, só pode ser utilizado o nome “Legacy”.
Uma tabela de códigos de linguagem compatíveis com 4D podem ser encontradas em Códigos da linguagem.
Se forem encontradas várias definições da linguagem, 4D sempre utilizará a tradução mais precisa. Por exemplo, se o parâmetro de linguagem do sistema operativo é “francês canadense,” 4D buscará primeiro as traduções “fr-ca” e logo, se não encontrar-las, as traduções “fr”.
Nota: O mesmo princípio se aplica dentro dos arquivos XLIFF para a etiqueta “target-language”. Você deve assegurar-se de definir este atributo dentro dos arquivos XLIFF já que um aquivo localizado na pasta “fr-ca.lproj” que tem uma etiqueta “target-language=fr” será considerada como uma tradução a “fr” e não a “fr-ca.”
Os arquivos XLIFF se recarregam “dinamicamente” enquanto localizam a aplicação, de maneira que pode ver as palavras ou frases localizadas encaixarem nos objetos marco (botões, caixas de grupo, etc.). Esta recarga ocorre quando 4D passa ao primeiro plano, se a data ou hora de modificação forem mudadas desde a última carga. O formulário atual será carregado simultaneamente.