libintl.h defines a preprocessor define for `snprintf` with the
content of `libintl_snprintf` if the C library isn't GNU's
glibc. Therefore `std::snprintf` actually becomes
`std::libintl_snprintf` which doesn't exist. This affects e.g. mingw
and macOS.
The old revision has a serious memory usage issue. For example, on
Windows a 650 KB JSON file results in memory usage of roughly 2 GB of
allocated RAM that won't be freed anymore.
The updated version doesn't have this problem anymore.
Fixes#1631.
Otherwise 64bit values > maximum int64_t are output as signed ones, and
mkvmerge doesn't need to output signed integer values at the moment.
I've also opened an issue for that:
https://github.com/nlohmann/json/issues/151