Skip to contentSkip to navigationSkip to topbar
On this page

TwiML™ Voice: <Gather>



Overview

overview page anchor

To collect input during a call, use the <Gather> verb in the TwiML language. This input could include speech, digits pressed on the keypad, or both.

(information)

Speech-to-text provider changes

Between March and June 2025, Twilio is updating the speech models for <Gather> speech-to-text (STT) in waves. If you don't want to change your existing <Gather> speech models, contact support. This update offers you three choices for STT:

  1. Set no speechModel.
  2. Set a generic speechModel and language.
  3. Set a specific STT provider and speech model.

If you don't select a specific STT provider and speech model, Twilio takes the following actions:

  • Selects the speech-to-text provider and speech model for <Gather>.
  • Handles failover to an available STT provider should STT provider have an outage.

If you need pricing information, consult Programmable Voice Pricing.

To implement <Gather>, you can try either of the following.

  • Send a plain TwiML document to Twilio using curl or an API application. At a minimum, nest the <Gather> verb inside the <Response> in the TwiML document. The following example shows this TwiML document.

    1
    <?xml version="1.0" encoding="UTF-8"?>
    2
    <Response>
    3
    <Gather/>
    4
    </Response>
  • Add a Twilio helper library to your programming language of choice and generate TwiML from your web application.

    <Gather> exampleLink to code sample: <Gather> example
    1
    const VoiceResponse = require('twilio').twiml.VoiceResponse;
    2
    3
    4
    const response = new VoiceResponse();
    5
    response.gather();
    6
    7
    console.log(response.toString());

    Output

    1
    <?xml version="1.0" encoding="UTF-8"?>
    2
    <!-- page located at http://example.com/simple_gather.xml -->
    3
    <Response>
    4
    <Gather/>
    5
    </Response>

When Twilio executes the instructions in the preceding TwiML document, it performs the <Gather> using the default attribute values.

Twilio pauses and waits for the caller to enter digits on their keypad. At this point, the caller can make one of two choices:

ChoiceCaller actionTwilio action
1Enter digits then the # symbol on the keypad.Twilio sends these digits as a parameter of a POST request to the URL that hosts this <Gather> TwiML.
2Do nothing and wait for 5 seconds to pass.The request includes no more verbs, so Twilio ends the call.

The generic <Gather> TwiML document lacks some capabilities. To expand on what <Gather> can do, you need to add attributes, nest other verbs, or both.

  • To learn how to customize the <Gather> verb, consult its list of attributes.
  • To learn how Twilio can read some text or play music for your caller while waiting for their input, consult "Nest other verbs".

The <Gather> verb supports the following attributes. Though this verb requires none of these attributes, including the action attribute prevents undesired looping behavior. A <Gather> tag can include zero or more attributes.

Attribute nameAccepted valuesDefault value
actionURL (relative or absolute)current document URL
actionOnEmptyResulttrue, falsefalse
enhancedtrue, false
Limited to the phone_call model in Google STT V1.
false
finishOnKey0-9, #, *, and '' (the empty string)#
hints"words, phrases that have many words". Supported class tokens or keywords vary according to your provider and version.none
inputdtmf, speech, dtmf speechdtmf
languageSupported languages depend on your chosen speechModel: Google STT V1, Google STT V2(link takes you to an external page), or Deepgram(link takes you to an external page).en-US
methodGET, POSTPOST
numDigitspositive integerunlimited
partialResultCallbackURL (relative or absolute)none
partialResultCallbackMethodGET, POSTPOST
profanityFiltertrue, falsetrue
speechModelGeneric: default, numbers_and_commands, phone_call, experimental_conversations, experimental_utterances

Google STT V2: googlev2_long, googlev2_short, googlev2_telephony, googlev2_telephony_short

Deepgram: Any
default
speechTimeoutpositive integer or autotimeout value
timeoutpositive integer5

action

action page anchor

The action attribute specifies one URL that Twilio sends your request using HTTP.

NecessityAccepted valuesDefault value
RecommendedRelative or absolute URLcurrent document URL

After the caller finishes entering digits or reaches the timeout, Twilio sends a POST HTTP request to the specified URL. If you omit this attribute, Twilio calls the TwiML document making the request. This might lead to unwanted looping behavior.

This request includes the caller's data and Twilio's standard request parameters.

