Change your chat widget localization in iOS SDK

Provide multilingual support in iOS SDK
Written by Andrew
Updated 1 week ago

You can change any text in the HelpCrunch iOS SDK and add translations for several languages. The chat interface and the Knowledge Base language are set separately:

  • Chat texts come from the Localizable.strings file in your app.
  • The Knowledge Base language is set with setKBLanguage (iOS SDK 4.5.7 and later).

Edit texts (single language)

If your app uses one language, you only need to override the texts you want to change.

  1. In Xcode, select File → New → File… → Strings File and name it Localizable.strings. If your project already has this file, use the existing one.
  2. Add the SDK keys you want to change. You don’t have to copy the whole list. Keys you don’t override keep their default values.
"helpcrunch.chat.waiting-message" = "Looking for an agent, one moment…";
"helpcrunch.kb.title" = "Hi there 👋 How can we help?";

The full list of keys is available below.


Add multiple languages

To show the chat in several languages, create a separate version of Localizable.strings for each one. iOS picks the version that matches the device or app language.

  1. Add the language to the project: select the project → Info → Localizations → +, then choose the language (for example, Spanish).
  2. Select Localizable.strings in the Project Navigator and open the File inspector (Alt + Cmd + 1).
  3. Click Localize…, then check every language you need. Xcode creates a separate file for each language (for example, es.lproj/Localizable.strings).
  4. Make sure to check appropriate language in the list of checkboxes which have just appeared 
  5. Add the translated texts to each language file:
/* es.lproj/Localizable.strings */
"helpcrunch.chat.waiting-message" = "Buscando un agente, un momento…";
"helpcrunch.kb.title" = "Hola 👋 ¿Cómo podemos ayudarte?";

The full list of keys is available below.


Set the Knowledge Base language

The chat texts follow your Localizable.strings files, but the Knowledge Base has its own language setting. To set it, use setKBLanguage:

Swift

Parameters:
locale: string: two-letter language code (ISO 639-1), for example en, es, de.

HelpCrunch.setKBLanguage(String);

When user switches the app language to Spanish, you can show the Knowledge Base in Spanish too:

HelpCrunch.setKBLanguage("es");

Objective-C

[HelpCrunch setKBLanguage:@"es"]

How it works

  • The method switches the Knowledge Base language right away. You can call it at any time.
  • The method takes priority over the user’s choice. If a user picked a language manually and the method is called afterwards, the Knowledge Base switches to the language you passed.
  • If you don’t call the method, nothing changes: the Knowledge Base keeps the language the user picked.

Important: If you call the method every time the app or SDK starts, it resets the Knowledge Base language on every launch. A language the user picks manually only lasts until the next restart.

Tip: To keep the user’s choice, call the method only when you actually need to, for example when the user changes the language of your app. Don’t call it on every app or SDK start.


Localization keys

"helpcrunch.navigation.button.close" = "Close";

"helpcrunch.attachment.photo" = "Take a Photo";
"helpcrunch.attachment.library" = "Select from a Library";
"helpcrunch.attachment.file" = "Select file";

"helpcrunch.agent.agents" = "Agents";
"helpcrunch.agent.is-typing" = "%@ is typing...";
"helpcrunch.agent.are-typing" = "%@ are typing...";
"helpcrunch.agent.and-more" = " and %i more";

"helpcrunch.chat.file.uploaded" = "uploaded";
"helpcrunch.chat.file.downloaded" = "downloaded";

"helpcrunch.chat.alert.deleted" = "This chat was removed. You'll be redirected to the chat list.";
"helpcrunch.chat.alert.filesize-exceeded" = "The maximum supported file size is %.0f MB.";

"helpcrunch.alert.button.ok" = "OK";

"helpcrunch.connection.unknown-error" = "Oops, something went wrong";
"helpcrunch.connection.offline" = "No internet connection";

