Regional Configuration

Like most operating systems, CrOS supports user-selectable region settings, including keyboard layouts, languages, and time zones. In order to support an ideal out-of-box experience (OOBE), each device must be shipped with regional configuration suitable for its intended users. These settings are controlled by a value stored in the RO VPD (read-only vital product data) region field, and a database cros-regions.json.

This document describes how regional configurations are managed in the factory SDK.

Regions and region codes

A region is a market in which shipped devices share a particular configuration of keyboard layout, language, and time zone.

Each region is identified with a region code such as us. A region may be any of the following:

  • A single country, such as the United States. The region code is the two-letter ISO 3166-1 alpha-2 code, e.g., us. Note that the alpha-2 code for the UK is gb, not uk.

  • A non-country entity, such as Hong Kong, that has an ISO 3166-1 alpha-2 code assigned. The region code is the two-letter ISO 3166-1 alpha-2 code, e.g., hk.

  • A collection of countries or entities that share a regional configuration, such as Hispanophone Latin American countries (including Mexico, Colombia, Argentina, Peru, etc.) or Nordic countries. The region code is a unique identifier (>3 characters to avoid conflict with ISO alpha codes), e.g., latam-es-419 or nordic.

  • Part of a country or entity that has a specific regional configuration, e.g., Francophone Canada. The region code is one of the region codes described above, plus a period (.), plus an identifier describing the variant. For example, Francophone Canada’s region code is ca.fr.

Note that the concepts of regions and region codes, in the sense they are used in this document, are specific to the factory SDK. There is no single accepted worldwide standard for setting region configurations.

Currently, the region code is used by CrOS to derive regional data, for example locales or Wi-Fi regulatory domain. The regional data can be updated, but the region code itself is locked in VPD RO area.

The cros.factory.test.l10n.regions.Region 1 class encapsulates a single regional configuration.

Available regions

Following is a table of known regions. If you need a new region, please first check the “Unconfirmed regions” section below.

Warning

Concrete VPD values (keyboard, time zone, language, etc.) in this table are provided for reference only; they are not intended to be copied-and-pasted from this table into shop floor servers. Rather, shop floor servers should provide only the region code for the device. See Language codes.

Description

Region Code

Keyboard

Time Zone

Lang.

Layout

Notes

Argentina

ar

xkb:latam::spa

America/Argentina/Buenos_Aires

es-AR

ISO

Australia

au

xkb:us::eng

Australia/Sydney

en-AU

ANSI

Austria

at

xkb:de::ger, xkb:de:neo:ger

Europe/Vienna

de, en-GB

ISO

Belgium

be

xkb:be::nld

Europe/Brussels

en-GB

ISO

Brazil (ABNT)

br.abnt

xkb:br::por

America/Sao_Paulo

pt-BR

ISO

Brazil (ABNT2)

br

xkb:br::por

America/Sao_Paulo

pt-BR

ABNT2

Brazil (US Intl)

br.usintl

xkb:us:intl:eng

America/Sao_Paulo

pt-BR

ANSI

Bulgaria

bg

xkb:bg::bul, xkb:bg:phonetic:bul

Europe/Sofia

bg, tr, en-US

ANSI

Canada (French keyboard)

ca.fr

xkb:ca::fra

America/Toronto

fr-CA

ISO

Canada (US keyboard)

ca.ansi

xkb:us::eng

America/Toronto

en-CA

ANSI

Canada (hybrid ANSI)

ca.hybridansi

xkb:ca:eng:eng

America/Toronto

en-CA

ANSI

Canada (hybrid ISO)

ca.hybrid

xkb:ca:eng:eng

America/Toronto

en-CA

ISO

Canada (multilingual)

ca.multix

xkb:ca:multix:fra

America/Toronto

fr-CA

ISO

Chile

cl

xkb:latam::spa

America/Santiago

es-419

ANSI

Colombia

co

xkb:latam::spa

America/Bogota

es-CO

ANSI

Croatia

hr

xkb:hr::scr

Europe/Zagreb

hr, en-GB

ISO

Czech Republic

cz

xkb:cz::cze, xkb:cz:qwerty:cze

Europe/Prague

cs, en-GB

ISO

Estonia