Twilio might add some extra attributes to its request after the <Gather> ends:

  • If you gathered digits from the caller, Twilio includes the Digits attribute containing the numbers your caller entered.
  • If you included speech as an input value, Twilio includes SpeechResult and Confidence parameters:
    • SpeechResult contains the transcribed result of your caller's speech.
    • Confidence contains a confidence score between 0.0 and 1.0. A higher confidence score means the potential for greater accuracy of the transcription.

Note: Your code shouldn't expect confidence as a required field. Twilio doesn't guarantee its accuracy or presence in any of the results.

After <Gather> ends, Twilio sends its request to your action URL. The current call continues using the TwiML document returned from the action URL. Twilio won't use any TwiML verbs after your <Gather> in your original TwiML.

If the caller didn't enter any digits or speech, call flow within the original TwiML document continues.

(warning)

Warning

If you started or updated a <Call> that included a twiml parameter, the action URLs for <Record>, <Gather>, and <Pay> must be absolute.

The Call Resource API Docs have language-specific examples of creating and updating Calls with TwiML:

Example 1: <Gather> using default values

example-1-gather-using-default-values page anchor

You are hosting the following TwiML document at http://example.com/complex_gather.xml.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather>
4
<Say>
5
Please enter your account number,
6
followed by the pound sign
7
</Say>
8
</Gather>
9
<Say>We didn't receive any input. Goodbye!</Say>
10
</Response>

This TwiML document can follow one of three scenarios:

ScenarioCaller actionsTwilio actions
1Doesn't press the keypad or say anything for five seconds, or enters '#' before entering any other digitsSays "We didn't receive any input. Goodbye!"
2Enters a digit while the call says "Please enter your account number..."<Gather> verb stops speaking. It waits for the caller's action.
3Enters 12345 then presses #, or allows 5 seconds to passSubmits the digits and request attribute values to the URL of this TwiML document (http://example.com/complex_gather.xml). Twilio fetches this TwiML document again and execute it. The caller gets stuck in a loop.

To avoid scenario 3, point your action URL to a different URL that hosts a different TwiML document. This new TwiML document handles the remainder of the call.

Example 2: <Gather> using action and method attributes

example-2-gather-using-action-and-method-attributes page anchor

The following code example adds the action and method attributes to the previous TwiML document.

Complex <Gather> with action and method attributes and nested <Say>Link to code sample: Complex <Gather> with action and method attributes and nested <Say>
1
const VoiceResponse = require('twilio').twiml.VoiceResponse;
2
3
4
const response = new VoiceResponse();
5
const gather = response.gather({
6
action: '/process_gather.php',
7
method: 'GET'
8
});
9
gather.say('Please enter your account number,\nfollowed by the pound sign');
10
response.say('We didn\'t receive any input. Goodbye!');
11
12
console.log(response.toString());

Output

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- page located at http://example.com/complex_gather.xml -->
3
<Response>
4
<Gather action="/process_gather.php" method="GET">
5
<Say>
6
Please enter your account number,
7
followed by the pound sign
8
</Say>
9
</Gather>
10
<Say>We didn't receive any input. Goodbye!</Say>
11
</Response>

When the caller enters their input, Twilio sends the request parameters, including the digits, to the /process_gather.php URL.

You can have Twilio read back this input to the caller. To do so, your code /process_gather.php should resemble the following.

1
<?php
2
// page located at http://yourserver/process_gather.php
3
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
4
echo "<Response><Say>You entered " . $_REQUEST['Digits'] . "</Say></Response>";
5
?>

Return to attributes list

The actionOnEmptyResult attribute specifies that <Gather> must send a webhook to the action URL with or without DTMF input. By default, if <Gather> times out while waiting for DTMF input, it continues to the next TwiML instruction.

NecessityAccepted valuesDefault value
Optionaltrue, falsefalse

Example 1: When <Gather> times out, <Say> executes

example-1-when-gather-times-out-say-executes page anchor

In the following TwiML, when <Gather> times out, Twilio executes the second <Say> instruction.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather>
4
<Say>
5
Please enter your account number,
6
followed by the pound sign
7
</Say>
8
</Gather>
9
<Say>We didn't receive any input. Goodbye!</Say>
10
</Response>

Example 2: Force a webhook for a <Gather> action

example-2-force-a-webhook-for-a-gather-action page anchor

