@@ -3,7 +3,6 @@ Copyright © BalaM314, 2026. All Rights Reserved.
33This file contains a translation client implementation for https://github.com/TheRadioactiveBanana/translate-api-wrapper
44*/
55
6- import * as api from "/api" ;
76import { translationApiToken , translationApiUrl } from "/config" ;
87import { FishPlayer } from "/players" ;
98import { removeFoosChars } from "/utils" ;
@@ -25,26 +24,31 @@ export function initializeTranslation(){
2524 const language = getLanguageFromCache ( fishPlayer . language || e . player . locale ) ;
2625 if ( fishPlayer . language != language . code ) {
2726 fishPlayer . language = language . code ;
28- void api . setFishPlayerData ( fishPlayer . getData ( ) , 1 , true ) ;
2927 }
3028
3129 if ( languageCache . isEmpty ( ) ) {
3230 //shouldn't ever happen, but by chance it does
33- fetchLanguageCache ( true ) ;
31+ fetchLanguageCacheCallback (
32+ ( ) => setPlayerLanguageEntry ( e . player , language )
33+ ) ;
34+ } else {
35+ setPlayerLanguageEntry ( e . player , language ) ;
36+
3437 }
3538
36- setPlayerLanguageEntry ( e . player , language ) ;
3739 } ) ;
3840
3941 Events . on ( EventType . PlayerLeave , e => {
4042 removePlayerLanguageEntry ( e . player ) ;
4143 } ) ;
4244}
4345
44- export function handleMessage ( sender : Player , message : string ) {
45- if ( languageCache . isEmpty ( ) ) {
46+ export function handleMessage ( sender : Player , message : string , noRecursion : boolean ) {
47+ if ( languageCache . isEmpty ( ) && ! noRecursion ) {
4648 //shouldn't ever happen, but by chance it does
47- fetchLanguageCache ( true ) ;
49+ fetchLanguageCacheCallback (
50+ ( ) => handleMessage ( sender , message , true )
51+ ) ;
4852 }
4953
5054 sender . sendMessage ( Vars . netServer . chatFormatter . format ( sender , message ) ) ; //return to sender immediately, they don't need to see their own translation
@@ -140,10 +144,6 @@ function sendTranslatedMessage(sender: Player, originalMessage: string, translat
140144}
141145
142146export function getLanguageFromCache ( code :string ) :Language {
143- if ( languageCache . isEmpty ( ) ) {
144- fetchLanguageCache ( true ) ;
145- }
146-
147147 const normalizedCode = code . toLowerCase ( ) ;
148148 if ( normalizedCode == "none" || normalizedCode == "off" ) {
149149 return { code : "none" , name : "Off" } ;
@@ -182,3 +182,10 @@ function fetchLanguageCache(blockUntilResponse:boolean) {
182182 } ) ;
183183 } ) ;
184184}
185+
186+ function fetchLanguageCacheCallback ( callback : ( ) => void ) {
187+ Threads . daemon ( ( ) => {
188+ fetchLanguageCache ( true ) ;
189+ Core . app . post ( ( ) => callback ( ) ) ;
190+ } ) ;
191+ }
0 commit comments