String de Idiomas

Strings de idioma fornecem um elemento de internacionalização para SuiteCRM. Ele permite especificar diferentes strings a serem usadas em diferentes idiomas, tornando muito mais fácil fornecer traduções para módulos e personalizações.
Mesmo se você estiver alvejando apenas um único idioma, ainda vale a pena usar a funcionalidade de string de idioma no SuiteCRM, pois permite a alteração simples de strings dentro do SuiteCRM e também permite que os usuários personalizem os rótulos usados ​​em suas personalizações. Existem três tipos principais de strings de linguagem que abordaremos aqui.

No fundo, as strings de linguagem são um armazenamento de valor chave. As chaves são usadas em todo o SuiteCRM e os valores são carregados com base no idioma atual.

Os idiomas são tratados no SuiteCRM prefixando o nome do arquivo com o código de idioma IETF para o idioma que este arquivo contém.
Aqui estão alguns exemplos de nomes de arquivos de diferentes idiomas:

– Arquivo de idioma das contas principais para en_us (inglês dos Estados Unidos) – modules / Accounts / language / en_us.lang.php

– Arquivo de idioma de casos principais para es_es (espanhol conforme falado na Espanha) – modules / Cases / language / es_es.lang.php

– Arquivo de idioma personalizado para de_de (alemão) – custom / Extension / application / Ext / Language / de_de.SomeCustomPackage.php

O SuiteCRM escolherá o prefixo do idioma a ser usado com base no idioma que o usuário selecionou ao fazer o login ou o idioma padrão se nenhum foi selecionado. Geralmente, quando um arquivo de idioma é carregado, os arquivos de idioma padrão e os arquivos en_us também são carregados.
Esses arquivos são então mesclados. Isso garante que ainda haverá uma definição se houver chaves de idioma em en_us ou no idioma padrão que não tenham definições no idioma atual. Em essência, o idioma “volta” ao idioma padrão e en_us se houver chaves ausentes.

 

 

Módulo Strings

Usar
Strings de módulo são strings associadas a um módulo específico. Geralmente, são, por exemplo, rótulos de campo e rótulos de nome de painel, mas podem ser usados ​​para qualquer coisa que seja específica de um único módulo.

 

Localização de definição
As strings de módulo são definidas no array $ mod_strings. Isso é inicialmente definido em modules / / language / .lang.php, por exemplo
módulos / Contas / idioma / en_us.lang.php.

 

Localização de personalização
As personalizações podem ser feitas nas strings do módulo adicionando um novo arquivo em
custom / Extension / modules / / Ext / Language / . .php

( neste caso deve ser usado para dar-lhe um nome descritivo). Um exemplo é
custom / Extension / modules / Accounts / Ext / Language / en_us.MyLanguageFile.php.

Consulte a seção de extensões para obter mais informações sobre a pasta Extensões.

 

 

Aplicando Strings

Usar
As sequências de aplicativos são usadas para sequências de linguagem e rótulos que não são específicos para um único módulo. Exemplos disso podem incluir rótulos que aparecerão nos cabeçalhos ou rodapés, rótulos que aparecem nos botões de pesquisa em todo o SuiteCRM ou rótulos para controles de paginação.

 

Localização de definição
As strings do aplicativo são definidas no array $ app_strings.
Isso é inicialmente definido em include / language / .lang.php.

 

Localização de personalização
As personalizações podem ser feitas nas strings do aplicativo de duas maneiras. Primeiramente você pode editar o arquivo custom / include / language / .lang.php. No entanto, para promover a modularidade, é recomendável adicionar um novo arquivo no local custom / Extension / application / Ext / Language / . .php. Por exemplo custom / Extension / application / Ext / Language / es_es.MyAppLanguageFile.php. deve ser usado para dar ao arquivo um nome descritivo.
Um exemplo de redefinição neste diretório seria assim:

<?php
$app_strings[‘LBL_HELLO’] = ‘Hello’;

Consulte a seção de extensões para obter mais informações sobre a pasta Extensões.

 

 

Strings da lista de aplicativos

Usar
As strings da lista de aplicativos são usadas para armazenar os vários menus suspensos e listas usadas no SuiteCRM. A maioria deles são usados ​​como opções para os vários campos enum no SuiteCRM, por exemplo, o tipo de conta ou o estágio de vendas de oportunidade.

 

Localização de definição
As strings da lista de aplicativos são definidas no array $ app_list_strings. Semelhante ao array $ app_strings, é inicialmente definido em include / language / en_us.lang.php.

 

Localização de personalização
As personalizações podem ser feitas nas strings da lista de aplicativos de duas maneiras. Primeiramente você pode editar o arquivo custom / include / language / .lang.php. No entanto, para promover a modularidade, é recomendável adicionar um novo arquivo no local custom / Extension / application / Ext / Language / . .php ( deve ser usado para dar ao arquivo um nome descritivo). Por exemplo custom / Extension / application / Ext / Language / es_es.MyAppListLanguageFile.php.
Consulte a seção de extensões para obter mais informações sobre a pasta Extensões.

 

