All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Drop support for ruby <3.1
- new option
--skip-value-stripping
that disable the leading and trailing whitespaces removal on wording values. The value stripping was introduced with version 6.0.0.
- Updated dependencies
- Increase number of retries to 5 and timeout delay to 120s when accessing Google APIs. This reduces the amount of rate limit error when using private Google spreadsheet.
- new option (iOS only)
--auto-escape-percent
that escapes % character in wording. This option should be used if the wording is intended to be used withString(format:)
.
- Remove extra spaces before and after key/translation contents
- skip lines starting with a
#
character - new option
-l
or--locales
to export only a subset or locales - Separate csv parse responsibility between key parser and csv parser
- use Rubocop to detect coding style offenses (also in github workflow)
- print warning log when a value is replaced during merge
- parse csv in 2 steps : first analyze keys and keep them in a map, second add translations to keys
- do not store empty values during parse if
-x
option is active - handle duplicate keys while parsing csv instead of while exporting for a platform
- BREAKING CHANGE : the way to provide service account information is no longer to set GCLOUD_CLIENT_SECRET with the content of the service account configuration. Now you need to provide the path to the configuration using the environment variable GOOGLE_APPLICATION_CREDENTIALS
- we no longer access to spreadsheet cells using GSheet v4. Now we downloaded all the relevant sheets and then we parse file contents like normal csv files. We use the exponentiel retry feature provided by google with a maximum of 3 attempts more info here. We noticed we had download error for 6 or more sheets in a spreadsheet.
- locale wording stores separately each type of wording. This allows to export each wording type concurrently if you want to
- no more plaform interactor. It has been replaced with generated file interactors. We still have an ios interactor because there are multiple files to export.
- All templated serializers now share a common parent :
TemplatedSerializer
- Isolate the process to ensure a translation is correctly formatted for a platform in a new class type
sanitizers
. They can be tested separately.
- no more GSpreadsheetOptions. It is handled directly in request
- Added new option (-x) to bypass keys with empty values for iOS only in PR #78 by ThomasEsterlin
- Drop support for Ruby >= 2.3, < 2.7
- Fix an issue with percent export in PR #74
- Do not export empty translation on Android in PR #72
- Fix error warning when spreadsheet is empty. Fix #58 in PR #69
- Add warning messages when input is corrupted. Fix #59 in PR #69
- Fix performance issue and add warning messages. Fix #61 in PR #69
- Update deprecated
google-api-client
gem. Fix #63 in PR #70
- Add
NFCReaderUsageDescription
to InfoPlist keys for iOS
- Support Ruby 3.x
- Fix google spreadsheet sheet id comparison with sheet_ids option value
- Fix csv file type check (also add compatibility with macOS Big Sur)
- Use default terminal color for debug log
- Fix CSV detection and remove dependency to MimeType gem
- Fix drive key detection in options
- delete downloaded files even when any of them is a CSV file
- Precedence to csv files. Only CSV files will be exported if both csv file and google spreadsheet are provided
- In case of multiple CSVs or sheet ids, you should be aware that all sources will be merged. By default the merge policy to keep the first wording translation for each key
- New architecture. Separate export process responsibilities in dedicated classes. Fixes #48 , #20
- it is now possible to provide an output path path that does not exist
- if a service account configuration is provided, there won't be any files downloaded
- it is now possible to provide a sheet id list
ActiveSupport::TestCase
is now the base class of test classes- Only global constants are in the constant class
- Replaced the Runner class file by a cli class
- tests for ad_localize class are restricted to the minimum
- No more file generated when there are no data to export
- Less verbose logs. Now, they only describe the different steps of the export process
- do not add
InfoPlist
translations to androidstrings.xml
- -e, -export_all_sheets option export all sheets from a spreadsheet by @sjcqs
- -m, --merge-option to select the merge policy (
keep
orreplace
) by @sjcqs - it is now possible to select which locales you want to export
- key class is tested
- option handler is tested
- execute_export_request is tested (only csv)
- export request is tested
- dedicated folder for fixture files
- add ability to use AdLocalize in a Ruby program
- add documentation for JSON and YAML support. Fixes #23
- comments will now be added to iOS and Android plural files
- do not remove existing files in export output folder. Fixes #40
- no more option -a option to indicate that a service account configuration will be provided. If set, the environment
variable
GCLOUD_CLIENT_SECRET
content will be used - no more substitution of empty wording with by "Missing Translation" when using the option -d
- no more Makefile, the Rakefile is sufficient. Use
bundle exec rake -T
to display the available commands - no more check for ordered interpolation variables in translations
- add documentation for service account usage by @sjcqs
- add compatibility with activesupport 6 by @Hugo-Hache
- add support for private spreadsheet using google service acccount by @sjcqs. Fixes #31
- add makefile for easier testing by @felginep
- improve error message to have useful information in case of google spreadsheet use by @felginep. Fixes #27
- platform folder is no longer generated when there is only one platform selected. The files are directly generated in the output path. By @felginep. Fixes #29
- raise error when google spreadsheet key is invalid by @felginep
- auto escape strings in Localizable.strings by @felginep. Fixes #26
- trim keys to prevent user error by @felginep. Fixes #16
- Rails folks, @epaillous has improved the YAML support. You can now have multi-level wording.
- improve React support using keys with dots to generate nested JSON files by @epaillous
- Add tests to compare reference exports by @felginep
- [iOS only] Handle adaptive strings by @felginep
- Fix issue with Info.plist format by @felginep
- Do not export plurals for android when there are no values by @felginep
- [iOS only] Info.plist generation support by @felginep
- No more warning log for empty lines by @felginep
TODO
TODO
TODO
TODO
TODO
TODO