mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-07-13 00:52:01 -04:00
chore(idp): update i18n, document workflow
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
This commit is contained in:
4
services/idp/i18n/.gitignore
vendored
4
services/idp/i18n/.gitignore
vendored
@@ -1,2 +1,4 @@
|
||||
*.mo
|
||||
dev-translation.json
|
||||
|
||||
# i18next-cli extracted keys (intermediate, regenerated on demand)
|
||||
translation.*.json
|
||||
|
||||
@@ -15,27 +15,31 @@ POS ?= $(wildcard *.po)
|
||||
.PHONY: build
|
||||
build: json
|
||||
|
||||
.PYTHON: json
|
||||
.PHONY: json
|
||||
json:
|
||||
@for po in $(POS); do \
|
||||
lang=$$(echo $$po | sed "s/\.po//"); \
|
||||
$(PNPM) i18next-conv -K --skipUntranslated -l $$lang -s i18n/$$po -t ../src/locales/$$lang/translation.json; \
|
||||
$(PNPM) i18next-conv -K --skipUntranslated -l $$lang -s $$po -t ../src/locales/$$lang/translation.json; \
|
||||
done
|
||||
$(PNPM) node i18n/build-json.js ../src/locales/locales.json $(POS)
|
||||
$(PNPM) node build-json.js ../src/locales/locales.json $(POS)
|
||||
|
||||
dev-translation.json: FORCE
|
||||
$(PNPM) i18next --fail-on-warnings
|
||||
.PHONY: extract-keys
|
||||
extract-keys:
|
||||
$(PNPM) i18next-cli extract -q || true
|
||||
|
||||
translation.en.json: FORCE
|
||||
$(MAKE) extract-keys
|
||||
|
||||
.PHONY: extract
|
||||
extract: pot
|
||||
|
||||
.PHONY: pot
|
||||
pot: dev-translation.json
|
||||
pot: translation.en.json
|
||||
@tmpfile1=$(shell mktemp).po; \
|
||||
tmpfile2=$(shell mktemp).po; \
|
||||
trap 'rm -f "$$tmpfile1" "$$tmpfile2"' EXIT; \
|
||||
$(PNPM) i18next-conv --project "LibreGraph Connect Identifier" -K -l en -s i18n/dev-translation.json -t $$tmpfile1; \
|
||||
$(PNPM) node i18n/build-pot.js $$tmpfile1 $$tmpfile2; \
|
||||
$(PNPM) i18next-conv --project "LibreGraph Connect Identifier" -K -l en -s translation.en.json -t $$tmpfile1; \
|
||||
$(PNPM) node build-pot.js $$tmpfile1 $$tmpfile2; \
|
||||
$(MSGCAT) --no-wrap -o $(POT) $$tmpfile2
|
||||
|
||||
.PHONY: merge
|
||||
|
||||
92
services/idp/i18n/README.md
Normal file
92
services/idp/i18n/README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# IDP Translations
|
||||
|
||||
## Overview
|
||||
|
||||
The IDP service uses i18next for internationalization with gettext (`.po`)
|
||||
files as the source of truth for translations. The workflow is:
|
||||
|
||||
```text
|
||||
Source code t() calls → extract keys → .pot template
|
||||
→ merge into .po → convert to JSON → app bundles
|
||||
```
|
||||
|
||||
## File Structure
|
||||
|
||||
- `i18n/*.po` — translation files per language (committed)
|
||||
- `i18n/translation.pot` — extracted keys template (committed)
|
||||
- `i18n/translation.en.json` — intermediate EN keys (gitignored)
|
||||
- `src/locales/*/translation.json` — JSON translations at runtime (committed)
|
||||
- `src/locales/locales.json` — language metadata for locale selector (committed)
|
||||
|
||||
## Adding New Translation Keys
|
||||
|
||||
### 1. Add a key in source code
|
||||
|
||||
```jsx
|
||||
t("konnect.new.key", "Default fallback text")
|
||||
```
|
||||
|
||||
The first argument is the i18next key path (dot notation for nested JSON). The
|
||||
second argument is the default/fallback English text — this is what translators
|
||||
see in `.po` files as `msgid`.
|
||||
|
||||
### 2. Extract new keys into the `.pot` template
|
||||
|
||||
```bash
|
||||
make -C i18n extract
|
||||
```
|
||||
|
||||
This runs `i18next-cli extract` to scan all `src/**/*.{js,jsx,ts,tsx}` files,
|
||||
writes extracted English keys to `i18n/translation.en.json`, then converts
|
||||
them into `translation.pot`.
|
||||
|
||||
### 3. Merge new keys into existing `.po` files
|
||||
|
||||
```bash
|
||||
make -C i18n merge
|
||||
```
|
||||
|
||||
This runs `msgmerge` on each `.po` file to add any new keys from the updated
|
||||
`.pot` template. Translators then fill in translations for the new entries.
|
||||
|
||||
### 4. Convert `.po` files to JSON for the app
|
||||
|
||||
```bash
|
||||
make -C i18n json
|
||||
```
|
||||
|
||||
This runs `i18next-conv` on each `.po` file to produce
|
||||
`src/locales/{lang}/translation.json`. This step is also run automatically by
|
||||
`make build`.
|
||||
|
||||
## Runtime Loading
|
||||
|
||||
The app loads translations via dynamic webpack imports:
|
||||
|
||||
```typescript
|
||||
// src/i18n.ts
|
||||
import(`./locales/${language}/translation.json`)
|
||||
```
|
||||
|
||||
When the user selects a language, i18next fetches the corresponding JSON file.
|
||||
The locale selector reads available languages from `src/locales/locales.json`.
|
||||
|
||||
## Build and CI
|
||||
|
||||
- **`make build`** → runs `make json` to convert `.po` files to JSON before
|
||||
webpack bundling
|
||||
- **CI (Woodpecker)** runs `make node-generate-prod` which calls
|
||||
`pnpm install && pnpm build` — no translation extraction happens in CI, only
|
||||
the committed JSON files are bundled
|
||||
|
||||
## Tools
|
||||
|
||||
- `i18next-cli` — extracts keys from source code (AST-based)
|
||||
- `i18next-conv` — converts between `.po` and i18next JSON
|
||||
- `msgmerge` / `msgcat` — standard gettext merge/collate tools
|
||||
- `gettext-parser` — cleans headers in generated POT file
|
||||
|
||||
## Configuration
|
||||
|
||||
- `i18n/i18next.config.ts` — extraction config (input globs, output path)
|
||||
- `src/i18n.ts` — runtime setup (detection, fallbacks, backend loader)
|
||||
@@ -57,11 +57,6 @@ msgstr "Konto auswählen"
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr "Wenn Sie \"Einverstanden\" klicken werden Sie zu {{redirectURI}} weitergeleitet"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -92,11 +87,6 @@ msgstr "Hallo {{displayName}}"
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr "Hallo {{displayName}}"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr "Identität"
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -164,8 +154,8 @@ msgstr "Unerwarteter Antwort-Status: {{state}}"
|
||||
msgid "Use another account"
|
||||
msgstr "Anderes Konto"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
|
||||
@@ -56,11 +56,6 @@ msgstr ""
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -91,11 +86,6 @@ msgstr ""
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -163,8 +153,8 @@ msgstr ""
|
||||
msgid "Use another account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -57,11 +57,6 @@ msgstr "Choisir un compte"
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr "En cliquant \"Autoriser\" vous serez redirigé vers: {{redirectURI}}"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -92,11 +87,6 @@ msgstr "Bonjour {{displayName}}"
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr "Bonjour {{displayName}}"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -164,8 +154,8 @@ msgstr "Erreur d'état inattendue : {{state}}"
|
||||
msgid "Use another account"
|
||||
msgstr "Utiliser un autre compte"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
|
||||
10
services/idp/i18n/i18next.config.ts
Normal file
10
services/idp/i18n/i18next.config.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { defineConfig } from 'i18next-cli';
|
||||
|
||||
export default defineConfig({
|
||||
locales: ['en'],
|
||||
extract: {
|
||||
currentLocale: 'en',
|
||||
input: ['../src/**/*.{js,jsx,ts,tsx}'],
|
||||
output: 'translation.{{language}}.json',
|
||||
},
|
||||
});
|
||||
@@ -57,11 +57,6 @@ msgstr ""
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -92,11 +87,6 @@ msgstr ""
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -164,8 +154,8 @@ msgstr ""
|
||||
msgid "Use another account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -57,11 +57,6 @@ msgstr "Account kiezen"
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr "Door op \"Toestaan\" te klikken word je doorverwezen naar: {{redirectURI}}"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -92,11 +87,6 @@ msgstr "Hallo {{displayName}}"
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr "Hoi {{displayName}}"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -164,8 +154,8 @@ msgstr "Onverwachte respons status: {{state}}"
|
||||
msgid "Use another account"
|
||||
msgstr "Gebruik een ander account"
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr "Gebruikersnaam"
|
||||
|
||||
|
||||
@@ -3,192 +3,187 @@ msgstr ""
|
||||
"Project-Id-Version: LibreGraph Connect Identifier\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
|
||||
"POT-Creation-Date: 2026-07-08T15:11:00.860Z\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
#. From: konnect##loading##error##headline
|
||||
#: konnect##loading##error##headline
|
||||
msgid "Failed to connect to server"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##retryButton##label
|
||||
#: konnect##login##retryButton##label
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##headline
|
||||
#: konnect##login##headline
|
||||
msgid "Sign in"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##passwordField##label
|
||||
#: konnect##login##passwordField##label
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##nextButton##label
|
||||
#: konnect##login##nextButton##label
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##aliasBasic
|
||||
#: konnect##scopeDescription##aliasBasic
|
||||
msgid "Access your basic account information"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##scope
|
||||
#: konnect##scopeDescription##scope
|
||||
msgid "Scope: {{scope}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##headline
|
||||
#: konnect##goodbye##headline
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##subHeader
|
||||
#: konnect##goodbye##subHeader
|
||||
msgid "you have been signed out from your account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##message##close
|
||||
#: konnect##goodbye##message##close
|
||||
msgid "You can close this window now."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##message##confirm
|
||||
#: konnect##goodbye##message##confirm
|
||||
msgid "Press the button below, to sign out from your account now."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##confirm##headline
|
||||
#: konnect##goodbye##confirm##headline
|
||||
msgid "Hello {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##confirm##subHeader
|
||||
#: konnect##goodbye##confirm##subHeader
|
||||
msgid "please confirm sign out"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##goodbye##signoutButton##label
|
||||
#. konnect##welcome##signoutButton##label
|
||||
#: konnect##goodbye##signoutButton##label
|
||||
#: konnect##welcome##signoutButton##label
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##chooseaccount##headline
|
||||
#: konnect##chooseaccount##headline
|
||||
#. From: translation##konnect##chooseaccount##headline
|
||||
#: translation##konnect##chooseaccount##headline
|
||||
msgid "Choose an account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##chooseaccount##subHeader
|
||||
#: konnect##chooseaccount##subHeader
|
||||
#. From: translation##konnect##chooseaccount##subHeader
|
||||
#: translation##konnect##chooseaccount##subHeader
|
||||
msgid "to sign in"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##chooseaccount##useOther##persona##label
|
||||
#: konnect##chooseaccount##useOther##persona##label
|
||||
msgid "?"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##chooseaccount##useOther##label
|
||||
#: konnect##chooseaccount##useOther##label
|
||||
#. From: translation##konnect##chooseaccount##useOther##label
|
||||
#: translation##konnect##chooseaccount##useOther##label
|
||||
msgid "Use another account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##headline
|
||||
#: konnect##consent##headline
|
||||
msgid "Hi {{displayName}}"
|
||||
#. From: translation##konnect##chooseaccount##useOther##persona##label
|
||||
#: translation##konnect##chooseaccount##useOther##persona##label
|
||||
msgid "?"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##message
|
||||
#: konnect##consent##message
|
||||
msgid "<0><0><0></0></0></0> wants to"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##tooltip##client
|
||||
#: konnect##consent##tooltip##client
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##question
|
||||
#: konnect##consent##question
|
||||
msgid "Allow <1><0></0></1> to do this?"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##consequence
|
||||
#: konnect##consent##consequence
|
||||
msgid "By clicking Allow, you allow this app to use your information."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##cancelButton##label
|
||||
#: konnect##consent##cancelButton##label
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##consent##allowButton##label
|
||||
#: konnect##consent##allowButton##label
|
||||
#. From: translation##konnect##consent##allowButton##label
|
||||
#: translation##konnect##consent##allowButton##label
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##welcome##headline
|
||||
#: konnect##welcome##headline
|
||||
msgid "Welcome {{displayName}}"
|
||||
#. From: translation##konnect##consent##cancelButton##label
|
||||
#: translation##konnect##consent##cancelButton##label
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##welcome##message
|
||||
#: konnect##welcome##message
|
||||
msgid "You are signed in - awesome!"
|
||||
#. From: translation##konnect##consent##consequence
|
||||
#: translation##konnect##consent##consequence
|
||||
msgid "By clicking Allow, you allow this app to use your information."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
#. From: translation##konnect##consent##headline
|
||||
#: translation##konnect##consent##headline
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingPassword
|
||||
#: konnect##error##login##validate##missingPassword
|
||||
msgid "Enter your password."
|
||||
#. From: translation##konnect##consent##message
|
||||
#: translation##konnect##consent##message
|
||||
msgid "<0><0><0></0></0></0> wants to"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##failed
|
||||
#: konnect##error##login##failed
|
||||
msgid "Logon failed. Please verify your credentials and try again."
|
||||
#. From: translation##konnect##consent##question
|
||||
#: translation##konnect##consent##question
|
||||
msgid "Allow <1><0></0></1> to do this?"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##http##networkError
|
||||
#: konnect##error##http##networkError
|
||||
#. From: translation##konnect##consent##tooltip##client
|
||||
#: translation##konnect##consent##tooltip##client
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##error##http##networkError
|
||||
#: translation##konnect##error##http##networkError
|
||||
msgid "Network error. Please check your connection and try again."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##http##unexpectedResponseStatus
|
||||
#: konnect##error##http##unexpectedResponseStatus
|
||||
#. From: translation##konnect##error##http##unexpectedResponseState
|
||||
#: translation##konnect##error##http##unexpectedResponseState
|
||||
msgid "Unexpected response state: {{state}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##error##http##unexpectedResponseStatus
|
||||
#: translation##konnect##error##http##unexpectedResponseStatus
|
||||
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##http##unexpectedResponseState
|
||||
#: konnect##error##http##unexpectedResponseState
|
||||
msgid "Unexpected response state: {{state}}"
|
||||
#. From: translation##konnect##error##login##failed
|
||||
#: translation##konnect##error##login##failed
|
||||
msgid "Logon failed. Please verify your credentials and try again."
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##error##login##validate##missingPassword
|
||||
#: translation##konnect##error##login##validate##missingPassword
|
||||
msgid "Enter your password."
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##error##login##validate##missingUsername
|
||||
#: translation##konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##footer##slogan
|
||||
#: translation##konnect##footer##slogan
|
||||
msgid "<strong>OpenCloud</strong> - excellent file sharing"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##confirm##headline
|
||||
#: translation##konnect##goodbye##confirm##headline
|
||||
msgid "Hello {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##confirm##subHeader
|
||||
#: translation##konnect##goodbye##confirm##subHeader
|
||||
msgid "please confirm sign out"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##headline
|
||||
#: translation##konnect##goodbye##headline
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##message##close
|
||||
#: translation##konnect##goodbye##message##close
|
||||
msgid "You can close this window now."
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##message##confirm
|
||||
#: translation##konnect##goodbye##message##confirm
|
||||
msgid "Press the button below, to sign out from your account now."
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##signoutButton##label
|
||||
#. translation##konnect##welcome##signoutButton##label
|
||||
#: translation##konnect##goodbye##signoutButton##label
|
||||
#: translation##konnect##welcome##signoutButton##label
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##goodbye##subHeader
|
||||
#: translation##konnect##goodbye##subHeader
|
||||
msgid "you have been signed out from your account"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##loading##error##headline
|
||||
#: translation##konnect##loading##error##headline
|
||||
msgid "Failed to connect to server"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##login##headline
|
||||
#: translation##konnect##login##headline
|
||||
msgid "Sign in"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##login##nextButton##label
|
||||
#: translation##konnect##login##nextButton##label
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##login##passwordField##label
|
||||
#: translation##konnect##login##passwordField##label
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##login##retryButton##label
|
||||
#: translation##konnect##login##retryButton##label
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##login##usernameField##label
|
||||
#: translation##konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##scopeDescription##aliasBasic
|
||||
#: translation##konnect##scopeDescription##aliasBasic
|
||||
msgid "Access your basic account information"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##scopeDescription##offlineAccess
|
||||
#: translation##konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##scopeDescription##scope
|
||||
#: translation##konnect##scopeDescription##scope
|
||||
msgid "Scope: {{scope}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##welcome##headline
|
||||
#: translation##konnect##welcome##headline
|
||||
msgid "Welcome {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: translation##konnect##welcome##message
|
||||
#: translation##konnect##welcome##message
|
||||
msgid "You are signed in - awesome!"
|
||||
msgstr ""
|
||||
|
||||
@@ -55,11 +55,6 @@ msgstr ""
|
||||
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##email
|
||||
#: konnect##login##usernameField##placeholder##email
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##error##login##validate##missingUsername
|
||||
#: konnect##error##login##validate##missingUsername
|
||||
msgid "Enter a valid value."
|
||||
@@ -90,11 +85,6 @@ msgstr ""
|
||||
msgid "Hi {{displayName}}"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##identity
|
||||
#: konnect##login##usernameField##placeholder##identity
|
||||
msgid "Identity"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##scopeDescription##offlineAccess
|
||||
#: konnect##scopeDescription##offlineAccess
|
||||
msgid "Keep the allowed access persistently and forever"
|
||||
@@ -162,8 +152,8 @@ msgstr ""
|
||||
msgid "Use another account"
|
||||
msgstr ""
|
||||
|
||||
#. From: konnect##login##usernameField##placeholder##username
|
||||
#: konnect##login##usernameField##placeholder##username
|
||||
#. From: konnect##login##usernameField##label
|
||||
#: konnect##login##usernameField##label
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -61,9 +61,10 @@
|
||||
"css-minimizer-webpack-plugin": "^8.0.0",
|
||||
"dotenv": "17.4.2",
|
||||
"dotenv-expand": "^13.0.0",
|
||||
"gettext-parser": "^9.0.2",
|
||||
"html-webpack-plugin": "^5.6.7",
|
||||
"i18next-cli": "^1.65.0",
|
||||
"i18next-conv": "^17.0.0",
|
||||
"i18next-parser": "^9.4.0",
|
||||
"license-checker-rseidelsohn": "5.0.1",
|
||||
"mini-css-extract-plugin": "2.9.2",
|
||||
"pnp-webpack-plugin": "1.7.0",
|
||||
|
||||
1884
services/idp/pnpm-lock.yaml
generated
1884
services/idp/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,8 @@ overrides:
|
||||
"serialize-javascript@<7.0.3": ">=7.0.3"
|
||||
shell-quote: ">=1.8.4"
|
||||
"@babel/plugin-transform-modules-systemjs": ">=7.29.4"
|
||||
"@xmldom/xmldom": ">=0.8.13"
|
||||
"@xmldom/xmldom": "0.8.11"
|
||||
|
||||
allowBuilds:
|
||||
'@swc/core': false
|
||||
esbuild: true
|
||||
|
||||
@@ -30,26 +30,6 @@
|
||||
"offlineAccess": "Dauerhaften Zugriff (läuft nicht ab)",
|
||||
"scope": "Geltungsbereich: {{scope}}"
|
||||
},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"label": "Benutzername",
|
||||
"placeholder": {
|
||||
"email": "E-Mail",
|
||||
"identity": "Identität",
|
||||
"username": "Benutzername"
|
||||
}
|
||||
},
|
||||
"nextButton": {
|
||||
"label": "Weiter"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Passwort"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Wiederholen"
|
||||
},
|
||||
"headline": "Anmelden"
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {
|
||||
@@ -84,6 +64,21 @@
|
||||
},
|
||||
"subHeader": "sie sind jetzt abgemeldet"
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {
|
||||
"label": "Weiter"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Passwort"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Wiederholen"
|
||||
},
|
||||
"headline": "Anmelden",
|
||||
"usernameField": {
|
||||
"label": "Benutzername"
|
||||
}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {
|
||||
"label": "Abmelden"
|
||||
@@ -92,4 +87,4 @@
|
||||
"message": "Sie sind angemeldet - super!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,14 +11,6 @@
|
||||
}
|
||||
},
|
||||
"scopeDescription": {},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"placeholder": {}
|
||||
},
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {}
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {}
|
||||
@@ -33,6 +25,12 @@
|
||||
"message": {},
|
||||
"signoutButton": {}
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {},
|
||||
"usernameField": {}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {}
|
||||
}
|
||||
|
||||
@@ -30,23 +30,6 @@
|
||||
"offlineAccess": "Conserver les autorisations d'accès à l'avenir",
|
||||
"scope": "Portée : {{scope}}"
|
||||
},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"placeholder": {
|
||||
"username": "Utilisateur"
|
||||
}
|
||||
},
|
||||
"nextButton": {
|
||||
"label": "Suivant"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Mot de passe"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Réessayer"
|
||||
},
|
||||
"headline": "Identification"
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {
|
||||
@@ -80,6 +63,21 @@
|
||||
},
|
||||
"subHeader": "vous avez été déconnecté"
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {
|
||||
"label": "Suivant"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Mot de passe"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Réessayer"
|
||||
},
|
||||
"headline": "Identification",
|
||||
"usernameField": {
|
||||
"label": "Utilisateur"
|
||||
}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {
|
||||
"label": "Quitter"
|
||||
|
||||
@@ -11,14 +11,6 @@
|
||||
}
|
||||
},
|
||||
"scopeDescription": {},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"placeholder": {}
|
||||
},
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {}
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {}
|
||||
@@ -33,6 +25,12 @@
|
||||
"message": {},
|
||||
"signoutButton": {}
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {},
|
||||
"usernameField": {}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {}
|
||||
}
|
||||
|
||||
@@ -30,23 +30,6 @@
|
||||
"offlineAccess": "De toestemming voor altijd onthouden",
|
||||
"scope": "Scope: {{scope}}"
|
||||
},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"placeholder": {
|
||||
"username": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"nextButton": {
|
||||
"label": "Volgende"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Wachtwoord"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Opnieuw"
|
||||
},
|
||||
"headline": "Aanmelden"
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {
|
||||
@@ -80,6 +63,21 @@
|
||||
},
|
||||
"subHeader": "je bent afgemeld van je account"
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {
|
||||
"label": "Volgende"
|
||||
},
|
||||
"passwordField": {
|
||||
"label": "Wachtwoord"
|
||||
},
|
||||
"retryButton": {
|
||||
"label": "Opnieuw"
|
||||
},
|
||||
"headline": "Aanmelden",
|
||||
"usernameField": {
|
||||
"label": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {
|
||||
"label": "Afmelden"
|
||||
|
||||
@@ -11,14 +11,6 @@
|
||||
}
|
||||
},
|
||||
"scopeDescription": {},
|
||||
"login": {
|
||||
"usernameField": {
|
||||
"placeholder": {}
|
||||
},
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {}
|
||||
},
|
||||
"error": {
|
||||
"login": {
|
||||
"validate": {}
|
||||
@@ -33,6 +25,12 @@
|
||||
"message": {},
|
||||
"signoutButton": {}
|
||||
},
|
||||
"login": {
|
||||
"nextButton": {},
|
||||
"passwordField": {},
|
||||
"retryButton": {},
|
||||
"usernameField": {}
|
||||
},
|
||||
"welcome": {
|
||||
"signoutButton": {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user