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.maxPoints = obj.points || 0;
this.name = obj.name; this.name = obj.name;
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
//TODO: refactor this!
switch (obj.type || 'GenericObject') { switch (obj.type || 'GenericObject') {
case 'Group': case 'Group':
this.object = new Group(); this.object = new Group();
@@ -164,29 +165,17 @@ class LockActivator{
GameEngine.loadTexture('locked.webp', '/static/textures/', null, [LockActivator.materialLocked, 'alphaMap']) GameEngine.loadTexture('locked.webp', '/static/textures/', null, [LockActivator.materialLocked, 'alphaMap'])
const InteractiveObjectTypes = [ const InteractiveObjectTypes = [
{ 'GenericObject',
id: 'GenericObject', name: 'Generic Game Object' 'CharacterObject',
},{ 'PuzzleGame1',
id: 'CharacterObject', name: 'Character' 'PuzzleGame2',
}, { 'MazeQuizGame',
id: 'PuzzleGame1', name: 'Puzzle Game 1' 'ClassicPuzzle',
},{ 'PairMatchingGame',
id: 'PuzzleGame2', name: 'Puzzle Game 2' 'SingleQuestion',
},{ 'VideoPlayer',
id: 'MazeQuizGame', name: 'Maze Quiz Game' 'Particles',
},{ 'SceneSwitcher',
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'
}
]; ];
export { InteractiveObject, InteractiveObjectTypes, InteractiveObjectsImports } export { InteractiveObject, InteractiveObjectTypes, InteractiveObjectsImports }
+1 -1
View File
@@ -23,7 +23,7 @@
</teleport> </teleport>
<v-card v-if="selected" :title="modelValue.title" class="mx-2" variant="text"> <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 <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-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.name" v-model="modelValue.title"></v-text-field>
<!-- <v-text-field density="compact" :label="l.id" v-model="modelValue.id"></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`" /> <v-img v-if="modelValue.environment" :src="`/asset/thumb/${modelValue.environment}.webp`" />
<asset-selector @select="assignEnvironment" :type="['Panorama']"> <asset-selector @select="assignEnvironment" :type="['Panorama']">
<template v-slot:activator="props"> <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> </template>
</asset-selector> </asset-selector>
<v-img v-if="modelValue.scene" :src="`/asset/thumb/${modelValue.scene}.webp`" /> <v-img v-if="modelValue.scene" :src="`/asset/thumb/${modelValue.scene}.webp`" />
<asset-selector @select="assignScene" :type="['Scene']"> <asset-selector @select="assignScene" :type="['Scene']">
<template v-slot:activator="props"> <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> </template>
</asset-selector> </asset-selector>
<v-img v-if="modelValue.intro" :src="`/asset/thumb/${modelValue.intro}.webp`" /> <v-img v-if="modelValue.intro" :src="`/asset/thumb/${modelValue.intro}.webp`" />
<asset-selector @select="assignIntro" :type="['Video']"> <asset-selector @select="assignIntro" :type="['Video']">
<template v-slot:activator="props"> <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> </template>
</asset-selector> </asset-selector>
<asset-selector @select="assignAudio" :type="['Audio']"> <asset-selector @select="assignAudio" :type="['Audio']">
<template v-slot:activator="props"> <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> </template>
</asset-selector> </asset-selector>
+36 -2
View File
@@ -14,7 +14,7 @@ const lang = {
objectType: 'Object type', objectType: 'Object type',
objectFile: 'File', objectFile: 'File',
panorama2d: 'Panorama picture', panorama2d: 'Panorama picture',
environment3d: 'Environment', environment3d: 'Terrain/environment',
object3d: '3D object', object3d: '3D object',
object2d: '2D object (picture)', object2d: '2D object (picture)',
audio: 'Audio', audio: 'Audio',
@@ -57,6 +57,10 @@ const lang = {
chooseGameObject: 'Choose game object', chooseGameObject: 'Choose game object',
chooseVideoObject: 'Choose video object', chooseVideoObject: 'Choose video object',
selectCharacter: 'Select character', selectCharacter: 'Select character',
selectEnvironment: 'Select environment',
selectScene: 'Select terrain/scene',
selectIntroduction: 'Select introduction video',
selectAmbientSound: 'Select ambient music',
width: 'Width', width: 'Width',
height: 'Height', height: 'Height',
question: 'Question', question: 'Question',
@@ -113,6 +117,19 @@ const lang = {
firstName:'First Name', firstName:'First Name',
lastName:'Last Name', lastName:'Last Name',
fullScreen: 'Full screen', 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:{ errors:{
unauthorized: 'Unauthorized', unauthorized: 'Unauthorized',
notFound: 'Object not found', notFound: 'Object not found',
@@ -150,7 +167,7 @@ const lang = {
objectType: 'Тип обект', objectType: 'Тип обект',
objectFile: 'Файл', objectFile: 'Файл',
panorama2d: 'Панорамна снимка', panorama2d: 'Панорамна снимка',
environment3d: 'Околна среда', environment3d: 'Терен / Околна среда',
object3d: 'Триизмерен обект', object3d: 'Триизмерен обект',
object2d: 'Двумерен обект (изображение)', object2d: 'Двумерен обект (изображение)',
audio: 'Аудио', audio: 'Аудио',
@@ -193,6 +210,10 @@ const lang = {
chooseGameObject: 'Избери игрови обект', chooseGameObject: 'Избери игрови обект',
chooseVideoObject: 'Избери видео обект', chooseVideoObject: 'Избери видео обект',
selectCharacter: 'Избери герой', selectCharacter: 'Избери герой',
selectEnvironment: 'Избери околна среда',
selectScene: 'Избери терен/сцена',
selectIntroduction: 'Избери въвеждащо видео',
selectAmbientSound: 'Избери фонова музика',
width: 'Ширина', width: 'Ширина',
height: 'Височина', height: 'Височина',
question: 'Въпрос', question: 'Въпрос',
@@ -249,6 +270,19 @@ const lang = {
firstName:'Име', firstName:'Име',
lastName:'Фамилия', lastName:'Фамилия',
fullScreen: 'Цял екран', fullScreen: 'Цял екран',
interactiveObjects:{
GenericObject: 'Стандартен 3D обект',
CharacterObject: 'Герой',
PuzzleGame1: 'Пъзел игра 1',
PuzzleGame2: 'Пъзел игра 2',
MazeQuizGame: 'Лабиринт от въпроси',
ClassicPuzzle: 'Класически пъзел',
PairMatchingGame: 'Игра за съпоставяне на двойки',
SingleQuestion: 'Единичен въпрос',
VideoPlayer: 'Видео обект',
Particles: 'Частици',
SceneSwitcher: 'Превключвател на сцени',
},
errors:{ errors:{
unauthorized: 'Отказан достъп', unauthorized: 'Отказан достъп',
notFound: 'Обектът не е намерен', notFound: 'Обектът не е намерен',