<img src="https://img.shields.io/badge/%20-ENTERPRISE-B10031" style="float:left"/><br />

The iOS SDK selects the appropriate string from one of the available string tables. The SDK searches the string tables in the following order:

  • Main bundle string tables in the app

  • String tables in the `JWPlayerKit` (iOS SDK)

  • English string tables in the iOS SDK

By creating a string table for a language, you can customize the displayed string for menus, title bars, and strings in many other interfaces. Your language-specific string table will override the string tables in the iOS SDK.

You can create string tables for any language, allowing you to customize the video experience for your global users.



There are a handful of classes created by our builders which take a string as an argument. These values are not localized by the SDK. Instead, you should provide a localized string to these structures, or override their default in your string tables using our string keys.

For example, in `JWAdInterfaceStyleBuilder` there are string properties for `skipText`, `countdownText`, and `skipDelayText`. These strings will be displayed as provided. Thus, if you set one to “Skip Ahead” the text displayed is “Skip Ahead” and is not looked up from the string table.

<br /> <hr />

## Requirements

  • JWPlayerKit 4.3.0+ (iOS)

<br /> <hr />

## Default Supported Languages

The iOS SDK supports localization for the languages in the following table.

(Script tags will be stripped)


<br />




## Enable localization

### General

Use the following steps to enable localization:

  1. Create <a href="https://developer.apple.com/documentation/xcode/adding-support-for-languages-and-regions" target="_blank">language-specific string tables</a> for the app. Refer to the [String Reference](🔗) to see the list of customizable strings in the player.

  2. In the **info.plist** of the app, add the `CGBundleAllowMixedLocalizations` key and set the value to `YES`. When added to **info.plist**, the key appears as **Localized resources can be mixed**.

    
    1530
    

    Localized resources can be mixed setting in the info.plist file

<br />

### Google IMA

By default, Google IMA uses the language specified in the user’s default settings.

Use the following steps to override the default settings:

  1. Use `JWImaSettingsBuilder()` to create a `JWImaSettings object`.

  2. Define `locale` with the two-letter language code.

<br />



<br /> <hr />

## String Reference

### General Strings

The following table lists all strings that can be customized for a language-specific string table. The default English string is listed for each string.

