TranslationUpdater
Keeps a downloaded language file current, the way installed content packages are kept current.
The active language is checked shortly after startup and every 24 hours. The request carries the ETag of the copy already held, so an unchanged file costs a 304 and no body. A changed file is parsed and kept as <language>.csv.update. It is merged into the live file on the next restart or /em reload (TranslationsConfigFields), because the running plugin holds the live file in memory and writes it back.