ee

xkb:ee::est

Europe/Tallinn

et, ru, en-GB

ISO

Finland

fi

xkb:fi::fin

Europe/Helsinki

fi

ISO

France

fr

xkb:fr::fra

Europe/Paris

fr

ISO

Germany

de

xkb:de::ger

Europe/Berlin

de

ISO

Greece

gr

xkb:us::eng, xkb:gr::gre, t13n:el

Europe/Athens

el, en-GB

ANSI

Gulf Cooperation Council (GCC)

gcc

xkb:us::eng, m17n:ar, t13n:ar

Asia/Riyadh

ar, en-GB

ANSI

Hispanophone Latin America

latam-es-419

xkb:latam::spa

America/Mexico_City

es-419

ISO

Hong Kong

hk

xkb:us::eng, ime:zh-t:cangjie, ime:zh-t:quick, ime:zh-t:array, ime:zh-t:dayi, ime:zh-t:zhuyin, ime:zh-t:pinyin

Asia/Hong_Kong

zh-TW, en-GB, zh-CN

ANSI

Iceland

is

xkb:is::ice

Atlantic/Reykjavik

is, en-GB

ISO

India

in

xkb:us::eng

Asia/Calcutta

en-US

ANSI

India with Indian keyboard

in.hybrid

xkb:in::eng, xkb:us::eng

Asia/Calcutta

en-IN, en-US

ANSI

Indonesia

id

xkb:us::ind

Asia/Jakarta

id, en-GB

ANSI

Ireland

ie

xkb:gb:extd:eng

Europe/Dublin

en-GB

ISO

Israel

il

xkb:us::eng, xkb:il::heb, t13n:he

Asia/Jerusalem

he, en-US, ar

ANSI

Italy

it

xkb:it::ita

Europe/Rome

it

ISO

Japan

jp

xkb:jp::jpn, ime:jp:mozc_jp

Asia/Tokyo

ja

JIS

Japan with US keyboard

jp.us

xkb:us::eng, ime:jp:mozc_us

Asia/Tokyo

ja

ANSI

Kazakhstan

kz

xkb:us::eng, xkb:kz::kaz, xkb:ru::rus

Asia/Almaty

kk, ru

ANSI

Kuwait

kw

xkb:us::eng, m17n:ar, t13n:ar

Asia/Kuwait

ar, en

ANSI

Malaysia

my

xkb:us::eng

Asia/Kuala_Lumpur

ms

ANSI

Mexico

mx

xkb:latam::spa

America/Mexico_City

es-MX

ANSI

Netherlands

nl

xkb:us:intl:eng

Europe/Amsterdam

nl

ANSI

New Zealand

nz

xkb:us::eng

Pacific/Auckland

en-NZ

ANSI

Nigeria

ng

xkb:us:intl:eng

Africa/Lagos

en-GB

ANSI

Nordics

nordic

xkb:se::swe

Europe/Stockholm

en-US

ISO

Peru

pe

xkb:latam::spa

America/Lima

es-419

ANSI

Philippines

ph

xkb:us::eng

Asia/Manila

en-US

ANSI

Poland

pl

xkb:pl::pol

Europe/Warsaw

pl, en-GB

ANSI

Portugal

pt

xkb:pt::por

Europe/Lisbon

pt-PT, en-GB

ISO

Romania

ro

xkb:us::eng, xkb:ro::rum

Europe/Bucharest

ro, hu, de, en-GB

ISO

Romania with US International keyboard layout

ro.usintl

xkb:us:intl:eng

Europe/Bucharest

ro, hu, de, en-GB

ANSI

Romania with US keyboard

ro.us

xkb:us::eng, xkb:ro::rum

Europe/Bucharest

ro, hu, de, en-GB

ANSI

Russia

ru

xkb:us::eng, xkb:ru::rus

Europe/Moscow

ru

ANSI

Saudi Arabia

sa

xkb:us::eng

Asia/Riyadh

ar, en

ANSI

Singapore

sg

xkb:us::eng

Asia/Singapore

en-GB

ANSI

Slovakia

sk

xkb:us::eng, xkb:sk::slo

Europe/Bratislava

sk, hu, cs, en-GB

ISO

South Africa

