게시일: 2025년 5월 8일
Translator API 및 Language Detector API를 사용하여 전 세계 시청자가 콘텐츠에 액세스할 수 있도록 합니다. Language Detector API를 사용하면 입력에 사용된 언어를 확인할 수 있고, Translator API를 사용하면 감지된 언어를 다른 언어로 번역할 수 있습니다. 두 API 모두 Chrome에 내장된 AI 모델을 사용하여 클라이언트 측에서 실행되므로 서버 비용이 없어 빠르고 안전하며 무료로 사용할 수 있습니다.
API | 설명 | 웹 | 확장 프로그램 | Chrome 상태 | 인텐트 |
---|---|---|---|---|---|
Translator API | MDN | View | 배송 의도 | ||
Language Detector API | MDN | View | 배송 의도 |
Policybazaar와 JioHotstar라는 두 대형 국제 비즈니스에서 이러한 내장 API를 사용하고 혜택을 누리는 방법을 알아보세요.
Policybazaar의 다국어 고객 지원
Policybazaar는 등록된 고객이 9, 700만 명 이상인 인도 최대 보험 플랫폼입니다. 인도에는 놀라운 언어 다양성이 있으며, 전국에서 다양한 언어와 방언이 사용됩니다.
고객의 다양한 언어 사용을 지원하기 위해 Policybazaar는 언제든지 보험 지원을 제공하고 고객이 선호하는 언어로 시장 통계가 포함된 도움말을 제공하는 두 가지 방식으로 Translator API와 Language Detector API를 구현했습니다.
Finova AI를 통한 보험 지원
보험은 본질적으로 개인적인 제품이며 민감한 정보가 특정 정책의 기반이 됩니다. Policybazaar 고객은 요금제를 선택하는 방법이나 요금제에서 지원하는 내용에 관한 안내를 자주 찾습니다. Policybazaar에는 다양한 언어를 구사하는 직원이 있지만, 여러 시간대와 근무 시간 외에도 작동하는 솔루션이 필요했습니다. 그래서 Policybazaar는 고객이 선호하는 언어로 맞춤형 보험 지원을 제공하는 Finova AI를 구축했습니다.
"Chrome의 언어 감지기 및 번역기 API는 고객의 다양한 언어 요구사항을 충족하여 보험 지원을 더욱 원활하게 제공하는 데 도움이 되었습니다. 따라서 사용자는 눈에 띄는 지연 없이 원하는 인도 언어로 소통할 수 있습니다.'
—리샤브 메로트라, Policybazaar 디자인 생명 보험 사업부 책임자
팀은 브라우저나 사용자 기기에서 발생하는 추론인 클라이언트 측 AI를 선택했습니다. 클라이언트 측 AI는 서버 호스팅 또는 서버리스 AI보다 지연 시간이 짧고 비용이 저렴합니다. 실시간 대화의 속도와 메시지 양을 고려할 때 서버 기반 솔루션은 비용이 많이 들고 시간이 오래 걸립니다.
Chrome의 내장 AI 구현은 브라우저에 내장된 모델을 제공하므로 추론이 온디바이스로 실행됩니다. 기본 요구사항을 충족하는 효과적인 솔루션입니다.
// Language Detector and Translator APIs implemented with React
import { useRef } from "react";
const useService = () => {
const languageModel = useRef(null);
const translatorCapabilitiesModel = useRef(null);
const loadAllModels = async () => {
if (window?.LanguageDetector) {
languageModel.current = await window.LanguageDetector.create().catch(() => null);
}
}
// Detect what language the customer is writing
const detectLanguage = async (message) => {
if (!languageModel.current) return "";
try {
const [result] = await languageModel.current.detect(message);
const { detectedLanguage, confidence } = result || {};
return confidence * 100 > 50 ? detectedLanguage : "";
} catch (err) {
console.error(err);
return "";
}
};
// Translate messages to and from the detected language and English
const translateMessage = async (message, detectedLanguage, targetLanguage = 'en') => {
try {
const modelAvailability = await window.Translator.availability({ sourceLanguage: detectedLanguage, targetLanguage });
if (!['available', 'downloadable'].includes(modelAvailability)) {
return message;
}
const translator = await window.Translator.create({ sourceLanguage: detectedLanguage, targetLanguage });
const translatedMessage = await translator.translate(message);
return translatedMessage;
} catch (error) {
return message;
}
}
return { detectLanguage, translateMessage, loadAllModels };
}
export default useService;
시장 통계를 위한 문서 번역
"Translator API는 기존 React 코드에 통합하기가 매우 쉬웠습니다. Google은 고객과 상담사의 빠른 번역을 위해 이 클라이언트 측 솔루션을 선택했습니다. API는 2초 이내에 1,000자 기사를 번역할 수 있었습니다.'
—아만 소니, Policybazaar 기술 책임자
Policybazaar의 생명보험 비즈니스 부문에서는 고객과 고객 지원 상담사가 시장 상황을 파악할 수 있도록 다양한 도움말을 제공합니다.
힌디어는 사용자들이 널리 사용하는 언어이므로 영어에서 힌디어로의 주문형 문서 번역을 위해 Translator API를 파일럿으로 진행했습니다.
웹사이트에 번역을 추가하기 위해 다음 스크립트를 사용했습니다.
// Initialize the translator, setting source and target languages
var translator = null;
var translatorAvailable = false;
var languageOptionsData = { name: "Hindi", code: "hi" };
var IGNORED_TEXT_NODES = ['RSI', 'NAV'];
function checkForLanguageOptions() {
if (window.Translator) {
translatorAvailable = true;
return window.Translator.create({
sourceLanguage: 'en',
targetLanguage: languageOptionsData.code
}).then(function (createdTranslator) {
translator = createdTranslator;
});
} else {
translatorAvailable = false;
return Promise.resolve();
}
}
/**
* Translate the article content using the Translator API.
* @param {HTMLElement} container - element that holds the article content.
* @return {Promise<string>} A promise that resolves to the container's innerHTML after translation.
*/
function translateArticle(container) {
if (!translatorAvailable) { return Promise.resolve(''); }
var textNodes = getAllTextNodes(container);
var promiseChain = Promise.resolve();
textNodes.forEach(function (element) {
if (IGNORED_TEXT_NODES.indexOf(element.nodeValue) !== -1) return;
var message = element.nodeValue;
promiseChain = promiseChain.then(function () {
return translator.translate(message).then(function (translated) {
element.nodeValue = translated;
}).catch(function (error) {
console.error('Translation error:', error);
});
});
});
return promiseChain.then(function () {
return container.innerHTML;
});
}
고객은 Chrome에서 제공하는 모델과 API를 사용하여 거의 즉각적인 문서 번역에 액세스할 수 있습니다.
JioHotstar에서 동적 자막 번역 제공
다양한 언어로 영화, TV 프로그램, 스포츠, 오리지널 콘텐츠를 제공하는 인도의 선도적인 디지털 스트리밍 플랫폼인 JioHotstar는 자막 번역을 개선하기 위해 Translator API를 살펴보고 있습니다.
JioHotstar는 지역 언어로 콘텐츠를 소비하는 경향이 있는 인도 사용자를 대상으로 합니다. JioHotstar에서 제공하는 콘텐츠 카탈로그가 광범위하므로 모든 사용자의 지역 언어 요구사항을 충족하여 콘텐츠 소비를 개선하기가 어렵습니다.
번역기 API를 사용하면 플랫폼에서 영어 자막을 사용자가 선호하는 언어 또는 지리적 지역에 따라 동적으로 번역할 수 있습니다. 동적 번역 옵션은 누락된 원본 자막을 자동으로 감지하고 Chrome 지원 언어에서 이를 보강하는 언어 선택 메뉴에서 제공됩니다. 이렇게 하면 자막의 사용자 환경이 개선되고 더 많은 사용자가 콘텐츠에 액세스할 수 있습니다.
사용 가능한 동적 언어 목록은 각 사용자의 환경설정 및 지리적 위치에 맞게 조정된 기본 목록을 기반으로 브라우저에서 기존 언어 팩을 확인하여 생성됩니다. 사용자가 언어를 선택하고 해당 언어 팩이 이미 브라우저에 다운로드되어 있으면 번역된 텍스트가 즉시 표시됩니다. 그렇지 않으면 팩이 먼저 다운로드된 후 번역이 시작됩니다.
사용자가 언어를 선택하고 번역이 진행되는 것을 확인하면 언어 팩이 성공적으로 다운로드되었음을 확신할 수 있습니다. 이후에는 자막이 있는 콘텐츠를 선택한 언어로 볼 수 있습니다. 이렇게 하면 선호하는 언어로 콘텐츠를 사용할 수 있는지 알 수 없어 콘텐츠 탐색을 망설일 수 있는 사용자의 불확실성을 해소할 수 있습니다.
다음 코드 샘플은 번역기를 초기화하고 설정합니다.
class SubTitleTranslator {
// Cache translator instances based on source-target language pair, so that we don't create this often for multiple contents
#translatorMap = {};
// Get or create a translator for the language pair
async #createTranslator(sourceLanguage, targetLanguage) {
const key = `${sourceLanguage}-${targetLanguage}`;
const translator = this.#translatorMap[key];
// Check if a translator already exists for a language pair in the map
if (translator) {
return translator;
}
// Check if translation is available
const isAvailable =
(await Translator.availability({ sourceLanguage, targetLanguage })) ===
"available";
if (isAvailable) {
// If available, create a new translator and cache it
this.#translatorMap[key] = await Translator.create({
sourceLanguage,
targetLanguage,
});
return this.#translatorMap[key];
}
return null;
}
// Translate text
async #translateText(text, sourceLanguage, targetLanguage) {
const translator = await this.#createTranslator(
sourceLanguage,
targetLanguage
);
// Returns the given input text if translator is unavailable
if (!translator) {
return text;
}
return await translator.translate(text);
}
// Public method to get a reusable translation function for a specific language pair.
getTranslatorFor(sourceLanguage, targetLanguage) {
return async (text) => {
try {
return this.#translateText(text, sourceLanguage, targetLanguage);
} catch {
return text;
}
};
}
}
그런 다음 Translator API를 사용하여 번역된 자막을 생성합니다.
const translatorFactory = new SubTitleTranslator();
/* Accept English input and translate to Tamil.*/
const translateToTamil = translatorFactory.getTranslatorFor('en','ta');
/* Accept English text as input and translate it to Japanese. */
const translateToJapanese = translatorFactory.getTranslatorFor('en','ja');
/* Accept English input and returns English, as `JTA` is not a valid language code. */
const translateToUnknownLanguage = translatorFactory.getTranslatorFor('en','jta');
최종 렌더링된 자막을 업데이트하는 몇 가지 추가 함수가 있습니다.
/* updateSubtitle is the internal function that updates the rendered subtitle. */
translateToTamil('hi').then(result => updateSubtitle(result))
translateToJapanese('hi').then(result => updateSubtitle(result))
translateToUnknownLanguage('hi').then(result => updateSubtitle(result))
권장사항
Translator API와 Language Detector API의 사용 사례는 다르지만 공통적인 권장사항이 많습니다.
- 번역된 텍스트의 품질을 평가하여 문법과 맥락이 유지되는지 확인합니다. 적절한 경우 사용자가 번역에 관한 의견을 제공할 수 있는 옵션을 제공하는 것이 좋습니다.
- 스피너, 로더, 진행률 표시줄과 같은 진행률 UI를 제공하여 응답성을 나타냅니다. 예를 들어 Policybazaar는 챗봇의 입력 표시기를 사용하여 사용자의 입력을 처리하고 있음을 보여주었습니다.
결론 및 권장사항
이 API로 새로운 것을 구축하고 있나요? X의@ChromiumDev 또는 LinkedIn의 Chromium for Developers에서 공유해 주세요.
리소스
- Chrome에서 내장 API 사용 시작하기
- Language Detector API에 대해 자세히 알아보기
- Translator API 자세히 알아보기
- 블로거 지원: CyberAgent가 콘텐츠 제작을 개선하기 위해 내장 AI를 배포한 방법
감사의 말씀
이 도움말을 작성하고 검토하는 데 도움을 주신 Policybazaar의 리샤브 메로트라와 아만 소니, JioHotstar의 부바네스와란 모한과 안키트 마이니, 알렉산드라 클레퍼, 토마스 스타이너, 겐지 바외에게 감사드립니다.