Welcome to the Netflix Partner Help Center. Have a question or need help with an issue? Send us a ticket and we'll help you to a resolution.

TABLE OF CONTENTS

     REQUIREMENTS FOR STRINGS

     REQUIREMENTS FOR CULTURAL FORMAT

     FONTS

     SUPPORT

Our mission is to create a world-ready Netflix product, a product that feels truly local. For that to happen, the game needs to be developed with internationalization in mind.

Internationalization + Localization = Globalization

Internationalization lays a solid cultural data and software layer foundation so that translation can be done separately, and after translation is dropped in, the global product just works. Localization can be seen as the translation part (done by linguists and translators), Internationalization is everything else (done by engineers). Internationalization contributes heavily to best localized user experience.

Only when both internationalization and localization are done well, the goal of a world-ready Netflix product can be achieved.

This doc contains the internationalization requirements that gaming studios need to follow while developing the games.

REQUIREMENTS FOR STRINGS

EXTERNALIZE UI TEXT

UI text appearing in games need to be externalized in resource bundles for translation. English text hardcoded in game app source code or burned in an image won’t get translated.

USE CORRECT LANGUAGE CODE

Game has different localizable elements. After translations are back, put the translated text in resource bundles with correct language code.

Use the following language code for UI text resource bundles.

Language Name Language Code
Arabic (Modern Standard) ar
Chinese (Simplified script) zh-Hans (iOS), zh-CN (Android)
Chinese (Traditional script) zh-Hant (iOS), zh-TW (Android)
Croatian hr
Czech cs
Danish da
Dutch nl
English (Global) en
English (UK) en-GB
English (Australia) en-AU
English (India) en-IN
Finnish fi
French (Global) fr
French (Canada) fr-CA
German de
Greek el
Hebrew he
Hindi hi
Hungarian hu
Indonesian id
Italian it
Japanese ja
Korean ko
Malay ms
Norwegian nb
Polish pl
Portuguese (Brazilian) pt
Portuguese (Portugal) pt-PT
Romanian ro
Russian ru
Spanish (Latam) es
Spanish (Spain) es-ES
Swedish sv
Thai th
Turkish tr
Ukrainian uk
Vietnamese vi

 

Use the following language code for game metadata such as title, artwork, dialog and sound effect that may require subtitle and dub. 

Language Name Language Code
Arabic (Modern Standard) ar
Chinese (dub, Cantonese) yue
Chinese (dub, Mandarin) cmn
Chinese (subtitle, Simplified script) zh-Hans
Chinese (subtitle, Traditional script) zh-Hant
Croatian hr
Czech cs
Danish da
Dutch nl
English (Global) en
English (UK) en-GB
English (Australia) en-AU
English (India) en-IN
Finnish fi
French (Global) fr
French (Canada) fr-CA
German de
Greek el
Hebrew he
Hindi hi
Hungarian hu
Indonesian id
Italian it
Japanese ja
Korean ko
Malay ms
Norwegian nb
Polish pl
Portuguese (Brazilian) pt
Portuguese (Portugal) pt-PT
Romanian ro
Russian ru
Spanish (Latam) es
Spanish (Spain) es-ES
Swedish sv
Thai th
Turkish tr
Ukrainian uk
Vietnamese vi

 

HOW TO WRITE ENGLISH TEXT

PROVIDE COMPLETE SENTENCE

Many languages have different positions for grammatical components than that of English. Concatenation would create situations difficult to translate for many languages.

Example:

Good:    

        • Key = Your plan will change to %1$d Screen on %2$s.

Avoid:

        • Key1 = Your plan will change to
        • Key2 = %1$d Screen
        • Key3 = on %1$s

USE DESCRIPTIVE VARIABLE NAME

Lack of context is a major source of translation errors. Descriptive names should include information about the type of the variable, would it be an integer or a string? For month name, would it be a full month name, or an abbreviated one? Etc.

Example:

Good: month_name_full, month_name_medium, month_name_short

Avoid: month

If it’s not possible to use a descriptive variable name, add comments to provide more context for translation.

USE INTENDED CASING

Many languages have different casing rules. Functions such as toUpperCase(), toLowerCase(), toCamelCase(), etc. often have problems for certain languages. Writing the casing as intended in the English strings allows translators to use proper casing for their language.

Example:

Good:    

      • Key = GAME ON

Avoid:

      • Key = game on 

And then programmatically call .toUpperCase() or a similar function to change it to “GAME ON”.

ALLOW GRAMMATICAL PLURAL TEXT

Many languages have various plural forms. Nouns in English have singular form when the number is one, and plural form when the number is not one. Please write text in a way that allows different translation for different number groups defined by the target language. For example, here is how you could write the English text on iOS

GENDER CONSIDERATION

For gendered languages in which gender is marked in adjectives, articles, nouns, verbs, etc., it is important to take gender into consideration when localizing UI strings that are addressed to a second person (i.e. the player), in order to provide inclusive and gender-neutral solutions as much as possible.

