Skip to content

Commit 5b08706

Browse files
should be fine now maybe possibly
1 parent 458da8b commit 5b08706

4 files changed

Lines changed: 123 additions & 47 deletions

File tree

build/scripts/commands/general.js

Lines changed: 45 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/scripts/translation.js

Lines changed: 59 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ Vars.net.handleServer(SendChatMessageCallPacket, (connection: NetConnection, pac
157157

158158
if (filtered == null) return;
159159

160-
translation.handleMessage(player, message);
160+
translation.handleMessage(player, message, false);
161161
}else if (response.type != CommandHandler.ResponseType.valid){
162162
const text = Vars.netServer.invalidHandler.handle(player, response);
163163

src/translation.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ Copyright © BalaM314, 2026. All Rights Reserved.
33
This file contains a translation client implementation for https://github.com/TheRadioactiveBanana/translate-api-wrapper
44
*/
55

6-
import * as api from "/api";
76
import { translationApiToken, translationApiUrl } from "/config";
87
import { FishPlayer } from "/players";
98
import { 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

142146
export 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

Comments
 (0)