i18n support

This commit is contained in:
Gauthier Roebroeck 2025-05-28 16:32:45 +08:00
parent 43238774b0
commit 7b0d5f4f75
12 changed files with 190 additions and 102 deletions

3
next-ui/.gitignore vendored
View file

@ -20,3 +20,6 @@ pnpm-debug.log*
*.njsproj
*.sln
*.sw?
# FormatJS compiled translation files
src/i18n

View file

@ -1,34 +1,102 @@
{
"8dsA6c": {
"defaultMessage": "User Interface",
"description": "Drawer menu for User Interface"
"2g7iOx": {
"defaultMessage": "Metrics",
"description": "Drawer menu for Server > Metrics"
},
"9yKJ2S": {
"DxtDpt": {
"defaultMessage": "Media Analysis",
"description": "Drawer menu for Media > Media Analysis"
},
"G7quju": {
"defaultMessage": "Announcements",
"description": "Drawer menu for Server > Announcements"
},
"HaWCi3": {
"defaultMessage": "Settings",
"description": "Drawer menu for Server Settings"
"description": "Drawer menu for Server > Settings"
},
"BXkzdX": {
"defaultMessage": "Users",
"description": "Drawer menu for Users"
"Hl9H/B": {
"defaultMessage": "Media",
"description": "Drawer menu for Media"
},
"IpvWiZ": {
"defaultMessage": "Server",
"description": "Drawer menu for Server"
},
"Nn5L5Q": {
"defaultMessage": "Announcements",
"description": "Drawer menu for Announcements"
"JGOfZq": {
"defaultMessage": "Users",
"description": "Drawer menu for Server > Users"
},
"MvwDsn": {
"defaultMessage": "Known",
"description": "Drawer menu for Media > Duplicate Pages > Known"
},
"N7+QXi": {
"defaultMessage": "Import",
"description": "Drawer menu for Import"
},
"Nb0V0p": {
"defaultMessage": "Missing Posters",
"description": "Drawer menu for Media > Missing Posters"
},
"Y6VlM9": {
"defaultMessage": "Read List",
"description": "Drawer menu for Import > Read List"
},
"Yf4DJ2": {
"defaultMessage": "User Interface",
"description": "Drawer menu for Server > User Interface"
},
"cAu/I6": {
"defaultMessage": "Duplicate Pages",
"description": "Drawer menu for Media > Duplicate Pages"
},
"cGFtPg": {
"defaultMessage": "Activity",
"description": "Drawer menu for My Account > Activity"
},
"eW3fXu": {
"defaultMessage": "Duplicate Files",
"description": "Drawer menu for Media > Duplicate Files"
},
"fQIepD": {
"defaultMessage": "Books",
"description": "Drawer menu for Import > Books"
},
"l/To3S": {
"defaultMessage": "History",
"description": "Drawer menu for History"
},
"lDnmZD": {
"defaultMessage": "Updates",
"description": "Drawer menu for Server > Updates"
},
"localename": {
"defaultMessage": "English",
"description": "The name of the locale, shown in the language selection menu. Must be translated to the language's name"
},
"nGrxDH": {
"defaultMessage": "Updates",
"description": "Drawer menu for Updates"
"oFOkWZ": {
"defaultMessage": "API Keys",
"description": "Drawer menu for My Account > API Keys"
},
"nr3gEG": {
"defaultMessage": "Metrics",
"description": "Drawer menu for Metrics"
"od545m": {
"defaultMessage": "My Account",
"description": "Drawer menu for My Account"
},
"qiZm6U": {
"defaultMessage": "Unknown",
"description": "Drawer menu for Media > Duplicate Pages > Unknown"
},
"rw/Dkw": {
"defaultMessage": "User Interface",
"description": "Drawer menu for My Account > User Interface"
},
"ti4Pzo": {
"defaultMessage": "Logout",
"description": "Drawer menu for Logout"
},
"xYGXuU": {
"defaultMessage": "Details",
"description": "Drawer menu for My Account > Details"
}
}

View file

@ -1,14 +0,0 @@
{
"9yKJ2S": {
"defaultMessage": "Réglages",
"description": "Drawer menu for Server Settings"
},
"localename": {
"defaultMessage": "Français",
"description": "The name of the locale, shown in the language selection menu. Must be translated to the language's name"
},
"IpvWiZ": {
"defaultMessage": "Serveur",
"description": "Drawer menu for Server"
}
}

View file

@ -5,14 +5,15 @@
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "run-p type-check \"build-only {@}\" --",
"build": "run-p i18n-compile type-check \"build-only {@}\" --",
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --build --force",
"lint": "eslint . --fix",
"openapi-generate": "npx tsx ./openapi-generator.mts",
"i18n-extract": "formatjs extract \"src/**/*.{ts,tsx,vue}\" --ignore=\"**/*.d.ts\" --out-file src/i18n/en.json",
"i18n-compile": "formatjs compile-folder i18n src/i18n"
"i18n-extract": "formatjs extract \"src/**/*.{ts,tsx,vue}\" --ignore=\"**/*.d.ts\" --out-file i18n/en.json",
"i18n-compile": "formatjs compile-folder i18n src/i18n",
"i18n-verify": "formatjs verify --missing-keys --source-locale=en \"i18n/*.json\""
},
"dependencies": {
"@pinia/colada": "^0.16.1",

View file

@ -3,26 +3,46 @@
<template #activator="{ props }">
<v-list-item
v-bind="props"
title="My Account"
:title="$formatMessage({
description: 'Drawer menu for My Account',
defaultMessage: 'My Account',
id: 'od545m'
})"
prepend-icon="mdi-account"
/>
</template>
<v-list-item
to="/account/details"
title="Details"
:title="$formatMessage({
description: 'Drawer menu for My Account > Details',
defaultMessage: 'Details',
id: 'xYGXuU'
})"
/>
<v-list-item
to="/account/api-keys"
title="API Keys"
:title="$formatMessage({
description: 'Drawer menu for My Account > API Keys',
defaultMessage: 'API Keys',
id: 'oFOkWZ'
})"
/>
<v-list-item
to="/account/ui"
title="User Interface"
:title="$formatMessage({
description: 'Drawer menu for My Account > User Interface',
defaultMessage: 'User Interface',
id: 'rw/Dkw'
})"
/>
<v-list-item
to="/account/activity"
title="Activity"
:title="$formatMessage({
description: 'Drawer menu for My Account > Activity',
defaultMessage: 'Activity',
id: 'cGFtPg'
})"
/>
</v-list-group>
</template>

