Localizing the UI
Introduction
This page shows you how to localize or customize strings in the SDK UI.
Strings in the Zendesk SDK are localized into 33 languages.
The strings contained in the SDK are only related to UI components. Any string that's part of the conversation screen is provided and/or translated by the Flow Builder, by an agent in the ticket, or by an integration.
List of localized strings
To change the default strings in your application, add replacements for the following strings. Make sure to include placeholders in the replacements of any strings that contain them.
"zma_accessibility_loading_label" = "Loading";
"zma_accessibility_message_author_replied" = "%@ replied";
"zma_accessibility_message_dismiss" = "Dismiss";
"zma_accessibility_message_received" = "Message received from %@";
"zma_accessibility_postback_error_message" = "Error, %@";
"zma_action_label_cancel" = "Cancel";
"zma_actions_attachments_label" = "Send an attachment";
"zma_alert_message_label_camera" = "Camera";
"zma_alert_message_label_discard" = "Discard changes";
"zma_alert_message_label_document" = "Document";
"zma_alert_message_label_photoLibrary" = "Photo library";
"zma_attachment_type_not_supported" = "Attachment type not supported";
"zma_back_button_accessibility_label" = "Go back";
"zma_carousel_action_not_supported" = "Option not supported";
"zma_connection_banner_label_disconnected" = "Offline. You won't receive messages.";
"zma_connection_banner_label_reconnected" = "You're now online";
"zma_connection_banner_label_reconnecting" = "Reconnecting...";
"zma_contextual_menu_copy" = "Copy";
"zma_conversation_error_tap_to_retry" = "Tap to retry";
"zma_conversation_header_logo" = "Brand logo";
"zma_conversation_list_failed_to_load" = "Conversations failed to load";
"zma_conversation_list_item_description_carousel" = "Sent a carousel";
"zma_conversation_list_item_description_file" = "Sent a file";
"zma_conversation_list_item_description_form" = "Sent a form";
"zma_conversation_list_item_description_image" = "Sent an image";
"zma_conversation_list_item_description_message" = "Sent a message";
"zma_conversation_list_item_description_no_messages" = "No messages";
"zma_conversation_list_item_description_prefix_you" = "You: %@";
"zma_conversation_list_item_timestamp_just_now" = "Just now";
"zma_conversation_list_item_unread_indicator_maximum" = "99+";
"zma_conversation_message_label_cant_be_displayed" = "Message can't be displayed";
"zma_conversation_message_label_image_loading_failed" = "Unable to load image";
"zma_conversation_message_label_just_now" = "Just now";
"zma_conversation_message_label_sending" = "Sending...";
"zma_conversation_message_label_sent_absolute" = "Sent • %@";
"zma_conversation_message_label_sent_relative" = "Sent • Just now";
"zma_conversation_message_label_tap_to_retry" = "Tap to retry";
"zma_conversation_message_label_unsupported_item" = "Item can't be displayed";
"zma_conversation_message_menu_copy_button_label" = "Copy";
"zma_conversation_message_menu_delete_button_label" = "Delete";
"zma_conversation_messages_failed_to_load" = "Messages failed to load";
"zma_conversation_new_messages_banner" = "%@ new messages";
"zma_conversation_new_messages_divider" = "New";
"zma_conversation_see_latest" = "See latest";
"zma_exceeds_max_file_size" = "Exceeds max file size (%@ MB)";
"zma_form_field_counter_label" = "%@ of %@";
"zma_form_field_invalid_email_error" = "Enter a valid email address";
"zma_form_field_max_character_error" = "Enter %@ characters or less";
"zma_form_field_min_character_error" = "Enter %@ characters or more";
"zma_form_field_required_label" = "This field is required";
"zma_form_next_button" = "Next";
"zma_form_send_button" = "Send";
"zma_form_submission_error" = "Details couldn’t be sent. Try again.";
"zma_generated_by_ai" = "Generated by AI";
"zma_label_add_attachments" = "Add attachments";
"zma_label_send_message" = "Send message";
"zma_message_action_option_not_supported_label" = "Option not supported";
"zma_message_input_placeholder" = "Type a message";
"zma_multiconvo_setting_conversation_titles_and_avatars" = "Started %@ at %@";
"zma_new_conversation_button" = "New conversation";
"zma_new_conversation_error_alert_dismiss_button" = "Ok";
"zma_new_conversation_error_alert_message" = "Try again later.";
"zma_new_conversation_error_alert_title" = "Couldn't create conversation";
"zma_postback_error_banner_message" = "%@ could not be completed. Try again later.";
"zma_accessibility_guide_navigation_back" = "Back";
"zma_accessibility_guide_navigation_close" = "Close";
"zma_accessibility_guide_navigation_share" = "Share";
"zma_add_attachments_button_accessibility_label" = "Add attachments";
"zma_back_button_accessibility_label" = "Go back";
"zma_carousel_message_content_subtitle_accessibility_label" = "Carousel content:";
"zma_carousel_message_content_title_accessibility_label" = "Carousel title:";
"zma_conversation_header_accessibility_label" = "Conversation %@";
"zma_conversation_list_item_content_accessibility_label" = "%@, Message from %@: %@, %@, %@";
"zma_conversation_list_item_message_author_name_as_end_user_accessibility_label" = "You";
"zma_conversation_list_item_one_unread_message_accessibility_label" = "1 unread message";
"zma_conversation_list_item_unread_messages_accessibility_label" = "%@ unread messages";
"zma_dropdown_view_accessibility_announce" = "List with %@ choices";
"zma_dropdown_view_singular_accessibility_announce" = "List with 1 choice";
"zma_end_user_expectation_join_in_about_days" = "An agent will join you in about %@ days";
"zma_end_user_expectation_join_in_about_hours" = "An agent will join you in about %@ hours";
"zma_end_user_expectation_join_in_about_minute" = "An agent will join you in about %@ minute";
"zma_end_user_expectation_join_in_about_minutes" = "An agent will join you in about %@ minutes";
"zma_end_user_expectation_join_in_days" = "An agent will join you in %@-%@ days";
"zma_end_user_expectation_join_in_hours" = "An agent will join you in %@-%@ hours";
"zma_end_user_expectation_join_in_minutes" = "An agent will join you in %@-%@ minutes";
"zma_end_user_expectation_join_shortly" = "An agent will be with you shortly";
"zma_end_user_expectation_join_within_days" = "An agent will join you within %@ days";
"zma_end_user_expectation_join_within_hours" = "An agent will join you within %@ hours";
"zma_end_user_expectation_join_within_minute" = "An agent will join you within %@ minute";
"zma_end_user_expectation_join_within_minutes" = "An agent will join you within %@ minutes";
"zma_end_user_expectation_up_next" = "You’re up next";
"zma_form_dropdown_field_accessibility_hint" = "Double-tap to edit";
"zma_form_dropdown_field_accessibility_label" = "Dropdown with %@ choices";
"zma_form_dropdown_singular_field_accessibility_label" = "Dropdown with 1 choice";
"zma_form_entry_error" = "%@ form field error:";
"zma_guide_article_view_attachment_carousel_accessibility_hint" = "Double-tap to open";
"zma_guide_article_view_attachment_carousel_accessibility_label" = "Attachment item";
"zma_guide_article_view_attachment_carousel_accessibility_value" = "%@, type: %@, size: %@";
"zma_guide_feedback_banner_label" = "Was this article helpful?";
"zma_guide_feedback_banner_no_button" = "No";
"zma_guide_feedback_banner_yes_button" = "Yes";
"zma_guide_page_failed_label" = "Page failed to load";
"zma_guide_tap_to_retry" = "Tap to retry";
"zma_header_subtitle_accessibility_label" = "Tagline:";
"zma_image_message_accessibility_label" = "Double-tap to open";
"zma_inbound_text_message_accssibility_label" = "Message received:";
"zma_message_author_accessibility_label" = "Sender";
"zma_message_composer_accessibility_label" = "Message composer:";
"zma_message_error_state_accessibility_label" = "Message not sent. Tap to retry:";
"zma_message_receipt_accessibility_label" = "Time received:";
"zma_message_sent_accessibility_label" = "Time:";
"zma_new_message_divider_accessibility_label" = "New messages divider";
"zma_new_messages_banner_close_button_accessibility_label" = "Tap to dismiss";
"zma_new_messages_banner_new_messages_accessibility_label" = "%@. Tap to scroll to the earliest unread message.";
"zma_offline_banner_accessibility_label" = "%@, tap to refresh button";
"zma_outbound_text_message_accessibility_label" = "Message sent";
"zma_quick_reply_button_accessibility_label" = "%@, quick reply button";
"zma_send_button_accessibility_label" = "Send message";
"zma_static_wait_time_banner_queue_position.few" = "%@ people are waiting ahead of you";
"zma_static_wait_time_banner_queue_position.many" = "%@ people are waiting ahead of you";
"zma_static_wait_time_banner_queue_position.one" = "1 person is waiting ahead of you";
"zma_static_wait_time_banner_queue_position.other" = "%@ people are waiting ahead of you";
"zma_static_wait_time_banner_queue_position.two" = "2 people are waiting ahead of you";
"zma_static_wait_time_banner_queue_position.zero" = "0 people are waiting ahead of you";
"zma_time_divider_accessibility_label" = "Timestamp";
How to override a string for iOS
To override a Zendesk SDK string in iOS, follow these steps:
-
Find the string key you want to override in the SDK's
Localizable.strings
file (see above for how to locate it). -
Add the key and your custom value to your app's
Localizable.strings
file. For example:
"zma_conversation_message_label_just_now" = "Message received moments ago";
-
Support multiple languages by adding overrides to the appropriate
.lproj
folders (for example,fr.lproj/Localizable.strings
for French). -
Keep placeholders (such as
%@
,%d
) in your custom value to avoid runtime errors. -
Rebuild and restart your app to see the changes. The SDK will use your custom value instead of the default.
How to find all localizable strings in the SDK
Instead of relying on this documentation to list every string, you can always find the latest set of localizable strings directly in the Zendesk SDK iOS library:
Locate the SDK's Localizable.strings file
In the SDK's iOS library (framework or source), there is a Localizable.strings
file containing all the string resources used by the SDK UI.
Extract string keys
Open the SDK's Localizable.strings
and review all "key" = "value";
entries. These are the keys you can override in your own app's Localizable.strings
.
Override as needed:
Copy any string key you want to customize into your app's Localizable.strings
and provide your own value.
This approach ensures you always have the latest list of localizable strings, even as the SDK evolves.
FAQ
Q: How do I find all localizable strings in the Zendesk SDK for iOS?
A: You can find the latest set of localizable strings in the SDK's Localizable.strings
file. For CocoaPods or SPM dependencies, browse the SDK source or use Xcode's Resource Manager.
Q: What happens if I override a string in my app's Localizable.strings
?
A: The SDK will use your custom value instead of the default. Make sure to keep any placeholders (for example, %@
, %d
) in your override.
Q: Can I localize SDK strings for different languages?
A: Yes. Add your overrides to the appropriate .lproj
folders (for example, fr.lproj
for French) to support multiple languages.
Q: Are bot strings localizable in the SDK?
A: No. Bot strings (such as automated replies or bot messages) are provided and/or translated by Flow Builder, agents, or integrations—not by the SDK UI string resources.
Q: Will changing the locale programmatically update the SDK UI?
A: No. The SDK UI relies solely on the device locale. To update the UI, restart the app after changing the device locale.