To force <Gather> to send a webhook to the action URL, write a TwiML document that resembles the following.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather actionOnEmptyResult="true" action="/gather-action">
4
<Say>
5
Please enter your account number,
6
followed by the pound sign
7
</Say>
8
</Gather>
9
</Response>

The finishOnKey attribute specifies the value that your caller presses to submit their digits.

NecessityAccepted valuesDefault value
Optional#, *, single digits 0-9, an empty string ('')#, the hash or pound sign

If you set this attribute to an empty string, <Gather> captures all caller input. After the call reaches its timeout, Twilio submits the caller's digits to the action URL.

Example 1: Successful <Gather> workflow with finishOnKey set

example-1-successful-gather-workflow-with-finishonkey-set page anchor
  1. You set the finishOnKey attribute to a value of #.
  2. When your app is running, your caller enters 1234#.
  3. After the caller presses #, Twilio stops waiting for more input.
  4. Twilio submits Digits=1234 to your action URL. The request doesn't include the #.

Example 2: Failed <Gather> workflow with finishOnKey set

example-2-failed-gather-workflow-with-finishonkey-set page anchor

Consider the following TwiML document. In this example, finishOnKey never works, because you never inform the caller to press it.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather input="speech dtmf" finishOnKey="#" timeout="5">
4
<Say>
5
Please say something or press * to access the main menu
6
</Say>
7
</Gather>
8
<Say>We didn't receive any input. Goodbye!</Say>
9
</Response>

Return to attributes list

The hints attribute specifies a list of words or phrases that Twilio should expect during recognition. Adding hints to your <Gather> improves Twilio's recognition.

NecessityAccepted valuesDefault value
Optionalcomma-separated list of up to 500 entries

Entries contain either single words or phrases. Each entry can up to 100 characters in length. Separate each word in a phrase with a space.

Example: hints attribute with four entries

example-hints-attribute-with-four-entries page anchor

The following example includes four entries as two single words and two phrases.

hints="this is a phrase I expect to hear, keyword, product name, name"

To learn which tokens and keywords your STT provider supports, click the tab for your provider.

Google STT V2Deepgram

Twilio implemented Google's gV2tokens(link takes you to an external page) class tokens list.

To add a hint, pass a class token.

hints="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"

Developer using Google STT V1 can use tokens from the gV1tokens(link takes you to an external page) class tokens list.

Return to attributes list

The input attribute specifies which types of input Twilio accepts. The types include dual-tone multi-frequency (DTMF), speech, or both.

NecessityAccepted valuesDefault value
Optionaldtmf, speech, dtmf speechdtmf
  • When this attribute value includes speech, Twilio gathers speech from the caller for a maximum duration of 60 seconds. <Gather> doesn't recognize speaking individual alphanumeric characters like "ABC123".
  • When you set this attribute value to dtmf speech, Twilio gives precedence to the first input it detects. If Twilio detects speech first, it ignores the finishOnKey attribute.

Example: Accept speech input from caller

example-accept-speech-input-from-caller page anchor

The following code example shows a <Gather> that specifies speech input from the caller.

  1. When this TwiML executes, the caller hears the <Say> prompt.
  2. Twilio collects speech input for up to 60 seconds.
  3. Once the caller stops speaking for five seconds, Twilio posts their transcribed speech to your action URL.
1
const VoiceResponse = require('twilio').twiml.VoiceResponse;
2
3
4
const response = new VoiceResponse();
5
const gather = response.gather({
6
input: 'speech',
7
action: '/completed'
8
});
9
gather.say('Welcome to Twilio, please tell us why you\'re calling');
10
11
console.log(response.toString());

Output

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- page located at http://example.com/simple_gather.xml -->
3
<Response>
4
<Gather input="speech" action="/completed">
5
<Say>Welcome to Twilio, please tell us why you're calling</Say>
6
</Gather>
7
</Response>

Return to attributes list

The language attribute specifies the language Twilio should recognize from your caller.

NecessityAccepted valuesDefault value
Optionalany value the STT provider supportsen-US

Return to attributes list

The method attribute specifies the HTTP verb Twilio should use to request your action URL.

NecessityAccepted valuesDefault value
OptionalGET, POSTPOST

Return to attributes list

The numDigits attribute specifies how many digits you require from callers for this <Gather> instance for DTMF input.