View file

@ -1,7 +1,11 @@
<template>
<v-list-item
to="/history"
title="History"
:title="$formatMessage({
description: 'Drawer menu for History',
defaultMessage: 'History',
id: 'l/To3S'
})"
prepend-icon="mdi-clock-time-four-outline"
/>
</template>

View file

@ -3,19 +3,31 @@
<template #activator="{ props }">
<v-list-item
v-bind="props"
title="Import"
:title="$formatMessage({
description: 'Drawer menu for Import',
defaultMessage: 'Import',
id: 'N7+QXi'
})"
prepend-icon="mdi-import"
/>
</template>
<v-list-item
to="/import/books"
title="Books"
:title="$formatMessage({
description: 'Drawer menu for Import > Books',
defaultMessage: 'Books',
id: 'fQIepD'
})"
/>
<v-list-item
to="/import/readlist"
title="Read List"
:title="$formatMessage({
description: 'Drawer menu for Import > Read List',
defaultMessage: 'Read List',
id: 'Y6VlM9'
})"
/>
</v-list-group>
</template>

View file

@ -1,6 +1,10 @@
<template>
<v-list-item
title="Logout"
:title="$formatMessage({
description: 'Drawer menu for Logout',
defaultMessage: 'Logout',
id: 'ti4Pzo'
})"
prepend-icon="mdi-power"
@click="performLogout"
/>

View file

