To enable brands to create content in multiple languages, we designed Text Templates. A Text Template is essentially a bundle of translations of a text, tied together with a unique ID. Every Text Template has a default (or source) language.
Text Templates are consumed by input fields where Support Admins create automated content for their users. One example of this type of fields is the pre-defined Greeting Message that a user sees when they initiate a conversation with the brand.
A "translation" icon near the right edge of any such field indicates that you can insert a text template there. The Admin always has a choice to write plain text in the field. Just because we were introducing a new capability, we did not want to affect how brands that wanted to provide support in just one language, were using the system.
We had to make it really easy for the Admin to find the right Text Template and insert it in the the right field. We designed a Text Template Widget that lets Admin search Text Templates and preview all the translations of the content before they insert it in the field.
To make sure that they're inserting the right Text Template, Admin can preview the source content and all the translations. The preview pane shows the number of translations in the Text Template and a way for them to switch languages to view content in any supported language. A Text Template can be inserted into a field by just clicking it's title.
Once a Text Template is inserted into a field, a Token of that Text Template appears inside the field and the field changes to read-only mode. This was intentionally designed to not allow a combination of Text Templates with plain text, as it would never form a coherent piece of text.
The content of the inserted Text Template can still be viewed by hovering over the Text Template Token. The reason for designing this capability was to draw a parallel between entering plain text into a field and inserting a Text Template. When a plain text is input into a field, you can see the exact content that field holds. We had to provide the same capability with Text Templates, in all languages.
In case the Admin want to change the content of the inserted Text Template, they can click the edit button on the preview pane. It opens up the Text Template in a new tab where they can edit the content.
Our AI team designed a mechanism to detect the language the user is conversing in, based on their first message. We could have just fallen back to device or browser language but detected language is more accurate. It also gave us way to localise email conversations. Since there is no device or browser language available in case of email, detected language becomes the only way to localise the email conversations.
The brands can choose to set the detected language as the language of the conversation and any content or messages are sent in the detected language.
The Helpshift support conversation is not a live-chat scenario. The user is rarely ever talking to a human on the other side.
Brands have automated major parts of their support conversation with Custom Bots and other pre-defined messages.
Since these messages come from different parts of the system and multiple Bots, we had to make sure that the conversation with the user happens in one language that the user is comfortable with.
Helpshift Custom Bots are a series of rule-based conversational steps. Support Admin define the bot messages and the reply options that their end users see and interact with.
To localise Custom Bots, we enabled Admin to insert Text Templates into bot messages, reply options and any other content that the end-users would see. Admin can also preview the entire conversation in multiple languages before they publish the bot. This made it possible for the same bot to converse with users in multiple languages.
The demo below illustrates how a Custom Bot step consumes Text Templates.
Since a Custom Bot can consist of many steps, we wanted to make it easy for Admin to track if they have inserted Text Templates in all the steps. To solve this, I designed a Translation indication system that tells the Admin the localisation status of a step and guides them how to completely localise it.