Python package for a xcode strings file to a swift localized string file

codegenerator, ios, macos, python, strings, swift, xcode
pip install pyxstr2swift==0.1.0



PyPI version PyPI pyversions MIT license


Python package for a Xcode strings file to a swift localized string file

For example,


  Created by Keunhyun Oh on 2018. 8. 15..
  Copyright © 2018년 Keunhyun Oh. All rights reserved.

test = "test_value";


import Foundation

struct Localizable {
  static let test = NSLocalizedString("test", tableName: "Localizable", comment: "") // test_value

It is available in python2.7, 3.4, 3.5, 3.6, and 3.7

foo@bar:~$ pip install -U pyxstr2swift
foo@bar:~$ xstr2swift [-h] [--st STRUCTNAME] [-f] [-m] [-v] source target
foo@bar:~$ python -m pyxstr2swift.xstr2swift [-h] [--structname STRUCTNAME] [-f] [-m] source target

To use it in Xcode build pharses,

  1. Install this module using python PIP. If pip is not installed on your device, this command helps you.
foo@bar:~$ brew install python
foo@bar:~$ pip3 install --upgrade pyxstr2swift


install anaconda and set configures

  1. Add a output swift file to your project
  2. Add a strings file to your project and write string keys and values
  3. Add Run Script to build pharses before Compile Sources
  4. Change Shell /bin/sh to /bin/bash (or /bin/zsh)
  5. Write shell command. For example,
#If you use anaconda, anaconda3/bin should be added to path
#export PATH="${HOME}/anaconda3/bin:$PATH"
pip install --upgrade pyxstr2swift
xstr2swift -f -m "${SRCROOT}/Your project/en.lproj/Localizable.strings" "${SRCROOT}/Your project/Localizable.swift"

My project's shell command is that

# .bash_profile includes export PATH="${HOME}/anaconda3/bin:$PATH"
source ~/.bash_profile

# a conda env is already created that name is iosdev
conda activate iosdev
pip install --upgrade pyxstr2swift
xstr2swift -f -m "${SRCROOT}/My Project/en.lproj/Localizable.strings" "${SRCROOT}/My Project/Localizable.swift"
conda deactivate
  1. That' all! build Your project now!
usage: xstr2swift [-h] [-st STRUCTNAME] [-f] [-m] [-v] source target

pyxstr2swift needs arguments

positional arguments:
  source                source: a strings file
  target                target: a swift file

optional arguments:
  -h, --help            show this help message and exit
  -st STRUCTNAME, --structname STRUCTNAME
                        structname: a struct name in a target file
  -f, --force           force to write a target file if already exist
  -m, --comment         values are added as comment
  -v, --verbose         Display console output


unittest on python 2.7, 3.4, 3.5, 3.6, 3.7