@ -3,39 +3,68 @@
<template #activator="{ props }">
<v-list-item
v-bind="props"
title="Media"
:title="$formatMessage({
description: 'Drawer menu for Media',
defaultMessage: 'Media',
id: 'Hl9H/B'
})"
prepend-icon="mdi-book-cog"
/>
</template>
<v-list-item
to="/media/analysis"
title="Media Analysis"
:title="$formatMessage({
description: 'Drawer menu for Media > Media Analysis',
defaultMessage: 'Media Analysis',
id: 'DxtDpt'
})"
/>
<v-list-item
to="/media/missing-posters"
title="Missing Posters"
:title="$formatMessage({
description: 'Drawer menu for Media > Missing Posters',
defaultMessage: 'Missing Posters',
id: 'Nb0V0p'
})"
/>
<v-list-item
to="/media/duplicate-files"
title="Duplicate Files"
:title="$formatMessage({
description: 'Drawer menu for Media > Duplicate Files',
defaultMessage: 'Duplicate Files',
id: 'eW3fXu'
})"
/>
<v-list-group value="Duplicate Pages">
<template #activator="{ props }">
<v-list-item
v-bind="props"
title="Duplicate Pages"
:title="$formatMessage({
description: 'Drawer menu for Media > Duplicate Pages',
defaultMessage: 'Duplicate Pages',
id: 'cAu/I6'
})"
/>
</template>
<v-list-item
to="/media/duplicate-pages/known"
title="Known"
:title="$formatMessage({
description: 'Drawer menu for Media > Duplicate Pages > Known',
defaultMessage: 'Known',
id: 'MvwDsn'
})"
/>
<v-list-item
to="/media/duplicate-pages/unknown"
title="Unknown"
:title="$formatMessage({
description: 'Drawer menu for Media > Duplicate Pages > Unknown',
defaultMessage: 'Unknown',
id: 'qiZm6U'
})"
/>
</v-list-group>
</v-list-group>

View file

@ -29,42 +29,42 @@
<v-list-item
to="/server/users"
:title="$formatMessage({
description: 'Drawer menu for Users',
description: 'Drawer menu for Server > Users',
defaultMessage: 'Users',
id: 'BXkzdX'
id: 'JGOfZq'
})"
/>
<v-list-item
to="/server/settings"
:title="$formatMessage({
description: 'Drawer menu for Server Settings',
description: 'Drawer menu for Server > Settings',
defaultMessage: 'Settings',
id: '9yKJ2S'
id: 'HaWCi3'
})"
/>
<v-list-item
to="/server/ui"
:title="$formatMessage({
description: 'Drawer menu for User Interface',
description: 'Drawer menu for Server > User Interface',
defaultMessage: 'User Interface',
id: '8dsA6c'
id: 'Yf4DJ2'
})"
/>
<v-list-item
to="/server/metrics"
:title="$formatMessage({
description: 'Drawer menu for Metrics',
description: 'Drawer menu for Server > Metrics',
defaultMessage: 'Metrics',
id: 'nr3gEG'
id: '2g7iOx'
})"
/>
<v-list-item
to="/server/announcements"
:title="$formatMessage({
description: 'Drawer menu for Announcements',
description: 'Drawer menu for Server > Announcements',
defaultMessage: 'Announcements',
id: 'Nn5L5Q'
id: 'G7quju'
})"
>
<template #append>
@ -80,9 +80,9 @@
<v-list-item
to="/server/updates"
:title="$formatMessage({
description: 'Drawer menu for Updates',
description: 'Drawer menu for Server > Updates',
defaultMessage: 'Updates',
id: 'nGrxDH'
id: 'lDnmZD'
})"
/>
</v-list-group>

View file

@ -1,34 +0,0 @@
{
"8dsA6c": {
"defaultMessage": "User Interface",
"description": "Drawer menu for User Interface"
},
"9yKJ2S": {
"defaultMessage": "Settings",
"description": "Drawer menu for Server Settings"
},
"BXkzdX": {
"defaultMessage": "Users",
"description": "Drawer menu for Users"
},
"IpvWiZ": {
"defaultMessage": "Server",
"description": "Drawer menu for Server"
},
"Nn5L5Q": {
"defaultMessage": "Announcements",
"description": "Drawer menu for Announcements"
},
"localename": {
"defaultMessage": "English",
"description": "The name of the locale, shown in the language selection menu. Must be translated to the language's name"
},
"nGrxDH": {
"defaultMessage": "Updates",
"description": "Drawer menu for Updates"
},
"nr3gEG": {
"defaultMessage": "Metrics",
"description": "Drawer menu for Metrics"
}
}

View file

@ -1,5 +0,0 @@
{
"9yKJ2S": "Réglages",
"IpvWiZ": "Serveur",
"localename": "Français"
}