Add upload-sources.bash and README.md to tools/i18n

The upload-sources.bash script can be used to upload the messages.json
file when it gets updated directly to Crowdin.

Also, the blocked users list has been updated.

Change-Id: I8fe8fbc47e7b780198f31711bd1a464d175b4546
diff --git a/tools/i18n/README.md b/tools/i18n/README.md
new file mode 100644
index 0000000..c306325
--- /dev/null
+++ b/tools/i18n/README.md
@@ -0,0 +1,32 @@
+# i18n tools
+This folder contains tools which aid in working with everything related to
+the internationalization/localization of the extension.
+
+## i18n summary
+The extension strings are defined in `//src/_locales/en/manifest.json`, which is
+the "source file". This file then is translated to multiple languages, each of
+which has its own subfolder at `//src/_locales`.
+
+In order to streamline translation efforts, the translation is done in a
+[Crowdin project](https://crowdin.com/project/translateselectedtext) (because
+translators aren't always developers, and they might not know about git), which
+is synced to this git repository via the tools offered in this folder.
+
+## Tools
+- `upload-sources.bash`:  used to upload the `manifest.json` source file to
+Crowdin, in order to sync it.
+- `bump-translations.bash`: used to download updated translations from Crowdin
+and create a new commit with the new updates.
+- `generate-i18n-credits.go` (should not be called directly): used by the build
+script to generate the list of translators which are displayed in the credits
+dialog in the extension. The list of translators is retrieved from Crowdin, and
+users listed in `blocked-users.txt` are removed from the list (some translators
+who contributed before Crowdin was set up are also manually added to the list by
+the script).
+
+## Crowdin settings file
+In order to use these tools, the crowdin settings file must be created and set
+up:
+
+1. Create a copy of `crowdin.template.yml` called `crowdin.yml`.
+2. Edit `crowdin.yml` replacing `{{API_TOKEN}}` by the actual API token.
diff --git a/tools/i18n/blocked-users.txt b/tools/i18n/blocked-users.txt
index 52ad0a7..0c09010 100644
--- a/tools/i18n/blocked-users.txt
+++ b/tools/i18n/blocked-users.txt
@@ -6,6 +6,7 @@
 viki19822
 jjroot19
 mattiasxxpersson
+JeremyMaloney
 
 # These users joined the project but didn't make any translation, so they
 # shouldn't be credited neither.
diff --git a/tools/i18n/bump-translations.bash b/tools/i18n/bump-translations.bash
index 85c4b39..181f3cb 100644
--- a/tools/i18n/bump-translations.bash
+++ b/tools/i18n/bump-translations.bash
@@ -1,4 +1,11 @@
 #!/bin/bash
+#
+# Downloads updated translations from Crowdin and creates a new commit with the
+# new updates.
+#
+# This commit should be uploaded afterwards for review with the |git review|
+# command (take a look to check everything went well before uploading it).
+
 emptyTranslationFile="{}"
 
 # Download new translations
diff --git a/tools/i18n/upload-sources.bash b/tools/i18n/upload-sources.bash
new file mode 100644
index 0000000..d4ba26d
--- /dev/null
+++ b/tools/i18n/upload-sources.bash
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Uploads source files to Crowdin for translation.
+
+if [[ $(git diff --stat) != '' ]]; then
+  echo 'The git tree is dirty. The source file has not been uploaded.'
+  exit 1
+fi
+
+crowdin upload -c crowdin.yml