Skip to main content

Uppy 4.0 is here: TypeScript rewrite, Google Photos, React hooks, and much more.

Internationalisation

Uppy speaks many languages, English being the default. You can use a locale pack to translate Uppy into your language of choice.

tip

Checkout @uppy/locales on GitHub to see the list of supported languages.

Using a locale pack from npm

This is the recommended way. Install @uppy/locales package from npm, then choose the locale you’d like to use: @uppy/locales/lib/LANGUAGE_CODE.

npm i @uppy/core @uppy/locales
import Uppy from '@uppy/core';
import German from '@uppy/locales/lib/de_DE';
// see below for the full list of locales
const uppy = new Uppy({
debug: true,
locale: German,
});

Using a locale pack from CDN

Add a <script> tag with Uppy bundle and the locale pack you’d like to use. You can copy/paste the link from the CDN column in the locales table. The locale will attach itself to the Uppy.locales object.

<script src="https://releases.transloadit.com/uppy/v3.17.0/uppy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/locales/v3.3.1/de_DE.min.js"></script>

<script>
var uppy = new Uppy.Uppy({
debug: true,
locale: Uppy.locales.de_DE,
});
</script>

Overriding locale strings for a specific plugin

Many plugins come with their own locale strings, and the packs we provide consist of most of those strings. You can, however, override a locale string for a specific plugin, regardless of whether you are using locale pack or not. See the plugin documentation for the list of locale strings it uses.

import Uppy from '@uppy/core';
import DragDrop from '@uppy/drag-drop';
import Russian from '@uppy/locales/lib/ru_RU';

const uppy = new Uppy({
debug: true,
autoProceed: true,
locale: Russian,
});
uppy.use(DragDrop, {
target: '.UppyDragDrop',
// We are using the ru_RU locale pack (set above in Uppy options),
// but you can also override specific strings like so:
locale: {
strings: {
browse: 'выберите ;-)',
},
},
});

List of locales

38 LocalesNPMCDNSource on GitHub

Arabic Saudi Arabia

@uppy/locales

/lib/ar_SA

ar_SA.min.js

✏️

ar_SA.ts

Bulgarian Bulgaria

@uppy/locales

/lib/bg_BG

bg_BG.min.js

✏️

bg_BG.ts

Chinese China

@uppy/locales

/lib/zh_CN

zh_CN.min.js

✏️

zh_CN.ts

Chinese Taiwan

@uppy/locales

/lib/zh_TW

zh_TW.min.js

✏️

zh_TW.ts

Croatian Croatia

@uppy/locales

/lib/hr_HR

hr_HR.min.js

✏️

hr_HR.ts

Czech Czechia

@uppy/locales

/lib/cs_CZ

cs_CZ.min.js

✏️

cs_CZ.ts

Danish Denmark

@uppy/locales

/lib/da_DK

da_DK.min.js

✏️

da_DK.ts

Dutch Netherlands

@uppy/locales

/lib/nl_NL

nl_NL.min.js

✏️

nl_NL.ts

English United States

@uppy/locales

/lib/en_US

en_US.min.js

✏️

en_US.ts

Finnish Finland

@uppy/locales

/lib/fi_FI

fi_FI.min.js

✏️

fi_FI.ts

French France

@uppy/locales

/lib/fr_FR

fr_FR.min.js

✏️

fr_FR.ts

Galician Spain

@uppy/locales

/lib/gl_ES

gl_ES.min.js

✏️

gl_ES.ts

German Germany

@uppy/locales

/lib/de_DE

de_DE.min.js

✏️

de_DE.ts

Greek Greece

@uppy/locales

/lib/el_GR

el_GR.min.js

✏️

el_GR.ts

Hebrew Israel

@uppy/locales

/lib/he_IL

he_IL.min.js

✏️

he_IL.ts

Hindi India

@uppy/locales

/lib/hi_IN

hi_IN.min.js

✏️

hi_IN.ts

Hungarian Hungary