Por que e quando personalizar
Geralmente, as strings de idioma devem ser alteradas no SuiteCRM usando a ferramenta studio. No entanto, há momentos em que pode ser mais simples adicionar ou modificar strings de idioma, conforme descrito na seção anterior.
Se você estiver importando um grande número de strings de idioma ou opções suspensas, pode ser mais simples criar um novo arquivo para adicionar esses valores. Da mesma forma, se você estiver adicionando uma funcionalidade inteiramente nova, geralmente é melhor simplesmente adicionar essas cadeias de caracteres de idioma como novos valores.

 

Uso
Strings de idioma são usados ​​automaticamente em todo SuiteCRM. Por exemplo, em metadados, você pode especificar as strings de idioma a serem exibidas para os campos. No entanto, em alguns casos, você desejará acessar e usar as cadeias de caracteres de idioma no código personalizado. Existem várias maneiras de fazer isso.

 

Globais
As variáveis ​​$ mod_strings, $ app_strings e $ app_list_strings são todas globais e podem ser acessadas como tal. $ app_strings e $ app_list_strings estarão sempre disponíveis. No entanto, $ mod_strings conterá apenas as strings para o módulo atual (consulte a próxima seção para outras maneiras de acessar $ mod_strings).

Exemplo 9.1: Acessando strings de idioma globalmente

function someFunction(){
     global $mod_strings, $app_strings, $app_list_strings;
     /*
      * Grab the label LBL_NAME for the current module
      * In most modules this will be the label for the
      * name field of the module.
      */
     $modLabel = $mod_strings['LBL_NAME'];
 $appLabel = $app_strings['LBL_GENERATE_LETTER']; /*  * Unlike the previous two examples $appListLabel will be an  * array of the dropdowns keys to it's display labels.  */ $appListLabel = $app_list_strings['aos_quotes_type_dom']; //Here we just log out the strings $GLOBALS['log']->debug("The module label is $modLabel"); $GLOBALS['log']->debug("The app label is $appLabel"); $GLOBALS['log']->debug("The app list label is ".print_r($appListLabel,1)); }

 

Traduzir
Como alternativa ao uso de globais ou, se você estiver em um módulo diferente da string de idioma que deseja recuperar, pode usar o método de tradução.

Exemplo 9.2: traduzir assinatura do método

translate(
         $string,
         $mod='',
         $selectedValue='')

 

$string
A string de idioma a ser traduzida.

$mod
O módulo de onde esta string deve vir. O padrão é o módulo atual, se estiver vazio.

$selectedValue
Para strings suspensas. Isso retornará o rótulo para a chave $ selectedValue.

Aqui está um exemplo do acima em ação. Observe que não precisamos nos preocupar se o rótulo é uma string de módulo, uma string de aplicativo ou uma string de lista de aplicativos, pois todos eles serão verificados (nessa ordem – o primeiro valor correspondente será retornado).

Exemplo 9.3: Exemplo de chamadas de método de tradução

function someFunction(){
    //Grab the label LBL_NAME for the current module
    $modLabel = translate('LBL_NAME');
 //Grab the label LBL_NAME for the AOS_Products module
    $productModLabel = translate('LBL_NAME','AOS_Products');
 $appLabel = translate('LBL_GENERATE_LETTER');
 /*
     * Return the label for the Other option of the aos_quotes_type_dom * We don't care about the module so this is left blank. */ $appListLabel = translate('aos_quotes_type_dom','','Other'); //Here we just log out the strings $GLOBALS['log']->debug("The module label is $modLabel"); $GLOBALS['log']->debug("The module label for Products is $productModLabel"); $GLOBALS['log']->debug("The app label is $appLabel"); $GLOBALS['log']->debug("The app list label is ".print_r($appListLabel,1)); }

 

JavaScript
Finalmente, você pode estar usando JavaScript (por exemplo, em uma visualização) e deseja exibir uma string de idioma. Para isso, você pode usar o método SUGAR.language.get, que é semelhante ao método translate no exemplo 9.3.

Exemplo 9.4: assinatura do método SUGAR.language.get
SUGAR.language.get( module, str );

 

module
O módulo para o qual uma string de idioma será retornada. Você deve fornecer app_strings ou app_list_strings se o rótulo que deseja recuperar não for uma string de módulo. str A chave para a qual você deseja recuperar um rótulo.

Exemplo 9.5: Exemplo de chamadas de método SUGAR.language.get
function someFunction(){ /* * Grab the label LBL_NAME for AOS_Products * Note that, unlike the translate function in example 9.3 * the module name is required. */ var modLabel = SUGAR.language.get(‘AOS_Products’, ‘LBL_NAME’); /* * As mentioned above we explicitly need to pass if we are retrieving * an app_string or app_list_string */ var appLabel = SUGAR.language.get(‘app_strings’, ‘LBL_GENERATE_LETTER’); var appListLabel = SUGAR.language.get(‘app_list_strings’, ‘aos_quotes_type_dom’); //Here we just log out the strings console.log(“The module label is “+modLabel); console.log(“The app label is “+appLabel); console.log(“The app list label is “+appListLabel); }