How Google Skills Handles Different Locales and Languages: A Technical Deep Dive

Google Skills supports multilingual interactions through the Gemini Live API skill, which uses a BCP-47 language_code field to configure output language for text-to-speech responses.

The google/skills repository provides a framework for building AI-powered skills, with locale and language support implemented primarily in the Gemini Live API skill. This article examines the technical implementation of language handling, from protobuf definitions to practical request configuration.

How Language Selection Works in the Gemini Live API

The Gemini Live API skill is the central mechanism for locale-aware responses in Google Skills. Unlike other skills that operate on prompt content alone, this skill provides explicit language configuration through a standardized code system.

The BCP-47 Language Code Standard

The language_code field follows BCP-47 (Best Current Practice 47), the IETF standard for language tags. Common examples include:

  • en-US – English (United States)
  • de-DE – German (Germany)
  • ja-JP – Japanese (Japan)

This standard ensures compatibility across speech recognition and text-to-speech systems.

SpeechConfig Message Definition

In skills/cloud/gemini-live-api/references/client_server_messages.proto, the SpeechConfig message defines the language configuration:

// skills/cloud/gemini-live-api/references/client_server_messages.proto
message SpeechConfig {
  // BCP‑47 (e.g. "en-US"). Output TTS language.
  string language_code = 2;
}

The comment explicitly notes this field controls output TTS language—the spoken response language, not necessarily the input processing language.

Supported Languages and Model Behavior

The Gemini Live API maintains specific requirements based on model capabilities and language support.

24 Supported BCP-47 Languages

The documentation in client_server_messages.md lists 24 supported BCP-47 languages for speechConfig.languageCode. When configuring requests, you must verify your target language appears in this supported set.

Native Audio vs. Non-Native Audio Models

Model selection affects language handling requirements:

  • Non-native audio models: The languageCode field is required and must be explicitly set
  • Native audio models: Support auto-detection of input language, making explicit configuration optional

This distinction matters for developers choosing between model implementations based on their multilingual needs.

Practical Implementation: Configuring Language in Requests

Here's a complete example showing German language configuration:

// Example request payload for Gemini Live API
{
  "speechConfig": {
    "languageCode": "de-DE"
  },
  "input": {
    "text": "Wie ist das Wetter heute?"
  }
}

When this request processes, the Live API generates a German-language audio response—provided the underlying model supports that locale.

Locale Handling in Other Google Skills

Not all skills in the repository implement explicit locale configuration. Skills accepting natural-language prompts—including BigQuery, Cloud Run, and Cloud Monitoring skills—operate on prompt content rather than a separate locale setting.

This design means:

  • The model processes input language from the prompt text itself
  • Output language typically matches input language or follows model defaults
  • No granular control over regional variants (e.g., en-US vs. en-GB)

For applications requiring precise language control, the Gemini Live API skill provides the more robust solution.

Key Source Files for Locale Implementation

File Location Purpose
client_server_messages.proto skills/cloud/gemini-live-api/references/ Defines language_code field in SpeechConfig message
client_server_messages.md skills/cloud/gemini-live-api/references/ Documents languageCode format and supported languages list
SKILL.md skills/cloud/gemini-live-api/ Overview of default implementation language and configuration options

Summary

  • Primary mechanism: Gemini Live API skill uses BCP-47 language_code in SpeechConfig
  • Standard format: BCP-47 tags like en-US, de-DE, ja-JP
  • Supported count: 24 languages officially supported
  • Model dependency: Non-native models require explicit setting; native models auto-detect
  • Other skills: Rely on prompt content without separate locale configuration
  • Source authority: Implementation defined in client_server_messages.proto

Frequently Asked Questions

What language standard does Google Skills use for locale codes?

Google Skills uses BCP-47, the IETF standard for language tags. This is implemented in the language_code field of the SpeechConfig message, accepting values like en-US, fr-FR, or zh-CN. The standard ensures consistent interoperability between speech recognition and text-to-speech components.

Is the language_code field required for all Gemini Live API requests?

The languageCode field is required for non-native audio models. Native audio models can automatically detect the input language, making explicit configuration optional. Check your model implementation type to determine whether you must include this field.

How many languages does the Gemini Live API support?

The Gemini Live API explicitly supports 24 BCP-47 languages for the speechConfig.languageCode field. The complete list is documented in client_server_messages.md within the Gemini Live API skill directory. Always verify your target language appears in this supported set before implementation.

Do other Google Skills besides Gemini Live API support locale configuration?

Most other skills—including BigQuery, Cloud Run, and Cloud Monitoring—do not implement explicit locale configuration. These skills process natural language based on prompt content alone rather than a separate language setting, offering less granular control compared to the Gemini Live API's explicit language_code mechanism.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →