diff --git a/next-ui/.gitignore b/next-ui/.gitignore index a4d3e013..d314cfda 100644 --- a/next-ui/.gitignore +++ b/next-ui/.gitignore @@ -22,4 +22,5 @@ pnpm-debug.log* *.sw? # FormatJS compiled translation files +!/src/i18n/README.md src/i18n diff --git a/next-ui/eslint.config.js b/next-ui/eslint.config.js index f97ce742..49601a7a 100644 --- a/next-ui/eslint.config.js +++ b/next-ui/eslint.config.js @@ -46,6 +46,7 @@ export default defineConfigWithVueTs( 'error', { idInterpolationPattern: '[sha512:contenthash:base64:6]', + idWhitelist: ['app.*'] }, ], }, diff --git a/next-ui/i18n/en.json b/next-ui/i18n/en.json index 57a0f228..8a83d5cf 100644 --- a/next-ui/i18n/en.json +++ b/next-ui/i18n/en.json @@ -1,12 +1,56 @@ { + "/bathK": { + "defaultMessage": "Allow only under", + "description": "User creation/edit dialog: Age restriction field possible option" + }, + "02SRax": { + "defaultMessage": "Sign in", + "description": "Login screen: Sign In button" + }, + "0YG9GQ": { + "defaultMessage": "Remember Me", + "description": "Login screen: Remember Me checkbox" + }, + "2Bh8F2": { + "defaultMessage": "Latest", + "description": "Updates view: badge showing next to the latest release number" + }, "2g7iOx": { "defaultMessage": "Metrics", "description": "Drawer menu for Server > Metrics" }, + "3W0jUi": { + "defaultMessage": "Exclude labels", + "description": "User creation/edit dialog: Exclude labels field label" + }, + "3jrAF6": { + "defaultMessage": "Currently installed", + "description": "Updates view: badge showing next to the currently installed release number" + }, + "3rSWpQ": { + "defaultMessage": "Help translate", + "description": "Translations pop-up menu footer" + }, + "5AAGkA": { + "defaultMessage": "Password", + "description": "Login screen: password field label" + }, + "AeA9Ka": { + "defaultMessage": "No restriction", + "description": "User creation/edit dialog: Age restriction field possible option" + }, + "CUxhzL": { + "defaultMessage": "Roles", + "description": "User creation/edit dialog: Roles field" + }, "DxtDpt": { "defaultMessage": "Media Analysis", "description": "Drawer menu for Media > Media Analysis" }, + "G/T8/2": { + "defaultMessage": "Cancel", + "description": "ConfirmEdit dialog: Cancel button" + }, "G7quju": { "defaultMessage": "Announcements", "description": "Drawer menu for Server > Announcements" @@ -19,6 +63,10 @@ "defaultMessage": "Media", "description": "Drawer menu for Media" }, + "InW6ko": { + "defaultMessage": "Translations", + "description": "Translations pop-up menu header" + }, "IpvWiZ": { "defaultMessage": "Server", "description": "Drawer menu for Server" @@ -27,6 +75,10 @@ "defaultMessage": "Users", "description": "Drawer menu for Server > Users" }, + "LaxrEO": { + "defaultMessage": "Passwords must be identical", + "description": "User password change dialog: Error message if passwords differ" + }, "MvwDsn": { "defaultMessage": "Known", "description": "Drawer menu for Media > Duplicate Pages > Known" @@ -35,10 +87,34 @@ "defaultMessage": "Import", "description": "Drawer menu for Import" }, + "N9WFH4": { + "defaultMessage": "Save", + "description": "ConfirmEdit dialog: Save button" + }, "Nb0V0p": { "defaultMessage": "Missing Posters", "description": "Drawer menu for Media > Missing Posters" }, + "QIr0z7": { + "defaultMessage": "Email", + "description": "Login screen: email field label" + }, + "Sj0HXz": { + "defaultMessage": "Allow only labels", + "description": "User creation/edit dialog: Allow only labels field label" + }, + "UvhIIT": { + "defaultMessage": "Shared Libraries", + "description": "User creation/edit dialog: Shared Libraries field" + }, + "WNY0pu": { + "defaultMessage": "The latest version of Komga is already installed", + "description": "Updates view: banner shown at the top" + }, + "WhasCZ": { + "defaultMessage": "New password", + "description": "User password change dialog: New Password field label" + }, "Y6VlM9": { "defaultMessage": "Read List", "description": "Drawer menu for Import > Read List" @@ -47,6 +123,26 @@ "defaultMessage": "User Interface", "description": "Drawer menu for Server > User Interface" }, + "app.locale-name": { + "defaultMessage": "English", + "description": "The name of the locale, shown in the language selection menu. Must be translated to the language's name" + }, + "app.user-create-dialog..select_create_one": { + "defaultMessage": "Select an item or create one", + "description": "User creation/edit dialog: Allow only labels field selection" + }, + "app.user-create-dialog.all_libraries": { + "defaultMessage": "All libraries", + "description": "User creation/edit dialog: Shared Libraries field, value shown when user has access to all libraries" + }, + "app.user-create-dialog.select_create_one": { + "defaultMessage": "Select an item or create one", + "description": "User creation/edit dialog: Exclude labels field selection" + }, + "b5wVJa": { + "defaultMessage": "Email", + "description": "User creationd ialog: Email field" + }, "cAu/I6": { "defaultMessage": "Duplicate Pages", "description": "Drawer menu for Media > Duplicate Pages" @@ -55,6 +151,10 @@ "defaultMessage": "Activity", "description": "Drawer menu for My Account > Activity" }, + "eVoe+D": { + "defaultMessage": "Please type {validateText} to confirm.", + "description": "Confirmation dialog: default hint to retype validation text" + }, "eW3fXu": { "defaultMessage": "Duplicate Files", "description": "Drawer menu for Media > Duplicate Files" @@ -63,6 +163,14 @@ "defaultMessage": "Books", "description": "Drawer menu for Import > Books" }, + "hEOGa9": { + "defaultMessage": "Age restriction", + "description": "User creation/edit dialog: Age restriction field label" + }, + "jywpqq": { + "defaultMessage": "Age", + "description": "User creation/edit dialog: Age Restriction > Age field label" + }, "l/To3S": { "defaultMessage": "History", "description": "Drawer menu for History" @@ -71,9 +179,17 @@ "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" + "n1Ik+L": { + "defaultMessage": "Updates are available", + "description": "Updates view: banner shown at the top" + }, + "nJiYF7": { + "defaultMessage": "Confirm password", + "description": "User password change dialog: Confirm Password field label" + }, + "o+A10T": { + "defaultMessage": "Password", + "description": "User creation dialog: Password field" }, "oFOkWZ": { "defaultMessage": "API Keys", @@ -83,6 +199,10 @@ "defaultMessage": "My Account", "description": "Drawer menu for My Account" }, + "pENCUD": { + "defaultMessage": "Cancel", + "description": "Confirmation dialog: Cancel button" + }, "qiZm6U": { "defaultMessage": "Unknown", "description": "Drawer menu for Media > Duplicate Pages > Unknown" @@ -91,10 +211,22 @@ "defaultMessage": "User Interface", "description": "Drawer menu for My Account > User Interface" }, + "sUSVQS": { + "defaultMessage": "Mark as read", + "description": "Announcements view: mark as read button tooltip" + }, + "t8vOuG": { + "defaultMessage": "Confirm", + "description": "Confirmation dialog: OK button default text" + }, "ti4Pzo": { "defaultMessage": "Logout", "description": "Drawer menu for Logout" }, + "wmGcF+": { + "defaultMessage": "Exclude over", + "description": "User creation/edit dialog: Age restriction field possible option" + }, "xYGXuU": { "defaultMessage": "Details", "description": "Drawer menu for My Account > Details" diff --git a/next-ui/src/components/LocaleSelector.vue b/next-ui/src/components/LocaleSelector.vue index a079e835..ae7bd815 100644 --- a/next-ui/src/components/LocaleSelector.vue +++ b/next-ui/src/components/LocaleSelector.vue @@ -12,7 +12,11 @@ color="primary" > @@ -29,7 +33,13 @@ target="_blank" > - Help translate + {{ + $formatMessage({ + description: 'Translations pop-up menu footer', + defaultMessage: 'Help translate', + id: '3rSWpQ' + }) + }} diff --git a/next-ui/src/components/LoginForm.vue b/next-ui/src/components/LoginForm.vue index c3ec03a4..75a9234b 100644 --- a/next-ui/src/components/LoginForm.vue +++ b/next-ui/src/components/LoginForm.vue @@ -10,7 +10,11 @@ @@ -20,7 +24,11 @@ @@ -30,7 +38,11 @@ @@ -38,7 +50,11 @@ diff --git a/next-ui/src/components/dialogs/DialogConfirm.vue b/next-ui/src/components/dialogs/DialogConfirm.vue index ea82c21b..bfdfb910 100644 --- a/next-ui/src/components/dialogs/DialogConfirm.vue +++ b/next-ui/src/components/dialogs/DialogConfirm.vue @@ -15,7 +15,17 @@ diff --git a/next-ui/src/i18n/README.md b/next-ui/src/i18n/README.md new file mode 100644 index 00000000..11a3d408 --- /dev/null +++ b/next-ui/src/i18n/README.md @@ -0,0 +1 @@ +This folder contains the compiled translation files, using `npm run i18n-compile`. diff --git a/next-ui/src/pages/server/announcements.vue b/next-ui/src/pages/server/announcements.vue index e3d2f276..e53c4865 100644 --- a/next-ui/src/pages/server/announcements.vue +++ b/next-ui/src/pages/server/announcements.vue @@ -30,7 +30,11 @@