Skip to content
Custom Projects

Getting Started

Custom Projects

Localize files without connecting a repository. Upload .xcstrings in the dashboard, or use the API for .xcstrings, Android XML, and i18next JSON.

Custom projects let you localize files without connecting source control. Use dashboard uploads for .xcstrings files, or use the Custom Pipeline API when your CI pipeline needs to send .xcstrings, Android XML, or i18next JSON.

Who This Is For

Use a custom project when repository access is not available or when your CI pipeline sends localization files directly.

Common use cases:

  • Early testing before setting up source-control integration.
  • Teams with restricted repository permissions.
  • One-off dashboard localization passes on exported .xcstrings files.
  • CI pipelines that upload files through the Custom Pipeline API.

Supported Inputs

  • Dashboard uploads: .xcstrings files only.
  • Custom Pipeline API sync jobs: .xcstrings, Android XML, and i18next JSON files.

Android XML and i18next JSON are API-only for custom projects today.

Validation

Dashboard and API uploads pass strict validation before parsing, including UTF-8 checks and file-structure checks.

Typical Workflow

  1. Export or collect the current localization file.
  2. Upload it to your project.
  3. Run localization processing.
  4. Review generated output and import it back into your app project.

Custom projects keep the process explicit and controlled when you do not need automated pull request behavior.

Key Difference vs Repository Projects

Caution

Custom project sync is file-payload based, not branch-aware. If you upload an outdated localization file, String Catalog works from that payload, not from your repository's latest source state.

Custom project sync can prune localized rows that disappear from the incoming file payload, while repository mode favors preserving rows unless source keys are explicitly removed.

Expected Outcome

After a successful run, missing target-language rows are prepared and localized, and the generated output stays compatible with the uploaded file format.

Common Mistakes

  • Uploading an outdated file and expecting it to include recent source changes.
  • Trying to upload Android XML or i18next JSON through the dashboard instead of the API.
  • Treating custom project sync as branch-aware (it is file-payload based).
  • Forgetting to re-upload after base-language edits.
  • Assuming missing rows will always be preserved even when removed from payload.