Well… from my understanding it’s kind of 4 part deal… 5 if you count the actual translation coding in the source. 1) Each string to be translated calls the tr() function in the source. 2) Then the lupdate utility is run ( either in a command line or directly in Creator). This produces the ts files that linguists can then edit the translations for. 3) Files are translated… could be done by anyone or a service like Transfix. 4) The ts files are the run through lrelease, which converts them to the qm binary files used by the app to look up and replace the translations on the fly when a language is changed. 5) The qm files are pushed to the repo. I can do 1, 2, 4, or 5… maybe some (3) French translations.
In any case the translations are dependent on the availability of people to translate to a given language.