za

xkb:za:gb:eng

Africa/Johannesburg

en-ZA

ISO

South Africa

za.us

xkb:us::eng

Africa/Johannesburg

en-ZA

ANSI

South Korea

kr

xkb:us::eng, ime:ko:hangul

Asia/Seoul

ko, en-US

ANSI

Spain

es

xkb:es::spa

Europe/Madrid

es

ISO

Sweden

se

xkb:se::swe

Europe/Stockholm

sv

ISO

Switzerland

ch

xkb:ch::ger

Europe/Zurich

de-CH

ISO

Switzerland (US Intl)

ch.usintl

xkb:us:intl:eng

Europe/Zurich

en-US

ANSI

Taiwan

tw

xkb:us::eng, ime:zh-t:zhuyin, ime:zh-t:array, ime:zh-t:dayi, ime:zh-t:cangjie, ime:zh-t:quick, ime:zh-t:pinyin

Asia/Taipei

zh-TW, en-US

ANSI

Thailand

th

xkb:us::eng, m17n:th, m17n:th_pattajoti, m17n:th_tis

Asia/Bangkok

th, en-GB

ANSI

Turkey

tr

xkb:tr::tur, xkb:tr:f:tur

Europe/Istanbul

tr, en-GB

ISO

UAE

ae

xkb:us::eng

Asia/Dubai

ar

ANSI

UK

gb

xkb:gb:extd:eng

Europe/London

en-GB

ISO

UK (US extended keyboard)

gb.usext

xkb:us:altgr-intl:eng

Europe/London

en-GB

ISO

US (English Intl)

us.intl

xkb:us:intl:eng

America/Los_Angeles

en-US

ANSI

Ukraine

ua

xkb:us::eng, xkb:ua::ukr

Europe/Kiev

uk, en-US

ANSI

United States

us

xkb:us::eng

America/Los_Angeles

en-US

ANSI

Uruguay

uy

xkb:latam::spa

America/Montevideo

es-419

ANSI

Vietnam

vn

xkb:us::eng, m17n:vi_telex, m17n:vi_vni, m17n:vi_viqr, m17n:vi_tcvn

Asia/Ho_Chi_Minh

vi, en-GB, en-US, fr, zh-TW

ANSI

Unconfirmed regions

Following is a table of unconfirmed regions (not ready for use in shipping products). If you need to use one of these please see http://goto/vpdsettings and src/platform2/regions/README for how to proceed.

For more information on how to choose field values, see Selecting values for new regions.

Description

Region Code

Keyboard

Time Zone

Lang.

Layout

Notes

Afghanistan

af

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Aland Islands

ax

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Albania

al

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Algeria

dz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

American Samoa

as

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Andorra

ad

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Angola

ao

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Anguilla

ai

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Antigua and Barbuda

ag

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Armenia

am

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Aruba

aw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Azerbaijan

az

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bahamas

bs

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bahrain

bh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bangladesh

bd

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Barbados

bb

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Belarus

by

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Belize

bz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Benin

bj

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bermuda

bm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bhutan

bt

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bolivia

bo

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Bonaire, Saint Eustatius and Saba

bq

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Bosnia and Herzegovina

ba

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Botswana

bw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

British Indian Ocean Territory

io

To be reviewed

To be reviewed

To be reviewed

To be reviewed

British Virgin Islands

vg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Brunei

bn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Burkina Faso

bf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Burundi

bi

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cambodia

kh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cameroon

cm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cape Verde

cv

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cayman Islands

ky

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Central African Republic

cf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Chad

td

To be reviewed

To be reviewed

To be reviewed

To be reviewed

China

cn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Christmas Island

cx

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cocos Islands

cc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Comoros

km

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cook Islands

ck

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Costa Rica

cr

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Cuba

cu

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Curacao

cw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Cyprus

cy

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Democratic Republic of the Congo

cd

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Denmark

dk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Djibouti

dj

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Dominica

dm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Dominican Republic

do

xkb:latam::spa

To be reviewed

es-419

To be reviewed

East Timor

tl

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Ecuador

ec

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Egypt

eg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

El Salvador

sv

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Equatorial Guinea

gq

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Eritrea

er

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Ethiopia

