ID Verification provides ID Verification - KYC SDK for web that is used to implement the electronic Know Your Customer (eKYC) feature in a browser or an embedded WebView. This topic describes how to integrate ID Verification - KYC SDK for web with a PC or an HTML5 page.
Prerequisites
Operating system: Android 5 or later and iOS 11 or later.
Browser:
iOS: Safari is recommended. iOS 14.3 and later support Google Chrome, Mozilla Firefox, Microsoft Edge, and Apple WKWebView.
Android: Chrome 60 or later and Firefox 58 or later are recommended. The supported browsers vary based on the device.
Permission: The network and camera permissions are granted. Media collection requires HTTPS transmission.
Procedure
Add the following JavaScript file to your code and call the
getMetaInfo()
function to obtain the value of the MetaInfo parameter:
<script type="text/javascript" src="https://hkwebcdn.yuncloudauth.com/cdn/jsvm_all.js" ></script>
When you call the verification operation of ID Verification - KYC, you must pass the return value to the MetaInfo parameter. KYC is short for Know Your Customer.
Call the Initialize operation of ID Verification to obtain the values of the TransactionId and TransactionUrl parameters. Then, access the URL from your browser. For more information about how to call the verification operation, see Initialize.
Sample code
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Title</title>
<!-- Add the JavaScript file and globally inject the getMetaInfo function. -->
<!-- Introduce this JS, inject the getMetaInfo method globally -->
<script type="text/javascript" src="https://hkwebcdn.yuncloudauth.com/cdn/jsvm_all.js" ></script>
</head>
<body>
<div></div>
<script>
// Pass meta information when you call the Initialize operation.
var MetaInfo = window.getMetaInfo();
// Call the Initialize operation to obtain the TransactionUrl parameter.
var TransactionUrl = ''; // The value is returned by the Initialize operation.
// Access the URL that is specified by the TransactionUrl parameter to start verification.
window.location.href = TransactionUrl;
</script>
</body>
</html>
Response parsing
If you specify a custom value for the ReturnUrl parameter when you call the Initialize operation, the verification result is appended to the ReturnUrl parameter as the response parameter and returned after the verification process is complete. The value of the response parameter varies based on the incoming routing mode.
Routing mode | Specified ReturnUrl | ReturnUrl after verification |
Common web page | https://aliyundoc.com | https://aliyundoc.com/? response=%7B%22resultCode%22%3A%22%22%2C%22resultMessage%22%3A%22%22%2C%22ocrResult%22%3A%7B%22code%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%2C%22faceResult%22%3A%7B%22code%22%3A%22%22%2C%22subCode%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%7D |
https://aliyundoc.com/index.html | https://aliyundoc.com/index.html?response=%7B%22resultCode%22%3A%22%22%2C%22resultMessage%22%3A%22%22%2C%22ocrResult%22%3A%7B%22code%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%2C%22faceResult%22%3A%7B%22code%22%3A%22%22%2C%22subCode%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%7D | |
History routing without a page anchor (#) | https://aliyundoc.com/xxx/ | https://aliyundoc.com/xxx?response=%7B%22resultCode%22%3A%22%22%2C%22resultMessage%22%3A%22%22%2C%22ocrResult%22%3A%7B%22code%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%2C%22faceResult%22%3A%7B%22code%22%3A%22%22%2C%22subCode%22%3A%22%22%2C%22reason%22%3A%22%22%2C%22extInfo%22%3A%7B%22certifyId%22%3A%22%22%7D%7D%7D |
History routing with a page anchor (#) | https://aliyundoc.com/xxx/#xxx | https://aliyundoc.com/xxx?response=%257B%2522resultCode%2522%253A%2522%2522%252C%2522resultMessage%2522%253A%2522%2522%252C%2522ocrResult%2522%253A%257B%2522code%2522%253A%2522%2522%252C%2522reason%2522%253A%2522%2522%252C%2522extInfo%2522%253A%257B%2522certifyId%2522%253A%2522%2522%257D%257D%252C%2522faceResult%2522%253A%257B%2522code%2522%253A%2522%2522%252C%2522subCode%2522%253A%2522%2522%252C%2522reason%2522%253A%2522%2522%252C%2522extInfo%2522%253A%257B%2522certifyId%2522%253A%2522%2522%257D%257D%257D#xxx |
Hash routing | https://aliyundoc.com/#/aaa/bbb | https://aliyundoc.com/?response=%257B%2522resultCode%2522%253A%2522%2522%252C%2522resultMessage%2522%253A%2522%2522%252C%2522ocrResult%2522%253A%257B%2522code%2522%253A%2522%2522%252C%2522reason%2522%253A%2522%2522%252C%2522extInfo%2522%253A%257B%2522certifyId%2522%253A%2522%2522%257D%257D%252C%2522faceResult%2522%253A%257B%2522code%2522%253A%2522%2522%252C%2522subCode%2522%253A%2522%2522%252C%2522reason%2522%253A%2522%2522%252C%2522extInfo%2522%253A%257B%2522certifyId%2522%253A%2522%2522%257D%257D%257D/#/aaa/bbb |
Sample code for parsing a response
Common web page
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<script>
// Configure window.location.href.
// window.location.href = https://aliyundoc.com
// Or
// window.location.href = https://aliyundoc.com/index.html
// Initialize the URL object.
var url = new URL(window.location.href);
// Parse the response.
var response = JSON.parse(url.searchParams.get('response'));
// response = {
// resultCode: '',
// resultMessage: '',
// ocrResult: {code: '',reason: '', extInfo: {certifyId: ''}},
// faceResult: {code: '',subCode: '',reason: '', extInfo: {certifyId: ''}}
// }
</script>
</body>
</html>
History routing without a page anchor (#)
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<script>
// Configure window.location.href.
// window.location.href = https://aliyundoc.com/xxx
// Initialize the URL object.
var url = new URL(window.location.href);
// Parse the response.
var response = JSON.parse(url.searchParams.get('response'));
// response = {
// resultCode: '',
// resultMessage: '',
// ocrResult: {code: '',reason: '', extInfo: {certifyId: ''}},
// faceResult: {code: '',subCode: '',reason: '', extInfo: {certifyId: ''}}
// }
</script>
</body>
</html>
History routing with a page anchor (#)
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<script>
// Configure window.location.href.
// window.location.href = https://aliyundoc.com/xxx/#xxx
// Initialize the URL object.
var url = new URL(window.location.href);
// Parse the response.
var response = JSON.parse(
decodeURIComponent(url.searchParams.get('response'))
);
// response = {
// resultCode: '',
// resultMessage: '',
// ocrResult: {code: '',reason: '', extInfo: {certifyId: ''}},
// faceResult: {code: '',subCode: '',reason: '', extInfo: {certifyId: ''}}
// }
</script>
</body>
</html>
Hash routing
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<script>
// Configure window.location.href.
// window.location.href = https://aliyundoc.com/#/aaa/bbb
// Initialize the URL object.
var url = new URL(window.location.href);
// Parse the response.
var response = JSON.parse(
decodeURIComponent(url.searchParams.get('response'))
);
// response = {
// resultCode: '',
// resultMessage: '',
// ocrResult: {code: '',reason: '', extInfo: {certifyId: ''}},
// faceResult: {code: '',subCode: '',reason: '', extInfo: {certifyId: ''}}
// }
</script>
</body>
</html>
Client-side result codes
Result code | Billing required | Description |
1000 | Yes | The customer completed the face verification process and passed the verification. The result is for reference only. You can obtain the final verification result and perform the next operation by calling the CheckResult operation. |
1001 | Yes | The customer completed the face verification process but failed to pass the verification. The result is for reference only. You can obtain the final verification result and perform the next operation by calling the CheckResult operation. |
1002 | No | A system error occurred. |
1003 | No | The SDK failed to be initialized. Check whether the client time is valid. |
1004 | No | A camera error occurred. To fix the error, perform the following operations:
|
1005 | No | A network error occurred. |
1006 | No | The customer unexpectedly exited. |
1007 | No | The transaction ID is invalid. |
1009 | No | The timestamp of the client is invalid. |
1011 | No | The specified document type does not match the type of the submitted document. |
1012 | No | The critical information is missing after the document verification or the format verification failed. |
1013 | No | The image quality does not meet the requirements. |
1014 | No | The number of errors exceeds the upper limit. |
Add a language
Convert new language configurations to JSON strings based on a configuration template and call the Initialize operation based on the input parameters to initialize a request. This helps implement the final display effects.
Configuration methods
Language configurations of general text: Add the key and content of a new language to the languageContent parameter.
Language configurations of optical character recognition (OCR) results: Add the key and content of a new language to the
label
andplaceholder
parameters of the ocrResultContent parameter.New language configurations: Add the key and label of a new language to the
key
andlabel
parameters of the supportedLanguage parameter. The key and label are required when you change a language.
Custom language configurations are supported only if ID Verification - KYC SDK for web is integrated with an HTML5 page.
Examples
const languageConfig = {
defaultLanguage: 'ja',
languageContent: {
'请将证件正面放入框内': {
zh: '请将证件正面放入框内(修改)', // Modify the default text.
ja: '身分証明書の表面をフレームに入れてください', // Add text in a new language.
},
// ...
},
ocrResultContent: {
// ID card of China
CHNFields: {
name: {
label: { ja: "中国語の名前", },
placeholder: {
ja: "中国語の名前",
},
},
// ...
},
},
supportedLanguage: [
{
key: 'ja',
label: 'Japanese'
}
],
titleTranslate: {
ekyc: {
zh: 'eKYC',
ja: 'IDと顔認証',
},
// ...
}
};
Configuration template
{
"defaultLanguage": "zh",
"languageContent": {
"请将证件正面放入框内": {
"zh": "请将证件正面放入框内",
"TW": "請將證件正面放入框內",
"en": "Put the front side of the certificate within the frame."
},
"提交": {
"zh": "提交",
"TW": "提交",
"en": "Submit"
},
"识别超时": {
"zh": "识别超时",
"TW": "識別超時",
"en": "Recognition times out."
},
"重新拍摄": {
"zh": "重新拍摄",
"TW": "重新拍攝",
"en": "Retake a photo."
},
"离远一点": {
"zh": "离远一点",
"TW": "離遠一點",
"en": "Move further away."
},
"靠近一点": {
"zh": "靠近一点",
"TW": "靠近一點",
"en": "Move closer."
},
"没有检测到脸": {
"zh": "没有检测到脸",
"TW": "未能檢測到臉孔",
"en": "No face is detected."
},
"请保持不动": {
"zh": "请保持不动",
"TW": "請保持不動",
"en": "Stay still."
},
"脸部亮一点": {
"zh": "脸部亮一点",
"TW": "臉部亮一點",
"en": "Brighten up your face."
},
"眨眨眼": {
"zh": "眨眨眼",
"TW": "眨眨眼",
"en": "Blink"
},
"正在处理": {
"zh": "正在处理",
"TW": "處理中…",
"en": "Processing"
},
"请确保证件清晰完整,无遮挡和反光": {
"zh": "请确保证件清晰完整,无遮挡和反光",
"TW": "請確保證件清晰完整,無遮擋和反光",
"en": "Make sure that the certificate image is clear, complete, and free of obstructions and glare."
},
"识别失败次数超限": {
"zh": "识别失败次数超限",
"TW": "識別失敗次數超限",
"en": "The number of attempts reaches the limit. Try again later."
},
"识别结果": {
"zh": "识别结果",
"TW": "識別結果",
"en": "OCR result"
},
"确认无误": {
"zh": "确认无误",
"TW": "確認無誤",
"en": "Submit"
},
"再试一次": {
"zh": "再试一次",
"TW": "再試一次",
"en": "Try again."
},
"退出": {
"zh": "退出",
"TW": "退出",
"en": "Exit"
},
"确定退出吗?": {
"zh": "确定退出吗?",
"TW": "確定退出嗎?",
"en": "Are you sure that you want to exit?"
},
"取消": {
"zh": "取消",
"TW": "取消",
"en": "Cancel"
},
"确定": {
"zh": "确定",
"TW": "確定",
"en": "OK"
},
"刷脸次数过多,请稍后再试": {
"zh": "刷脸次数过多,请稍后再试",
"TW": "臉部驗證次數過多,請稍後再試",
"en": "The number of facial recognition attempts exceeds the limit. Try again later."
},
"我知道了": {
"zh": "我知道了",
"TW": "我知道了",
"en": "OK"
},
"操作超时": {
"zh": "操作超时",
"TW": "操作超時",
"en": "The operation timed out."
},
"网络不给力,请重试": {
"zh": "网络不给力,请重试",
"TW": "網絡不穩定,請重試",
"en": "Check the network connectivity and try again."
},
"重试次数过多,请稍后再试": {
"zh": "重试次数过多,请稍后再试",
"TW": "重試次數過多,請稍後再試",
"en": "The number of retry attempts exceeds the limit. Try again later."
},
"识别失败": {
"zh": "识别失败",
"TW": "識別失敗",
"en": "Recognition failed."
},
"抱歉,系统出错了,再试一次": {
"zh": "抱歉,系统出错了,请再试一次",
"TW": "抱歉,系統出錯了,請再試一次",
"en": "A system error occurred. Try again."
},
"提示": {
"zh": "提示",
"TW": "提示",
"en": "Tips"
},
"程序异常": {
"zh": "程序异常",
"TW": "程序異常",
"en": "A program error occurred."
},
"签名异常": {
"zh": "签名异常",
"TW": "簽名異常",
"en": "The signature is invalid."
},
"无效的认证流程,请返回重试": {
"zh": "无效的认证流程,请返回重试",
"TW": "無效的認證流程, 請返回重試",
"en": "The verification process is invalid. Try again."
},
"图片上传失败": {
"zh": "图片上传失败",
"TW": "圖片上傳失敗",
"en": "Failed to upload the image."
},
"认证失败": {
"zh": "认证失败",
"TW": "認證失敗",
"en": "Verification failed."
},
"请正对手机并保持亮度": {
"zh": "请正对手机并保持亮度",
"TW": "請正對手機並保持亮度",
"en": "Directly face your mobile phone with sufficient light."
},
"重试": {
"zh": "重试",
"TW": "重試",
"en": "Try again."
},
"正对手机,更容易成功": {
"zh": "正对手机,更容易成功",
"TW": "正對手機,更容易成功",
"en": "Directly face your mobile phone to make your face easier to scan."
},
"未能识别人脸": {
"zh": "未能识别人脸",
"TW": "未能識別人臉",
"en": "No face is detected."
},
"协议初始化失败,请返回重试": {
"zh": "协议初始化失败,请返回重试",
"TW": "協議初始化失敗,請返回重試",
"en": "Protocol initialization failed. Try again."
},
"跳转失败,请手动返回": {
"zh": "跳转失败,请手动返回",
"TW": "跳轉失敗,請手動返回",
"en": "Redirection failed. Manually return."
},
"请允许访问摄像头设备并重试": {
"zh": "请允许访问摄像头设备并重试",
"TW": "請允許訪問攝像頭設備並重試",
"en": "Allow access to your camera and try again."
},
"摄像头设备不支持": {
"zh": "摄像头设备不支持",
"TW": "攝像頭設備不支持",
"en": "The camera is not supported."
},
"摄像头权限可能已关闭,请尝试在'设置'里开启": {
"zh": "摄像头权限可能已关闭,请尝试在'设置'里开启",
"TW": "請在'設置-隱私-相機'中允許訪問相機",
"en": "The camera permissions are not obtained. Go to the Settings page to grant the permissions on the camera."
},
"摄像头唤起失败": {
"zh": "摄像头唤起失败",
"TW": "無法啟動相機",
"en": "Failed to turn on the camera."
},
"请检查您的网络并重试": {
"zh": "请检查您的网络并重试",
"TW": "請檢查您的網絡並重試",
"en": "Check your network and try again."
},
"请拍摄您的证件照片": {
"zh": "请拍摄您的证件照片",
"TW": "請拍攝您的證件照片",
"en": "Take a photo of your certificate."
},
"请使用政府发行的原始证件": {
"zh": "请使用政府发行的原始证件",
"TW": "請使用政府簽發的原始證件",
"en": "Use the original certificate issued by public service sectors."
},
"确认拍摄的证件清晰、无遮挡、无反光": {
"zh": "确认拍摄的证件清晰、无遮挡、无反光",
"TW": "請確保證件清晰完整,無遮擋和反光",
"en": "Make sure that the certificate image is clear, and free of obstructions and glare."
},
"请勿使用黑白图像": {
"zh": "请勿使用黑白图像",
"TW": "請勿使用黑白圖像",
"en": "Do not use black-and-white images."
},
"拍摄您的脸部进行身份验证": {
"zh": "拍摄您的脸部进行身份验证",
"TW": "請拍攝您的臉部以進行身份驗證",
"en": "Take a photo of your face for identity verification."
},
"避免遮挡": {
"zh": "避免遮挡",
"TW": "避免遮擋",
"en": "No covering."
},
"光线充足": {
"zh": "光线充足",
"TW": "確保光線充足",
"en": "Make sure that the light is sufficient."
},
"正对手机": {
"zh": "正对手机",
"TW": "正對手機",
"en": "Directly face your mobile phone."
},
"开始认证": {
"zh": "开始认证",
"TW": "開始認證",
"en": "Start verification."
},
"复制链接": {
"zh": "复制链接",
"TW": "複製連結",
"en": "Copy the link."
},
"链接已复制": {
"zh": "链接已复制",
"TW": "鏈接已復制",
"en": "The link is copied."
},
"证件识别唤起失败": {
"zh": "证件识别唤起失败",
"TW": "證件識別喚起失敗",
"en": "Failed to trigger certificate recognition."
},
"刷脸验证唤起失败": {
"zh": "刷脸验证唤起失败",
"TW": "臉部驗證喚起失敗",
"en": "Failed to trigger facial recognition."
},
"身份验证唤起失败": {
"zh": "身份验证唤起失败",
"TW": "身份驗證喚起失敗",
"en": "Failed to trigger identity verification."
},
"证件识别唤起失败,请复制链接前往浏览器打开": {
"zh": "证件识别唤起失败,请复制链接前往浏览器打开",
"TW": "證件識別喚起失敗,請複製連結然後於瀏覽器打開",
"en": "Failed to trigger certificate recognition. Copy the link and open the link in a browser."
},
"刷脸验证唤起失败,请复制链接前往浏览器打开": {
"zh": "刷脸验证唤起失败,请复制链接前往浏览器打开",
"TW": "臉部驗證喚起失敗,請複製連結然後於瀏覽器打開",
"en": "Failed to trigger facial recognition. Copy the link and open the link in a browser."
},
"身份验证唤起失败,请复制链接前往浏览器打开": {
"zh": "身份验证唤起失败,请复制链接前往浏览器打开",
"TW": "身份驗證喚起失敗,請複製連結然後於瀏覽器打開",
"en": "Failed to trigger identity verification. Copy the link and open the link in a browser."
},
"点击【复制链接】": {
"zh": "点击【复制链接】",
"TW": "點擊【複製連結】",
"en": "Click Copy Link."
},
"键入复制链接,开启刷脸验证": {
"zh": "键入复制链接,开启刷脸验证",
"TW": "貼上複製連結,開啟證件識別",
"en": "Paste the copied link and enable facial recognition."
},
"打开浏览器,支持Safari,iOS 14.3+可选择Chrome、Firefox、Microsoft Edge": {
"zh": "打开浏览器,支持Safari,iOS 14.3+可选择Chrome、Firefox、Microsoft Edge",
"TW": "打開瀏覽器,支持Safari,iOS 14.3+可選擇Chrome、Firefox、Microsoft Edge",
"en": "Open a browser. Chrome, Firefox, and Microsoft Edge in iOS 14.3 or later and Safari are supported."
},
"重新识别": {
"zh": "重新识别",
"TW": "重試",
"en": "Try again."
},
"唤起身份验证操作流程": {
"zh": "唤起身份验证操作流程",
"TW": "喚起身份驗證操作流程",
"en": "Trigger the identity verification process."
},
"唤起刷脸验证操作流程": {
"zh": "唤起刷脸验证操作流程",
"TW": "喚起刷臉驗證操作流程",
"en": "Trigger the facial recognition process."
},
"唤起证件识别操作流程": {
"zh": "唤起证件识别操作流程",
"TW": "喚起證件識別操作流程",
"en": "Trigger the certificate recognition process."
},
"请拍摄您的脸部进行身份验证": {
"zh": "请拍摄您的脸部进行身份验证",
"TW": "請拍攝您的臉部以進行身份驗證",
"en": "Take a photo of your face for identity verification."
},
"请确认你使用的证件类型符合要求": {
"zh": "请确认你使用的证件类型符合要求",
"TW": "請確認你使用的證件類型符合要求",
"en": "Make sure that the certificate type meets the requirements."
},
"检测不到证件": {
"zh": "检测不到证件",
"TW": "檢測不到證件",
"en": "No certificate is detected."
},
"请确保": {
"en": "Make sure that",
"zh": "请确保",
"TW": "請確保"
},
"不为空": {
"en": "is not empty.",
"zh": "不为空",
"TW": "不為空"
},
"请输入正确的": {
"en": "Enter a valid",
"zh": "请输入正确的",
"TW": "請輸入正確的"
}
},
"ocrResultContent": {
"CHNFields": {
"name": {
"label": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
},
"placeholder": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "Male",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "Female",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
],
"placeholder": {
"en": "Female or male",
"zh": "男/女",
"TW": "男/女"
}
},
"ethnicity": {
"label": {
"en": "Ethnic group",
"zh": "民族",
"TW": "民族"
},
"placeholder": {
"en": "Ethnic group",
"zh": "民族",
"TW": "民族"
}
},
"birthDate": {
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
},
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
}
},
"idNumber": {
"placeholder": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
},
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
}
},
"address": {
"label": {
"en": "Address",
"zh": "住址",
"TW": "住址"
},
"placeholder": {
"en": "No.xx969, xx District, xx City, xx Province",
"zh": "xx省xx市xx区xx969号",
"TW": "xx省xx市xx区xx969号"
}
}
},
"HKFields": {
"name": {
"label": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
},
"placeholder": {
"en": "Chinese name (if any)",
"zh": "中文姓名(如有)",
"TW": "中文姓名(如有)"
}
},
"englishName": {
"label": {
"en": "English name",
"zh": "英文姓名",
"TW": "英文姓名"
},
"placeholder": {
"en": "English name",
"zh": "英文姓名",
"TW": "英文姓名"
}
},
"nameCode": {
"label": {
"en": "Chinese name code",
"zh": "中文电码",
"TW": "中文電碼"
},
"placeholder": {
"en": "Chinese name code (if any)",
"zh": "中文电码(如有)",
"TW": "中文电码(如有)"
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "M",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "F",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
],
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
}
},
"birthDate": {
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
},
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
}
},
"idNumber": {
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
},
"placeholder": {
"en": "Example: C123456(0)",
"zh": "如:C123456(0)",
"TW": "如:C123456(0)"
}
},
"currentIssueDate": {
"label": {
"en": "Date of issue",
"zh": "本次签发日期",
"TW": "本次簽發日期"
},
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
}
},
"firstIssueDate": {
"label": {
"en": "Initial issue date",
"zh": "首次签发日期",
"TW": "首次簽發日期"
},
"placeholder": {
"en": "(mm-yyyy)",
"zh": "(月-年)",
"TW": "(月-年)"
}
},
"isPermanent": {
"label": {
"en": "Permanent or not",
"zh": "是否永久",
"TW": "是否永久"
},
"options": [
{
"value": "Y",
"text": {
"en": "Yes",
"zh": "是",
"TW": "是"
}
},
{
"value": "N",
"text": {
"en": "No",
"zh": "否",
"TW": "否"
}
}
],
"placeholder": {
"en": "Yes or no",
"zh": "是/否",
"TW": "是/否"
}
},
"symbols": {
"placeholder": {
"en": "Example: xxxAZ",
"zh": "如:xxxAZ",
"TW": "如:xxxAZ"
},
"label": {
"en": "Symbols",
"zh": "符号",
"TW": "符號"
}
}
},
"EEPFields": {
"name": {
"label": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
},
"placeholder": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
}
},
"englishName": {
"label": {
"en": "English name",
"zh": "英文姓名",
"TW": "英文姓名"
},
"placeholder": {
"en": "Name in pinyin",
"zh": "姓名(拼音)",
"TW": "姓名(拼音)"
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "Male",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "Female",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
],
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
}
},
"birthDate": {
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
},
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
}
},
"idNumber": {
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
},
"placeholder": {
"en": "Example: CC1234567",
"zh": "如:CC1234567",
"TW": "如:CC1234567"
}
},
"issueDate": {
"label": {
"en": "Date of issue",
"zh": "签发日期",
"TW": "簽發日期"
},
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
}
},
"expiryDate": {
"label": {
"en": "Expiration date",
"zh": "失效日期",
"TW": "失效日期"
},
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
}
},
"placeOfIssue": {
"label": {
"en": "Place of issue",
"zh": "签发地点",
"TW": "簽發地點"
},
"placeholder": {
"en": "Example: Beijing",
"zh": "如:北京",
"TW": "如:北京"
}
},
"originOfIssue": {
"label": {
"en": "Issuing authority",
"zh": "签发机关",
"TW": "簽發機關"
},
"options": [
{
"value": "National Immigration Administration",
"text": {
"en": "National Immigration Administration",
"zh": "公安部出入境管理局",
"TW": "公安部出入境管理局"
}
},
{
"value": "National Immigration Administration of the People's Republic of China",
"text": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
}
}
],
"placeholder": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
}
}
},
"HRPFields": {
"name": {
"label": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
},
"placeholder": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
}
},
"englishName": {
"label": {
"en": "English name",
"zh": "英文姓名",
"TW": "英文姓名"
},
"placeholder": {
"en": "Name in pinyin",
"zh": "姓名(拼音)",
"TW": "姓名(拼音)"
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "Male",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "Female",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
],
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
}
},
"birthDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
}
},
"idNumber": {
"placeholder": {
"en": "Example: H12345678",
"zh": "如:H12345678",
"TW": "如:H12345678"
},
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
}
},
"issueDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Date of issue",
"zh": "签发日期",
"TW": "簽發日期"
}
},
"expiryDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Expiration date",
"zh": "失效日期",
"TW": "失效日期"
}
},
"originOfIssue": {
"label": {
"en": "Issuing authority",
"zh": "签发机关",
"TW": "簽發機關"
},
"options": [
{
"value": "National Immigration Administration",
"text": {
"en": "National Immigration Administration",
"zh": "公安部出入境管理局",
"TW": "公安部出入境管理局"
}
},
{
"value": "National Immigration Administration of the People's Republic of China",
"text": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
}
}
],
"placeholder": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
}
}
},
"WPFilelds": {
"surname": {
"placeholder": {
"en": "Surname",
"zh": "姓",
"TW": "姓"
},
"label": {
"en": "Surname",
"zh": "姓",
"TW": "姓"
}
},
"givenname": {
"placeholder": {
"en": "Given name",
"zh": "名",
"TW": "名"
},
"label": {
"en": "Given name",
"zh": "名",
"TW": "名"
}
},
"passportNo": {
"placeholder": {
"en": "Enter the passport number.",
"zh": "请输入护照号码",
"TW": "請輸入護照號碼"
},
"label": {
"en": "Passport number",
"zh": "护照号码",
"TW": "護照號碼"
}
},
"nationality": {
"placeholder": {
"en": "Nationality",
"zh": "国籍",
"TW": "國籍"
},
"label": {
"en": "Nationality",
"zh": "国籍",
"TW": "國籍"
}
},
"sex": {
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
},
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "M",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "F",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
]
},
"birthDate": {
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
},
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
}
},
"countryCode": {
"placeholder": {
"en": "Example: CHN",
"zh": "如:CHN",
"TW": "如:CHN"
},
"label": {
"en": "Country code",
"zh": "国家码",
"TW": "國家碼"
}
},
"expiryDate": {
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
},
"label": {
"en": "Expiration date",
"zh": "失效日期",
"TW": "失效日期"
}
}
},
"BIRFilelds": {
"surnameCN": {
"placeholder": {
"en": "Surname in Chinese",
"zh": "中文姓",
"TW": "中文姓"
},
"label": {
"en": "Surname in Chinese",
"zh": "中文姓",
"TW": "中文姓"
}
},
"givennameCN": {
"placeholder": {
"en": "Given name in Chinese",
"zh": "中文名",
"TW": "中文名"
},
"label": {
"en": "Given name in Chinese",
"zh": "中文名",
"TW": "中文名"
}
},
"surname": {
"placeholder": {
"en": "Surname in English",
"zh": "英文姓",
"TW": "英文姓"
},
"label": {
"en": "Surname in English",
"zh": "英文姓",
"TW": "英文姓"
}
},
"givenname": {
"placeholder": {
"en": "Given name in English",
"zh": "英文名",
"TW": "英文名"
},
"label": {
"en": "Given name in English",
"zh": "英文名",
"TW": "英文名"
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "M",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "F",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
],
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
}
},
"birthDate": {
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
},
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
}
},
"idNumber": {
"placeholder": {
"en": "Example: 1234567(8)",
"zh": "如:1234567(8)",
"TW": "如:1234567(8)"
},
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
}
},
"expiryDate": {
"placeholder": {
"en": "dd-mm-yyyy",
"zh": "日-月-年",
"TW": "日-月-年"
},
"label": {
"en": "Expiration date",
"zh": "失效日期",
"TW": "失效日期"
}
},
"placeOfBirth": {
"placeholder": {
"en": "Example: AS",
"zh": "如:AS",
"TW": "如:AS"
},
"label": {
"en": "Code of the birthplace",
"zh": "出生地代码",
"TW": "出生地代碼"
}
}
},
"MTFilelds": {
"name": {
"label": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
},
"placeholder": {
"en": "Chinese name",
"zh": "中文姓名",
"TW": "中文姓名"
}
},
"englishName": {
"placeholder": {
"en": "Name in pinyin",
"zh": "姓名(拼音)",
"TW": "姓名(拼音)"
},
"label": {
"en": "English name",
"zh": "英文姓名",
"TW": "英文姓名"
}
},
"sex": {
"placeholder": {
"en": "Male or female",
"zh": "男/女",
"TW": "男/女"
},
"label": {
"en": "Gender",
"zh": "性别",
"TW": "性别"
},
"options": [
{
"value": "Male",
"text": {
"en": "Male",
"zh": "男",
"TW": "男"
}
},
{
"value": "Female",
"text": {
"en": "Female",
"zh": "女",
"TW": "女"
}
}
]
},
"birthDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Date of birth",
"zh": "出生日期",
"TW": "出生日期"
}
},
"idNumber": {
"placeholder": {
"en": "Example: 12345678",
"zh": "如:12345678",
"TW": "如:12345678"
},
"label": {
"en": "Certificate number",
"zh": "证件号码",
"TW": "證件號碼"
}
},
"issueDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Date of issue",
"zh": "签发日期",
"TW": "簽發日期"
}
},
"expiryDate": {
"placeholder": {
"en": "yyyy-mm-dd",
"zh": "年-月-日",
"TW": "年-月-日"
},
"label": {
"en": "Expiration date",
"zh": "失效日期",
"TW": "失效日期"
}
},
"originOfIssue": {
"placeholder": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
},
"label": {
"en": "Issuing authority",
"zh": "签发机关",
"TW": "簽發機關"
},
"options": [
{
"value": "National Immigration Administration of the People's Republic of China",
"text": {
"en": "National Immigration Administration of the People's Republic of China",
"zh": "中华人民共和国出入境管理局",
"TW": "中华人民共和国出入境管理局"
}
}
]
},
"placeOfIssue": {
"placeholder": {
"en": "Example: Beijing",
"zh": "如:北京",
"TW": "如:北京"
},
"label": {
"en": "Place of issue",
"zh": "签发地点",
"TW": "簽發地點"
}
}
},
"PHFilelds": {
"crn": {
"label": {
"en": "ID",
"zh": "",
"TW": ""
}
},
"surname": {
"label": {
"en": "Surname",
"zh": "",
"TW": ""
}
},
"givenname": {
"label": {
"en": "Given name",
"zh": "",
"TW": ""
}
},
"middlename": {
"label": {
"en": "Middle name",
"zh": "",
"TW": ""
}
},
"sex": {
"label": {
"en": "Gender",
"zh": "",
"TW": ""
}
},
"birthDate": {
"label": {
"en": "Expiration date",
"zh": "",
"TW": ""
}
},
"address": {
"label": {
"en": "Address",
"zh": "",
"TW": ""
}
}
},
"ID_KTPFilelds": {
"idNumber": {
"label": {
"en": "ID",
"zh": "ID",
"TW": "ID"
}
},
"name": {
"label": {
"en": "Name",
"zh": "Name",
"TW": "Name"
}
},
"sex": {
"label": {
"en": "Sex",
"zh": "Sex",
"TW": "Sex"
}
},
"birthDate": {
"label": {
"en": "Date of Expiry",
"zh": "Date of Expiry",
"TW": "Date of Expiry"
}
},
"blood": {
"label": {
"en": "Blood",
"zh": "Blood",
"TW": "Blood"
}
},
"address": {
"label": {
"en": "Address",
"zh": "Address",
"TW": "Address"
}
},
"street": {
"label": {
"en": "Street",
"zh": "Street",
"TW": "Street"
}
},
"county": {
"label": {
"en": "County",
"zh": "County",
"TW": "County"
}
},
"district": {
"label": {
"en": "District",
"zh": "District",
"TW": "District"
}
},
"religion": {
"label": {
"en": "Religion",
"zh": "Religion",
"TW": "Religion"
}
},
"marriage": {
"label": {
"en": "Marriage",
"zh": "Marriage",
"TW": "Marriage"
}
},
"job": {
"label": {
"en": "Job",
"zh": "Job",
"TW": "Job"
}
},
"nationality": {
"label": {
"en": "Country",
"zh": "Country",
"TW": "Country"
}
},
"expiryDate": {
"label": {
"en": "Expires",
"zh": "Expires",
"TW": "Expires"
}
},
"province": {
"label": {
"en": "Province",
"zh": "Province",
"TW": "Province"
}
},
"city": {
"label": {
"en": "City",
"zh": "City",
"TW": "City"
}
},
"issueDate": {
"label": {
"en": "issueDate",
"zh": "issueDate",
"TW": "issueDate"
}
}
},
"MYFilelds": {
"idNumber": {
"label": {
"en": "ID",
"zh": "ID",
"TW": "ID"
}
},
"name": {
"label": {
"en": "Name",
"zh": "Name",
"TW": "Name"
}
},
"sex": {
"label": {
"en": "Sex",
"zh": "Sex",
"TW": "Sex"
}
},
"nationality": {
"label": {
"en": "Country",
"zh": "Country",
"TW": "Country"
}
},
"address": {
"label": {
"en": "Address",
"zh": "Address",
"TW": "Address"
}
}
}
},
"supportedLanguage": [
{
"key": "zh",
"label": "Simplified Chinese"
},
{
"key": "en",
"label": "English"
},
{
"key": "TW",
"label": "Traditional Chinese"
}
],
"titleTranslate": {
"ekyc": {
"zh": "eKYC",
"TW": "eKYC",
"en": "eKYC"
},
"ocr": {
"zh": "证件识别",
"TW": "證件識別",
"en": "Certificate recognition"
},
"face": {
"zh": "刷脸验证",
"TW": "臉部驗證",
"en": "Facial recognition"
}
}
}
By default, simplified Chinese, traditional Chinese, and English are supported. If you want to modify the text in a default language, modify the content that corresponds to the key of the language. Otherwise, the default language configurations and default text are used.
To decrease the size of an initialization request, we recommend that you specify only the new language configurations and the default configurations that you want to modify. Other default configurations are retained and used by Alibaba Cloud.
Appendix
1. Certificates to which OCR results correspond
ocrResultContent | Certificate |
WPFilelds | Global passports |
CHNFields | Second-generation ID cards for residents in the Chinese mainland |
HKFields | ID cards for residents in Hong Kong (China) |
EEPFields | Exit-Entry Permits for Travelling to and from Hong Kong and Macao |
HRPFields | Mainland Travel Permits for Hong Kong and Macao Residents |
BIRFilelds | ID cards for residents in Macao (China) |
MTFilelds | Mainland Travel Permits for Taiwan Residents |
2. Keys of language abbreviations
For more information, see HTML Language Code Reference.
const languageKeyList = [
// By default, simplified Chinese, traditional Chinese, and English are supported.
{ code: 'zh', name: 'Chinese (Simplified)' }, // Simplified Chinese
{ code: 'TW', name: 'Chinese (Traditional)' }, // Traditional Chinese
{ code: 'en', name: 'English' }, // English
// Other languages are sorted by English name in alphabetical order.
{ code: 'ab', name: 'Abkhazian' },
{ code: 'aa', name: 'Afar' },
{ code: 'af', name: 'Afrikaans' },
{ code: 'ak', name: 'Akan' },
{ code: 'sq', name: 'Albanian' },
{ code: 'am', name: 'Amharic' },
{ code: 'ar', name: 'Arabic' },
{ code: 'an', name: 'Aragonese' },
{ code: 'hy', name: 'Armenian' },
{ code: 'as', name: 'Assamese' },
{ code: 'av', name: 'Avaric' },
{ code: 'ae', name: 'Avestan' },
{ code: 'ay', name: 'Aymara' },
{ code: 'az', name: 'Azerbaijani' },
{ code: 'bm', name: 'Bambara' },
{ code: 'ba', name: 'Bashkir' },
{ code: 'eu', name: 'Basque' },
{ code: 'be', name: 'Belarusian' },
{ code: 'bn', name: 'Bengali (Bangla)' },
{ code: 'bh', name: 'Bihari' },
{ code: 'bi', name: 'Bislama' },
{ code: 'bs', name: 'Bosnian' },
{ code: 'br', name: 'Breton' },
{ code: 'bg', name: 'Bulgarian' },
{ code: 'my', name: 'Burmese' },
{ code: 'ca', name: 'Catalan' },
{ code: 'ch', name: 'Chamorro' },
{ code: 'ce', name: 'Chechen' },
{ code: 'ny', name: 'Chichewa, Chewa, Nyanja' },
{ code: 'cv', name: 'Chuvash' },
{ code: 'kw', name: 'Cornish' },
{ code: 'co', name: 'Corsican' },
{ code: 'cr', name: 'Cree' },
{ code: 'hr', name: 'Croatian' },
{ code: 'cs', name: 'Czech' },
{ code: 'da', name: 'Danish' },
{ code: 'dv', name: 'Divehi, Dhivehi, Maldivian' },
{ code: 'nl', name: 'Dutch' },
{ code: 'dz', name: 'Dzongkha' },
{ code: 'eo', name: 'Esperanto' },
{ code: 'et', name: 'Estonian' },
{ code: 'ee', name: 'Ewe' },
{ code: 'fo', name: 'Faroese' },
{ code: 'fj', name: 'Fijian' },
{ code: 'fi', name: 'Finnish' },
{ code: 'fr', name: 'French' },
{ code: 'ff', name: 'Fula, Fulah, Pulaar, Pular' },
{ code: 'gl', name: 'Galician' },
{ code: 'gd', name: 'Gaelic (Scottish)' },
{ code: 'gv', name: 'Gaelic (Manx)' },
{ code: 'ka', name: 'Georgian' },
{ code: 'de', name: 'German' },
{ code: 'el', name: 'Greek' },
{ code: 'kl', name: 'Greenlandic' },
{ code: 'gn', name: 'Guarani' },
{ code: 'gu', name: 'Gujarati' },
{ code: 'ht', name: 'Haitian Creole' },
{ code: 'ha', name: 'Hausa' },
{ code: 'he', name: 'Hebrew' },
{ code: 'hz', name: 'Herero' },
{ code: 'hi', name: 'Hindi' },
{ code: 'ho', name: 'Hiri Motu' },
{ code: 'hu', name: 'Hungarian' },
{ code: 'is', name: 'Icelandic' },
{ code: 'io', name: 'Ido' },
{ code: 'ig', name: 'Igbo' },
{ code: 'id, in', name: 'Indonesian' },
{ code: 'ia', name: 'Interlingua' },
{ code: 'ie', name: 'Interlingue' },
{ code: 'iu', name: 'Inuktitut' },
{ code: 'ik', name: 'Inupiak' },
{ code: 'ga', name: 'Irish' },
{ code: 'it', name: 'Italian' },
{ code: 'ja', name: 'Japanese' },
{ code: 'jv', name: 'Javanese' },
{ code: 'kl', name: 'Kalaallisut, Greenlandic' },
{ code: 'kn', name: 'Kannada' },
{ code: 'kr', name: 'Kanuri' },
{ code: 'ks', name: 'Kashmiri' },
{ code: 'kk', name: 'Kazakh' },
{ code: 'km', name: 'Khmer' },
{ code: 'ki', name: 'Kikuyu' },
{ code: 'rw', name: 'Kinyarwanda (Rwanda)' },
{ code: 'rn', name: 'Kirundi' },
{ code: 'ky', name: 'Kyrgyz' },
{ code: 'kv', name: 'Komi' },
{ code: 'kg', name: 'Kongo' },
{ code: 'ko', name: 'Korean' },
{ code: 'ku', name: 'Kurdish' },
{ code: 'kj', name: 'Kwanyama' },
{ code: 'lo', name: 'Lao' },
{ code: 'la', name: 'Latin' },
{ code: 'lv', name: 'Latvian (Lettish)' },
{ code: 'li', name: 'Limburgish ( Limburger)' },
{ code: 'ln', name: 'Lingala' },
{ code: 'lt', name: 'Lithuanian' },
{ code: 'lu', name: 'Luga-Katanga' },
{ code: 'lg', name: 'Luganda, Ganda' },
{ code: 'lb', name: 'Luxembourgish' },
{ code: 'gv', name: 'Manx' },
{ code: 'mk', name: 'Macedonian' },
{ code: 'mg', name: 'Malagasy' },
{ code: 'ms', name: 'Malay' },
{ code: 'ml', name: 'Malayalam' },
{ code: 'mt', name: 'Maltese' },
{ code: 'mi', name: 'Maori' },
{ code: 'mr', name: 'Marathi' },
{ code: 'mh', name: 'Marshallese' },
{ code: 'mo', name: 'Moldavian' },
{ code: 'mn', name: 'Mongolian' },
{ code: 'na', name: 'Nauru' },
{ code: 'nv', name: 'Navajo' },
{ code: 'ng', name: 'Ndonga' },
{ code: 'nd', name: 'Northern Ndebele' },
{ code: 'ne', name: 'Nepali' },
{ code: 'no', name: 'Norwegian' },
{ code: 'nb', name: 'Norwegian bokmål' },
{ code: 'nn', name: 'Norwegian nynorsk' },
{ code: 'ii', name: 'Nuosu' },
{ code: 'oc', name: 'Occitan' },
{ code: 'oj', name: 'Ojibwe' },
{ code: 'cu', name: 'Old Church Slavonic, Old Bulgarian' },
{ code: 'or', name: 'Oriya' },
{ code: 'om', name: 'Oromo (Afaan Oromo)' },
{ code: 'os', name: 'Ossetian' },
{ code: 'pi', name: 'Pāli' },
{ code: 'ps', name: 'Pashto, Pushto' },
{ code: 'fa', name: 'Persian (Farsi)' },
{ code: 'pl', name: 'Polish' },
{ code: 'pt', name: 'Portuguese' },
{ code: 'pa', name: 'Punjabi (Eastern)' },
{ code: 'qu', name: 'Quechua' },
{ code: 'rm', name: 'Romansh' },
{ code: 'ro', name: 'Romanian' },
{ code: 'ru', name: 'Russian' },
{ code: 'se', name: 'Sami' },
{ code: 'sm', name: 'Samoan' },
{ code: 'sg', name: 'Sango' },
{ code: 'sa', name: 'Sanskrit' },
{ code: 'sr', name: 'Serbian' },
{ code: 'sh', name: 'Serbo-Croatian' },
{ code: 'st', name: 'Sesotho' },
{ code: 'tn', name: 'Setswana' },
{ code: 'sn', name: 'Shona' },
{ code: 'ii', name: 'Sichuan Yi' },
{ code: 'sd', name: 'Sindhi' },
{ code: 'si', name: 'Sinhalese' },
{ code: 'ss', name: 'Siswati' },
{ code: 'sk', name: 'Slovak' },
{ code: 'sl', name: 'Slovenian' },
{ code: 'so', name: 'Somali' },
{ code: 'nr', name: 'Southern Ndebele' },
{ code: 'es', name: 'Spanish' },
{ code: 'su', name: 'Sundanese' },
{ code: 'sw', name: 'Swahili (Kiswahili)' },
{ code: 'ss', name: 'Swati' },
{ code: 'sv', name: 'Swedish' },
{ code: 'tl', name: 'Tagalog' },
{ code: 'ty', name: 'Tahitian' },
{ code: 'tg', name: 'Tajik' },
{ code: 'ta', name: 'Tamil' },
{ code: 'tt', name: 'Tatar' },
{ code: 'te', name: 'Telugu' },
{ code: 'th', name: 'Thai' },
{ code: 'bo', name: 'Tibetan' },
{ code: 'ti', name: 'Tigrinya' },
{ code: 'to', name: 'Tonga' },
{ code: 'ts', name: 'Tsonga' },
{ code: 'tr', name: 'Turkish' },
{ code: 'tk', name: 'Turkmen' },
{ code: 'tw', name: 'Twi' },
{ code: 'ug', name: 'Uyghur' },
{ code: 'uk', name: 'Ukrainian' },
{ code: 'ur', name: 'Urdu' },
{ code: 'uz', name: 'Uzbek' },
{ code: 've', name: 'Venda' },
{ code: 'vi', name: 'Vietnamese' },
{ code: 'vo', name: 'Volapük' },
{ code: 'wa', name: 'Wallon' },
{ code: 'cy', name: 'Welsh' },
{ code: 'wo', name: 'Wolof' },
{ code: 'fy', name: 'Western Frisian' },
{ code: 'xh', name: 'Xhosa' },
{ code: 'yi, ji', name: 'Yiddish' },
{ code: 'yo', name: 'Yoruba' },
{ code: 'za', name: 'Zhuang, Chuang' },
{ code: 'zu', name: 'Zulu' },
];