Local Hero
Log in Sign up



Prepare your app for localization

  • Use LocalizedStringResource and String(localized:) to mark localizable strings in your codebase. Text elements in SwiftUI are automatically marked for localization.
  • Use the comment property on LocalizedStringResource, String(localized:), and Text to provide relevant context. This will help the language model and professional translators produce more accurate translations.
  • Use the verbatim property on Text elements that don’t need to be localized to omit them from the string catalog.
  • We recommend using the string catalog feature available starting in Xcode 15. Select FileNewFile…, scroll down and select String Catalog. To localize strings in Info.plist, create another string catalog with the file name InfoPlist.xcstrings.
  • In the string catalog, use the plus icon in the lower left to add the languages for which you want to localize your app.
  • Build your app to update the string catalog.
  • Check the string catalog for strings that have been split into fragments due to interpolation. In such cases, it makes sense to keep strings in your code in one piece instead of composing them dynamically, at the expense of having more repetition in your code. This will help the language model and professional translators produce more accurate translations.

For more information, see Apple’s documentation:

Export localization files from Xcode

  • In the Product menu, select Export Localizations…, and save the localizations folder.

Import localization files into Local Hero

  • Create a new project in Local Hero if you haven’t already.
  • Navigate to your project in Local Hero, select FileImport…, and select the exported localizations folder. You can also select one or several .xcloc files inside the folder to only import certain languages.

Translate strings

  • Local Hero uses the OpenAI API to produce translations. Create an OpenAI API key if you don’t have one already.
  • In your project, select TranslateAPI keys…, and enter your API key. Your key is stored locally in your browser.
  • To provide custom instructions to the language model, select TranslateCustom instructions…. For example: “The app’s name, Watchful, should be kept in English.”
  • Use the options in the Edit menu to select the strings you want to translate.
  • Use the options in the Translate menu to translate your strings. Keep your browser window open while the translation is in progress.

Proofread strings

  • You can edit the strings in the Target column by clicking on them.
  • To verify the translations, select the strings you want to check and use the Back translate options in the Translate menu. This will translate the translations back to the source language in a separate column.
  • To allow someone else to edit the translations, select FileShare link to edit [language]. Anyone with the link can edit the translations for the selected language.
  • When you’ve finalized the translations, change their state to translated. Only strings marked translated will be imported into Xcode.

Export translated files from Local Hero and import into Xcode

  • Use the Export options in the File menu to export localization files for individual languages or all the languages in your project.
  • If you’ve exported all the languages in your project, you’ll need to unzip the exported file.
  • In Xcode, select ProductImport Localizations…, and select the .xcloc files that you exported from Local Hero.
  • After confirming the changes, the translations from Local Hero should appear in the string catalog.

Android Studio, Next.js, SvelteKit, …

Want to be notified when support for other platforms is added to Local Hero? Subscribe to our (infrequent, short) newsletter, and let us know what platforms you use.