Localization

The Meetings API supports localization for the UI of a meeting, allowing you to change the language used. This can be controlled in two ways:

  1. Predefined in the API Call - this allows the language to be predefined for all participants in the meeting via an option in the API call.
  2. Selection from the UI - this adds a language selection option to the UI allowing each participant in the meeting to select their preferred language.

Apply a language to all participants

This option allows the language to be pre-set in the API call; the selected language will be applied to all participants in the meeting. This is done by adding "ui_settings": {"language":"XX"} to the API call where you create your meeting, where XX is the language code of your selected language (see Available Languages below for a list of currently supported languages).

For example, this API call will create a room where the language is set to Spanish for all participants:

curl -X POST 'https://api-eu.vonage.com/v1/meetings/rooms' \ -H 'Authorization: Bearer '$JWT \ -H 'Content-Type: application/json' \ -d '{ "display_name":"New Meeting Room", "ui_settings": { "language": "ES" } }'
const credentials = new Auth({
    privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
    applicationId: VONAGE_APPLICATION_ID,
});
const options = {};

const meetingsClient = new Meetings(credentials, options);
await meetingsClient.createRoom({
    type: MeetingType.INSTANT,
    displayName: "New Meeting Room",
    uiSettings: {
        language: RoomLanguage.ES,
    },
});
var client = VonageClient.builder()
    .applicationId(VONAGE_APPLICATION_ID)
    .privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
    .build();
var room = MeetingRoom.builder("New Meeting Room")
    .uiSettings(UISettings.builder()
        .language(RoomLanguage.ES)
        .build()
    )
    .build();
client.getMeetingsClient().createRoom(room);
var credentials = Credentials.FromAppIdAndPrivateKeyPath(applicationId, privateKeyPath);
var client = new VonageClient(credentials);
var request = CreateRoomRequest.Build()
    .WithDisplayName("New Meeting Room")
    .WithUserInterfaceSettings(new UiSettings(UiSettings.UserInterfaceLanguage.Es))
    .Create();
var response = await client.MeetingsClient.CreateRoomAsync(request);
$keypair = new Vonage\Client\Keypair(
    VONAGE_APPLICATION_PRIVATE_KEY_PATH
    VONAGE_APPLICATION_ID,
);

$client = new Vonage\Client($keypair);

$room = (new Vonage\Meetings\Room())->fromArray([
    'display_name' => 'New Meeting Room',
    'ui_settings' => [
        'language' => 'es'
    ]
]);

$createdRoom = $client->meetings()->createRoom($room);
client = vonage.Client(
    application_id=VONAGE_APPLICATION_ID,
    private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)

response = client.meetings.create_room({
    'display_name': 'New Meeting Room',
    'ui_settings': {'language': 'es'},
})
client = Vonage::Client.new(
  application_id: ENV["VONAGE_APPLICATION_ID"],
  private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)

room = client.meetings.rooms.create(
  display_name: "New Meeting Room",
  ui_settings: {
    language: "ES"
  }
)

If no language is selected in the API call, English is selected by default.

Available Languages

Language Language Code
Arabic AR
Brazilian Portuguese PT-BR
Catalan CA
Chinese (Taiwan) ZH-TW
Chinese (Mainland) ZH-CN
English EN
French FR
German DE
Hebrew HE
Italian IT
Spanish ES

Individual selection from the UI

This option will display a language setting in the UI, allowing each participant to choose what language they want. This is done by adding "is_locale_switcher_available": true to your API call within the available_features object:

curl -X POST 'https://api-eu.vonage.com/v1/meetings/rooms' \ -H 'Authorization: Bearer '$JWT \ -H 'Content-Type: application/json' \ -d '{ "display_name": "New Meeting Room", "available_features": { "is_locale_switcher_available": true } }'
const credentials = new Auth({
    privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
    applicationId: VONAGE_APPLICATION_ID,
});
const options = {};

const meetingsClient = new Meetings(credentials, options);
await meetingsClient.createRoom({
    type: MeetingType.INSTANT,
    displayName: "New Meeting Room",
    availableFeatures: {
        isLocaleSwitcherAvailable: true,
    },
});
var client = VonageClient.builder()
    .applicationId(VONAGE_APPLICATION_ID)
    .privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
    .build();
var room = MeetingRoom.builder("New Meeting Room")
    .availableFeatures(AvailableFeatures.builder()
        .isLocaleSwitcherAvailable(true)
        .build()
    )
    .build();
client.getMeetingsClient().createRoom(room);
var credentials = Credentials.FromAppIdAndPrivateKeyPath(applicationId, privateKeyPath);
var client = new VonageClient(credentials);
var request = CreateRoomRequest.Build()
    .WithDisplayName("New Meeting Room")
    .WithFeatures(new Room.Features {IsLocaleSwitcherAvailable = true})
    .Create();
var response = await client.MeetingsClient.CreateRoomAsync(request);
$keypair = new Vonage\Client\Keypair(
    VONAGE_APPLICATION_PRIVATE_KEY_PATH
    VONAGE_APPLICATION_ID,
);

$client = new Vonage\Client($keypair);

$room = (new Vonage\Meetings\Room())->fromArray([
    'display_name' => 'New Meeting Room',
    'available_features' => [
        'is_locale_switcher_available' => true
    ]
]);

$createdRoom = $client->meetings()->createRoom($room);
client = vonage.Client(
    application_id=VONAGE_APPLICATION_ID,
    private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)

response = client.meetings.create_room({
    'display_name': 'New Meeting Room',
    'available_features': {
        'is_locale_switcher_available': True,
    },
})
client = Vonage::Client.new(
  application_id: ENV["VONAGE_APPLICATION_ID"],
  private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)

room = client.meetings.rooms.create(
  display_name: "New Meeting Room",
  available_features: {
    is_locale_switcher_available: true
  }
)

With this option enabled, the participants will be able to see a globe icon in the top right toolbar within the meeting:

Meeting Options

Clicking on the globe will then present the user with a list of options to change the language of the UI:

Menu showing the different language options available