et

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Falkland Islands

fk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Faroe Islands

fo

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Fiji

fj

To be reviewed

To be reviewed

To be reviewed

To be reviewed

French Guiana

gf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

French Polynesia

pf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

French Southern Territories

tf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Gabon

ga

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Gambia

gm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Georgia

ge

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Ghana

gh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Gibraltar

gi

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Greenland

gl

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Grenada

gd

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guadeloupe

gp

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guam

gu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guatemala

gt

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Guernsey

gg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guinea

gn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guinea-Bissau

gw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Guyana

gy

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Haiti

ht

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Honduras

hn

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Hungary

hu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Iran

ir

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Iraq

iq

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Isle of Man

im

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Ivory Coast

ci

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Jamaica

jm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Jersey

je

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Jordan

jo

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Kenya

ke

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Kiribati

ki

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Kyrgyzstan

kg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Laos

la

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Latvia

lv

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Lebanon

lb

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Lesotho

ls

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Liberia

lr

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Libya

ly

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Liechtenstein

li

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Lithuania

lt

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Luxembourg

lu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Macao

mo

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Macedonia

mk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Madagascar

mg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Malawi

mw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Maldives

mv

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mali

ml

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Malta

mt

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Marshall Islands

mh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Martinique

mq

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mauritania

mr

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mauritius

mu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mayotte

yt

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Micronesia

fm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Moldova

md

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Monaco

mc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mongolia

mn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Montenegro

me

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Montserrat

ms

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Morocco

ma

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Mozambique

mz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Myanmar

mm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Namibia

na

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Nauru

nr

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Nepal

np

To be reviewed

To be reviewed

To be reviewed

To be reviewed

New Caledonia

nc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Nicaragua

ni

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Niger

ne

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Niue

nu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Norfolk Island

nf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

North Korea

kp

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Northern Mariana Islands

mp

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Norway

no

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Oman

om

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Pakistan

pk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Palau

pw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Palestinian Territory

ps

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Panama

pa

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Papua New Guinea

pg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Paraguay

py

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Pitcairn

pn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Puerto Rico

pr

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Qatar

qa

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Republic of the Congo

cg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Reunion

re

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Rwanda

rw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Barthelemy

bl

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Helena

sh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Kitts and Nevis

kn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Lucia

lc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Martin

mf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Pierre and Miquelon

pm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Saint Vincent and the Grenadines

vc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Samoa

ws

To be reviewed

To be reviewed

To be reviewed

To be reviewed

San Marino

sm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Sao Tome and Principe

st

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Senegal

sn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Serbia

rs

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Seychelles

sc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Sierra Leone

sl

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Sint Maarten

sx

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Slovenia

si

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Solomon Islands

sb

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Somalia

so

To be reviewed

To be reviewed

To be reviewed

To be reviewed

South Georgia and the South Sandwich Islands

gs

To be reviewed

To be reviewed

To be reviewed

To be reviewed

South Sudan

ss

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Sri Lanka

lk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Sudan

sd

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Suriname

sr

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Svalbard and Jan Mayen

sj

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Swaziland

sz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Syria

sy

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tajikistan

tj

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tanzania

tz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Togo

tg

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tokelau

tk

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tonga

to

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Trinidad and Tobago

tt

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tunisia

tn

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Turkmenistan

tm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Turks and Caicos Islands

tc

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Tuvalu

tv

To be reviewed

To be reviewed

To be reviewed

To be reviewed

U.S. Virgin Islands

vi

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Uganda

ug

To be reviewed

To be reviewed

To be reviewed

To be reviewed

United States Minor Outlying Islands

um

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Uzbekistan

uz

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Vanuatu

vu

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Vatican

va

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Venezuela

ve

xkb:latam::spa

To be reviewed

es-419

To be reviewed

Wallis and Futuna

wf

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Western Sahara

eh

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Yemen

ye

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Zambia

zm

To be reviewed

To be reviewed

To be reviewed

To be reviewed

Zimbabwe

zw

To be reviewed

To be reviewed

To be reviewed

To be reviewed

How VPD values affect the CrOS user experience

See http://goto/vpdsettings.

Selecting values for new regions

