Strsync alternatives and similar libraries
Based on the "Tools" category.
Alternatively, view Strsync alternatives based on common mentions on social networks and blogs.
-
Awesome-Design-Tools
The best design tools and plugins for everything 👉 -
R.swift
Strong typed, autocompleted resources like images, fonts and segues in Swift projects -
SwiftGen
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
Lona
A tool for defining design systems and using them to generate cross-platform UI code, Sketch files, and other artifacts. -
Tweaks
An easy way to fine-tune, and adjust parameters for iOS apps in development. -
Xcodes.app
The easiest way to install and switch between multiple versions of Xcode - with a mouse click. -
FBSimulatorControl
idb is a flexible command line interface for automating iOS simulators and devices -
GDPerformanceView-Swift
Shows FPS, CPU and memory usage, device model, app and iOS versions above the status bar and report FPS, CPU and memory usage via delegate. -
LicensePlist
A license list generator of all your dependencies for iOS applications -
ProvisionQL
Quick Look plugin for mobile apps and provisioning profiles -
SourceKitten
An adorable little framework and command line tool for interacting with SourceKit. -
AppDevKit
AppDevKit is an iOS development library that provides developers with useful features to fulfill their everyday iOS app development needs. -
Laurine
Laurine - Localization code generator written in Swift. Sweet! -
DBDebugToolkit
Set of easy to use debugging tools for iOS developers & QA engineers. -
ThisCouldBeUsButYouPlaying
:black_joker: Generate Swift Playgrounds for any library. -
iSimulator
iSimulator is a GUI utility to control the Simulator, and manage the app installed on the simulator. -
Blade
Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more. -
Realm Browser
DEPRECATED - Realm Browser for Mac OS X has been replaced by realm-studio which is cross platform. -
Cookiecutter
A template for new Swift iOS / macOS / tvOS / watchOS Framework project ready with travis-ci, cocoapods, Carthage, SwiftPM and a Readme file -
WatchdogInspector
Shows your current framerate (fps) in the status bar of your iOS app -
SuperDelegate
SuperDelegate provides a clean application delegate interface and protects you from bugs in the application lifecycle -
Swift Package Index
The Swift Package Index is the place to find Swift packages! -
abandoned-strings
Command line program that detects unused resource strings in an iOS or OS X application. -
fastlane-plugin-appicon
Generate required icon sizes and iconset from a master application icon. -
AVXCAssets-Generator
AVXCAssets Generator takes path for your assets images and creates appiconset and imageset for you in just one click
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Strsync or a related project?
README
Supported by Jetbrains Open Source License Program
Automatically translate and synchronize '.strings' files from the defined base language
The basic concept of this python CLI tool is straightforward file name based one-way synchronizer. If you are running, other localized resources will have the same key with automatically translated strings. Of course, string on the key that already exists will not be modified at all.
Requirements
Install
pip install strsync
Enable Google Cloud Translation Python API
Set your account and authentication credentials up with Google's guide for local envirnment.
https://cloud.google.com/translate/docs/reference/libraries#client-libraries-install-python
If you can't use Translation feature, use '-w' option to copy all items from Base language.
$ strsync ./myapp/Resources/Localizations -w
Update Python SSL packages if needed
this is not required for python-2.7.9+
pip install requests[security]
Usage
Naturally, this tool follow standard ISO639 1~2 codes or apple's official document or this tsv table
usage: strsync-runner.py [-h] [-b BASE_LANG_NAME]
[-x EXCLUDING_LANG_NAMES [EXCLUDING_LANG_NAMES ...]]
[-f [FORCE_TRANSLATE_KEYS [FORCE_TRANSLATE_KEYS ...]]]
[-o FOLLOWING_BASE_KEYS [FOLLOWING_BASE_KEYS ...]]
[-w [FOLLOWING_BASE_IF_NOT_EXISTS [FOLLOWING_BASE_IF_NOT_EXISTS ...]]]
[-l CUTTING_LENGTH_RATIO_WITH_BASE [CUTTING_LENGTH_RATIO_WITH_BASE ...]]
[-c [IGNORE_COMMENTS [IGNORE_COMMENTS ...]]]
[-v [VERIFY_RESULTS [VERIFY_RESULTS ...]]]
[-s [INCLUDE_SECONDARY_LANGUAGES [INCLUDE_SECONDARY_LANGUAGES ...]]]
[-i [IGNORE_UNVERIFIED_RESULTS [IGNORE_UNVERIFIED_RESULTS ...]]]
[target path] [only for keys [only for keys ...]]
Automatically translate and synchronize .strings files from defined base
language.
positional arguments:
target path Target localization resource path. (root path of
Base.lproj, default=./)
only for keys Some specified keys for exclusive work. All operations
will work for only that keys therefore other keys will
be ignored. Not specified by default. (default=None)
optional arguments:
-h, --help show this help message and exit
-b BASE_LANG_NAME, --base-lang-name BASE_LANG_NAME
A base(or source) localizable resource
name.(default='Base'), (e.g. "Base" via 'Base.lproj',
"en" via 'en.lproj')
-x EXCLUDING_LANG_NAMES [EXCLUDING_LANG_NAMES ...], --excluding-lang-names EXCLUDING_LANG_NAMES [EXCLUDING_LANG_NAMES ...]
A localizable resource name that you want to exclude.
(e.g. "Base" via 'Base.lproj', "en" via 'en.lproj')
-f [FORCE_TRANSLATE_KEYS [FORCE_TRANSLATE_KEYS ...]], --force-translate-keys [FORCE_TRANSLATE_KEYS [FORCE_TRANSLATE_KEYS ...]]
Keys in the strings to update and translate by force.
(input nothing for all keys.)
-o FOLLOWING_BASE_KEYS [FOLLOWING_BASE_KEYS ...], --following-base-keys FOLLOWING_BASE_KEYS [FOLLOWING_BASE_KEYS ...]
Keys in the strings to follow from "Base.
-w [FOLLOWING_BASE_IF_NOT_EXISTS [FOLLOWING_BASE_IF_NOT_EXISTS ...]], --following-base-if-not-exists [FOLLOWING_BASE_IF_NOT_EXISTS [FOLLOWING_BASE_IF_NOT_EXISTS ...]]
With this option, all keys will be followed up with
base values if they does not exist.
-l CUTTING_LENGTH_RATIO_WITH_BASE [CUTTING_LENGTH_RATIO_WITH_BASE ...], --cutting-length-ratio-with-base CUTTING_LENGTH_RATIO_WITH_BASE [CUTTING_LENGTH_RATIO_WITH_BASE ...]
Keys in the float as the ratio to compare the length
of "Base"
-c [IGNORE_COMMENTS [IGNORE_COMMENTS ...]], --ignore-comments [IGNORE_COMMENTS [IGNORE_COMMENTS ...]]
Allows ignoring comment synchronization.
-v [VERIFY_RESULTS [VERIFY_RESULTS ...]], --verify-results [VERIFY_RESULTS [VERIFY_RESULTS ...]]
Verify translated results via reversed results
-s [INCLUDE_SECONDARY_LANGUAGES [INCLUDE_SECONDARY_LANGUAGES ...]], --include-secondary-languages [INCLUDE_SECONDARY_LANGUAGES [INCLUDE_SECONDARY_LANGUAGES ...]]
Include Additional Secondary Languages. (+63 language
codes)
-i [IGNORE_UNVERIFIED_RESULTS [IGNORE_UNVERIFIED_RESULTS ...]], --ignore-unverified-results [IGNORE_UNVERIFIED_RESULTS [IGNORE_UNVERIFIED_RESULTS ...]]
Allows ignoring unverified results when appending
them.
Examples to use
~/Documents/myapp/myapp/Resources/Localizations$ strsync
~/Documents/myapp/myapp/Resources/Intents$ strsync
Define specific path you want. A parent path of *.lproj(s).
$ strsync ./myapp/Resources/Localizations
$ strsync ./myapp/Resources/Intents
Copy all items from Base language without translation.
$ strsync ./myapp/Resources/Localizations -w
All operations will work for only keys "exclusive key1" "exclusive key2" "exclusive key3". Other keys will be ignored.
$ strsync ./myapp/Resources/Localizations "exclusive key1" "exclusive key2" "exclusive key3"
Excluding japanese, spanish, finnish
$ strsync ./myapp/Resources/Localizations -x ja es fi
Forcefully translate and update by specific keys you want.
$ strsync -f Common.OK Common.Undo "Key name which contains white space"
Forcefully translate and update by All keys.
$ strsync -f (input nothing)
When you want to accept the values in the 'Base'.
$ strsync -o autoenhance flashmode
#before
"flashmode" = "وضع الفلاش";
"flashmode.auto" = "السيارات";
"flashmode.on" = "على";
"autoenhance" = "تعزيز السيارات";
#after
"flashmode" = "Flash Mode";
"flashmode.auto" = "السيارات";
"flashmode.on" = "على";
"autoenhance" = "Auto-Enhance";
If you add an option -v or --verify-results, String similarity of the reversed translation result for each language will be displayed.
$ strsync (...) -v
el
Hi: Hi -> Γεια σου -> Hi, Matched: 100%
fr-CA
Hi: Hi -> Salut -> Hello, Matched: 50%
id
Hi: Hi -> Hai -> Two, Matched: 0%
fr
Hi: Hi -> Salut -> Hello, Matched: 50%
uk
Hi: Hi -> Привіт -> Hi, Matched: 100%
hr
Hi: Hi -> Bok -> Book, Matched: 0%
da
Hi: Hi -> Hej -> Hi, Matched: 100%
ja
Hi: Hi -> こんにちは -> Hello, Matched: 50%
he
Hi: Hi -> היי -> Hey, Matched: 50%
ko
Hi: Hi -> 안녕 -> Hi, Matched: 100%
sv
Hi: Hi -> Hej -> Hi, Matched: 100%
es-MX
Hi: Hi -> Hola -> Hello, Matched: 50%
sk
Hi: Hi -> ahoj -> Hi, Matched: 100%
zh-CN
Hi: Hi -> 你好 -> How are you doing, Matched: 50%
or if you add --ignore-unverified-results [Integer, Percentage (0~100) (default=0)], If the similarity of each reversed translation result is under the given value, that string will be skipped(ignored).
ex)
strings will be skipped if its text similarity from reversed translation result is under 50
$ strsync (...) --ignore-unverified-results 50
el
Hi: Hi -> Γεια σου -> Hi, Matched: 100%
fr-CA
(Ignored) Hi: Hi -> Salut -> Hello, Matched: 50%
id
(Ignored) Hi: Hi -> Hai -> Two, Matched: 0%
fr
(Ignored) Hi: Hi -> Salut -> Hello, Matched: 50%
uk
Hi: Hi -> Привіт -> Hi, Matched: 100%
hr
(Ignored) Hi: Hi -> Bok -> Book, Matched: 0%
da
Hi: Hi -> Hej -> Hi, Matched: 100%
ja
(Ignored) Hi: Hi -> こんにちは -> Hello, Matched: 50%
he
(Ignored) Hi: Hi -> היי -> Hey, Matched: 50%
ko
Hi: Hi -> 안녕 -> Hi, Matched: 100%
sv
Hi: Hi -> Hej -> Hi, Matched: 100%
es-MX
(Ignored) Hi: Hi -> Hola -> Hello, Matched: 50%
sk
Hi: Hi -> ahoj -> Hi, Matched: 100%
zh-CN
(Ignored) Hi: Hi -> 你好 -> How are you doing, Matched: 50%
Utilities
There are some additional scripts to help your workflow with strsync.
*Note that all licence references and agreements mentioned in the Strsync README section above
are relevant to that project's source code only.