Skip to main content

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 recommded 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.6.1/uppy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/locales/v3.0.7/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_SAar_SA.min.js✏️ ar_SA.js
Bulgarian Bulgaria@uppy/locales/lib/bg_BGbg_BG.min.js✏️ bg_BG.js
Chinese China@uppy/locales/lib/zh_CNzh_CN.min.js✏️ zh_CN.js
Chinese Taiwan@uppy/locales/lib/zh_TWzh_TW.min.js✏️ zh_TW.js
Croatian Croatia@uppy/locales/lib/hr_HRhr_HR.min.js✏️ hr_HR.js
Czech Czechia@uppy/locales/lib/cs_CZcs_CZ.min.js✏️ cs_CZ.js
Danish Denmark@uppy/locales/lib/da_DKda_DK.min.js✏️ da_DK.js
Dutch Netherlands@uppy/locales/lib/nl_NLnl_NL.min.js✏️ nl_NL.js
English United States@uppy/locales/lib/en_USen_US.min.js✏️ en_US.js
Finnish Finland@uppy/locales/lib/fi_FIfi_FI.min.js✏️ fi_FI.js
French France@uppy/locales/lib/fr_FRfr_FR.min.js✏️ fr_FR.js
Galician Spain@uppy/locales/lib/gl_ESgl_ES.min.js✏️ gl_ES.js
German Germany@uppy/locales/lib/de_DEde_DE.min.js✏️ de_DE.js
Greek Greece@uppy/locales/lib/el_GRel_GR.min.js✏️ el_GR.js
Hebrew Israel@uppy/locales/lib/he_ILhe_IL.min.js✏️ he_IL.js
Hungarian Hungary@uppy/locales/lib/hu_HUhu_HU.min.js✏️ hu_HU.js
Icelandic Iceland@uppy/locales/lib/is_ISis_IS.min.js✏️ is_IS.js
Indonesian Indonesia@uppy/locales/lib/id_IDid_ID.min.js✏️ id_ID.js
Italian Italy@uppy/locales/lib/it_ITit_IT.min.js✏️ it_IT.js
Japanese Japan@uppy/locales/lib/ja_JPja_JP.min.js✏️ ja_JP.js
Korean South Korea@uppy/locales/lib/ko_KRko_KR.min.js✏️ ko_KR.js
Norwegian Bokmål Norway@uppy/locales/lib/nb_NOnb_NO.min.js✏️ nb_NO.js
Persian Iran@uppy/locales/lib/fa_IRfa_IR.min.js✏️ fa_IR.js
Polish Poland@uppy/locales/lib/pl_PLpl_PL.min.js✏️ pl_PL.js
Portuguese Brazil@uppy/locales/lib/pt_BRpt_BR.min.js✏️ pt_BR.js
Portuguese Portugal@uppy/locales/lib/pt_PTpt_PT.min.js✏️ pt_PT.js
Romanian Romania@uppy/locales/lib/ro_ROro_RO.min.js✏️ ro_RO.js
Russian Russia@uppy/locales/lib/ru_RUru_RU.min.js✏️ ru_RU.js
Serbian Serbia(Cyrillic)@uppy/locales/lib/sr_RS_Cyrillicsr_RS_Cyrillic.min.js✏️ sr_RS_Cyrillic.js
Serbian Serbia(Latin)@uppy/locales/lib/sr_RS_Latinsr_RS_Latin.min.js✏️ sr_RS_Latin.js
Slovak Slovakia@uppy/locales/lib/sk_SKsk_SK.min.js✏️ sk_SK.js
Spanish Spain@uppy/locales/lib/es_ESes_ES.min.js✏️ es_ES.js
Swedish Sweden@uppy/locales/lib/sv_SEsv_SE.min.js✏️ sv_SE.js
Thai Thailand@uppy/locales/lib/th_THth_TH.min.js✏️ th_TH.js
Turkish Turkey@uppy/locales/lib/tr_TRtr_TR.min.js✏️ tr_TR.js
Ukrainian Ukraine@uppy/locales/lib/uk_UAuk_UA.min.js✏️ uk_UA.js
Uzbek Uzbekistan@uppy/locales/lib/uz_UZuz_UZ.min.js✏️ uz_UZ.js
Vietnamese Vietnam@uppy/locales/lib/vi_VNvi_VN.min.js✏️ vi_VN.js

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!