NecessityAccepted valuesDefault value
Optionalany positive integer

Example: Submit data once caller enters numDigits

example-submit-data-once-caller-enters-numdigits page anchor

Twilio asks the caller for their US ZIP Code. The developer expects the value to contain five digits, so they set numDigits="5". Once the caller enters the final digit of 94117, Twilio submits the data to your action URL.

Return to attributes list

The partialResultCallback attribute specifies a URL to which Twilio sends requests as it recognizes speech in real time. These requests contain a parameter labeled UnstableSpeechResult which contains partial transcriptions. These transcriptions may change as the speech recognition progresses.

NecessityAccepted valuesDefault value
Optionalcomma-separated list of up to 500 entries

The Twilio makes asynchronous webhooks to your partialResultCallback URL. They don't accept any TwiML documents in response. To take more actions based on this partial result, use the REST API to modify the call.

Return to attributes list

partialResultCallbackMethod

partialresultcallbackmethod page anchor

The partialResultCallbackMethod attribute specifies the HTTP verb Twilio should use to request your partialResultCallback URL.

NecessityAccepted valuesDefault value
OptionalGET, POSTPOST

Return to attributes list

The profanityFilter attributes specifies whether Twilio should filter profanities out of your speech transcription.

NecessityAccepted valuesDefault value
Optionaltrue, falsetrue

When set to true, Twilio replaces all but the initial character in each filtered profane word with asterisks like f***.

Return to attributes list

The speechModel attribute specifies which language model to apply to your <Gather> request.

NecessityAccepted valuesDefault value
Optionaldefault, numbers_and_commands, phone_call, experimental_conversations, experimental_utterances, googlev2_long, googlev2_short, googlev2_telephony, googlev2_telephony_short, deepgram_nova-2default
  • This attribute requires you to set speechTimeout to a positive integer value. Don't use auto.
  • If Twilio selects your language model, it can handle failover to another provider. In practice, if Google experiences a failure, Twilio switches STT to Deepgram without any action on your part.
  • If you want to select the model, you can choose either a generic model or a specific STT model.

Generic speech-to-text models

generic-speech-to-text-models page anchor

Generic models include the following values:

ModelSupported languages
defaultAny
phone_callen-US, en-GB, en-AU, fr-FR, fr-CA, ja-JP, ru-RU, es-US, es-ES, pt-BR
numbers_and_commandsAny
experimental_conversationsar-*, da-DK, de-DE, en-AU, en-GB, en-IN, en-US, es-ES, es-US, fi-FI, fr-CA, fr-FR, hi-IN, ja-JP, ko-KR, mk-MK, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, th-TH, tr-TR, uk-UA, vi-VN
experimental_utterancesar-*, da-DK, de-DE, en-AU, en-GB, en-IN, en-US, es-ES, es-US, fi-FI, fr-CA, fr-FR, hi-IN, ja-JP, ko-KR, mk-MK, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, th-TH, tr-TR, uk-UA, vi-VN

Experimental generic speech-to-text models

experimental-generic-speech-to-text-models page anchor

Experimental models give access to the latest speech technology and machine learning research, and can provide higher accuracy for speech recognition over other available models. Available models might support features that experimental models don't.

ModelUse CaseExample
experimental_utterancesshort utterances of a few seconds in length like commands or other single word directed speech"press 0 or say 'support' to speak with an agent."
experimental_conversationsspontaneous speech and conversations"tell us why you're calling today."

Specific speech-to-text models

specific-speech-to-text-models page anchor

Specific STT models include a variety from Google Speech-to-Text (STT) V2 (googlev2) or Deepgram (deepgram). If the provider has an outage, Twilio doesn't switch providers on your behalf. The following tabs display the accepted model values for each STT provider.

Google STT V2Deepgram

This attribute expresses its value in the format of googlev2_{model}.

This attribute accepts the following values for Google STT V2 models:

  • googlev2_long
  • googlev2_short
  • googlev2_telephony
  • googlev2_telephony_short
1
<Gather input="speech" speechModel="googlev2_telephony">
2
<Say>Please tell us why you're calling.</Say>
3
</Gather>

If Twilio doesn't support the combination of language and model you need, it falls back to a generic model.

To learn which languages and models that Google STT V2 supports, consult Google's documentation on Speech-to-Text V2 supported languages(link takes you to an external page).

