Localize your iOS app’s .strings, .stringsdict , or .xcstrings files with highly accurate AI. Try it free for 30 days, no credit card needed. This guide walks through the process with a simple demo app and commit references, so you can see what localizing an iOS app looks like in practice.
Localizing iOS Applications with PTC
Private Translation Cloud (PTC) is a powerful AI translator you can use to localize your entire iOS app.
PTC supports all file formats used by iOS, including .strings
, .stringsdict
, and .xcstrings
. You can manually upload your files to see the translation accuracy before fully integrating your repository. PTC delivers translated files with human-level quality, and you can download and use them immediately.
Step 1
Sign Up for a 30-Day Free Trial with PTC
Sign up for a 30-day free trial without a credit card.
During the trial, there’s no limit to how many iOS files you can translate. Just select Manual File Upload when you first sign in to upload your files and download translations. After that, you can continue uploading new files from the PTC dashboard.
Step 2
Tell PTC About Your App
At setup, tell PTC your app’s name, what it does, and who it’s for. PTC uses this information to apply the right terms and tone.

Step 3
Upload your .strings, .stringsdict, or .xcstrings Files
At the Resource files step, upload your .strings
, .stringsdict
, or .xcstrings
file. These files should define user-facing text that your app loads with NSLocalizedString()
(and related APIs).
Make sure to define the output path so PTC exports each translation into the correct .lproj
folder. In iOS apps, localized resources are stored in folders named after the language or locale, such as es.lproj
for Spanish or fr.lproj
for French.
If you see the error “The path must have a .strings extension“, don’t worry — this is normal when there are no translations in the project yet.

Step 4
Choose Your Target Languages
Select any of the 33 supported languages. There’s no limitation to how many languages you can translate into.
Step 5
View and Download Translations
When PTC is done translating, you can download a ZIP file with the translations immediately. If you prefer to view translations into the languages you chose, click on View translations or go to the Translations tab under the PTC dashboard.
There, you can view translations in multiple languages in an organized way.

To see all resource files you’ve uploaded and download translations, navigate to the Resource Files tab.

That’s it! Once you download the ZIP file with the translations, you can add them to your project.
Automating the Translation Process
You don’t need to upload your .strings
, .stringsdict
, or .xcstrings
files individually or re-upload them every time you update your code. PTC can automatically monitor updates to your resource files and keep your translations up to date.
Option 1
Integrate PTC Into Your Git Repository
At project setup, select Git Integration and connect your GitHub, GitLab, or Bitbucket repository to PTC. To do this, you need to create an access token for PTC with read and write permissions.
You can also specify specific branches you want PTC to monitor. PTC will continuously translate the files in this branch when there are changes and send the translations via a merge request.

In the Resource Files step, PTC automatically detects translatable files. Make sure the output path is correct, so that translations are stored properly.

That’s it! Let PTC translate your project from scratch to get the highest-quality translations.
Option 2
Integrate Using API
If you prefer not to connect your repository directly, you can integrate PTC into your CI or deployment workflow.
Your system sends the .strings
, .stringsdict
, or .xcstrings
files to PTC via the API, and PTC returns translated files in the same request.
Translating Additional Content with PTC
Apps have other content that isn’t stored in the resource files. Common examples are:
- You App store listing (e.g. description)
- Email you sent
- Release notes
To translate this type of content, go to Translations → Paste to translate and add your text. PTC translates them instantly and you can download and use translations right away.
These translations aren’t added to your codebase automatically. Copy and paste the translated text into your app store listing, release notes, or email configuration.
Example: Translating Your App Store Content
We’re using a real game app as an example. We show what it would look like to translate the listing with PTC.


To get these texts translated, we used the Paste to translate function, choosing the Email option.

Making an iOS App Translatable (with Commit Examples)
Not sure if your app is ready for translation? Before using PTC, it’s worth checking that your project is set up for localization. Apple’s official documentation goes deep into internationalization, but here we’ll keep it simple and show the essentials with clear commit examples.
Our demo app starts with hard-coded SwiftUI strings. Step by step, we’ll show how to:
- Move text into
.strings
files so it can be translated - Organize resources in the correct
.lproj
folders - Verify that Xcode recognizes your strings as localizable
Follow along, and by the end you’ll know whether your app is ready for translation—or exactly what to change to get it there.
Refactoring Strings for Localization
Hard-coded text can’t be picked up by localization tools. The first step is to replace all user-facing text with NSLocalizedString()
. This makes your strings visible to translation workflows and allows iOS to swap in the right language at runtime.
Example
Text(NSLocalizedString("welcome_title", comment: "Welcome screen title"))
.font(.title)
.padding()
Text(NSLocalizedString("description_text", comment: "App description on main screen"))
.padding()
Button(NSLocalizedString("button_tap_me", comment: "Button to tap")) {
print("Button tapped!")
}
.padding()
Commit reference 0e1f565: Refactor: Move all user-facing strings to NSLocalizedString for localization readiness.

Creating the Base Localizable.strings File
Next, create a base Localizable.strings
file in your app’s development language (English in our demo). Each supported language will eventually have its own version under the corresponding .lproj
folder—for example:
en.lproj/Localizable.strings
es.lproj/Localizable.strings
fr.lproj/Localizable.strings
For our demo app, we create the base file in the original language (English):
- In Xcode, right-click your source folder → New File → Strings File.
- Name the file
Localizable.strings
. - Add the keys you defined in code with their base-language text.
💡Tip: Ensure your .strings files use UTF‑16 encoding.
Example
"welcome_title" = "Welcome to the Translation Demo!";
"description_text" = "This app will demonstrate iOS localization step by step.";
"button_tap_me" = "Tap Me";
Commit reference 41d16bb: Add Base Localizable.strings file for English language.

Creating Translations with PTC
With your base Localizable.strings
file in place, you’re ready to create translations.
Once you sign up for a free trial or log into your PTC account, create a new project. The setup wizard will guide you through the basics:
- Tell PTC about your project
- Choose how you want to integrate (upload files, connect Git, or use the API)
- Select your target languages
Within minutes, PTC will generate human-quality AI translations for your app’s strings.
Adding Translated Files to Your Xcode Project
When PTC finishes generating translations, download and extract the results.
- If you downloaded files manually:
- Copy each
.lproj
folder (e.g.,ar.lproj
,es.lproj
) into your project’s source folder, alongside your baseLocalizable.strings
. - In Xcode, right-click the project navigator → Add Files to “[YourProjectName]”.
- Select the folders and choose Create folder references (the blue folder option).
- Copy each
- If you connected PTC to Git:
- Simply merge the PTC merge request to bring in the latest translations.
- For local apps or demos, just run:
git pull
This will fetch the updated .lproj
folders and translation files directly into your Xcode project.
Testing the Localized iOS App
Now that translations are in place, it’s time to test them.
- Change the device language
- In the iOS Simulator (or on a real device), go to Settings → General → Language & Region
- Select one of your translated languages (e.g., Arabic, Spanish, French)
- Relaunch your app and confirm the UI strings appear in the selected language
- Preview right-to-left (RTL) layouts
- In Xcode, go to Product → Scheme → Edit Scheme… → Options
- Set Application Language and Application Region to an RTL locale (e.g., Arabic or Hebrew)
- Run the app and check that layouts and UI elements mirror correctly
You should see the same layout and design of your app, just with the text translated into the selected language.



Ready to Localize Your iOS App?
Localizing your iOS app with PTC takes minutes, not weeks. Add new languages, deliver a consistent user experience, and grow your audience across markets.
