# Translate Toolkit 2.4.0

Released on 24 June 2019

This release contains improvements and bug fixes.

## Changes

### Formats and Converters

- PO

  - Allow unicode in PO headers (issue 3896).

  - Improve finding out newline format for a file.

  - Strip UTF-8 BOM from input (issue 1640).

- XLIFF

  - Adjustments on how output is indented (issue 3424).

- Properties

  - Do not fail when parsing empty file.

- Android resources

  - Multiple adjustments so output is closer to Android Studio’s.

- YAML

  - Switched to ruamel.yaml to simplify codebase and support YAML 1.2.

  - Added support for Ruby plurals.

  - Fixed handling dict in list (issue 3895).

  - Fixed parsing of empty YAML file.

- JSON

  - Fixed serialization of JSON arrays.

  - Placeholders are now kept in WebExtension dialect round trip conversion.

- RESX

  - Several improvements on formatting to align with Visual Studio’s output.

- TS

  - Improved tags indentation.

  - Added support for new vanished type.

- Flat XML

  - Added support for this new format including flatxml2po and po2flatxml converters (issue 3776).

- CSV

  - No longer hardcode escape character (issue 3246).

  - Rewrote default dialect to make it more flexible.

- web2py

  - Updated converters code.

- Subtitles

  - Initialize duration on subtitle unit __init__.

### Tools

- Tmserver: Fixed execution of unit API on Python 3.

### Languages

- Updated plural definitions to CLDR 35.0.

- Removed trailing semicolon in Romanian plural definition.

### Placeables

- Allow any character for Python mapping keys in PythonFormattingPlaceable.

### API changes

- Altered storage code to have a consistent API for removenotes.

- Removed dependency on diff-match-patch.

- Removed embedded CherryPy wsgi server.

- Removed deprecated has_key implementation.

### General

- Dropped no longer supported Python 3.3 and Python 3.4.

- Minor docs improvements.

- Updated requirements.

- Added and updated tests.

## Contributors

This release was made possible by the following people:

Michal Čihař, Leandro Regueiro, Vinyl Darkscratch, Vitaly Novichkov, Stuart Prescott, Alex Tomkins, Darío Hereñú, BhaaL.

And to all our bug finders and testers, a Very BIG Thank You.