이메일 사용자 정의
사용자가 애플리케이션과 상호작용할 때 응답을 전송하거나 검증을 요청할 수 있습니다. App ID은(는) 상호작용에 사용할 수 있는 기본 템플리트를 제공합니다. 또한 템플리트를 안내서로 사용하여 브랜드에 맞게 메시징을 사용자 정의할 수 있습니다.
App ID 사용 SendGrid 를 메일 배달 서비스로 사용합니다. 모든 이메일은 단일 SendGrid 계정으로 발송됩니다.
이메일 설정 구성
App ID, 기본값인 App ID 자격 증명을 사용하거나 SendGrid 자격 증명을 사용하거나, SendGrid 계정을 추가하거나, 사용자 지정 웹훅을 구성하여 클라우드 디렉터리에서 이메일 메시지를 보낼 수 있습니다.
IBM 기본 이메일 제공자 사용
기본적으로 App ID 은 SendGrid 를 클라우드 디렉토리의 이메일 전송 서비스로 사용합니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 이메일 설정 페이지로 이동하십시오.
-
기본값을 선택하십시오. 입력해야 하는 정보가 표시됩니다.
-
발신인 세부사항을 구성하십시오.
-
발신인에 사용자가 이메일을 수신할 이메일 주소를 입력하십시오.
-
발신인 이름에 "발신인" 이메일과 연관된 이름을 입력하십시오.
-
회신에 이메일에 대한 응답을 수신할 이메일 주소를 입력하십시오.
-
-
테스트를 클릭하여 테스트 이메일로 구성을 시험해 보십시오.
-
구성을 사용으로 설정하려면 저장을 클릭하십시오.
고유한 SendGrid 계정 추가
고유한 SendGrid 계정을 사용하여 Cloud Directory 이메일을 보낼 경우 본인에게 전체 제어 권한이 있습니다. 따라서 이메일 발송 방법을 결정하고 고유한 도메인 이름을 사용하며 발신인 세부사항을 정의할 수 있습니다. 사용자 정의 이메일 설정을 사용하면 사용자 애플리케이션에 대한 브랜드 인지도를 향상시키면서 이메일이 스팸으로 필터링될 가능성을 줄일 수 있습니다.
이메일 제공자에게 직접 연결하면 이메일을 연 사용자 수와 전달되지 않은 메시지와 같은 개별 메시지에 대한 정보를 얻을 수 있습니다. 또한 이메일 캠페인을 보다 잘 관리하는 데 사용할 수 있는 전체 통계를 볼 수도 있습니다.
SendGrid 계정이 없으십니까? 등록.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 이메일 설정 페이지로 이동하십시오.
-
SendGrid를 선택하십시오. 입력해야 하는 정보가 표시됩니다.
-
SendGrid API 키에 API 키를 입력하십시오.
-
발신인 세부사항을 구성하십시오.
-
발신인에 사용자가 이메일을 수신할 이메일 주소를 입력하십시오.
-
발신인 이름에 "발신인" 이메일과 연관된 이름을 입력하십시오.
-
회신에 이메일에 대한 응답을 수신할 이메일 주소를 입력하십시오.
-
-
테스트를 클릭하여 테스트 이메일로 구성을 시험해 보십시오.
-
구성을 사용으로 설정하려면 저장을 클릭하십시오.
이메일 제공자 사용자 정의
고유한 사용자 정의 확장점을 정의하여 Cloud Directory 이메일을 보낼 경우 본인에게 전체 제어 권한이 있습니다. 따라서 이메일 발송 방법을 결정하고 고유한 도메인 이름을 사용하며 발신인 세부사항을 정의할 수 있습니다. 사용자 정의 이메일 설정을 사용하면 사용자 애플리케이션에 대한 브랜드 인지도를 향상시키면서 이메일이 스팸으로 필터링될 가능성을 줄일 수 있습니다.
이메일 제공자에게 직접 연결하면 이메일을 연 사용자 수와 전달되지 않은 메시지와 같은 개별 메시지에 대한 정보를 얻을 수 있습니다. 또한 이메일 캠페인을 보다 잘 관리하는 데 사용할 수 있는 전체 통계를 볼 수도 있습니다.
GUI를 사용하여 사용자 정의 제공자 구성
서비스 대시보드를 사용하여 사용자 정의 제공자를 구성할 수 있습니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 이메일 설정 페이지로 이동하십시오.
-
사용자 정의를 선택하십시오. 입력해야 하는 정보가 표시됩니다.
-
웹훅에 사용자 정의 확장기능 URL을 입력하십시오.
-
권한 유형을 선택하십시오. 다음 옵션 중에서 선택할 수 있습니다.
- 없음: 웹훅 엔드포인트 또는 URL에 권한 헤더가 필요하지 않습니다.
- 기본: 웹훅 엔드포인트에 HTTP 권한 헤더가 필요하며 모든 요청이 사용자 이름과 비밀번호의 형태입니다.
- 권한 헤더: 웹훅 요청의 경우 엔드포인트에 대한 권한 정보를 HTTP 권한에 전달해야 합니다. 예를 들어 OAuth 2.0 토큰
Authorization: Bearer eyJraWQiOiIyMDIwMDEyNTE2MzMiLCJhbGciOiJSUzI1NiJ9.eyJpYW1faWQiOiJJ
를 전달할 수 있습니다.
-
발신인 세부사항을 구성하십시오.
-
발신인에 사용자가 이메일을 수신할 이메일 주소를 입력하십시오.
-
발신인 이름에 "발신인" 이메일과 연관된 이름을 입력하십시오.
-
회신에 이메일에 대한 응답을 수신할 이메일 주소를 입력하십시오.
-
-
테스트를 클릭하여 테스트 이메일로 구성을 시험해 보십시오.
-
구성을 사용으로 설정하려면 저장을 클릭하십시오.
API를 사용하여 사용자 정의 제공자 구성
클라우드 디렉터리 관리 API를 사용하여 사용자 지정 이메일 발신자를 구성할 수 있습니다.
-
POST 요청을 청취할 수 있는 확장점을 구성하십시오. 엔드포인트에서는 다음을 수행할 수 있어야 합니다.
- App ID에서 제공하는 페이로드를 읽습니다.
- 사용자 정의 제공자에서 이메일을 발송합니다.
- 선택적으로, 어떤 방식으로도 서드파티에서 변경되지 않았던 App ID에서 리턴된 JSON 페이로드를 유효성 검증합니다.
{"jws": "jws-format-string"}
형식의 문자열이 리턴되며, 이 문자열은 JWS 토큰 발행자, 메시지가 발송된 시간소인, 고유한 트랜잭션 ID, 실제 메시지 정보(예: 전송자 세부사항 및 이메일 본문 컨텐츠)로 구성됩니다.
확장점은 다음 예와 유사합니다.
const sgMail = require('@sendgrid/mail'); const {promisify} = require('bluebird'); const request = promisify(require('request')); const jwtVerify = promisify(require('jsonwebtoken').verify); const jwtDecode = require('jsonwebtoken').decode; const jwkToPem = require('jwk-to-pem'); async function obtainPublicKeys() { // Your instance tenant ID const tenantId = '<tenantID>'; // Send request to App ID's public keys endpoint const keysOptions = { method: 'GET', url: `https://<region>.appid.cloud.ibm.com/oauth/v4/$<tenantID>/publickeys` }; const keysResponse = await request(keysOptions); return JSON.parse(keysResponse.body).keys; } async function verifySignature(keysArray, kid, jws) { const keyJson = keysArray.find(key => key.kid === kid); if (keyJson) { const pem = jwkToPem(keyJson); await jwtVerify(jws, pem); return; } throw new Error ("Unable to verify signature"); } async function verifyAndSendMail(jws) { // The API key for Sendgrid const sgApiKey = '<SengridApiKey>'; // Init Sendgrind sgMail.setApiKey(sgApiKey); // Decode message to get information const data = jwtDecode(jws, {complete: true}); // Extract kid from header const kid = data.header.kid; const keysArray = await obtainPublicKeys(); // Verify the signature of the payload with the public keys await verifySignature(keysArray, kid ,jws); // Send the email with Your Sendgrid account const message = data.payload.message; const msg = { to: message.to, from: message.from.address, subject: message.subject, html: message.body, }; console.log(`Sending email to ${message.to}`); let sendgridResponse = await sgMail.send(msg); return {result : 'email_sent',sendgridResponse}; }
-
웹훅을 제공하려면
/management/v4/<tenantID>/config/cloud_directory/email_dispatcher
에 PUT 요청을 보내 URL. 선택적으로, 권한 정보를 제공할 수 있습니다. 지원되는 권한 유형은Basic authorization
및constant authorization header value
입니다.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/email_dispatcher' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "provider": "custom", "custom": { "url": "https://example.com/send_mail", "authorization": { "type": "basic", "username": "<username>", "password": "<password>" } } }'
-
이메일 디스패처를 테스트하여 구성이 올바르게 설정되었는지 확인하십시오. 테스트 API를 사용하여 구성된 사용자 지정 이메일 발신자에게 요청을 트리거할 수 있습니다.
이메일 템플리트
사용자에게 메시지를 전송하는 경우 다음과 같은 템플리트의 조합을 사용할 수 있습니다. 또는 템플리트를 편집하여 메시지를 사용자 정의할 수 있습니다.
다음 메시지 유형 이외에 MFA 템플리트도 활용할 수 있습니다.
추가로 사용자 정의하려면 메시지에 매개변수를 사용할 수 있습니다. 모든 메시지 유형에서 사용할 수 있는 매개변수를 보려면 다음 표를 참조하십시오.
매개변수 | 설명 |
---|---|
%{display.logo} |
로그인 위젯에 대해 구성한 이미지를 표시합니다. |
%{user.displayName} |
사용자가 앱과 상호작용할 때 사용하도록 선택한 화면 이름을 표시합니다. |
%{user.email} |
사용자의 등록된 이메일 주소를 표시합니다. |
%{user.username} |
인증 방법이 사용자 이름 및 비밀번호로 설정된 경우 사용자의 지정된 사용자 이름을 표시합니다. |
%{user.firstName} |
사용자의 지정된 이름을 표시합니다. |
%{user.formattedName} |
사용자의 전체 이름을 표시합니다. |
%{user.lastName} |
사용자의 지정된 성을 표시합니다. |
이메일: 환영
사용자가 애플리케이션에 등록할 때 해당 사용자가 앱을 사용하게 된 것을 환영하는 메시지를 발송할 수 있습니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 환영 이메일 탭으로 이동하십시오.
-
환영 이메일을 사용으로 설정하십시오.
-
메시지의 컨텐츠를 사용자 정의하십시오. 콘솔을 사용하여 매개변수를 추가하고 이미지를 삽입할 수 있습니다. 메시지의 언어를 변경하려면 API를 사용하여 언어를 설정하면 됩니다. 하지만 메시지의 컨텐츠 및 변환은 본인의 책임입니다. 이 메시지에서 사용할 수 있는 테이블 목록과 전송할 수 있는 기타 모든 메시지를 보려면 다음 표를 참조하십시오. 사용자가 해당 매개변수를 통해 가져오는 정보를 제공하지 않을 경우 공백으로 표시됩니다.
-
저장 을 클릭하십시오.
이메일: 검증
사용자가 이메일을 사용하여 애플리케이션에 등록할 때 해당 사용자에게 ID를 확인하도록 요청하는 이메일을 발송할 수 있습니다. 검증을 요청하여 앱에 등록할 수 있는 허위 계정의 수를 제한할 수 있습니다. 사용자가 이메일을 검증할 때까지 앱에 대한 액세스를 제한하거나 프로파일을 작성하는 사용자를 관리하는 방법으로 사용할 수 있습니다.
App ID 대시보드 또는 사용자 작성 API를 통해 수동으로 추가된 사용자의 경우 이 이메일을 자동으로 수신하지 않습니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 이메일 검증 탭으로 이동하십시오.
-
이메일 검증을 사용으로 설정하십시오.
-
사용자가 먼저 해당 이메일 주소를 확인하지 않고 앱에 사인인할 수 있도록 허용을 예로 설정하십시오. 예로 설정하면 사용자가 등록한 후 해당 이메일 주소를 확인하기 전에 애플리케이션과 상호작용할 수 있습니다. 기본 설정은 아니오입니다.
-
메시지의 컨텐츠를 사용자 정의하십시오. 콘솔을 사용하여 매개변수를 추가하고 이미지를 삽입할 수 있습니다. 메시지의 언어를 변경하려면 API를 사용하여 언어를 설정하면 됩니다. 하지만 메시지의 컨텐츠 및 변환은 본인의 책임입니다. 메시지에서 사용할 수 있는 다양한 매개변수를 확인하려면 다음 표를 참조하십시오. 사용자가 해당 매개변수를 통해 가져오는 정보를 제공하지 않을 경우 공백으로 표시됩니다.
인증과 관련된 메시지에서 사용할 수 있는 매개변수 매개변수 설명 %{linkExpiration.hours}
링크가 유효한 기간(시)을 표시합니다. %{linkExpiration.minutes}
링크가 유효한 기간(분)을 표시합니다. %{verify.code}
일회성 확인 URL을 표시합니다. %{verify.link}
설정에 지정한 조치 URL을 표시합니다. 환영 메시지 섹션에 나열된 메시지 매개변수를 사용할 수도 있습니다.
-
조치 URL의 만기 시간을 정의하십시오. URL 만기는 검증 링크가 만료되기 전에 사용자가 조치를 완료해야 하는 분 단위의 시간입니다. 이 설정은 비밀번호 재설정 링크가 유효한 기간에도 영향을 미칩니다.
-
감사 페이지 URL 상자에 사용자가 해당 이메일을 확인한 후에 표시할 페이지의 URL을 입력하십시오. 이 필드를 공백으로 두도록 선택하는 경우 App ID 기본 페이지가 표시됩니다.
-
저장 을 클릭하십시오.
이메일: 비밀번호 재설정
사용자가 앱과 상호작용할 때 비밀번호를 잊어버리거나 비밀번호를 업데이트해야 할 수도 있습니다. 요청에 대한 이메일 응답을 사용자 정의할 수 있습니다. 사용자가 비밀번호 변경을 요청하는 경우 이 이메일의 링크를 클릭할 때까지 해당 비밀번호가 변경되지 않고 유지됩니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 비밀번호 재설정 탭으로 이동하십시오.
-
비밀번호 찾기 이메일을 사용으로 설정하십시오.
-
메시지의 컨텐츠를 사용자 정의하십시오. 콘솔을 사용하여 매개변수를 추가하고 이미지를 삽입할 수 있습니다. 메시지의 언어를 변경하려면 API를 사용하여 언어를 설정하면 됩니다. 하지만 메시지의 컨텐츠 및 변환은 본인의 책임입니다. 메시지에서 사용할 수 있는 다양한 매개변수를 확인하려면 다음 표를 참조하십시오. 사용자가 해당 매개변수를 통해 가져오는 정보를 제공하지 않을 경우 공백으로 표시됩니다.
비밀번호 분실과 관련된 메시지에 사용할 수 있는 매개변수 매개변수 설명 %{linkExpiration.hours}
링크가 유효한 기간(시)을 표시합니다. %{linkExpiration.minutes}
링크가 유효한 기간(분)을 표시합니다. %{resetPassword.code}
URL의 일부로 일회성 패스코드를 표시합니다. 이는 각 개인이 서로 다른 코드를 보유함을 의미합니다. 예: https://us-south.appid.cloud.ibm.com/wfm/verify/6574839563478
%{resetPassword.link}
비밀번호를 재설정하기 위해 사용자가 클릭하는 링크를 표시합니다. 환영 메시지 섹션에 나열된 메시지 매개변수를 사용할 수도 있습니다.
-
조치 URL의 만기 시간을 정의하십시오. URL 만기는 검증 링크가 만료되기 전에 사용자가 조치를 완료해야 하는 분 단위의 시간입니다. 이 설정은 비밀번호 재설정 링크가 유효한 기간에도 영향을 미칩니다.
-
비밀번호 재설정 페이지 URL 상자에 사용자가 해당 이메일을 확인한 후에 표시할 페이지의 URL을 입력하십시오. 이 필드를 공백으로 두도록 선택하는 경우 App ID 기본 페이지가 표시됩니다.
-
저장 을 클릭하십시오.
이메일: 비밀번호 변경
비밀번호가 업데이트되면 사용자에게 알릴 수 있습니다. 알림은 사용자가 비밀번호 변경을 요청하지 않은 경우에 유용합니다. 계정의 보안을 재설정하기 위한 적절한 단계를 수행할 수 있습니다.
-
서비스 대시보드의 Cloud Directory > 이메일 템플리트 > 비밀번호 변경 탭으로 이동하십시오.
-
비밀번호 변경 이메일을 사용으로 설정하십시오.
-
메시지의 컨텐츠를 사용자 정의하십시오. 콘솔을 사용하여 매개변수를 추가하고 이미지를 삽입할 수 있습니다. 메시지의 언어를 변경하려면 API를 사용하여 언어를 설정하면 됩니다. 하지만 메시지의 컨텐츠 및 변환은 본인의 책임입니다. 메시지에서 사용할 수 있는 다양한 매개변수를 확인하려면 다음 표를 참조하십시오. 사용자가 해당 매개변수를 통해 가져오는 정보를 제공하지 않을 경우 공백으로 표시됩니다.
비밀번호 변경과 관련된 메시지에서 사용할 수 있는 매개변수 매개변수 설명 %{passwordChangeInfo.time}
새 비밀번호가 적용된 시간을 표시합니다. %{passwordChangeInfo.ipAddress}
비밀번호 변경이 요청된 IP 주소를 표시합니다. 환영 메시지 섹션에 나열된 메시지 매개변수를 사용할 수도 있습니다.
-
저장 을 클릭하십시오.
지원되는 언어
언어 관리 API를 사용하여 사용자 커뮤니케이션을 작성할 수 있는 언어를 설정할 수 있습니다. 그러나 영어만 즉시 사용할 수 있습니다. 메시지 변환은 본인의 책임입니다. API를 사용하여 구성을 설정한 후 템플리트 텍스트를 변경할 수 있도록 GUI가 업데이트됩니다.
코드 | 언어 | 지역 |
---|---|---|
af-ZA |
아프리칸스어 | 남아프리카 |
sq-AL |
알바니아어 | 알바니아 |
am-ET |
암하라어 | 에티오피아 |
ar-DZ |
아랍어 | 알제리 |
ar-BH |
아랍어 | 바레인 |
ar-EG |
아랍어 | 이집트 |
ar-IQ |
아랍어 | 이라크 |
ar-JO |
아랍어 | 요르단 |
ar-KW |
아랍어 | 쿠웨이트 |
ar-LB |
아랍어 | 레바논 |
ar-LY |
아랍어 | 리비아 |
ar-MR |
아랍어 | 모리타니 |
ar-MA |
아랍어 | 모로코 |
ar-OM |
아랍어 | 오만 |
ar-QA |
아랍어 | 카타르 |
ar-SA |
아랍어 | 사우디아라비아 |
ar-SY |
아랍어 | 시리아 |
ar-YE |
아랍어 | 튀니지 |
ar-AE |
아랍어 | 아랍에미리트 |
ar-YE |
아랍어 | 예멘 |
hy-AM |
아르메니아어 | 아르메니아 |
as-IN |
아삼어 | 인도 |
az-AZ |
아제르바이잔어 | 아제르바이잔 |
eu-ES |
바스크어 | 스페인 |
be-BY |
벨라루스어 | 벨라루스 |
bn-BD |
벵골어 | 방글라데시 |
be-BY |
벨라루스어 | 벨라루스 |
bn-BD |
벵골어 | 방글라데시 |
bn-IN |
벵골어 | 인도 |
bs-Latn-BA |
보스니아어 | 보스니아 |
bg-BG |
불가리아어 | 불가리아 |
my-MM |
버마어 | 미얀마 |
ca-ES |
카탈로니아어 | 스페인 |
zh-Hans-CN |
중국어 | 중국 |
zh-Hans-SG |
중국어 | 싱가포르 |
zh-Hant-HK |
대만어 | 홍콩 S.A.R.(중국) |
zh-Hant-MO |
대만어 | 마카오 S.A.R |
zh-Hant-TW |
대만어 | 대만 |
hr-HR |
크로아티아어 | 크로아티아 |
cs-CZ |
체코어 | 체코 |
da-DK |
덴마크어 | 덴마크 |
nl-BE |
네덜란드어 | 벨기에 |
nl-NL |
네덜란드어 | 네덜란드 |
en-AU |
영어 | 호주 |
eu-BE |
영어 | 벨기에 |
en-CM |
영어 | 카메룬 |
eu-CA |
영어 | 캐나다 |
en-GH |
영어 | 가나 |
eu-HK |
영어 | 홍콩 S.A.R.(중국) |
en-IN |
영어 | 인도 |
en-IE |
영어 | 아일랜드 |
en-KE |
영어 | 케냐 |
en-MU |
영어 | 모리셔스 |
en-NZ |
영어 | 뉴질랜드 |
en-NG |
영어 | 나이지리아 |
en-PH |
영어 | 필리핀 |
en-SG |
영어 | 싱가포르 |
en-ZA |
영어 | 남아프리카 |
en-TZ |
영어 | 탄자니아 |
en-GB |
영어 | 영국 |
en-US |
영어 | 미국 |
en-ZM |
영어 | 잠비아 |
en |
영어 | |
et-EE |
에스토니아어 | 에스토니아 |
fil-PH |
필리핀어 | 필리핀 |
fi-FI |
핀란드어 | 핀란드 |
fr-DZ |
프랑스어 | 알제리 |
fr-CM |
프랑스어 | 카메룬 |
fr-CD |
프랑스어 | 콩고민주공화국 |
fr-BE |
프랑스어 | 벨기에 |
fr-CA |
프랑스어 | 캐나다 |
fr-FR |
프랑스어 | 프랑스 |
fr-CI |
프랑스어 | 코트디부아르 |
fr-LU |
프랑스어 | 룩셈부르크 |
fr-MR |
프랑스어 | 모리타니 |
fr-MU |
프랑스어 | 모리셔스 |
fr-MA |
프랑스어 | 모로코 |
fr-SN |
프랑스어 | 세네갈 |
fr-CH |
프랑스어 | 스위스 |
fr-TN |
프랑스어 | 튀니지 |
gl-ES |
갈리시아어 | 스페인 |
lg-UG |
간다어 | 우간다 |
ka-GE |
그루지야어 | 조지아 |
de-AT |
독일어 | 오스트리아 |
de-DE |
독일어 | 독일 |
de-LU |
독일어 | 룩셈부르크 |
de-CH |
독일어 | 스위스 |
el-GR |
그리스어 | 그리스 |
gu-IN |
구자라트어 | 인도 |
ha-NG |
하우사어 | 나이지리아 |
he-IL |
히브리어 | 이스라엘 |
hi-IN |
힌디어 | 인도 |
hu-HU |
헝가리어 | 헝가리 |
is-IS |
아이슬란드어 | 아이슬란드 |
ig-NG |
이그보어 | 나이지리아 |
id-ID |
인도네시아어 | 인도네시아 |
it-IT |
이탈리아어 | 이탈리아 |
it-CH |
이탈리아어 | 스위스 |
ja-JP |
일본어 | 일본 |
kn-IN |
칸나다어 | 인도 |
kk-KZ |
카자흐어 | 카자흐스탄 |
km-KH |
크메르어 | 캄보디아 |
rw-RW |
킨야르완다어 | 르완다 |
kok-IN |
콩카니어 | 인도 |
ko-KR |
한국어 | 대한민국 |
lo-LA |
리투아니아어 | 리투아니아 |
lv-LV |
라트비아어 | 라트비아 |
lt-LT |
크메르어 | 캄보디아 |
mk-MK |
마케도니아어 | 마케도니아 |
ms-Latn-MY |
말레이어(라틴) | 말레이시아 |
ml-IN |
말라얄람어 | 인도 |
mt-MT |
몰타어 | 몰타 |
mr-IN |
마라티어 | 인도 |
mn-Cyrl-MN |
몽골어(키릴) | 몽골 |
ne-IN |
네팔어 | 인도 |
ne-NP |
네팔어 | 네팔 |
nb-NO |
노르웨이어(복말) | 노르웨이 |
nn-NO |
노르웨이어(니노르스크) | 노르웨이 |
or-IN |
오리야어(오디아어) | 인도 |
om-ET |
오로모어 | 에티오피아 |
pl-PL |
폴란드어 | 폴란드 |
pt-AO |
포르투갈어 | 앙골라 |
pt-BR |
포르투갈어 | 브라질 |
pt-MO |
포르투갈어 | 마카오 S.A.R |
pt-MZ |
포르투갈어 | 모잠비크 |
pt-PT |
포르투갈어 | 포르투갈 |
pa-IN |
펀잡어 | 인도 |
ro-RO |
루마니아어 | 루마니아 |
ru-RU |
러시아어 | 러시아 |
sr-Cyrl-RS |
세르비아어(키릴) | 세르비아 |
sr-Latn-ME |
세르비아어(라틴) | 몬테네그로 |
sr-Latn-RS |
세르비아어(라틴) | 세르비아 |
si-LK |
신할라어 | 스리랑카 |
sk-SK |
슬로바키아어 | 슬로바키아 |
sl-SI |
슬로베니아어 | 슬로베니아 |
es-AR |
스페인어 | 아르헨티나 |
es-BO |
스페인어 | 볼리비아 |
es-CL |
스페인어 | 칠레 |
es-CO |
스페인어 | 콜롬비아 |
es-CR |
스페인어 | 코스타리카 |
es-DO |
스페인어 | 도미니카 공화국 |
es-EC |
스페인어 | 에콰도르 |
es-SV |
스페인어 | 엘살바도르 |
es-GT |
스페인어 | 과테말라 |
es-HN |
스페인어 | 온두라스 |
es-MX |
스페인어 | 멕시코 |
es-NI |
스페인어 | 니카라과 |
es-PA |
스페인어 | 파나마 |
es-PY |
스페인어 | 파라과이 |
es-PE |
스페인어 | 페루 |
es-PR |
스페인어 | 푸에르토리코 |
es-ES |
스페인어 | 스페인 |
es-US |
스페인어 | 미국 |
es-UY |
스페인어 | 우루과이 |
es-VE |
스페인어 | 베네수엘라 |
sw-KE |
스와힐리어 | 케냐 |
sw-TZ |
스와힐리어 | 탄자니아 |
sv-SE |
스웨덴어 | 스웨덴 |
ta-IN |
타밀어 | 인도 |
te-IN |
텔루구어 | 인도 |
th-TH |
태국어 | 태국 |
tr-TR |
터키어 | 터키 |
uk-UA |
우크라이나어 | 우크라이나 |
ur-IN |
우르두어 | 인도 |
ur-PK |
우르두어 | 파키스탄 |
uz-Cyrl-UZ |
우즈베크어(키릴) | 우즈베키스탄 |
uz-Latn-UZ |
우즈베크어(라틴) | 우즈베키스탄 |
vi-VN |
베트남어 | 베트남 |
cy-GB |
웨일즈어 | 영국 |
yo-NG |
요루바어 | 나이지리아 |
zu-ZA |
줄루어 | 남아프리카 |