<table> <thead> <tr> <th>String</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td width="40%"><strong>jwplayer_ad_countdown</strong></td> <td width="60%">Prefix for the ad countdown <br /><br /> <strong>English</strong>: Ad in <br /><br /><em>NOTE: The number of seconds until the ad begins is appended on the end of the string.</em> </td> </tr> <tr> <td><strong>jwplayer_advertisement</strong></td> <td>Displayed in the control center when an advertisement is playing while the application is backgrounded <br /><br /> <strong>English</strong>: Advertisement </td> </tr> <tr> <td><strong>jwplayer_advertising_ad_x_of_y</strong></td> <td>Displays on the ad pod count label during JWP VAST ad <br /><br /> <strong>English</strong>: Ad __AD_POD_CURRENT__ of __AD_POD_LENGTH__ <br /><br /><em>NOTE: The substring</em> <code>__AD_POD_CURRENT__</code> <em>is replaced by the index of the currently playing advertisement. The substring</em> <code>__AD_POD_LENGTH__</code> <em>is replaced by the total number of advertisements in the ad pod.</em> </td> </tr> <tr> <td><strong>jwplayer_advertising_remaining_time</strong></td> <td>Countdown text that displays during ad playback <br /><br /> <strong>English</strong>: This ad will end in xx <br /><em>NOTE: The letters, xx, are replaced with a number of seconds.</em> </td> </tr> <tr> <td><strong>jwplayer_advertising_skip_message</strong></td> <td>Skip countdown message during VAST ad playback <br /><br /><strong>English</strong>: Skip ad in xx <br /><em>NOTE: The letters, xx, are replaced with a number of seconds.</em> </td> </tr> <tr> <td><strong>jwplayer_advertising_skip_text</strong></td> <td>Button text that appears when an ad is skippable <br /><br /><strong>English</strong>: Skip </td> </tr> <tr> <td><strong>jwplayer_airplay</strong></td> <td>Accessibility label for Airplay button <br /><br /><strong>English</strong>: AirPlay </td> </tr> <tr> <td><strong>jwplayer_am</strong></td> <td>Suffix on a time in the day before noon. <br /><br /><strong>English</strong>: AM </td> </tr> <tr> <td><strong>jwplayer_audio</strong></td> <td>Menu header for language settings <br /><br /><strong>English</strong>: Audio </td> </tr> <tr> <td><strong>jwplayer_audio_and_subtitles</strong></td> <td>Menu header for subtitles and audio in the same menu <br /><br /><strong>English</strong>: Audio &amp; Subtitles </td> </tr> <tr> <td><strong>jwplayer_audio_tracks</strong></td> <td>Header above a selection of audio tracks in the <strong>Audio &amp; Subtitles</strong> menu <br /><br /><strong>English</strong>: Audio Tracks </td> </tr> <tr> <td><strong>jwplayer_auto</strong></td> <td>Label text for the default quality selection option that allows the player to automatically select the appropriate quality level for the viewer <br /><br /><strong>English</strong>: Auto </td> </tr> <tr> <td><strong>jwplayer_back</strong></td> <td>Text displayed and used for a back button in a menu <br /><br /><strong>English</strong>: Back </td> </tr> <tr> <td><strong>jwplayer_cancel</strong></td> <td>Menu option for cancelling out of a menu <br /><br /><strong>English</strong>: Cancel </td> </tr> <tr> <td><strong>jwplayer_cast_connect_to_a_device</strong></td> <td>Menu header for casting menu displaying devices <br /><br /><strong>English</strong>: Connect to a device </td> </tr> <tr> <td><strong>jwplayer_cast_disconnect</strong></td> <td>Menu option to disconnect from a casting or linked device <br /><br /><strong>English</strong>: Disconnect </td> </tr> <tr> <td><strong>jwplayer_cast_playing_on</strong></td> <td>Title on the casting information button while it is casting <br /><br /><strong>English</strong>: Playing on __device__ <br /><br /><em>NOTE:</em> <code>__device__</code> <em>is replaced with the device name.</em> </td> </tr> <tr> <td><strong>jwplayer_cast_scanning</strong></td> <td>Informational text when scanning for casting devices <br /><br /><strong>English</strong>: Scanning for devices... </td> </tr> <tr> <td><strong>jwplayer_cast_use_same_wifi</strong></td> <td>Menu subtext for casting, informing the user to be on the same WiFi network as the device they are searching for and wish to connect to <br /><br /><strong>English</strong>: Make sure your device is connected to the same WiFi network. </td> </tr> <tr> <td><strong>jwplayer_casting_info_button_title</strong></td> <td>Title displayed on the blue button when casting <br /><br /><strong>English</strong>: Casting Info </td> </tr> <tr> <td><strong>jwplayer_chapter</strong></td> <td>Singular word: chapter <br /><br /><strong>English</strong>: Chapter </td> </tr> <tr> <td><strong>jwplayer_chapters</strong></td> <td>Plural word: chapters <br /><br /><strong>English</strong>: Chapters </td> </tr> <tr> <td><strong>jwplayer_chromecast</strong></td> <td>Accessibility label for ChromeCast button <br /><br /><strong>English</strong>: Chromecast </td> </tr> <tr> <td><strong>jwplayer_close</strong></td> <td>Text on a close button used to close a menu or overlay <br /><br /><strong>English</strong>: Close </td> </tr> <tr> <td><strong>jwplayer_close_menu</strong></td> <td>Accessibility label for closing the menu <br /><br /><strong>English</strong>: close menu </td> </tr> <tr> <td><strong>jwplayer_done</strong></td> <td>Button on menus labeled: done <br /><br /><strong>English</strong>: Done </td> </tr> <tr> <td><strong>jwplayer_errors_bad_connection</strong></td> <td>Error message text displayed when a connection issue prevents playback <br /><br /><strong>English</strong>: This video cannot be played because of a problem with your internet connection. </td> </tr> <tr> <td><strong>jwplayer_errors_cant_load_player</strong></td> <td>Error message text displayed when a player fails to set up for a non-network reason, like incorrect JSON or license keys <br /><br /><strong>English</strong>: Sorry, the video player failed to load. </td> </tr> <tr> <td><strong>jwplayer_errors_cant_play_video</strong></td> <td>Error message text displayed when a media item fails to load and the reason is because of the media file itself <br /><br /><strong>English</strong>: This video file cannot be played. </td> </tr> <tr> <td><strong>jwplayer_errors_error_code</strong></td> <td>Label text for a numeric error code, for example, Error code: 50244402 <br /><br /><strong>English</strong>: Error Code </td> </tr> <tr> <td><strong>jwplayer_errors_live_stream_down</strong></td> <td>Error message text displayed when a live stream down or has ended <br /><br /><strong>English</strong>: The live stream is either down or has ended. </td> </tr> <tr> <td><strong>jwplayer_errors_protected_content</strong></td> <td>Error message text displayed when DRM or protected content fails <br /><br /><strong>English</strong>: There was a problem providing access to protected content. </td> </tr> <tr> <td><strong>jwplayer_errors_technical_error</strong></td> <td>Generic error message text for all cases that do not fit in another situation <br /><br /><strong>English</strong>: This video cannot be played because of a technical error. </td> </tr> <tr> <td><strong>jwplayer_exit_fullscreen</strong></td> <td>Text in the control bar to exit fullscreen <br /><br /><strong>English</strong>: Exit Fullscreen </td> </tr> <tr> <td><strong>jwplayer_forward_15_seconds</strong></td> <td>Accessibility label for fast forwarding <br /><br /><strong>English</strong>: fast forward 15 seconds </td> </tr> <tr> <td><strong>jwplayer_from_beginning</strong></td> <td>Displayed in the information panel, on the restart button <br /><br /><strong>English</strong>: From beginning </td> </tr> <tr> <td><strong>jwplayer_fullscreen</strong></td> <td>Accessibility label for the full screen button <br /><br /><strong>English</strong>: Fullscreen </td> </tr> <tr> <td><strong>jwplayer_go_to_live</strong></td> <td>Text for the “go to live” button <br /><br /><strong>English</strong>: Go to live </td> </tr> <tr> <td><strong>jwplayer_hour</strong></td> <td>Singular word: hour <br /><br /><strong>English</strong>: hour </td> </tr> <tr> <td><strong>jwplayer_hours</strong></td> <td>Plural word: hours <br /><br /><strong>English</strong>: hours </td> </tr> <tr> <td><strong>jwplayer_hours_abbr</strong></td> <td>Abbreviation for hours <br /><br /><strong>English</strong>: hrs </td> </tr> <tr> <td><strong>jwplayer_just_watched</strong></td> <td>Label displayed over playlist items in the playlist item menu, conveying that an item has already been watched <br /><br /><strong>English</strong>: Just watched </td> </tr> <tr> <td><strong>jwplayer_learn_more</strong></td> <td>Tap-through button on the VAST ad UI <br /><br /><strong>English</strong>: Learn more </td> </tr> <tr> <td><strong>jwplayer_live_broadcast</strong></td> <td>Label text for live streams, displayed in the control bar <br /><br /><strong>English</strong>: Live </td> </tr> <tr> <td><strong>jwplayer_menu</strong></td> <td>Accessibility label for opening the settings menu <br /><br /><strong>English</strong>: menu </td> </tr> <tr> <td><strong>jwplayer_minute</strong></td> <td>Singular word: minute <br /><br /><strong>English</strong>: minute </td> </tr> <tr> <td><strong>jwplayer_minutes</strong></td> <td>Plural word: minutes <br /><br /><strong>English</strong>: minutes </td> </tr> <tr> <td><strong>jwplayer_minutes_abbr</strong></td> <td>Abbreviation for the word minutes <br /><br /><strong>English</strong>: mins </td> </tr> <tr> <td><strong>jwplayer_more_videos</strong></td> <td>Button text and overlay heading for recommended video interfaces <br /><br /><strong>English</strong>: More Videos </td> </tr> <tr> <td><strong>jwplayer_next</strong></td> <td>Accessibility label for the right arrow in paginated overlays <br /><br /><strong>English</strong>: Next </td> </tr> <tr> <td><strong>jwplayer_next_up</strong></td> <td>Title of an overlay that displays the next item to automatically play <br /><br /><strong>English</strong>: Next Up </td> </tr> <tr> <td><strong>jwplayer_next_up_countdown</strong></td> <td>Countdown message text until the next item automatically plays <br /><br /><strong>English</strong>: Next up in xx <br /><br /><em>NOTE: The letters, xx, will be programmatically replaced by a number of seconds.</em> </td> </tr> <tr> <td><strong>jwplayer_normal</strong></td> <td>Word for 1x playback speed <br /><br /><strong>English</strong>: Normal </td> </tr> <tr> <td><strong>jwplayer_not_specified</strong></td> <td>Menu option for video quality is not being specified by the user <br /><br /><strong>English</strong>: Not specified </td> </tr> <tr> <td><strong>jwplayer_off</strong></td> <td>Menu option text for turning an option off, such as closed captions <br /><br /><strong>English</strong>: Off </td> </tr> <tr> <td><strong>jwplayer_okay</strong></td> <td>Displayed on a button for the affirmative <br /><br /><strong>English</strong>: Okay </td> </tr> <tr> <td><strong>jwplayer_pause</strong></td> <td>Accessibility label for the pause button <br /><br /><strong>English</strong>: Pause </td> </tr> <tr> <td><strong>jwplayer_picture_in_picture</strong></td> <td>Accessibility label for picture in picture button <br /><br /><strong>English</strong>: Picture in Picture </td> </tr> <tr> <td><strong>jwplayer_play</strong></td> <td>Accessibility label for the play button <br /><br /><strong>English</strong>: Play </td> </tr> <tr> <td><strong>jwplayer_playback_rates</strong></td> <td>Header text for the playback rate controls menu <br /><br /><strong>English</strong>: Playback Rates </td> </tr> <tr> <td><strong>jwplayer_player</strong></td> <td>Accessibility label for the player <br /><br /><strong>English</strong>: Video Player </td> </tr> <tr> <td><strong>jwplayer_playlist</strong></td> <td>Playlist menu header <br /><br /><strong>English</strong>: Playlist </td> </tr> <tr> <td><strong>jwplayer_pm</strong></td> <td>Suffix on a time in the day after noon <br /><br /><strong>English</strong>: PM </td> </tr> <tr> <td><strong>jwplayer_previous</strong></td> <td>Accessibility label for the previous playlist item button <br /><br /><strong>English</strong>: Previous </td> </tr> <tr> <td><strong>jwplayer_quality</strong></td> <td>Header text for the video quality controls menu <br /><br /><strong>English</strong>: Quality </td> </tr> <tr> <td><strong>jwplayer_recommendations</strong></td> <td>Recommendations menu header <br /><br /><strong>English</strong>: Recommendations </td> </tr> <tr> <td><strong>jwplayer_replay</strong></td> <td>Accessibility label for the replay button <br /><br /><strong>English</strong>: Replay </td> </tr> <tr> <td><strong>jwplayer_resume</strong></td> <td>Text for a button used to resume playback <br /><br /><strong>English</strong>: Resume </td> </tr> <tr> <td><strong>jwplayer_second</strong></td> <td>Singular word: second <br /><br /><strong>English</strong>: second </td> </tr> <tr> <td><strong>jwplayer_seconds</strong></td> <td>Plural word: seconds <br /><br /><strong>English</strong>: seconds </td> </tr> <tr> <td><strong>jwplayer_seconds_abbr</strong></td> <td>Abbreviation for seconds <br /><br /><strong>English</strong>: secs </td> </tr> <tr> <td><strong>jwplayer_subtitles</strong></td> <td>Menu header for subtitles menu <br /><br /><strong>English</strong>: Subtitles </td> </tr> <tr> <td><strong>jwplayer_unavailable</strong></td> <td>Single-word text for describing when a menu or option is unavailable <br /><br /><strong>English</strong>: Unavailable </td> </tr> <tr> <td><strong>jwplayer_unknown_cc</strong></td> <td>Label displayed for closed captions with an unknown region <br /><br /><strong>English</strong>: Unknown cc </td> </tr> </tbody> </table>

