# 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.