To improve the accuracy of your speech to text recognition, set this attribute value to the specific language model best suited for your use case.

To find which works model best for your use case, consider exploring all options.

Return to attributes list

The speechTimeout specifies how long Twilio should wait after a pause in speech before stopping recognition.

NecessityAccepted valuesDefault value
Optionalpositive integer or autotimeout value
  • If you set speechTimeout to auto, Twilio stops recognizing speech at the first pause in speech.
  • This attribute expresses its value in seconds.
  • After the pause reaches this timeout, Twilio sends the speechResult to your action URL.
  • If your <Gather> request includes both timeout and speechTimeout, timeout takes precedence for DTMF input and speechTimeout takes precedence for speech.

Return to attributes list

The timeout attribute specifies how long Twilio should wait for the caller provide input on the call. This includes either pressing another digit or saying another word.

NecessityAccepted valuesDefault value
Optionalpositive integer or auto5
  • This attribute expresses its value in seconds.
  • Before Twilio begins the timeout period, it waits until all nested verbs have executed.
  • After the pause reaches this timeout, Twilio sends the speechResult to your action URL.

Example: Use timeout with <Gather> in a TwiML document

example-use-timeout-with-gather-in-a-twiml-document page anchor

Consider the following TwiML document. Before submitting the caller's data, Twilio waits three seconds for the caller. This pause gives the caller time to either press another key or say another word.

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather input="speech dtmf" timeout="3" numDigits="1">
4
<Say>Please press 1 or say sales for sales.</Say>
5
</Gather>
6
</Response>

Return to attributes list

enhanced (Deprecated)

enhanced-deprecated page anchor

The enhanced attribute specifies that <Gather> should use the premium Google STT V1 model. When transcribing phone conversations, the premium model produces 54% fewer errors compared to the base model.

NecessityAccepted valuesDefault value
Deprecatedtrue, falsefalse

This attribute has the following limitations:

  • Applies to only Google STT V1 phone_call model. Twilio ignores the enhanced attribute when set for any other model.
  • Applies to the following languages: en-GB, en-US, es-ES, es-US, fr-CH, fr-FR, ja-JP, ru-RU.

The following TwiML document uses the premium phone_call model for <Gather>:

1
<Gather input="speech" enhanced="true" speechModel="phone_call" language="en-GB">
2
<Say>Please tell us why you're calling.</Say>
3
</Gather>

Return to attributes list


You can nest the following verbs within <Gather>:

When a <Gather> contains nested <Say> or <Play> verbs, the timeout begins either after the audio completes or when the caller presses their first key. If <Gather> contains multiple <Play> verbs, Twilio retrieves the contents of all files before the <Play> begins.

Example: <Gather> with a nested <Say>

example-gather-with-a-nested-say page anchor

This example shows a <Gather> with a nested <Say>. This TwiML document reads some text to the caller and can accept input from the caller at any time.

1
const VoiceResponse = require('twilio').twiml.VoiceResponse;
2
3
4
const response = new VoiceResponse();
5
const gather = response.gather({
6
input: 'speech dtmf',
7
timeout: 3,
8
numDigits: 1
9
});
10
gather.say('Please press 1 or say sales for sales.');
11
12
console.log(response.toString());

Output

1
<?xml version="1.0" encoding="UTF-8"?>
2
<Response>
3
<Gather input="speech dtmf" timeout="3" numDigits="1">
4
<Say>Please press 1 or say sales for sales.</Say>
5
</Gather>
6
</Response>

Cache static media for <Play> verbs

cache-static-media-for-play-verbs page anchor

If you use <Play> verbs, consider hosting your media in AWS S3 in the us-east-1, eu-west-1, or ap-southeast-2 regions depending on the Twilio Region you use. No matter where you host your media files, verify your Cache Control headers. Twilio uses a caching proxy in its webhook pipeline and caches media files with cache headers. Serving media out of Twilio's cache can take 10ms or less. As we run a fleet of caching proxies, it may take multiple requests before all of the proxies have a copy of your file in cache.

When a <Gather> reaches its timeout without any caller input, call control falls to the next verb in your original TwiML document.

Example: Include a <Redirect> after <Gather>

example-include-a-redirect-after-gather page anchor

To send a request to your action URL even if <Gather> times out, include a <Redirect> after the <Gather>.