<br />

### Accessibility

The following table lists all the customizable accessibility labels and values. The default English string is listed for each string.



Refer to <a href="https://developer.apple.com/documentation/objectivec/nsobject/uiaccessibility" target="_blank">Apple's documentation</a> for further information on these properties and how they affect the user experience.

<table> <thead> <tr> <th>String</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td width="40%"><strong>jwplayer_acc_airplaybutton</strong></td> <td width="60%">Label for the AirPlay button <br /><br /> <strong>English</strong>: AirPlay </td> </tr> <tr> <td><strong>jwplayer_acc_audioandcaptionsbutton</strong></td> <td>Label for the header of the <strong>Audio & Captions</strong> button <br /><br /> <strong>English</strong>: Audio and captions </td> </tr> <tr> <td><strong>jwplayer_acc_chaptersbutton</strong></td> <td>Label for the chapters button <br /><br /> <strong>English</strong>: Chapters </td> </tr> <tr> <td><strong>jwplayer_acc_chromecastbutton</strong></td> <td>Label for the Chromecast button <br /><br /> <strong>English</strong>: Chromecast </td> </tr> <tr> <td><strong>jwplayer_acc_closebutton</strong></td> <td>Label for menu close buttons <br /><br /> <strong>English</strong>: Close </td> </tr> <tr> <td><strong>jwplayer_acc_description</strong></td> <td>Label for the description label <br /><br /> <strong>English</strong>: The description is xx <br /><br /><em>NOTE: The substring</em> <code>xx</code> <em>in the label will be replaced with the text description of the video specified in the config.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_durationlabel</strong></td> <td>Label of the label specifying the duration of the video <br /><br /> <strong>English</strong>: Duration <br /><br /><em>NOTE: This label will also have an accessibility value set to a text description of the total duration of the video.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_enterfullscreenbutton</strong></td> <td>Label of the button used to switch the video into a full screen experience <br /><br /> <strong>English</strong>: Enter full screen </td> </tr> <tr> <td><strong>jwplayer_acc_exitfullscreenbutton</strong></td> <td>Label of the button used to switch the video out of a full screen experience <br /><br /> <strong>English</strong>: Exit full screen </td> </tr> <tr> <td><strong>jwplayer_acc_fastforwardbutton</strong></td> <td>Label of the button used to skip the next 15 seconds of the video <br /><br /> <strong>English</strong>: Fast-forward 15 seconds </td> </tr> <tr> <td><strong>jwplayer_acc_learnmorebutton</strong></td> <td>Label of the button used to visit the click-through URL of the currently-playing JWP VAST ad <br /><br /> <strong>English</strong>: Tap to learn more </td> </tr> <tr> <td><strong>jwplayer_acc_livebutton</strong></td> <td>Label of the live button displayed during live content <br /><br /> <strong>English</strong>: Live </td> </tr> <tr> <td><strong>jwplayer_acc_nextitembutton</strong></td> <td>Label of the button used to skip to the next item in the playlist <br /><br /> <strong>English</strong>: Next item </td> </tr> <tr> <td><strong>jwplayer_acc_nextup</strong></td> <td>Label of the label displayed about the next item in the playlist <br /><br /> <strong>English</strong>: The next video is xx <br /><br /><em>NOTE: The substring</em> <code>xx</code> <em>is replaced by the title of the next item.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_next_up_countdown</strong></td> <td>Label of the label displaying the countdown to the next item in the playlist loading and starting <br /><br /> This is on the next up card. <br /><br /> <strong>English</strong>: Next up in xx seconds. <br /><br /><em>NOTE: The substring</em> <code>xx</code> <em>is replaced by the number of seconds until the next item plays.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_pausebutton</strong></td> <td>Label of the pause button <br /><br /> <strong>English</strong>: Pause </td> </tr> <tr> <td><strong>jwplayer_acc_playbackratebutton</strong></td> <td>Label of the playback rate button <br /><br /> <strong>English</strong>: Playback rates </td> </tr> <tr> <td><strong>jwplayer_acc_playbutton</strong></td> <td>Label of the play button <br /><br /> <strong>English</strong>: Play </td> </tr> <tr> <td><strong>jwplayer_acc_playlistbutton</strong></td> <td>Label of the playlist button <br /><br /> <strong>English</strong>: Playlist </td> </tr> <tr> <td><strong>jwplayer_acc_playlistitem_title</strong></td> <td>Label of the playlist item in the playlist menu <br /><br /> <strong>English</strong>: Item is titled xx <br /><br /><em>NOTE: The substring</em> <code>xx</code> <em>is replaced by the title of the item.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_playlistitem_title_duration</strong></td> <td>Label of the playlist item in the playlist menu if it is accompanied by a duration <br /><br /> <strong>English</strong>: Item is titled xx and is yy long. <br /><br /><em>NOTE: The substring <code>xx</code> is replaced by the title of the item. The substring <code>yy</code> is replaced by the duration of the video.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_positionlabel</strong></td> <td>Label of the label specifying the position of the video <br /><br /> <strong>English</strong>: Position <br /><br /><em>NOTE: This label will also have an accessibility value set to a text description of the position within the video.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_previousitembutton</strong></td> <td>Label of the button used to skip to the previous item in the playlist <br /><br /> <strong>English</strong>: Previous item </td> </tr> <tr> <td><strong>jwplayer_acc_resumebutton</strong></td> <td>Label of the resume button <br /><br /> <strong>English</strong>: Resume playback </td> </tr> <tr> <td><strong>jwplayer_acc_rewindbutton</strong></td> <td>Label of the button used to rewind the video 15 seconds before its current position <br /><br /> <strong>English</strong>: Rewind 15 seconds </td> </tr> <tr> <td><strong>jwplayer_acc_settingsbutton</strong></td> <td>Label of the setting button <br /><br /> <strong>English</strong>: Settings </td> </tr> <tr> <td><strong>jwplayer_acc_skipbutton_active</strong></td> <td>Label of the skip button displayed during an advertisement using JWP VAST when the button is active <br /><br /> <strong>English</strong>: Skip ad </td> </tr> <tr> <td><strong>jwplayer_acc_skipbutton_inactive</strong></td> <td>Label of the skip button displayed during an advertisement using JWP VAST when the button is inactive waiting to be enabled <br /><br /> <strong>English</strong>: Skip ad in xx seconds <br /><br /><em>NOTE: The substring</em> <code>xx</code> <em>will be replaced by the number of seconds until the button is enabled.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_title</strong></td> <td>Label of the title label of the current content <br /><br /> <strong>English</strong>: The title is xx <br /><br /><em>NOTE: The substring of</em> <code>xx</code> <em>is replaced by the title of the content.</em> </td> </tr> <tr> <td><strong>jwplayer_acc_value_disabled</strong></td> <td>Value of menu buttons which have been disabled <br /><br /> <strong>English</strong>: disabled </td> </tr> <tr> <td><strong>jwplayer_acc_value_selected</strong></td> <td>Value of menu buttons or options which have been selected and are displayed as selected <br /><br /> <strong>English</strong>: selected </td> </tr> <tr> <td><strong>jwplayer_acc_value_unknown</strong></td> <td>Value of menu options with an indeterminate value, such as an unknown locale for captions <br /><br /> <strong>English</strong>: unknown </td> </tr> </tbody> </table>

<br />

<!-- Removes the automatic page-to-page navigation at the bottom of the page -->

<style> .rm-Pagination { display: none; } </style>