@uppy/locales

/lib/hu_HU

hu_HU.min.js

✏️

hu_HU.ts

Icelandic Iceland

@uppy/locales

/lib/is_IS

is_IS.min.js

✏️

is_IS.ts

Indonesian Indonesia

@uppy/locales

/lib/id_ID

id_ID.min.js

✏️

id_ID.ts

Italian Italy

@uppy/locales

/lib/it_IT

it_IT.min.js

✏️

it_IT.ts

Japanese Japan

@uppy/locales

/lib/ja_JP

ja_JP.min.js

✏️

ja_JP.ts

Korean South Korea

@uppy/locales

/lib/ko_KR

ko_KR.min.js

✏️

ko_KR.ts

Norwegian Bokmål Norway

@uppy/locales

/lib/nb_NO

nb_NO.min.js

✏️

nb_NO.ts

Persian Iran

@uppy/locales

/lib/fa_IR

fa_IR.min.js

✏️

fa_IR.ts

Polish Poland

@uppy/locales

/lib/pl_PL

pl_PL.min.js

✏️

pl_PL.ts

Portuguese Brazil

@uppy/locales

/lib/pt_BR

pt_BR.min.js

✏️

pt_BR.ts

Portuguese Portugal

@uppy/locales

/lib/pt_PT

pt_PT.min.js

✏️

pt_PT.ts

Romanian Romania

@uppy/locales

/lib/ro_RO

ro_RO.min.js

✏️

ro_RO.ts

Russian Russia

@uppy/locales

/lib/ru_RU

ru_RU.min.js

✏️

ru_RU.ts

Serbian Serbia (Cyrillic)

@uppy/locales

/lib/sr_RS_Cyrillic

sr_RS_Cyrillic.min.js

✏️

sr_RS_Cyrillic.ts

Serbian Serbia (Latin)

@uppy/locales

/lib/sr_RS_Latin

sr_RS_Latin.min.js

✏️

sr_RS_Latin.ts

Slovak Slovakia

@uppy/locales

/lib/sk_SK

sk_SK.min.js

✏️

sk_SK.ts

Spanish Spain

@uppy/locales

/lib/es_ES

es_ES.min.js

✏️

es_ES.ts

Spanish Mexico

@uppy/locales

/lib/es_MX

es_MX.min.js

✏️

es_MX.ts

Swedish Sweden

@uppy/locales

/lib/sv_SE

sv_SE.min.js

✏️

sv_SE.ts

Thai Thailand

@uppy/locales

/lib/th_TH

th_TH.min.js

✏️

th_TH.ts

Turkish Turkey

@uppy/locales

/lib/tr_TR

tr_TR.min.js

✏️

tr_TR.ts

Ukrainian Ukraine

@uppy/locales

/lib/uk_UA

uk_UA.min.js

✏️

uk_UA.ts

Uzbek Uzbekistan

@uppy/locales

/lib/uz_UZ

uz_UZ.min.js

✏️

uz_UZ.ts

Vietnamese Vietnam

@uppy/locales

/lib/vi_VN

vi_VN.min.js

✏️

vi_VN.ts

Contributing a new language

If you speak a language we don’t yet support, you can contribute! Here’s how you do it:

  1. Go to the uppy/locales directory in the Uppy GitHub repo.
  2. Go to en_US.js and copy its contents, as English is the most up-to-date locale.
  3. Press “Create new file”, name it according to the language_COUNTRY format, make sure to use underscore _ as a divider. Examples: en_US, en_GB, ru_RU, ar_AE. Variants should be trailing, for example sr_RS_Latin for Serbian Latin vs Cyrillic.
  4. If your language has different pluralization rules than English, update the pluralize implementation. If you are unsure how to do this, please ask us for help in a GitHub issue.
  5. Paste what you’ve copied from en_US.js and use it as a starting point to translate strings into your language.
  6. When you are ready, save the file — this should create a PR that we’ll then review 🎉 Thanks!