1
const VoiceResponse = require('twilio').twiml.VoiceResponse;
2
3
4
const response = new VoiceResponse();
5
const gather = response.gather({
6
action: '/process_gather.php',
7
method: 'GET'
8
});
9
gather.say('Enter something, or not');
10
response.redirect({
11
method: 'GET'
12
}, '/process_gather.php?Digits=TIMEOUT');
13
14
console.log(response.toString());

Output

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- page located at http://example.com/gather_hints.xml -->
3
<Response>
4
<Gather action="/process_gather.php" method="GET">
5
<Say>Enter something, or not</Say>
6
</Gather>
7
<Redirect method="GET">
8
/process_gather.php?Digits=TIMEOUT
9
</Redirect>
10
</Response>

With this code, Twilio moves to the next verb in the TwiML document (<Redirect>) when <Gather> times out. In this example, Twilio makes a new GET request to /process_gather.php?Digits=TIMEOUT.


You might face a few common issues when working with <Gather>:

ProblemSolution
<Gather> doesn't receive caller input from callers who use a VoIP phone.Some VoIP phones have trouble sending DTMF digits. These phones may use compressed bandwidth-conserving audio protocols. These interfere with the transmission of the digit's signal. Consult your phone's documentation on DTMF problems.
Twilio doesn't send the Digits parameter to your <Gather> URL.Check to ensure your application doesn't responding to the action URL with an HTTP 3xx redirect. Twilio follows this redirect, but won't resend the Digits parameter.

If you encounter other issues with <Gather>, reach out to our support team for assistance(link takes you to an external page).


Language appendix

languagetags page anchor

You can download all available languages as a .csv file(link takes you to an external page).

