Tools

Estefan Civera

CRM Solutions

Vtiger 6 - Override intelligente della lingua

Vtiger 6 - Override intelligente della linguaNella personalizzazione di un modulo esistente di Vtiger o nella creazione di uno nuovo, capita spesso di dover cambiare il testo di un campo oppure di aggiungere una nuova voce per un nuovo campo.

Solitamente si entra nella cartella language si individua il file e si modifica/inserisce il campo interessato.
Questa soluzione però presenta lo svantaggio che a seguito di un aggiornamento della lingua le modifiche devono essere gestite manualmente.

 

 

Un modo sicuramente più efficiente e migliore è quello di creare, per i soli moduli interessati,  una cartella di nome ovveride entro la quale mettere le entry nuove o quelle modificate, in modo tale che l'aggiornamento della lingua non va  ad inficiare sulle entry custom.

 

Vtiger non dispone nativamente di questa funzionalità, ma con un semplice hack ad un file è possibile ottenerla.
Ecco di seguito i passaggi:

Modificare il file

includes/runtime/LanguageHandler.php'


modificare la funzione

public static function getModuleStringsFromFile($language, $module='Vtiger')

e dopo questo blocco esistente

if(file_exists($file)){
	require $file;
	self::$languageContainer[$language][$module]['languageStrings'] = $languageStrings;
	self::$languageContainer[$language][$module]['jsLanguageStrings'] = $jsLanguageStrings;
}

aggiungere le seguenti righe

$qualifiedNameOvr = 'languages.'.$language.'.overrides.'.$module;
$fileOvr = Vtiger_Loader::resolveNameToPath($qualifiedNameOvr);

$languageStringsOvr = $jsLanguageStringsOvr = array();

if(file_exists($fileOvr)){
    require $fileOvr;
    self::$languageContainer[$language][$module]['languageStrings'] = array_merge($languageStrings, $languageStringsOvr);
    self::$languageContainer[$language][$module]['jsLanguageStrings'] = array_merge($jsLanguageStrings, $jsLanguageStringsOvr);
}


In questo modo oltre che a leggere il file della lingua standard, andrà nella cartella overrides e leggerà il  nuovo file custom (che dovrà avere il  nome del modulo)

Esempio

crm/languages/it_it/SalesOrder.php

conterrà tutte le definizioni standard del modulo per la gestione degli ordini di vendita

$languageStrings = array(
	'SINGLE_SalesOrder'            => 'Ordine di vendita'           , 
	....
);
$jsLanguageStrings = array(
	'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Please remove line item that is deleted', // TODO: Review
.....
 );

Override del file

crm/languages/it_it/override/SalesOrder.php

creo un nuovo file sulla falsa riga del primo ma con gli array con nomi diversi ($languageStrings vs $languageStringsOvr) e ($jsLanguageStrings vs $jsLanguageStringsOvr) come da esempio qui sotto.

$languageStringsOvr = array( 
'NEWKEY' => 'New Value',
);
$jsLanguageStringsOvr = array(
'JS_CREATED_INVOICE_TITLE' => 'Fattura generata',
'JS_CREATED_INVOICE_MESSAGE' => 'Gli ordini di vendita sono stati accorpati in una sola fattura'
);

A questo punto seguento questo schema è possibile fare l'override di tutti i moduli e avere le proprie traduzioni extra al sicuro da aggiornamenti della lingua.

Add comment


Security code


Refresh

Richiedi la Demo di Vtiger CRM

Vuoi una demo gratuita di VTiger CRM?

Non esitare a contarmi! Per info info@estefancivera.net - 3207728697 oppure visita la pagina della demo

joomla templates

INFORMATIVA CIRCA L'UTILIZZO DEI COOKIES
Questo sito utilizza cookie, anche di terze parti. Cliccando su "Ok" acconsenti all’uso dei cookie. Puoi prendere visione dell’informativa estesa sull’uso dei cookie cliccando QUI.

Accetto i cookies provenienti da questo sito.