mirror of
https://github.com/rommapp/romm.git
synced 2026-02-18 23:42:07 +01:00
@@ -7,6 +7,7 @@ import {
|
||||
useTemplateRef,
|
||||
watch,
|
||||
} from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import {
|
||||
collectionElementRegistry,
|
||||
smartCollectionElementRegistry,
|
||||
@@ -20,6 +21,7 @@ import {
|
||||
EXTENSION_REGEX,
|
||||
} from "@/utils/covers";
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
collection: CollectionType;
|
||||
index: number;
|
||||
@@ -229,7 +231,7 @@ onMounted(() => {
|
||||
class="text-xs opacity-90"
|
||||
:style="{ color: 'var(--console-collection-card-text)' }"
|
||||
>
|
||||
{{ collection.rom_count || 0 }} games
|
||||
{{ t("console.games-n", collection.rom_count || 0) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, onUnmounted, ref } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ArrowKeysIcon from "./icons/ArrowKeysIcon.vue";
|
||||
import DPadIcon from "./icons/DPadIcon.vue";
|
||||
import FaceButtons from "./icons/FaceButtons.vue";
|
||||
@@ -24,6 +25,7 @@ const props = withDefaults(defineProps<Props>(), {
|
||||
isModal: false,
|
||||
});
|
||||
|
||||
const { t } = useI18n();
|
||||
const hasController = ref(false);
|
||||
let rafId = 0;
|
||||
|
||||
@@ -83,54 +85,78 @@ onUnmounted(() => {
|
||||
<template v-if="hasController">
|
||||
<div v-if="showNavigation" class="flex items-center gap-2">
|
||||
<DPadIcon class="w-8 h-8 opacity-80" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Navigation</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-navigation")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showSelect" class="flex items-center gap-2">
|
||||
<FaceButtons highlight="south" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Select</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-select")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showBack" class="flex items-center gap-2">
|
||||
<FaceButtons highlight="east" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Back</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-back")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showToggleFavorite" class="flex items-center gap-2">
|
||||
<FaceButtons highlight="north" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Favorite</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-favorite")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showMenu" class="flex items-center gap-2">
|
||||
<FaceButtons highlight="west" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Menu</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-menu")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showDelete" class="flex items-center gap-2">
|
||||
<FaceButtons highlight="west" :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Delete</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-delete")
|
||||
}}</span>
|
||||
</div>
|
||||
</template>
|
||||
<!-- Keyboard Mode -->
|
||||
<template v-else>
|
||||
<div v-if="showNavigation" class="flex items-center gap-2">
|
||||
<ArrowKeysIcon :modal="isModal" />
|
||||
<span class="font-medium tracking-wide">Navigation</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-navigation")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showSelect" class="flex items-center gap-2">
|
||||
<span class="keycap" :style="keycapStyles">Enter</span>
|
||||
<span class="font-medium tracking-wide">Select</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-select")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showBack" class="flex items-center gap-2">
|
||||
<span class="keycap" :style="keycapStyles">Bkspc</span>
|
||||
<span class="font-medium tracking-wide">Back</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-back")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showToggleFavorite" class="flex items-center gap-2">
|
||||
<span class="keycap" :style="keycapStyles">F</span>
|
||||
<span class="font-medium tracking-wide">Favorite</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-favorite")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showMenu" class="flex items-center gap-2">
|
||||
<span class="keycap" :style="keycapStyles">X</span>
|
||||
<span class="font-medium tracking-wide">Menu</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-menu")
|
||||
}}</span>
|
||||
</div>
|
||||
<div v-if="showDelete" class="flex items-center gap-2">
|
||||
<span class="keycap" :style="keycapStyles">X</span>
|
||||
<span class="font-medium tracking-wide">Delete</span>
|
||||
<span class="font-medium tracking-wide">{{
|
||||
t("console.nav-delete")
|
||||
}}</span>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted, onUnmounted } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import NavigationText from "@/console/components/NavigationText.vue";
|
||||
import { useConsoleTheme } from "@/console/composables/useConsoleTheme";
|
||||
import { useInputScope } from "@/console/composables/useInputScope";
|
||||
import type { InputAction } from "@/console/input/actions";
|
||||
import { getSfxEnabled, setSfxEnabled } from "@/console/utils/sfx";
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
modelValue: boolean;
|
||||
}>();
|
||||
@@ -18,10 +20,10 @@ const themeStore = useConsoleTheme();
|
||||
const { subscribe } = useInputScope();
|
||||
|
||||
const selectedOption = ref(0);
|
||||
const options = [
|
||||
{ label: "Theme", type: "theme" as const },
|
||||
{ label: "Sound Effects", type: "sfx" as const },
|
||||
];
|
||||
const options = computed(() => [
|
||||
{ label: "console.theme", type: "theme" as const },
|
||||
{ label: "console.sound-effects", type: "sfx" as const },
|
||||
]);
|
||||
|
||||
const themeOptions = [
|
||||
{ value: "default", label: "Default" },
|
||||
@@ -56,14 +58,15 @@ function handleAction(action: InputAction): boolean {
|
||||
return true;
|
||||
case "moveUp":
|
||||
selectedOption.value =
|
||||
(selectedOption.value - 1 + options.length) % options.length;
|
||||
(selectedOption.value - 1 + options.value.length) %
|
||||
options.value.length;
|
||||
return true;
|
||||
case "moveDown":
|
||||
selectedOption.value = (selectedOption.value + 1) % options.length;
|
||||
selectedOption.value = (selectedOption.value + 1) % options.value.length;
|
||||
return true;
|
||||
case "moveLeft":
|
||||
case "moveRight": {
|
||||
const currentOption = options[selectedOption.value];
|
||||
const currentOption = options.value[selectedOption.value];
|
||||
if (currentOption.type === "theme") {
|
||||
const currentIndex = themeOptions.findIndex(
|
||||
(t) => t.value === selectedTheme.value,
|
||||
@@ -116,7 +119,7 @@ function getCurrentThemeLabel(): string {
|
||||
<template #default>
|
||||
<div class="lightbox-header">
|
||||
<h2 class="text-h6" :style="{ color: 'var(--console-modal-text)' }">
|
||||
Console Settings
|
||||
{{ t("console.console-settings") }}
|
||||
</h2>
|
||||
<v-btn
|
||||
icon="mdi-close"
|
||||
@@ -136,7 +139,7 @@ function getCurrentThemeLabel(): string {
|
||||
:class="{ 'settings-item-selected': selectedOption === index }"
|
||||
>
|
||||
<div class="settings-label">
|
||||
{{ option.label }}
|
||||
{{ t(option.label) }}
|
||||
</div>
|
||||
<div class="settings-value">
|
||||
<template v-if="option.type === 'theme'">
|
||||
@@ -150,7 +153,7 @@ function getCurrentThemeLabel(): string {
|
||||
<div class="sfx-toggle">
|
||||
<span class="sfx-indicator">‹</span>
|
||||
<span class="sfx-status">{{
|
||||
sfxEnabled ? "Enabled" : "Disabled"
|
||||
sfxEnabled ? t("console.enabled") : t("console.disabled")
|
||||
}}</span>
|
||||
<span class="sfx-indicator">›</span>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, useTemplateRef } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import FallbackSystemCard from "@/console/components/FallbackSystemCard.vue";
|
||||
import { systemElementRegistry } from "@/console/composables/useElementRegistry";
|
||||
import { useThemeAssets } from "@/console/composables/useThemeAssets";
|
||||
import { getPlatformTheme } from "@/console/constants/platforms";
|
||||
import type { Platform } from "@/stores/platforms";
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
platform: Platform;
|
||||
index: number;
|
||||
@@ -88,7 +90,7 @@ const theme = computed(() => {
|
||||
class="text-sm text-center font-medium"
|
||||
:style="{ color: 'var(--console-system-card-text)' }"
|
||||
>
|
||||
{{ platform.rom_count || 0 }} games
|
||||
{{ t("console.games-n", platform.rom_count || 0) }}
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
nextTick,
|
||||
useTemplateRef,
|
||||
} from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import type { DetailedRomSchema } from "@/__generated__/models/DetailedRomSchema";
|
||||
import BackButton from "@/console/components/BackButton.vue";
|
||||
@@ -43,6 +44,7 @@ const romsStore = storeRoms();
|
||||
const heartbeatStore = storeHeartbeat();
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
|
||||
const rom = ref<DetailedRomSchema | null>(null);
|
||||
const playerState = ref<PlayerState>("loading");
|
||||
@@ -632,7 +634,7 @@ onUnmounted(() => {
|
||||
@click="play()"
|
||||
>
|
||||
<span class="text-lg md:text-xl">▶</span>
|
||||
Play
|
||||
{{ t("console.game-play") }}
|
||||
</button>
|
||||
<button
|
||||
class="px-5 md:px-6 py-3 md:py-4 rounded-lg font-semibold transition-all"
|
||||
@@ -649,7 +651,7 @@ onUnmounted(() => {
|
||||
}"
|
||||
@click="openDetails()"
|
||||
>
|
||||
Details
|
||||
{{ t("console.game-detail") }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -658,7 +660,7 @@ onUnmounted(() => {
|
||||
class="text-[10px] uppercase tracking-wider font-semibold mb-2"
|
||||
:style="{ color: 'var(--console-game-section-header)' }"
|
||||
>
|
||||
SAVE STATES
|
||||
{{ t("console.save-states") }}
|
||||
</h3>
|
||||
<div
|
||||
ref="save-states-ref"
|
||||
@@ -732,7 +734,7 @@ onUnmounted(() => {
|
||||
class="text-xs md:text-sm font-semibold uppercase tracking-wide"
|
||||
:style="{ color: 'var(--console-game-section-header)' }"
|
||||
>
|
||||
Screenshots
|
||||
{{ t("console.screenshots") }}
|
||||
</h3>
|
||||
<div
|
||||
ref="screenshots-ref"
|
||||
@@ -850,7 +852,7 @@ onUnmounted(() => {
|
||||
<template #default>
|
||||
<div class="lightbox-header">
|
||||
<h2 class="text-h6" :style="{ color: 'var(--console-modal-text)' }">
|
||||
Details
|
||||
{{ t("console.game-detail") }}
|
||||
</h2>
|
||||
<v-btn
|
||||
icon="mdi-close"
|
||||
@@ -958,7 +960,7 @@ onUnmounted(() => {
|
||||
class="text-xs font-semibold mb-1 uppercase tracking-wide"
|
||||
:style="{ color: 'var(--console-modal-text-secondary)' }"
|
||||
>
|
||||
File Size
|
||||
{{ t("console.detail-size") }}
|
||||
</div>
|
||||
<div
|
||||
class="text-sm md:text-base leading-6 break-words"
|
||||
@@ -979,7 +981,7 @@ onUnmounted(() => {
|
||||
class="text-xs font-semibold mb-1 uppercase tracking-wide"
|
||||
:style="{ color: 'var(--console-modal-text-secondary)' }"
|
||||
>
|
||||
File
|
||||
{{ t("console.detail-file") }}
|
||||
</div>
|
||||
<div
|
||||
class="text-sm md:text-base leading-6 break-words"
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
useTemplateRef,
|
||||
onBeforeMount,
|
||||
} from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRouter } from "vue-router";
|
||||
import RIsotipo from "@/components/common/RIsotipo.vue";
|
||||
import useFavoriteToggle from "@/composables/useFavoriteToggle";
|
||||
@@ -36,6 +37,7 @@ import storePlatforms from "@/stores/platforms";
|
||||
import storeRoms from "@/stores/roms";
|
||||
import type { SimpleRom } from "@/stores/roms";
|
||||
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
const platformsStore = storePlatforms();
|
||||
const { allPlatforms, fetchingPlatforms } = storeToRefs(platformsStore);
|
||||
@@ -712,7 +714,7 @@ onUnmounted(() => {
|
||||
class="font-bold text-[28px] drop-shadow-xl"
|
||||
:style="{ color: 'var(--console-home-title-text)' }"
|
||||
>
|
||||
Console
|
||||
{{ t("console.console") }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -721,7 +723,7 @@ onUnmounted(() => {
|
||||
class="text-center mt-16"
|
||||
:style="{ color: 'var(--console-loading-text)' }"
|
||||
>
|
||||
Loading platforms…
|
||||
{{ t("console.loading-platforms") }}
|
||||
</div>
|
||||
<div
|
||||
v-else-if="errorMessage"
|
||||
@@ -736,7 +738,7 @@ onUnmounted(() => {
|
||||
class="text-xl font-bold text-fg0 mb-3 drop-shadow pl-8 pr-8"
|
||||
:style="{ color: 'var(--console-home-category-text)' }"
|
||||
>
|
||||
Platforms
|
||||
{{ t("console.platforms") }}
|
||||
</h2>
|
||||
<div class="relative h-[220px]">
|
||||
<button
|
||||
@@ -792,7 +794,7 @@ onUnmounted(() => {
|
||||
class="text-xl font-bold text-fg0 mb-3 drop-shadow pl-8 pr-8"
|
||||
:style="{ color: 'var(--console-home-category-text)' }"
|
||||
>
|
||||
Recently Played
|
||||
{{ t("console.recently-played") }}
|
||||
</h2>
|
||||
<div class="relative h-[400px]">
|
||||
<button
|
||||
@@ -853,7 +855,7 @@ onUnmounted(() => {
|
||||
class="text-xl font-bold text-fg0 mb-3 drop-shadow pl-8 pr-8"
|
||||
:style="{ color: 'var(--console-home-category-text)' }"
|
||||
>
|
||||
Collections
|
||||
{{ t("console.collections") }}
|
||||
</h2>
|
||||
<div class="relative h-[400px]">
|
||||
<button
|
||||
@@ -912,7 +914,7 @@ onUnmounted(() => {
|
||||
class="text-xl font-bold text-fg0 mb-3 drop-shadow pl-8 pr-8"
|
||||
:style="{ color: 'var(--console-home-category-text)' }"
|
||||
>
|
||||
Smart Collections
|
||||
{{ t("console.smart-collections") }}
|
||||
</h2>
|
||||
<div class="relative h-[400px]">
|
||||
<button
|
||||
@@ -972,7 +974,7 @@ onUnmounted(() => {
|
||||
class="text-xl font-bold text-fg0 mb-3 drop-shadow pl-8 pr-8"
|
||||
:style="{ color: 'var(--console-home-category-text)' }"
|
||||
>
|
||||
Virtual Collections
|
||||
{{ t("console.virtual-collections") }}
|
||||
</h2>
|
||||
<div class="relative h-[400px]">
|
||||
<button
|
||||
@@ -1036,7 +1038,7 @@ onUnmounted(() => {
|
||||
'border-[var(--console-home-control-button-focus-border)] bg-[var(--console-home-control-button-focus-border)]/15 shadow-[0_0_0_2px_var(--console-home-control-button-focus-border),_0_0_18px_-4px_var(--console-home-control-button-focus-border)] -translate-y-0.5':
|
||||
navigationMode === 'controls' && controlIndex === 0,
|
||||
}"
|
||||
title="Exit Console Mode (F1)"
|
||||
:title="t('console.exit-console-mode') + ' (F1)'"
|
||||
@click="exitConsoleMode"
|
||||
>
|
||||
<v-icon size="small">mdi-power</v-icon>
|
||||
@@ -1052,7 +1054,7 @@ onUnmounted(() => {
|
||||
'border-[var(--console-home-control-button-focus-border)] bg-[var(--console-home-control-button-focus-border)]/15 shadow-[0_0_0_2px_var(--console-home-control-button-focus-border),_0_0_18px_-4px_var(--console-home-control-button-focus-border)] -translate-y-0.5':
|
||||
navigationMode === 'controls' && controlIndex === 1,
|
||||
}"
|
||||
title="Fullscreen (F11)"
|
||||
:title="t('console.fullscreen') + ' (F11)'"
|
||||
@click="toggleFullscreen"
|
||||
>
|
||||
<v-icon size="small">mdi-fullscreen</v-icon>
|
||||
@@ -1068,7 +1070,7 @@ onUnmounted(() => {
|
||||
'border-[var(--console-home-control-button-focus-border)] bg-[var(--console-home-control-button-focus-border)]/15 shadow-[0_0_0_2px_var(--console-home-control-button-focus-border),_0_0_18px_-4px_var(--console-home-control-button-focus-border)] -translate-y-0.5':
|
||||
navigationMode === 'controls' && controlIndex === 2,
|
||||
}"
|
||||
title="Settings"
|
||||
:title="t('console.settings')"
|
||||
@click="showSettings = true"
|
||||
>
|
||||
<v-icon size="small">mdi-cog</v-icon>
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
<script setup lang="ts">
|
||||
import { useLocalStorage } from "@vueuse/core";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { onMounted, onBeforeUnmount, ref, watch, nextTick } from "vue";
|
||||
import {
|
||||
computed,
|
||||
onMounted,
|
||||
onBeforeUnmount,
|
||||
ref,
|
||||
watch,
|
||||
nextTick,
|
||||
} from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import type { DetailedRomSchema } from "@/__generated__/models/DetailedRomSchema";
|
||||
import NavigationText from "@/console/components/NavigationText.vue";
|
||||
@@ -20,6 +28,7 @@ import {
|
||||
getDownloadPath,
|
||||
} from "@/utils";
|
||||
|
||||
const { t } = useI18n();
|
||||
const createPlayerStorage = (romId: number, platformSlug: string) => ({
|
||||
initialSaveId: useLocalStorage(
|
||||
`player:${romId}:initial_save_id`,
|
||||
@@ -60,15 +69,23 @@ const loaderStatus = ref<
|
||||
|
||||
let pausedByPrompt = false;
|
||||
|
||||
const exitOptions = [
|
||||
{ id: "save", label: "Save & Exit", desc: "Save current state, then quit" },
|
||||
const exitOptions = computed(() => [
|
||||
{
|
||||
id: "save",
|
||||
label: "console.game-exit-save",
|
||||
desc: "console.game-exit-save-desc",
|
||||
},
|
||||
{
|
||||
id: "nosave",
|
||||
label: "Exit Without Saving",
|
||||
desc: "Leave immediately, progress since last save state is lost",
|
||||
label: "console.game-exit-nosave",
|
||||
desc: "console.game-exit-nosave-desc",
|
||||
},
|
||||
{ id: "cancel", label: "Cancel", desc: "Return to the game" },
|
||||
];
|
||||
{
|
||||
id: "cancel",
|
||||
label: "console.game-exit-cancel",
|
||||
desc: "console.game-exit-cancel-desc",
|
||||
},
|
||||
]);
|
||||
|
||||
const { subscribe } = useInputScope();
|
||||
let exitScopeOff: (() => void) | null = null;
|
||||
@@ -111,7 +128,7 @@ function handleExitAction(action: string) {
|
||||
return true;
|
||||
}
|
||||
if (action === "confirm") {
|
||||
activateExitOption(exitOptions[focusedExitIndex.value].id);
|
||||
activateExitOption(exitOptions.value[focusedExitIndex.value].id);
|
||||
return true;
|
||||
}
|
||||
if (action === "back") {
|
||||
@@ -222,7 +239,7 @@ function activateExitOption(id: string) {
|
||||
}
|
||||
|
||||
function moveExitFocus(delta: number) {
|
||||
const total = exitOptions.length;
|
||||
const total = exitOptions.value.length;
|
||||
focusedExitIndex.value = (focusedExitIndex.value + delta + total) % total;
|
||||
}
|
||||
|
||||
@@ -285,7 +302,7 @@ function attachGamepadExit(options?: { windowMs?: number }) {
|
||||
}
|
||||
} else {
|
||||
if (edge(BTN.A))
|
||||
activateExitOption(exitOptions[focusedExitIndex.value].id);
|
||||
activateExitOption(exitOptions.value[focusedExitIndex.value].id);
|
||||
if (edge(BTN.B)) cancelExit();
|
||||
}
|
||||
for (let i = 0; i < pad.buttons.length; i++) {
|
||||
@@ -693,13 +710,15 @@ onBeforeUnmount(() => {
|
||||
<template
|
||||
v-if="loaderStatus === 'idle' || loaderStatus === 'loading-local'"
|
||||
>
|
||||
Loading emulator…
|
||||
{{ t("console.emulator-loading") }}
|
||||
</template>
|
||||
<template v-else-if="loaderStatus === 'loading-cdn'">
|
||||
Loading emulator (CDN)…
|
||||
{{ t("console.emulator-cdn") }}
|
||||
</template>
|
||||
<template v-else-if="loaderStatus === 'failed'">
|
||||
<div class="text-red-300 font-medium">Failed to load emulator</div>
|
||||
<div class="text-red-300 font-medium">
|
||||
{{ t("console.emulator-failed") }}
|
||||
</div>
|
||||
<div class="mt-1 text-[11px] max-w-xs leading-snug break-words">
|
||||
{{ loaderError }}
|
||||
</div>
|
||||
@@ -715,7 +734,7 @@ onBeforeUnmount(() => {
|
||||
}"
|
||||
class="absolute top-3 left-1/2 -translate-x-1/2 backdrop-blur px-3 py-1 rounded text-xs border"
|
||||
>
|
||||
Press Start + Select (or Backspace) to exit
|
||||
{{ t("console.exit-game") }}
|
||||
</div>
|
||||
|
||||
<!-- Exit Prompt Modal -->
|
||||
@@ -737,7 +756,7 @@ onBeforeUnmount(() => {
|
||||
:style="{ color: 'var(--console-modal-text)' }"
|
||||
class="text-xl font-bold tracking-wide drop-shadow"
|
||||
>
|
||||
Exit Game
|
||||
{{ t("console.game-exit") }}
|
||||
</h2>
|
||||
<button
|
||||
:disabled="savingState"
|
||||
@@ -788,13 +807,13 @@ onBeforeUnmount(() => {
|
||||
}"
|
||||
class="font-semibold text-sm tracking-wide"
|
||||
>
|
||||
{{ opt.label }}
|
||||
{{ t(opt.label) }}
|
||||
<span
|
||||
v-if="opt.id === 'save' && savingState"
|
||||
:style="{ color: 'var(--console-play-save-status-text)' }"
|
||||
class="ml-2 text-[10px] font-medium tracking-wide animate-pulse"
|
||||
>
|
||||
SAVING…
|
||||
{{ t("console.game-saving") }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@@ -802,7 +821,7 @@ onBeforeUnmount(() => {
|
||||
:style="{ color: 'var(--console-modal-text-secondary)' }"
|
||||
class="text-xs mt-0.5 opacity-50"
|
||||
>
|
||||
{{ opt.desc }}
|
||||
{{ t(opt.desc) }}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
|
||||
43
frontend/src/locales/cs_CZ/console.json
Normal file
43
frontend/src/locales/cs_CZ/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Kolekce",
|
||||
"console": "Konzole",
|
||||
"console-settings": "Nastavení konzole",
|
||||
"default": "Výchozí",
|
||||
"detail-file": "Soubor",
|
||||
"detail-size": "Velikost souboru",
|
||||
"disabled": "Zakázáno",
|
||||
"emulator-cdn": "Načítání emulátoru (CDN)…",
|
||||
"emulator-failed": "Nepodařilo se načíst emulátor",
|
||||
"emulator-loading": "Načítání emulátoru…",
|
||||
"enabled": "Povoleno",
|
||||
"exit-console-mode": "Ukončit režim konzole",
|
||||
"exit-game": "Stiskni Start + Select (nebo Backspace) pro ukončení",
|
||||
"fullscreen": "Celá obrazovka",
|
||||
"game-detail": "Detaily",
|
||||
"game-exit": "Ukončit hru",
|
||||
"game-exit-cancel": "Zrušit",
|
||||
"game-exit-cancel-desc": "Vrátit se zpět do hry",
|
||||
"game-exit-nosave": "Ukončit bez uložení",
|
||||
"game-exit-nosave-desc": "Okamžitě ukončí, postup od posledního uložení bude ztracen",
|
||||
"game-exit-save": "Uložit a ukončit",
|
||||
"game-exit-save-desc": "Uloží aktuální stav a ukončí hru",
|
||||
"game-play": "Hrát",
|
||||
"game-saving": "UKLÁDÁM…",
|
||||
"games-n": "{n} her | {n} hra | {n} hry | {n} her",
|
||||
"loading-platforms": "Načítání platforem…",
|
||||
"nav-back": "Zpět",
|
||||
"nav-delete": "Smazat",
|
||||
"nav-favorite": "Oblíbené",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navigace",
|
||||
"nav-select": "Vybrat",
|
||||
"platforms": "Platformy",
|
||||
"recently-played": "Nedávno hrané",
|
||||
"save-states": "ULOŽENÉ STAVY",
|
||||
"screenshots": "Snímky obrazovky",
|
||||
"settings": "Nastavení",
|
||||
"smart-collections": "Chytré kolekce",
|
||||
"sound-effects": "Zvukové efekty",
|
||||
"theme": "Téma",
|
||||
"virtual-collections": "Automaticky vytvořené kolekce"
|
||||
}
|
||||
43
frontend/src/locales/de_DE/console.json
Normal file
43
frontend/src/locales/de_DE/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Sammlungen",
|
||||
"console": "Konsole",
|
||||
"console-settings": "Konsolen-Einstellungen",
|
||||
"default": "Standard",
|
||||
"detail-file": "Datei",
|
||||
"detail-size": "Dateigröße",
|
||||
"disabled": "Deaktiviert",
|
||||
"emulator-cdn": "Lade Emulator (CDN)…",
|
||||
"emulator-failed": "Fehler beim Laden des Emulators",
|
||||
"emulator-loading": "Lade Emulator…",
|
||||
"enabled": "Aktiviert",
|
||||
"exit-console-mode": "Konsolenmodus verlassen",
|
||||
"exit-game": "Drücke Start + Select (oder Rücktaste) zum Beenden",
|
||||
"fullscreen": "Vollbild",
|
||||
"game-detail": "Details",
|
||||
"game-exit": "Spiel beenden",
|
||||
"game-exit-cancel": "Abbrechen",
|
||||
"game-exit-cancel-desc": "Zum Spiel zurückkehren",
|
||||
"game-exit-nosave": "Beenden ohne Speichern",
|
||||
"game-exit-nosave-desc": "Sofort verlassen, Fortschritt seit letztem Speicherstand geht verloren",
|
||||
"game-exit-save": "Speichern & Beenden",
|
||||
"game-exit-save-desc": "Aktuellen Zustand speichern und beenden",
|
||||
"game-play": "Spielen",
|
||||
"game-saving": "SPEICHERE…",
|
||||
"games-n": "{n} Spiel | {n} Spiele",
|
||||
"loading-platforms": "Lade Plattformen…",
|
||||
"nav-back": "Zurück",
|
||||
"nav-delete": "Löschen",
|
||||
"nav-favorite": "Favorit",
|
||||
"nav-menu": "Menü",
|
||||
"nav-navigation": "Navigation",
|
||||
"nav-select": "Auswählen",
|
||||
"platforms": "Plattformen",
|
||||
"recently-played": "Zuletzt gespielt",
|
||||
"save-states": "SPEICHERSTÄNDE",
|
||||
"screenshots": "Bildschirmfotos",
|
||||
"settings": "Einstellungen",
|
||||
"smart-collections": "Intelligente Sammlungen",
|
||||
"sound-effects": "Soundeffekte",
|
||||
"theme": "Design",
|
||||
"virtual-collections": "Automatisch generierte Sammlungen"
|
||||
}
|
||||
43
frontend/src/locales/en_GB/console.json
Normal file
43
frontend/src/locales/en_GB/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Collections",
|
||||
"console": "Console",
|
||||
"console-settings": "Console Settings",
|
||||
"default": "Default",
|
||||
"detail-file": "File",
|
||||
"detail-size": "File Size",
|
||||
"disabled": "Disabled",
|
||||
"emulator-cdn": "Loading emulator (CDN)…",
|
||||
"emulator-failed": "Failed to load emulator",
|
||||
"emulator-loading": "Loading emulator…",
|
||||
"enabled": "Enabled",
|
||||
"exit-console-mode": "Exit Console Mode",
|
||||
"exit-game": "Press Start + Select (or Backspace) to exit",
|
||||
"fullscreen": "Fullscreen",
|
||||
"game-detail": "Details",
|
||||
"game-exit": "Exit Game",
|
||||
"game-exit-cancel": "Cancel",
|
||||
"game-exit-cancel-desc": "Return to the game",
|
||||
"game-exit-nosave": "Exit Without Saving",
|
||||
"game-exit-nosave-desc": "Leave immediately, progress since last save state is lost",
|
||||
"game-exit-save": "Save & Exit",
|
||||
"game-exit-save-desc": "Save current state, then quit",
|
||||
"game-play": "Play",
|
||||
"game-saving": "SAVING…",
|
||||
"games-n": "{n} game | {n} games",
|
||||
"loading-platforms": "Loading Platforms…",
|
||||
"nav-back": "Back",
|
||||
"nav-delete": "Delete",
|
||||
"nav-favorite": "Favourite",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navigation",
|
||||
"nav-select": "Select",
|
||||
"platforms": "Platforms",
|
||||
"recently-played": "Recently Played",
|
||||
"save-states": "SAVE STATES",
|
||||
"screenshots": "Screenshots",
|
||||
"settings": "Settings",
|
||||
"smart-collections": "Smart Collections",
|
||||
"sound-effects": "Sound Effects",
|
||||
"theme": "Theme",
|
||||
"virtual-collections": "Autogenerated Collections"
|
||||
}
|
||||
43
frontend/src/locales/en_US/console.json
Normal file
43
frontend/src/locales/en_US/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Collections",
|
||||
"console": "Console",
|
||||
"console-settings": "Console Settings",
|
||||
"default": "Default",
|
||||
"detail-file": "File",
|
||||
"detail-size": "File Size",
|
||||
"disabled": "Disabled",
|
||||
"emulator-cdn": "Loading emulator (CDN)…",
|
||||
"emulator-failed": "Failed to load emulator",
|
||||
"emulator-loading": "Loading emulator…",
|
||||
"enabled": "Enabled",
|
||||
"exit-console-mode": "Exit Console Mode",
|
||||
"exit-game": "Press Start + Select (or Backspace) to exit",
|
||||
"fullscreen": "Fullscreen",
|
||||
"game-detail": "Details",
|
||||
"game-exit": "Exit Game",
|
||||
"game-exit-cancel": "Cancel",
|
||||
"game-exit-cancel-desc": "Return to the game",
|
||||
"game-exit-nosave": "Exit Without Saving",
|
||||
"game-exit-nosave-desc": "Leave immediately, progress since last save state is lost",
|
||||
"game-exit-save": "Save & Exit",
|
||||
"game-exit-save-desc": "Save current state, then quit",
|
||||
"game-play": "Play",
|
||||
"game-saving": "SAVING…",
|
||||
"games-n": "{n} game | {n} games",
|
||||
"loading-platforms": "Loading Platforms…",
|
||||
"nav-back": "Back",
|
||||
"nav-delete": "Delete",
|
||||
"nav-favorite": "Favorite",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navigation",
|
||||
"nav-select": "Select",
|
||||
"platforms": "Platforms",
|
||||
"recently-played": "Recently Played",
|
||||
"save-states": "SAVE STATES",
|
||||
"screenshots": "Screenshots",
|
||||
"settings": "Settings",
|
||||
"smart-collections": "Smart Collections",
|
||||
"sound-effects": "Sound Effects",
|
||||
"theme": "Theme",
|
||||
"virtual-collections": "Autogenerated Collections"
|
||||
}
|
||||
43
frontend/src/locales/es_ES/console.json
Normal file
43
frontend/src/locales/es_ES/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Colecciones",
|
||||
"console": "Consola",
|
||||
"console-settings": "Configuración de la consola",
|
||||
"default": "Predeterminado",
|
||||
"detail-file": "Archivo",
|
||||
"detail-size": "Tamaño del archivo",
|
||||
"disabled": "Desactivado",
|
||||
"emulator-cdn": "Cargando emulador (CDN)…",
|
||||
"emulator-failed": "Error al cargar el emulador",
|
||||
"emulator-loading": "Cargando emulador…",
|
||||
"enabled": "Activado",
|
||||
"exit-console-mode": "Salir del modo consola",
|
||||
"exit-game": "Presiona Start + Select (o Retroceso) para salir",
|
||||
"fullscreen": "Pantalla completa",
|
||||
"game-detail": "Detalles",
|
||||
"game-exit": "Salir del juego",
|
||||
"game-exit-cancel": "Cancelar",
|
||||
"game-exit-cancel-desc": "Volver al juego",
|
||||
"game-exit-nosave": "Salir sin guardar",
|
||||
"game-exit-nosave-desc": "Salir inmediatamente, se perderá el progreso desde el último estado guardado",
|
||||
"game-exit-save": "Guardar y salir",
|
||||
"game-exit-save-desc": "Guardar estado actual y salir",
|
||||
"game-play": "Jugar",
|
||||
"game-saving": "GUARDANDO…",
|
||||
"games-n": "{n} juego | {n} juegos",
|
||||
"loading-platforms": "Cargando plataformas…",
|
||||
"nav-back": "Atrás",
|
||||
"nav-delete": "Eliminar",
|
||||
"nav-favorite": "Favorito",
|
||||
"nav-menu": "Menú",
|
||||
"nav-navigation": "Navegación",
|
||||
"nav-select": "Seleccionar",
|
||||
"platforms": "Plataformas",
|
||||
"recently-played": "Jugado recientemente",
|
||||
"save-states": "ESTADOS GUARDADOS",
|
||||
"screenshots": "Capturas de pantalla",
|
||||
"settings": "Configuración",
|
||||
"smart-collections": "Colecciones inteligentes",
|
||||
"sound-effects": "Efectos de sonido",
|
||||
"theme": "Tema",
|
||||
"virtual-collections": "Colecciones autogeneradas"
|
||||
}
|
||||
43
frontend/src/locales/fr_FR/console.json
Normal file
43
frontend/src/locales/fr_FR/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Collections",
|
||||
"console": "Console",
|
||||
"console-settings": "Paramètres de la console",
|
||||
"default": "Par défaut",
|
||||
"detail-file": "Fichier",
|
||||
"detail-size": "Taille du fichier",
|
||||
"disabled": "Désactivé",
|
||||
"emulator-cdn": "Chargement de l'émulateur (CDN)…",
|
||||
"emulator-failed": "Échec du chargement de l'émulateur",
|
||||
"emulator-loading": "Chargement de l'émulateur…",
|
||||
"enabled": "Activé",
|
||||
"exit-console-mode": "Quitter le mode console",
|
||||
"exit-game": "Appuyez sur Start + Select (ou Retour arrière) pour quitter",
|
||||
"fullscreen": "Plein écran",
|
||||
"game-detail": "Détails",
|
||||
"game-exit": "Quitter le jeu",
|
||||
"game-exit-cancel": "Annuler",
|
||||
"game-exit-cancel-desc": "Revenir au jeu",
|
||||
"game-exit-nosave": "Quitter sans sauvegarder",
|
||||
"game-exit-nosave-desc": "Quitter immédiatement, la progression depuis le dernier état sauvegardé sera perdue",
|
||||
"game-exit-save": "Sauvegarder et quitter",
|
||||
"game-exit-save-desc": "Sauvegarder l'état actuel, puis quitter",
|
||||
"game-play": "Jouer",
|
||||
"game-saving": "SAUVEGARDE…",
|
||||
"games-n": "{n} jeu | {n} jeux",
|
||||
"loading-platforms": "Chargement des plateformes…",
|
||||
"nav-back": "Retour",
|
||||
"nav-delete": "Supprimer",
|
||||
"nav-favorite": "Favori",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navigation",
|
||||
"nav-select": "Sélectionner",
|
||||
"platforms": "Plateformes",
|
||||
"recently-played": "Récemment joués",
|
||||
"save-states": "ÉTATS SAUVEGARDÉS",
|
||||
"screenshots": "Captures d'écran",
|
||||
"settings": "Paramètres",
|
||||
"smart-collections": "Collections intelligentes",
|
||||
"sound-effects": "Effets sonores",
|
||||
"theme": "Thème",
|
||||
"virtual-collections": "Collections auto-générées"
|
||||
}
|
||||
42
frontend/src/locales/it_IT/console.json
Normal file
42
frontend/src/locales/it_IT/console.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"collections": "Collezioni",
|
||||
"console": "Console",
|
||||
"console-settings": "Impostazioni della console",
|
||||
"default": "Predefinito",
|
||||
"detail-file": "File",
|
||||
"detail-size": "Dimensione file",
|
||||
"disabled": "Disabilitato",
|
||||
"emulator-cdn": "Caricamento emulatore (CDN)...",
|
||||
"emulator-failed": "Impossibile caricare l'emulatore",
|
||||
"emulator-loading": "Caricamento emulatore...",
|
||||
"enabled": "Abilitato",
|
||||
"exit-console-mode": "Esci dalla modalit'a console",
|
||||
"exit-game": "Premi Start + Select (o Backspace) per uscire",
|
||||
"fullscreen": "Schermo intero",
|
||||
"game-detail": "Dettagli",
|
||||
"game-exit": "Esci dal gioco",
|
||||
"game-exit-cancel": "Annulla",
|
||||
"game-exit-cancel-desc": "Ritorna al gioco",
|
||||
"game-exit-nosave": "Esci senza salvare",
|
||||
"game-exit-nosave-desc": "Esci immediatamente, i progressi dall'ultimo stato salvato andranno persi",
|
||||
"game-exit-save": "Salva ed esci",
|
||||
"game-exit-save-desc": "Salva lo stato corrente, quindi esci",
|
||||
"game-play": "Gioca",
|
||||
"games-n": "{n} gioco | {n} giochi",
|
||||
"loading-platforms": "Caricamento piattaforme...",
|
||||
"nav-back": "Indietro",
|
||||
"nav-delete": "Elimina",
|
||||
"nav-favorite": "Preferito",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navigazione",
|
||||
"nav-select": "Seleziona",
|
||||
"platforms": "Piattaforme",
|
||||
"recently-played": "Giocati di recente",
|
||||
"save-states": "SALVATAGGI",
|
||||
"screenshots": "Screenshot",
|
||||
"settings": "Impostazioni",
|
||||
"smart-collections": "Collezioni intelligenti",
|
||||
"sound-effects": "Effetti sonori",
|
||||
"theme": "Tema",
|
||||
"virtual-collections": "Collezioni autogenerate"
|
||||
}
|
||||
43
frontend/src/locales/ja_JP/console.json
Normal file
43
frontend/src/locales/ja_JP/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "コレクション",
|
||||
"console": "コンソール",
|
||||
"console-settings": "コンソール設定",
|
||||
"default": "デフォルト",
|
||||
"detail-file": "ファイル",
|
||||
"detail-size": "ファイルサイズ",
|
||||
"disabled": "無効",
|
||||
"emulator-cdn": "エミュレータを読み込み中 (CDN)…",
|
||||
"emulator-failed": "エミュレータの読み込みに失敗しました",
|
||||
"emulator-loading": "エミュレータを読み込み中…",
|
||||
"enabled": "有効",
|
||||
"exit-console-mode": "コンソールモードを終了",
|
||||
"exit-game": "Start + Select (または Backspace) を押して終了",
|
||||
"fullscreen": "フルスクリーン",
|
||||
"game-detail": "詳細",
|
||||
"game-exit": "ゲームを終了",
|
||||
"game-exit-cancel": "キャンセル",
|
||||
"game-exit-cancel-desc": "ゲームに戻る",
|
||||
"game-exit-nosave": "保存せずに終了",
|
||||
"game-exit-nosave-desc": "すぐに終了します。最後のセーブ状態以降の進行状況は失われます",
|
||||
"game-exit-save": "保存して終了",
|
||||
"game-exit-save-desc": "現在の状態を保存して終了",
|
||||
"game-play": "プレイ",
|
||||
"game-saving": "保存中…",
|
||||
"games-n": "{n} 個のゲーム",
|
||||
"loading-platforms": "プラットフォームを読み込み中…",
|
||||
"nav-back": "戻る",
|
||||
"nav-delete": "削除",
|
||||
"nav-favorite": "お気に入り",
|
||||
"nav-menu": "メニュー",
|
||||
"nav-navigation": "ナビゲーション",
|
||||
"nav-select": "選択",
|
||||
"platforms": "プラットフォーム",
|
||||
"recently-played": "最近プレイしたゲーム",
|
||||
"save-states": "セーブ状態",
|
||||
"screenshots": "スクリーンショット",
|
||||
"settings": "設定",
|
||||
"smart-collections": "スマートコレクション",
|
||||
"sound-effects": "効果音",
|
||||
"theme": "テーマ",
|
||||
"virtual-collections": "自動生成コレクション"
|
||||
}
|
||||
43
frontend/src/locales/ko_KR/console.json
Normal file
43
frontend/src/locales/ko_KR/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "컬렉션",
|
||||
"console": "콘솔",
|
||||
"console-settings": "콘솔 설정",
|
||||
"default": "기본값",
|
||||
"detail-file": "파일",
|
||||
"detail-size": "파일 크기",
|
||||
"disabled": "비활성화됨",
|
||||
"emulator-cdn": "에뮬레이터 로드 중 (CDN)…",
|
||||
"emulator-failed": "에뮬레이터 로드 실패",
|
||||
"emulator-loading": "에뮬레이터 로드 중…",
|
||||
"enabled": "활성화됨",
|
||||
"exit-console-mode": "콘솔 모드 종료",
|
||||
"exit-game": "시작 + 선택 (또는 백스페이스) 키를 눌러 종료",
|
||||
"fullscreen": "전체 화면",
|
||||
"game-detail": "세부 정보",
|
||||
"game-exit": "게임 종료",
|
||||
"game-exit-cancel": "취소",
|
||||
"game-exit-cancel-desc": "게임으로 돌아가기",
|
||||
"game-exit-nosave": "저장하지 않고 종료",
|
||||
"game-exit-nosave-desc": "즉시 종료, 마지막 세이브 이후 진행 상황은 손실됨",
|
||||
"game-exit-save": "저장 및 종료",
|
||||
"game-exit-save-desc": "현재 상태 저장 후 종료",
|
||||
"game-play": "재생",
|
||||
"game-saving": "저장 중…",
|
||||
"games-n": "{n} 게임",
|
||||
"loading-platforms": "플랫폼 로드 중…",
|
||||
"nav-back": "뒤로",
|
||||
"nav-delete": "삭제",
|
||||
"nav-favorite": "즐겨찾기",
|
||||
"nav-menu": "메뉴",
|
||||
"nav-navigation": "내비게이션",
|
||||
"nav-select": "선택",
|
||||
"platforms": "플랫폼",
|
||||
"recently-played": "최근 플레이함",
|
||||
"save-states": "세이브 상태",
|
||||
"screenshots": "스크린샷",
|
||||
"settings": "설정",
|
||||
"smart-collections": "스마트 컬렉션",
|
||||
"sound-effects": "음향 효과",
|
||||
"theme": "테마",
|
||||
"virtual-collections": "자동 생성 컬렉션"
|
||||
}
|
||||
43
frontend/src/locales/pl_PL/console.json
Normal file
43
frontend/src/locales/pl_PL/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Kolekcje",
|
||||
"console": "Konsola",
|
||||
"console-settings": "Ustawienia konsoli",
|
||||
"default": "Domyślne",
|
||||
"detail-file": "Plik",
|
||||
"detail-size": "Rozmiar pliku",
|
||||
"disabled": "Wyłączone",
|
||||
"emulator-cdn": "Ładowanie emulatora (CDN)...",
|
||||
"emulator-failed": "Nie udało się załadować emulatora",
|
||||
"emulator-loading": "Ładowanie emulatora...",
|
||||
"enabled": "Włączone",
|
||||
"exit-console-mode": "Opuść tryb konsoli",
|
||||
"exit-game": "Naciśnij Start + Select (lub Backspace), aby wyjść",
|
||||
"fullscreen": "Pełny ekran",
|
||||
"game-detail": "Szczegóły",
|
||||
"game-exit": "Zakończ grę",
|
||||
"game-exit-cancel": "Anuluj",
|
||||
"game-exit-cancel-desc": "Wróć do gry",
|
||||
"game-exit-nosave": "Zakończ bez zapisywania",
|
||||
"game-exit-nosave-desc": "Wyjdź natychmiast, postęp od ostatniego zapisu zostanie utracony",
|
||||
"game-exit-save": "Zapisz i zakończ",
|
||||
"game-exit-save-desc": "Zapisz bieżący stan, a następnie zakończ",
|
||||
"game-play": "Graj",
|
||||
"game-saving": "ZAPISYWANIE...",
|
||||
"games-n": "{n} gra | {n} gry | {n} gier",
|
||||
"loading-platforms": "Ładowanie platform...",
|
||||
"nav-back": "Wstecz",
|
||||
"nav-delete": "Usuń",
|
||||
"nav-favorite": "Ulubione",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Nawigacja",
|
||||
"nav-select": "Wybierz",
|
||||
"platforms": "Platformy",
|
||||
"recently-played": "Ostatnio grane",
|
||||
"save-states": "ZAPISANE STANY",
|
||||
"screenshots": "Zrzuty ekranu",
|
||||
"settings": "Ustawienia",
|
||||
"smart-collections": "Inteligentne kolekcje",
|
||||
"sound-effects": "Efekty dźwiękowe",
|
||||
"theme": "Motyw",
|
||||
"virtual-collections": "Automatycznie generowane kolekcje"
|
||||
}
|
||||
43
frontend/src/locales/pt_BR/console.json
Normal file
43
frontend/src/locales/pt_BR/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Coleções",
|
||||
"console": "Console",
|
||||
"console-settings": "Configurações do Console",
|
||||
"default": "Padrão",
|
||||
"detail-file": "Arquivo",
|
||||
"detail-size": "Tamanho do Arquivo",
|
||||
"disabled": "Desativado",
|
||||
"emulator-cdn": "Carregando emulador (CDN)...",
|
||||
"emulator-failed": "Falha ao carregar emulador",
|
||||
"emulator-loading": "Carregando emulador...",
|
||||
"enabled": "Ativado",
|
||||
"exit-console-mode": "Sair do Modo Console",
|
||||
"exit-game": "Pressione Start + Select (ou Backspace) para sair",
|
||||
"fullscreen": "Tela Cheia",
|
||||
"game-detail": "Detalhes",
|
||||
"game-exit": "Sair do Jogo",
|
||||
"game-exit-cancel": "Cancelar",
|
||||
"game-exit-cancel-desc": "Voltar ao jogo",
|
||||
"game-exit-nosave": "Sair Sem Salvar",
|
||||
"game-exit-nosave-desc": "Sair imediatamente, o progresso desde o último estado salvo será perdido",
|
||||
"game-exit-save": "Salvar e Sair",
|
||||
"game-exit-save-desc": "Salvar estado atual e sair",
|
||||
"game-play": "Jogar",
|
||||
"game-saving": "SALVANDO...",
|
||||
"games-n": "{n} jogo | {n} jogos",
|
||||
"loading-platforms": "Carregando Plataformas...",
|
||||
"nav-back": "Voltar",
|
||||
"nav-delete": "Excluir",
|
||||
"nav-favorite": "Favorito",
|
||||
"nav-menu": "Menu",
|
||||
"nav-navigation": "Navegação",
|
||||
"nav-select": "Selecionar",
|
||||
"platforms": "Plataformas",
|
||||
"recently-played": "Jogados Recentemente",
|
||||
"save-states": "ESTADOS SALVOS",
|
||||
"screenshots": "Capturas de Tela",
|
||||
"settings": "Configurações",
|
||||
"smart-collections": "Coleções Inteligentes",
|
||||
"sound-effects": "Efeitos Sonoros",
|
||||
"theme": "Tema",
|
||||
"virtual-collections": "Coleções Geradas Automaticamente"
|
||||
}
|
||||
43
frontend/src/locales/ro_RO/console.json
Normal file
43
frontend/src/locales/ro_RO/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Colecții",
|
||||
"console": "Consolă",
|
||||
"console-settings": "Setări consolă",
|
||||
"default": "Implicit",
|
||||
"detail-file": "Fișier",
|
||||
"detail-size": "Dimensiune fișier",
|
||||
"disabled": "Dezactivat",
|
||||
"emulator-cdn": "Se încarcă emulatorul (CDN)...",
|
||||
"emulator-failed": "Încărcarea emulatorului a eșuat",
|
||||
"emulator-loading": "Se încarcă emulatorul...",
|
||||
"enabled": "Activat",
|
||||
"exit-console-mode": "Ieși din modul consolă",
|
||||
"exit-game": "Apasă Start + Select (sau Backspace) pentru a ieși",
|
||||
"fullscreen": "Ecran complet",
|
||||
"game-detail": "Detalii",
|
||||
"game-exit": "Ieși din joc",
|
||||
"game-exit-cancel": "Anulează",
|
||||
"game-exit-cancel-desc": "Revino la joc",
|
||||
"game-exit-nosave": "Ieși fără a salva",
|
||||
"game-exit-nosave-desc": "Ieși imediat, progresul de la ultima salvare se va pierde",
|
||||
"game-exit-save": "Salvează și ieși",
|
||||
"game-exit-save-desc": "Salvează starea curentă, apoi ieși",
|
||||
"game-play": "Joacă",
|
||||
"game-saving": "SE SALVEAZĂ...",
|
||||
"games-n": "{n} joc | {n} jocuri",
|
||||
"loading-platforms": "Se încarcă platformele...",
|
||||
"nav-back": "Înapoi",
|
||||
"nav-delete": "Șterge",
|
||||
"nav-favorite": "Favorit",
|
||||
"nav-menu": "Meniu",
|
||||
"nav-navigation": "Navigare",
|
||||
"nav-select": "Selectează",
|
||||
"platforms": "Platforme",
|
||||
"recently-played": "Jucate recent",
|
||||
"save-states": "STĂRI SALVATE",
|
||||
"screenshots": "Screenshot-uri",
|
||||
"settings": "Setări",
|
||||
"smart-collections": "Colecții inteligente",
|
||||
"sound-effects": "Efecte sonore",
|
||||
"theme": "Temă",
|
||||
"virtual-collections": "Colecții generate automat"
|
||||
}
|
||||
43
frontend/src/locales/ru_RU/console.json
Normal file
43
frontend/src/locales/ru_RU/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "Коллекции",
|
||||
"console": "Консоль",
|
||||
"console-settings": "Настройки консоли",
|
||||
"default": "По умолчанию",
|
||||
"detail-file": "Файл",
|
||||
"detail-size": "Размер файла",
|
||||
"disabled": "Отключено",
|
||||
"emulator-cdn": "Загрузка эмулятора (CDN)...",
|
||||
"emulator-failed": "Не удалось загрузить эмулятор",
|
||||
"emulator-loading": "Загрузка эмулятора...",
|
||||
"enabled": "Включено",
|
||||
"exit-console-mode": "Выйти из режима консоли",
|
||||
"exit-game": "Нажмите Start + Select (или Backspace) для выхода",
|
||||
"fullscreen": "Полноэкранный режим",
|
||||
"game-detail": "Детали",
|
||||
"game-exit": "Выйти из игры",
|
||||
"game-exit-cancel": "Отмена",
|
||||
"game-exit-cancel-desc": "Вернуться в игру",
|
||||
"game-exit-nosave": "Выйти без сохранения",
|
||||
"game-exit-nosave-desc": "Выйти немедленно, прогресс с момента последнего сохранения будет утерян",
|
||||
"game-exit-save": "Сохранить и выйти",
|
||||
"game-exit-save-desc": "Сохранить текущее состояние и выйти",
|
||||
"game-play": "Играть",
|
||||
"game-saving": "СОХРАНЕНИЕ...",
|
||||
"games-n": "{n} игра | {n} игры | {n} игр",
|
||||
"loading-platforms": "Загрузка платформ...",
|
||||
"nav-back": "Назад",
|
||||
"nav-delete": "Удалить",
|
||||
"nav-favorite": "Избранное",
|
||||
"nav-menu": "Меню",
|
||||
"nav-navigation": "Навигация",
|
||||
"nav-select": "Выбрать",
|
||||
"platforms": "Платформы",
|
||||
"recently-played": "Недавно сыгранное",
|
||||
"save-states": "СОХРАНЕННЫЕ СОСТОЯНИЯ",
|
||||
"screenshots": "Скриншоты",
|
||||
"settings": "Настройки",
|
||||
"smart-collections": "Умные коллекции",
|
||||
"sound-effects": "Звуковые эффекты",
|
||||
"theme": "Тема",
|
||||
"virtual-collections": "Автосгенерированные коллекции"
|
||||
}
|
||||
43
frontend/src/locales/zh_CN/console.json
Normal file
43
frontend/src/locales/zh_CN/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "合集",
|
||||
"console": "主机",
|
||||
"console-settings": "主机设置",
|
||||
"default": "默认",
|
||||
"detail-file": "文件",
|
||||
"detail-size": "文件大小",
|
||||
"disabled": "已禁用",
|
||||
"emulator-cdn": "正在加载模拟器 (CDN)…",
|
||||
"emulator-failed": "模拟器加载失败",
|
||||
"emulator-loading": "正在加载模拟器…",
|
||||
"enabled": "已启用",
|
||||
"exit-console-mode": "退出主机模式",
|
||||
"exit-game": "按开始+选择 (或退格键) 退出",
|
||||
"fullscreen": "全屏",
|
||||
"game-detail": "详情",
|
||||
"game-exit": "退出游戏",
|
||||
"game-exit-cancel": "取消",
|
||||
"game-exit-cancel-desc": "返回游戏",
|
||||
"game-exit-nosave": "退出不保存",
|
||||
"game-exit-nosave-desc": "立即退出,自上次存档以来的进度将会丢失",
|
||||
"game-exit-save": "保存并退出",
|
||||
"game-exit-save-desc": "保存当前状态,然后退出",
|
||||
"game-play": "游玩",
|
||||
"game-saving": "正在保存…",
|
||||
"games-n": "{n} 个游戏",
|
||||
"loading-platforms": "正在加载平台…",
|
||||
"nav-back": "返回",
|
||||
"nav-delete": "删除",
|
||||
"nav-favorite": "收藏",
|
||||
"nav-menu": "菜单",
|
||||
"nav-navigation": "导航",
|
||||
"nav-select": "选择",
|
||||
"platforms": "平台",
|
||||
"recently-played": "最近游玩",
|
||||
"save-states": "存档状态",
|
||||
"screenshots": "截图",
|
||||
"settings": "设置",
|
||||
"smart-collections": "智能合集",
|
||||
"sound-effects": "音效",
|
||||
"theme": "主题",
|
||||
"virtual-collections": "自动创建合集"
|
||||
}
|
||||
43
frontend/src/locales/zh_TW/console.json
Normal file
43
frontend/src/locales/zh_TW/console.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"collections": "收藏集",
|
||||
"console": "主機",
|
||||
"console-settings": "主機設定",
|
||||
"default": "預設",
|
||||
"detail-file": "檔案",
|
||||
"detail-size": "檔案大小",
|
||||
"disabled": "已停用",
|
||||
"emulator-cdn": "正在載入模擬器 (CDN)…",
|
||||
"emulator-failed": "模擬器載入失敗",
|
||||
"emulator-loading": "正在載入模擬器…",
|
||||
"enabled": "已啟用",
|
||||
"exit-console-mode": "離開主機模式",
|
||||
"exit-game": "按開始+選擇 (或退格鍵) 離開",
|
||||
"fullscreen": "全螢幕",
|
||||
"game-detail": "詳細資料",
|
||||
"game-exit": "離開遊戲",
|
||||
"game-exit-cancel": "取消",
|
||||
"game-exit-cancel-desc": "返回遊戲",
|
||||
"game-exit-nosave": "退出但不儲存",
|
||||
"game-exit-nosave-desc": "立即離開,自上次存檔以來的進度將會遺失",
|
||||
"game-exit-save": "儲存並退出",
|
||||
"game-exit-save-desc": "儲存目前狀態,然後退出",
|
||||
"game-play": "遊玩",
|
||||
"game-saving": "正在儲存…",
|
||||
"games-n": "{n} 個遊戲",
|
||||
"loading-platforms": "正在載入平台…",
|
||||
"nav-back": "返回",
|
||||
"nav-delete": "刪除",
|
||||
"nav-favorite": "我的最愛",
|
||||
"nav-menu": "選單",
|
||||
"nav-navigation": "導覽",
|
||||
"nav-select": "選擇",
|
||||
"platforms": "平台",
|
||||
"recently-played": "最近遊玩過的遊戲",
|
||||
"save-states": "存檔狀態",
|
||||
"screenshots": "螢幕截圖",
|
||||
"settings": "設定",
|
||||
"smart-collections": "智慧收藏集",
|
||||
"sound-effects": "音效",
|
||||
"theme": "主題",
|
||||
"virtual-collections": "自動產生的收藏集"
|
||||
}
|
||||
Reference in New Issue
Block a user