Example:

English UI String

Localization considerations

How do you feel?

TIRED

HAPPY

ANGRY

For gendered-languages consider how adjectives/verbs, as applicable, can be handled to provide a gender neutral solution when possible. For example, is it possible to use nouns in this question instead of adjectives in the localized version?

What do you feel?

TIREDNESS

HAPPINESS

ANGER

For gendered languages, it is common to find the use of the gendered (masculine) treatment to hint neutrality in established terminology such as game labels. While this use of the masculine may still be valid, we should be looking for organically gender-neutral and inclusive solutions that could be used instead (even when this means introducing new terminology), whenever possible*. 

Example:

English UI String

Localization considerations

Multiplayer

“Multiplayer” and “Single Player” are common labels in games, but their localized versions may be gendered. In such cases consider if there’s alternative terminology that can be used. E.g. “Group” and “Individual”.

*Note: This should be done if meaning is not obscured and context allows. If finding a neutral alternative obstructs the meaning, conflicts with character limitations, or in any other way harms the gaming experience, the use of the generic masculine may still be justified.

Single Player

 

KEEP LOCALIZATION IN MIND

EXPECT TEXT TO EXPAND HORIZONTALLY

For example, German text might expand when compared to English source text. Generally expect around 40% expansion, shorter text may have bigger expansion. Some languages might contract, for example, Chinese. Usually expansion is more challenging for the UI than contraction. In design and development, allow text field width to auto-expand, or allow wrap into multiple lines.

EXPECT TEXT TO EXPAND VERTICALLY

Some languages need more vertical space. Languages with diacritics could expand vertically, for example, expect Thai text to expand vertically up or down as much as 70%.

USE PSEUDO-LOC EARLY IN DESIGN & DEVELOPMENT PHASE

Pseudo localization is a fake translation, to simulate certain localization language characteristics while maintaining the readability of the UI. Pseudo loc detects localization issues early. Following are some major localization issues that pseudo loc detects.

DETECT STRING CONCANETATION

String concatenation should be avoided by following the requirement of “Provide complete sentence”. Pseudo loc can detect string concatenation if the above requirement is not followed.

Example of string concatenation (avoid):

  • Key1 = Your plan will change to
  • Key2 = %1$d Screen
  • Key3 = on %1$s.

With pseudo loc, the final sentence appearing on the UI could be something like [Ýoổuǚr ρlaǻñ ŵiîlļ çhaǻñgeễ ţoổ] [%1$d Šcŕeễeễñ] [oổñ %2$s.] A complete sentence separated by pairs of [] indicates string concatenation. Different platforms may have different pseudo localization patterns, but principles stay the same.

In the case of a complete sentence “Your plan will change to %1$d Screen on %1$s.”, the pseudo localized final sentence could look like the following: [Ýoổuǚr ρlaǻñ ŵiîlļ çhaǻñgeễ ţoổ %1$d Šcŕeễeễñ oổñ %2$s.] Notice the whole sentence is inside one pair of [].

SIMULATE STRING EXPANSION

Pseudo loc also expands string by a certain percentage to simulate string length expansion. If pseudo localized strings get truncated or overlap each other on the UI, it indicates localized UI will have similar issues. This needs to be fixed by UI design and implementation as soon as it appears.

UNITY PSEUDO-LOC TESTING

For games developed with Unity, please follow this guideline to enable and test with pseudo localization.

 

REQUIREMENTS FOR CULTURAL FORMAT

Cultural formats include Date, Time, Calendar, Timezone, Number, Currency, Phone number, Sorting, etc. See a list of examples here

Cultural formats vary around the world, depending on the user's language and location. For example,

Date:

  • English in US               (en-US):           Tuesday, January 5, 2020
  • French in France        (fr-FR):             mardi 5 janvier 2020
  • Japanese in Japan     (ja-JP):            2020年1月5日火曜日

Currency:

  • English in US               (en-US):           $1,234.56
  • French in France        (fr-FR):             1 234,56 €
  • German in Germany   (de-DE):          1.234,56 €

Notice the difference in above currency formats for thousands separator, decimal point, the position of the currency symbol, and the space in between currency symbol and the number amount.

USE I18N LIBRARY TO FORMAT

The good news is that all these cultural data have been collected and stored in a data repository called CLDR (Unicode Common Locale Data Repository). And internationalization (i18n) libraries use CLDR to format the cultural data for the user. On both iOS and Android, there are a rich set of readily available i18n API and functions that you can use to format the cultural data.

Locale is a way to identify cultural formats. The key is to use the user locale properly.

FORMAT BASED ON USER LOCALE

Every user has a user locale that reflects their language and culture. Always use the i18n functions that take a display locale for cultural format, and pass user locale as the display locale to these formatting functions.

USE LATIN NUMBER SYSTEM

