16972 localize api v3

https://community.openproject.org/work_packages/16972
https://community.openproject.org/work_packages/17320
https://community.openproject.org/work_packages/17582
As discussed, this should be done differently, but doing it differently is out of scope for now. Merging this now and will hate myself later.