You are currently looking at an older section of the website.
Please check the new version of the site at for updated content.

wincent Wincent Strings Utility: localization tool

Wincent Strings Utility

The Wincent Strings Utility is a localization tool derived from stringsUtil by Omni Development. It is a command line tool designed to be called from within Xcode shell script build phases. In its first mode of operation it parses localizable strings files in the development language and transforms them for use with existing localized variants; the three possible transformations are merge, extract and combine (for incremental localization).

In its second mode of operation it can be used to preprocess localized InfoPlist.strings files by scanning them for Info.plist keys and performing substitutions of values such as copyright year and version number. For more information see this plaintext copy of the wincent-stings-util man page.


You can also clone the latest version of the source using Git:

git clone git://

An older version of the repository is kept online for historical reasons only and can be checked out via Subversion:

svn co svn://


Wincent Strings Utility is free software released under the GPL license. If it is useful to you, please consider making a donation.


2.0.1 (29 August 2009)

  • Installer package now triggers a dialog when run on versions of Mac OS X prior to 10.6 Snow Leopard.
  • Source distribution now includes the Wincent Buildtools submodule, so it no longer needs to be fetched separately.

A code-level changelog for this release is available here.

A more detailed log including full commit messages is available here.

2.0 (28 August 2009)

  • Update man page.
  • Now requires Mac OS X 10.6 Snow Leopard.
  • Trim disk footprint by stripping legacy PowerPC code.
  • Fix Garbage Collection.

A code-level changelog for this release is available here.

1.2 (6 January 2008)

  • New --extract and --combine switches for even easier incremental localization.
  • Support recursive substitution when performing preprocessing on InfoPlist.strings files.
  • Use double-hyphens for all switches, instead of the less-orthodox single hyphens previously used.
  • Add checks for duplicate keys within the same file (this is never correct so the user should be notified about it).
  • Stricter parsing of input files when using the --info switch; this allows us to detect malformed input files as well guess the input encoding for files which do not have an explicit BOM (Byte Order Mark).
  • Allow explicit override of output encoding using the new --encode switch.
  • Always include an explicit BOM in the output file.
  • Add installer package for use with Apple's installer.
  • Convert to Objective-C 2.0 and Garbage Collection; as such this release requires Mac OS X Leopard.
  • Migrate source code from Subversion to Git and make corresponding adjustments such as removing the embedded $Id$ number from the built executable.
  • Update build process to use Wincent Build Tools.
  • Add automated test suite using RSpec.

A code-level changelog for this release is available here.

1.1 (17 August 2006)

  • User-visible changes:
    • Released under the GPL (with Omni's permission)
    • Preprocessing support for InpoPlist.strings files
    • Errors and warnings now formatted so as to be picked up automatically by Xcode Build Results window
    • Warn if cannot confirm UTF-16 encoding of input/output files
  • Developer-visible changes:
    • describeScanLocation method (verb) renamed to scanLocationDescription (noun)
    • Fix regression in peekCharacter and scanCharacter methods (always returned NO for last character)

1.0b (19 February 2006)

  • Initial public release.
  • User-visible modifications to Omni stringsUtil:
    • work with InfoPlist.strings files (unquoted key strings)
    • force output to UTF-16 in all cases (required encoding for strings files)
    • executable name is wincent-strings-util (change required by license)
    • man page (required by license)
    • usage now includes copyright info (required by license)
    • upgrade project file to "xcodeproj" format, upgrade and rename target
    • Universal Binary
    • running what(1) on executable produces meaningful output
    • non-zero exit code if writing to output file fails
    • bail more elegantly (catch exceptions) for malformed input files
    • emit warnings to standard error for removed keys
  • Developer-visible changes to Omni stringsUtil:
    • formatting adjustments (trim to fit 80 columns, use GNU99 C syntax)
    • extensive refactoring for readability
    • changes to scanner methods to more closely match Cocoa conventions
    • added assertions