Netflix products standardize on using Latin number system for all locales, make sure you set the number system of the user locale to latn. One effective way to do that is to add “-u-nu-latn” to user locale before formatting.

For example, for Arabic, Netflix products use Latin numbers (0, 1, 2, …), not Eastern Arabic numbers (٠١٢٣٤٥٦٧٨٩).

USE GREGORIAN CALENDAR

Netflix standardizes on using Gregorian Calendar for all locales, make sure you set the Calendar of the user locale to Gregorian. One effective way to do that is to add “-u-ca-gregory” to the user locale before formatting.

For example, for Thai, Netflix products use Gregorian Calendar (2021), not Buddhist Calendar (2564).

 

FONTS

PRODUCT FONTS

The table below is provided only as a reference. Netflix products use the following fonts for UI text on iOS and Android, should you wish to mirror the Netflix look and feel, please use these.

Language Name

iOS

Android

Arabic (Modern Standard)

Handset Sans Kufi

Handset Sans Kufi

Chinese (Simplified script)

(System sans serif font)

(System sans serif font)

Chinese (Traditional script)

(system sans serif font)

(system sans serif font)

Croatian

Netflix Sans

Netflix Sans

Czech

Netflix Sans

Netflix Sans

Danish

Netflix Sans

Netflix Sans

Dutch

Netflix Sans

Netflix Sans

English (Global)

Netflix Sans

Netflix Sans

English (UK)

Netflix Sans

Netflix Sans

English (Australia)

Netflix Sans

Netflix Sans

English (India)

Netflix Sans

Netflix Sans

Finnish

Netflix Sans

Netflix Sans

French (Global)

Netflix Sans

Netflix Sans

French (Canada)

Netflix Sans

Netflix Sans

German

Netflix Sans

Netflix Sans

Greek

Netflix Sans

Netflix Sans

Hebrew

(system sans serif font)

(system sans serif font)

Hindi

(system sans serif font)

(system sans serif font)

Hungarian

Netflix Sans

Netflix Sans

Indonesian

Netflix Sans

Netflix Sans

Italian

Netflix Sans

Netflix Sans

Japanese

(system sans serif font)

(system sans serif font)

Korean

(system sans serif font)

(system sans serif font)

Malay

Netflix Sans

Netflix Sans

Norwegian

Netflix Sans

Netflix Sans

Polish

Netflix Sans

Netflix Sans

Portuguese (Brazilian)

Netflix Sans

Netflix Sans

Portuguese (Portugal)

Netflix Sans

Netflix Sans

Romanian

Netflix Sans

Netflix Sans

Russian

Netflix Sans

Netflix Sans

Spanish (Latam)

Netflix Sans

Netflix Sans

Spanish (Spain)

Netflix Sans

Netflix Sans

Swedish

Netflix Sans

Netflix Sans

Thai

Graphik TH

Graphik TH

Turkish

Netflix Sans

Netflix Sans

Ukrainian

Netflix Sans

Netflix Sans

Vietnamese

Netflix Sans

Netflix Sans

 

SUBTITLE FONTS

The table below is provided only as a reference. Netflix uses the following fonts for subtitles, should you wish to mirror the Netflix look and feel, please use these.

Language Name

Font

Arabic (Modern Standard)

HandsetNaskhArabic-Regular

Chinese (Simplified script)

MHeiM18030_CForNetflix

Chinese (Traditional script)

MHeiM-B5HK_CForNetflix

Croatian

Netflix Sans

Czech

Netflix Sans

Danish

Netflix Sans

Dutch

Netflix Sans

English (Global)

Netflix Sans

English (UK)

Netflix Sans

English (Australia)

Netflix Sans

English (India)

Netflix Sans

Finnish

Netflix Sans

French (Global)

Netflix Sans

French (Canada)

Netflix Sans

German

Netflix Sans

Greek

Netflix Sans

Hebrew

Hebrew_for_Netflix-R

Hindi

HandsetSansDevanagari

Hungarian

Netflix Sans

Indonesian

Netflix Sans

Italian

Netflix Sans

Japanese

HeiseiMaruGoth213_CForNetflix

Korean

YDGothic120ProForNetflix

Malay

Netflix Sans

Norwegian

Netflix Sans

Polish

Netflix Sans

Portuguese (Brazilian)

Netflix Sans

Portuguese (Portugal)

Netflix Sans

Romanian

Netflix Sans

Russian

Netflix Sans

Spanish (Latam)

Netflix Sans

Spanish (Spain)

Netflix Sans

Swedish

Netflix Sans

Thai

HandsetSansThai-Regular

Turkish

Netflix Sans

Ukrainian

Netflix Sans

Vietnamese

Netflix Sans

 

SUPPORT

Please direct any i18n questions to your Localization Producer at Netflix.

Was this article helpful?
1 out of 1 found this helpful
Powered by Zendesk