When adding a new region, you must choose the appropriate values for each field. This section describes how to choose these values.

Note that two fields (keyboards and language_codes) are lists, while the others are strings. When declaring regions with multiple keyboards or language codes, make sure to use a Python list (e.g., ['en', 'fr']) for those fields and not a comma-separated string (e.g., 'en,fr'). The values are ultimately encoded as a comma-separated string in the VPD, but in the regions database they are represented as Python lists.

The exact set of values supported by CrOS, naturally, depends on the CrOS image that will be installed. For instance, multiple keyboards and language codes are supported only in M34+, and input methods other than xkb:... are supported only in M38+. Always test your region settings to make sure they work as you expect on the CrOS image that will be used (see Testing region settings).

Region code

See Regions and region codes for information about region codes.

This field is stored in the VPD but is not currently used by CrOS.

Keyboard layouts (input methods)

The keyboards field is a list of input method IDs. The first one is the default. In general these should correspond to the languages chosen; when a language is selected, only keyboards that represent a valid choice for that language are shown.

Each identifier must start with either xkb: or m17n: or ime:. As of M38, valid keyboard layout identifiers are:

  • xkb:...: XKB input methods listed in any file in JSON files in the Chromium src/chrome/browser/resources/chromeos/input_method directory. (Look for the id attributes of each input_components list entry.) For example, you will find xkb:us::eng in google_xkb_manifest.json.

  • ime:...: (M38+ only) Any hard-coded strings listed in kEngineIdMigrationMap in Chromium’s input_method_util.cc. Currently this is:

    • ime:zh-t:quick

    • ime:zh-t:pinyin (not yet supported as of this writing, but should be added in M38)

    • ime:ko:hangul

    • ime:ko:hangul_2set

  • m17n:...: (M38+ only) Strings with a prefix in kEngineIdMigrationMap. The prefix is rewritten according to the map, and there must be a corresponding input method ID in some file in the input_method directory. For instance, m17n:ar will be rewritten to vkd_ar according to the map. vkd_ar is present in google_input_tools_manifest.js.

Since a Latin keyboard is required for login, the first entry in this list should be a Latin layout corresponding to the first language in the language_codes field. If that language has a non-Latin keyboard, then xkb:us::eng should be used as the first entry.

See Where regions are defined for information on where to add the new region to the codebase.

Time zone

The time_zone field specifies a single time zone that will be used as the default timezone. M35+ supports automatic time zone detection based on geolocation, but it is still worthwhile to choose a reasonable default time zone default.

This must be a tz database time zone identifier (e.g., America/Los_Angeles). See timezone_settings.cc for supported time zones.

There is no hard-and-fast rule for selecting the time zone, but as a rule of thumb, you can choose the city representing the time zone in the region with the largest population.

Language codes

The language_codes field is a list of language codes. See the kAcceptLanguageList array in l10n_util.cc for supported languages.

Keyboard mechanical layout

This describes the shape of keys. It is used only to display an appropriate keyboard onscreen during the keyboard test; it is not stored in the VPD or used by Chrome OS. This may be one of:

  • ANSI for ANSI (US-like) keyboard layouts with a horizontal Enter key.

  • ISO for ISO (UK-like) keyboard layouts with a vertical Enter key.

  • JIS for the JIS (Japan-specific) keyboard layout.

  • ABNT2 for the Brazilian ABNT2 keyboard layout, which is like the ISO layout but has 12 keys between the shift keys (the ISO layout has 11).

Description

