Official Internationalization and localization guide doesn't work anymore

I have installed a native Ironwood instance of edX. The installation process was flawless but now, I’m trying to install additional languages following the official i18n and l10n guide ( that has worked for me in previous versions. But it is not working anymore.

My process has been the following:

  1. Switch to edxapp environment:
 sudo -H -u edxapp bash
 source /edx/app/edxapp/edxapp_env
 cd /edx/app/edxapp/edx-platform
  1. Configure the ~/.transifexrc file:
 hostname =
 username = mytransifexuser
 password = mytransifexpass
 token =
  1. uncomment the languages that I am interested on this file conf/locale/config.yaml (especifically, eu_ES)

  2. In lms/envs/ , replace ‘en’ by ‘eu-es’ (can I add more languages here? if so, how (for example, ‘es-es’, ‘en’, ‘eu-es’ in a comma separated values… with parenthesis )? should I maintain ‘en’?)

LANGUAGE_CODE = 'eu-es' 
  1. while being in edx-platform directory, execute this command:
paver i18n_robot_pull

And here is where I got the first error:

---> pavelib.i18n.i18n_transifex_pull
---> pavelib.i18n.i18n_validate_transifex_config
i18n_tool transifex pull
Pulling conf/locale/config.yaml:locales from Transifex...
tx ERROR: Run 'tx init' to initialize your project first!
tx ERROR: Cannot find the config file (.tx/config)!

There is no mention to tx init in the guide, but well, let’s try it:

$ tx init

 _____                    _  __
|_   _| __ __ _ _ __  ___(_)/ _| _____  __
  | || '__/ _` | '_ \/ __| | |_ / _ \ \/ /
  | || | | (_| | | | \__ \ |  _|  __/>  <
  |_||_|  \__,_|_| |_|___/_|_|  \___/_/\_\

Welcome to the Transifex Client! Please follow the instructions to
initialize your project.

tx INFO: Creating .tx folder...
tx INFO: Creating config file...
tx INFO: Running tx config command for you...
tx INFO: You need a valid API token to proceed
[?] Enter your api token:

yeah, sure, I can obtain an API token from transifex:

But then, it asks for this:

The Transifex Client syncs files between your local directory and Transifex.
The mapping configuration between the two is stored in a file called .tx/config
in your current directory. For more information, visit

[?] Enter the path to your local source file:

And I am lost. Any help would be appreciated and I in return I will update the guide (once I know how to deal with this problem :slight_smile:


You need execute this commands

sudo -H -u edxapp bash
source /edx/app/edxapp/edxapp_env
cd /edx/app/edxapp/edx-platform
Configure your ~/.transifexrc
tx pull -l es-419
modify lms.env.json and cms.env.json
and restarting Services

Hi, @sbernesto, that is exactly what I did (and what I have followed many times in previous edX releases), but as you can read in my post it is NOT working and I’m trying to know why and how to solve it.

Please, take the time to read my question with attention before answering, I have written it trying to be exquisite with the details. Thanks.

The only difference I see is that you did not execute this command

tx pull -l es-419

or did not put in your post

The tx pull command is not working (well, sort of, it just says tx INFO: Done, without even trying to initiate the download process)

~/edx-platform$ tx pull -l es-es
tx INFO: Done.

~/edx-platform$ tx pull -l eu-es
tx INFO: Done.

There is nothing new in conf/locale after those commands:

$ ls -al conf/locale/
total 84
drwxr-xr-x 16 edxapp edxapp 4096 Nov 19 21:02 .
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 ..
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 ar
-rw-r--r--  1 edxapp edxapp  973 Nov  5 21:19 babel_mako.cfg
-rw-r--r--  1 edxapp edxapp  200 Nov  5 21:19 babel_third_party.cfg
-rw-r--r--  1 edxapp edxapp  187 Nov  5 21:19 babel_underscore.cfg
-rw-r--r--  1 edxapp edxapp 5223 Nov 19 13:53 config.yaml
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 en
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 eo
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 es_419
drwxrwxr-x  3 edxapp edxapp 4096 Nov 19 17:05 fake2
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 fr
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 he
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 hi
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 ko_KR
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 pt_BR
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 rtl
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 ru
drwxr-xr-x  3 edxapp edxapp 4096 Nov  5 21:19 zh_CN
drwxr-xr-x  3 edxapp edxapp 4096 Nov 19 21:02 zh_HANS

Juanan, I’m not sure if you already tried this, but here is the .tx/config file we use in the current version:

If you make yourself a file like that, does it get you any further?


Thanks @albemarle, that did the trick! I’m wondering why the .tx/config from master was almost empty in my installation. It only included this:

host =

I think that it could be because I messed up when I installedf the tx client (without remembering that it was already installed in /edx/app/notifier/virtualenvs/notifier/bin/tx

Moreover, the correct command for pulling es_ES was
tx pull -l es_ES and not tx pull -l es-es.

Finally, I executed the paver i18n_robot_pull --settings=production command with that settings option to avoid this error:

python lms --settings=devstack compilejsi18n

Build failed running pavelib.i18n.i18n_robot_pull: Subprocess return code: 1

Thanks again for your help.

Now that we’ve solved the problem, is there an edit we can make to the guide? @Juanan do you want to take a stab at it?

BTW, is there a better source of information than the stale GitHub wiki?

@nedbat Our process for i18n with the new React micro-frontends is documented here: It’s not really the same as the edx-platform process, but it does have the most up-to-date information on Transifex. (Note also that the micro-frontends aren’t yet shipping with Open edX, so that document is pretty specific to our internal setup, including references to Jenkins jobs etc.)

Well, I would make some changes to the guide:

  • Create two separate pages. One for the developer stack and one for the full stack. Now, the description for both environments are in a single page and sometimes it is difficult to follow.
  • Add a link to the new support site. I was wondering why nobody answered my post to the now obsolete Google group.
  • Describe more deeply some of the i18n related paver commands (and in general the internationalization and localization process followed in Open edX). Some figures and examples would definitely help. In fact, there are some pieces about this process already documented but scattered along the edX websites, so initially it could be just a matter of linking them in a single page.
  • Add a FAQ section. There are common mistakes that have been discussed previously (like “is the tx command already installed?”, this thread about .tx/config, or the es-es (Django style) vs. es_ES (transifex style) issues.
  • Move the documentation to and link together all issues related to i18n and l10n (site configuration, certificates in additional languages, translation…)

Easier said than done :slight_smile: , I know, I know… But I can take a stab at it, step by step.

I thought we had information in the ReadTheDocs pages about these things, but I don’t see it.

The GitHub wiki pages are all really old. Any time you are reading one of those, we should be thinking about how to write it better in a new place.

There’s also this page:

Some pages need a special treatment in order to show localized strings. It seems that the process is documented in this thread from Google Groups (I tried and it works), but I haven’t found it in GitHub’s wiki page.