"helpcrunch.prechatForm.name" = "Name";
"helpcrunch.prechatForm.email" = "Email";
"helpcrunch.prechatForm.company" = "Company";
"helpcrunch.prechatForm.phone" = "Phone number";
"helpcrunch.prechatForm.department" = "Choose a department";
"helpcrunch.prechatForm.continue" = "Continue";
"helpcrunch.prechatForm.acceptance-title" = "I have read and accept the";
"helpcrunch.prechatForm.acceptance-name" = "Privacy Policy";
"helpcrunch.prechatForm.top-message" = "We respond within 2 minutes most of the time. Otherwise, we'll drop you an email.";

"helpcrunch.kb.title" = "Hello 👋 How can we help?";
"helpcrunch.kb.search-result" = "Search result: %@";
"helpcrunch.kb.search-result.none.title" = "There are no articles";
"helpcrunch.kb.search-result.none.description" = "We're working on adding our help articles.\nYou'll find them here very soon.";
"helpcrunch.kb.search-articles" = "Search articles";
"helpcrunch.kb.rate.title" = "DID THIS ANSWER YOUR\nQUESTION?";
"helpcrunch.kb.tab" = "Search";
"helpcrunch.kb.section.show-articles" = "SHOW ALL";
"helpcrunch.kb.section.hide-articles" = "HIDE ARTICLES";
"helpcrunch.kb.article.author" = "Written by %@";
"helpcrunch.kb.article.updated" = "Updated %@";

"helpcrunch.kb.language.article-not-translated" = "This article isn't translated into %@. You may choose another language:";
"helpcrunch.kb.protected.title.password" = "The knowledge base is protected by password";
"helpcrunch.kb.protected.field.password" = "Password";
"helpcrunch.kb.protected.button.sign-in" = "Sign In";
"helpcrunch.kb.protected.title.incorrect-password" = "Password is incorrect";
"helpcrunch.kb.protected.title.ip-prohibited" = "Access to knowledge base is prohibited";

"helpcrunch.chat.tab" = "Ask";

"helpcrunch.chat.waiting-message" = "Searching for a free agent. Please hold on.";
"helpcrunch.chat.offline-message" = "Sorry, we are not available now. We've got your message though and we'll reply to you as soon as we can.";
"helpcrunch.chat.message-chat-closed" = "This chat is closed";
"helpcrunch.chat.message-placeholder" = "Type message";
"helpcrunch.chat.status.closed" = "CLOSED";

"helpcrunch.chat.rating.very-poor" = "Very poor";
"helpcrunch.chat.rating.poor" = "Poor";
"helpcrunch.chat.rating.avarage" = "Average";
"helpcrunch.chat.rating.great" = "Good";
"helpcrunch.chat.rating.excellent" = "Excellent";
"helpcrunch.chat.rating.title" = "How do you rate your customer\nservice experience?";

"helpcrunch.chat.message.tech.status" = "Chat marked as %@ by %@";
"helpcrunch.chat.message.tech.status-without-agent" = "Chat marked as %@";
"helpcrunch.chat.message.tech.rated" = "Chat rated %@";
"helpcrunch.chat.message.tech.request-rating" = "Please rate this chat";

"helpcrunch.chats.date.now" = "Now";
"helpcrunch.chats.date.hours" = "h";
"helpcrunch.chats.date.minutes" = "m";
"helpcrunch.chats.start" = "Start new conversation";
"helpcrunch.chats.limit-exceeded" = "You've reached the conversation limit.\nPlease, try again later.";

"helpcrunch.chat.more.end-chat" = "End this chat";

"helpcrunch.chatbot.boolean.yes" = "Yes";
"helpcrunch.chatbot.boolean.no" = "No";

"helpcrunch.cancel" = "Cancel";

"helpcrunch.chat.message.status.new" = "New";
"helpcrunch.chat.message.status.open" = "Open";
"helpcrunch.chat.message.status.pending" = "Pending";
"helpcrunch.chat.message.status.onhold" = "On-hold";
"helpcrunch.chat.message.status.closed" = "Closed";

Did this answer your question?