This is simply a brief, human-readable name of the region (e.g., Canada (French keyboard). It is used only in documentation.

Notes

This optional field may contain any notes necessary to describe the region and any rationale for its settings. It is used only in documentation.

Testing region settings

When adding a new region, you should test your chosen values to make sure that the values are valid, and the user experience in OOBE is as you expect.

First, you should run unit tests making sure that your region settings are valid. To test values in the public repo, use py/test/l10n/regions_unittest.py. To test values in a private or board overlay, use make overlay-board && overlay-board/py/test/l10n/regions_unittest.py, where board is either the name of your board or the string private.

To check the OOBE user experience, you can use the py/experimental/oobe/region/run_region_oobe.py script. This script ssh’es into a CrOS device, sets its VPD fields according to a region specified on the command line, and runs the OOBE flow. The device should be running a test image, and the factory toolkit should not be enabled.

Note that region configurations from your local client are used.

For example, to ssh into a device called crosdev and test a new region named xx that you have added to the public overlay:

cd ~/trunk/src/platform/factory
py/experimental/oobe/region/run_region_oobe.py crosdev xx

Or if the region is in the private overlay:

cd ~/trunk/src/platform/factory
make overlay-private
overlay-private/py/experimental/oobe/region/run_region_oobe.py crosdev xx

How regions are set in the factory flow

In general, the test list should contain an invocation of the shopfloor_service test with the GetDeviceInfo method to obtain the device-specific data, including region code in VPD. For instance:

{
  "pytest_name": "shopfloor_service",
  "args": {
    "method": "GetDeviceInfo"
  }
}

The returned data from remote Shopfloor Service should return a dictionary to be stored in factory state data shelve (DeviceData) with region for VPD as:

{'ro.vpd.region': 'us'}

The write_device_data_to_vpd test can then be used to read the ro.vpd.region entry from the device data dictionary and provision into firmware VPD RO region.

For example:

{
  "pytest_name": "write_device_data_to_vpd"
}

Region API

class cros.factory.test.l10n.regions.Region(region_code, keyboards, time_zone, language_codes, keyboard_mechanical_layout, description=None, notes=None)

Comprehensive, standard locale configuration per country/region.

See Selecting values for new regions for detailed information on how to set these values.

FIELDS = ['region_code', 'keyboards', 'time_zone', 'language_codes', 'keyboard_mechanical_layout']

Names of fields that define the region.

region_code = None

A unique identifier for the region. This may be a lower-case ISO 3166-1 alpha-2 code (e.g., us), a variant within an alpha-2 entity (e.g., ca.fr), or an identifier for a collection of countries or entities (e.g., latam-es-419 or nordic). See Regions and region codes.

Note that uk is not a valid identifier; gb is used as it is the real alpha-2 code for the UK.

keyboards = None

A list of logical keyboard layout identifiers (e.g., xkb:us:intl:eng or m17n:ar).

This was used for legacy VPD keyboard_layouts value.

time_zone = None

A tz database time zone identifier (e.g., America/Los_Angeles). See timezone_settings.cc for supported time zones.

This was used for legacy VPD initial_timezone value.

language_codes = None

A list of default language codes (e.g., en-US); see l10n_util.cc for supported languages.

This was used for legacy VPD initial_locale value.

keyboard_mechanical_layout = None

The keyboard’s mechanical layout (ANSI [US-like], ISO [UK-like], JIS [Japanese], ABNT2 [Brazilian] or KS [Korean]).

description = None

A human-readable description of the region. This defaults to region_code if not set.

notes = None

Notes about the region. This may be None.

GetFieldsDict()

Returns a dict of all substantive fields.

notes and description are excluded.

The cros.factory.test.l10n.regions.BuildRegionsDict() method is used to obtain a list of all confirmed regions. In general, code should not invoke this directly but rather use cros.factory.test.l10n.regions.REGIONS.

cros.factory.test.l10n.regions.BuildRegionsDict(include_all=False)

Builds a dictionary mapping region code to py.l10n.regions.Region object.

The regions include:

  • cros.factory.l10n.regions.REGIONS_LIST

  • Only if include_all is true:

    • cros.factory.l10n.regions.UNCONFIRMED_REGIONS_LIST

A region may only appear in one of the above lists, or this function will (deliberately) fail.

Where regions are defined

The complete set of confirmed regions (regions available for use in shipping products) is specified by cros.factory.test.l10n.regions.REGIONS_LIST.

In addition, there is a module-level attributes used to accumulate region configuration settings that are thought to be correct but have not been completely verified yet: cros.factory.test.l10n.regions.REGIONS_LIST.

If you cannot add a region to the public factory repository, you may add it to the private repository that overrides the REGION_LIST.

There is a reference list of “private” regions, shared by private board overlays, in the chromeos-partner-overlay repository.

Footnotes

1

“l10n” is a common abbreviation for “localization”: “l”, plus 10 letters “ocalizatio”, plus “n”.)