Merge branch 'develop' of github.com:thecodingmachine/workadventure into pre-compile-front
This commit is contained in:
commit
d1a88dd375
@ -8,7 +8,6 @@ import type { ButtonClickedEvent } from "./Events/ButtonClickedEvent";
|
|||||||
import { ClosePopupEvent, isClosePopupEvent } from "./Events/ClosePopupEvent";
|
import { ClosePopupEvent, isClosePopupEvent } from "./Events/ClosePopupEvent";
|
||||||
import { scriptUtils } from "./ScriptUtils";
|
import { scriptUtils } from "./ScriptUtils";
|
||||||
import { isGoToPageEvent } from "./Events/GoToPageEvent";
|
import { isGoToPageEvent } from "./Events/GoToPageEvent";
|
||||||
import { isCloseCoWebsite, CloseCoWebsiteEvent } from "./Events/CloseCoWebsiteEvent";
|
|
||||||
import {
|
import {
|
||||||
IframeErrorAnswerEvent,
|
IframeErrorAnswerEvent,
|
||||||
IframeQueryMap,
|
IframeQueryMap,
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { coWebsiteManager, CoWebsite } from "../WebRtc/CoWebsiteManager";
|
|
||||||
import { playersStore } from "../Stores/PlayersStore";
|
import { playersStore } from "../Stores/PlayersStore";
|
||||||
import { chatMessagesStore } from "../Stores/ChatStore";
|
import { chatMessagesStore } from "../Stores/ChatStore";
|
||||||
import type { ChatEvent } from "./Events/ChatEvent";
|
import type { ChatEvent } from "./Events/ChatEvent";
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
import { onDestroy, onMount } from "svelte";
|
import { onDestroy, onMount } from "svelte";
|
||||||
import { EmojiButton } from "@joeattardi/emoji-button";
|
import { EmojiButton } from "@joeattardi/emoji-button";
|
||||||
import { isMobile } from "../../Enum/EnvironmentVariable";
|
import { isMobile } from "../../Enum/EnvironmentVariable";
|
||||||
|
import LL from "../../i18n/i18n-svelte";
|
||||||
|
|
||||||
let emojiContainer: HTMLElement;
|
let emojiContainer: HTMLElement;
|
||||||
let picker: EmojiButton;
|
let picker: EmojiButton;
|
||||||
@ -15,10 +16,31 @@
|
|||||||
rootElement: emojiContainer,
|
rootElement: emojiContainer,
|
||||||
styleProperties: {
|
styleProperties: {
|
||||||
"--font": "Press Start 2P",
|
"--font": "Press Start 2P",
|
||||||
|
"--text-color": "whitesmoke",
|
||||||
|
"--secondary-text-color": "whitesmoke",
|
||||||
|
"--category-button-color": "whitesmoke",
|
||||||
},
|
},
|
||||||
emojisPerRow: isMobile() ? 6 : 8,
|
emojisPerRow: isMobile() ? 6 : 8,
|
||||||
autoFocusSearch: false,
|
autoFocusSearch: false,
|
||||||
style: "twemoji",
|
style: "twemoji",
|
||||||
|
showPreview: false,
|
||||||
|
i18n: {
|
||||||
|
search: $LL.emoji.search(),
|
||||||
|
categories: {
|
||||||
|
recents: $LL.emoji.categories.recents(),
|
||||||
|
smileys: $LL.emoji.categories.smileys(),
|
||||||
|
people: $LL.emoji.categories.people(),
|
||||||
|
animals: $LL.emoji.categories.animals(),
|
||||||
|
food: $LL.emoji.categories.food(),
|
||||||
|
activities: $LL.emoji.categories.activities(),
|
||||||
|
travel: $LL.emoji.categories.travel(),
|
||||||
|
objects: $LL.emoji.categories.objects(),
|
||||||
|
symbols: $LL.emoji.categories.symbols(),
|
||||||
|
flags: $LL.emoji.categories.flags(),
|
||||||
|
custom: $LL.emoji.categories.custom(),
|
||||||
|
},
|
||||||
|
notFound: $LL.emoji.notFound(),
|
||||||
|
},
|
||||||
});
|
});
|
||||||
//the timeout is here to prevent the menu from flashing
|
//the timeout is here to prevent the menu from flashing
|
||||||
setTimeout(() => picker.showPicker(emojiContainer), 100);
|
setTimeout(() => picker.showPicker(emojiContainer), 100);
|
||||||
|
@ -104,13 +104,13 @@
|
|||||||
>
|
>
|
||||||
<option value={40}
|
<option value={40}
|
||||||
>{isMobile()
|
>{isMobile()
|
||||||
? $LL.menu.settings.gameQuality.short.minimum()
|
? $LL.menu.settings.gameQuality.short.small()
|
||||||
: $LL.menu.settings.gameQuality.long.minimum()}</option
|
: $LL.menu.settings.gameQuality.long.small()}</option
|
||||||
>
|
>
|
||||||
<option value={20}
|
<option value={20}
|
||||||
>{isMobile()
|
>{isMobile()
|
||||||
? $LL.menu.settings.gameQuality.short.small()
|
? $LL.menu.settings.gameQuality.short.minimum()
|
||||||
: $LL.menu.settings.gameQuality.long.small()}</option
|
: $LL.menu.settings.gameQuality.long.minimum()}</option
|
||||||
>
|
>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -131,13 +131,13 @@
|
|||||||
>
|
>
|
||||||
<option value={10}
|
<option value={10}
|
||||||
>{isMobile()
|
>{isMobile()
|
||||||
? $LL.menu.settings.videoQuality.short.minimum()
|
? $LL.menu.settings.videoQuality.short.small()
|
||||||
: $LL.menu.settings.videoQuality.long.minimum()}</option
|
: $LL.menu.settings.videoQuality.long.small()}</option
|
||||||
>
|
>
|
||||||
<option value={5}
|
<option value={5}
|
||||||
>{isMobile()
|
>{isMobile()
|
||||||
? $LL.menu.settings.videoQuality.short.small()
|
? $LL.menu.settings.videoQuality.short.minimum()
|
||||||
: $LL.menu.settings.videoQuality.long.small()}</option
|
: $LL.menu.settings.videoQuality.long.minimum()}</option
|
||||||
>
|
>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -512,7 +512,7 @@ class CoWebsiteManager {
|
|||||||
if (this.coWebsites.length < 1) {
|
if (this.coWebsites.length < 1) {
|
||||||
this.loadMain();
|
this.loadMain();
|
||||||
} else if (this.coWebsites.length === 5) {
|
} else if (this.coWebsites.length === 5) {
|
||||||
throw new Error("Too many we");
|
throw new Error("Too many websites");
|
||||||
}
|
}
|
||||||
|
|
||||||
Promise.resolve(callback(this.cowebsiteBufferDom))
|
Promise.resolve(callback(this.cowebsiteBufferDom))
|
||||||
@ -580,7 +580,7 @@ class CoWebsiteManager {
|
|||||||
return reject();
|
return reject();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((e) => console.error("Error loadCoWebsite >=> ", e));
|
.catch((e) => console.error("Error loadCoWebsite => ", e));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
front/src/i18n/de-DE/audio.ts
Normal file
10
front/src/i18n/de-DE/audio.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const audio: NonNullable<Translation["audio"]> = {
|
||||||
|
manager: {
|
||||||
|
reduce: "Während Unterhaltungen verringern",
|
||||||
|
},
|
||||||
|
message: "Sprachnachricht",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default audio;
|
22
front/src/i18n/de-DE/camera.ts
Normal file
22
front/src/i18n/de-DE/camera.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const camera: NonNullable<Translation["camera"]> = {
|
||||||
|
enable: {
|
||||||
|
title: "Bitte schalte deine Kamera und dein Mikrofon ein.",
|
||||||
|
start: "Los gehts!",
|
||||||
|
},
|
||||||
|
help: {
|
||||||
|
title: "Zugriff auf Kamera / Mikrofon erforderlich",
|
||||||
|
permissionDenied: "Zugriff verweigert",
|
||||||
|
content: "Der Zugriff auf Kamera und Mikrofon muss im Browser freigegeben werden.",
|
||||||
|
firefoxContent:
|
||||||
|
'Bitte klicke auf "Diese Entscheidungen speichern" Schaltfläche um erneute Nachfragen nach der Freigabe in Firefox zu verhindern.',
|
||||||
|
refresh: "Aktualisieren",
|
||||||
|
continue: "Ohne Kamera fortfahren",
|
||||||
|
},
|
||||||
|
my: {
|
||||||
|
silentZone: "Stiller Bereich",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default camera;
|
12
front/src/i18n/de-DE/chat.ts
Normal file
12
front/src/i18n/de-DE/chat.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const chat: NonNullable<Translation["chat"]> = {
|
||||||
|
intro: "Hier ist dein Nachrichtenverlauf:",
|
||||||
|
enter: "Verfasse deine Nachricht...",
|
||||||
|
menu: {
|
||||||
|
visitCard: "Visitenkarte",
|
||||||
|
addFriend: "Freund*In hinzufügen",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default chat;
|
11
front/src/i18n/de-DE/companion.ts
Normal file
11
front/src/i18n/de-DE/companion.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const companion: NonNullable<Translation["companion"]> = {
|
||||||
|
select: {
|
||||||
|
title: "Wähle einen Gefährten",
|
||||||
|
any: "Kein Gefährte",
|
||||||
|
continue: "Weiter",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default companion;
|
21
front/src/i18n/de-DE/emoji.ts
Normal file
21
front/src/i18n/de-DE/emoji.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const emoji: NonNullable<Translation["emoji"]> = {
|
||||||
|
search: "Emojis suchen...",
|
||||||
|
categories: {
|
||||||
|
recents: "Letzte Emojis",
|
||||||
|
smileys: "Smileys & Emotionen",
|
||||||
|
people: "Menschen",
|
||||||
|
animals: "Tiere & Natur",
|
||||||
|
food: "Essen & Trinken",
|
||||||
|
activities: "Aktivitäten",
|
||||||
|
travel: "Reise & Orte",
|
||||||
|
objects: "Objekte",
|
||||||
|
symbols: "Symbole",
|
||||||
|
flags: "Flaggen",
|
||||||
|
custom: "Benutzerdefinier",
|
||||||
|
},
|
||||||
|
notFound: "Keine Emojis gefunden",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default emoji;
|
23
front/src/i18n/de-DE/error.ts
Normal file
23
front/src/i18n/de-DE/error.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const error: NonNullable<Translation["error"]> = {
|
||||||
|
accessLink: {
|
||||||
|
title: "Ungültiger Zugangslink",
|
||||||
|
subTitle: "Karte konnte nicht gefunden werden. Prüfe bitte deinen Zugangslink.",
|
||||||
|
details:
|
||||||
|
"Für weitere Information kannst du die Administratoren kontaktieren oder melde dich bei uns unter: hello@workadventu.re",
|
||||||
|
},
|
||||||
|
connectionRejected: {
|
||||||
|
title: "Verbindungen zurückgewiesen",
|
||||||
|
subTitle: "Du kannst diese Welt nicht betreten. Versuche es später noch einmal {error}.",
|
||||||
|
details:
|
||||||
|
"Für weitere Information kannst du die Administratoren kontaktieren oder melde dich bei uns unter: hello@workadventu.re",
|
||||||
|
},
|
||||||
|
connectionRetry: {
|
||||||
|
unableConnect:
|
||||||
|
"Es konnte keine Verbindung zu WorkAdventure erstellt werden. Bist du mit dem Internet verbunden?",
|
||||||
|
},
|
||||||
|
error: "Fehler",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default error;
|
27
front/src/i18n/de-DE/follow.ts
Normal file
27
front/src/i18n/de-DE/follow.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const follow: NonNullable<Translation["follow"]> = {
|
||||||
|
interactStatus: {
|
||||||
|
following: "{leader} folgen",
|
||||||
|
waitingFollowers: "Warte auf Bestätigung der Gefolgschaft",
|
||||||
|
followed: {
|
||||||
|
one: "{follower} folgt dir",
|
||||||
|
two: "{firstFollower} und {secondFollower} folgen dir",
|
||||||
|
many: "{followers} und {lastFollower} folgen dir",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
interactMenu: {
|
||||||
|
title: {
|
||||||
|
interact: "Interaktion",
|
||||||
|
follow: "Möchtest du {leader} folgen?",
|
||||||
|
},
|
||||||
|
stop: {
|
||||||
|
leader: "Möchtest du nicht weiter den Weg weisen?",
|
||||||
|
follower: "Möchtest du nicht mehr {leader} folgen?",
|
||||||
|
},
|
||||||
|
yes: "Ja",
|
||||||
|
no: "Nein",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default follow;
|
34
front/src/i18n/de-DE/index.ts
Normal file
34
front/src/i18n/de-DE/index.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import en_US from "../en-US";
|
||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
import audio from "./audio";
|
||||||
|
import camera from "./camera";
|
||||||
|
import chat from "./chat";
|
||||||
|
import companion from "./companion";
|
||||||
|
import emoji from "./emoji";
|
||||||
|
import error from "./error";
|
||||||
|
import follow from "./follow";
|
||||||
|
import login from "./login";
|
||||||
|
import menu from "./menu";
|
||||||
|
import report from "./report";
|
||||||
|
import warning from "./warning";
|
||||||
|
import woka from "./woka";
|
||||||
|
|
||||||
|
const de_DE: Translation = {
|
||||||
|
...en_US,
|
||||||
|
language: "Deutsch",
|
||||||
|
country: "Deutschland",
|
||||||
|
audio,
|
||||||
|
camera,
|
||||||
|
chat,
|
||||||
|
companion,
|
||||||
|
woka,
|
||||||
|
error,
|
||||||
|
follow,
|
||||||
|
login,
|
||||||
|
menu,
|
||||||
|
report,
|
||||||
|
warning,
|
||||||
|
emoji,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default de_DE;
|
14
front/src/i18n/de-DE/login.ts
Normal file
14
front/src/i18n/de-DE/login.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const login: NonNullable<Translation["login"]> = {
|
||||||
|
input: {
|
||||||
|
name: {
|
||||||
|
placeholder: "Trage deinen Namen ein",
|
||||||
|
empty: "Kein Name angegeben",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
terms: 'Wenn du fortfährst, akzeptierst du die <a href="https://workadventu.re/terms-of-use" target="_blank">Nutzungsbedingungen</a>, <a href="https://workadventu.re/privacy-policy" target="_blank">Datenschutzerklärung</a> und <a href="https://workadventu.re/cookie-policy" target="_blank">Cookierichtlinien</a>.',
|
||||||
|
continue: "Fortfahren",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default login;
|
125
front/src/i18n/de-DE/menu.ts
Normal file
125
front/src/i18n/de-DE/menu.ts
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const menu: NonNullable<Translation["menu"]> = {
|
||||||
|
title: "Menu",
|
||||||
|
icon: {
|
||||||
|
open: {
|
||||||
|
menu: "Menu öffnen",
|
||||||
|
invite: "Einladung anzeigen",
|
||||||
|
register: "Registrieren",
|
||||||
|
chat: "Chat öffnen",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
visitCard: {
|
||||||
|
close: "Schliessen",
|
||||||
|
},
|
||||||
|
profile: {
|
||||||
|
edit: {
|
||||||
|
name: "Deinen Namen ändern",
|
||||||
|
woka: "Dein WOKA ändern",
|
||||||
|
companion: "Deinen Begleiter ändern",
|
||||||
|
camera: "Kameraeinstellungen ändern",
|
||||||
|
},
|
||||||
|
login: "Einloggen",
|
||||||
|
logout: "Ausloggen",
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
gameQuality: {
|
||||||
|
title: "Spiel Qualität",
|
||||||
|
short: {
|
||||||
|
high: "Hoch (120 BpS)",
|
||||||
|
medium: "Mittel (60 BpS)",
|
||||||
|
small: "Gering (40 BpS)",
|
||||||
|
minimum: "Minimal (20 BpS)",
|
||||||
|
},
|
||||||
|
long: {
|
||||||
|
high: "Hohe Video Qualität (120 BpS)",
|
||||||
|
medium: "Mittlere Video Qualität (60 BpS, empfohlen)",
|
||||||
|
small: "Geringe Video Qualität (40 BpS)",
|
||||||
|
minimum: "Minimale Video Qualität (20 BpS)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
videoQuality: {
|
||||||
|
title: "Video Qualität",
|
||||||
|
short: {
|
||||||
|
high: "Hoch (30 BpS)",
|
||||||
|
medium: "Mittel (20 BpS)",
|
||||||
|
small: "Gering (10 BpS)",
|
||||||
|
minimum: "Minimale (5 BpS)",
|
||||||
|
},
|
||||||
|
long: {
|
||||||
|
high: "Hohe Video Qualität (30 BpS)",
|
||||||
|
medium: "Mittlere Video Qualität (20 BpS, empfohlen)",
|
||||||
|
small: "Geringe Video Qualität (10 BpS)",
|
||||||
|
minimum: "Minimale Video Qualität (5 BpS)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
language: {
|
||||||
|
title: "Sprache",
|
||||||
|
},
|
||||||
|
save: {
|
||||||
|
warning: "(Das Spiel wird nach dem Speichern neugestartet)",
|
||||||
|
button: "Speichern",
|
||||||
|
},
|
||||||
|
fullscreen: "Vollbild",
|
||||||
|
notifications: "Benachrichtigungen",
|
||||||
|
cowebsiteTrigger: "Jedes mal nachfragen bevor Webseiten oder Jitsi Meet Räume geöffnet werden",
|
||||||
|
ignoreFollowRequest: "Ignoriere Folgen-Anfragen anderer Nutzer",
|
||||||
|
},
|
||||||
|
invite: {
|
||||||
|
description: "Link zu diesem Raum teilen!",
|
||||||
|
copy: "Kopieren",
|
||||||
|
share: "Teilen",
|
||||||
|
},
|
||||||
|
globalMessage: {
|
||||||
|
text: "Text",
|
||||||
|
audio: "Audio",
|
||||||
|
warning: "An alle Räume dieser Welt senden",
|
||||||
|
enter: "Trage hier deine Nachricht ein...",
|
||||||
|
send: "Senden",
|
||||||
|
},
|
||||||
|
globalAudio: {
|
||||||
|
uploadInfo: "Datei hochladen",
|
||||||
|
error: "Keine Datei ausgewählt. Du musst vor dem Versenden eine Datei hochladen.",
|
||||||
|
},
|
||||||
|
contact: {
|
||||||
|
gettingStarted: {
|
||||||
|
title: "Erste Schritte",
|
||||||
|
description:
|
||||||
|
"Mit WorkAdventure kannst du eine Onlinewelt schaffen in der du dich spontan mit Anderen treffen und unterhalten kannst. Erstelle als erstes deine eigene Karte. Es steht dir eine großen Auswahl an vorgefertigten Karten von unserem Team zur Auswahl.",
|
||||||
|
},
|
||||||
|
createMap: {
|
||||||
|
title: "Eigene Karte erstellen ",
|
||||||
|
description:
|
||||||
|
"Du kannst auch deine eigene Karte erstellen. Folge dazu unserer Schritt-für-Schritt Anleitung.",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
about: {
|
||||||
|
mapInfo: "Informationen über diese Karte",
|
||||||
|
mapLink: "Link zur Karte",
|
||||||
|
copyrights: {
|
||||||
|
map: {
|
||||||
|
title: "Urheberrecht der Karte",
|
||||||
|
empty: "Die Ersteller*In der Karte hat keine Informationen zum Urheberrecht hinterlegt.",
|
||||||
|
},
|
||||||
|
tileset: {
|
||||||
|
title: "Urheberrecht der Tilesets",
|
||||||
|
empty: "Die Ersteller*In der Karte hat keine Informationen zum Urheberrecht der Tilesets hinterlegt. Dies bedeutet nicht, dass die Tilesets keiner Lizenz unterliegen.",
|
||||||
|
},
|
||||||
|
audio: {
|
||||||
|
title: "Urheberrecht der Audiodateien",
|
||||||
|
empty: "Die Ersteller*In der Karte hat keine Informationen zum Urheberrecht der Audiodateien hinterlegt. Dies bedeutet nicht, dass die Audiodateien keiner Lizenz unterliegen.",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sub: {
|
||||||
|
profile: "Profil",
|
||||||
|
settings: "Einstellungen",
|
||||||
|
invite: "Einladung",
|
||||||
|
credit: "Über die Karte",
|
||||||
|
globalMessages: "Globale Nachrichten",
|
||||||
|
contact: "Kontakt",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default menu;
|
25
front/src/i18n/de-DE/report.ts
Normal file
25
front/src/i18n/de-DE/report.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const report: NonNullable<Translation["report"]> = {
|
||||||
|
block: {
|
||||||
|
title: "Blockieren",
|
||||||
|
content: "Blockiere jede Kommunikation von und zu {userName}. Kann jederzeit rückgängig gemacht werden.",
|
||||||
|
unblock: "Blockierung für diesen User aufheben",
|
||||||
|
block: "Blockiere diese User",
|
||||||
|
},
|
||||||
|
title: "Melden",
|
||||||
|
content: "Verfasse eine Meldung an die Administratoren dieses Raums. Diese können den User anschließend bannen.",
|
||||||
|
message: {
|
||||||
|
title: "Deine Nachricht: ",
|
||||||
|
empty: "Bitte einen Text angeben.",
|
||||||
|
},
|
||||||
|
submit: "Diesen User melden",
|
||||||
|
moderate: {
|
||||||
|
title: "{userName} moderieren",
|
||||||
|
block: "Blockieren",
|
||||||
|
report: "Melden",
|
||||||
|
noSelect: "FEHLER : Es ist keine Handlung ausgewählt.",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default report;
|
17
front/src/i18n/de-DE/warning.ts
Normal file
17
front/src/i18n/de-DE/warning.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const warning: NonNullable<Translation["warning"]> = {
|
||||||
|
title: "Warnung!",
|
||||||
|
content:
|
||||||
|
'Diese Welt erreicht bald die maximale Kapazität. Du kannst die Kapazität <a href={upgradeLink} target="_blank">hier</a> erhöhen',
|
||||||
|
limit: "Diese Welt erreicht bald die maximale Kapazität!",
|
||||||
|
accessDenied: {
|
||||||
|
camera: "Zugriff auf die Kamera verweigert. Hier klicken um deine Browser Berechtigungen zu prüfen.",
|
||||||
|
screenSharing:
|
||||||
|
"Zugriff auf die Bildschirmfreigabe verweigert. Hier klicken um deine Browser Berechtigungen zu prüfen.",
|
||||||
|
},
|
||||||
|
importantMessage: "Wichtige Nachricht",
|
||||||
|
connectionLost: "Verbindungen unterbrochen. Wiederverbinden...",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default warning;
|
20
front/src/i18n/de-DE/woka.ts
Normal file
20
front/src/i18n/de-DE/woka.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const woka: NonNullable<Translation["woka"]> = {
|
||||||
|
customWoka: {
|
||||||
|
title: "Dein WOKA bearbeiten",
|
||||||
|
navigation: {
|
||||||
|
return: "Zurück",
|
||||||
|
back: "Hoch",
|
||||||
|
finish: "Auswählen",
|
||||||
|
next: "Runter",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selectWoka: {
|
||||||
|
title: "Dein WOKA auswählen",
|
||||||
|
continue: "Auswählen",
|
||||||
|
customize: "Bearbeite dein WOKA",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default woka;
|
21
front/src/i18n/en-US/emoji.ts
Normal file
21
front/src/i18n/en-US/emoji.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import type { BaseTranslation } from "../i18n-types";
|
||||||
|
|
||||||
|
const emoji: BaseTranslation = {
|
||||||
|
search: "Search emojis...",
|
||||||
|
categories: {
|
||||||
|
recents: "Recent Emojis",
|
||||||
|
smileys: "Smileys & Emotion",
|
||||||
|
people: "People & Body",
|
||||||
|
animals: "Animals & Nature",
|
||||||
|
food: "Food & Drink",
|
||||||
|
activities: "Activities",
|
||||||
|
travel: "Travel & Places",
|
||||||
|
objects: "Objects",
|
||||||
|
symbols: "Symbols",
|
||||||
|
flags: "Flags",
|
||||||
|
custom: "Custom",
|
||||||
|
},
|
||||||
|
notFound: "No emojis found",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default emoji;
|
@ -10,6 +10,7 @@ import login from "./login";
|
|||||||
import menu from "./menu";
|
import menu from "./menu";
|
||||||
import report from "./report";
|
import report from "./report";
|
||||||
import warning from "./warning";
|
import warning from "./warning";
|
||||||
|
import emoji from "./emoji";
|
||||||
|
|
||||||
const en_US: BaseTranslation = {
|
const en_US: BaseTranslation = {
|
||||||
language: "English",
|
language: "English",
|
||||||
@ -25,6 +26,7 @@ const en_US: BaseTranslation = {
|
|||||||
menu,
|
menu,
|
||||||
report,
|
report,
|
||||||
warning,
|
warning,
|
||||||
|
emoji,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default en_US;
|
export default en_US;
|
||||||
|
@ -29,14 +29,14 @@ const menu: BaseTranslation = {
|
|||||||
short: {
|
short: {
|
||||||
high: "High (120 fps)",
|
high: "High (120 fps)",
|
||||||
medium: "Medium (60 fps)",
|
medium: "Medium (60 fps)",
|
||||||
minimum: "Minimum (40 fps)",
|
small: "Small (40 fps)",
|
||||||
small: "Small (20 fps)",
|
minimum: "Minimum (20 fps)",
|
||||||
},
|
},
|
||||||
long: {
|
long: {
|
||||||
high: "High video quality (120 fps)",
|
high: "High video quality (120 fps)",
|
||||||
medium: "Medium video quality (60 fps, recommended)",
|
medium: "Medium video quality (60 fps, recommended)",
|
||||||
minimum: "Minimum video quality (40 fps)",
|
small: "Small video quality (40 fps)",
|
||||||
small: "Small video quality (20 fps)",
|
minimum: "Minimum video quality (20 fps)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
videoQuality: {
|
videoQuality: {
|
||||||
@ -44,14 +44,14 @@ const menu: BaseTranslation = {
|
|||||||
short: {
|
short: {
|
||||||
high: "High (30 fps)",
|
high: "High (30 fps)",
|
||||||
medium: "Medium (20 fps)",
|
medium: "Medium (20 fps)",
|
||||||
minimum: "Minimum (10 fps)",
|
small: "Small (10 fps)",
|
||||||
small: "Small (5 fps)",
|
minimum: "Minimum (5 fps)",
|
||||||
},
|
},
|
||||||
long: {
|
long: {
|
||||||
high: "High video quality (30 fps)",
|
high: "High video quality (30 fps)",
|
||||||
medium: "Medium video quality (20 fps, recommended)",
|
medium: "Medium video quality (20 fps, recommended)",
|
||||||
minimum: "Minimum video quality (10 fps)",
|
small: "Small video quality (10 fps)",
|
||||||
small: "Small video quality (5 fps)",
|
minimum: "Minimum video quality (5 fps)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
language: {
|
language: {
|
||||||
|
@ -3,7 +3,7 @@ import type { Translation } from "../i18n-types";
|
|||||||
const camera: NonNullable<Translation["camera"]> = {
|
const camera: NonNullable<Translation["camera"]> = {
|
||||||
enable: {
|
enable: {
|
||||||
title: "Allumez votre caméra et votre microphone",
|
title: "Allumez votre caméra et votre microphone",
|
||||||
start: "C'est partie!",
|
start: "C'est parti!",
|
||||||
},
|
},
|
||||||
help: {
|
help: {
|
||||||
title: "Accès à la caméra / au microphone nécessaire",
|
title: "Accès à la caméra / au microphone nécessaire",
|
||||||
|
21
front/src/i18n/fr-FR/emoji.ts
Normal file
21
front/src/i18n/fr-FR/emoji.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import type { Translation } from "../i18n-types";
|
||||||
|
|
||||||
|
const emoji: NonNullable<Translation["emoji"]> = {
|
||||||
|
search: "Chercher un emoji...",
|
||||||
|
categories: {
|
||||||
|
recents: "Emojis récents",
|
||||||
|
smileys: "Smileys & emotions",
|
||||||
|
people: "Personne & corps",
|
||||||
|
animals: "Animaux & nature",
|
||||||
|
food: "Nourriture & boissons",
|
||||||
|
activities: "Activités",
|
||||||
|
travel: "Voyage & endroits",
|
||||||
|
objects: "Objets",
|
||||||
|
symbols: "Symbols",
|
||||||
|
flags: "Drapeaux",
|
||||||
|
custom: "Personalisés",
|
||||||
|
},
|
||||||
|
notFound: "Aucun emoji trouvé",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default emoji;
|
@ -4,6 +4,7 @@ import audio from "./audio";
|
|||||||
import camera from "./camera";
|
import camera from "./camera";
|
||||||
import chat from "./chat";
|
import chat from "./chat";
|
||||||
import companion from "./companion";
|
import companion from "./companion";
|
||||||
|
import emoji from "./emoji";
|
||||||
import error from "./error";
|
import error from "./error";
|
||||||
import follow from "./follow";
|
import follow from "./follow";
|
||||||
import login from "./login";
|
import login from "./login";
|
||||||
@ -27,6 +28,7 @@ const fr_FR: Translation = {
|
|||||||
menu,
|
menu,
|
||||||
report,
|
report,
|
||||||
warning,
|
warning,
|
||||||
|
emoji,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default fr_FR;
|
export default fr_FR;
|
||||||
|
@ -29,14 +29,14 @@ const menu: NonNullable<Translation["menu"]> = {
|
|||||||
short: {
|
short: {
|
||||||
high: "Haute (120 fps)",
|
high: "Haute (120 fps)",
|
||||||
medium: "Moyenne (60 fps)",
|
medium: "Moyenne (60 fps)",
|
||||||
minimum: "Minimale (40 fps)",
|
small: "Reduite (40 fps)",
|
||||||
small: "Reduite (20 fps)",
|
minimum: "Minimale (20 fps)",
|
||||||
},
|
},
|
||||||
long: {
|
long: {
|
||||||
high: "Haute (120 fps)",
|
high: "Haute (120 fps)",
|
||||||
medium: "Moyenne (60 fps, recommandée)",
|
medium: "Moyenne (60 fps, recommandée)",
|
||||||
minimum: "Minimale (40 fps)",
|
small: "Reduite (40 fps)",
|
||||||
small: "Reduite (20 fps)",
|
minimum: "Minimale (20 fps)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
videoQuality: {
|
videoQuality: {
|
||||||
@ -44,14 +44,14 @@ const menu: NonNullable<Translation["menu"]> = {
|
|||||||
short: {
|
short: {
|
||||||
high: "Haute (30 fps)",
|
high: "Haute (30 fps)",
|
||||||
medium: "Moyenne (20 fps)",
|
medium: "Moyenne (20 fps)",
|
||||||
minimum: "Minimale (10 fps)",
|
small: "Reduite (10 fps)",
|
||||||
small: "Reduite (5 fps)",
|
minimum: "Minimale (5 fps)",
|
||||||
},
|
},
|
||||||
long: {
|
long: {
|
||||||
high: "Haute (30 fps)",
|
high: "Haute (30 fps)",
|
||||||
medium: "Moyenne (20 fps, recommandée)",
|
medium: "Moyenne (20 fps, recommandée)",
|
||||||
minimum: "Minimale (10 fps)",
|
small: "Reduite (10 fps)",
|
||||||
small: "Reduite (5 fps)",
|
minimum: "Minimale (5 fps)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
language: {
|
language: {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
WA.room.onEnterLayer('myLayer').subscribe(() => {
|
WA.room.onEnterLayer('myLayer').subscribe(() => {
|
||||||
WA.chat.sendChatMessage("Hello!", 'Wooka');
|
WA.chat.sendChatMessage("Hello!", 'Woka');
|
||||||
});
|
});
|
||||||
|
|
||||||
WA.room.onLeaveLayer('myLayer').subscribe(() => {
|
WA.room.onLeaveLayer('myLayer').subscribe(() => {
|
||||||
WA.chat.sendChatMessage("Goodbye!", 'Wooka');
|
WA.chat.sendChatMessage("Goodbye!", 'Woka');
|
||||||
});
|
});
|
@ -12,12 +12,12 @@ WA.onInit().then(() => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function wookaSendMessage(message) {
|
function wokaSendMessage(message) {
|
||||||
WA.chat.sendChatMessage(message, 'Wooka');
|
WA.chat.sendChatMessage(message, 'Woka');
|
||||||
}
|
}
|
||||||
|
|
||||||
function unknownCommand() {
|
function unknownCommand() {
|
||||||
wookaSendMessage('Unknown command');
|
wokaSendMessage('Unknown command');
|
||||||
}
|
}
|
||||||
|
|
||||||
function executeCommand(command, args) {
|
function executeCommand(command, args) {
|
||||||
@ -32,7 +32,7 @@ function executeCommand(command, args) {
|
|||||||
|
|
||||||
function coWebsiteCommand(args) {
|
function coWebsiteCommand(args) {
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
wookaSendMessage('Too few arguments');
|
wokaSendMessage('Too few arguments');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,27 +52,27 @@ function coWebsiteCommand(args) {
|
|||||||
|
|
||||||
async function openCoWebsite(args) {
|
async function openCoWebsite(args) {
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
wookaSendMessage('Too few arguments');
|
wokaSendMessage('Too few arguments');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const url = new URL(args[0]);
|
const url = new URL(args[0]);
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
wookaSendMessage('Parameter is not a valid URL !');
|
wokaSendMessage('Parameter is not a valid URL !');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await WA.nav.openCoWebSite(args[0]).then(() => {
|
await WA.nav.openCoWebSite(args[0]).then(() => {
|
||||||
wookaSendMessage('Co-website has been opened !');
|
wokaSendMessage('Co-website has been opened !');
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
wookaSendMessage(`Something wrong happen during co-website opening: ${error.message}`);
|
wokaSendMessage(`Something wrong happen during co-website opening: ${error.message}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function closeCoWebsite(args) {
|
async function closeCoWebsite(args) {
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
wookaSendMessage('Too few arguments');
|
wokaSendMessage('Too few arguments');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ async function closeCoWebsite(args) {
|
|||||||
coWebsites.forEach(coWebsite => {
|
coWebsites.forEach(coWebsite => {
|
||||||
coWebsite.close();
|
coWebsite.close();
|
||||||
});
|
});
|
||||||
wookaSendMessage('All co-websites has been closed !');
|
wokaSendMessage('All co-websites has been closed !');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,13 +96,13 @@ async function closeCoWebsite(args) {
|
|||||||
coWebsites.find((coWebsite) => coWebsite.position === position);
|
coWebsites.find((coWebsite) => coWebsite.position === position);
|
||||||
|
|
||||||
if (!coWebsite) {
|
if (!coWebsite) {
|
||||||
wookaSendMessage('Unknown co-website');
|
wokaSendMessage('Unknown co-website');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await coWebsite.close().then(() => {
|
await coWebsite.close().then(() => {
|
||||||
wookaSendMessage('This co-websites has been closed !');
|
wokaSendMessage('This co-websites has been closed !');
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
wookaSendMessage(`Something wrong happen during co-website closing: ${error.message}`);
|
wokaSendMessage(`Something wrong happen during co-website closing: ${error.message}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user