LanguageLanguage tagSupports enhanced modelSupports experimental models
Afrikaans (South Africa)af-ZANoNo
Albanian (Albania)sq-ALNoNo
Amharic (Ethiopia)am-ETNoNo
Arabic (Algeria)ar-DZNoYes
Arabic (Bahrain)ar-BHNoYes
Arabic (Egypt)ar-EGNoYes
Arabic (Iraq)ar-IQNoYes
Arabic (Israel)ar-ILNoYes
Arabic (Jordan)ar-JONoYes
Arabic (Kuwait)ar-KWNoYes
Arabic (Lebanon)ar-LBNoYes
Arabic (Mauritania)ar-MRNoYes
Arabic (Morocco)ar-MANoYes
Arabic (Oman)ar-OMNoYes
Arabic (Qatar)ar-QANoYes
Arabic (Saudi Arabia)ar-SANoYes
Arabic (State of Palestine)ar-PSNoYes
Arabic (Tunisia)ar-TNNoYes
Arabic (United Arab Emirates)ar-AENoYes
Arabic (Yemen)ar-YENoYes
Armenian (Armenia)hy-AMNoNo
Azerbaijani (Azerbaijani)az-AZNoNo
Basque (Spain)eu-ESNoNo
Bengali (Bangladesh)bn-BDNoNo
Bengali (India)bn-INNoNo
Bosnian (Bosnia and Herzgovina)bs-BANoNo
Bulgarian (Bulgaria)bg-BGNoNo
Burmese (Myanmar)my-MMNoNo
Catalan (Spain)ca-ESNoNo
Chinese, Cantonese (Traditional, Hong Kong)yue-Hant-HKNoNo
Chinese, Mandarin (Simplified, China)cmn-Hans-CNNoNo
Chinese, Mandarin (Simplified, Hong Kong)cmn-Hans-HKNoNo
Chinese, Mandarin (Traditional, Taiwan)cmn-Hant-TWNoNo
Croatian (Croatia)hr-HRNoNo
Czech (Czech Republic)cs-CZNoNo
Danish (Denmark)da-DKNoYes
Dutch (Netherlands)nl-NLNoYes
Dutch (Belgium)nl-BENoNo
English (Australia)en-AUNoYes
English (Canada)en-CANoNo
English (Ghana)en-GHNoNo
English (Hong Kong)en-HKNoNo
English (India)en-INNoYes
English (Ireland)en-IENoNo
English (Kenya)en-KENoNo
English (New Zealand)en-NZNoNo
English (Nigeria)en-NGNoNo
English (Pakistan)en-PKNoNo
English (Philippines)en-PHNoNo
English (Singapore)en-SGNoNo
English (South Africa)en-ZANoNo
English (Tanzania)en-TZNoNo
English (United Kingdom)en-GBYesYes
English (United States)en-USYesYes
Estonian (Estonia)et-EENoNo
Filipino (Philippines)fil-PHNoNo
Finnish (Finland)fi-FINoYes
French (Belgium)fr-BENoNo
French (Canada)fr-CANoYes
French (France)fr-FRYesYes
French (Switzerland)fr-CHYesNo
Galician (Spain)gl-ESNoNo
Georgian (Georgia)ka-GENoNo
German (Austria)de-ATNoNo
German (Germany)de-DENoYes
German (Switzerland)de-CHNoNo
Greek (Greece)el-GRNoNo
Gujarati (India)gu-INNoNo
Hebrew (Israel)he-ILNoNo
Hindi (India)hi-INNoYes
Hungarian (Hungary)hu-HUNoNo
Icelandic (Iceland)is-ISNoNo
Indonesian (Indonesia)id-IDNoNo
Italian (Italy)it-ITNoNo
Italian (Switzerland)it-CHNoNo
Japanese (Japan)ja-JPYesYes
Javanese (Indonesia)jv-IDNoNo
Kannada (India)kn-INNoNo
Kazakh (Kazakhistan)kk-KZNoNo
Khmer (Cambodian)km-KHNoNo
Korean (South Korea)ko-KRNoYes
Lao (Laos)lo-LANoNo
Latvian (Latvia)lv-LVNoNo
Lithuanian (Lithuania)lt-LTNoNo
Macedonian (North Macedonia)mk-MKNoYes
Malay (Malaysia)ms-MYNoNo
Malayalam (India)ml-INNoNo
Marathi (India)mr-INNoNo
Mongolian (Mongolia)mn-MNNoNo
Nepali (Nepal)ne-NPNoNo
Norwegian Bokmål (Norway)nb-NONoYes
Persian (Iran)fa-IRNoNo
Polish (Poland)pl-PLNoYes
Portuguese (Brazil)pt-BRNoYes
Portuguese (Portugal)pt-PTNoYes
Punjabi (Gurmukhi India)pa-guru-INNoNo
Romanian (Romania)ro-RONoYes
Russian (Russia)ru-RUYesYes
Serbian (Serbia)sr-RSNoNo
Sinhala (Sri Lanka)si-LKNoNo
Slovak (Slovakia)sk-SKNoNo
Slovenian (Slovenia)sl-SINoNo
Spanish (Argentina)es-ARNoNo
Spanish (Bolivia)es-BONoNo
Spanish (Chile)es-CLNoNo
Spanish (Colombia)es-CONoNo
Spanish (Costa Rica)es-CRNoNo
Spanish (Dominican Republic)es-DONoNo
Spanish (Ecuador)es-ECNoNo
Spanish (El Salvador)es-SVNoNo
Spanish (Guatemala)es-GTNoNo
Spanish (Honduras)es-HNNoNo
Spanish (Mexico)es-MXNoNo
Spanish (Nicaragua)es-NINoNo
Spanish (Panama)es-PANoNo
Spanish (Paraguay)es-PYNoNo
Spanish (Peru)es-PENoNo
Spanish (Puerto Rico)es-PRNoNo
Spanish (Spain)es-ESYesYes
Spanish (United States)es-USYesYes
Spanish (Uruguay)es-UYNoNo
Spanish (Venezuela)es-VENoNo
Sundanese (Indonesia)su-IDNoNo
Swahili (Kenya)sw-KENoNo
Swahili (Tanzania)sw-TZNoNo
Swedish (Sweden)sv-SENoNo
Tamil (India)ta-INNoNo
Tamil (Malaysia)ta-MYNoNo
Tamil (Singapore)ta-SGNoNo
Tamil (Sri Lanka)ta-LKNoNo
Telugu (India)te-INNoNo
Thai (Thailand)th-THNoYes
Turkish (Turkey)tr-TRNoYes
Ukrainian (Ukraine)uk-UANoYes
Urdu (India)ur-INNoNo
Urdu (Pakistan)ur-PKNoNo
Uzbek (Uzbekistan)uz-UZNoNo
Vietnamese (Vietnam)vi-VNNoYes
Zulu (South Africa)zu-ZANoNo