Translate first, approve later
The moderation queue now carries a Translate link, so you can read a pending post in your own language before you pass judgment. The translator also stops hiding which language it choked on.

You open the moderation queue and a page of twenty pending posts is waiting, oldest first. The German one now has Translate beside Star and Quote. Click it and the post swaps to English with "Translated from German" underneath and "Show original" to switch back. The post stays pending. You have not approved a thing.
Credit paulinevos, who wired the moderation queue into the translation cache. Queue pages now load translations for pending posts as well as approved ones, and the background language detector now picks up pending posts too, retrying three times at one minute and then ten. Only admins can ask. Anyone else, including the author, gets not found. Results land in the seven-day cache, keyed on a hash of the post text, so approving a post leaves it ready for readers.
The other fix shows up when the translator stumbles. If the model answers with a language code the site doesn't know, you now get "The translation service returned an unsupported source language. Try again." instead of the old shrug. The browser reads that message off the failed response and toasts it. The provider's raw reply stays hidden.
There is one catch. The site checks that code against its own language list, so a model that writes back de-DE for a German post gets called unsupported. You get the new error on a post that is plainly German. A retry only helps if the model shortens the code to de.
Key files · #607
- app/
Services/ CommitTranslations.php - app/
Http/ ModerationController.phpControllers/ - app/
Http/ CommitTranslationController.phpControllers/ - app/
Http/ CreateCommitTranslationRequest.phpRequests/ - app/
Actions/ CreateCommitTranslation.php - app/
Jobs/ DetectCommitLanguage.php - resources/
js/ commit-translation.tsxcomponents/ - app/
Exceptions/ CommitProcessingFailed.php