translations

This commit is contained in:
2026-02-09 16:52:41 +02:00
parent 55de3124fe
commit 435f47a647
4 changed files with 53 additions and 30 deletions
@@ -34,6 +34,7 @@ class InteractiveObject extends EventManager{
this.maxPoints = obj.points || 0;
this.name = obj.name;
return new Promise(async (resolve, reject) => {
//TODO: refactor this!
switch (obj.type || 'GenericObject') {
case 'Group':
this.object = new Group();
@@ -164,29 +165,17 @@ class LockActivator{
GameEngine.loadTexture('locked.webp', '/static/textures/', null, [LockActivator.materialLocked, 'alphaMap'])
const InteractiveObjectTypes = [
{
id: 'GenericObject', name: 'Generic Game Object'
},{
id: 'CharacterObject', name: 'Character'
}, {
id: 'PuzzleGame1', name: 'Puzzle Game 1'
},{
id: 'PuzzleGame2', name: 'Puzzle Game 2'
},{
id: 'MazeQuizGame', name: 'Maze Quiz Game'
},{
id: 'ClassicPuzzle', name: 'Classic Puzzle Game'
},{
id: 'PairMatchingGame', name: 'Pair Matching Game'
},{
id: 'SingleQuestion', name: 'Single Question'
},{
id: 'VideoPlayer', name: 'Video Player'
},{
id: 'Particles', name: 'Particles'
},{
id: 'SceneSwitcher', name: 'Scene Switcher'
}
'GenericObject',
'CharacterObject',
'PuzzleGame1',
'PuzzleGame2',
'MazeQuizGame',
'ClassicPuzzle',
'PairMatchingGame',
'SingleQuestion',
'VideoPlayer',
'Particles',
'SceneSwitcher',
];
export { InteractiveObject, InteractiveObjectTypes, InteractiveObjectsImports }
+1 -1
View File
@@ -23,7 +23,7 @@
</teleport>
<v-card v-if="selected" :title="modelValue.title" class="mx-2" variant="text">
<v-select :label="l.gameObjectType" v-model="modelValue.type" density="compact" hide-details
:items="InteractiveObjectTypes.map(e=>({title: e.name, value: e.id}))"></v-select>
:items="InteractiveObjectTypes.map(e=>({title: l.interactiveObjects[e], value: e}))"></v-select>
<v-form class="pt-4">
<v-text-field density="compact" :label="l.name" v-model="modelValue.title"></v-text-field>
<!-- <v-text-field density="compact" :label="l.id" v-model="modelValue.id"></v-text-field> -->
+4 -4
View File
@@ -12,27 +12,27 @@
<v-img v-if="modelValue.environment" :src="`/asset/thumb/${modelValue.environment}.webp`" />
<asset-selector @select="assignEnvironment" :type="['Panorama']">
<template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-panorama-sphere-outline" block color="light-blue-darken-4">Select environment</v-btn>
<v-btn v-bind="props" prepend-icon="mdi-panorama-sphere-outline" block color="light-blue-darken-4">{{ l.selectEnvironment }}</v-btn>
</template>
</asset-selector>
<v-img v-if="modelValue.scene" :src="`/asset/thumb/${modelValue.scene}.webp`" />
<asset-selector @select="assignScene" :type="['Scene']">
<template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" block color="orange-darken-3" class="my-4">Select scene</v-btn>
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" block color="orange-darken-3" class="my-4">{{ l.selectScene }}</v-btn>
</template>
</asset-selector>
<v-img v-if="modelValue.intro" :src="`/asset/thumb/${modelValue.intro}.webp`" />
<asset-selector @select="assignIntro" :type="['Video']">
<template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-filmstrip" block color="deep-orange-darken-4" class="my-4">Select introduction</v-btn>
<v-btn v-bind="props" prepend-icon="mdi-filmstrip" block color="deep-orange-darken-4" class="my-4">{{ l.selectIntroduction }}</v-btn>
</template>
</asset-selector>
<asset-selector @select="assignAudio" :type="['Audio']">
<template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-volume-medium" block color="deep-purple-accent-2" class="my-4">Select ambient sound</v-btn>
<v-btn v-bind="props" prepend-icon="mdi-volume-medium" block color="deep-purple-accent-2" class="my-4">{{ l.selectAmbientSound }}</v-btn>
</template>
</asset-selector>
+36 -2
View File
@@ -14,7 +14,7 @@ const lang = {
objectType: 'Object type',
objectFile: 'File',
panorama2d: 'Panorama picture',
environment3d: 'Environment',
environment3d: 'Terrain/environment',
object3d: '3D object',
object2d: '2D object (picture)',
audio: 'Audio',
@@ -57,6 +57,10 @@ const lang = {
chooseGameObject: 'Choose game object',
chooseVideoObject: 'Choose video object',
selectCharacter: 'Select character',
selectEnvironment: 'Select environment',
selectScene: 'Select terrain/scene',
selectIntroduction: 'Select introduction video',
selectAmbientSound: 'Select ambient music',
width: 'Width',
height: 'Height',
question: 'Question',
@@ -113,6 +117,19 @@ const lang = {
firstName:'First Name',
lastName:'Last Name',
fullScreen: 'Full screen',
interactiveObjects:{
GenericObject: 'Generic object',
CharacterObject: 'Character',
PuzzleGame1: 'Puzzle Game 1',
PuzzleGame2: 'Puzzle Game 2',
MazeQuizGame: 'Maze Quiz Game',
ClassicPuzzle: 'Classic Puzzle Game',
PairMatchingGame: 'Pair Matching Game',
SingleQuestion: 'Single Question',
VideoPlayer: 'Video Player',
Particles: 'Particles',
SceneSwitcher: 'Scene Switcher',
},
errors:{
unauthorized: 'Unauthorized',
notFound: 'Object not found',
@@ -150,7 +167,7 @@ const lang = {
objectType: 'Тип обект',
objectFile: 'Файл',
panorama2d: 'Панорамна снимка',
environment3d: 'Околна среда',
environment3d: 'Терен / Околна среда',
object3d: 'Триизмерен обект',
object2d: 'Двумерен обект (изображение)',
audio: 'Аудио',
@@ -193,6 +210,10 @@ const lang = {
chooseGameObject: 'Избери игрови обект',
chooseVideoObject: 'Избери видео обект',
selectCharacter: 'Избери герой',
selectEnvironment: 'Избери околна среда',
selectScene: 'Избери терен/сцена',
selectIntroduction: 'Избери въвеждащо видео',
selectAmbientSound: 'Избери фонова музика',
width: 'Ширина',
height: 'Височина',
question: 'Въпрос',
@@ -249,6 +270,19 @@ const lang = {
firstName:'Име',
lastName:'Фамилия',
fullScreen: 'Цял екран',
interactiveObjects:{
GenericObject: 'Стандартен 3D обект',
CharacterObject: 'Герой',
PuzzleGame1: 'Пъзел игра 1',
PuzzleGame2: 'Пъзел игра 2',
MazeQuizGame: 'Лабиринт от въпроси',
ClassicPuzzle: 'Класически пъзел',
PairMatchingGame: 'Игра за съпоставяне на двойки',
SingleQuestion: 'Единичен въпрос',
VideoPlayer: 'Видео обект',
Particles: 'Частици',
SceneSwitcher: 'Превключвател на сцени',
},
errors:{
unauthorized: 'Отказан достъп',
notFound: 'Обектът не е намерен',