Extjs AJAX Language Api - PullRequest
       10

Extjs AJAX Language Api

0 голосов
/ 25 февраля 2010

можем ли мы использовать Google AJAX Language API с EXTjs ????? я пробовал пример для транслитации у меня есть один файл HTML и typemarathi.js

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'}]
        });

});

и попробуйте передать firstname (атрибут name в control.makeTransliteratable ([firstname])), затем он не работает ... он сообщает, что недопустимый идентификатор ошибки

но если я передам -> (html текстовое имя к нему) control.makeTransliteratable ([myname]), он будет работать нормально

(я хочу напечатать и отобразить данные нескольких неанглийских языков программно интерфейс Я использовал EXTjs, есть ли другой способ сделать это, если да, то предложите мне. пожалуйста ..

Ответы [ 2 ]

0 голосов
/ 25 февраля 2010

Да, вы можете. Но вы должны знать, что 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: ['test@example.com', 'someone-else@example.com' ],
        plugins: [ Ext.ux.FieldReplicator, Ext.ux.FieldLabeler ],
        fieldLabel: 'Send To',
        name: 'to'
    }]

Насколько я понимаю, вам нужно перевести этикетку. Для этого вы должны получить идентификатор метки. Для этого вы можете использовать свойство 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);

Но имейте в виду, что вы должны вызывать это только после рендеринга всех элементов. Также вы можете написать некоторый плагин , который внедрит эту функциональность в метод 'render'. Написание плагина лучше, но немного сложнее.

0 голосов
/ 25 февраля 2010

Да, вы можете. Кроме того, кто-то должен очистить свой код, это ужасно.

...