Develop Skills in Multiple Languages

You can use the Alexa Skills Kit to create skills in multiple languages. A skill can support a single language, or any combination of the available languages:

  • English (Australia)
  • English (Canada)
  • English (India)
  • English (UK)
  • English (US)
  • French (FR)
  • German
  • Italian
  • Japanese
  • Spanish (ES)

Users who interact with Alexa in a particular language can use skills that support that language. For example, a user might set their Alexa device to use German. That user can enable and use any published skills available in their region that support German.

High-Level Steps

This document covers multiple-language custom skills. See the sections below for details about these steps.

  1. Design a voice user interface for the language you want to support. The voice user interface includes:
    • The skill invocation name
    • Intent schema
    • Sample utterances
    • Custom slot type values

    See Design the Voice User Interface for Each Language Your Skill Supports.

  2. Include logic in your code to check incoming requests (IntentRequest, LaunchRequest, and SessionEndedRequest) for the user's language and respond in the correct language. For example, if the user launched your skill in German, your skill should return German text to speech that Alexa can speak to the user.

    See Implement Code Changes.

  3. Deploy your updated code to the relevant endpoints:
    • You can use multiple endpoints: North America, Europe and India, and Far East.
    • If you choose to deploy your code to multiple endpoints, you must maintain the same code at all endpoints. The code must handle all languages you support, as noted in the previous step.

    See Provide Multiple Endpoints for Your Skill.

  4. Configure the skill in the developer console with the new endpoints, the new voice user interface, and other language-specific information.

    See Update the Skill Configuration with Language-specific Details.

  5. Test the new language version of your skill.

  6. Configure the distribution for your skill to make it available to customers in relevant locations.

    See Decide Where to Distribute Your Skill.

Language-specific and Global Information in the Developer Console

The configuration for a skill in the developer console provides the Alexa service with the information needed to:

  • Route requests to the AWS Lambda function or web service that implements the skill. AWS Lambda is a service offering by Amazon Web Services.
  • Display information about the skill in the Amazon Alexa App.

When you add multiple languages to a skill, some of the information in the configuration applies to all languages, while some applies only to a single language.

  • All aspects of the interaction model (intents, utterances, etc.) are unique to the language.
  • Fields used to present data to the user in the Alexa App (public name, description, etc.) are unique to the language.
  • Configuration settings such as interfaces, endpoints, account linking settings, and permissions apply across all languages.

Design the Voice User Interface for Each Language Your Custom Skill Supports

For each language your custom skill supports, you create you voice user interface. This includes:

  • Invocation name: A phrase users speak to begin interacting with your skill.
  • Intent schema: A set of intents your service can accept and process. We recommend keeping the intents consistent across different languages so that customers have consistent experience across languages.
  • Sample utterances: A mapping between the intents and likely spoken phrases.
  • Custom slot type values: A representative list of values defined for each custom slot type defined in your intent schema.

For details about these items, see:

When you choose your invocation name and write sample utterances, be sure to use words and phrases appropriate for native speakers of the language.

See Update the Skill Configuration with Language-specific Details, below, for details about setting up a new language and adding a language-specific voice user interface.

Implement Code Changes for a Custom Skill

The cloud-based service you create for a custom skill needs to be able to handle requests from all languages you support. For instance, if your skill supports both German and English (UK), the same code must:

  • Take a German request and respond to the user with German text-to-speech.
  • Take an English (UK) request and respond to the user with English text-to-speech.

You can determine the language used to invoke the skill by checking the locale property included in all requests sent to your service (for example, LaunchRequest or IntentRequest. See Request Format for more about the different types of requests your skill can receive). Note that list events and skill events that are sent to your service do not include the locale property.

The locale property is part of the request object:

{
  "request": {
    "type": "LaunchRequest",
    "requestId": "EdwRequestId.00000000-0000-0000-0000-000000000000",
    "timestamp": "2016-06-14T20:59:24Z",
    "locale": "en-US"
  }
}

The locale property can be one of the following:

Locale Code Language

de-DE

German

en-AU

English (Australia)

en-CA

English (Canada)

en-GB

English (UK)

en-IN

English (India)

en-US

English (US)

es-ES

Spanish (ES)

fr-FR

French (FR)

it-IT

Italian

ja-JP

Japanese

Although feature parity across languages is not required, keep in mind that users will be able to choose the language for their devices and switch between languages. A user may therefore interact with your skill in more than one language, so providing a consistent experience across languages is important.

Provide Multiple Endpoints for Your Skill

The Alexa service currently determines which endpoint to call based on the customer's location and the endpoints you provide. You can specify any combination of the following endpoints for your skill.

Geographical region Used for...

North America

Customers in North America (customers who registered their device with the .com site)

Europe and India

  • Customers in Europe (customers who registered their device with a European site, such as .de or .co.uk)
  • Customers in India (customers who registered their device with the India site .in)

