aboutsummaryrefslogtreecommitdiff
path: root/src-vue/src
diff options
context:
space:
mode:
Diffstat (limited to 'src-vue/src')
-rw-r--r--src-vue/src/App.vue250
-rw-r--r--src-vue/src/assets/mp_colony020033.jpgbin0 -> 261643 bytes
-rw-r--r--src-vue/src/assets/thunderstore-icon.pngbin0 -> 7091 bytes
-rw-r--r--src-vue/src/assets/vue.svg1
-rw-r--r--src-vue/src/assets/wallpaperflare.com_wallpaper.jpgbin0 -> 586994 bytes
-rw-r--r--src-vue/src/components/NotificationButton.vue81
-rw-r--r--src-vue/src/i18n/lang/da.json166
-rw-r--r--src-vue/src/i18n/lang/de.json177
-rw-r--r--src-vue/src/i18n/lang/en.json200
-rw-r--r--src-vue/src/i18n/lang/es.json175
-rw-r--r--src-vue/src/i18n/lang/fr.json177
-rw-r--r--src-vue/src/i18n/lang/it.json175
-rw-r--r--src-vue/src/i18n/lang/pl.json177
-rw-r--r--src-vue/src/i18n/lang/ru.json178
-rw-r--r--src-vue/src/i18n/lang/zh_Hans.json169
-rw-r--r--src-vue/src/main.ts69
-rw-r--r--src-vue/src/plugins/modules/notifications.ts31
-rw-r--r--src-vue/src/plugins/store.ts9
-rw-r--r--src-vue/src/style.css56
-rw-r--r--src-vue/src/utils/GameInstall.ts5
-rw-r--r--src-vue/src/utils/NorthstarState.ts8
-rw-r--r--src-vue/src/utils/ReleaseCanal.ts4
-rw-r--r--src-vue/src/utils/SortOptions.d.ts8
-rw-r--r--src-vue/src/utils/Tabs.ts8
-rw-r--r--src-vue/src/utils/filter.ts26
-rw-r--r--src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts7
-rw-r--r--src-vue/src/utils/thunderstore/version.ts33
-rw-r--r--src-vue/src/views/ChangelogView.vue10
-rw-r--r--src-vue/src/views/DeveloperView.vue10
-rw-r--r--src-vue/src/views/ModsView.vue13
-rw-r--r--src-vue/src/views/PlayView.vue10
-rw-r--r--src-vue/src/views/RepairView.vue10
-rw-r--r--src-vue/src/views/SettingsView.vue8
-rw-r--r--src-vue/src/views/mods/LocalModsView.vue8
-rw-r--r--src-vue/src/views/mods/ThunderstoreModsView.vue10
35 files changed, 2171 insertions, 98 deletions
diff --git a/src-vue/src/App.vue b/src-vue/src/App.vue
index 0426defe..97b20562 100644
--- a/src-vue/src/App.vue
+++ b/src-vue/src/App.vue
@@ -1,6 +1,13 @@
-<script setup lang="ts">
+<script lang="ts">
+import ChangelogView from './views/ChangelogView.vue';
+import DeveloperView from './views/DeveloperView.vue';
+import PlayView from './views/PlayView.vue';
+import ModsView from './views/ModsView.vue';
+import SettingsView from './views/SettingsView.vue';
import { ref } from "vue";
+import { store } from './plugins/store';
import { invoke } from "@tauri-apps/api/core";
+import NotificationButton from "./components/NotificationButton.vue";
const greetMsg = ref("");
const name = ref("");
@@ -9,14 +16,65 @@ async function greet() {
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
greetMsg.value = await invoke("greet", { name: name.value });
}
+
+export default {
+ components: {
+ ChangelogView,
+ DeveloperView,
+ PlayView,
+ SettingsView,
+ ModsView
+ },
+ data() {
+ return {}
+ },
+ mounted: async function() {
+
+ // Initialize interface language
+ let lang = "en"
+ this.$root!.$i18n.locale = lang;
+ },
+ methods: {
+ close() {
+ invoke("close_application");
+ }
+ },
+ computed: {
+ bgStyle(): string {
+ // @ts-ignore
+ const shouldBlur = this.$route.path !== "/";
+ return `filter: brightness(0.8) ${shouldBlur ? 'blur(5px)' : ''};`;
+ }
+ }
+}
</script>
<template>
- <main class="container">
- <h1>Welcome to Tauri + Vue</h1>
-
- <div class="row">
- </div>
+ <div class="app-inner">
+ <div id="fc_bg__container" :style="bgStyle"/>
+
+ <nav id="fc_menu-bar"><!-- Hide menu bar in repair view -->
+ <!-- Navigation items -->
+ <el-menu
+ :default-active="$route.path"
+ router
+ mode="horizontal"
+ id="fc__menu_items"
+ data-tauri-drag-region
+ >
+ <el-menu-item index="/">{{ $t('menu.play') }}</el-menu-item>
+ <el-menu-item index="/mods">{{ $t('menu.mods') }}</el-menu-item>
+ <el-menu-item index="/changelog">{{ $t('menu.changelog') }}</el-menu-item>
+ <el-menu-item index="/settings">{{ $t('menu.settings') }}</el-menu-item>
+ </el-menu>
+
+ <!-- Window controls -->
+ <div id="fc_window__controls">
+ <NotificationButton />
+ <el-button color="white" icon="SemiSelect" @click="minimize" circle />
+ <el-button color="white" icon="CloseBold" @click="close" circle />
+ </div>
+ </nav>
<p>Click on the Tauri, Vite, and Vue logos to learn more.</p>
<form class="row" @submit.prevent="greet">
@@ -24,128 +82,132 @@ async function greet() {
<button type="submit">Greet</button>
</form>
<p>{{ greetMsg }}</p>
- </main>
+ </div>
</template>
-<style scoped>
-.logo.vite:hover {
- filter: drop-shadow(0 0 2em #747bff);
+<style>
+#fc_menu-bar {
+ position: fixed;
+ z-index: 1;
+ top: 0;
+ width: 100%;
+ height: var(--fc-menu_height);
}
-.logo.vue:hover {
- filter: drop-shadow(0 0 2em #249b73);
+#fc__menu_bar::before {
+ position: absolute;
+ content: "";
+ inset: 0; /* same as { top: 0; right: 0; bottom: 0; left: 0; } */
+ background-image: linear-gradient(to bottom, red, orange);
+ z-index: 1;
+ opacity: 0;
+ transition: opacity 1s linear;
}
-</style>
-<style>
-:root {
- font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
- font-size: 16px;
- line-height: 24px;
- font-weight: 400;
-
- color: #0f0f0f;
- background-color: #f6f6f6;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-text-size-adjust: 100%;
+#fc__menu_bar:hover::before {
+ opacity: 1;
}
-.container {
- margin: 0;
- padding-top: 10vh;
- display: flex;
- flex-direction: column;
- justify-content: center;
- text-align: center;
+/* Borders reset */
+#fc__menu_bar, #fc__menu_items {
+ border: none !important;
}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: 0.75s;
+.app-inner {
+ height: 100%;
+ width: 100%;
}
-.logo.tauri:hover {
- filter: drop-shadow(0 0 2em #24c8db);
+/* Header item */
+#fc__menu_items {
+ height: 100%;
+ background-color: transparent;
+ float: left;
+ width: calc(100% - 168px); /* window controls container width */
}
-.row {
- display: flex;
- justify-content: center;
+#fc__menu_items .el-menu-item, #fc__menu_items .el-sub-menu__title {
+ color: #b4b6b9;
+ border-color: white;
}
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
+#fc__menu_items > .el-menu-item {
+ text-transform: uppercase;
+ border: none !important;
+ font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
+ font-weight: bold;
+ font-size: large;
+ background-color: transparent !important;
+
+ border-width: 2px !important;
+ border-style: solid !important;
+ border-color: transparent !important;
+ border-radius: 10px !important;
+ transition: none;
}
-a:hover {
- color: #535bf2;
+#fc__menu_items .el-menu-item:hover, #fc__menu_items .el-sub-menu__title {
+ color: #c6c9ce;
+ background-color: transparent;
}
-h1 {
- text-align: center;
+#fc__menu_items .el-menu-item:focus-visible {
+ border-color: rgb(160, 207, 255) !important;
}
-input,
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- color: #0f0f0f;
- background-color: #ffffff;
- transition: border-color 0.25s;
- box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
+#fc__menu_items .el-menu-item.is-active, #fc__menu_items .el-sub-menu.is-active > .el-sub-menu__title {
+ color: white !important;
}
-button {
- cursor: pointer;
+.app-inner > .fc__mods__container {
+ overflow-y: auto;
+ height: calc(100% - var(--fc-menu_height));
}
-button:hover {
- border-color: #396cd8;
+/* Header menu */
+.developer_build {
+ background: repeating-linear-gradient(
+ 45deg,
+ rgba(0, 0, 0, 0.2),
+ rgba(0, 0, 0, 0.2) 20px,
+ rgba(0, 0, 0, 0.3) 20px,
+ rgba(0, 0, 0, 0.3) 40px
+ );
}
-button:active {
- border-color: #396cd8;
- background-color: #e8e8e8;
+
+/* Window controls */
+#fc_window__controls {
+ float: right;
+ height: 100%;
}
-input,
-button {
- outline: none;
+#fc_window__controls > button,
+#fc_window__controls > .el-dropdown > button,
+#fc_window__controls > .el-dropdown > .el-badge > button {
+ color: white;
+ font-size: 20px;
+ margin: auto 5px;
+ background: none;
+ border: none;
+ height: 100%;
}
-#greet-input {
- margin-right: 5px;
+#fc_window__controls > button:hover,
+#fc_window__controls > .el-dropdown > button:hover,
+#fc_window__controls > .el-dropdown > .el-badge > button:hover {
+ color: #c6c9ce;
}
-@media (prefers-color-scheme: dark) {
- :root {
- color: #f6f6f6;
- background-color: #2f2f2f;
- }
+#fc_window__controls > button:active,
+#fc_window__controls > .el-dropdown > button:active {
+ color: #56585a;
+}
- a:hover {
- color: #24c8db;
- }
+#fc_window__controls > button:last-of-type {
+ margin-right: 15px;
+}
- input,
- button {
- color: #ffffff;
- background-color: #0f0f0f98;
- }
- button:active {
- background-color: #0f0f0f69;
- }
+sup {
+ border: none !important;
}
</style>
diff --git a/src-vue/src/assets/mp_colony020033.jpg b/src-vue/src/assets/mp_colony020033.jpg
new file mode 100644
index 00000000..ed44eca9
--- /dev/null
+++ b/src-vue/src/assets/mp_colony020033.jpg
Binary files differ
diff --git a/src-vue/src/assets/thunderstore-icon.png b/src-vue/src/assets/thunderstore-icon.png
new file mode 100644
index 00000000..c286ab11
--- /dev/null
+++ b/src-vue/src/assets/thunderstore-icon.png
Binary files differ
diff --git a/src-vue/src/assets/vue.svg b/src-vue/src/assets/vue.svg
deleted file mode 100644
index 770e9d33..00000000
--- a/src-vue/src/assets/vue.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg> \ No newline at end of file
diff --git a/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg
new file mode 100644
index 00000000..74a840cd
--- /dev/null
+++ b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg
Binary files differ
diff --git a/src-vue/src/components/NotificationButton.vue b/src-vue/src/components/NotificationButton.vue
new file mode 100644
index 00000000..3835032d
--- /dev/null
+++ b/src-vue/src/components/NotificationButton.vue
@@ -0,0 +1,81 @@
+<template>
+ <el-dropdown trigger="click" placement="bottom-end" max-height="280" popper-class="fc_popper">
+ <el-badge v-if="notifications.length != 0" :value="notifications.length" :max="9" class="item" type="primary">
+ <el-button color="white" icon="BellFilled" circle />
+ </el-badge>
+ <el-button v-else color="white" icon="BellFilled" circle />
+ <template #dropdown>
+ <el-dropdown-menu :key="counter">
+ <el-alert
+ v-if="notifications.length != 0"
+ v-for="(notification, i) in notifications"
+ :key="i"
+ :title="notification.title"
+ :description="notification.text"
+ :type="notification.type"
+ show-icon
+ style="width: 300px"
+ @close.stop="removeNotification(i)"
+ />
+ <el-result
+ v-else
+ icon="success"
+ :title="i18n.global.tc('notification.no_new.title')"
+ :sub-title="i18n.global.tc('notification.no_new.text')"
+ >
+ <template #icon>
+ </template>
+ </el-result>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {Notification} from '../plugins/modules/notifications';
+import {i18n} from "../main";
+
+export default defineComponent({
+ name: 'NotificationButton',
+ data: () => ({
+ // This variable is used as a key for the dropdown menu, so we can force it to refresh when a item is deleted.
+ counter: 0
+ }),
+ computed: {
+ i18n() {
+ return i18n
+ },
+ notifications(): Notification[] {
+ return this.$store.state.notifications.notifications;
+ }
+ },
+ methods: {
+ removeNotification(index: number) {
+ this.$store.commit('removeNotification', index);
+ // By refreshing the notifications list, we ensure the first notification get the index 0, ensuring this list
+ // is synchronized with the store list.
+ this.counter += 1;
+ }
+ }
+})
+</script>
+
+<style scoped>
+.el-dropdown {
+ height: 100%;
+ max-height: 300px;
+}
+
+.el-button {
+ margin: auto 25px auto 0 !important;
+}
+
+.el-alert {
+ margin: 5px 10px 5px 5px;
+}
+
+.el-badge:deep(sup) {
+ transform: translate(-10px, 5px) !important;
+}
+</style>
diff --git a/src-vue/src/i18n/lang/da.json b/src-vue/src/i18n/lang/da.json
new file mode 100644
index 00000000..33486bce
--- /dev/null
+++ b/src-vue/src/i18n/lang/da.json
@@ -0,0 +1,166 @@
+{
+ "menu": {
+ "changelog": "Ændringslog",
+ "mods": "Mods",
+ "settings": "Indstillinger",
+ "dev": "Dev",
+ "play": "Spil"
+ },
+ "generic": {
+ "yes": "Ja",
+ "no": "Nej",
+ "error": "Fejl",
+ "cancel": "afbryd",
+ "informationShort": "Info",
+ "downloading": "Henter",
+ "success": "Succes",
+ "extracting": "Udpakker",
+ "done": "Færdig"
+ },
+ "play": {
+ "button": {
+ "select_game_dir": "Vælg Titanfall2 spil mappe",
+ "install": "Installere",
+ "installing": "Installer...",
+ "update": "Opdater",
+ "updating": "Opdatere...",
+ "ready_to_play": "Start spil",
+ "northstar_is_running": "Spillet køre"
+ },
+ "unknown_version": "Ukendt version",
+ "see_patch_notes": "Se patch noter",
+ "players": "Spillere",
+ "servers": "Servere",
+ "northstar_running": "Northstar køre",
+ "ea_app_running": "EA appen køre",
+ "unable_to_load_playercount": "Kan ikke hente antallet af spillere"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "Ingen mods blev fundet.",
+ "delete_confirm": "Er du sikker på at du vil slette dette mod?",
+ "delete": "Slet",
+ "success_deleting": "Sletningen af {modName} lykkedes",
+ "part_of_ts_mod": "Dette Northstar mod er en del af et Thunderstore mod"
+ },
+ "online": {
+ "no_match": "Der er ikke fundet nogen matchende mod.",
+ "try_another_search": "Prøv en anden søgning!"
+ },
+ "menu": {
+ "local": "Lokal",
+ "online": "Online",
+ "filter": "Filter",
+ "search": "Søg",
+ "sort_mods": "Sorter mods",
+ "select_categories": "Vælg kategorier",
+ "sort": {
+ "name_asc": "navn (A til Z)",
+ "name_desc": "navn (Z til A)",
+ "date_asc": "Dato (fra ældste)",
+ "most_downloaded": "Mest hentet",
+ "top_rated": "bedst bedømt",
+ "date_desc": "Dato (fra nyeste)"
+ }
+ },
+ "card": {
+ "button": {
+ "being_installed": "Installerer...",
+ "being_updated": "Opdaterer...",
+ "installed": "Installeret",
+ "install": "Installere",
+ "outdated": "Opdater"
+ },
+ "by": "af",
+ "more_info": "Mere info",
+ "remove": "Fjern mod",
+ "remove_dialog_title": "Advarsel",
+ "remove_success": "Fjernet {modName}",
+ "install_success": "Installeret {modName}",
+ "remove_dialog_text": "Fjern Thunderstore mod?"
+ }
+ },
+ "settings": {
+ "manage_install": "Administrer installation",
+ "choose_folder": "Vælg installationsmappe",
+ "open_game_folder": "Åben mappe",
+ "nb_ts_mods_per_page": "Antal Thunderstore-mods pr. side",
+ "nb_ts_mods_reset": "Nulstil til standard",
+ "language": "Sprog",
+ "language_select": "Vælg dit yndlingssprog",
+ "about": "Om:",
+ "flightcore_version": "FlightCore version:",
+ "testing": "Tester:",
+ "enable_test_channels": "Aktiver testudgivelseskanaler",
+ "dev_mode_enabled_title": "Pas på!",
+ "dev_mode_enabled_text": "Udviklertilstand aktiveret.",
+ "show_deprecated_mods": "Vis forældede Thunderstore-mods",
+ "show_deprecated_mods_desc2": "Pas på, sådanne mods er normalt forældet af en god grund.",
+ "profile": {
+ "active": "Aktiv profil",
+ "edit": "Rediger profiler",
+ "dialog": {
+ "title": "Profiler"
+ }
+ },
+ "repair": {
+ "title": "Reparere",
+ "open_window": "Åbn reparationsvinduet",
+ "window": {
+ "title": "FlightCore reparationsvinduet",
+ "disable_all_but_core": "Deaktiver alle undtagen kernemods",
+ "disable_all_but_core_success": "Deaktiverede alle mods undtagen kernemods",
+ "disable_modsettings": "Deaktiver ModSettings mod",
+ "disable_modsettings_success": "Deaktiver ModSettings mod",
+ "force_reinstall_ns": "Tving geninstallation Northstar",
+ "force_delete_temp_dl": "Tving sletning af midlertidig download-mappe",
+ "delete_persistent_store": "Slet FlightCore persistent indhold",
+ "reinstall_title": "Tving geninstallation af Northstar",
+ "reinstall_text": "Vent lidt",
+ "reinstall_success": "Northstar blev geninstalleret",
+ "warning": "Dette vindue indeholder forskellige funktioner til at reparere almindelige problemer med Northstar og FlightCore.",
+ "kill_northstar_process": "Dræb, der kører Northstar/Titanfall2-processen"
+ }
+ },
+ "nb_ts_mods_per_page_desc1": "Dette har en indvirkning på skærmydelsen, når du gennemser Thunderstore-mods.",
+ "nb_ts_mods_per_page_desc2": "Indstil denne værdi til 0 for at deaktivere paginering.",
+ "show_deprecated_mods_desc1": "Dette giver dig mulighed for at se forældede mods i online-mods-samlingen."
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "Ny spil mappe",
+ "text": "Spilmappen blev opdateret."
+ },
+ "wrong": {
+ "title": "Forkert mappe",
+ "text": "Den valgte mappe er ikke en gyldig Titanfall2 Installation."
+ },
+ "not_found": {
+ "title": "Titanfall2 ikke fundet!",
+ "text": "Vælg venligst installationsstedet manuelt"
+ }
+ },
+ "profile": {
+ "invalid": {
+ "title": "Ugyldig profil",
+ "text": "Den profil, du forsøgte at skifte til, er ikke længere gyldig."
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore forældet!",
+ "text": "Opdater venligst FlightCore.\nKører forældet version {oldVersion}.\nNyeste er {newVersion}!"
+ }
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Skiftet udgivelseskanal til \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Northstar udgivelseskandidat"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/de.json b/src-vue/src/i18n/lang/de.json
new file mode 100644
index 00000000..a360c124
--- /dev/null
+++ b/src-vue/src/i18n/lang/de.json
@@ -0,0 +1,177 @@
+{
+ "menu": {
+ "play": "Spielen",
+ "changelog": "Versionhistorie",
+ "mods": "Mods",
+ "settings": "Einstellungen",
+ "dev": "Dev"
+ },
+ "generic": {
+ "yes": "Ja",
+ "no": "Nein",
+ "error": "Fehler",
+ "cancel": "Abbrechen",
+ "informationShort": "Info",
+ "downloading": "Herunterladen",
+ "extracting": "Extrahieren",
+ "done": "Fertig",
+ "success": "Erfolg",
+ "confirm": "Bestätigen"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "Spiel läuft",
+ "select_game_dir": "Titanfall2 ordner wählen",
+ "install": "Installieren",
+ "installing": "Installiert...",
+ "update": "Aktualisieren",
+ "updating": "Aktualisiert...",
+ "ready_to_play": "Spiel starten"
+ },
+ "unknown_version": "Unbekannte Version",
+ "see_patch_notes": "Siehe Patch-Notizen",
+ "players": "Spieler",
+ "servers": "Server",
+ "unable_to_load_playercount": "Spielerzahl konnte nicht geladen werden",
+ "northstar_running": "Northstar läuft:",
+ "ea_app_running": "EA App läuft:"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "Keine Mods gefunden.",
+ "delete_confirm": "Bist du dir sicher, dass du diesen Mod löschen möchtest?",
+ "delete": "Löschen",
+ "part_of_ts_mod": "Dieser Northstar Mod ist teil eines Thunderstore Mods",
+ "success_deleting": "{modName} erfolgreich gelöscht"
+ },
+ "online": {
+ "no_match": "Keine passenden Mods gefunden.",
+ "try_another_search": "Versuche eine andere Suchanfrage!"
+ },
+ "menu": {
+ "local": "Lokal",
+ "online": "Online",
+ "filter": "Filter",
+ "search": "Suche",
+ "sort_mods": "Mods sortieren",
+ "select_categories": "Kategorien wählen",
+ "sort": {
+ "name_asc": "Nach Name (A to Z)",
+ "name_desc": "Nach Name (Z to A)",
+ "date_asc": "Nach Datum (älteste zuerst)",
+ "date_desc": "Nach Datum (neuste zuerst)",
+ "most_downloaded": "Am meisten heruntergeladen",
+ "top_rated": "Am besten bewerted"
+ }
+ },
+ "card": {
+ "button": {
+ "being_installed": "Installiert...",
+ "being_updated": "Aktualisiert...",
+ "installed": "Installiert",
+ "install": "Installieren",
+ "outdated": "Aktualisieren"
+ },
+ "by": "von",
+ "more_info": "Mehr Info",
+ "remove": "Mod entfernen",
+ "remove_dialog_title": "Warnung",
+ "remove_dialog_text": "Thunderstore Mod entfernen?",
+ "remove_success": "{modName} entfernt",
+ "install_success": "{modName} installiert"
+ }
+ },
+ "settings": {
+ "manage_install": "Installation verwalten",
+ "choose_folder": "Installationsordner wählen",
+ "open_game_folder": "Ordner öffnen",
+ "nb_ts_mods_per_page": "Anzahl an Thunderstore Mods pro Seite",
+ "nb_ts_mods_per_page_desc1": "Ändern dieser Einstellung kann die Leistung beim Suchen von Thunderstore Mods beeinflussen.",
+ "nb_ts_mods_per_page_desc2": "Setze diesen Wert auf 0 um alle Mods auf einer einzelnen Seite anzuzeigen.",
+ "nb_ts_mods_reset": "Standard wiederherstellen",
+ "language": "Sprache",
+ "language_select": "Bevorzugte Sprache wählen",
+ "about": "Über:",
+ "flightcore_version": "FlightCore Version:",
+ "testing": "Testen:",
+ "enable_test_channels": "Testversionen aktivieren",
+ "dev_mode_enabled_title": "Vorsicht!",
+ "dev_mode_enabled_text": "Entwicklermodus aktiviert.",
+ "repair": {
+ "title": "Reparieren",
+ "open_window": "Reparierfenster öffnen",
+ "window": {
+ "title": "FlightCore Reparierfenster",
+ "warning": "Dieses Fenster enthält verschiedene Funktionen um gängige Probleme mit Northstar und FlightCore zu beheben.",
+ "disable_all_but_core": "Alle außer notwendige Mods deaktivieren",
+ "disable_all_but_core_success": "Alle außer notwendige Mods wurden deaktiviert",
+ "force_reinstall_ns": "Northstar reinstallieren",
+ "force_delete_temp_dl": "Temporären FlightCore Downloadordner löschen",
+ "delete_persistent_store": "FlightCore Einstellungen zurücksetzen",
+ "kill_northstar_process": "Laufenden Northstar/Titanfall2 Prozess beenden",
+ "reinstall_title": "Northstar wird neu installiert",
+ "reinstall_text": "Bitte warten",
+ "reinstall_success": "Northstar erfolgreich neu installiert",
+ "disable_modsettings_success": "Der Mod ModSettings wurde deaktiviert",
+ "disable_modsettings": "Deaktiviere den ModSettings Mod"
+ }
+ },
+ "show_deprecated_mods_desc1": "Damit werden veraltete Mods in der Online-Mods-Ansicht sichtbar.",
+ "show_deprecated_mods_desc2": "Aber Vorsicht, solche Mods sind normalerweise aus gutem Grund als veraltet markiert.",
+ "show_deprecated_mods": "Veraltete Thunderstore mods anzeigen",
+ "profile": {
+ "dialog": {
+ "title": "Profile",
+ "delete_confirm": "Sind Sie sich sicher, dass Sie dieses Profil löschen möchten?",
+ "delete": "Löschen",
+ "clone": "Duplizieren",
+ "create_empty": "Neues Profil",
+ "new_profile_name": "Neuen Profilnamen eingeben"
+ },
+ "active": "Aktives Profil",
+ "edit": "Profile bearbeiten"
+ }
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "Neuer Spielordner",
+ "text": "Spielordner erfolgreich aktualisiert."
+ },
+ "wrong": {
+ "title": "Falscher Ordner",
+ "text": "Der gewählte Ordner enthält keine valide Titanfall2 Installation."
+ },
+ "not_found": {
+ "title": "Titanfall2 nicht gefunden!",
+ "text": "Bitte wähle den Installationsordner manuell aus"
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore veraltet!",
+ "text": "Bitte aktualisiere FlightCore.\nDu hast die veraltetet Version {oldVersion}.\nNeuste Version ist {newVersion}!"
+ },
+ "profile": {
+ "invalid": {
+ "text": "Das Profil auf das Sie wechseln möchten ist nicht länger gültig.",
+ "title": "Ungültiges Profil"
+ }
+ },
+ "no_new": {
+ "title": "Aktuell",
+ "text": "Hier gibt es nichts zu sehen!"
+ },
+ "date_prefix": "auf"
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Releasekanal zu \"{canal}\" gewechselt."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Northstar Release Candidate"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/en.json b/src-vue/src/i18n/lang/en.json
new file mode 100644
index 00000000..4c3da49f
--- /dev/null
+++ b/src-vue/src/i18n/lang/en.json
@@ -0,0 +1,200 @@
+{
+ "menu": {
+ "play": "Play",
+ "changelog": "Changelog",
+ "mods": "Mods",
+ "settings": "Settings",
+ "dev": "Dev"
+ },
+
+ "generic": {
+ "yes": "Yes",
+ "no": "No",
+ "error": "Error",
+ "confirm": "Confirm",
+ "cancel": "Cancel",
+ "informationShort": "Info",
+ "downloading": "Downloading",
+ "extracting": "Extracting",
+ "done": "Done",
+ "success": "Success"
+ },
+
+ "play": {
+ "button": {
+ "northstar_is_running": "Game is running",
+ "select_game_dir": "Select Titanfall2 game folder",
+ "install": "Install",
+ "installing": "Installing...",
+ "update": "Update",
+ "updating": "Updating...",
+ "ready_to_play": "Launch game"
+ },
+
+ "unknown_version": "Unknown version",
+ "see_patch_notes": "see patch notes",
+ "players": "players",
+ "servers": "servers",
+ "unable_to_load_playercount": "Unable to load playercount",
+ "northstar_running": "Northstar is running:",
+ "ea_app_running": "EA App is running:"
+ },
+
+ "mods": {
+ "local": {
+ "no_mods": "No mods were found.",
+ "delete_confirm": "Are you sure to delete this mod?",
+ "delete": "Delete",
+ "part_of_ts_mod": "This Northstar mod is part of a Thunderstore mod",
+ "success_deleting": "Success deleting {modName}"
+ },
+
+ "online": {
+ "no_match": "No matching mod has been found.",
+ "try_another_search": "Try another search!"
+ },
+
+ "menu": {
+ "local": "Local",
+ "online": "Online",
+ "filter": "Filter",
+ "search": "Search",
+ "sort_mods": "Sort mods",
+ "select_categories": "Select categories",
+
+ "sort": {
+ "name_asc": "By name (A to Z)",
+ "name_desc": "By name (Z to A)",
+ "date_asc": "By date (from oldest)",
+ "date_desc": "By date (from newest)",
+ "most_downloaded": "Most downloaded",
+ "top_rated": "Top rated"
+ }
+ },
+
+ "card": {
+ "button": {
+ "being_installed": "Installing...",
+ "being_updated": "Updating...",
+ "installed": "Installed",
+ "install": "Install",
+ "outdated": "Update"
+ },
+
+ "by": "by",
+ "more_info": "More info",
+ "remove": "Remove mod",
+ "remove_dialog_title": "Warning",
+ "remove_dialog_text": "Delete Thunderstore mod?",
+ "remove_success": "Removed {modName}",
+ "install_success": "Installed {modName}"
+ }
+ },
+
+ "settings": {
+ "manage_install": "Manage installation",
+ "choose_folder": "Choose installation folder",
+ "open_game_folder": "Open Folder",
+ "nb_ts_mods_per_page": "Number of Thunderstore mods per page",
+ "nb_ts_mods_per_page_desc1": "This has an impact on display performances when browsing Thunderstore mods.",
+ "nb_ts_mods_per_page_desc2": "Set this value to 0 to disable pagination.",
+ "nb_ts_mods_reset": "Reset to default",
+ "language": "Language",
+ "language_select": "Select your favorite language",
+ "about": "About:",
+ "flightcore_version": "FlightCore version:",
+ "testing": "Testing:",
+ "enable_test_channels": "Enable testing release channels",
+ "dev_mode_enabled_title": "Watch out!",
+ "dev_mode_enabled_text": "Developer mode enabled.",
+ "show_deprecated_mods": "Show deprecated Thunderstore mods",
+ "show_deprecated_mods_desc1": "This allows you to see deprecated mods in the online mods collection.",
+ "show_deprecated_mods_desc2": "Watch out, such mods are usually deprecated for a good reason.",
+ "show_nsfw_mods": "Show NSFW Thunderstore mods",
+
+ "profile": {
+ "active": "Active Profile",
+ "edit": "Edit Profiles",
+
+ "dialog": {
+ "title": "Profiles",
+ "delete_confirm": "Are you sure to delete this profile?",
+ "delete": "Delete",
+ "clone": "Clone",
+ "new_profile_name": "Enter the new Profile name",
+ "create_empty": "New Profile"
+ }
+ },
+
+ "repair": {
+ "title": "Repair",
+ "open_window": "Open repair window",
+
+ "window": {
+ "title": "FlightCore repair window",
+ "warning": "This window contains various functionality to repair common issues with Northstar and FlightCore.",
+ "disable_all_but_core": "Disable all but core mods",
+ "disable_all_but_core_success": "Disabled all mods but core",
+ "disable_modsettings": "Disable ModSettings mod",
+ "disable_modsettings_success": "Disabled ModSettings mod",
+ "force_reinstall_ns": "Force reinstall Northstar",
+ "force_delete_temp_dl": "Force delete temp download folder",
+ "delete_persistent_store": "Delete FlightCore persistent store",
+ "kill_northstar_process": "Kill running Northstar/Titanfall2 process",
+ "reinstall_title": "Force reinstalling Northstar",
+ "reinstall_text": "Please wait",
+ "reinstall_success": "Successfully reinstalled Northstar"
+ }
+ }
+ },
+
+ "notification": {
+ "date_prefix": "at",
+ "no_new": {
+ "title": "Up-to-date",
+ "text": "Nothing to see here!"
+ },
+
+ "game_folder": {
+ "new": {
+ "title": "New game folder",
+ "text": "Game folder was successfully updated."
+ },
+
+ "wrong": {
+ "title": "Wrong folder",
+ "text": "Selected folder is not a valid Titanfall2 install."
+ },
+
+ "not_found": {
+ "title": "Titanfall2 not found!",
+ "text": "Please manually select install location"
+ }
+ },
+
+ "profile": {
+ "invalid": {
+ "title": "Invalid Profile",
+ "text": "The profile you tried to switch to is no longer valid."
+ }
+ },
+
+ "flightcore_outdated": {
+ "title": "FlightCore outdated!",
+ "text": "Please update FlightCore.\nRunning outdated version {oldVersion}.\nNewest is {newVersion}!"
+ }
+ },
+
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Switched release channel to \"{canal}\"."
+ }
+ },
+
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Northstar release candidate"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/es.json b/src-vue/src/i18n/lang/es.json
new file mode 100644
index 00000000..2b4d255c
--- /dev/null
+++ b/src-vue/src/i18n/lang/es.json
@@ -0,0 +1,175 @@
+{
+ "menu": {
+ "mods": "Modificaciones",
+ "settings": "Opciones",
+ "dev": "Desarrollador",
+ "play": "Jugar",
+ "changelog": "Cambios"
+ },
+ "generic": {
+ "yes": "Sí",
+ "no": "No",
+ "error": "Error",
+ "cancel": "Cancelar",
+ "informationShort": "Información",
+ "extracting": "Extrayendo",
+ "done": "Listo",
+ "success": "Éxito",
+ "downloading": "Descargando",
+ "confirm": "Confirmar"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "El juego ya se está ejecutando",
+ "install": "Instalar",
+ "update": "Actualizar",
+ "select_game_dir": "Seleccione carpeta base de Titanfall 2",
+ "ready_to_play": "Jugar ahora",
+ "installing": "Instalando...",
+ "updating": "Actualizando..."
+ },
+ "ea_app_running": "La aplicación de EA ya se está ejecutando:",
+ "unknown_version": "Versión Desconocida",
+ "see_patch_notes": "Ver las notas del parche",
+ "players": "jugadores",
+ "servers": "servidores",
+ "northstar_running": "Northstar ya se está ejecutando:",
+ "unable_to_load_playercount": "Cantidad de jugadores no disponible"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "No hay mods encontrados.",
+ "delete_confirm": "¿Estás segur@ que quieres eliminar este mod?",
+ "delete": "Eliminar",
+ "success_deleting": "{modName} Ha sido eliminado correctamente",
+ "part_of_ts_mod": "Este mod de Northstar es parte de un mod de la ThunderStore"
+ },
+ "online": {
+ "no_match": "No hay mods coincidentes.",
+ "try_another_search": "Intente otra busqueda!"
+ },
+ "menu": {
+ "local": "Local",
+ "online": "En línea",
+ "filter": "FIltro",
+ "search": "Búsqueda",
+ "sort_mods": "Ordenar mods",
+ "select_categories": "Seleccionar categorías",
+ "sort": {
+ "name_asc": "Por nombre (de la A a la Z)",
+ "date_asc": "Por fecha (desde la más antigua)",
+ "date_desc": "Por fecha (desde la más reciente)",
+ "most_downloaded": "Los más descargados",
+ "top_rated": "Mejor valorados",
+ "name_desc": "Por nombre (de la Z a la A)"
+ }
+ },
+ "card": {
+ "button": {
+ "being_installed": "Instalando...",
+ "being_updated": "Actualizando...",
+ "installed": "Instalado",
+ "outdated": "Actualizar",
+ "install": "Instalar"
+ },
+ "by": "por",
+ "remove": "Quitar mod",
+ "remove_dialog_title": "Advertencia",
+ "remove_dialog_text": "Eliminar mod de la ThunderStore?",
+ "install_success": "{modName} Instalado",
+ "more_info": "Mas información",
+ "remove_success": "{modName} Ha sido eliminado"
+ }
+ },
+ "settings": {
+ "manage_install": "Administrar instalación",
+ "choose_folder": "Elegir carpeta de instalación",
+ "open_game_folder": "Abrir carpeta",
+ "nb_ts_mods_per_page": "Numero de mods por página de ThunderStore",
+ "nb_ts_mods_per_page_desc2": "Poner valor en 0 para desactivar la paginación.",
+ "nb_ts_mods_reset": "Reestablecer por defecto",
+ "language": "Idioma",
+ "language_select": "Seleccionar idioma favorito",
+ "about": "Acerca de:",
+ "flightcore_version": "Versión de FlightCore:",
+ "testing": "Probando:",
+ "enable_test_channels": "Activar liberación de canales",
+ "dev_mode_enabled_title": "¡Cuidado!",
+ "dev_mode_enabled_text": "Modo de desarrollador activado.",
+ "show_deprecated_mods_desc1": "Esto permite ver mods obsoletos de la colección online de ThunderStore.",
+ "show_deprecated_mods_desc2": "Cuidado, estos mods suelen estar obsoletos por una buena razón.",
+ "profile": {
+ "active": "Perfil activo",
+ "edit": "Editar perfiles",
+ "dialog": {
+ "title": "Perfiles",
+ "delete_confirm": "Eliminar Perfil?",
+ "delete": "Eliminar",
+ "clone": "Duplicar"
+ }
+ },
+ "repair": {
+ "title": "Reparar",
+ "window": {
+ "title": "Ventana de reparación de FlightCore",
+ "disable_all_but_core": "Desactivar todos los mods excepto los principales",
+ "disable_all_but_core_success": "Desactivados todos los mods excepto el núcleo",
+ "disable_modsettings": "Desactivar ModSettings",
+ "disable_modsettings_success": "ModSettings desactivado",
+ "force_reinstall_ns": "Forzar reinstalación de Northstar",
+ "force_delete_temp_dl": "Forzar la eliminación de la carpeta temporal de descargas",
+ "delete_persistent_store": "Borrar el almacén persistente de FlightCore",
+ "reinstall_title": "Forzar la reinstalación de Northstar",
+ "reinstall_text": "Espere, por favor",
+ "reinstall_success": "Northstar reinstalado con éxito",
+ "warning": "Esta ventana tiene varias funciones para reparar problemas comunes con Northstar y FlightCore.",
+ "kill_northstar_process": "Finalizar proceso de Northstar/Titanfall 2"
+ },
+ "open_window": "Abrir la ventana de reparación"
+ },
+ "nb_ts_mods_per_page_desc1": "Esto puede tener impactos en fluidez al buscar mods en la ThunderStore.",
+ "show_deprecated_mods": "Mostrar mods the ThunderStore obsoletos"
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "Nueva carpeta de juego",
+ "text": "La carpeta de juego fue actualizada exitosamente."
+ },
+ "wrong": {
+ "title": "Carpeta equivocada",
+ "text": "La carpeta seleccionada no es una carpeta de Titanfall2 válida."
+ },
+ "not_found": {
+ "title": "Titanfall 2 no encontrado!",
+ "text": "Por favor seleccione manualmente el lugar de instalación"
+ }
+ },
+ "profile": {
+ "invalid": {
+ "title": "Perfil inválido",
+ "text": "El perfil de cambio anterior ya no es válido."
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore desactualizado!",
+ "text": "Por favor actualize FlightCore.\nEsta versión esta desactualizada {oldVersion}\nLa versión mas nueva es {newVersion}!"
+ },
+ "no_new": {
+ "title": "Al día",
+ "text": "Nada que ver aquí!"
+ },
+ "date_prefix": "en"
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "El canal seleccionado se cambió a \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Candidato de nueva versión de Northstar"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/fr.json b/src-vue/src/i18n/lang/fr.json
new file mode 100644
index 00000000..efc0815b
--- /dev/null
+++ b/src-vue/src/i18n/lang/fr.json
@@ -0,0 +1,177 @@
+{
+ "menu": {
+ "play": "Jouer",
+ "changelog": "Notes",
+ "mods": "Mods",
+ "settings": "Paramètres",
+ "dev": "Dev"
+ },
+ "generic": {
+ "yes": "Oui",
+ "no": "Non",
+ "error": "Erreur",
+ "cancel": "Annuler",
+ "informationShort": "Info",
+ "downloading": "Téléchargement",
+ "extracting": "Extraction",
+ "done": "Fait",
+ "success": "Succès",
+ "confirm": "Confirmed"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "En cours d'utilisation",
+ "select_game_dir": "Sélectionner le dossier du jeu",
+ "install": "Installer",
+ "installing": "Installation...",
+ "update": "Mettre à jour",
+ "updating": "Mise à jour...",
+ "ready_to_play": "Jouer"
+ },
+ "unknown_version": "Version inconnue",
+ "see_patch_notes": "voir les notes de version",
+ "players": "joueurs",
+ "servers": "serveurs",
+ "unable_to_load_playercount": "Impossible de charger les statistiques",
+ "northstar_running": "Northstar est en cours d'exécution :",
+ "ea_app_running": "EA App est en cours d'exécution :"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "Aucun mod trouvé.",
+ "delete_confirm": "Êtes-vous certain de vouloir supprimer ce mod ?",
+ "delete": "Supprimer",
+ "part_of_ts_mod": "Ce mod Northstar fait partie d'un mod Thunderstore",
+ "success_deleting": "Succès de la suppression de {modName}"
+ },
+ "online": {
+ "no_match": "Aucun mod correspondant n'a été trouvé.",
+ "try_another_search": "Essayez une autre recherche !"
+ },
+ "menu": {
+ "local": "Local",
+ "online": "En ligne",
+ "filter": "Filtrer",
+ "search": "Chercher",
+ "sort_mods": "Trier les mods",
+ "select_categories": "Choisir les catégories",
+ "sort": {
+ "name_asc": "Par nom (de A à Z)",
+ "name_desc": "Par nom (de Z à A)",
+ "date_asc": "Par date (du plus vieux)",
+ "date_desc": "Par date (du plus récent)",
+ "most_downloaded": "Plus téléchargés",
+ "top_rated": "Mieux notés"
+ }
+ },
+ "card": {
+ "button": {
+ "being_installed": "Installation...",
+ "being_updated": "Mise à jour...",
+ "installed": "Installé",
+ "install": "Installer",
+ "outdated": "Mettre à jour"
+ },
+ "by": "par",
+ "more_info": "Plus d'informations",
+ "remove": "Supprimer le mod",
+ "remove_dialog_title": "Attention",
+ "remove_dialog_text": "Voulez-vous vraiment supprimer ce mod Thunderstore ?",
+ "remove_success": "{modName} supprimé",
+ "install_success": "{modName} installé"
+ }
+ },
+ "settings": {
+ "manage_install": "Gérer l'installation",
+ "choose_folder": "Choisir le dossier d'installation du jeu",
+ "open_game_folder": "Ouvrir le dossier du jeu",
+ "nb_ts_mods_per_page": "Nombre de mods Thunderstore par page",
+ "nb_ts_mods_per_page_desc1": "Ce paramètre a un impact sur les performances d'affichage des mods Thunderstore.",
+ "nb_ts_mods_per_page_desc2": "Réglez-le sur 0 pour désactiver la pagination.",
+ "nb_ts_mods_reset": "Valeur par défaut",
+ "language": "Langue",
+ "language_select": "Sélectionnez votre langue",
+ "about": "À propos",
+ "flightcore_version": "Version de FlightCore :",
+ "testing": "Tests :",
+ "enable_test_channels": "Activer le test de versions de pré-production",
+ "dev_mode_enabled_title": "Attention !",
+ "dev_mode_enabled_text": "Mode développeur activé.",
+ "repair": {
+ "title": "Dépannage",
+ "open_window": "Ouvrir la fenêtre de dépannage",
+ "window": {
+ "title": "Fenêtre de dépannage FlightCore",
+ "warning": "Cette fenêtre contient plusieurs fonctionnalité de résolution de problèmes courants avec Northstar et FlightCore.",
+ "disable_all_but_core": "Désactiver tous les mods (sauf ceux de Northstar)",
+ "disable_all_but_core_success": "Tous les mods sauf ceux de Northstar ont été désactivés",
+ "force_reinstall_ns": "Forcer la réinstallation de Northstar",
+ "force_delete_temp_dl": "Supprimer le dossier de téléchargement temporaire",
+ "delete_persistent_store": "Supprimer l'espace de stockage local de FlightCore",
+ "reinstall_title": "Forcer la réinstallation de Northstar",
+ "reinstall_text": "Veuillez patienter",
+ "reinstall_success": "Northstar réinstallé avec succès",
+ "disable_modsettings": "Désactiver le mod ModSettings",
+ "disable_modsettings_success": "Mod ModSettings désactivé",
+ "kill_northstar_process": "Arrêter le processus en cous de Northstar/Titanfall2"
+ }
+ },
+ "show_deprecated_mods": "Montrer les mods Thunderstore dépréciés",
+ "show_deprecated_mods_desc1": "Ce paramètre vous permet d'afficher les mods Thunderstore dépréciés dans la collection de mods.",
+ "show_deprecated_mods_desc2": "Attention, les mods dépréciés le sont généralement pour une bonne raison.",
+ "profile": {
+ "active": "Profile actif",
+ "edit": "Éditer les profiles",
+ "dialog": {
+ "title": "Profiles",
+ "clone": "Cloner",
+ "delete": "Supprimer",
+ "delete_confirm": "Voulez-vous vraiment supprimer ce profil ?",
+ "create_empty": "nouveau profil",
+ "new_profile_name": "Entrez le nouveau nom du profil"
+ }
+ }
+ },
+ "notification": {
+ "date_prefix": "à",
+ "no_new": {
+ "title": "Vous êtes à jour",
+ "text": "Rien à voir par ici !"
+ },
+ "game_folder": {
+ "new": {
+ "title": "Nouveau dossier",
+ "text": "Le dossier du jeu a bien été mis à jour."
+ },
+ "wrong": {
+ "title": "Mauvais dossier",
+ "text": "Le dossier sélectionné ne contient pas d'installation de Titanfall2."
+ },
+ "not_found": {
+ "title": "Titanfall2 non trouvé !",
+ "text": "Veuillez sélectionner manuellement le dossier du jeu."
+ }
+ },
+ "flightcore_outdated": {
+ "title": "Mise à jour disponible !",
+ "text": "Veuillez mettre à jour FlightCore.\nVersion actuelle : {oldVersion}.\nNouvelle version : {newVersion} !"
+ },
+ "profile": {
+ "invalid": {
+ "text": "Le profile sur lequel vous essayez de basculer n'est plus valide.",
+ "title": "Profile invalide"
+ }
+ }
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Le canal de téléchargement a été réglé sur \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Version de pré-release"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/it.json b/src-vue/src/i18n/lang/it.json
new file mode 100644
index 00000000..9da8ce8d
--- /dev/null
+++ b/src-vue/src/i18n/lang/it.json
@@ -0,0 +1,175 @@
+{
+ "generic": {
+ "yes": "Si",
+ "no": "No",
+ "error": "Errore",
+ "cancel": "Cancella",
+ "downloading": "Scaricando",
+ "extracting": "Estraendo",
+ "done": "Fatto",
+ "success": "Successo",
+ "informationShort": "Info",
+ "confirm": "Conferma"
+ },
+ "play": {
+ "unknown_version": "Versione sconosciuta",
+ "unable_to_load_playercount": "Impossibile caricare numero giocatori",
+ "northstar_running": "Northstar sta andando:",
+ "origin_running": "Origin sta andando:",
+ "see_patch_notes": "guarda le note della patch",
+ "players": "Giocatori",
+ "servers": "Server",
+ "button": {
+ "northstar_is_running": "Il Gioco sta andando",
+ "install": "Installa",
+ "installing": "Installazione...",
+ "update": "Aggiorna",
+ "updating": "Aggiornamento...",
+ "ready_to_play": "Gioca",
+ "select_game_dir": "Seleziona la cartella di Titanfall 2"
+ },
+ "ea_app_running": "EA App sta andando:"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "Nessuna mod è stata trovata.",
+ "delete_confirm": "Sei sicuro di voler eliminare questa mod?",
+ "part_of_ts_mod": "Questa Northstar mod è parte di una Thunderstore mod",
+ "success_deleting": "{modName} Eliminata con successo",
+ "delete": "Elimina"
+ },
+ "online": {
+ "no_match": "Nessuna mod corrispondente trovata.",
+ "try_another_search": "Prova un'altra ricerca!"
+ },
+ "menu": {
+ "local": "Locale",
+ "filter": "Filtra",
+ "online": "Online",
+ "search": "Cerca",
+ "sort_mods": "Sorteggia mods",
+ "select_categories": "Seleziona categorie",
+ "sort": {
+ "name_asc": "Per nome (da A alla Z)",
+ "name_desc": "Per nome (da Z alla A)",
+ "date_asc": "Per data (dal più vecchio)",
+ "date_desc": "Per data (dal più recente)",
+ "most_downloaded": "Più scaricate",
+ "top_rated": "Più votate"
+ }
+ },
+ "card": {
+ "button": {
+ "being_updated": "Aggiornando...",
+ "installed": "Installato",
+ "being_installed": "Installando...",
+ "install": "Installa",
+ "outdated": "Aggiorna"
+ },
+ "by": "per",
+ "more_info": "Più informazioni",
+ "remove": "Rimuovi mod",
+ "remove_dialog_title": "Attenzione",
+ "remove_dialog_text": "Eliminare Thunderstore mod?",
+ "remove_success": "{modName} Rimossa",
+ "install_success": "{modName} Installata"
+ }
+ },
+ "menu": {
+ "mods": "Mods",
+ "settings": "Impostazioni",
+ "dev": "Dev",
+ "play": "Gioca",
+ "changelog": "Note"
+ },
+ "notification": {
+ "game_folder": {
+ "wrong": {
+ "title": "Cartella errata",
+ "text": "La cartella selezionata non ha un'installazione di Titanfall2 valida."
+ },
+ "new": {
+ "title": "Nuova cartella di gioco",
+ "text": "Cartella di gioco aggiornata con successo."
+ },
+ "not_found": {
+ "title": "Titanfall2 non trovato!",
+ "text": "Per favore selezionare manualmente la posizione dell'installazione"
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore fuori data!",
+ "text": "Per favore aggiorna FlightCore.\nVersione in uso {oldVersion} fuori data.\nLa più recente è {newVersion}!"
+ },
+ "no_new": {
+ "text": "Niente da vedere qui!",
+ "title": "Aggiornato"
+ },
+ "profile": {
+ "invalid": {
+ "text": "Il profilo a cui hai provato ad accedere non è più valido.",
+ "title": "Profilo non valido"
+ }
+ }
+ },
+ "settings": {
+ "manage_install": "Gestisci l'installazione",
+ "choose_folder": "Scegli la cartella dell'installazione",
+ "open_game_folder": "Apri Cartella",
+ "nb_ts_mods_per_page": "Numero di Thunderstore mods per pagina",
+ "nb_ts_mods_per_page_desc1": "Questo ha un impatto sulle performazioni schermo mentre si navigano le Thunderstore mods.",
+ "nb_ts_mods_per_page_desc2": "Cambiare questo valore a 0 per disattivare la paginazione.",
+ "nb_ts_mods_reset": "Resetta a default",
+ "language": "Lingua",
+ "language_select": "Seleziona la tua lingua preferito",
+ "about": "Al riguardo:",
+ "flightcore_version": "Versione FlighCore:",
+ "testing": "Testando:",
+ "enable_test_channels": "Abilita i canali del test di rilascio",
+ "dev_mode_enabled_title": "Attenzione!",
+ "dev_mode_enabled_text": "Modalità Sviluppatore attivata.",
+ "repair": {
+ "title": "Ripara",
+ "open_window": "Apri finestra di riparazione",
+ "window": {
+ "title": "Finestra riparazione di FlightCore",
+ "warning": "Questa finestra contiene varie funzionalità per riparare problemi comuni con Northstar e FlightCore.",
+ "disable_all_but_core": "Disattiva tutte le mods (eccetto quelle di Northstar)",
+ "disable_all_but_core_success": "Disattivate tutte le mods (eccetto quelle di Northstar)",
+ "force_reinstall_ns": "Forza reinstallazione di Northstar",
+ "force_delete_temp_dl": "Forza l'eliminazione della cartella dei download temporanei",
+ "delete_persistent_store": "Elimina lo spazio d'archiviazione persistente di FlightCore",
+ "reinstall_title": "Reinstallando Northstar forzatamente",
+ "reinstall_text": "Attendere per favore",
+ "reinstall_success": "Northstar reinstallato con successo",
+ "kill_northstar_process": "Ferma il processo Northstar/Titanfall2 in esecuzione",
+ "disable_modsettings_success": "ModSettings disabilitata",
+ "disable_modsettings": "Disabilita la mod ModSettings"
+ }
+ },
+ "profile": {
+ "active": "Profilo attivo",
+ "dialog": {
+ "clone": "Clona",
+ "delete": "Elimina",
+ "delete_confirm": "Sei sicuro di voler eliminare questo profilo?",
+ "title": "Profili"
+ },
+ "edit": "Modifica profilo"
+ },
+ "show_deprecated_mods": "Mostra mod di Thunderstore deprecate",
+ "show_deprecated_mods_desc2": "Fai attenzione, alcune mod di solito sono deprecate per un buon motivo.",
+ "show_deprecated_mods_desc1": "Permette di vedere le mod deprecate nella collezione online."
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Cambiato il canale di rilascio a \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Northstar versione pre-rilascio"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/pl.json b/src-vue/src/i18n/lang/pl.json
new file mode 100644
index 00000000..175d6eb3
--- /dev/null
+++ b/src-vue/src/i18n/lang/pl.json
@@ -0,0 +1,177 @@
+{
+ "menu": {
+ "changelog": "Dziennik zmian",
+ "mods": "Mody",
+ "settings": "Ustawienia",
+ "dev": "Dev",
+ "play": "Graj"
+ },
+ "generic": {
+ "yes": "Tak",
+ "no": "Nie",
+ "error": "Błąd",
+ "cancel": "Anuluj",
+ "downloading": "Pobieranie",
+ "extracting": "Wypakowywanie",
+ "done": "Gotowe",
+ "success": "Sukces",
+ "informationShort": "Informacja",
+ "confirm": "Potwierdź"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "Gra jest uruchomiona",
+ "select_game_dir": "Wybierz folder gry Titanfall2",
+ "install": "Zainstaluj",
+ "update": "Aktualizuj",
+ "updating": "Aktualizowanie...",
+ "ready_to_play": "Uruchom grę",
+ "installing": "Instalowanie..."
+ },
+ "unknown_version": "Nieznana wersja",
+ "see_patch_notes": "zobacz listę zmian",
+ "players": "gracze",
+ "servers": "serwery",
+ "northstar_running": "Northstar jest uruchomiony:",
+ "ea_app_running": "EA App jest uruchomiony:",
+ "unable_to_load_playercount": "Nie można załadować liczby graczy"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "Nie znaleziono żadnych modów.",
+ "delete_confirm": "Czy na pewno chcesz usunąć ten mod?",
+ "delete": "Usuń",
+ "success_deleting": "Sukces usuwania {modName}",
+ "part_of_ts_mod": "Ten mod Northstar jest częścią moda Thunderstore"
+ },
+ "online": {
+ "no_match": "Nie znaleziono pasującego moda.",
+ "try_another_search": "Spróbuj innego wyszukiwania!"
+ },
+ "menu": {
+ "local": "Lokalne",
+ "online": "Online",
+ "filter": "Filtry",
+ "search": "Szukaj",
+ "sort_mods": "Sortowanie modów",
+ "select_categories": "Wybierz kategorie",
+ "sort": {
+ "name_asc": "Według nazwy (od A do Z)",
+ "name_desc": "Według nazwy (od Z do A)",
+ "date_desc": "Według daty (od najnowszej)",
+ "most_downloaded": "Najczęściej pobierane",
+ "top_rated": "Najwyżej ocenione",
+ "date_asc": "Według daty (od najstarszej)"
+ }
+ },
+ "card": {
+ "button": {
+ "being_installed": "Instalowanie...",
+ "being_updated": "Aktualizowanie...",
+ "installed": "Zainstalowano",
+ "install": "Zainstaluj",
+ "outdated": "Aktualizuj"
+ },
+ "by": "od",
+ "more_info": "Więcej informacji",
+ "remove": "Usuń moda",
+ "remove_dialog_title": "Ostrzeżenie",
+ "remove_dialog_text": "Usunąć mod Thunderstore?",
+ "remove_success": "Usunięto {modName}",
+ "install_success": "Zainstalowano {modName}"
+ }
+ },
+ "settings": {
+ "manage_install": "Zarządzaj instalacją",
+ "choose_folder": "Wybierz folder instalacyjny",
+ "nb_ts_mods_per_page": "Liczba modów Thunderstore na stronie",
+ "nb_ts_mods_per_page_desc2": "Ustaw tę wartość na 0, aby wyłączyć paginację.",
+ "nb_ts_mods_reset": "Przywrócenie ustawień domyślnych",
+ "language": "Język",
+ "language_select": "Wybierz swój ulubiony język",
+ "about": "O:",
+ "flightcore_version": "Wersja FlightCore:",
+ "testing": "Testy:",
+ "enable_test_channels": "Włączenie kanałów wydań testowych",
+ "dev_mode_enabled_title": "Uważaj!",
+ "dev_mode_enabled_text": "Tryb deweloperski włączony.",
+ "repair": {
+ "title": "Naprawa",
+ "open_window": "Otwórz okno naprawy",
+ "window": {
+ "disable_all_but_core": "Wyłączenie wszystkich modów poza podstawowymi",
+ "disable_all_but_core_success": "Wyłączone wszystkie mody oprócz podstawowych",
+ "force_reinstall_ns": "Wymuś reinstalację Northstara",
+ "force_delete_temp_dl": "Wymuś usunięcie folderu tymczasowego pobierania",
+ "delete_persistent_store": "Usuń stały magazyn FlightCore",
+ "reinstall_title": "Wymuszona reinstalacja Northstara",
+ "reinstall_text": "Proszę czekać",
+ "reinstall_success": "Pomyślnie przeinstalowano Northstar",
+ "title": "Okno naprawy FlightCore",
+ "warning": "To okno zawiera różne funkcje do naprawy typowych problemów z Northstar i FlightCore.",
+ "disable_modsettings": "Wyłącz moda ModSettings",
+ "disable_modsettings_success": "Wyłączono moda ModSettings",
+ "kill_northstar_process": "Zamknij uruchomiony proces Northstar/Titanfall2"
+ }
+ },
+ "nb_ts_mods_per_page_desc1": "Ma to wpływ na wydajność wyświetlania podczas przeglądania modów Thunderstore.",
+ "open_game_folder": "Otwórz folder",
+ "show_deprecated_mods_desc2": "Ostrożnie, mody są zazwyczaj oznaczone jako przestarzałe nie bez powodu.",
+ "show_deprecated_mods": "Pokaż przestarzałe mody Thunderstore",
+ "show_deprecated_mods_desc1": "Pozwala to zobaczyć przestarzałe mody w kolekcji modów online.",
+ "profile": {
+ "active": "Aktywny profil",
+ "dialog": {
+ "title": "Profile",
+ "delete": "Usuń",
+ "clone": "Klonuj",
+ "new_profile_name": "Wprowadź nową nazwę profilu",
+ "create_empty": "Nowy profil",
+ "delete_confirm": "Czy na pewno chcesz usunąć ten profil?"
+ },
+ "edit": "Edytuj profile"
+ }
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "Nowy folder z grą",
+ "text": "Folder gry został pomyślnie zaktualizowany."
+ },
+ "wrong": {
+ "title": "Niewłaściwy folder",
+ "text": "Wybrany folder nie jest poprawną instalacją Titanfall2."
+ },
+ "not_found": {
+ "title": "Nie znaleziono Titanfall2!",
+ "text": "Proszę ręcznie wybrać lokalizację instalacji"
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore nieaktualny!",
+ "text": "Proszę zaktualizować FlightCore.\nUruchomiono przestarzałą wersję {oldVersion}.\nNajnowsza to {newVersion}!"
+ },
+ "profile": {
+ "invalid": {
+ "title": "Nieprawidłowy profil",
+ "text": "Profil, na który próbowano się przełączyć, nie jest już prawidłowy."
+ }
+ },
+ "no_new": {
+ "title": "Aktualny",
+ "text": "Nie ma tu nic do obejrzenia!"
+ },
+ "date_prefix": "na"
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Przełączono kanał wydań na \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Kandydat do wydania Northstar"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/ru.json b/src-vue/src/i18n/lang/ru.json
new file mode 100644
index 00000000..b0261299
--- /dev/null
+++ b/src-vue/src/i18n/lang/ru.json
@@ -0,0 +1,178 @@
+{
+ "generic": {
+ "yes": "Да",
+ "no": "Нет",
+ "extracting": "Распаковывание",
+ "done": "Готово",
+ "success": "Успешно",
+ "error": "Ошибка",
+ "cancel": "Отмена",
+ "informationShort": "Информация",
+ "downloading": "Скачивание",
+ "confirm": "Подтвердить"
+ },
+ "menu": {
+ "mods": "Моды",
+ "play": "Играть",
+ "settings": "Настройки",
+ "dev": "Разработчик",
+ "changelog": "Обновления"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "Игра запущена",
+ "install": "Установить",
+ "installing": "Установка...",
+ "updating": "Обновление...",
+ "ready_to_play": "Запустить игру",
+ "update": "Обновить",
+ "select_game_dir": "Выберите папку с Titanfall 2"
+ },
+ "unknown_version": "Неизвестная версия",
+ "players": "игроков",
+ "servers": "серверов",
+ "unable_to_load_playercount": "Не можем загрузить количество игроков",
+ "northstar_running": "Northstar запущен:",
+ "ea_app_running": "EA App запущен:",
+ "see_patch_notes": "просмотреть список изменений"
+ },
+ "mods": {
+ "local": {
+ "delete_confirm": "Вы уверены, что хотите удалить этот мод?",
+ "delete": "Удалить",
+ "success_deleting": "{modName} Успешно удален",
+ "no_mods": "Моды не найдены.",
+ "part_of_ts_mod": "Этот мод Northstar является частью мода на Thunderstore"
+ },
+ "online": {
+ "no_match": "Не найдено совпадающих модов.",
+ "try_another_search": "Попробуйте другой запрос!"
+ },
+ "menu": {
+ "online": "Онлайн",
+ "filter": "Фильтр",
+ "search": "Поиск",
+ "sort_mods": "Сортировать моды",
+ "sort": {
+ "name_asc": "По имени (от A до Z)",
+ "name_desc": "По имени (от Z до A)",
+ "date_asc": "По дате (со старейшего)",
+ "date_desc": "По дате (с новейшего)",
+ "top_rated": "Самый популярный",
+ "most_downloaded": "Самый загружаемый"
+ },
+ "local": "Установленные",
+ "select_categories": "Выбрать категории"
+ },
+ "card": {
+ "button": {
+ "being_installed": "Установка...",
+ "being_updated": "Обновление...",
+ "installed": "Установлен",
+ "install": "Установить",
+ "outdated": "Обновить"
+ },
+ "by": "от",
+ "remove": "Удалить мод",
+ "remove_dialog_title": "Внимание",
+ "remove_dialog_text": "Удалить мод Thunderstore?",
+ "remove_success": "{modName} Удален",
+ "more_info": "Подробнее",
+ "install_success": "{modName} Установлен"
+ }
+ },
+ "settings": {
+ "manage_install": "Управлять установкой",
+ "choose_folder": "Выберите папку установки",
+ "open_game_folder": "Открыть папку",
+ "nb_ts_mods_reset": "Вернуть по умолчанию",
+ "language": "Язык",
+ "language_select": "Выберите свой любимый язык",
+ "testing": "Тестирование:",
+ "enable_test_channels": "Включить каналы с тестовыми релизами",
+ "dev_mode_enabled_title": "Осторожно!",
+ "repair": {
+ "open_window": "Открыть окно фиксов",
+ "window": {
+ "title": "Окно фиксов FlightCore",
+ "force_reinstall_ns": "Принудительно переустановить Northstar",
+ "delete_persistent_store": "Удалить постоянное хранилище FlightCore",
+ "reinstall_title": "Принудительно переустанавливаем Northstar",
+ "reinstall_text": "Пожалуйста, подождите",
+ "disable_all_but_core_success": "Выключены все моды кроме главных",
+ "disable_all_but_core": "Выключить все моды, кроме главных",
+ "warning": "Это окно содержит различные функции для устранения часто возникающих проблем с Northstar и FlightCore.",
+ "force_delete_temp_dl": "Принудительно удалить папку с временными загрузками",
+ "reinstall_success": "Northstar успешно переустановлен",
+ "disable_modsettings": "Выключить мод ModSettings",
+ "disable_modsettings_success": "Выключен мод ModSettings",
+ "kill_northstar_process": "Закрыть запущенный Northstar/Titanfall 2"
+ },
+ "title": "Фиксы"
+ },
+ "nb_ts_mods_per_page_desc1": "Это влияет на производительность при просмотре модов с Thunderstore.",
+ "about": "Информация:",
+ "nb_ts_mods_per_page": "Количество модов Thunderstore на каждую страницу",
+ "nb_ts_mods_per_page_desc2": "Установите это значение на 0, чтобы отключить страницы.",
+ "flightcore_version": "Версия FlightCore:",
+ "dev_mode_enabled_text": "Включен режим разработчика.",
+ "show_deprecated_mods": "Показать устаревшие моды Thunderstore",
+ "show_deprecated_mods_desc1": "Это позволяет вам видеть устаревшие моды в меню онлайн модов.",
+ "show_deprecated_mods_desc2": "Внимание, такие моды обычно устаревшие по хорошей причине.",
+ "profile": {
+ "active": "Активный Профиль",
+ "edit": "Редактировать Профили",
+ "dialog": {
+ "title": "Профили",
+ "clone": "Копировать",
+ "delete": "Удалить",
+ "delete_confirm": "Вы уверены, что хотите удалить этот профиль?",
+ "new_profile_name": "Введите новое имя профиля",
+ "create_empty": "Новый профиль"
+ }
+ },
+ "show_nsfw_mods": "Показывать NSFW-моды с Thunderstore"
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "Новая папка игры",
+ "text": "Папка игры успешно обновлена."
+ },
+ "wrong": {
+ "title": "Неправильная папка",
+ "text": "Выбранная папка не является папкой с Titanfall 2."
+ },
+ "not_found": {
+ "title": "Titanfall 2 не найден!",
+ "text": "Пожалуйста, вручную выберите место установки"
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore устарел!",
+ "text": "Пожалуйста, обновите FlightCore\nСейчас запущена старая версия - {oldVersion}.\nНовейшая версия - {newVersion}!"
+ },
+ "profile": {
+ "invalid": {
+ "title": "Некорректный Профиль",
+ "text": "Профиль, на который вы пытаетесь переключиться, больше не является корректным."
+ }
+ },
+ "no_new": {
+ "text": "Смотреть здесь нечего!",
+ "title": "Нет уведомлений"
+ },
+ "date_prefix": "в"
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "Релизный канал переключен на \"{canal}\"."
+ }
+ },
+ "names": {
+ "Northstar": "Northstar",
+ "NorthstarReleaseCandidate": "Пре-релизная версия Northstar"
+ }
+ }
+}
diff --git a/src-vue/src/i18n/lang/zh_Hans.json b/src-vue/src/i18n/lang/zh_Hans.json
new file mode 100644
index 00000000..dca36f98
--- /dev/null
+++ b/src-vue/src/i18n/lang/zh_Hans.json
@@ -0,0 +1,169 @@
+{
+ "menu": {
+ "mods": "模组",
+ "settings": "设置",
+ "dev": "开发者模式",
+ "play": "开始游玩",
+ "changelog": "更新日志"
+ },
+ "generic": {
+ "error": "错误",
+ "cancel": "取消",
+ "yes": "是",
+ "no": "否",
+ "informationShort": "信息",
+ "downloading": "下载中",
+ "extracting": "解压中",
+ "done": "完成",
+ "success": "成功",
+ "confirm": "确认"
+ },
+ "play": {
+ "button": {
+ "northstar_is_running": "游戏正在运行",
+ "select_game_dir": "选择Titanfall 2游戏目录",
+ "install": "安装",
+ "installing": "安装中...",
+ "update": "升级",
+ "ready_to_play": "启动游戏",
+ "updating": "升级中..."
+ },
+ "unknown_version": "未知版本",
+ "see_patch_notes": "参阅相关补丁说明",
+ "servers": "服务器",
+ "players": "玩家",
+ "unable_to_load_playercount": "加载玩家数量失败",
+ "ea_app_running": "EA App运行状态:",
+ "northstar_running": "Northstar运行状态:"
+ },
+ "mods": {
+ "local": {
+ "no_mods": "未找到模组。",
+ "delete_confirm": "你确定要删除该模组吗?",
+ "delete": "删除",
+ "part_of_ts_mod": "该Northstar模组来源于Thunderstore",
+ "success_deleting": "成功删除 {modName}"
+ },
+ "online": {
+ "try_another_search": "尝试其他搜索方式!",
+ "no_match": "未找到相匹配的模组。"
+ },
+ "menu": {
+ "local": "本地",
+ "search": "搜索",
+ "sort_mods": "模组排序",
+ "select_categories": "标签选择",
+ "sort": {
+ "date_desc": "日期降序",
+ "date_asc": "日期升序",
+ "name_desc": "按名称(Z到A)",
+ "most_downloaded": "最多下载",
+ "top_rated": "最高评分",
+ "name_asc": "按名称(A到Z)"
+ },
+ "online": "线上",
+ "filter": "筛选"
+ },
+ "card": {
+ "button": {
+ "being_installed": "安装中...",
+ "being_updated": "升级中...",
+ "installed": "已安装",
+ "install": "安装",
+ "outdated": "升级"
+ },
+ "by": "作者:",
+ "remove": "移除模组",
+ "remove_dialog_title": "警告",
+ "remove_success": "已移除{modName}",
+ "install_success": "已安装 {modName}",
+ "more_info": "更多信息",
+ "remove_dialog_text": "删除该来自Thunderstore的模组?"
+ }
+ },
+ "settings": {
+ "manage_install": "安装管理",
+ "choose_folder": "选择安装目录",
+ "open_game_folder": "打开文件夹",
+ "nb_ts_mods_per_page": "Thunderstore每页显示多少个模组",
+ "nb_ts_mods_per_page_desc2": "该值设为0时将不再显示页码。",
+ "nb_ts_mods_reset": "重置为默认值",
+ "language": "语言",
+ "language_select": "请选择你需要的语言",
+ "about": "关于:",
+ "flightcore_version": "FlightCore 版本:",
+ "testing": "测试选项:",
+ "enable_test_channels": "开启测试版本选项",
+ "nb_ts_mods_per_page_desc1": "该数值对加载Thunderstore页面时的速度有影响。",
+ "dev_mode_enabled_title": "看上面!",
+ "dev_mode_enabled_text": "开发者模式已启用。",
+ "show_deprecated_mods": "显示已弃用的Thunderstore模组",
+ "show_deprecated_mods_desc1": "该选项会使您可以在线上模组合集中看到已弃用的模组。",
+ "show_deprecated_mods_desc2": "请注意,这类模组被弃用一般是有原因的。",
+ "repair": {
+ "title": "修复",
+ "window": {
+ "title": "FlightCore 修复工具",
+ "warning": "此工具包含修复Northstar和FlightCore各种常见问题的功能。",
+ "disable_all_but_core": "除了核心模组以外禁用其他模组",
+ "disable_all_but_core_success": "已禁用除核心模组以外的所有模组",
+ "disable_modsettings": "禁用ModSettings模组",
+ "disable_modsettings_success": "已禁用ModSettings模组",
+ "force_delete_temp_dl": "强制删除临时下载目录",
+ "delete_persistent_store": "删除FlightCore永久存储文件",
+ "reinstall_text": "请耐心等待",
+ "reinstall_success": "成功重装Northstar",
+ "force_reinstall_ns": "强制重装Northstar",
+ "reinstall_title": "正在强制重装Northstar",
+ "kill_northstar_process": "终止正在运行的 Northstar/Titanfall2 进程"
+ },
+ "open_window": "打开修复工具"
+ },
+ "profile": {
+ "active": "当前用户配置",
+ "edit": "编辑用户配置",
+ "dialog": {
+ "title": "用户配置",
+ "delete_confirm": "你确定要删除此配置文件吗?",
+ "delete": "删除"
+ }
+ }
+ },
+ "notification": {
+ "game_folder": {
+ "new": {
+ "title": "新的游戏目录",
+ "text": "已成功更新游戏目录。"
+ },
+ "wrong": {
+ "title": "错误的文件夹",
+ "text": "所选文件夹不是有效的Titanfall2安装目录。"
+ },
+ "not_found": {
+ "title": "未找到Titanfall2!",
+ "text": "请手动选择安装目录"
+ }
+ },
+ "flightcore_outdated": {
+ "title": "FlightCore需要更新!",
+ "text": "请更新FlightCore.\n正在运行旧版本 {oldVersion}.\n最新版本为 {newVersion}!"
+ },
+ "profile": {
+ "invalid": {
+ "title": "无效用户配置",
+ "text": "您尝试切换到的用户配置已失效。"
+ }
+ }
+ },
+ "channels": {
+ "release": {
+ "switch": {
+ "text": "将资源版本切换至 \"{canal}\"."
+ }
+ },
+ "names": {
+ "NorthstarReleaseCandidate": "Northstar测试版本",
+ "Northstar": "Northstar"
+ }
+ }
+}
diff --git a/src-vue/src/main.ts b/src-vue/src/main.ts
index b670de8b..9d8fee83 100644
--- a/src-vue/src/main.ts
+++ b/src-vue/src/main.ts
@@ -1,4 +1,67 @@
-import { createApp } from "vue";
-import App from "./App.vue";
+import { createApp } from 'vue'
+import { createI18n } from "vue-i18n";
+import App from './App.vue'
+import ElementPlus from "element-plus";
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+import { store } from './plugins/store';
+import PlayView from "./views/PlayView.vue";
+import ChangelogView from "./views/ChangelogView.vue";
+import ModsView from "./views/ModsView.vue";
+import SettingsView from "./views/SettingsView.vue";
+import DeveloperView from "./views/DeveloperView.vue";
+import RepairView from "./views/RepairView.vue";
+import {createRouter, createWebHashHistory} from "vue-router";
+import en from "./i18n/lang/en.json";
+import fr from "./i18n/lang/fr.json";
+import da from "./i18n/lang/da.json";
+import de from "./i18n/lang/de.json";
+import es from "./i18n/lang/es.json";
+import pl from "./i18n/lang/pl.json";
+import ru from "./i18n/lang/ru.json";
+import it from "./i18n/lang/it.json";
+import zh_Hans from "./i18n/lang/zh_Hans.json";
-createApp(App).mount("#app");
+
+const app = createApp(App);
+
+// internationalization
+export const i18n = createI18n({
+ locale: 'en',
+ fallbackLocale: 'en',
+ messages: {
+ en, fr, da, de, es, pl, ru, it, zh_Hans
+ }
+});
+app.use(i18n);
+
+// styles
+import 'element-plus/theme-chalk/index.css';
+import './style.css'
+
+app.use(ElementPlus);
+
+// icons
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+ app.component(key, component);
+}
+
+// style
+
+
+// routes
+const routes = [
+ { path: '/', name: 'Main', component: async () => PlayView},
+ { path: '/changelog', name: 'Changelog', component: async () => ChangelogView},
+ { path: '/mods', name: 'Mods', component: async () => ModsView},
+ { path: '/settings', name: 'Settings', component: async () => SettingsView},
+ { path: '/dev', name: 'Dev', component: async () => DeveloperView},
+ { path: '/repair', name: 'Repair', component: async () => RepairView},
+];
+export const router = createRouter({
+ history: createWebHashHistory(),
+ routes, // short for `routes: routes`
+});
+app.use(router);
+
+
+app.mount('#app')
diff --git a/src-vue/src/plugins/modules/notifications.ts b/src-vue/src/plugins/modules/notifications.ts
new file mode 100644
index 00000000..ed57f8af
--- /dev/null
+++ b/src-vue/src/plugins/modules/notifications.ts
@@ -0,0 +1,31 @@
+type NotificationType = 'success' | 'warning' | 'info' | 'error';
+
+export interface Notification {
+ title: string;
+ text: string;
+ type: NotificationType;
+}
+
+interface NotificationsStoreState {
+ notifications: Notification[];
+}
+
+
+/**
+ * This notification module is meant to host the list of notifications that have been fired while the application was
+ * not focused.
+ * This list is then used by the [NotificationButton] component to display notifications to user.
+ **/
+export const notificationsModule = {
+ state: () => ({
+ notifications: []
+ }) as NotificationsStoreState,
+ mutations: {
+ addNotification(state: NotificationsStoreState, payload: Notification) {
+ state.notifications.push(payload);
+ },
+ removeNotification(state: NotificationsStoreState, index: number): void {
+ state.notifications.splice(index, 1);
+ }
+ }
+ }
diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts
new file mode 100644
index 00000000..d77fbc42
--- /dev/null
+++ b/src-vue/src/plugins/store.ts
@@ -0,0 +1,9 @@
+import { createStore } from 'vuex';
+
+
+/**
+ * This is called when application root component has been mounted.
+ * It invokes all Rust methods that are needed to initialize UI.
+ */
+async function _initializeApp(state: any) {
+}
diff --git a/src-vue/src/style.css b/src-vue/src/style.css
new file mode 100644
index 00000000..d322a0dd
--- /dev/null
+++ b/src-vue/src/style.css
@@ -0,0 +1,56 @@
+* {
+ box-sizing: border-box;
+}
+
+html, body {
+ height: 100%;
+ width: 100%;
+}
+
+body {
+ margin: 0;
+ font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
+ --fc-menu_height: 50px;
+ user-select: none;
+}
+
+#app {
+ position: relative;
+ height: 100%;
+ width: 100%;
+}
+
+#fc_bg__container {
+ background: url(/src/assets/mp_colony020033.jpg) center no-repeat;
+ background-size: cover;
+ height: 100%;
+ width: 100%;
+ position: fixed;
+ filter: brightness(0.8);
+ scale: 1.03;
+}
+
+.el-scrollbar {
+ --el-scrollbar-opacity: 0.5;
+ --el-scrollbar-hover-opacity: 0.7;
+}
+
+.fc-container {
+ position: relative;
+ padding-top: var(--fc-menu_height);
+ height: 100%;
+ color: white;
+}
+
+.noModMessage {
+ color: white;
+ margin: 30px 15px;
+}
+
+.fc_popper {
+ width: auto !important;
+}
+
+.el-popconfirm {
+ word-break: break-word;
+}
diff --git a/src-vue/src/utils/GameInstall.ts b/src-vue/src/utils/GameInstall.ts
new file mode 100644
index 00000000..162d2860
--- /dev/null
+++ b/src-vue/src/utils/GameInstall.ts
@@ -0,0 +1,5 @@
+export interface GameInstall {
+ game_path: string;
+ profile: string,
+ install_type: string;
+}
diff --git a/src-vue/src/utils/NorthstarState.ts b/src-vue/src/utils/NorthstarState.ts
new file mode 100644
index 00000000..2c8756b1
--- /dev/null
+++ b/src-vue/src/utils/NorthstarState.ts
@@ -0,0 +1,8 @@
+export enum NorthstarState {
+ GAME_NOT_FOUND = "GAME_NOT_FOUND",
+ INSTALL = "INSTALL",
+ INSTALLING = "INSTALLING",
+ MUST_UPDATE = "MUST_UPDATE",
+ UPDATING = "UPDATING",
+ READY_TO_PLAY = "READY_TO_PLAY"
+} \ No newline at end of file
diff --git a/src-vue/src/utils/ReleaseCanal.ts b/src-vue/src/utils/ReleaseCanal.ts
new file mode 100644
index 00000000..9363aa25
--- /dev/null
+++ b/src-vue/src/utils/ReleaseCanal.ts
@@ -0,0 +1,4 @@
+export enum ReleaseCanal {
+ RELEASE = <any>'Northstar',
+ RELEASE_CANDIDATE = <any>'NorthstarReleaseCandidate'
+}
diff --git a/src-vue/src/utils/SortOptions.d.ts b/src-vue/src/utils/SortOptions.d.ts
new file mode 100644
index 00000000..b6f180d2
--- /dev/null
+++ b/src-vue/src/utils/SortOptions.d.ts
@@ -0,0 +1,8 @@
+export enum SortOptions {
+ NAME_ASC = 'name_asc',
+ NAME_DESC = 'name_desc',
+ DATE_ASC = 'date_asc',
+ DATE_DESC = 'date_desc',
+ MOST_DOWNLOADED = 'most_downloaded',
+ TOP_RATED = 'top_rated'
+}
diff --git a/src-vue/src/utils/Tabs.ts b/src-vue/src/utils/Tabs.ts
new file mode 100644
index 00000000..5d31379c
--- /dev/null
+++ b/src-vue/src/utils/Tabs.ts
@@ -0,0 +1,8 @@
+export enum Tabs {
+ PLAY = '/',
+ CHANGELOG = '/changelog',
+ SETTINGS = '/settings',
+ DEV = '/dev',
+ MODS = '/mods',
+ REPAIR = '/repair',
+}
diff --git a/src-vue/src/utils/filter.ts b/src-vue/src/utils/filter.ts
new file mode 100644
index 00000000..b85b9623
--- /dev/null
+++ b/src-vue/src/utils/filter.ts
@@ -0,0 +1,26 @@
+/**
+ * Implements a fuzzy filter
+ * Iterates through chars of `search_term` and checks if each char exists in consecutive order in `text`.
+ * For example, this means that `text="Gecko"` and `search_term="geo"` will return `true`
+ * but using `text="Gecko"` and `search_term="goe"` will return `false`
+ *
+ * Implements a subset of "fuzzy string searching"
+ * https://en.wikipedia.org/wiki/Approximate_string_matching
+ */
+function fuzzy_filter(text: string, search_term: string): boolean {
+ const lowercase_text = text.toLowerCase();
+ const lowercase_search_term = search_term.toLowerCase();
+
+ let previousIndex = -1;
+ for (let i = 0; i < lowercase_search_term.length; i++) {
+ const char = lowercase_search_term[i];
+ const currentIndex = lowercase_text.indexOf(char, previousIndex + 1);
+ if (currentIndex === -1) {
+ return false;
+ }
+ previousIndex = currentIndex;
+ }
+
+ return true;
+}
+export { fuzzy_filter };
diff --git a/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts
new file mode 100644
index 00000000..f2351226
--- /dev/null
+++ b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts
@@ -0,0 +1,7 @@
+export enum ThunderstoreModStatus {
+ INSTALLED,
+ BEING_INSTALLED,
+ BEING_UPDATED,
+ NOT_INSTALLED,
+ OUTDATED
+}
diff --git a/src-vue/src/utils/thunderstore/version.ts b/src-vue/src/utils/thunderstore/version.ts
new file mode 100644
index 00000000..a111e08c
--- /dev/null
+++ b/src-vue/src/utils/thunderstore/version.ts
@@ -0,0 +1,33 @@
+import {ThunderstoreMod} from "../../../../src-tauri/bindings/ThunderstoreMod";
+import {NorthstarMod} from "../../../../src-tauri/bindings/NorthstarMod";
+import {store} from "../../plugins/store";
+
+/**
+ * Strips off a Thunderstore dependency string from its version
+ * (e.g. "taskinoz-WallrunningTitans-1.0.0" to
+ * "taskinoz-WallrunningTitans").
+ **/
+function getThunderstoreDependencyStringPrefix(dependency: string): string {
+ const dependencyStringMembers = dependency.split('-');
+ return `${dependencyStringMembers[0]}-${dependencyStringMembers[1]}`;
+}
+
+function isThunderstoreModOutdated(mod: ThunderstoreMod): boolean {
+ // Ensure mod is up-to-date.
+ const tsModPrefix = getThunderstoreDependencyStringPrefix(mod.versions[0].full_name);
+ const matchingMods: NorthstarMod[] = store.state.installed_mods.filter((mod: NorthstarMod) => {
+ if (!mod.thunderstore_mod_string) return false;
+ return getThunderstoreDependencyStringPrefix(mod.thunderstore_mod_string!) === tsModPrefix;
+ });
+ if (matchingMods.length !== 0) {
+ // There shouldn't be several mods with same dependency string, but we never know...
+ const matchingMod = matchingMods[0];
+ // A mod is outdated if its dependency strings differs from Thunderstore dependency string
+ // (no need for semver check here).
+ // This assumes mod versions list is sorted from newest to oldest version.
+ return matchingMod.thunderstore_mod_string !== mod.versions[0].full_name;
+ }
+ return false;
+}
+
+export { isThunderstoreModOutdated };
diff --git a/src-vue/src/views/ChangelogView.vue b/src-vue/src/views/ChangelogView.vue
new file mode 100644
index 00000000..1c525a32
--- /dev/null
+++ b/src-vue/src/views/ChangelogView.vue
@@ -0,0 +1,10 @@
+<template>
+ <div class="fc-container">
+ </div>
+</template>
+
+<script lang="ts">
+</script>
+
+<style>
+</style>
diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue
new file mode 100644
index 00000000..3a187b18
--- /dev/null
+++ b/src-vue/src/views/DeveloperView.vue
@@ -0,0 +1,10 @@
+<template>
+ <div class="fc-container">
+ </div>
+</template>
+
+<script lang="ts">
+</script>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/ModsView.vue b/src-vue/src/views/ModsView.vue
new file mode 100644
index 00000000..2c55e401
--- /dev/null
+++ b/src-vue/src/views/ModsView.vue
@@ -0,0 +1,13 @@
+<template>
+ <div class="fc-container" style="display: flex">
+ </div>
+</template>
+
+<script lang="ts">
+import LocalModsView from "./mods/LocalModsView.vue";
+import ModsMenu from "../components/ModsMenu.vue";
+
+</script>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/PlayView.vue b/src-vue/src/views/PlayView.vue
new file mode 100644
index 00000000..1f58c803
--- /dev/null
+++ b/src-vue/src/views/PlayView.vue
@@ -0,0 +1,10 @@
+<script lang="ts">
+</script>
+
+<template>
+ <div class="fc_launch__container">
+ </div>
+</template>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/RepairView.vue b/src-vue/src/views/RepairView.vue
new file mode 100644
index 00000000..3a187b18
--- /dev/null
+++ b/src-vue/src/views/RepairView.vue
@@ -0,0 +1,10 @@
+<template>
+ <div class="fc-container">
+ </div>
+</template>
+
+<script lang="ts">
+</script>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/SettingsView.vue b/src-vue/src/views/SettingsView.vue
new file mode 100644
index 00000000..3b0879d3
--- /dev/null
+++ b/src-vue/src/views/SettingsView.vue
@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script lang="ts">
+</script>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/mods/LocalModsView.vue b/src-vue/src/views/mods/LocalModsView.vue
new file mode 100644
index 00000000..3b0879d3
--- /dev/null
+++ b/src-vue/src/views/mods/LocalModsView.vue
@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script lang="ts">
+</script>
+
+<style scoped>
+</style>
diff --git a/src-vue/src/views/mods/ThunderstoreModsView.vue b/src-vue/src/views/mods/ThunderstoreModsView.vue
new file mode 100644
index 00000000..b100b118
--- /dev/null
+++ b/src-vue/src/views/mods/ThunderstoreModsView.vue
@@ -0,0 +1,10 @@
+<template>
+ <div class="fc-container" style="padding: 0">
+ </div>
+</template>
+
+<script lang="ts">
+</script>
+
+<style scoped>
+</style>