2010-02-25 4 views
0

pouvons-nous utiliser Google AJAX Language API avec EXTjs ????? j'ai essayé exemple translitration i ont un fichier html et typemarathi.jsExtjs AJAX Langue Api

google.load("elements", "1", { packages: "transliteration" }); 

function onLoad() { 
    var options = { 
     sourceLanguage: google.elements.transliteration.LanguageCode.ENGLISH, 
     destinationLanguage: [google.elements.transliteration.LanguageCode.MARATHI], 
     shortcutKey: 'ctrl+g', 
     transliterationEnabled: true 
    }; 

    // Create an instance on TransliterationControl with the required 
    // options. 
    var control = new google.elements.transliteration.TransliterationControl(options); 

    // Enable transliteration in the editable DIV with id 
    // 'transliterateDiv'. 
    control.makeTransliteratable([myname]); 
} 

google.setOnLoadCallback(onLoad); 

il fonctionne très bien.

mais si j'écris le champ de texte dans ExtJS

Ext.onReady(function(){ 
    var form1=new Ext.FormPanel({ 
      renderTo:document.body, 
      frame:true, 
      title:'My First Form', 
      widyh:250, 
      items:[{ xtype:'textfield', fieldLabel:'First name', name:'firstname'}] 
     }); 

}); 

et essayer de passer prenom (attribut name à control.makeTransliteratable ([prenom])) il ne fonctionne pas ... il dit erreur identifiant invalide

mais si je passe -> (html nom textfiled lui) control.makeTransliteratable ([monnom]), il fonctionne très bien

(je veux saisir et afficher plusieurs langues données frontend ne anglaise i programatically utilisé ExtJS est il n'y a pas d'anot sa façon de le faire si oui le suggère moi. pls ..

+0

Est-ce la même question que vous avez posée une heure plus tôt? http://stackoverflow.com/questions/2333826/extjs-with-google-ajax-language-api –

Répondre

0

Oui, vous pouvez. Outre quelqu'un devrait nettoyer son code, c'est gênant.

0

Oui, vous pouvez. Mais vous devez savoir que ExtJs génère automatiquement des identifiants pour les éléments html:

html: 
<div class="x-form-item x-form-label-left x-box-item" id="ext-gen27" style="left: 0px; top: 0px;"> 
    <label style="width: 55px;" class="x-form-item-label" id="ext-gen28">Send To:</label> 
    <div style="padding-left: 60px; width: 668px;" class="x-form-element" id="ext-gen26"> 
     <div class="x-form-field-wrap x-form-field-trigger-wrap x-trigger-wrap-focus" id="ext-gen24" style="width: 668px;"> 
      <input type="text" name="to" id="ext-comp-1002" autocomplete="off" size="24" class=" x-form-text x-form-field x-form-focus" style="width: 651px;"> 
     </div> 
    </div> 
</div> 

js: 
.... 
items: [{ 
     xtype: 'combo', 
     store: ['[email protected]', '[email protected]' ], 
     plugins: [ Ext.ux.FieldReplicator, Ext.ux.FieldLabeler ], 
     fieldLabel: 'Send To', 
     name: 'to' 
    }] 

Si je comprends bien, vous avez besoin de traduire l'étiquette. Pour ce faire, vous devez obtenir l'identifiant de l'étiquette. Pour ce faire, vous pouvez utiliser la propriété TextField's label (myField.label.id). Si vous voulez traduire beaucoup d'éléments alors probablement ce sera mieux pour vous d'utiliser quelque chose comme ceci:

var control = new google.elements.transliteration.TransliterationControl(options); 
var labelIds = []; 

Ext.each(Ext.select('label'), function(item){ 
    labelIds.push(item.id); 
}); 

control.makeTransliteratable(labelIds); 

Mais sachez que vous devez appeler cela ne après avoir rendu tous les éléments. Vous pouvez aussi écrire un some plugin qui va injecter cette fonctionnalité dans la méthode 'render'. Ecrire un plugin est un moyen meilleur mais un peu plus difficile.