Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ watchEffect(() => {
const { locale } = useI18n();

document.addEventListener('keydown', (e: KeyboardEvent) => {
if (e.altKey && e.key === 'l') {
if (e.altKey && ['l', '¬'].includes(e.key.toLowerCase())) {
Copy link
Owner Author

@ebkr ebkr Aug 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the same shortcut but on macOS. It doesn't like to register as the L key 💢

console.log("Switch lang");
if (locale.value === 'en') {
locale.value = 'fr';
Expand Down
59 changes: 59 additions & 0 deletions src/i18n/base/pages/SplashMessageFormat.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
export type SplashMessageFormat = {
pageTitle: string;
gameUpdatesWarning: string;
menu: {
helpLabel: string;
helpItems: {
about: string;
faq: string;
}
};
actions: {
goBack: string;
};
content: {
main: {
didYouKnow: string;
externalInstallWithModManager: string;
goToThunderstore: string;
exportProfile: string;
havingTrouble: {
title: string;
body: string;
serverLinkText: string;
}

};
about: {
title: string;
creator: string;
techStack: {
builtUsing: string;
electron: string;
node: string;
vue: string;
typescript: string;
};
};
faq: {
title: string;
howToGetStarted: {
title: string;
body: string;
};
startingWithMods: {
title: string;
body: string;
}
};
}
states: {
preparing: string;
checkingForUpdates: string;
checkingForLocalCache: string;
checkingForThunderstoreUpdates: string;
loadingLatestThunderstoreList: string;
pruningLocalCache: string;
processingModList: string;
}
}
52 changes: 6 additions & 46 deletions src/i18n/en/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
// so you can safely delete all default props below

import { MessageFormat } from '../index';
import {GameSelectionTranslation} from "./pages/GameSelectionTranslation";
import {SplashTranslation} from "./pages/SplashTranslation";
import {PlatformTranslation} from "./platforms/PlatformTranslation";

const message: MessageFormat = {
metadata: {
Expand All @@ -10,53 +13,10 @@ const message: MessageFormat = {
},
translations: {
pages: {
gameSelection: {
platformModal: {
header: "Which store manages your game?",
selectAction: "Select platform",
},
pageTitle: {
title: {
game: 'Game selection',
server: 'Server selection',
},
subtitle: {
game: 'Which game are you managing your mods for?',
server: 'Which dedicated server are you managing your mods for?',
}
},
migrationNotice: {
requiresUpdate: 'An update to the manager has occurred and needs to do background work.',
actionsDisabled: 'The options to select a game are disabled until the work has completed.',
},
tabs: {
game: 'Game',
server: 'Server'
},
actions: {
select: {
game: 'Select game',
server: 'Select server'
},
setAsDefault: 'Set as default'
},
filter: {
placeholder: {
game: 'Search for a game',
server: 'Search for a server',
}
}
}
gameSelection: GameSelectionTranslation,
splash: SplashTranslation
},
platforms: {
STEAM: "Steam",
STEAM_DIRECT: "Steam",
EPIC_GAMES_STORE: "Epic Games Store",
OCULUS_STORE: "Oculus Store",
ORIGIN: "Origin / EA App",
XBOX_GAME_PASS: "Xbox Game Pass",
OTHER: "Autre",
}
platforms: PlatformTranslation
}
};

Expand Down
39 changes: 39 additions & 0 deletions src/i18n/en/pages/GameSelectionTranslation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import {GameSelectionMessageFormat} from "../../base/pages/GameSelectionMessageFormat";

export const GameSelectionTranslation: GameSelectionMessageFormat = {
platformModal: {
header: "Which store manages your game?",
selectAction: "Select platform",
},
pageTitle: {
title: {
game: 'Game selection',
server: 'Server selection',
},
subtitle: {
game: 'Which game are you managing your mods for?',
server: 'Which dedicated server are you managing your mods for?',
}
},
migrationNotice: {
requiresUpdate: 'An update to the manager has occurred and needs to do background work.',
actionsDisabled: 'The options to select a game are disabled until the work has completed.',
},
tabs: {
game: 'Game',
server: 'Server'
},
actions: {
select: {
game: 'Select game',
server: 'Select server'
},
setAsDefault: 'Set as default'
},
filter: {
placeholder: {
game: 'Search for a game',
server: 'Search for a server',
}
}
}
69 changes: 69 additions & 0 deletions src/i18n/en/pages/SplashTranslation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import {SplashMessageFormat} from "../../base/pages/SplashMessageFormat";

export const SplashTranslation: SplashMessageFormat = {
pageTitle: 'Starting {appName}',
gameUpdatesWarning: 'Game updates may break mods. If a new update has been released, please be patient.',
menu: {
helpLabel: 'Help',
helpItems: {
about: 'About',
faq: 'FAQ'
},
},
actions: {
goBack: 'Go back',
},
content: {
main: {
didYouKnow: 'Did you know?',
externalInstallWithModManager: `
You can use the "Install with Mod Manager" button on
Thunderstore to install mods using {appName}.
`,
goToThunderstore: 'Go to Thunderstore',
exportProfile: `
You can export the selected profile from the settings screen as either a file, or a code.
This makes it easy to share your mod list with friends!
`,
havingTrouble: {
title: 'Having trouble?',
body: 'Send a screenshot of the error in the support channel of the r2modman Discord server.',
serverLinkText: 'Join the {appName} Discord server',
},
},
about: {
title: 'About {appName}',
creator: 'It\'s created by Ebkr.',
techStack: {
builtUsing: 'The application has been built using Quasar, which provides the following tech stack:',
electron: 'Electron',
node: 'NodeJS',
vue: 'Vue 3',
typescript: 'TypeScript',
}
},
faq: {
title: 'FAQ',
howToGetStarted: {
title: 'How do I get started?',
body: 'Head on over to the Online tab and download your favourite mods. Click "Start modded" and enjoy.'
},
startingWithMods: {
title: 'Starting the game with mods',
body: `
You have to start the game from within the manager.
Starting through Steam will not work without manual changes.
`
}
}
},
states: {
preparing: 'Preparing',
checkingForUpdates: 'Checking for updates',
checkingForLocalCache: 'Checking for mod list in local cache',
checkingForThunderstoreUpdates: 'Checking for mod list updates from Thunderstore',
loadingLatestThunderstoreList: 'Loading latest mod list from Thunderstore',
pruningLocalCache: 'Pruning removed mods from local cache',
processingModList: 'Processing the mod list',
}
}
11 changes: 11 additions & 0 deletions src/i18n/en/platforms/PlatformTranslation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import {PlatformMessageFormat} from "../../base/platforms/PlatformMessageFormat";

export const PlatformTranslation: PlatformMessageFormat = {
STEAM: "Steam",
STEAM_DIRECT: "Steam",
EPIC_GAMES_STORE: "Epic Games Store",
OCULUS_STORE: "Oculus Store",
ORIGIN: "Origin / EA App",
XBOX_GAME_PASS: "Xbox Game Pass",
OTHER: "Other",
}
58 changes: 7 additions & 51 deletions src/i18n/fr/index.ts
Original file line number Diff line number Diff line change
@@ -1,62 +1,18 @@
// This is just an example,
// so you can safely delete all default props below
import {GameSelectionTranslation} from "./pages/GameSelectionTranslation";
import {SplashTranslation} from "./pages/SplashTranslation";
import {PlatformTranslation} from "./platforms/PlatformTranslation";

import { MessageFormat } from '../index';

const message: MessageFormat = {
const message = {
metadata: {
name: 'French',
locale: 'fr'
},
translations: {
pages: {
gameSelection: {
platformModal: {
header: "Sélectionnez le magasin pour vos jeux",
selectAction: "Sélectionnez le magasin",
},
pageTitle: {
title: {
game: 'Sélectionnez un jeu',
server: 'Sélectionnez un serveur',
},
subtitle: {
game: 'Sélectionnez un jeu pour gérer vos mods',
server: 'Sélectionnez un serveur pour gérer vos mods',
}
},
migrationNotice: {
requiresUpdate: 'Une mise à jour du gestionnaire a eu lieu et un travail de fond est nécessaire.',
actionsDisabled: 'Les actions de sélection de jeu sont désactivées jusqu\'à ce que le travail soit terminé.'
},
tabs: {
game: 'Jeu',
server: 'Serveur'
},
actions: {
select: {
game: 'Sélectionner',
server: 'Sélectionner'
},
setAsDefault: 'Définir par défaut'
},
filter: {
placeholder: {
game: 'Rechercher un jeu',
server: 'Rechercher un serveur'
}
}
}
gameSelection: GameSelectionTranslation,
splash: SplashTranslation
},
platforms: {
STEAM: "Steam",
STEAM_DIRECT: "Steam",
EPIC_GAMES_STORE: "Epic Games Store",
OCULUS_STORE: "Oculus / Meta Magasin",
ORIGIN: "Origin / EA App",
XBOX_GAME_PASS: "Xbox Game Pass",
OTHER: "Autre",
}
platforms: PlatformTranslation
}
};

Expand Down
39 changes: 39 additions & 0 deletions src/i18n/fr/pages/GameSelectionTranslation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import {GameSelectionMessageFormat} from "../../base/pages/GameSelectionMessageFormat";

export const GameSelectionTranslation: GameSelectionMessageFormat = {
platformModal: {
header: "Sélectionnez le magasin pour vos jeux",
selectAction: "Sélectionnez le magasin"
},
pageTitle: {
title: {
game: 'Sélectionnez un jeu',
server: 'Sélectionnez un serveur'
},
subtitle: {
game: 'Sélectionnez un jeu pour gérer vos mods',
server: 'Sélectionnez un serveur pour gérer vos mods'
}
},
migrationNotice: {
requiresUpdate: 'Une mise à jour du gestionnaire a eu lieu et un travail de fond est nécessaire.',
actionsDisabled: 'Les actions de sélection de jeu sont désactivées jusqu\'à ce que le travail soit terminé.'
},
tabs: {
game: 'Jeu',
server: 'Serveur'
},
actions: {
select: {
game: 'Sélectionner',
server: 'Sélectionner'
},
setAsDefault: 'Définir par défaut'
},
filter: {
placeholder: {
game: 'Rechercher un jeu',
server: 'Rechercher un serveur'
}
}
}
Loading
Loading