Far East

Customers in Japan and Australia/New Zealand (customers who registered their device with .co.jp or .com.au)

If the preferred endpoint for the customer's region is not available, Alexa calls the Default endpoint.

If you choose to use multiple endpoints, you must deploy the same code to each one. A user request in a particular language can be sent to any of your endpoints. For example, suppose your skill supports both English (US) and German. An English request from a user using amazon.de would go to the Europe endpoint (if provided). The code at that endpoint must be able to handle and respond appropriately to an English-language request. Use the locale property provided in the request to identify the user's language, as described in Implementing Code Changes for a Custom Skill.

If you are using AWS Lambda to host your skill service, the Lambda function must be hosted in a specific region:

Endpoint Required Lambda Region

North America

US East (N. Virginia)

Europe and India

EU (Ireland)

Far East

US West (Oregon) or Asia Pacific (Tokyo)

Update the Skill Configuration with Language-specific Details

To add support for additional languages, you need to add the language to the skill configuration and provide the language-specific information, such as your new voice user interface.

Add a Language to an Existing Skill

  1. Go to developer.amazon.com/alexa.
  2. Click Your Alexa Consoles and then click Skills. This opens the developer console and displays any skills you have already created.
  3. Find the skill to change in the list and click Edit.
  4. Click the language drop-down in the upper-left and click Language Settings. This page lists all the languages already included in your skill.
  5. Click Add new language and then choose the language to add. Click Save when done.

Update the Skill with Language-specific Details

Once you've added at least one additional language to a skill, you can switch between languages with the language drop-down.

  1. Select the language to edit from the language drop-down.
  2. Complete the sections under Custom on the Build page.
    • Add your language-specific interaction model in the Interaction Model section.
    • If necessary, add your additional endpoints in Endpoint.
  3. On the Distribution page, select the language under Skill Preview and fill in the fields for displaying the skill in the store.
  4. Select where you want to distribute your skill on the Availability section.

Decide Where to Distribute Your Skill

The Where would you like this skill to be available? option determines the countries and regions in which customers can enable and use your skill. Customers can access all skills that meet all of the following:

  • The skill is distributed in their country or region.
  • The skill supports the language selected for their Alexa-enabled device.
  • The skill supports the primary language for the country or region in which the customer's device is registered. This determines whether the skill is available in the skill store. For example:
    • A skill must have an English (US) version to be available to customers who registered their devices with the .com site.
    • A skill must have a German version to be available to customers who registered their devices with the .de site.

The distribution applies to the skill, not to individual languages. All language versions of the skill are made available to customers in the specified countries and regions, barring content policy restrictions.

It is important to remember that customers can choose the language they want to use for their devices, and they are not constrained by their location when choosing the language. For instance, a customer using a .de account can choose to use a different language, such as English (UK), for their Alexa devices. However, changing the language does not affect the skill catalog available to the .de account in the skill store. Therefore, to make a skill available to customers who use .de accounts, you need to include a German version in the skill store.

Example: Worldwide Distribution with One Language

You choose to distribute your skill in all countries and regions where Amazon distributes skills. You configure the skill with just English (UK) and no other languages. The result:

  • The skill is available in the skill store for all countries and regions where English (UK) is the primary language.
  • The skill can be used by customers in those countries and regions who have set their device to use English (UK).
  • The skill is not available to customers anywhere in the world who have selected German, English (US), or any other language for their devices.

Example: Limited Distribution with Multiple Languages

You choose to distribute your skill only in Germany because your skill's functionality is region-specific. You configure the skill with German and English (UK) for the languages. In this case:

  • The skill is available only in the German skill store, due to the selected country distribution.
  • The skill can be used by customers in Germany who have set their devices to use German.
  • The skill can be used by customers in Germany who have set their devices to use English (UK).
  • The skill cannot be used by customers in Germany who have set their devices to use English (US) or any other language.
  • The skill cannot be used by customers in any other country or region, regardless of the language they've selected for their devices.

Should Your Skill be Available Everywhere?

Distributing your skill everywhere Amazon has a presence expands your potential customer and user base. Selecting In all countries and regions where Amazon distributes skills is often the best option unless there is a good reason to limit your skill's availability.

  • When you distribute a skill globally, it is available to users worldwide who have configured their devices to use a language that your skill supports.
  • When you limit the availability of the skill to a particular country or region, it is available just to users in the specified country / region who have configured their devices to use a language that your skill supports.

When deciding on your skill's availability, consider whether the skill can be useful to customers in other countries. For example, a trivia game skill can be entertaining regardless of where the user may live, especially if you can add additional languages. In contrast, some skills are useful only in particular geographic areas. A skill that provides food delivery for major US cities, but not in Europe, would not be useful in countries or regions other than the United States.