2010-02-25 48 views
0

我們可以使用谷歌AJAX語言API與EXTjs ????? 我已經嘗試例如用於translitration我有一個HTML文件 和typemarathi.jsExtjs AJAX語言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); 

它工作正常。

,但如果我寫的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'}] 
     }); 

}); 

的文本框,並嘗試通過姓名(名稱屬性control.makeTransliteratable([名字])),那麼它不工作...它說無效的ID錯誤

但如果我通過 - >(HTML textfiled名稱的話)control.makeTransliteratable([MYNAME])能正常工作

(我想鍵入和顯示多個nonEnglish語言數據 編程前端我用EXTJS是有沒有一個她的方式如果是,建議我。請致電

+0

這與您在一小時前問過的問題相同嗎? http://stackoverflow.com/questions/2333826/extjs-with-google-ajax-language-api – 2010-02-25 16:49:51

回答

0

是的,你可以。 除了有人應該清理他的代碼,那是可怕的。

0

是的,你可以。但你應該知道ExtJs會自動爲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' 
    }] 

據我所知你需要翻譯標籤。爲了做到這一點,你應該得到標籤的ID。要做到這一點,你可以使用TextField's label屬性(myField.label.id)。如果你想翻譯了很多元素那麼很可能它會更好地爲您使用的是這樣的:

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

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

control.makeTransliteratable(labelIds); 

但要知道,你應該只渲染所有元素之後調用此。你也可以編寫一個some plugin,將這個功能注入'render'方法。編寫插件是一種更好,但更難一些的方式。