Localizable.strings files to Hyperlocalise Cloud. The CLI preserves keys, comments, and file formatting while replacing translated values.
Prerequisites
You need:- an iOS project that uses
.stringsresources; - the Hyperlocalise CLI;
- a Cloud project with
en-USas source andfr-FRandde-DEas targets; and HYPERLOCALISE_API_KEYandHYPERLOCALISE_PROJECT_IDin your environment.
1. Move visible copy into Localizable.strings
Create ios/App/en-US.lproj/Localizable.strings:
2. Map the locale folders
Createi18n.yml at the repository root:
fr.lproj, use target locale names that match those folders or map separate buckets to the exact paths your Xcode project expects.
3. Check the source pull request
Before merge, verify the upload plan:- every localized lookup has a source entry;
- duplicate keys do not exist;
- the
.stringsfile uses valid quoted key/value syntax; and - placeholders such as
%@,%d, and positional variants remain explicit.
4. Push source strings
After the source pull request merges:en-US.lproj/Localizable.strings. It does not start translation. Use a Source upload automation or create a request in Cloud.
5. Review iOS strings in Cloud
In Content Editor, check:- comments that explain the screen and control;
%@,%d, or positional placeholders;- terminology used in navigation and buttons;
- punctuation and smart quotes; and
- likely expansion in compact layouts.
6. Pull translated .strings files
Run:
7. Test in Xcode
For each target locale:- Edit the scheme.
- Under Run → Options, set App Language.
- Open the translated screens.
- Exercise values that substitute
%@and numeric placeholders. - Check compact devices and accessibility text sizes.
Plurals with .stringsdict
Use .stringsdict when the app already depends on Apple’s legacy plural format. Add a second mapping:
.stringsdict as an already-segmented format. Keep plural variable names and format specifiers stable, then test 0, 1, and several plural values in the app.
If you use modern Xcode String Catalogs instead, map .xcstrings files as described in i18n configuration.
Troubleshooting
Xcode shows the key instead of a translation
Confirm the target.lproj folder belongs to the app target, the filename is Localizable.strings, and the Swift lookup uses the exact key.
Placeholder checks fail
Restore the source placeholder names and positions in the target value. Positional placeholders are safer when a language needs to reorder arguments.Pull skips a locale
Confirm that locale has translations in the selected Cloud project. Runhl sync pull --dry-run and compare the resolved path with the Xcode localization folder.

