Note that I follow Semantic Versioning which means that the
major (first) number in a version like
1.0.0 will only change if there’s either a breaking change with something like the config file format (users with the old version then wouldn’t be able to open the file saved with the new version), or if there’s a significant change in the usage flow of the app (so users need to change their habits). A migration guide will be provided on this page for every breaking change.
🐞 [1.1.1] - 2022-11-03
- Escaping the key portion in line number search for Stringsdict files properly to prevent a project setup error. #58 (Thanks to Franco!)
- Exclude more types of Xcode-managed Strings files from being included in the generated code. #49 (Thanks to James!)
✨ October ‘22 Feature Update: ✨ [1.1.0] – 2022-10-29
- Officially added support for macOS 13 “Ventura” (tested & fixed some minor issues).
- Added support for generating Objective-C compatible code for safely accessing localized Strings. Enable in the ‘Generated Code’ pane. #26 – The Add Translation workflow will now automatically insert Objective-C code when triggered from within an Objective-C file.
- Automatic detection of projects containing Objective-C code (to set the new option) for a streamlined project setup.
- Improved the behavior of path search text fields in the config file UI to not interfere while typing.
- Fixed hangs during text entry in config file UI on macOS Ventura. [#37] (Thanks to James!)
- Fixed ‘Interface Builder Ignore Flags’ not being editable in config file UI.
- Fixed changing translation texts in Add Translation view in the middle of texts sending cursor to end.
🐞 [1.0.4] - 2022-10-21
- Added support for regional Microsoft Translator resources, simply provide your region in the ‘Set up API Keys’ form in app settings. #51 (Thanks to Nick & Liviu!)
- Changed keyboard shortcut for opening the Projects Browser from Cmd+P to the more common Cmd+0. #48 (Thanks to @gaige!)
- Fixed unaligned texts in the help menu. #46 (Thanks to @gaige!)
- Fixed the default icon not being pre-selected in the Settings.
🐞 [1.0.3] - 2022-10-16
- Welsh was added to the supported languages, including full pluralization support! #32 (Thanks to James!)
- Added current tier info to the environment info when reporting bugs to help reproducing bugs.
- Improved the error message to point to the current solution for non-Base-localized Storyboard/XIB/Intent files. #41
- Fixed empty source translations preventing bulk machine translations from completing. #20 (Thanks to @lukemmtt!)
- Fixed ignoring the ignore flags (e.g.
#remafox-ignore) for extracting Strings from Storyboard/XIB files. #21 (Thanks to @lukemmtt!)
- Improved the naming of the type generated for keys like
%1$@ %2$@from being
- Fixed a non-closeable Plan Chooser window showing on each app start when installing the app with a pre-purchased plan. #40 (Thanks to James!)
- Fixed the “Insert” buttons in Add Translation window being disabled when on the Max tier. #25 (Thanks to @gaige & James!)
🐞 [1.0.2] - 2022-10-09
- Added links to learning material videos in Projects Browser for both project setup & add translation best practices.
- Fixed an issue with the app icon switcher not updating in Projects Browser + added a hint on setting icon failure.
- Fixed an issue where the limits check wouldn’t work properly on first config file open.
- Fixed an issue with the build script not pointing to the home directory properly, making the build script not recognize the CLI tool.
🐞 [1.0.1] - 2022-10-07
- New ‘Help’ menu item with a direct link to leave a rating on the App Store.
- Fixed an issue where no error details would be presented when enum generation failed in project setup, getting stuck in the process.
✨ Public Release: ✨ [1.0.0] - 2022-10-05
- Updated DeepL supported languages to include Indonesian, Turkish, and Ukrainian.
- Improved the “Add Translation” window completion experience by hiding app and switching to Xcode rather than quitting.
- Fixed an issue where no error details would be presented when counting keys in config file failed.
🐞 [1.0.0-beta.4] - 2022-09-20
- Added “Show Projects Browser” & “Show Add Translation” buttons to “Window” menu bar to help with some window management issues.
- Added a new option to configure if an empty line should be placed between every two keys in a
.stringsfile or not.
- Reverted Add Translation window to quit the entire app again on Cancel or Insert button press to prevent duplicate windows.
- The list of supported languages in source language selection dropdowns is now sorted alphabetically.
- Improved automatic detection of multiple subpaths on setup and adding
/suffix to folders for less confusion.
- Improved performance of application in several places by preventing unnecessary re-computes of SwiftUI views.
.remafoxconfig file structure has received new
appleStringsFilesConfigoptions. An automatic migration is available (only in this beta release!) – just open all your config files once and save them right away to upgrade.
- Fixed an issue with machine-translation not finding
.strings(dict)files when the language forlders are in same path as
.remafoxconfig file. (Thanks to Ulf)
- Fixed an issue that could lead to a crash during machine-translation with
.lprojpaths with invalid lang codes.
- Fixed an issue in the project browser that could delete the wrong project in the list after confirming the delete.
- Fixed an issue where editing a
.stringsdictfile from Xcode would lead to a different indentation format than when produced by ReMafoX.
- Fixed an issue that rendered some leftover SF Symbols in Add Translation text views incorrectly.
- Fixed an issue with multi-line translation values in the source language leading to compiler errors in the generated Swift file.
🐞 [1.0.0-beta.3] - 2022-09-01
- A new App Icon Switcher in the app’s settings allows users to select their preferred app icon design & color.
- A new
remafox translatesubcommand in the CLI tool completes the build script by adding a machine-translation step. (Thanks to Ulf)
- Added sound effects on a few specific success or error actions, such as project setup completion or occurrence of an error.
- A new option in the app’s settings for turning off app sound effects for users who prefer no sound effects.
- A new error message with a helpful text is shown on pressing a project in browser when the config file was moved. (Thanks to Nico!)
- Improved relevance of web searches of users by changing error code separator from ‘-‘ to ‘x’.
- Simplified the wording of Help menu entries to a shorter & more familiar terminology.
- Changed the temporary app icon to the final design after 2 Twitter surveys.
- Improved setup for developers opening a pre-configured project: The open panel should now always show the right project root path.
- Moved ‘Copy code’ button into the code box for a more intuitive place to find it. (Thanks to Nico!)
- Adjusted color of multi-steps tutorial page controls to look less like a clickable button. (Thanks to Nico!)
- Changed the app accent color from a greenish color to be more blue, based on the new default app icon. (Thanks to Nico!)
.remafoxconfig file structure has received a new
configFilePathfield. An automatic migration is available (only in this beta release!) – just open all your config files once and save them right away to upgrade.
- Removed extra emphasis on “Resources Enum File Path” text field in config file to simplify information hierarchy. (Thanks to Nico!)
- Fixed an issue where the machine translation would be executed before normalization, leading to the possibility of temporarily untranslated keys. (Thanks to Ulf)
- Fixed an issue which prevented the machine translation results view from being shown when started from config file. (Thanks to Ulf)
- Fixed an issue that could lead to a crash in some language combinations within the smart mapping logic when translating pluralized Strings.
- Fixed the build script showing an invalid relative path to the config file by calculating relative path from project if available. (Thanks to Ulf)
- Fixed an issue where the build script could fail with an
Error Code: RWF-Xstating ‘data couldn’t be read because it is missing’ even if it wasn’t. #3 (Thanks to Vasiliy)
- Fixed an issue that could prevent a translation text field receiving user input from the user after pressing ‘Rescan’ button in add translation view.
- Fixed an issue with jumping to a next language text field via pressing ‘tab’ on pluralized text entry in add translation view.
- Fixed an issue that prevented the default indentation style for new projects to be ‘4 spaces’ (it defaulted to ‘3 spaces’ instead).
- Fixed an issue that rendered SF Symbols in text views incorrectly.
- Fixed an issue where special characters in machine-translated texts would not be correctly escaped in
.stringsfiles, leading to a build error.
- Fixed an issue which could lead to a crash on project setup in projects with Base-localized Storyboard/XIB files.
🐞 [1.0.0-beta.2] - 2022-07-24
- Warns when config file format has higher version than currently supported with hint to upgrade.
- Added automatic search for Xcode projects and a picker to select one. This helps detect the supported languages more reliably. (Thanks to Holger!)
- Improved formatting of Xcode integration instructions.
- Widened click area for expandable disclosure groups (such as ‘Show Explanation’) from triangle to full title. (Thanks to Ulf)
- Changed the title of diclosure groups to state ‘Hide’ instead of ‘Show’ when they are in expanded state.
- Made the settings window size smaller to fit the currently small amount of options.
- The add translation window no longer quits the entire app but hides all windows instead on Cancel or Insert button press.
- Changed recommended ‘Add translation’ shortcut to ⌥⌘L from ⌥L which is used for ‘@’ in common keyboard layouts like German.
- Changed the ‘Copy’ button title to ‘Copy Code’ to make it clear what is being copied in Build Script walkthrough. (Thanks to Nico!)
- Hidden detailed explanation behind disclosure group in last step of Build Script walkthrough for less text. (Thanks to Nico!)
- Removed potentially confusing different doc sample language setting, always using source language now.
- Removed the “New” item menu bar entries & window tabbing support to prevent confusion with window management.
- Removed the need to specify if the provided DeepL auth key is for a Free or a Pro plan. Auto-detecting based on key instead.
- Removed SF Symbol icons that were not showing properly for the about menu entry and help menu entries.
- Fixed an issue with Strings(dict) files not being updated on search path changes after initial setup.
- Fixed an issue where a non-existent Strings(dict) file could be selected by default in add translation window.
- Fixed an issue with source language chooser being empty when localized files are placed at projects root. (Thanks to Ulf!)
- Fixed an issue where contents from Storyboard/XIB-related Strings files would be included into the generated resources enum.
✨ Beta Release: ✨ [1.0.0-beta.1] - 2022-07-07
List of Features in this Beta
- Add new localizable Strings to your Strings files without ever leaving your Swift file in Xcode (Free)
- Machine-translate your localizations to all ~40 languages supported also by iOS using Microsoft or DeepL services (Free, but services not included)
- Safely access translations in code using generated Swift enums for auto-completion & compiler checks (Free)
- Lint your Strings files for empty translations or duplicate keys and show in-line warnings in Xcode (Free)
- Incrementally update your base-localized Storyboard’s or XIB’s related Strings files (Free)
- Normalize your Strings by sorting keys alphabetically & harmonizing with a selected source language (Free)
- Easily add new pluralized localizable Strings to your Stringsdict files without leaving Xcode (Paid)
- Easily machine-translate pluralized localizable Strings with smart language-rules-aware pluralization counts (Paid)
Improvements over BartyCrouch
- A new config file format which can be edited with an intuitive visual editor (no
- A new “Preview matching files” button to conveniently simulate a files search & adjust paths accordingly based on results
- An explanation for every single configurable option for more confidence in adjusting the config to your needs
- A built-in SwiftUI-compatible enum generator with lots of customization options (no need for SwiftGen for Strings)
- The API keys for machine translations services are no longer stored in the config file (no secrets in Git)
- A built-in project scanner to provide smarter defaults for a quick start – including a BartyCrouch migrator (read-only)
- Multiple built-in step-by-step guides for easier integration with Xcode
- Adding new localizations no longer breaks Xcodes edit history thanks to a built-in Xcode Source Editor extension
Planned for the Future
- Easy way to send translations to translators & integrate their provided translations
- Synchronize translations between Android & iOS platforms of the same app
- Provide a glossary of reviewed common Strings (to improve machine-translated apps)
- UI/Unit tests integration to provide context screenshots for keys for translators
- … and much more!