Благодаря AJAX API для Google Переводчика можно переводить и определять язык текста на веб-странице с помощью JavaScript.
Это новый API, поэтому при его использовании могут возникать проблемы, а документация по нему может не быть идеальной. Потерпите, пока мы заполним все пробелы, и приходите на форум разработчиков AJAX API, чтобы оставить отзывы и обсудить API.
Эта документация рассчитана на тех, кто знаком с программированием на JavaScript и принципами объектно-ориентированного программирования. В Интернете можно найти множество учебников по JavaScript.
Проще всего начать изучение этого API с простого примера. В следующем примере определяется язык указанного текста и выполняется его перевод на английский язык.
<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
google.load("language", "1");
function initialize() {
var text = document.getElementById("text").innerHTML;
google.language.detect(text, function(result) {
if (!result.error && result.language) {
google.language.translate(text, result.language, "en",
function(result) {
var translated = document.getElementById("translation");
if (result.translation) {
translated.innerHTML = result.translation;
}
});
}
});
}
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<div id="text">??????????</div>
<div id="translation"></div>
</body>
</html>
Можно просмотреть этот пример здесь или изменить его и поэкспериментировать с аналогичным примером на площадке для экспериментов с кодом.
Чтобы встроить AJAX API для Google Переводчика на свою страницу, воспользуйтесь загрузчиком AJAX API Google. Обычный загрузчик позволяет загрузить все необходимые AJAX API, в том числе API для Google Переводчика. Необходимо добавить тег скрипта AJAX API Google и вызвать метод google.load("language",
"1"):
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
google.load("language", "1");
</script>
Первый тег скрипта загружает функцию google.load, которая позволяет загружать отдельные API Google. Функция google.load("language", "1") загружает версию 1 API для Google Переводчика. В настоящее время доступна версия 1 AJAX API для Google Переводчика, в будущем могут появиться новые версии. Подробнее об этом рассказано в обсуждении версий ниже.
Второй аргумент метода google.load обозначает версию используемого AJAX API для Google Переводчика. В настоящее время доступна версия 1 AJAX API для Google Переводчика, в будущем могут появиться новые версии.
При значительном изменении API мы увеличиваем номер версии и размещаем уведомление на сайте Google Code и в группе обсуждений AJAX API. Когда это происходит, мы поддерживаем обе версии не менее месяца, чтобы вы могли перевести свой код.
OAКоманда AJAX API для Google Переводчика периодически обновляет API, чтобы исправить недавно обнаруженные ошибки и улучшить производительность. Эти исправления должны только повышать производительность и устранять ошибки, однако могут случайно нарушить работу некоторых клиентов API. Чтобы сообщить о подобных проблемах, воспользуйтесь группой обсуждений AJAX API.
Ряд примеров доступен на площадке для экспериментов с кодом. Их можно редактировать и экспериментировать с ними, чтобы лучше понять, как использовать этот API.
В этом примере показан простой перевод строки JavaScript:
google.language.translate("Hello world", "en", "es", function(result) {
if (!result.error) {
var container = document.getElementById("translation");
container.innerHTML = result.translation;
}
});
Просмотреть пример (translate.html)
В этом примере показано определение языка строки JavaScript. Возвращается код языка:
var text = "¿Dónde está el baño?";
google.language.detect(text, function(result) {
if (!result.error) {
var language = 'unknown';
for (l in google.language.Languages) {
if (google.language.Languages[l] == result.language) {
language = l;
break;
}
}
var container = document.getElementById("detection");
container.innerHTML = text + " is: " + language + "";
}
});
Просмотреть пример (detection.html)
Не все браузеры и операционные системы поддерживают отображение определенных шрифтов Unicode. С помощью API определения поддержки отображения можно узнать, есть ли у пользователя, просматривающего вашу веб-страницу, поддержка отображения шрифтов для заданного языка в пригодном для чтения виде. Обратите внимание, что этот API правильно работает только для шрифтов Unicode. Если на веб-странице используются шрифты, отличные от Unicode, эта функция будет бесполезна. Если для выбранного языка отсутствует поддержка отображения шрифтов, это можно исправить несколькими способами. Подробнее об этом рассказано в этой статье.
В этом примере показано определение поддержки отображения шрифтов:
var result = google.language.isFontRenderingSupported("hi");
var resultStr = "";
if (result == google.language.FontRenderingStatus.SUPPORTED) {
resultStr = "Rendering for " + lang + " is supported.";
} else if (result == google.language.FontRenderingStatus.UNSUPPORTED) {
resultStr = "Rendering for " + lang + " is not supported.";
} else {
resultStr = "Unsupported language " + lang + " for font detection API.";
}
var resultDiv = document.getElementById("displayResultsDiv");
resultDiv.innerHTML += resultStr;
Просмотреть пример (fontdetection.html)
Этот пример аналогичен примеру обычного перевода, но в данном случае язык оригинала неизвестен. Если указать пустую строку в качестве значения языка оригинала, система определит язык и выполнит перевод в одном вызове.
google.language.translate("Hello world", "", "es", function(result) {
if (!result.error) {
var container = document.getElementById("translation");
container.innerHTML = result.translation;
}
});
Просмотреть пример (autotranslate.html)
При использовании AJAX API Google в своем приложении важно показать пользователям логотип Google. Метод google.language.getBranding() поможет вам в этом. Этот метод принимает HTML-элемент DOM или соответствующий идентификатор, а также дополнительные параметры. Логотип присоединяется к указанному элементу.
// attach a "powered by Google" branding
<div id='branding'> </div>
...
google.language.getBranding('branding');
Логотип можно настроить с помощью CSS. Он может иметь один из базовых форматов: 'vertical' или 'horizontal'. Ниже представлен пример, где показаны разные форматы и возможности настройки логотипа с помощью CSS.
Просмотреть пример (branding.html)
Здесь представлены два дополнительных примера, обеспечивающих некоторое взаимодействие. В первом определяется язык заранее подготовленной текстовой строки, но также допускается ввод дополнительного текста. В нем также отображаются показатели достоверности и надежности. Также можно поэкспериментировать с аналогичными примерами на площадке для экспериментов с кодом.
Просмотреть пример (detect.html)
Во втором дополнительном примере выполняется перевод. Кроме того, в нем допускается такое же взаимодействие, как и в примере выше.
Просмотреть пример (translate.html)
В настоящее время AJAX API для Google Переводчика поддерживает перечисленные ниже языки. Технология постоянно улучшается, и коллектив усиленно работает над расширением этого списка, поэтому почаще проверяйте его. Актуальный список также можно найти на странице Переводчика Google.
В настоящий момент AJAX API для Google Переводчика определяет все перечисленные выше языки. Ниже перечислены языки, которые можно перевести. Любая пара языков из следующего списка может быть переведена. Чтобы узнать, можно ли перевести язык, используйте метод google.language.isTranslatable(languageCode);
Для разработчиков на Flash и разработчиков, которым нужен доступ к AJAX API для Google Переводчика из сред, не использующих JavaScript, API предоставляет простой интерфейс с архитектурой REST. Во всех случаях поддерживается метод GET, а ответ предоставляется в виде результата в формате JSON со встроенными кодами состояния. Для функции google.language.translate доступен метод POST. Приложения, использующие этот интерфейс, должны соответствовать всем существующим условиям использования. Особое внимание следует обращать на правильное представление себя в запросах. Приложения всегда ДОЛЖНЫ включать в свои запросы действительный и точный заголовок HTTP referer. Кроме того, желательно (но не обязательно) включать в каждый запрос действительный ключ API. Предоставляя ключ, приложение дает нам дублирующий механизм идентификации, который может понадобиться, чтобы связаться с вами для устранения возможных проблем.
Самый простой способ начать изучение этого интерфейса – попробовать его использовать. С помощью средства командной строки curl или wget выполните следующую команду:
curl -e http://www.my-ajax-site.com \
'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en%7Cit'
Эта команда переводит (/ajax/services/language/translate) фразу Hello World (q=hello%20world) с английского языка на итальянский (langpair=en%7Cit). Тип Content-Type ответа – text/javascript; charset=utf-8. Из приведенного ниже ответа видно, что данные responseData идентичны свойствам, описанным в документации по объектам результатов.
{"responseData": {
"translatedText":"Ciao mondo"
},
"responseDetails": null, "responseStatus": 200}
Помимо такого формата ответов, протокол также поддерживает классический обратный вызов JSON-P, который выполняется при наличии аргумента callback. Если он указан, объект JSON передается указанному обратному вызову в качестве аргумента.
callbackFunction(
{"responseData": {
"translatedText":"Ciao mondo"
},
"responseDetails": null, "responseStatus": 200})
Наконец, этот протокол поддерживает аргументы callback и context. Если указать эти аргументы URL, ответ будет закодирован в виде прямого вызова JavaScript с подписью callback(context, result, status, details, unused). Обратите внимание на некоторую разницу в следующих команде и ответе.
curl -e http://www.my-ajax-site.com \ 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en%7Cit&callback=foo&context=bar'
Эта команда, как и предыдущая, выполняет перевод, НО передает и аргументы callback и context. При наличии этих аргументов вместо объекта JSON в ответе возвращается вызов JavaScript, а объект JSON передается через параметр result.
foo('bar', {"translatedText":"Ciao mondo"}, 200, null)
Полная документация по этому интерфейсу представлена в справочном руководстве по классам.
При наличии проблем с кодом стоит сделать следующее.
С помощью AJAX API для Google Переводчика можно добавить возможность транслитерации любого текстового поля или области на вашей веб-странице. Это даст пользователям возможность печатать на любом языке с помощью клавиатуры с английской раскладкой.
Что такое транслитерация? Транслитерация – это процесс фонетического преобразования слов, записанных в одной системе письма, в другую. Транслитерацию не следует путать с переводом, который связан с изменением языка без изменения значения. При транслитерации из одного алфавита в другой преобразуются звуки слов.
Эта документация рассчитана на тех, кто знаком с программированием на JavaScript и принципами объектно-ориентированного программирования. В Интернете можно найти множество руководств по JavaScript. Кроме того, вы должны понимать, что такое транслитерация с точки зрения пользователя. Прочитайте информацию о том, как использовать транслитерацию для индийских или арабских языков. Дополнительные сведения можно найти в этой статье.
Эта концептуальная документация не является полной и исчерпывающей. Она лишь позволяет быстро ознакомиться с транслитерацией и начать использовать ее на своей странице.
Проще всего начать изучение этого API с простого примера. В следующем примере включается транслитерация текстовой области на язык хинди, благодаря чему пользователи могут печатать на хинди с помощью клавиатуры с английской раскладкой. Кроме того, пользователи могут переключаться между английским и хинди с помощью горячих клавиш Ctrl+G. Информацию о выборе другого языка можно найти в справочном руководстве по классам API.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
// Load the Google Transliteration API
google.load("elements", "1", {
packages: "transliteration"
});
function onLoad() {
var options = {
sourceLanguage:
google.elements.transliteration.LanguageCode.ENGLISH,
destinationLanguage:
[google.elements.transliteration.LanguageCode.HINDI],
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 textbox with id
// 'transliterateTextarea'.
control.makeTransliteratable(['transliterateTextarea']);
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
Type in Hindi (Press Ctrl+g to toggle between English and Hindi)<br>
<textarea id="transliterateTextarea" style="width:600px;height:200px"></textarea>
</body>
</html>
Просмотреть пример на площадке для экспериментов с кодом
AJAX API транслитерации входит в модуль "elements". Чтобы встроить API транслитерации Google, сначала нужно добавить тег скрипта AJAX API Google:
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
Этот скрипт загрузит функцию google.load, которая позволит загружать отдельные API Google. Вызов функции google.load для загрузки API транслитерации Google выглядит следующим образом:
<script type="text/javascript">
google.load("elements", "1", {
packages: "transliteration"
});
</script>
При этом будет загружена версия 1 API транслитерации. В настоящее время доступна версия 1 API транслитерации, в будущем могут появиться новые версии. Подробнее об этом рассказано в обсуждении версий ниже.
Второй аргумент функции google.load обозначает версию используемого AJAX API для Google Переводчика. В настоящее время доступна версия 1 API транслитерации, в будущем могут появиться новые версии.
При значительном изменении API мы увеличиваем номер версии и размещаем уведомление на сайте Google Code и в группе обсуждений AJAX API. Когда это происходит, мы поддерживаем обе версии не менее месяца, чтобы вы могли перевести свой код.
Команда AJAX API для Google Переводчика периодически обновляет API, чтобы исправить недавно обнаруженные ошибки и улучшить производительность. Эти исправления должны только повышать производительность и устранять ошибки, однако могут случайно нарушить работу некоторых клиентов API. Чтобы сообщить о подобных проблемах, воспользуйтесь группой обсуждений AJAX API.
Этот пример очень похож на базовый пример, представленный во введении, но он также содержит элемент управления для переключения между английским языком и хинди при наборе текста. В нем включена транслитерация для двух текстовых полей.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
// Load the Google Transliteration API
google.load("elements", "1", {
packages: "transliteration"
});
function onLoad() {
var options = {
sourceLanguage: 'en', // or google.elements.transliteration.LanguageCode.ENGLISH,
destinationLanguage: ['hi'], // or [google.elements.transliteration.LanguageCode.HINDI],
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 textfields with the given ids.
var ids = [ "transl1", "transl2" ];
control.makeTransliteratable(ids);
// Show the transliteration control which can be used to toggle between
// English and Hindi.
control.showControl('translControl');
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
<center>Type in Hindi (Press Ctrl+g to toggle between English and Hindi)</center>
<div id='translControl'></div>
<br>Title : <input type='textbox' id="transl1"/>
<br>Body<br><textarea id="transl2" style="width:600px;height:200px"></textarea>
</body>
</html>
Просмотреть пример (singlelangtransliteration.html)
Этот пример очень похож на пример выше, но он также содержит элемент управления для выбора языка транслитерации. В этом примере с помощью параметра ['te', 'ta', 'ml'] в качестве значения параметра destinationLanguage.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
// Load the Google Transliteration API
google.load("elements", "1", {
packages: "transliteration"
});
function onLoad() {
var options = {
sourceLanguage: 'en',
destinationLanguage: ['hi','kn','ml','ta','te'],
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 textfields with the given ids.
var ids = [ "transl1", "transl2" ];
control.makeTransliteratable(ids);
// Show the transliteration control which can be used to toggle between
// English and Hindi and also choose other destination language.
control.showControl('translControl');
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
<center>Type in Indian languages (Press Ctrl+g to toggle between English and Hindi)</center>
<div id='translControl'></div>
<br>Title : <input type='textbox' id="transl1"/>
<br>Body<br><textarea id="transl2" style="width:600px;height:200px"></textarea>
</body>
</html>
Просмотреть пример (multilangtransliteration.html)
Это более сложный пример, в котором показано создание пользовательского элемента управления транслитерацией. В нем используется флажок для переключения между английским языком и хинди при наборе текста, а также раскрывающийся список для изменения языка транслитерации. Кроме того, в нем регистрируются обработчики различных событий, которые может вызывать TransliterationControl. Информацию о возможных событиях можно найти в справочном руководстве по классам API.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">
// Load the Google Transliteration API
google.load("elements", "1", {
packages: "transliteration"
});
var transliterationControl;
function onLoad() {
var options = {
sourceLanguage: 'en',
destinationLanguage: ['ar','hi','kn','ml','ta','te'],
transliterationEnabled: true,
shortcutKey: 'ctrl+g'
};
// Create an instance on TransliterationControl with the required
// options.
transliterationControl =
new google.elements.transliteration.TransliterationControl(options);
// Enable transliteration in the textfields with the given ids.
var ids = [ "transl1", "transl2" ];
transliterationControl.makeTransliteratable(ids);
// Add the STATE_CHANGED event handler to correcly maintain the state
// of the checkbox.
transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.STATE_CHANGED,
transliterateStateChangeHandler);
// Add the SERVER_UNREACHABLE event handler to display an error message
// if unable to reach the server.
transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.SERVER_UNREACHABLE,
serverUnreachableHandler);
// Add the SERVER_REACHABLE event handler to remove the error message
// once the server becomes reachable.
transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.SERVER_REACHABLE,
serverReachableHandler);
// Set the checkbox to the correct state.
document.getElementById('checkboxId').checked =
transliterationControl.isTransliterationEnabled();
// Populate the language dropdown
var destinationLanguage =
transliterationControl.getLanguagePair().destinationLanguage;
var languageSelect = document.getElementById('languageDropDown');
var supportedDestinationLanguages =
google.elements.transliteration.getDestinationLanguages(
google.elements.transliteration.LanguageCode.ENGLISH);
for (var lang in supportedDestinationLanguages) {
var opt = document.createElement('option');
opt.text = lang;
opt.value = supportedDestinationLanguages[lang];
if (destinationLanguage == opt.value) {
opt.selected = true;
}
try {
languageSelect.add(opt, null);
} catch (ex) {
languageSelect.add(opt);
}
}
}
// Handler for STATE_CHANGED event which makes sure checkbox status
// reflects the transliteration enabled or disabled status.
function transliterateStateChangeHandler(e) {
document.getElementById('checkboxId').checked = e.transliterationEnabled;
}
// Handler for checkbox's click event. Calls toggleTransliteration to toggle
// the transliteration state.
function checkboxClickHandler() {
transliterationControl.toggleTransliteration();
}
// Handler for dropdown option change event. Calls setLanguagePair to
// set the new language.
function languageChangeHandler() {
var dropdown = document.getElementById('languageDropDown');
transliterationControl.setLanguagePair(
google.elements.transliteration.LanguageCode.ENGLISH,
dropdown.options[dropdown.selectedIndex].value);
}
// SERVER_UNREACHABLE event handler which displays the error message.
function serverUnreachableHandler(e) {
document.getElementById("errorDiv").innerHTML =
"Transliteration Server unreachable";
}
// SERVER_UNREACHABLE event handler which clears the error message.
function serverReachableHandler(e) {
document.getElementById("errorDiv").innerHTML = "";
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
<center>Type in Indian languages (Press Ctrl+g to toggle between English and Hindi)</center>
<div id='translControl'>
<input type="checkbox" id="checkboxId" onclick="javascript:checkboxClickHandler()"></input>
Type in <select id="languageDropDown" onchange="javascript:languageChangeHandler()"></select>
</div>
<br>Title : <input type='textbox' id="transl1"/>
<br>Body<br><textarea id="transl2" style="width:600px;height:200px"></textarea>
<br><div id="errorDiv"></div>
</body>
</html>
Просмотреть пример (customtransliteration.html)
Низкоуровневый API транслитерации использует AJAX API для Google Переводчика (а не пакет elements, который используется остальными API транслитерации). Чтобы встроить AJAX API для Google Переводчика на свою страницу, воспользуйтесь загрузчиком AJAX API Google и следуйте приведенным здесь инструкциям.
В этом примере показана простая транслитерация строки JavaScript:
google.language.transliterate(["Namaste"], "en", "hi", function(result) {
if (!result.error) {
var container = document.getElementById("transliteration");
if (result.transliterations && result.transliterations.length > 0 &&
result.transliterations[0].transliteratedWords.length > 0) {
container.innerHTML = result.transliterations[0].transliteratedWords[0];
}
}
});
Просмотреть пример (transliterate.html)
В настоящий момент API транслитерации поддерживает транслитерацию с английской версии латинского алфавита на следующие языки:
Чтобы элемент управления транслитерации, отображаемый с помощью метода showControl, вписался в вашу веб-страницу, его можно настроить, добавив дополнительные классы CSS в файл CSS по умолчанию. Файл CSS по умолчанию автоматически загружается при вызове функции google.load(). Он определяет стили для элемента управления и меню подсказок при транслитерации, которое появляется при нажатии или редактировании транслитерированного слова. Если загружать CSS по умолчанию не нужно, задайте для параметра "nocss" значение true.
google.load("elements", "1", {packages: "transliteration", "nocss" : true});
Меню выбора языка, кнопка, указывающая язык, выбранный пользователем, и меню подсказок размещаются в элементах div, обозначенных определенными классами CSS. Чтобы изменить их стиль под свою страницу, можно переопределить правила CSS, применяемые к этим элементам. Изучить файл CSS по умолчанию, загружаемый с пакетом API транслитерации, можно с помощью файла CSS транслитерации с комментариями. Ниже перечислены классы CSS, которые могут пригодиться для настройки:
Например, определив параметр background-color в goog-transliterate-indic-suggestion-menu, можно изменить цвет фона меню подсказок со значения по умолчанию #F0A000 на новое.
Для языков с письмом справа налево, таких как арабский, API по умолчанию автоматически изменяет направление вывода текста в соответствии с используемым языком и набранным текстом. (Направление текста задается в HTML и JavaScript с помощью свойства direction, которое принимает значения 'ltr' и 'rtl'. Оно влияет на положение курсора и выравнивание в текстовой области.)
Просмотреть пример транслитерации арабского текста (arabictransliteration.html)
API транслитерации поддерживается браузером Firefox 1.5 и более поздних версий в операционных системах Windows и Linux, а также браузером Internet Explorer 6.0 и более поздних версий в операционной системе Windows (предпочтительно Windows XP). API транслитерации можно загрузить без ошибок практически во всех браузерах, поэтому можно спокойно загружать его перед проверкой на совместимость.
В различных приложениях иногда требуется разное поведение для пользователей, использующих несовместимые браузеры. В API транслитерации представлен глобальный метод google.elements.transliteration.isBrowserCompatible() для проверки на совместимость, но он не предоставляет никакого автоматического поведения при обнаружении несовместимого браузера. Большинство примеров в этом документе не содержат проверки браузера на совместимость или отображения сообщений об ошибке для более старых версий браузеров. Совершенно очевидно, что в настоящих приложениях должны быть предусмотрены соответствующие действия для несовместимых браузеров. Но мы исключили подобные проверки для упрощения примеров.
API транслитерации обрабатывает большие объемы текста UTF-8, поэтому для страницы нужно задать тип содержания UTF-8, добавив метатег <meta
http-equiv="Content-Type" content="text/html; charset=utf-8"/>. Без этого метатега API транслитерации не будет правильно работать на веб-странице.
При наличии проблем с кодом стоит сделать следующее.
С помощью AJAX API виртуальной клавиатуры для Google Переводчика можно добавить экранную клавиатуру для любого текстового поля или области на вашей веб-странице. Это позволит посетителям веб-сайта печатать на любом языке с помощью клавиатуры с удобной для них раскладкой.
Что такое виртуальная клавиатура? Виртуальная клавиатура используется для перевода введенного текста с одной раскладки клавиатуры на другую.
Эта документация рассчитана на тех, кто знаком с программированием на JavaScript и принципами объектно-ориентированного программирования. В Интернете можно найти множество учебников по JavaScript.
Эта концептуальная документация не является полной и исчерпывающей. Она лишь позволяет быстро ознакомиться с виртуальной клавиатурой и начать использовать ее на своей странице.
Проще всего начать изучение этого API с простого примера. В следующем примере показано включение виртуальной клавиатуры с русской раскладкой для текстовой области, чтобы пользователи могли набирать текст по-русски с помощью клавиатуры с английской раскладкой или мыши. Пользователи могут скрыть или отобразить виртуальную клавиатуру с помощью ее кнопок + и -. О выборе другой раскладки рассказано в справочном руководстве по классам API.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Load the Google Onscreen Keyboard API
google.load("elements", "1", {
packages: "keyboard"
});
function onLoad() {
var kbd = new google.elements.keyboard.Keyboard(
[google.elements.keyboard.LayoutCode.RUSSIAN],
['t1']);
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
Type in Russian<br/>
<textarea id="t1" style="width: 600px; height: 200px;"></textarea>
</body>
</html>
Можно поэкспериментировать с аналогичным примером на площадке для экспериментов с кодом.
AJAX API виртуальной клавиатуры входит в модуль "elements". Чтобы встроить API виртуальной клавиатуры Google на свою страницу, сначала нужно добавить тег скрипта AJAX API Google:
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
Этот скрипт загрузит функцию google.load, которая позволит загружать отдельные API Google. Вызов функции google.load для загрузки API виртуальной клавиатуры Google выглядит следующим образом:
<script type="text/javascript">
google.load("elements", "1", {
packages: "keyboard"
});
</script>
Функция загружает версию 1 API виртуальной клавиатуры. В настоящее время доступна версия 1 API виртуальной клавиатуры, в будущем могут появиться новые версии. Подробнее об этом рассказано в обсуждении версий ниже.
Второй аргумент функции google.load обозначает версию используемого AJAX API для Google Переводчика. В настоящее время доступна версия 1 API виртуальной клавиатуры, в будущем могут появиться новые версии.
При значительном изменении API мы обновляем номер версии и размещаем уведомление на сайте Google Code и в группе обсуждений AJAX API. Когда это происходит, мы поддерживаем обе версии не менее месяца, чтобы вы могли перевести свой код.
Команда AJAX API для Google Переводчика периодически обновляет API, чтобы исправить недавно обнаруженные ошибки и улучшить производительность. Эти исправления должны только повышать производительность и устранять ошибки, но могут случайно нарушить работу некоторых клиентов API. Чтобы сообщить о подобных проблемах, воспользуйтесь группой обсуждений AJAX API.
В следующем примере показано, как реализовать отображение и скрытие клавиатуры в своем коде. Когда виртуальная клавиатура скрыта, пользователь вводит текст с помощью раскладки обычной клавиатуры.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Load the Google Onscreen Keyboard API
google.load("elements", "1", {
packages: "keyboard"
});
var kbd; // A Keyboard object.
function onLoad() {
// Create an instance on Keyboard.
kbd = new google.elements.keyboard.Keyboard([
google.elements.keyboard.LayoutCode.POLISH],
['t1']);
}
// If the keyboard is visible, hide it.
// If the keyboard is invisible, show it.
function toggleVisible() {
var button = document.getElementById("btVisible");
if (kbd.isVisible()) {
kbd.setVisible(false);
document.getElementById('btVisible').value = "Show";
} else {
kbd.setVisible(true);
document.getElementById('btVisible').value = "Hide";
}
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
This is a demo for setVisible/isVisible.<br/>
<input type="button" onclick="toggleVisible()" id="btVisible" value="Hide"></input><br/>
<textarea type="text" id="t1" style="width: 600px; height: 200px;"></textarea>
</body>
</html>
Можно поэкспериментировать с аналогичным примером на площадке для экспериментов с кодом.
Следующий пример очень похож на базовый пример, показанный во введении, но в нем также показана реализация переключения раскладки виртуальной клавиатуры в коде:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Load the Google Onscreen Keyboard API
google.load("elements", "1", {
packages: "keyboard"
});
var kbd; // A Keyboard object.
function onLoad() {
// Create an instance on Keyboard.
kbd = new google.elements.keyboard.Keyboard([
google.elements.keyboard.LayoutCode.RUSSIAN],
['t1']);
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
This is a demo for setLayout/getLayout.<br/>
<script type="text/javascript">
</script>
<input type="button" onclick="kbd.setLayout('ru')" value="Russian" /><br/>
<input type="button" onclick="kbd.setLayout('hi')" value="Hindi" /><br/>
<input type="button" onclick="kbd.setLayout('th')" value="Thai" /><br/>
<input type="button" onclick="kbd.setLayout('ar')" value="Arabic" /><br/>
<input type="button" onclick="kbd.setLayout('pl')" value="Polish" /><br/>
<input type="button" onclick="kbd.setLayout('fa')" value="Persian" /><br/>
<input type="text" id="t1" style="width: 600px"></input>
</body>
</html>
Можно поэкспериментировать с аналогичным примером на площадке для экспериментов с кодом.
В следующем примере перечислены поддерживаемые раскладки и продемонстрировано отображение меню раскладок на странице:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Load the Google Onscreen Keyboard API
google.load("elements", "1", {
packages: "keyboard"
});
var kbd; // A Keyboard object.
// Draw a list of keyboard layouts in their native languages.
// User can click any of them to switch to that keyboard layout.
function drawMenu() {
html = ["<ul>"];
for (var i in google.elements.keyboard.LayoutCode) {
var code = google.elements.keyboard.LayoutCode[i];
var name = google.elements.keyboard.getLayoutName(code);
html.push("<li><a href='#' onclick='kbd.setLayout(\"", code, "\")'>",
name, "</a></li>");
}
html.push("</ul>");
document.getElementById("menu").innerHTML = html.join('');
}
function onLoad() {
kbd = new google.elements.keyboard.Keyboard(
[google.elements.keyboard.LayoutCode.RUSSIAN],
['t1']);
drawMenu();
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
This is a demo for LayoutCode and getLayoutName.<br/>
<div id="menu"></div><br/>
<textarea id="t1" style="width: 600px; height: 200px;"></textarea>
</body>
</html>
Этот пример аналогичен базовому примеру, показанному во введении. Но в нем представлены два объекта Keyboard, каждый из которых управляет двумя группами текстовых полей. На странице имеется четыре текстовых поля. В двух из них используется виртуальная клавиатура с тайской раскладкой, а в двух других – с арабской.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// Load the Google Onscreen Keyboard API
google.load("elements", "1", {
packages: "keyboard"
});
function onLoad() {
var kbd1 = new google.elements.keyboard.Keyboard(
[google.elements.keyboard.LayoutCode.THAI],
['th1', 'th2']);
var kbd2 = new google.elements.keyboard.Keyboard(
[google.elements.keyboard.LayoutCode.ARABIC],
['ar1', 'ar2']);
}
google.setOnLoadCallback(onLoad);
</script>
</head>
<body>
Type in Thai and Arabic<br/>
<textarea id="th1" style="width: 300px; height: 80px;"></textarea>
<textarea id="ar1" style="width: 300px; height: 80px;"></textarea>
<textarea id="th2" style="width: 300px; height: 80px;"></textarea>
<textarea id="ar2" style="width: 300px; height: 80px;"></textarea>
</body>
</html>
Можно поэкспериментировать с аналогичным примером на площадке для экспериментов с кодом.
В настоящее время API виртуальной клавиатуры поддерживает следующие раскладки клавиатуры:
В ближайшем будущем мы планируем постепенно расширить этот список. Проверяйте этот документ, чтобы быть в курсе последних изменений.
API виртуальной клавиатуры поддерживается браузером Firefox 3 и более поздних версий в операционных системах Windows и Linux, а также браузером Internet Explorer 6.0 и более поздних версий в операционной системе Windows (предпочтительно Windows XP). API виртуальной клавиатуры можно загрузить без ошибок практически во всех браузерах, поэтому можно спокойно загружать его перед проверкой на совместимость.
При наличии проблем с кодом стоит сделать следующее.