@iafan iafan released this Feb 1, 2018 · 43 commits to master since this release

Assets 2

This version improves multiple parsers, adds support for newer Qt .TS file format and nested parsing of HTML inside JSON, introduces a new rewrite_source callback and offers numerous other improvements across the board. Here's the full changelog:

  • Fixed a bug when extra item comment would be appended only if the original comment is not blank
  • In interactive console mode, serge help tries to use a pager, e.g. less or more (#39)
  • In POT parser, bypass non-standard comments that other tools may produce (#41)
  • Add summary at the end of the sync command: how many jobs and configs were processed, how many configs and jobs were skipped due to errors, and how many jobs ended abnormally. This will help easily identify issues both from the command line and when analyzing logs
  • JSON parser now supports parsing nested HTML-formatted values (like XML parser already does)
  • PHP/XHTML parser now treats bare HTML strings (with no wrapper tag) as translatable by default, except when they contain PHP tags. This is useful when parsing nested HTML snippets inside XML or JSON
  • Parsing errors in nested HTML values inside JSON or XML are now exposed to the parent parser for proper error reporting
  • test-parser command now accepts --as-object flag to produce a more verbose and self-descriptive output (an array of objects)
  • JSON and XML parsers can now have a nested HTML parser configured via html_parser parameter (one can specify both parser name and its parameters). If this parameter is not provided, parsers fall back to a previous behavior by using parse_php_xhtml with the default parameters as a nested parser
  • New rewrite_source callback to rewrite source strings on the fly before they are passed through the translation pipeline
  • If the parser does not return key names for serge import, it is now possible to use --disambiguate-keys to auto-generate unique key names and do the import
  • Qt Linguist TS Parser has been rewritten as a proper validating XML parser. It now also extracts context name, comments, and supports import mode
  • Translations containing just one '0' symbol are now properly saved to the database
  • Rendering of units with notices/warnings/errors is now fixed in serge import HTML reports
  • parse_js plugin now correctly handles lines with end-of-line comments containing quotes.
  • Git sync plugin now supports clone_params configuration parameter that allows one to pass extra parameters on initial project checkout (useful for e.g. shallow cloning).
  • .PO serializer now normalizes line endings prior to parsing the file. This allows one to import .PO files with Windows-style line endings.

@iafan iafan released this Oct 30, 2016 · 109 commits to master since this release

Assets 2
  • Make TS File serialization pluggable (see #11)
    • .PO file support is now implemented as a serialization plugin
    • .CSV serialization plugin added
  • Fix feature_branch plugin to properly compare strings against the master job,
    not the entire database
  • Fix parse_pot plugin bug in import mode (language would not be passed back
    in a callback in import mode, causing a DB constraint error)
  • Print nice plural separators and show line breaks in strings in import reports
  • JSON parser now accepts source files with relaxed syntax (trailing commas and
    comments) (#13)
  • Fix bug in translation variant counting that would prevent reusing strings
    effectively (incorrectly treating more translations as "uncertain" ones)
  • When MySQL database is initialized, utf8_bin collation is now enforced
  • parse_js plugin can now extract comments at the end of each line
  • Add serge import support for .plist parser (#16)
  • Add serge import support for parse_json and parse_json_keyvalue parsers
  • Improve transform plugin logic
  • Add yaml_kind to the YAML parser to support Rails-specific file format
  • Add leave_untranslated_blank job option to allow cleaning up untranslated
    entries during post-processing; this in turn allows for custom fallback
    mechanisms and also reduces resource file sizes
  • In Git plugin, old branches are automatically pruned to avoid conflicts
    on git fetch
  • JSON and YAML parsers now sort keys alphabetically at parsing time.
    This is to guarantee stable output between multiple runs and between
    different Perl versions (#29)
  • 'before_update_database_from_ts_file' callback has been deprecated in favor of
  • Fix unwanted escaping of quotes/apostrophes inside tag markup embedded in a string
    (e.g. <xliff:g id="...">)
  • Added support for tests that report job validation errors (and compare them
    with reference error messages)
  • Added better error reporting for incorrectly set up jobs, e.g. the ones
    that have empty db_source or db_namespace parameters
  • db_namespace parameter can now contain %ENV:...% macros
  • When job fails, we now move on to the next job in the config
    (previously the entire config would be skipped)
  • Added version information to the CLI via the --version flag (#38)
  • Added support for all escaped characters as defined in .po format (#44)

@iafan iafan released this Apr 20, 2016 · 192 commits to master since this release

Assets 2
  • On OS X, expand ~ to the actual $HOME path in SQLite DB connection string (#1)
  • Accept multiple message entries in append_hint_message plugin (#2)
  • Require JSON::XS (#3)
  • Make serge and tools find their libs when they are symlinked (#4)
  • Fixed: Uppercase letters in language names are unsupported (#5)
  • Accept multiple command entries in run_command plugin (#6)
  • parse_android plugin now supports serge import mode
    (generates string keys for alignment) (#7)
  • parse_pot plugin now supports serge import mode
    (generates string keys for alignment) (#8)
  • Fix performance when reuse_uncertain mode is off (#9)
  • parse_xliff plugin now supports serge import mode
  • Parsers are now aware when they are used in import mode, and can adjust their
    behavior accordingly; one can now run serge test-parser --import-mode <...>
    to test parsers in import mode.
  • Added the ability to specify any arbitrary class name and plugin data for
    test-parser command, which allows one to use this command for any
    custom plugins
  • Added support for %OUTFILE% and %OUTPATH% macros in run_command plugin;
    other macros like %FILE% now work consistently with the rest of the config code
  • Fixed some tests due to broken source files
  • Fixed a regression with job's active parameter not defaulting to YES
  • Added feature_branch plugin that allows one to add strings from multiple sources
    (branches) and exclude duplicate strings.
  • Added log_translation callback that allows one to log/cache translations
  • String context and key is now passed in can_extract callback
  • String key is now passed in get_translation and get_translation_pre callbacks
  • test_language plugin now handles URLs better (doesn't try to
    transliterate them), it allows string expansion (disabled by default),
    and transliteration can now be optionally turned off (it is enabled by default)
  • test_language plugin now won't generate TS files if its save_translations
    option is turned off
  • completeness plugin has got a new bypass_languages option the allows to
    skip its logic for certain languages (this is primarily useful for
    pseudo-localization, see test_language plugin)
  • Caching/lookup algorithm for translations was rewritten, giving a significant
    performance boost when processing new strings, at the expense of loading
    more data into memory (which also can take some time depending on a size of the
  • Fixed USN-based optimization when generating TS files
  • Fixed TS file content hash-based optimization caused by inconsistent UTF-8 handling
    at file save/load time
  • Fixed text unescaping in XML parser (it is now CDATA-aware and is also applied
    for embedded HTML nodes)
  • Fixed typos in embedded documentation

@iafan iafan released this Oct 13, 2015 · 257 commits to master since this release

Assets 2

Initial public release.