diff --git a/developers/architecture_components/index.html b/developers/architecture_components/index.html
index ad41a2e2cf..c5036d77d4 100644
--- a/developers/architecture_components/index.html
+++ b/developers/architecture_components/index.html
@@ -195,7 +195,14 @@ Diagram showing interaction between components and the Home Assistant core
diff --git a/developers/code_review_component/index.html b/developers/code_review_component/index.html
index e77084053f..6f79f31957 100644
--- a/developers/code_review_component/index.html
+++ b/developers/code_review_component/index.html
@@ -181,7 +181,14 @@ Not all existing platforms follow the requirements in this checklist. This canno
diff --git a/developers/code_review_platform/index.html b/developers/code_review_platform/index.html
index a454bf69cc..4470471056 100644
--- a/developers/code_review_platform/index.html
+++ b/developers/code_review_platform/index.html
@@ -223,7 +223,14 @@ Not all existing platforms follow the requirements in this checklist. This canno
diff --git a/developers/component_discovery/index.html b/developers/component_discovery/index.html
index db55346929..3cf6776d92 100644
--- a/developers/component_discovery/index.html
+++ b/developers/component_discovery/index.html
@@ -196,7 +196,14 @@ This option is only available for built-in components.
diff --git a/developers/component_generic_discovery/index.html b/developers/component_generic_discovery/index.html
index a6b637da86..0d83d33e9b 100644
--- a/developers/component_generic_discovery/index.html
+++ b/developers/component_generic_discovery/index.html
@@ -208,7 +208,14 @@ This can be achieved using the load_platformAdd More Info Dialog
diff --git a/developers/component_loading/index.html b/developers/component_loading/index.html
index df5a71ac92..5481287c72 100644
--- a/developers/component_loading/index.html
+++ b/developers/component_loading/index.html
@@ -169,7 +169,14 @@ Home Assistant will use the directory that contains your config file as the dire
diff --git a/developers/component_visibility/index.html b/developers/component_visibility/index.html
index 5e4712479b..fc008d2c9e 100644
--- a/developers/component_visibility/index.html
+++ b/developers/component_visibility/index.html
@@ -164,7 +164,14 @@ You can set a suggestion for your entity’s visibility by setting the Add More Info Dialog
diff --git a/developers/development_101/index.html b/developers/development_101/index.html
index fd45f4ae15..cd03c9d668 100644
--- a/developers/development_101/index.html
+++ b/developers/development_101/index.html
@@ -177,7 +177,14 @@ The Home Assistant API has two variants: a synchronous and an asynchronous versi
diff --git a/developers/development_environment/index.html b/developers/development_environment/index.html
index 0b1ea4f1b3..7b7aad9966 100644
--- a/developers/development_environment/index.html
+++ b/developers/development_environment/index.html
@@ -223,7 +223,14 @@ Once forked, setup your local copy of the source using the commands:
diff --git a/developers/development_hass_object/index.html b/developers/development_hass_object/index.html
index e0019e0de1..c43a7532a3 100644
--- a/developers/development_hass_object/index.html
+++ b/developers/development_hass_object/index.html
@@ -198,7 +198,14 @@ Available as self.hass once the entity ha
diff --git a/developers/development_states/index.html b/developers/development_states/index.html
index 6bd96d5305..a62469ed9b 100644
--- a/developers/development_states/index.html
+++ b/developers/development_states/index.html
@@ -268,7 +268,14 @@ Entities also have a similar property state_attr
diff --git a/developers/documentation/create_page/index.html b/developers/documentation/create_page/index.html
index 32e408388f..22ec01518f 100644
--- a/developers/documentation/create_page/index.html
+++ b/developers/documentation/create_page/index.html
@@ -267,7 +267,14 @@ required: any string here #=> Any string here
diff --git a/developers/documentation/index.html b/developers/documentation/index.html
index 64c21e077d..2bb2e4c6f7 100644
--- a/developers/documentation/index.html
+++ b/developers/documentation/index.html
@@ -183,7 +183,14 @@ Site generated by rake is only available
diff --git a/developers/frontend/index.html b/developers/frontend/index.html
index 2c21502556..5a4c412a74 100644
--- a/developers/frontend/index.html
+++ b/developers/frontend/index.html
@@ -220,7 +220,14 @@ Run Home Assistant without trying to reinstall production package: development: 1Add More Info Dialog
Translations for Home Assistant are managed through Lokalise, an online translation management tool. Our translations are split between two projects, a backend project for platform-specific translations, and a frontend project for UI translations. Click the links below to join both projects! Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate.
-The translation of the Home Assistant frontend is still a work in progress. More phrases will be available for translation soon.
-
-
Translation placeholders
-
Some translation strings will contain special placeholders that will be replaced later. Placeholders shown in square brackets [] are Lokalise key references. These are primarily used to link translation strings that will be duplicated. Different languages may not have the same duplicates as English, and are welcome to link duplicate translations that are not linked in English. Placeholders shown in curly brackets {} are translation arguments that will be replaced with a live value when Home Assistant is running. Any translation argument placeholders present in the original string must be included in the translated string. These may include special syntax for defining plurals or other replacement rules. The linked format.js guide explains the syntax for adding plural definitions and other rules.
Don’t translate or change proper nouns like Home Assistant, Hass.io or Hue.
-
For a region specific translation, keys that will be the same as the base translation should be filled with [VOID]. These will be replaced during our translation build process.
-
Translations under the state_badge keys will be used for the notification badge display. These translations should be short enough to fit in the badge label without overflowing. This can be tested in the Home Assistant UI either by editing the label text with your browsers development tools, or by using the States developer tool in the Home Assistant UI. In the UI, enter a new entity ID (device_tracker.test), and enter the text you want to test in state.
-
If text will be duplicated across different translation keys, make use of the Lokalise key reference feature where possible. The base translation provides examples of this underneath the states translations. Please see the Lokalise key referencing documentation for more details.
-
-
Adding a new language
-
If your language is not listed you can request it at GitHub. Please provide both the English name and the native name for your language. For example:
-
English Name: German
-Native Name: Deutsch
-
-
-
-Region specific translations (en-US, fr-CA) will only be included if translations for that region need to differ from the base language translation.
-
-
Maintainer steps to add a new language
-
-
Language tags have to follow BCP 47. A list of most language tags can be found here: IANA sutbtag registry. Examples: fr, fr-CA, zh-Hans. Only include the country code if country specific overrides are being included, and the base language is already translated.
-
Add the language tag and native name in src/translations/translationMetadata.json. Examples: “Français”, “Français (CA)”
-
Add the new language in Lokalize.
-Note: Sometimes you have to change the tag in Lokalise (Language -> Language settings -> custom ISO code).
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Redirecting…
+
+
+
Redirecting…
+ Click here if you are not redirected.
+
diff --git a/developers/hassio/addon_communication/index.html b/developers/hassio/addon_communication/index.html
index 81898420de..2e05c83fc1 100644
--- a/developers/hassio/addon_communication/index.html
+++ b/developers/hassio/addon_communication/index.html
@@ -170,7 +170,14 @@ The name is generated using the following format: Add More Info Dialog
diff --git a/developers/hassio/addon_publishing/index.html b/developers/hassio/addon_publishing/index.html
index 7014b61a75..527dacb95a 100644
--- a/developers/hassio/addon_publishing/index.html
+++ b/developers/hassio/addon_publishing/index.html
@@ -190,7 +190,14 @@ If you are developing on macOS and using Docker for Mac, you may encounter an er
diff --git a/developers/hassio/addon_tutorial/index.html b/developers/hassio/addon_tutorial/index.html
index 382a5dde55..db3c40a3fc 100644
--- a/developers/hassio/addon_tutorial/index.html
+++ b/developers/hassio/addon_tutorial/index.html
@@ -316,7 +316,14 @@ The Python 3 server will allow you to browse the /data folder.
diff --git a/developers/index.html b/developers/index.html
index c5e6419c5b..064ed572ff 100644
--- a/developers/index.html
+++ b/developers/index.html
@@ -166,7 +166,14 @@ Diagram showing interaction between components and the Home Assistant core.
Platform translation strings are stored as JSON in the home-assistant repository. These files must be located adjacent to the component/platform they belong to. They are named strings.<component/platform name>.json, unless the component being translated exists in its own directory, in which case the file is simply named strings.json in that directory. This file will contain the different strings that will be translatable. Currently only states are supported by the frontend.
+
After the pull request with the strings file is merged into the dev branch, the strings will be automatically uploaded to Lokalise, where contributors can submit translations. The translated strings in Lokalise will be periodically pulled in to the home-assistant repository.
+
States Localization
+
The first step when localizing platform states is to ensure that the states defined in the actual platform code are defined in snake_case. The states should not contain capital letters or spaces. Next, the strings file needs to be created. The states should exist under the state key, and map the backend state keys to their English translations. The season sensor localization is a good example.
Unlike localized strings merged in the home-assistant repository, custom components cannot take advantage of Lokalise for user submitted translations. However, custom component authors can still include translation with their components. These will be read from the .translations directory, adjacent to the component source file. They are named <component/platform name>.<language_code>.json, unless the custom component exists in its own directory, in which case the file is simply named <language_code>.json in the .translations directory.
The language codes follow the BCP47 format. The frontend translation files can also be referred to if you are unsure of the correct language code to use.
+
The frontend will serve these files after Home Assistant is restarted.
The Home Assistant internationalization project includes preparing platforms and the frontend for localization, as well as the actual translation of localized strings.
+
Some compmonents and platforms will have strings that need to be localized specifically for that platform. These strings are managed in the core home-assistant repository. The Home Assistant backend will serve strings to the clients based on the loaded components in the running instance.
+
There are also localizable strings that exist only on the frontend. These strings are managed in the home-assistant-polymer repository. These strings are stored with the frontend and don’t depend on the backend configuration.
+
Our strings are translated by the community using the online translation tool Lokalise.
Translations for Home Assistant are managed through Lokalise, an online translation management tool. Our translations are split between two projects, a backend project for platform-specific translations, and a frontend project for UI translations. Click the links below to join both projects! Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate.
+The translation of the Home Assistant frontend is still a work in progress. More phrases will be available for translation soon.
+
+
Translation placeholders
+
Some translation strings will contain special placeholders that will be replaced later. Placeholders shown in square brackets [] are Lokalise key references. These are primarily used to link translation strings that will be duplicated. Different languages may not have the same duplicates as English, and are welcome to link duplicate translations that are not linked in English. Placeholders shown in curly brackets {} are translation arguments that will be replaced with a live value when Home Assistant is running. Any translation argument placeholders present in the original string must be included in the translated string. These may include special syntax for defining plurals or other replacement rules. The linked format.js guide explains the syntax for adding plural definitions and other rules.
Don’t translate or change proper nouns like Home Assistant, Hass.io or Hue.
+
For a region specific translation, keys that will be the same as the base translation should be filled with [VOID]. These will be replaced during our translation build process.
+
Translations under the state_badge keys will be used for the notification badge display. These translations should be short enough to fit in the badge label without overflowing. This can be tested in the Home Assistant UI either by editing the label text with your browsers development tools, or by using the States developer tool in the Home Assistant UI. In the UI, enter a new entity ID (device_tracker.test), and enter the text you want to test in state.
+
If text will be duplicated across different translation keys, make use of the Lokalise key reference feature where possible. The base translation provides examples of this underneath the states translations. Please see the Lokalise key referencing documentation for more details.
+
+
Adding a new language
+
If your language is not listed you can request it at GitHub. Please provide both the English name and the native name for your language. For example:
+
English Name: German
+Native Name: Deutsch
+
+
+
+Region specific translations (en-US, fr-CA) will only be included if translations for that region need to differ from the base language translation.
+
+
Maintainer steps to add a new language
+
+
Language tags have to follow BCP 47. A list of most language tags can be found here: IANA sutbtag registry. Examples: fr, fr-CA, zh-Hans. Only include the country code if country specific overrides are being included, and the base language is already translated.
+
Add the language tag and native name in src/translations/translationMetadata.json. Examples: “Français”, “Français (CA)”
+
Add the new language in Lokalize.
+Note: Sometimes you have to change the tag in Lokalise (Language -> Language settings -> custom ISO code).
diff --git a/developers/multiple_instances/index.html b/developers/multiple_instances/index.html
index 5395820b0a..0fc2b686eb 100644
--- a/developers/multiple_instances/index.html
+++ b/developers/multiple_instances/index.html
@@ -186,7 +186,14 @@ Because each slave maintains its own Service Registry it is possible to have mul
diff --git a/developers/rest_api/index.html b/developers/rest_api/index.html
index f6f52e210d..392dcbec15 100644
--- a/developers/rest_api/index.html
+++ b/developers/rest_api/index.html
@@ -570,7 +570,14 @@ If your client does not support DELETE HTTP requests you can add an