update the forked idp web ui

This commit is contained in:
David Christofas
2022-06-28 16:39:51 +02:00
parent 25ca4150b0
commit aba3b75f15
98 changed files with 7381 additions and 9731 deletions
+13 -1
View File
@@ -30,7 +30,9 @@ ci-go-generate: # CI runs ci-node-generate automatically before this target
ci-node-generate: assets
.PHONY: assets
assets: yarn-build \
assets: i18n \
ui-images \
yarn-build \
assets/identifier/static \
assets/identifier/static/logo.svg \
assets/identifier/static/favicon.ico
@@ -56,6 +58,16 @@ yarn-build: node_modules
#yarn test #TODO: activate
yarn build
.PHONY: i18n
i18n:
@$(MAKE) -C ui/i18n
.PHONY: ui-images
ui-images:
@$(MAKE) -C ui/src/images
.PHONY: node_modules
node_modules:
yarn install --immutable
+88 -131
View File
@@ -3,7 +3,46 @@
"version": "1.0.0",
"private": true,
"homepage": ".",
"dependencies": {
"@fontsource/roboto": "^4.5.1",
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.15",
"@types/node": "^12.0.0",
"@types/react": "^17.0.2",
"@types/react-dom": "^17.0.2",
"@types/react-redux": "^7.1.19",
"@types/redux-logger": "^3.0.9",
"axios": "^0.22.0",
"classnames": "^2.2.6",
"eslint-loader": "^4.0.2",
"i18next": "^21.6.13",
"i18next-browser-languagedetector": "^6.1.3",
"i18next-http-backend": "^1.3.2",
"i18next-resources-to-backend": "^1.0.0",
"query-string": "^7.1.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-i18next": "^11.15.6",
"react-redux": "^7.2.5",
"react-router": "^5.2.1",
"react-router-dom": "5.2.1",
"react-scripts": "4.0.3",
"redux": "^3.7.2",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.2.0",
"render-if": "^0.1.1",
"typescript": "^4.1.2",
"web-vitals": "^1.0.1"
},
"scripts": {
"eject": "react-scripts eject",
"lint": "eslint ./src/**/*.{tsx,ts,jsx,js}",
"licenses": "NODE_PATH=./node_modules node ../scripts/js-license-ranger.js",
"deduplicate": "yarn-deduplicate -s fewer yarn.lock",
"analyze": "source-map-explorer 'build/static/js/*.js'",
"build": "node scripts/build.js && rm -f build/service-worker.js",
"start": "node scripts/start.js",
@@ -17,140 +56,58 @@
"react-app"
]
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"devDependencies": {
"cldr": "^7.1.1",
"eslint-plugin-i18next": "^5.1.2",
"i18next-conv": "^12.1.0",
"i18next-parser": "^5.4.0",
"react-dev-utils": "^11.0.4",
"source-map-explorer": "^1.8.0",
"webpack-manifest-plugin": "^4.1.1",
"yarn-deduplicate": "^1.1.1"
},
"jest": {
"collectCoverageFrom": [
"src/**/*.js"
],
"moduleFileExtensions": [
"web.js",
"js",
"web.ts",
"ts",
"web.tsx",
"tsx",
"json",
"web.jsx",
"jsx",
"node"
],
"moduleNameMapper": {
"^react-native$": "react-native-web",
"^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
},
"modulePaths": [],
"roots": [
"<rootDir>/src"
],
"setupFiles": [
"react-app-polyfill/jsdom"
],
"setupFilesAfterEnv": [],
"testEnvironment": "jest-environment-jsdom-fourteen",
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
"<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
],
"transform": {
"^.+\\.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"node_modules/?!(kpop)"
],
"watchPlugins": [
"jest-watch-typeahead/filename",
"jest-watch-typeahead/testname"
"src/**/*.{js,jsx,ts,tsx}"
]
},
"dependencies": {
"@babel/runtime": "7.17.9",
"@material-ui/core": "^4.8.0",
"@material-ui/icons": "^4.5.0",
"axios": "^0.21.1",
"classnames": "^2.3.1",
"dotenv": "10.0.0",
"dotenv-expand": "5.1.0",
"file-loader": "6.2.0",
"fs-extra": "^9.1.0",
"identity-obj-proxy": "3.0.0",
"kpop": "https://download.kopano.io/community/kapp:/kpop-2.2.0.tgz",
"query-string": "^6.14.1",
"react": "^17.0.1",
"react-app-polyfill": "^2.0.0",
"react-dom": "17.0.1",
"react-intl": "^5.20.6",
"react-loadable": "^5.3.1",
"react-redux": "^7.2.4",
"react-router": "^5.0.0",
"react-router-dom": "^5.2.0",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.2.0",
"render-if": "^0.1.1",
"semver": "7.3.4",
"typeface-roboto": "^1.1.13"
"eslintConfig": {
"plugins": [
"i18next"
],
"extends": [
"react-app",
"react-app/jest",
"plugin:@typescript-eslint/recommended",
"plugin:i18next/recommended"
],
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": [
"error"
],
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": [
"error"
],
"i18next/no-literal-string": [
"off",
{
"markupOnly": true
}
]
}
},
"devDependencies": {
"@babel/runtime": "7.13.10",
"@svgr/webpack": "5.5.0",
"@typescript-eslint/eslint-plugin": "^4.17.0",
"@typescript-eslint/parser": "^4.32.0",
"babel-eslint": "10.1.0",
"babel-jest": "^26.6.3",
"babel-loader": "8.2.2",
"babel-plugin-named-asset-import": "^0.3.8",
"babel-preset-react-app": "^10.0.0",
"camelcase": "^6.2.0",
"case-sensitive-paths-webpack-plugin": "2.4.0",
"css-loader": "5.2.6",
"eslint": "^7.21.0",
"eslint-config-react-app": "^6.0.0",
"eslint-loader": "4.0.2",
"eslint-plugin-flowtype": "5.7.2",
"eslint-plugin-i18n-text": "^1.0.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "^24.2.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",
"eslint-plugin-react-intl-format": "^1.1.6",
"html-webpack-plugin": "4.5.2",
"jest": "26.6.3",
"jest-environment-jsdom-fourteen": "1.0.1",
"jest-resolve": "27.2.2",
"jest-watch-typeahead": "0.6.1",
"license-checker-rseidelsohn": "^3.1.0",
"mini-css-extract-plugin": "1.3.9",
"optimize-css-assets-webpack-plugin": "5.0.4",
"pnp-webpack-plugin": "1.6.4",
"postcss-flexbugs-fixes": "4.1.0",
"postcss-loader": "3.0.0",
"postcss-normalize": "9.0.0",
"postcss-preset-env": "6.7.0",
"postcss-safe-parser": "5.0.2",
"prop-types": "^15.6.2",
"react-dev-utils": "11.0.4",
"react-intl-cra": "^0.3.3",
"react-intl-po": "^2.2.2",
"resolve": "1.20.0",
"resolve-url-loader": "^3.1.2",
"sass-loader": "11.0.1",
"source-map-explorer": "^2.5.2",
"style-loader": "2.0.0",
"terser-webpack-plugin": "4.2.3",
"ts-pnp": "1.2.0",
"url-loader": "4.1.1",
"webpack": "4.46.0",
"webpack-dev-server": "^3.11.2",
"webpack-manifest-plugin": "3.1.0",
"workbox-webpack-plugin": "4.3.1",
"yarn-deduplicate": "^3.1.0"
},
"packageManager": "yarn@3.1.0"
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
+156
View File
@@ -0,0 +1,156 @@
{
"name": "identifier",
"version": "1.0.0",
"private": true,
"homepage": ".",
"scripts": {
"analyze": "source-map-explorer 'build/static/js/*.js'",
"build": "node scripts/build.js && rm -f build/service-worker.js",
"start": "node scripts/start.js",
"test": "node scripts/test.js --env=jsdom",
"licenses:check": "license-checker-rseidelsohn --summary --relativeLicensePath --onlyAllow 'Python-2.0;Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'identifier;kpop;po2json;unicoderegexp'",
"licenses:csv": "license-checker-rseidelsohn --relativeLicensePath --csv --out ../third-party-licenses/node/idp/third-party-licenses.csv",
"licenses:save": "license-checker-rseidelsohn --relativeLicensePath --out /dev/null --files ../third-party-licenses/node/idp/third-party-licenses"
},
"babel": {
"presets": [
"react-app"
]
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"jest": {
"collectCoverageFrom": [
"src/**/*.js"
],
"moduleFileExtensions": [
"web.js",
"js",
"web.ts",
"ts",
"web.tsx",
"tsx",
"json",
"web.jsx",
"jsx",
"node"
],
"moduleNameMapper": {
"^react-native$": "react-native-web",
"^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
},
"modulePaths": [],
"roots": [
"<rootDir>/src"
],
"setupFiles": [
"react-app-polyfill/jsdom"
],
"setupFilesAfterEnv": [],
"testEnvironment": "jest-environment-jsdom-fourteen",
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
"<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
],
"transform": {
"^.+\\.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"node_modules/?!(kpop)"
],
"watchPlugins": [
"jest-watch-typeahead/filename",
"jest-watch-typeahead/testname"
]
},
"dependencies": {
"@babel/runtime": "7.17.9",
"@material-ui/core": "^4.8.0",
"@material-ui/icons": "^4.5.0",
"axios": "^0.21.1",
"classnames": "^2.3.1",
"dotenv": "10.0.0",
"dotenv-expand": "5.1.0",
"file-loader": "6.2.0",
"fs-extra": "^9.1.0",
"identity-obj-proxy": "3.0.0",
"kpop": "https://download.kopano.io/community/kapp:/kpop-2.2.0.tgz",
"query-string": "^6.14.1",
"react": "^17.0.1",
"react-app-polyfill": "^2.0.0",
"react-dom": "17.0.1",
"react-intl": "^5.20.6",
"react-loadable": "^5.3.1",
"react-redux": "^7.2.4",
"react-router": "^5.0.0",
"react-router-dom": "^5.2.0",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.2.0",
"render-if": "^0.1.1",
"semver": "7.3.4",
"typeface-roboto": "^1.1.13"
},
"devDependencies": {
"@babel/runtime": "7.13.10",
"@svgr/webpack": "5.5.0",
"@typescript-eslint/eslint-plugin": "^4.17.0",
"@typescript-eslint/parser": "^4.32.0",
"babel-eslint": "10.1.0",
"babel-jest": "^26.6.3",
"babel-loader": "8.2.2",
"babel-plugin-named-asset-import": "^0.3.8",
"babel-preset-react-app": "^10.0.0",
"camelcase": "^6.2.0",
"case-sensitive-paths-webpack-plugin": "2.4.0",
"css-loader": "5.2.6",
"eslint": "^7.21.0",
"eslint-config-react-app": "^6.0.0",
"eslint-loader": "4.0.2",
"eslint-plugin-flowtype": "5.7.2",
"eslint-plugin-i18n-text": "^1.0.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "^24.2.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",
"eslint-plugin-react-intl-format": "^1.1.6",
"html-webpack-plugin": "4.5.2",
"jest": "26.6.3",
"jest-environment-jsdom-fourteen": "1.0.1",
"jest-resolve": "27.2.2",
"jest-watch-typeahead": "0.6.1",
"license-checker-rseidelsohn": "^3.1.0",
"mini-css-extract-plugin": "1.3.9",
"optimize-css-assets-webpack-plugin": "5.0.4",
"pnp-webpack-plugin": "1.6.4",
"postcss-flexbugs-fixes": "4.1.0",
"postcss-loader": "3.0.0",
"postcss-normalize": "9.0.0",
"postcss-preset-env": "6.7.0",
"postcss-safe-parser": "5.0.2",
"prop-types": "^15.6.2",
"react-dev-utils": "11.0.4",
"react-intl-cra": "^0.3.3",
"react-intl-po": "^2.2.2",
"resolve": "1.20.0",
"resolve-url-loader": "^3.1.2",
"sass-loader": "11.0.1",
"source-map-explorer": "^2.5.2",
"style-loader": "2.0.0",
"terser-webpack-plugin": "4.2.3",
"ts-pnp": "1.2.0",
"url-loader": "4.1.1",
"webpack": "4.46.0",
"webpack-dev-server": "^3.11.2",
"webpack-manifest-plugin": "3.1.0",
"workbox-webpack-plugin": "4.3.1",
"yarn-deduplicate": "^3.1.0"
},
"packageManager": "yarn@3.1.0"
}
+28
View File
@@ -0,0 +1,28 @@
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"plugins": [
]
},
"include": [
"ui/src"
]
}
+2
View File
@@ -0,0 +1,2 @@
*.mo
dev-translation.json
+29 -24
View File
@@ -1,52 +1,57 @@
# Tools
YARN ?= yarn
MSGCAT ?= msgcat
MSGMERGE ?= msgmerge
MSGFMT ?= msgfmt
# Variables
POT = konnect-identifier.pot
POS = $(wildcard *.po)
POT = translation.pot
POS ?= $(wildcard *.po)
# Translations
.PHONY: build
build: json
.PYTHON: json
json:
@for po in $(POS); do \
lang=$$(echo $$po | sed "s/\.po//"); \
$(YARN) i18next-conv -K --skipUntranslated -l $$lang -s ../i18n/$$po -t ../src/locales/$$lang/translation.json; \
done
$(YARN) node ../i18n/build-json.js ../src/locales/locales.json $(POS)
dev-translation.json: FORCE
$(YARN) i18next --fail-on-warnings
.PHONY: extract
extract: pot
.PHONY: i18n/src/messages.json
i18n/src/messages.json:
$(YARN) react-intl-cra './src/**/*.{js,jsx}' -o $@
.PHONY: pot
pot: i18n/src/messages.json
$(YARN) rip json2pot './i18n/src/**/*.json' \
-o ./i18n/$(POT) \
-c 'id'
.PHONY: json
json: i18n/src/messages.json
$(YARN) rip po2json './i18n/*.po' \
-m './i18n/src/**/*.json' \
-o './src/locales/' \
-c 'id' \
--indentation=2
pot: dev-translation.json
@tmpfile1=$(shell mktemp).po; \
tmpfile2=$(shell mktemp).po; \
trap 'rm -f "$$tmpfile1" "$$tmpfile2"' EXIT; \
$(YARN) i18next-conv --project "LibreGraph Connect Identifier" -K -l en -s i18n/dev-translation.json -t $$tmpfile1; \
$(YARN) node i18n/build-pot.js $$tmpfile1 $$tmpfile2; \
$(MSGCAT) --no-wrap -o $(POT) $$tmpfile2
.PHONY: merge
merge: $(POS)
$(POS): FORCE $(POT)
@echo -n "$@ " && \
$(MSGMERGE) -U \
--backup=none \
--no-wrap \
--sort-output \
$@ $(POT)
.PHONY: stats
stats:
$(foreach po, $(POS), $(shell $(MSGFMT) -v --statistics $(po)))
@- true
$(POS): FORCE $(POT)
$(MSGMERGE) -U \
--backup=none \
--no-wrap \
$@ $(POT)
FORCE:
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env node
const cldr = require('cldr');
if (process.argv.length < 4) {
throw new Error('usage error: at least 2 arguments are required!');
}
const output = process.argv[2];
const pos = process.argv.slice(3);
const englishLanguageDisplayNames = cldr.extractLanguageDisplayNames('en');
const englishTerritoryDisplayNames = cldr.extractTerritoryDisplayNames('en');
function localeCapitalize(s, locale) {
return s.charAt(0).toLocaleUpperCase(locale) + s.slice(1)
}
function Locale(locale, overrides={}) {
let ietf = null;
let [code, country] = locale.split('-', 2);
switch(locale) {
// Additional mapping.
case 'zh-CN':
code = 'zh_hans';
ietf = code;
country = null;
break;
case 'zh-TW':
code = 'zh_hant';
ietf = code;
country = null;
break;
default:
}
overrides = ietf ? {
ietf,
...overrides,
} : overrides;
const languageDisplayNames = cldr.extractLanguageDisplayNames(code);
if (languageDisplayNames) {
let name = localeCapitalize(englishLanguageDisplayNames[code], 'en');
let nativeName = localeCapitalize(languageDisplayNames[code], locale);
if (name && nativeName) {
if (country) {
let countryNative = localeCapitalize(cldr.extractTerritoryDisplayNames(code)[country], locale);
nativeName = `${nativeName} (${countryNative})`;
name = `${name} (${localeCapitalize(englishTerritoryDisplayNames[country], 'en')})`;
}
return {
locale,
name,
nativeName,
...cldr.extractLayout(code),
...overrides,
}
}
}
}
var locales = [
Locale('en-GB', { name: 'English', nativeName: 'English' }), // Always add en-GB as English.
]
pos.map((po) => {
const locale = Locale(po.replace(/\.[^/.]+$/, ''));
if (locale) {
locales.push(locale);
}
});
locales.sort((a, b) => {
return a.locale > b.locale ? 1 : -1;
})
require('fs').writeFileSync(output, JSON.stringify(locales, null, 2));
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env node
var gettextParser = require("gettext-parser");
const args = process.argv.slice(2);
var input = require('fs').readFileSync(args[0]);
var po = gettextParser.po.parse(input);
Object.entries(po.translations[""]).map(([context, v]) => {
if (v.msgid) {
if (!v.comments) {
v.comments = {};
}
v.comments.extracted = "From: " + (v.comments.reference || '');
}
});
delete po.headers["PO-Revision-Date"];
delete po.headers["Language"];
delete po.headers["Plural-Forms"];
delete po.headers["mime-version"];
po.headers["MIME-Version"] = "1.0";
var output = gettextParser.po.compile(po);
require('fs').writeFileSync(args[1], output);
+136 -221
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-05-08 18:23+0200\n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-10 09:40+0100\n"
"Last-Translator: Simon Eisenmann <simon@longsleep.org>\n"
"Language-Team: German <http://translate.kopano.io/projects/kopano/konnect/de/>\n"
"Language: de\n"
@@ -10,300 +10,215 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Generator: Poedit 2.3\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr "<0><0><0></0></0></0> möchte"
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr "Zugriff auf Ihre grundlegenden Benutzerinformationen"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
msgstr "Einverstanden"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "{clientDisplayName} den Zugriff gestatten?"
#. From: konnect##consent##question
#: konnect##consent##question
msgid "Allow <1><0></0></1> to do this?"
msgstr "<1><0></0></1> den Zugriff gestatten?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
#. From: konnect##consent##consequence
#: konnect##consent##consequence
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Wenn Sie Einverstanden klicken, erhält die App Zugriff auf Ihre Informationen."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
#. From: konnect##consent##cancelButton##label
#: konnect##consent##cancelButton##label
msgid "Cancel"
msgstr "Abbrechen"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
#. From: konnect##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr "Konto auswählen"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "Wenn Sie \"Einverstanden\" klicken werden Sie zu {redirectURI} weitergeleitet"
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
msgstr "Wenn Sie \"Einverstanden\" klicken werden Sie zu {{redirectURI}} weitergeleitet"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Geben Sie ein Passwort ein"
#. From: konnect##login##usernameField##placeholder##email
#: konnect##login##usernameField##placeholder##email
msgid "Email"
msgstr "E-Mail"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Geben Sie einen Benutzername ein"
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr "Geben Sie einen gültigen Wert ein."
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr "Geben Sie ein Passwort ein."
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr "Verbindung zum Server fehlgeschlagen"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr "Bis bald"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Hallo {displayName}"
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr "Hallo {{displayName}}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Hi {displayName}"
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
msgstr "Hallo {{displayName}}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
#. 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"
msgstr "Dauerhaften Zugriff (läuft nicht ab)"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Eingabe und versuchen Sie es noch einmal."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr "Weiter"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
msgstr "Passwort"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Klicken Sie auf die Schaltfläche unten um sich aus Ihrem Kopano Konto abzumelden."
#. From: konnect##goodbye##message##confirm
#: konnect##goodbye##message##confirm
msgid "Press the button below, to sign out from your account now."
msgstr "Klicken Sie auf die Schaltfläche unten um sich aus Ihrem Konto abzumelden."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
#. From: konnect##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr "Wiederholen"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Geltungsbereich: {scope}"
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr "Geltungsbereich: {{scope}}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr "Anmelden"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr "Abmelden"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Abmelden"
#. From: konnect##error##http##unexpectedResponseStatus
#: konnect##error##http##unexpectedResponseStatus
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
msgstr "Unerwartete HTTP-Antwort: {{status}}. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal."
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Unerwartete HTTP-Antwort: {status}. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal."
#. From: konnect##error##http##unexpectedResponseState
#: konnect##error##http##unexpectedResponseState
msgid "Unexpected response state: {{state}}"
msgstr "Unerwarteter Antwort-Status: {{state}}"
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Unerwarteter Antwort-Status: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr "Anderes Konto"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr "Benutzername"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Willkommen {displayName}"
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr "Willkommen {{displayName}}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr "Sie sind angemeldet - super!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr "Sie können dieses Fenster jetzt schließen."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr "Bitte bestätigen Sie, dass Sie sich abmelden möchten"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "um sich bei Kopano anzumelden"
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr "das angemeldet werden soll"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "mit Ihrem Kopano Konto"
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr "sie sind jetzt abgemeldet"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "sie sind jetzt von Ihrem Kopano Konto abgemeldet"
#~ msgctxt "konnect.consent.question"
#~ msgid "Allow {clientDisplayName} to do this?"
#~ msgstr "{clientDisplayName} den Zugriff gestatten?"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} möchte"
#~ msgctxt "konnect.error.login.validate.missingUsername"
#~ msgid "Enter an username"
#~ msgstr "Geben Sie einen Benutzername ein"
#~ msgctxt "konnect.welcome.signoutButton.label"
#~ msgid "Sign out"
#~ msgstr "Abmelden"
#~ msgctxt "konnect.chooseaccount.subHeader"
#~ msgid "to sign in to Kopano"
#~ msgstr "um sich bei Kopano anzumelden"
#~ msgctxt "konnect.login.subHeader"
#~ msgid "with your Kopano account"
#~ msgstr "mit Ihrem Kopano Konto"
#~ msgctxt "konnect.consent.message"
#~ msgid "{clientDisplayName} wants to"
#~ msgstr "{clientDisplayName} möchte"
+101 -211
View File
@@ -1,309 +1,199 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2018-10-30T16:08:29.860Z\n"
"Project-Id-Version: LibreGraph Connect Identifier\n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-09T10:29:32.094Z\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: react-intl-po\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr ""
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
#. From: konnect##consent##question
#: konnect##consent##question
msgid "Allow <1><0></0></1> to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
#. From: konnect##consent##consequence
#: konnect##consent##consequence
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
#. From: konnect##consent##cancelButton##label
#: konnect##consent##cancelButton##label
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
#. From: konnect##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
#. From: konnect##login##usernameField##placeholder##email
#: konnect##login##usernameField##placeholder##email
msgid "Email"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr ""
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
#. 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"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
#. From: konnect##goodbye##message##confirm
#: konnect##goodbye##message##confirm
msgid "Press the button below, to sign out from your account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
#. From: konnect##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
#. From: konnect##error##http##unexpectedResponseStatus
#: konnect##error##http##unexpectedResponseStatus
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
#. From: konnect##error##http##unexpectedResponseState
#: konnect##error##http##unexpectedResponseState
msgid "Unexpected response state: {{state}}"
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr ""
+140 -225
View File
@@ -1,309 +1,224 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-08-26 15:43+0000\n"
"Last-Translator: Dominique <dperessoni@alternatiq.com>\n"
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-09 18:42+0100\n"
"Last-Translator: Simon Eisenmann <simon@longsleep.org>\n"
"Language-Team: French <http://translate.kopano.io/projects/kopano/konnect/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2.4\n"
"X-Generator: Poedit 2.3\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr "<0><0><0></0></0></0> souhaite"
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr "Consulter les informations de base de votre compte"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
msgstr "Autoriser"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "Autoriser {clientDisplayName} à faire cela ?"
#. From: konnect##consent##question
#: konnect##consent##question
msgid "Allow <1><0></0></1> to do this?"
msgstr "Autoriser <1><0></0></1> à faire cela?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
#. From: konnect##consent##consequence
#: konnect##consent##consequence
msgid "By clicking Allow, you allow this app to use your information."
msgstr "En cliquant, vous autoriser l'app à accéder à vos informations."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
#. From: konnect##consent##cancelButton##label
#: konnect##consent##cancelButton##label
msgid "Cancel"
msgstr "Annuler"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
#. From: konnect##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr "Choisir un compte"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "En cliquant \"Autoriser\" vous serez redirigé vers : {redirectURI}"
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
msgstr "En cliquant \"Autoriser\" vous serez redirigé vers: {{redirectURI}}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Saisir un mot de passe"
#. From: konnect##login##usernameField##placeholder##email
#: konnect##login##usernameField##placeholder##email
msgid "Email"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Saisir un identifiant"
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr "Saisir un mot de passe."
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr "La connexion au serveur a échoué"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr "Au revoir"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Bonjour {displayName}"
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr "Bonjour {{displayName}}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Bonjour {displayName}"
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
msgstr "Bonjour {{displayName}}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
#. 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"
msgstr "Conserver les autorisations d'accès à l'avenir"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Echec de connexion. Vérifier vos identifiants et essayer à nouveau."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr "Erreur réseau. Vérifier votre connexion, et réessayer."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr "Suivant"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
msgstr "Mot de passe"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Cliquer le bouton ci-dessous, pour quitter Kopano."
#. From: konnect##goodbye##message##confirm
#: konnect##goodbye##message##confirm
msgid "Press the button below, to sign out from your account now."
msgstr "Cliquer le bouton ci-dessous, pour quitter."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
#. From: konnect##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr "Réessayer"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Portée : {scope}"
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr "Portée : {{scope}}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr "Identification"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr "Quitter"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Quitter"
#. From: konnect##error##http##unexpectedResponseStatus
#: konnect##error##http##unexpectedResponseStatus
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
msgstr "Erreur HTTP inattendue : {{status}}. Vérifier votre connexion et réessayer."
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Erreur HTTP inattendue : {status}. Vérifier votre connexion et réessayer."
#. From: konnect##error##http##unexpectedResponseState
#: konnect##error##http##unexpectedResponseState
msgid "Unexpected response state: {{state}}"
msgstr "Erreur d'état inattendue : {{state}}"
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Erreur d'état inattendue : {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr "Utiliser un autre compte"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr "Utilisateur"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Bienvenue {displayName}"
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr "Bienvenue {{displayName}}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr "Magnifique - Vous êtes connecté !"
msgstr "Magnifique - Vous êtes connecté!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr "Vous pouvez fermer cette fenêtre à présent."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr "Confirmer votre déconnexion"
msgstr "confirmer votre déconnexion"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "pour vous authentifier dans Kopano"
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr "identification"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "avec vos identifiants Kopano"
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr "vous avez été déconnecté"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "vous avez été déconnecté de Kopano"
#~ msgctxt "konnect.consent.question"
#~ msgid "Allow {clientDisplayName} to do this?"
#~ msgstr "Autoriser {clientDisplayName} à faire cela ?"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} souhaite"
#~ msgctxt "konnect.error.login.validate.missingUsername"
#~ msgid "Enter an username"
#~ msgstr "Saisir un identifiant"
#~ msgctxt "konnect.welcome.signoutButton.label"
#~ msgid "Sign out"
#~ msgstr "Quitter"
#~ msgctxt "konnect.chooseaccount.subHeader"
#~ msgid "to sign in to Kopano"
#~ msgstr "pour vous authentifier dans Kopano"
#~ msgctxt "konnect.login.subHeader"
#~ msgid "with your Kopano account"
#~ msgstr "avec vos identifiants Kopano"
#~ msgctxt "konnect.consent.message"
#~ msgid "{clientDisplayName} wants to"
#~ msgstr "{clientDisplayName} souhaite"
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-09-04 09:55+0000\n"
"Last-Translator: Mayank <m.dabhi@kopano.com>\n"
"Language-Team: Hindi <http://translate.kopano.io/projects/kopano/konnect/hi/>\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2.4\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr "अपनी मूल खाता जानकारी देखे"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr "अनुमति दीजिये"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "क्या {clientDisplayName} को ये करने की अनुमति देना चाहते है?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr "अनुमति पर क्लिक करके, आप इस एप्लिकेशन को आपकी जानकारी का उपयोग करने की अनुमति देते हैं."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr "रद्द करें"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr "खाता चुनें"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "\"अनुमति\" पर क्लिक करने से आपको {redirecturI} पे पुनर्निर्देशित किया जायेगा"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "पासवर्ड डालिए"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "उपयोगकर्ता नाम डालिये"
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr "सर्वर से कनेक्ट करने में विफल"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr "अलविदा"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "नमस्ते {displayName}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "नमस्ते {displayName}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr "अनुमत पहुंच को लगातार और हमेशा बनाए रखें"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr "लोगऑन नाकाम रहा. कृपया अपने क्रेडेंशियल्स जांचे और पुनः प्रयास करें."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr "नेटवर्क त्रुटि। कृपया अपने संपर्क की जांच करे और फिर से प्रयास करें."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr "अगला"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr "पासवर्ड"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "अपने Kopano खाते से साइन आउट करने के लिए नीचे दिए गए बटन को दबाएं."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr "पुन: प्रयास करें"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "क्षेत्र: {scope}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr "साइन इन"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr "साइन आउट"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "साइन आउट"
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "अनपेक्षित HTTP प्रतिक्रिया: {status}. कृपया अपने संपर्क की जांच करे और फिर से प्रयास करें."
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "अनपेक्षित प्रतिक्रिया अवस्था: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr "दूसरे खाते का उपयोग करें"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr "उपयोगकर्ता नाम"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "स्वागत हे {displayName}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr "आप साइंड इन हैं - अद्भुत!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr "अब आप इस विंडो को बंद कर सकते हैं."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr "कृपया साइन आउट की पुष्टि करें"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "Kopano में साइन इन करने के लिए"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "अपने Kopano खाते के साथ"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "आपको अपने Kopano खाते से साइन आउट कर दिया गया है"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} चाहते है की"
-310
View File
@@ -1,310 +0,0 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"X-Generator: react-intl-po\n"
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2019-08-30 11:41+0200\n"
"Last-Translator: root <translations@kopano.io>\n"
"Language-Team: Croatian\n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2018-10-30T16:08:29.860Z\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: react-intl-po\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-09-02 15:40+0000\n"
"Last-Translator: Tryggvi Björgvinsson <ME@TRICKVI.IS>\n"
"Language-Team: Icelandic <http://translate.kopano.io/projects/kopano/konnect/is/>\n"
"Language: is\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2.4\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr "Komast í grunnupplýsingar um þig"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr "Leyfa"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "Leyfa {clientDisplayName} að gera þetta?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Með því að smella á \"Leyfa\", leyfir þú þessu forriti að nota upplýsingarnar um þig."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr "Hætta við"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr "Veldu aðgang"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "Þegar þú smellir á \"Leyfa\" áframsendist þú á: {redirectURI}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Sláðu inn lykilorð"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Sláðu inn notandanafn"
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr "Mistókst að tengjast netþjóni"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr "Bless"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Halló {displayName}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Hæ {displayName}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr "Viðhalda heimildunum alltaf og að eilífu (mundu mig)"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Innskráning mistókst. Vinsamlegast staðfestu notandaupplýsingarnar og reyndu aftur."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr "Netvilla. Vinsamlegast athugaðu tenginguna þína og reyndu aftur."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr "Næsta"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr "Lykilorð"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Smelltu á takkann fyrir neðan til að skrá þig út af Kopano aðganginum núna."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr "Reyna aftur"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Gildissvið: {scope}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr "Innskrá"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr "Útskrá"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Útskrá"
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Ófyrirsjáanlegt HTTP svar: {status}. Vinsamlegast athugaðu tenginguna þína og reyndu aftur."
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Ófyrirsjáanleg svarstaða: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr "Nota annan aðgang"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr "Notandanafn"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Halló {displayName}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr "Innskráningin tókst - frábært!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr "Þú getur lokað þessum glugga núna."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr "vinsamlegast staðfestu útskráningu"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "til að skrá þig inn í Kopano"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "með Kopano-aðganginum þínum"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "útskráning Kopano-aðgangsins þíns tókst"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} vill"
+104 -213
View File
@@ -1,309 +1,200 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2018-10-30T16:08:29.860Z\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Project-Id-Version: LibreGraph Connect Identifier\n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-09 11:22+0100\n"
"Last-Translator: Simon Eisenmann <simon@longsleep.org>\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: react-intl-po\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr ""
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
#. From: konnect##consent##question
#: konnect##consent##question
msgid "Allow <1><0></0></1> to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
#. From: konnect##consent##consequence
#: konnect##consent##consequence
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
#. From: konnect##consent##cancelButton##label
#: konnect##consent##cancelButton##label
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
#. From: konnect##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
#. From: konnect##login##usernameField##placeholder##email
#: konnect##login##usernameField##placeholder##email
msgid "Email"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr ""
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
#. 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"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
#. From: konnect##goodbye##message##confirm
#: konnect##goodbye##message##confirm
msgid "Press the button below, to sign out from your account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
#. From: konnect##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
#. From: konnect##error##http##unexpectedResponseStatus
#: konnect##error##http##unexpectedResponseStatus
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
#. From: konnect##error##http##unexpectedResponseState
#: konnect##error##http##unexpectedResponseState
msgid "Unexpected response state: {{state}}"
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr ""
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2018-10-30T16:08:29.860Z\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: react-intl-po\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-304
View File
@@ -1,304 +0,0 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"X-Generator: react-intl-po\n"
#: ./i18n/src/messages.json
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#: ./i18n/src/messages.json
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#: ./i18n/src/messages.json
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-08-26 16:21+0000\n"
"Last-Translator: Klaus <klaus@linuxavdelingen.no>\n"
"Language-Team: Norwegian Bokmål <http://translate.kopano.io/projects/kopano/konnect/nb/>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2.4\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr "Tilgang til informasjon om basiskonto"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr "Tillat"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "Tillatt {clientDisplayName} å gjøre dette?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Ved å klikke på Aksepter, så tillater du at appen bruker din informasjon."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr "Avbryt"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr "Velg en konto"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "Ved å klikke på \"Tillatt\" så vil du bli ledet til: {redirectURI}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Skriv inn et passord"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Skriv inn et brukernavn"
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr "Klarte ikke å forbinde med server"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr "Farvel"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Hallo {displayName}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Hei {displayName}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr "Behold den tillate tilgangen for alltid"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Logg inn feilet. Vennligst sjekk brukernavn/passord, og forsøk igjen."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr "Nettverksfeil. Sjekk din forbindelse, og forsøk igjen."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr "Neste"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr "Passord"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Trykk på knappen under, for å logge ut av din Kopano konto."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr "Prøv igjen"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Omfang: {scope}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr "Logg inn"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr "Logg ut"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Logg ut"
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Uventet HTTP respons: {status}. Sjekk tilkoblingen din og prøv igjen."
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Uventet svar-status: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr "Bruk en annen konto"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr "Brukernavn"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Velkommen {displayName}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr "Du er logget på!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr "Du kan lukke dette vinduet nå."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr "vennligst bekreft utlogging"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "for å logge inn i Kopano"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "med din Kopano konto"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "du har blitt logget ut fra din Kopano konto"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} ønsker"
+138 -223
View File
@@ -1,309 +1,224 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-05-09 13:19+0000\n"
"Last-Translator: Bob <b.huisman@kopano.com>\n"
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-09 18:45+0100\n"
"Last-Translator: Simon Eisenmann <simon@longsleep.org>\n"
"Language-Team: Dutch <http://translate.kopano.io/projects/kopano/konnect/nl/>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2.4\n"
"X-Generator: Poedit 2.3\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr "<0><0><0></0></0></0> wil"
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr "Basis accountgegevens weergeven"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
msgstr "Toestaan"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "{clientDisplayName} toestaan dit te doen?"
#. From: konnect##consent##question
#: konnect##consent##question
msgid "Allow <1><0></0></1> to do this?"
msgstr "<1><0></0></1> toestaan dit te doen?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
#. From: konnect##consent##consequence
#: konnect##consent##consequence
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Door op Toestaan te klikken, krijgt deze app toestemming je informatie te gebruiken."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
#. From: konnect##consent##cancelButton##label
#: konnect##consent##cancelButton##label
msgid "Cancel"
msgstr "Annuleren"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
#. From: konnect##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr "Account kiezen"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "Door op \"Toestaan\" te klikken word je doorverwezen naar: {redirectURI}"
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
msgid "Clicking \"Allow\" will redirect you to: {{redirectURI}}"
msgstr "Door op \"Toestaan\" te klikken word je doorverwezen naar: {{redirectURI}}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Voer een wachtwoord in"
#. From: konnect##login##usernameField##placeholder##email
#: konnect##login##usernameField##placeholder##email
msgid "Email"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Voer een gebruikersnaam in"
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr "Voer een wachtwoord in."
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr "Kon niet met server verbinden"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr "Tot ziens"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Hallo {displayName}"
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr "Hallo {{displayName}}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Hoi {displayName}"
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
msgstr "Hoi {{displayName}}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
#. 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"
msgstr "De toestemming voor altijd onthouden"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Inloggen mislukt. Controleer logingegevens en probeer opnieuw."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr "Netwerk probleem. Controleer je verbinding en probeer opnieuw."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr "Volgende"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
msgstr "Wachtwoord"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Klik op onderstaande knop om af te melden van je Kopano account."
#. From: konnect##goodbye##message##confirm
#: konnect##goodbye##message##confirm
msgid "Press the button below, to sign out from your account now."
msgstr "Klik op onderstaande knop om af te melden van je account."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
#. From: konnect##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr "Opnieuw"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Scope: {scope}"
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr "Scope: {{scope}}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr "Aanmelden"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr "Afmelden"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Afmelden"
#. From: konnect##error##http##unexpectedResponseStatus
#: konnect##error##http##unexpectedResponseStatus
msgid "Unexpected HTTP response: {{status}}. Please check your connection and try again."
msgstr "Onverwachte HTTP respons: {{status}}. Controleer je verbinding en probeer opnieuw."
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Onverwachte HTTP respons: {status}. Controleer je verbinding en probeer opnieuw."
#. From: konnect##error##http##unexpectedResponseState
#: konnect##error##http##unexpectedResponseState
msgid "Unexpected response state: {{state}}"
msgstr "Onverwachte respons status: {{state}}"
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Onverwachte respons status: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr "Gebruik een ander account"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr "Gebruikersnaam"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Welkom {displayName}"
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr "Welkom {{displayName}}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr "Je bent aangemeld - fantastisch!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr "Dit venster kan nu worden gesloten."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr "bevestig afmelden"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "om aan te melden bij Kopano"
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr "aanmelden"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "met je Kopano account"
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr "je bent afgemeld van je account"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "je bent afgemeld van je Kopano account"
#~ msgctxt "konnect.consent.question"
#~ msgid "Allow {clientDisplayName} to do this?"
#~ msgstr "{clientDisplayName} toestaan dit te doen?"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} wil"
#~ msgctxt "konnect.error.login.validate.missingUsername"
#~ msgid "Enter an username"
#~ msgstr "Voer een gebruikersnaam in"
#~ msgctxt "konnect.welcome.signoutButton.label"
#~ msgid "Sign out"
#~ msgstr "Afmelden"
#~ msgctxt "konnect.chooseaccount.subHeader"
#~ msgid "to sign in to Kopano"
#~ msgstr "om aan te melden bij Kopano"
#~ msgctxt "konnect.login.subHeader"
#~ msgid "with your Kopano account"
#~ msgstr "met je Kopano account"
#~ msgctxt "konnect.consent.message"
#~ msgid "{clientDisplayName} wants to"
#~ msgstr "{clientDisplayName} wil"
-308
View File
@@ -1,308 +0,0 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"X-Generator: react-intl-po\n"
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2019-08-30 11:45+0200\n"
"Last-Translator: root <root@podo.kopano.io>\n"
"Language-Team: Language po\n"
"Language: po\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-05-31 09:39+0000\n"
"Last-Translator: Nuno Jerónimo <nuno.jeronimo@valsousa.pt>\n"
"Language-Team: Portuguese (Portugal) <http://translate.kopano.io/projects/kopano/konnect/pt_PT/>\n"
"Language: pt_PT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2.4\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr "Aceder à sua informação básica da conta"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr "Permitir"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "Permitir que {clientDisplayName} faça isto?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Ao carregar em Permitir, está a permitir que esta app use os seus dados."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr "Cancelar"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr "Escolher uma conta"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "Ao carregar em \"Permitir\" será redirecionado para: {redirectURI}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Insira uma palavra-passe"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Insira um utilizador"
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr "Falhou a ligar ao servidor"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr "Adeus"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Olá {displayName}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Olá {displayName}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr "Manter o acesso permitido de forma persistente e para sempre"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Falhou início de sessão. Por favor verifique as suas credenciais e tente novamente."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr "Erro de rede. Por favor verifique as ligações e tente novamente."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr "Seguinte"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr "Palavra-passe"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Carregue no botão abaixo para terminar sessão na sua conta Kopano agora."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr "Tentar novamente"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Contexto: {scope}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr "Iniciar sessão"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr "Terminar sessão"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Terminar sessão"
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Resposta HTTP inesperada: {status}. Por favor verifique a sua ligação e tente novamente."
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Resposta de estado inesperada: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr "Use outra conta"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr "Utilizador"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Bem vindo {displayName}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr "Iniciou sessão - fantástico!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr "Pode fechar esta janela agora."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr "por favor confirme o fim de sessão"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "para iniciar sessão no Kopano"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "com a sua conta Kopano"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "a sessão da sua conta Kopano foi terminada"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} quer"
-309
View File
@@ -1,309 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"PO-Revision-Date: 2019-08-27 08:46+0000\n"
"Last-Translator: Sotneo <kerovsot@gmail.com>\n"
"Language-Team: Russian <http://translate.kopano.io/projects/kopano/konnect/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 2.4\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr "?"
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr "Доступ к вашей основной учетной записи"
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr "Разрешить"
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr "Разрешить {clientDisplayName} сделать это?"
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr "Нажимая Разрешить, ты даёте разрешение этому приложению использовать вашу информацию."
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr "Отмена"
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr "Выберите учётную запись"
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr "После нажатия \"Разрешить\" вы будете перенаправлена на: {redirectURI}"
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr "Введите пароль"
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr "Введите имя пользователя"
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr "Не удалось подключиться к серверу"
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr "До свидания"
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr "Здравствуйте, {displayName}"
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr "Привет, {displayName}"
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr "Сохраните разрешение на доступ как постоянное"
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr "Не удалось войти. Пожалуйста, проверьте ваши учетные данные и попробуйте снова."
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr "Сетевая ошибка. Пожалуйста, проверьте ваше соединение и попробуйте снова."
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr "Далее"
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr "Пароль"
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr "Нажмите кнопку ниже, чтобы выйти из вашей учетной записи Kopano."
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr "Повторить"
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr "Охват: {scope}"
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr "Вход"
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr "Выход"
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr "Выход"
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr "Неожиданный ответ HTTP: {status}. Проверьте подключение и повторите попытку."
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr "Неожиданный ответ: {state}"
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr "Другой пользователь"
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr "Имя пользователя"
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr "Добро пожаловать, {displayName}"
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr "Вы вошли - круто!"
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr "Теперь вы можете закрыть окно."
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr "пожалуйста, подтвердите выход"
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr "для входа в Kopano"
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr "с вашей учётной записью Kopano"
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr "вы вышли из вашей учетной записи Kopano"
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr "{clientDisplayName} хочет"
-310
View File
@@ -1,310 +0,0 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-09T14:09:27.715Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"X-Generator: react-intl-po\n"
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2019-08-30 11:46+0200\n"
"Last-Translator: root <root@transdoc.kopano.io>\n"
"Language-Team: Slovenian\n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
#. [konnect.chooseaccount.useOther.persona.label]
#. defaultMessage is:
#. ?
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.persona.label"
msgid "?"
msgstr ""
#. [konnect.scopeDescription.aliasBasic]
#. defaultMessage is:
#. Access your basic account information
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.aliasBasic"
msgid "Access your basic account information"
msgstr ""
#. [konnect.consent.allowButton.label]
#. defaultMessage is:
#. Allow
#: i18n/src/messages.json
msgctxt "konnect.consent.allowButton.label"
msgid "Allow"
msgstr ""
#. [konnect.consent.question]
#. defaultMessage is:
#. Allow {clientDisplayName} to do this?
#: i18n/src/messages.json
msgctxt "konnect.consent.question"
msgid "Allow {clientDisplayName} to do this?"
msgstr ""
#. [konnect.consent.consequence]
#. defaultMessage is:
#. By clicking Allow, you allow this app to use your information.
#: i18n/src/messages.json
msgctxt "konnect.consent.consequence"
msgid "By clicking Allow, you allow this app to use your information."
msgstr ""
#. [konnect.consent.cancelButton.label]
#. defaultMessage is:
#. Cancel
#: i18n/src/messages.json
msgctxt "konnect.consent.cancelButton.label"
msgid "Cancel"
msgstr ""
#. [konnect.chooseaccount.headline]
#. defaultMessage is:
#. Choose an account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.headline"
msgid "Choose an account"
msgstr ""
#. [konnect.consent.tooltip.client]
#. defaultMessage is:
#. Clicking "Allow" will redirect you to: {redirectURI}
#: i18n/src/messages.json
msgctxt "konnect.consent.tooltip.client"
msgid "Clicking \"Allow\" will redirect you to: {redirectURI}"
msgstr ""
#. [konnect.error.login.validate.missingPassword]
#. defaultMessage is:
#. Enter a password
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingPassword"
msgid "Enter a password"
msgstr ""
#. [konnect.error.login.validate.missingUsername]
#. defaultMessage is:
#. Enter an username
#: i18n/src/messages.json
msgctxt "konnect.error.login.validate.missingUsername"
msgid "Enter an username"
msgstr ""
#. [konnect.loading.error.headline]
#. defaultMessage is:
#. Failed to connect to server
#: i18n/src/messages.json
msgctxt "konnect.loading.error.headline"
msgid "Failed to connect to server"
msgstr ""
#. [konnect.goodbye.headline]
#. defaultMessage is:
#. Goodbye
#: i18n/src/messages.json
msgctxt "konnect.goodbye.headline"
msgid "Goodbye"
msgstr ""
#. [konnect.goodbye.confirm.headline]
#. defaultMessage is:
#. Hello {displayName}
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.headline"
msgid "Hello {displayName}"
msgstr ""
#. [konnect.consent.headline]
#. defaultMessage is:
#. Hi {displayName}
#: i18n/src/messages.json
msgctxt "konnect.consent.headline"
msgid "Hi {displayName}"
msgstr ""
#. [konnect.scopeDescription.offlineAccess]
#. defaultMessage is:
#. Keep the allowed access persistently and forever
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.offlineAccess"
msgid "Keep the allowed access persistently and forever"
msgstr ""
#. [konnect.error.login.failed]
#. defaultMessage is:
#. Logon failed. Please verify your credentials and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.login.failed"
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. [konnet.error.http.networkError]
#. defaultMessage is:
#. Network error. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnet.error.http.networkError"
msgid "Network error. Please check your connection and try again."
msgstr ""
#. [konnect.login.nextButton.label]
#. defaultMessage is:
#. Next
#: i18n/src/messages.json
msgctxt "konnect.login.nextButton.label"
msgid "Next"
msgstr ""
#. [konnect.login.passwordField.label]
#. defaultMessage is:
#. Password
#: i18n/src/messages.json
msgctxt "konnect.login.passwordField.label"
msgid "Password"
msgstr ""
#. [konnect.goodbye.message.confirm]
#. defaultMessage is:
#. Press the button below, to sign out from your Kopano account now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.confirm"
msgid "Press the button below, to sign out from your Kopano account now."
msgstr ""
#. [konnect.login.retryButton.label]
#. defaultMessage is:
#. Retry
#: i18n/src/messages.json
msgctxt "konnect.login.retryButton.label"
msgid "Retry"
msgstr ""
#. [konnect.scopeDescription.scope]
#. defaultMessage is:
#. Scope: {scope}
#: i18n/src/messages.json
msgctxt "konnect.scopeDescription.scope"
msgid "Scope: {scope}"
msgstr ""
#. [konnect.login.headline]
#. defaultMessage is:
#. Sign in
#: i18n/src/messages.json
msgctxt "konnect.login.headline"
msgid "Sign in"
msgstr ""
#. [konnect.goodbye.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.welcome.signoutButton.label]
#. defaultMessage is:
#. Sign out
#: i18n/src/messages.json
msgctxt "konnect.welcome.signoutButton.label"
msgid "Sign out"
msgstr ""
#. [konnect.error.http.unexpectedResponseStatus]
#. defaultMessage is:
#. Unexpected HTTP response: {status}. Please check your connection and try again.
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseStatus"
msgid "Unexpected HTTP response: {status}. Please check your connection and try again."
msgstr ""
#. [konnect.error.http.unexpectedResponseState]
#. defaultMessage is:
#. Unexpected response state: {state}
#: i18n/src/messages.json
msgctxt "konnect.error.http.unexpectedResponseState"
msgid "Unexpected response state: {state}"
msgstr ""
#. [konnect.chooseaccount.useOther.label]
#. defaultMessage is:
#. Use another account
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.useOther.label"
msgid "Use another account"
msgstr ""
#. [konnect.login.usernameField.label]
#. defaultMessage is:
#. Username
#: i18n/src/messages.json
msgctxt "konnect.login.usernameField.label"
msgid "Username"
msgstr ""
#. [konnect.welcome.headline]
#. defaultMessage is:
#. Welcome {displayName}
#: i18n/src/messages.json
msgctxt "konnect.welcome.headline"
msgid "Welcome {displayName}"
msgstr ""
#. [konnect.welcome.message]
#. defaultMessage is:
#. You are signed in - awesome!
#: i18n/src/messages.json
msgctxt "konnect.welcome.message"
msgid "You are signed in - awesome!"
msgstr ""
#. [konnect.goodbye.message.close]
#. defaultMessage is:
#. You can close this window now.
#: i18n/src/messages.json
msgctxt "konnect.goodbye.message.close"
msgid "You can close this window now."
msgstr ""
#. [konnect.goodbye.confirm.subHeader]
#. defaultMessage is:
#. please confirm sign out
#: i18n/src/messages.json
msgctxt "konnect.goodbye.confirm.subHeader"
msgid "please confirm sign out"
msgstr ""
#. [konnect.chooseaccount.subHeader]
#. defaultMessage is:
#. to sign in to Kopano
#: i18n/src/messages.json
msgctxt "konnect.chooseaccount.subHeader"
msgid "to sign in to Kopano"
msgstr ""
#. [konnect.login.subHeader]
#. defaultMessage is:
#. with your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.login.subHeader"
msgid "with your Kopano account"
msgstr ""
#. [konnect.goodbye.subHeader]
#. defaultMessage is:
#. you have been signed out from your Kopano account
#: i18n/src/messages.json
msgctxt "konnect.goodbye.subHeader"
msgid "you have been signed out from your Kopano account"
msgstr ""
#. [konnect.consent.message]
#. defaultMessage is:
#. {clientDisplayName} wants to
#: i18n/src/messages.json
msgctxt "konnect.consent.message"
msgid "{clientDisplayName} wants to"
msgstr ""
-187
View File
@@ -1,187 +0,0 @@
[
{
"id": "konnect.loading.error.headline",
"defaultMessage": "Failed to connect to server",
"filepath": "./src/components/Loading.js"
},
{
"id": "konnect.login.retryButton.label",
"defaultMessage": "Retry",
"filepath": "./src/components/Loading.js"
},
{
"id": "konnect.scopeDescription.aliasBasic",
"defaultMessage": "Access your basic account information",
"filepath": "./src/components/ScopesList.js"
},
{
"id": "konnect.scopeDescription.offlineAccess",
"defaultMessage": "Keep the allowed access persistently and forever",
"filepath": "./src/components/ScopesList.js"
},
{
"id": "konnect.scopeDescription.scope",
"defaultMessage": "Scope: {scope}",
"filepath": "./src/components/ScopesList.js"
},
{
"id": "konnect.goodbye.headline",
"defaultMessage": "Goodbye",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.subHeader",
"defaultMessage": "you have been signed out from your Kopano account",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.message.close",
"defaultMessage": "You can close this window now.",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.confirm.headline",
"defaultMessage": "Hello {displayName}",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.confirm.subHeader",
"defaultMessage": "please confirm sign out",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.message.confirm",
"defaultMessage": "Press the button below, to sign out from your Kopano account now.",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.goodbye.signoutButton.label",
"defaultMessage": "Sign out",
"filepath": "./src/containers/Goodbye/Goodbyescreen.js"
},
{
"id": "konnect.chooseaccount.headline",
"defaultMessage": "Choose an account",
"filepath": "./src/containers/Login/Chooseaccount.js"
},
{
"id": "konnect.chooseaccount.subHeader",
"defaultMessage": "to sign in to Kopano",
"filepath": "./src/containers/Login/Chooseaccount.js"
},
{
"id": "konnect.chooseaccount.useOther.persona.label",
"defaultMessage": "?",
"filepath": "./src/containers/Login/Chooseaccount.js"
},
{
"id": "konnect.chooseaccount.useOther.label",
"defaultMessage": "Use another account",
"filepath": "./src/containers/Login/Chooseaccount.js"
},
{
"id": "konnect.consent.headline",
"defaultMessage": "Hi {displayName}",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.message",
"defaultMessage": "{clientDisplayName} wants to",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.tooltip.client",
"defaultMessage": "Clicking \"Allow\" will redirect you to: {redirectURI}",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.question",
"defaultMessage": "Allow {clientDisplayName} to do this?",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.consequence",
"defaultMessage": "By clicking Allow, you allow this app to use your information.",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.cancelButton.label",
"defaultMessage": "Cancel",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.consent.allowButton.label",
"defaultMessage": "Allow",
"filepath": "./src/containers/Login/Consent.js"
},
{
"id": "konnect.login.headline",
"defaultMessage": "Sign in",
"filepath": "./src/containers/Login/Login.js"
},
{
"id": "konnect.login.subHeader",
"defaultMessage": "with your Kopano account",
"filepath": "./src/containers/Login/Login.js"
},
{
"id": "konnect.login.usernameField.label",
"defaultMessage": "Username",
"filepath": "./src/containers/Login/Login.js"
},
{
"id": "konnect.login.passwordField.label",
"defaultMessage": "Password",
"filepath": "./src/containers/Login/Login.js"
},
{
"id": "konnect.login.nextButton.label",
"defaultMessage": "Next",
"filepath": "./src/containers/Login/Login.js"
},
{
"id": "konnect.welcome.headline",
"defaultMessage": "Welcome {displayName}",
"filepath": "./src/containers/Welcome/Welcomescreen.js"
},
{
"id": "konnect.welcome.message",
"defaultMessage": "You are signed in - awesome!",
"filepath": "./src/containers/Welcome/Welcomescreen.js"
},
{
"id": "konnect.welcome.signoutButton.label",
"defaultMessage": "Sign out",
"filepath": "./src/containers/Welcome/Welcomescreen.js"
},
{
"id": "konnect.error.login.validate.missingUsername",
"defaultMessage": "Enter an username",
"filepath": "./src/errors/index.js"
},
{
"id": "konnect.error.login.validate.missingPassword",
"defaultMessage": "Enter a password",
"filepath": "./src/errors/index.js"
},
{
"id": "konnect.error.login.failed",
"defaultMessage": "Logon failed. Please verify your credentials and try again.",
"filepath": "./src/errors/index.js"
},
{
"id": "konnet.error.http.networkError",
"defaultMessage": "Network error. Please check your connection and try again.",
"filepath": "./src/errors/index.js"
},
{
"id": "konnect.error.http.unexpectedResponseStatus",
"defaultMessage": "Unexpected HTTP response: {status}. Please check your connection and try again.",
"filepath": "./src/errors/index.js"
},
{
"id": "konnect.error.http.unexpectedResponseState",
"defaultMessage": "Unexpected response state: {state}",
"filepath": "./src/errors/index.js"
}
]
+194
View File
@@ -0,0 +1,194 @@
msgid ""
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"
"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
msgid "Choose an account"
msgstr ""
#. From: konnect##chooseaccount##subHeader
#: 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
msgid "Use another account"
msgstr ""
#. From: konnect##consent##headline
#: konnect##consent##headline
msgid "Hi {{displayName}}"
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
msgid "Allow"
msgstr ""
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr ""
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr ""
#. From: konnect##error##login##validate##missingUsername
#: konnect##error##login##validate##missingUsername
msgid "Enter a valid value."
msgstr ""
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr ""
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr ""
#. From: konnect##error##http##unexpectedResponseStatus
#: 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}}"
msgstr ""
+198
View File
@@ -0,0 +1,198 @@
msgid ""
msgstr ""
"Project-Id-Version: LibreGraph Connect Identifier\n"
"POT-Creation-Date: 2022-03-09T19:33:04.641Z\n"
"PO-Revision-Date: 2022-03-09T10:29:32.094Z\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: zh-CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. From: konnect##consent##message
#: konnect##consent##message
msgid "<0><0><0></0></0></0> wants to"
msgstr ""
#. From: konnect##chooseaccount##useOther##persona##label
#: konnect##chooseaccount##useOther##persona##label
msgid "?"
msgstr ""
#. From: konnect##scopeDescription##aliasBasic
#: konnect##scopeDescription##aliasBasic
msgid "Access your basic account information"
msgstr ""
#. From: konnect##consent##allowButton##label
#: konnect##consent##allowButton##label
msgid "Allow"
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##chooseaccount##headline
#: konnect##chooseaccount##headline
msgid "Choose an account"
msgstr ""
#. From: konnect##consent##tooltip##client
#: konnect##consent##tooltip##client
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."
msgstr ""
#. From: konnect##error##login##validate##missingPassword
#: konnect##error##login##validate##missingPassword
msgid "Enter your password."
msgstr ""
#. From: konnect##loading##error##headline
#: konnect##loading##error##headline
msgid "Failed to connect to server"
msgstr ""
#. From: konnect##goodbye##headline
#: konnect##goodbye##headline
msgid "Goodbye"
msgstr ""
#. From: konnect##goodbye##confirm##headline
#: konnect##goodbye##confirm##headline
msgid "Hello {{displayName}}"
msgstr ""
#. From: konnect##consent##headline
#: konnect##consent##headline
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"
msgstr ""
#. From: konnect##error##login##failed
#: konnect##error##login##failed
msgid "Logon failed. Please verify your credentials and try again."
msgstr ""
#. From: konnect##error##http##networkError
#: konnect##error##http##networkError
msgid "Network error. Please check your connection and try again."
msgstr ""
#. From: konnect##login##nextButton##label
#: konnect##login##nextButton##label
msgid "Next"
msgstr ""
#. From: konnect##login##passwordField##label
#: konnect##login##passwordField##label
msgid "Password"
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##login##retryButton##label
#: konnect##login##retryButton##label
msgid "Retry"
msgstr ""
#. From: konnect##scopeDescription##scope
#: konnect##scopeDescription##scope
msgid "Scope: {{scope}}"
msgstr ""
#. From: konnect##login##headline
#: konnect##login##headline
msgid "Sign in"
msgstr ""
#. From: konnect##goodbye##signoutButton##label
#. konnect##welcome##signoutButton##label
#: konnect##goodbye##signoutButton##label
#: konnect##welcome##signoutButton##label
msgid "Sign out"
msgstr ""
#. From: konnect##error##http##unexpectedResponseStatus
#: 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}}"
msgstr ""
#. From: konnect##chooseaccount##useOther##label
#: konnect##chooseaccount##useOther##label
msgid "Use another account"
msgstr ""
#. From: konnect##login##usernameField##placeholder##username
#: konnect##login##usernameField##placeholder##username
msgid "Username"
msgstr ""
#. From: konnect##welcome##headline
#: konnect##welcome##headline
msgid "Welcome {{displayName}}"
msgstr ""
#. From: konnect##welcome##message
#: konnect##welcome##message
msgid "You are signed in - awesome!"
msgstr ""
#. From: konnect##goodbye##message##close
#: konnect##goodbye##message##close
msgid "You can close this window now."
msgstr ""
#. From: konnect##goodbye##confirm##subHeader
#: konnect##goodbye##confirm##subHeader
msgid "please confirm sign out"
msgstr ""
#. From: konnect##chooseaccount##subHeader
#: konnect##chooseaccount##subHeader
msgid "to sign in"
msgstr ""
#. From: konnect##goodbye##subHeader
#: konnect##goodbye##subHeader
msgid "you have been signed out from your account"
msgstr ""
+7 -5
View File
@@ -1,18 +1,20 @@
<!doctype html>
<html lang="en">
<head>
<head data-kopano-build="%REACT_APP_KOPANO_BUILD%">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#1b223d">
<meta name="theme-color" content="#ffffff">
<link rel="shortcut icon" href="%PUBLIC_URL%/static/favicon.ico" type="image/x-icon">
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet">
<meta property="csp-nonce" content="__CSP_NONCE__">
<title>Sign in - ownCloud</title>
<title>Sign in to your account</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<main id="root" class="oc-login-bg" data-path-prefix="__PATH_PREFIX__" passwort-reset-link="__PASSWORD_RESET_LINK__"></main>
<div id="bg">
<div></div>
</div>
<div id="root" data-path-prefix="__PATH_PREFIX__"></div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

-1
View File
@@ -1 +0,0 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="cloud" class="svg-inline--fa fa-cloud fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="#ffffff" d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"></path></svg>

Before

Width:  |  Height:  |  Size: 479 B

+3
View File
@@ -0,0 +1,3 @@
/* Additional global CSS. */
@import url('fancy-background.css');
+29
View File
@@ -0,0 +1,29 @@
import React, { Suspense, lazy } from 'react';
import { MuiThemeProvider } from '@material-ui/core/styles';
import {
CssBaseline,
} from '@material-ui/core';
import './App.css';
import './fancy-background.css';
import Spinner from './components/Spinner';
import * as version from './version';
import theme from './theme';
const LazyMain = lazy(() => import(/* webpackChunkName: "identifier-main" */ './Main'));
console.info(`Kopano Identifier build version: ${version.build}`); // eslint-disable-line no-console
const App = () => {
return (
<MuiThemeProvider theme={theme}>
<CssBaseline/>
<Suspense fallback={<Spinner/>}>
<LazyMain />
</Suspense>
</MuiThemeProvider>
);
}
export default App;
@@ -4,16 +4,28 @@ import { connect } from 'react-redux';
import { BrowserRouter } from 'react-router-dom';
import { withStyles } from '@material-ui/core/styles';
import Routes from './Routes';
class App extends PureComponent {
const styles = () => ({
root: {
position: 'relative',
display: 'flex',
flex: 1
}
});
class Main extends PureComponent {
render() {
const { classes, hello, pathPrefix } = this.props;
return (
<BrowserRouter basename={pathPrefix}>
<Routes hello={hello}/>
</BrowserRouter>
<div className={classes.root}>
<BrowserRouter basename={pathPrefix}>
<Routes hello={hello}/>
</BrowserRouter>
</div>
);
}
@@ -24,7 +36,7 @@ class App extends PureComponent {
}
}
App.propTypes = {
Main.propTypes = {
classes: PropTypes.object.isRequired,
hello: PropTypes.object,
@@ -42,4 +54,4 @@ const mapStateToProps = (state) => {
};
};
export default connect(mapStateToProps)(App);
export default connect(mapStateToProps)(withStyles(styles)(Main));
@@ -4,7 +4,7 @@ import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './store';
import App from './Main';
import App from './App';
it('renders without crashing', () => {
const div = document.createElement('div');
+8
View File
@@ -0,0 +1,8 @@
all: images
.PHONY: images
images:
@$(MAKE) -C images
clean:
@$(MAKE) -C images clean
@@ -1,16 +1,15 @@
import React from 'react';
import React, { lazy } from 'react';
import PropTypes from 'prop-types';
import { Route, Switch } from 'react-router-dom';
import AsyncComponent from 'kpop/es/AsyncComponent';
import PrivateRoute from './components/PrivateRoute';
const AsyncLogin = AsyncComponent(() =>
const AsyncLogin = lazy(() =>
import(/* webpackChunkName: "containers-login" */ './containers/Login'));
const AsyncWelcome = AsyncComponent(() =>
const AsyncWelcome = lazy(() =>
import(/* webpackChunkName: "containers-welcome" */ './containers/Welcome'));
const AsyncGoodbye = AsyncComponent(() =>
const AsyncGoodbye = lazy(() =>
import(/* webpackChunkName: "containers-goodbye" */ './containers/Goodbye'));
const Routes = ({ hello }) => (
-157
View File
@@ -1,157 +0,0 @@
/* additional css on top of kpop */
html {
font-family: 'Open Sans', sans-serif;
}
strong {
font-weight: 600;
}
.oc-login-bg {
background-image: url(./images/background.jpg);
background-size: cover;
background-repeat: no-repeat;
background-position: center;
z-index: 0;
}
#loader {
/* NOTE(longsleep): White here needed because of the background image */
color: white;
text-shadow: #000 0 0 1px;
}
.oc-logo {
position: absolute;
top: -130px;
left: 50%;
height: 80px;
transform: translateX(-50%);
}
.oc-progress {
/* Needs to be important to overwrite material-ui */
background-color: rgba(78, 133, 200, 0.8) !important;
height: 4px;
width: 100px;
}
.oc-progress > div {
/* Needs to be important to overwrite material-ui */
background-color: #4a76ac !important;
}
.oc-input {
background-color: #042047;
border: 1px solid rgba(78, 133, 200, 0.8);
border-radius: 3px;
color: rgba(255, 255, 255, 0.8);
height: 40px;
width: 300px;
padding: 16px;
box-sizing: border-box;
font-size: 1rem;
}
.oc-label {
color: #fff;
display: inline-block;
margin-bottom: 5px;
}
.oc-input.error {
outline: none;
border: 1px solid #fe4600;
}
.MuiTypography-colorError {
color: #fe4600 !important;
}
.oc-input:focus {
outline: none;
border: 1px solid #fff;
}
.oc-input::placeholder {
color: rgba(78, 133, 200, 0.8);
}
.oc-input + .oc-input {
margin-top: 15px;
}
.MuiTouchRipple-root {
display: none !important;
}
.oc-button {
/* Needs to be important to overwrite material-ui */
font-size: 1.0625rem !important;
}
.oc-button-primary {
/* Needs to be important to overwrite material-ui */
background-color: #4a76ac !important;
border: 1px solid transparent !important;
}
.oc-button-primary:hover,
.oc-button-primary:focus {
/* Needs to be important to overwrite material-ui */
background-color: #4a76ac !important;
border: 1px solid white !important;
}
.oc-checkbox-dark svg {
/* Needs to be important to overwrite material-ui */
fill: white !important;
}
.oc-footer-message {
color: white;
padding: 10px;
font-size: 0.8rem;
}
@media only screen and (max-width: 768px) {
.oc-logo {
height: 60px;
top: -90px;
}
}
/* Helpers */
.oc-mt-l {
margin-top: 30px !important;
}
.oc-mb-m {
margin-bottom: 20px !important;
}
.oc-light {
color: #fff !important;
}
.oc-login-form div:not(:last-of-type) {
margin-bottom: 15px;
}
/*
* Special SR classes
* Used to hide an element visually, but keeping it accessible for accessibility tools.
*/
.oc-invisible-sr {
border: 0 !important;
clip: rect(1px, 1px, 1px, 1px) !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
/* Need to make sure we override any existing styles. */
position: absolute !important;
top: 0;
white-space: nowrap;
width: 1px !important;
}
-34
View File
@@ -1,34 +0,0 @@
import React from 'react';
import ReactDOM from 'react-dom';
import Loadable from 'react-loadable';
import { Provider } from 'react-redux';
import { MuiThemeProvider } from '@material-ui/core/styles';
import { defaultTheme as theme } from 'kpop/es/theme';
import { IntlProvider } from 'react-intl';
import Loading from 'kpop/es/Loading';
import { unregister } from 'kpop/es/serviceWorker';
import store from './store';
import translations from './locales';
// NOTE(longsleep): Load async with loader, this enables code splitting via Webpack.
const LoadableApp = Loadable({
loader: () => import(/* webpackChunkName: "identifier-main" */ './Main'),
loading: Loading,
timeout: 20000
});
ReactDOM.render(
<Provider store={store}>
<MuiThemeProvider theme={theme}>
<IntlProvider messages={translations} locale="en" defaultLocale="en">
<LoadableApp />
</IntlProvider>
</MuiThemeProvider>
</Provider>,
document.getElementById('root')
);
unregister();
-63
View File
@@ -1,63 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import LinearProgress from '@material-ui/core/LinearProgress';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import renderIf from 'render-if';
import { retryHello } from '../actions/common';
import { ErrorMessage } from '../errors';
function Loading({ error, dispatch }) {
const retry = (event) => {
event.preventDefault();
dispatch(retryHello());
}
return (
<Grid item align="center">
{renderIf(error === null)(() => (
<LinearProgress className="oc-progress" />
))}
{renderIf(error !== null)(() => (
<div>
<Typography className="oc-light" variant="h5" gutterBottom align="center">
<FormattedMessage id="konnect.loading.error.headline" defaultMessage="Failed to connect to server" />
</Typography>
<Typography align="center" color="error">
<ErrorMessage error={error} />
</Typography>
<Button
autoFocus
color="primary"
variant="contained"
className="oc-button-primary oc-mt-l"
onClick={(event) => retry(event)}
>
<FormattedMessage id="konnect.login.retryButton.label" defaultMessage="Retry" />
</Button>
</div>
))}
</Grid>
);
}
Loading.propTypes = {
error: PropTypes.object,
dispatch: PropTypes.func.isRequired
};
const mapStateToProps = (state) => {
const { error } = state.common;
return {
error
};
};
export default connect(mapStateToProps)(Loading);
@@ -0,0 +1,93 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withTranslation } from 'react-i18next';
import { withStyles } from '@material-ui/core/styles';
import LinearProgress from '@material-ui/core/LinearProgress';
import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import renderIf from 'render-if';
import { retryHello } from '../actions/common';
import { ErrorMessage } from '../errors';
const styles = theme => ({
root: {
flexGrow: 1,
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0
},
progress: {
height: '4px',
width: '100px'
},
button: {
marginTop: theme.spacing(5)
}
});
class Loading extends React.PureComponent {
render() {
const { classes, error, t } = this.props;
return (
<Grid container direction="column" alignItems="center" justifyContent="center" spacing={0} className={classes.root}>
<Grid item align="center">
{renderIf(error === null)(() => (
<LinearProgress className={classes.progress} />
))}
{renderIf(error !== null)(() => (
<div>
<Typography variant="h5" gutterBottom align="center">
{t("konnect.loading.error.headline", "Failed to connect to server")}
</Typography>
<Typography gutterBottom align="center" color="error">
<ErrorMessage error={error}></ErrorMessage>
</Typography>
<Button
autoFocus
color="primary"
variant="outlined"
className={classes.button}
onClick={(event) => this.retry(event)}
>
{t("konnect.login.retryButton.label", "Retry")}
</Button>
</div>
))}
</Grid>
</Grid>
);
}
retry(event) {
event.preventDefault();
this.props.dispatch(retryHello());
}
}
Loading.propTypes = {
classes: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
error: PropTypes.object,
dispatch: PropTypes.func.isRequired,
};
const mapStateToProps = (state) => {
const { error } = state.common;
return {
error
};
};
export default connect(mapStateToProps)(withTranslation()(withStyles(styles)(Loading)));
@@ -0,0 +1,76 @@
import React, { useCallback, useMemo, useEffect } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import MenuItem from '@material-ui/core/MenuItem';
import Select from '@material-ui/core/Select';
import allLocales from '../locales';
function LocaleSelect({ locales: localesProp, ...other } = {}) {
const { i18n, ready } = useTranslation();
const handleChange = useCallback((event) => {
i18n.changeLanguage(event.target.value);
}, [ i18n ])
const locales = useMemo(() => {
if (!localesProp) {
return allLocales;
}
const supported = allLocales.filter(locale => {
return localesProp.includes(locale.locale);
});
return supported;
}, [localesProp]);
useEffect(() => {
if (locales) {
const found = locales.find((locale) => {
return locale.locale === i18n.language;
});
if (found) {
// Have language -> is supported all good.
return;
}
const wanted = i18n.modules.languageDetector.detectors.navigator.lookup();
i18n.modules.languageDetector.services.languageUtils.options.supportedLngs = locales.map(locale => locale.locale);
i18n.modules.languageDetector.services.languageUtils.options.fallbackLng = null;
let best = i18n.modules.languageDetector.services.languageUtils.getBestMatchFromCodes(wanted);
if (!best) {
best = locales[0].locale;
}
// Auto change language to best one found if the current selected one is not enabled.
if (i18n.language !== best) {
i18n.changeLanguage(best);
}
}
}, [i18n, locales]);
if (!ready || !locales || locales.length < 2) {
return null;
}
return <Select
value={i18n.language}
onChange={handleChange}
{...other}
>
{locales.map(language => {
return <MenuItem
key={language.locale}
value={language.locale}>
{language.nativeName}
</MenuItem>;
})}
</Select>;
}
LocaleSelect.propTypes = {
locales: PropTypes.arrayOf(PropTypes.string),
};
export default LocaleSelect;
@@ -15,7 +15,7 @@ const PrivateRoute = ({ component: Target, hello, ...rest }) => (
);
PrivateRoute.propTypes = {
component: PropTypes.func.isRequired,
component: PropTypes.elementType.isRequired,
hello: PropTypes.object
};
@@ -0,0 +1,15 @@
import React from 'react';
import PropTypes from 'prop-types';
import Dialog from '@material-ui/core/Dialog';
import withMobileDialog from '@material-ui/core/withMobileDialog';
const ResponsiveDialog = (props) => {
return <Dialog {...props}/>;
};
ResponsiveDialog.propTypes = {
fullScreen: PropTypes.bool.isRequired
};
export default withMobileDialog()(ResponsiveDialog);
@@ -1,46 +1,52 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { FormattedMessage } from 'react-intl';
import { withStyles } from '@material-ui/core/styles';
import Grid from '@material-ui/core/Grid';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import ResponsiveDialog from './ResponsiveDialog';
import Logo from '../images/app-icon.svg';
import Loading from './Loading';
import LocaleSelect from './LocaleSelect';
const styles = theme => ({
root: {
display: 'flex',
flex: 1
flex: 1,
},
content: {
position: 'relative',
width: '100%'
paddingTop: 24,
paddingBottom: 12,
minHeight: 350,
paddingLeft: theme.spacing(2),
paddingRight: theme.spacing(2),
position: 'relative'
},
dialog: {
maxWidth: 440,
},
logo: {
height: 24,
},
actions: {
marginTop: -40,
minHeight: 45,
justifyContent: 'flex-start',
paddingLeft: theme.spacing(3),
paddingRight: theme.spacing(3)
},
wrapper: {
width: '100%',
maxWidth: 300,
display: 'flex',
flex: 1,
alignItems: 'center'
}
});
const footerProductName = name => <strong>{name}</strong>;
const ResponsiveScreen = (props) => {
const {
classes,
withoutLogo,
withoutPadding,
loading,
branding,
children,
className,
DialogProps,
@@ -48,29 +54,28 @@ const ResponsiveScreen = (props) => {
...other
} = props;
const bannerLogoSrc = branding?.bannerLogo ? branding.bannerLogo : Logo;
const logo = withoutLogo ? null :
<img src={process.env.PUBLIC_URL + '/static/logo.svg'} className="oc-logo" alt="ownCloud Logo"/>;
<DialogContent><img src={bannerLogoSrc} className={classes.logo} alt=""/></DialogContent>;
const content = loading ? <Loading/> : (withoutPadding ? children : <DialogContent>{children}</DialogContent>);
return (
<Grid container justify="center" alignItems="center" direction="column" spacing={0}
<Grid container justifyContent="center" alignItems="center" spacing={0}
className={classNames(classes.root, className)} {...other}>
<div className={classes.wrapper}>
<ResponsiveDialog open fullWidth maxWidth="sm" disableEscapeKeyDown hideBackdrop
{...DialogProps}
PaperProps={{elevation: 4, ...PaperProps}}
classes={{
paperWidthSm: classes.dialog,
}}
>
<div className={classes.content}>
{logo}
{content}
</div>
</div>
<footer className="oc-footer-message">
<FormattedMessage
id="konnect.footer.slogan"
defaultMessage="<name>ownCloud</name> - a safe home for all your data"
values={{
name: chunks => footerProductName(chunks)
}}
/>
</footer>
{!loading && <DialogActions className={classes.actions} disableSpacing><LocaleSelect disableUnderline locales={branding?.locales}/></DialogActions>}
</ResponsiveDialog>
</Grid>
);
};
@@ -86,6 +91,7 @@ ResponsiveScreen.propTypes = {
withoutLogo: PropTypes.bool,
withoutPadding: PropTypes.bool,
loading: PropTypes.bool,
branding: PropTypes.object,
children: PropTypes.node.isRequired,
className: PropTypes.string,
PaperProps: PropTypes.object,
@@ -6,7 +6,7 @@ import { withStyles } from '@material-ui/core/styles';
import PropTypes from 'prop-types';
import Checkbox from '@material-ui/core/Checkbox';
import { injectIntl, useIntl, defineMessages, FormattedMessage } from 'react-intl';
import { useTranslation } from 'react-i18next';
const styles = () => ({
row: {
@@ -15,20 +15,10 @@ const styles = () => ({
}
});
const scopeIDTranslations = defineMessages({
'scope_alias_basic': {
id: 'konnect.scopeDescription.aliasBasic',
defaultMessage: 'Access your basic account information'
},
'scope_offline_access': {
id: 'konnect.scopeDescription.offlineAccess',
defaultMessage: 'Keep the allowed access persistently and forever'
}
});
const ScopesList = ({scopes, meta, classes, ...rest}) => {
const { mapping, definitions } = meta;
const intl = useIntl()
const { t } = useTranslation();
const rows = [];
const known = {};
@@ -48,24 +38,23 @@ const ScopesList = ({scopes, meta, classes, ...rest}) => {
id = scope;
}
let definition = definitions[id];
let label ;
let label;
if (definition) {
if (definition.id) {
const translation = scopeIDTranslations[definition.id];
if (translation) {
label = intl.formatMessage(translation);
}
switch (definition.id) {
case 'scope_alias_basic':
label = t("konnect.scopeDescription.aliasBasic", "Access your basic account information");
break;
case 'scope_offline_access':
label = t("konnect.scopeDescription.offlineAccess", "Keep the allowed access persistently and forever");
break;
default:
}
if (!label) {
label = definition.description;
}
}
if (!label) {
label = <FormattedMessage
id="konnect.scopeDescription.scope"
defaultMessage="Scope: {scope}"
values={{scope}}
/>;
label = t("konnect.scopeDescription.scope", "Scope: {{scope}}", { scope });
}
rows.push(
@@ -78,9 +67,8 @@ const ScopesList = ({scopes, meta, classes, ...rest}) => {
checked
disableRipple
disabled
className="oc-checkbox-dark"
/>
<ListItemText primary={label} className="oc-light" />
<ListItemText primary={label} />
</ListItem>
);
}
@@ -99,4 +87,4 @@ ScopesList.propTypes = {
meta: PropTypes.object.isRequired
};
export default withStyles(styles)(injectIntl(ScopesList));
export default withStyles(styles)(ScopesList);
+34
View File
@@ -0,0 +1,34 @@
import React from 'react';
import {
Fade,
CircularProgress,
} from '@material-ui/core';
import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles(() => ({
root: {
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
},
}));
const Spinner = () => {
const classes = useStyles();
return <div className={classes.root}>
<Fade
in
style={{
transitionDelay: '800ms',
}}
unmountOnExit
>
<CircularProgress size={70} thickness={1}/>
</Fade>
</div>;
}
export default Spinner;
@@ -1,30 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import {useIntl} from 'react-intl';
const TextInput = (props) => {
const intl = useIntl();
const label = props.label;
const extraClassName = props.extraClassName;
delete props.label;
delete props.extraClassName;
return (
<div>
<label className="oc-label"
htmlFor={props.id}>{intl.formatMessage(label)}</label>
<input className={`oc-input ${extraClassName ? extraClassName : ''}`} {...props}
placeholder={props.placeholder ? intl.formatMessage(props.placeholder) : null}/>
</div>);
};
TextInput.propTypes = {
placeholder: PropTypes.object,
label: PropTypes.object,
id: PropTypes.string,
extraClassName: props.string,
}
export default TextInput;
@@ -2,8 +2,9 @@ import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withTranslation } from 'react-i18next';
import renderIf from 'render-if';
import { FormattedMessage } from 'react-intl';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
@@ -30,58 +31,46 @@ class Goodbyescreen extends React.PureComponent {
}
render() {
const { classes, hello } = this.props;
const { classes, branding, hello, t } = this.props;
const loading = hello === null;
return (
<ResponsiveScreen loading={loading}>
<ResponsiveScreen loading={loading} branding={branding}>
{renderIf(hello !== null && !hello.state)(() => (
<div>
<Typography variant="h5" component="h3">
<FormattedMessage id="konnect.goodbye.headline" defaultMessage="Goodbye"></FormattedMessage>
{t("konnect.goodbye.headline", "Goodbye")}
</Typography>
<Typography variant="subtitle1" className={classes.subHeader}>
<FormattedMessage id="konnect.goodbye.subHeader"
defaultMessage="you have been signed out from your Kopano account">
</FormattedMessage>
{t("konnect.goodbye.subHeader", "you have been signed out from your account")}
</Typography>
<Typography gutterBottom>
<FormattedMessage id="konnect.goodbye.message.close"
defaultMessage="You can close this window now.">
</FormattedMessage>
{t("konnect.goodbye.message.close", "You can close this window now.")}
</Typography>
</div>
))}
{renderIf(hello !== null && hello.state === true)(() => (
<div>
<Typography variant="h5" component="h3">
<FormattedMessage
id="konnect.goodbye.confirm.headline"
defaultMessage="Hello {displayName}"
values={{displayName: hello.displayName}}>
</FormattedMessage>
{t("konnect.goodbye.confirm.headline", "Hello {{displayName}}", { displayName: hello.displayName })}
</Typography>
<Typography variant="subtitle1" className={classes.subHeader}>
<FormattedMessage id="konnect.goodbye.confirm.subHeader"
defaultMessage="please confirm sign out">
</FormattedMessage>
{t("konnect.goodbye.confirm.subHeader", "please confirm sign out")}
</Typography>
<Typography gutterBottom>
<FormattedMessage id="konnect.goodbye.message.confirm"
defaultMessage="Press the button below, to sign out from your Kopano account now.">
</FormattedMessage>
{t("konnect.goodbye.message.confirm", "Press the button below, to sign out from your account now.")}
</Typography>
<DialogActions>
<div className={classes.wrapper}>
<Button
color="secondary"
variant="outlined"
className={classes.button}
onClick={(event) => this.logoff(event)}
>
<FormattedMessage id="konnect.goodbye.signoutButton.label"
defaultMessage="Sign out"></FormattedMessage>
{t("konnect.goodbye.signoutButton.label", "Sign out")}
</Button>
</div>
</DialogActions>
@@ -107,7 +96,9 @@ class Goodbyescreen extends React.PureComponent {
Goodbyescreen.propTypes = {
classes: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
branding: PropTypes.object,
hello: PropTypes.object,
dispatch: PropTypes.func.isRequired,
@@ -115,11 +106,12 @@ Goodbyescreen.propTypes = {
};
const mapStateToProps = (state) => {
const { hello } = state.common;
const { branding, hello } = state.common;
return {
branding,
hello
};
};
export default connect(mapStateToProps)(withStyles(styles)(Goodbyescreen));
export default connect(mapStateToProps)(withStyles(styles)(withTranslation()(Goodbyescreen)));
@@ -1,144 +0,0 @@
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import { withStyles } from '@material-ui/core/styles';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemText from '@material-ui/core/ListItemText';
import ListItemAvatar from '@material-ui/core/ListItemAvatar';
import Avatar from '@material-ui/core/Avatar';
import Typography from '@material-ui/core/Typography';
import { executeLogonIfFormValid, advanceLogonFlow } from '../../actions/login';
import { ErrorMessage } from '../../errors';
const styles = theme => ({
subHeader: {
marginBottom: theme.spacing(2)
},
message: {
marginTop: theme.spacing(2)
},
accountList: {
marginLeft: theme.spacing(-3),
marginRight: theme.spacing(-3)
},
accountListItem: {
paddingLeft: theme.spacing(3),
paddingRight: theme.spacing(3)
}
});
function Chooseaccount({ loading, errors, classes, hello, history, dispatch }) {
useEffect(() => {
if ((!hello || !hello.state) && history.action !== 'PUSH') {
history.replace(`/identifier${history.location.search}${history.location.hash}`);
}
});
let errorMessage = null;
if (errors.http) {
errorMessage = <Typography color="error" className={classes.message}>
<ErrorMessage error={errors.http}></ErrorMessage>
</Typography>;
}
let username = '';
if (hello && hello.state) {
username = hello.username;
}
const logon = (event) => {
event.preventDefault();
dispatch(executeLogonIfFormValid(hello.username, '', true)).then((response) => {
if (response.success) {
dispatch(advanceLogonFlow(response.success, history));
}
});
}
const logoff = (event) => {
event.preventDefault();
history.push(`/identifier${history.location.search}${history.location.hash}`);
}
return (
<div>
<Typography variant="h5" component="h3" className="oc-light">
<FormattedMessage id="konnect.chooseaccount.headline" defaultMessage="Choose an account"></FormattedMessage>
</Typography>
<Typography variant="subtitle1" className={classes.subHeader + " oc-light"}>
<FormattedMessage id="konnect.chooseaccount.subHeader" defaultMessage="to sign in to Kopano">
</FormattedMessage>
</Typography>
<form action="" onSubmit={(event) => logon(event)}>
<List disablePadding className={classes.accountList}>
<ListItem
button
disableGutters
className={classes.accountListItem}
disabled={!!loading}
onClick={(event) => logon(event)}
><ListItemAvatar><Avatar>{username.slice(0, 1)}</Avatar></ListItemAvatar>
<ListItemText className="oc-light" primary={username} />
</ListItem>
<ListItem
button
disableGutters
className={classes.accountListItem}
disabled={!!loading}
onClick={(event) => logoff(event)}
>
<ListItemAvatar>
<Avatar>
<FormattedMessage id="konnect.chooseaccount.useOther.persona.label" defaultMessage="?">
</FormattedMessage>
</Avatar>
</ListItemAvatar>
<ListItemText
className="oc-light"
primary={
<FormattedMessage
id="konnect.chooseaccount.useOther.label"
defaultMessage="Use another account">
</FormattedMessage>
}
/>
</ListItem>
</List>
{errorMessage}
</form>
</div>
);
}
Chooseaccount.propTypes = {
classes: PropTypes.object.isRequired,
loading: PropTypes.string.isRequired,
errors: PropTypes.object.isRequired,
hello: PropTypes.object,
dispatch: PropTypes.func.isRequired,
history: PropTypes.object.isRequired
};
const mapStateToProps = (state) => {
const { loading, errors } = state.login;
const { hello } = state.common;
return {
loading,
errors,
hello
};
};
export default connect(mapStateToProps)(withStyles(styles)(Chooseaccount));
@@ -0,0 +1,150 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withTranslation } from 'react-i18next';
import { withStyles } from '@material-ui/core/styles';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemText from '@material-ui/core/ListItemText';
import ListItemAvatar from '@material-ui/core/ListItemAvatar';
import Avatar from '@material-ui/core/Avatar';
import Typography from '@material-ui/core/Typography';
import DialogContent from '@material-ui/core/DialogContent';
import { executeLogonIfFormValid, advanceLogonFlow } from '../../actions/login';
import { ErrorMessage } from '../../errors';
const styles = theme => ({
content: {
overflowY: 'visible',
},
subHeader: {
marginBottom: theme.spacing(2)
},
message: {
marginTop: theme.spacing(2)
},
accountList: {
marginLeft: theme.spacing(-5),
marginRight: theme.spacing(-5)
},
accountListItem: {
paddingLeft: theme.spacing(5),
paddingRight: theme.spacing(5)
}
});
class Chooseaccount extends React.PureComponent {
componentDidMount() {
const { hello, history } = this.props;
if ((!hello || !hello.state) && history.action !== 'PUSH') {
history.replace(`/identifier${history.location.search}${history.location.hash}`);
}
}
render() {
const { loading, errors, classes, hello, t } = this.props;
let errorMessage = null;
if (errors.http) {
errorMessage = <Typography color="error" className={classes.message}>
<ErrorMessage error={errors.http}></ErrorMessage>
</Typography>;
}
let username = '';
if (hello && hello.state) {
username = hello.username;
}
return (
<DialogContent className={classes.content}>
<Typography variant="h5" component="h3">
{t("konnect.chooseaccount.headline", "Choose an account")}
</Typography>
<Typography variant="subtitle1" className={classes.subHeader}>
{t("konnect.chooseaccount.subHeader", "to sign in")}
</Typography>
<form action="" onSubmit={(event) => this.logon(event)}>
<List disablePadding className={classes.accountList}>
<ListItem
button
disableGutters
className={classes.accountListItem}
disabled={!!loading}
onClick={(event) => this.logon(event)}
><ListItemAvatar><Avatar>{username.substr(0, 1)}</Avatar></ListItemAvatar>
<ListItemText primary={username} />
</ListItem>
<ListItem
button
disableGutters
className={classes.accountListItem}
disabled={!!loading}
onClick={(event) => this.logoff(event)}
>
<ListItemAvatar>
<Avatar>
{t("konnect.chooseaccount.useOther.persona.label", "?")}
</Avatar>
</ListItemAvatar>
<ListItemText
primary={
t("konnect.chooseaccount.useOther.label", "Use another account")
}
/>
</ListItem>
</List>
{errorMessage}
</form>
</DialogContent>
);
}
logon(event) {
event.preventDefault();
const { hello, dispatch, history } = this.props;
dispatch(executeLogonIfFormValid(hello.username, '', true)).then((response) => {
if (response.success) {
dispatch(advanceLogonFlow(response.success, history));
}
});
}
logoff(event) {
event.preventDefault();
const { history} = this.props;
history.push(`/identifier${history.location.search}${history.location.hash}`);
}
}
Chooseaccount.propTypes = {
classes: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
loading: PropTypes.string.isRequired,
errors: PropTypes.object.isRequired,
hello: PropTypes.object,
dispatch: PropTypes.func.isRequired,
history: PropTypes.object.isRequired
};
const mapStateToProps = (state) => {
const { loading, errors } = state.login;
const { hello } = state.common;
return {
loading,
errors,
hello
};
};
export default connect(mapStateToProps)(withStyles(styles)(withTranslation()(Chooseaccount)));
@@ -2,16 +2,18 @@ import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withTranslation, Trans } from 'react-i18next';
import renderIf from 'render-if';
import { FormattedMessage } from 'react-intl';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import Tooltip from '@material-ui/core/Tooltip';
import BaseTooltip from '@material-ui/core/Tooltip';
import CircularProgress from '@material-ui/core/CircularProgress';
import green from '@material-ui/core/colors/green';
import Typography from '@material-ui/core/Typography';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import { executeConsent, advanceLogonFlow, receiveValidateLogon } from '../../actions/login';
import { ErrorMessage } from '../../errors';
@@ -20,6 +22,10 @@ import ClientDisplayName from '../../components/ClientDisplayName';
import ScopesList from '../../components/ScopesList';
const styles = theme => ({
button: {
margin: theme.spacing(1),
minWidth: 100
},
buttonProgress: {
color: green[500],
position: 'absolute',
@@ -28,6 +34,9 @@ const styles = theme => ({
marginTop: -12,
marginLeft: -12
},
subHeader: {
marginBottom: theme.spacing(2)
},
scopesList: {
marginBottom: theme.spacing(2)
},
@@ -42,6 +51,12 @@ const styles = theme => ({
}
});
const Tooltip = ({children, ...other } = {}) => {
// Ensures that there is only a single child for the tooltip element to
// make it compatible with the Trans component.
return <BaseTooltip {...other}><span>{children}</span></BaseTooltip>;
}
class Consent extends React.PureComponent {
componentDidMount() {
const { dispatch, hello, history, client } = this.props;
@@ -73,51 +88,39 @@ class Consent extends React.PureComponent {
}
render() {
const { classes, loading, hello, errors, client } = this.props;
const { classes, loading, hello, errors, client, t } = this.props;
const scopes = hello.details.scopes || {};
const meta = hello.details.meta || {};
return (
<div>
<Typography variant="h5" component="h3" className="oc-light">
<FormattedMessage
id="konnect.consent.headline"
defaultMessage="Hi {displayName}"
values={{displayName: hello.displayName}}
/>
<DialogContent>
<Typography variant="h5" component="h3">
{t("konnect.consent.headline", "Hi {{displayName}}", { displayName: hello.displayName })}
</Typography>
<Typography variant="subtitle1" className="oc-light oc-mb-m">
<Typography variant="subtitle1" className={classes.subHeader}>
{hello.username}
</Typography>
<Typography variant="subtitle1" gutterBottom className="oc-light">
<FormattedMessage
id="konnect.consent.message"
defaultMessage="{clientDisplayName} wants to"
values={{clientDisplayName:
<Tooltip
placement="bottom"
title={<FormattedMessage
id="konnect.consent.tooltip.client"
defaultMessage='Clicking "Allow" will redirect you to: {redirectURI}'
values={{
redirectURI: client.redirect_uri
}}
></FormattedMessage>}
>
<em><ClientDisplayName client={client}/></em>
</Tooltip>
}}
></FormattedMessage>
<Typography variant="subtitle1" gutterBottom>
<Trans t={t} i18nKey="konnect.consent.message">
<Tooltip
placement="bottom"
title={t("konnect.consent.tooltip.client", 'Clicking "Allow" will redirect you to: {{redirectURI}}', { redirectURI: client.redirect_uri })}
>
<em><ClientDisplayName client={client}/></em>
</Tooltip> wants to
</Trans>
</Typography>
<ScopesList dense disablePadding className={classes.scopesList} scopes={scopes} meta={meta.scopes}></ScopesList>
<Typography className="oc-light">
<FormattedMessage
id="konnect.consent.consequence"
defaultMessage="By clicking Allow, you allow this app to use your information.">
</FormattedMessage>
<Typography variant="subtitle1" gutterBottom>
<Trans t={t} i18nKey="konnect.consent.question">
Allow <em><ClientDisplayName client={client}/></em> to do this?
</Trans>
</Typography>
<Typography color="secondary">
{t("konnect.consent.consequence", "By clicking Allow, you allow this app to use your information.")}
</Typography>
<form action="" onSubmit={this.action(undefined, scopes)}>
@@ -125,11 +128,12 @@ class Consent extends React.PureComponent {
<div className={classes.wrapper}>
<Button
color="secondary"
variant="outlined"
className={classes.button}
disabled={!!loading}
onClick={this.action(false, scopes)}
>
<FormattedMessage id="konnect.consent.cancelButton.label" defaultMessage="Cancel"></FormattedMessage>
{t("konnect.consent.cancelButton.label", "Cancel")}
</Button>
{(loading && loading !== REQUEST_CONSENT_ALLOW) &&
<CircularProgress size={24} className={classes.buttonProgress} />}
@@ -139,11 +143,11 @@ class Consent extends React.PureComponent {
type="submit"
color="primary"
variant="contained"
className="oc-button-primary"
className={classes.button}
disabled={!!loading}
onClick={this.action(true, scopes)}
>
<FormattedMessage id="konnect.consent.allowButton.label" defaultMessage="Allow"></FormattedMessage>
{t("konnect.consent.allowButton.label", "Allow")}
</Button>
{loading === REQUEST_CONSENT_ALLOW && <CircularProgress size={24} className={classes.buttonProgress} />}
</div>
@@ -155,13 +159,14 @@ class Consent extends React.PureComponent {
</Typography>
))}
</form>
</div>
</DialogContent>
);
}
}
Consent.propTypes = {
classes: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
loading: PropTypes.string.isRequired,
errors: PropTypes.object.isRequired,
@@ -184,4 +189,4 @@ const mapStateToProps = (state) => {
};
};
export default connect(mapStateToProps)(withStyles(styles)(Consent));
export default connect(mapStateToProps)(withStyles(styles)(withTranslation()(Consent)));
@@ -1,181 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import CircularProgress from '@material-ui/core/CircularProgress';
import green from '@material-ui/core/colors/green';
import Typography from '@material-ui/core/Typography';
import Link from '@material-ui/core/Link';
import TextInput from '../../components/TextInput'
import { updateInput, executeLogonIfFormValid, advanceLogonFlow } from '../../actions/login';
import { ErrorMessage } from '../../errors';
const styles = theme => ({
buttonProgress: {
color: green[500],
position: 'absolute',
top: '50%',
left: '50%',
marginTop: -12,
marginLeft: -12
},
subHeader: {
marginBottom: theme.spacing(3)
},
wrapper: {
position: 'relative',
width: '100%',
textAlign: 'center'
},
message: {
marginTop: 5,
marginBottom: 5
}
});
class Login extends React.PureComponent {
state = {};
componentDidMount() {
const { hello, query, dispatch, history } = this.props;
if (hello && hello.state && history.action !== 'PUSH') {
if (!query.prompt || query.prompt.indexOf('select_account') == -1) {
dispatch(advanceLogonFlow(true, history));
return;
}
history.replace(`/chooseaccount${history.location.search}${history.location.hash}`);
return;
}
}
render() {
const { loading, errors, classes, username, passwordResetLink } = this.props;
const loginFailed = errors.http;
const hasError = errors.http || errors.username || errors.password;
const errorMessage = errors.http
? <ErrorMessage error={errors.http}></ErrorMessage>
: (errors.username
? <ErrorMessage error={errors.username}></ErrorMessage>
: <ErrorMessage error={errors.password}></ErrorMessage>);
const extraPropsUsername = {
"aria-invalid" : (errors.username || errors.http) ? 'true' : 'false'
};
const extraPropsPassword = {
"aria-invalid" : (errors.password || errors.http) ? 'true' : 'false',
};
if(errors.username || errors.http){
extraPropsUsername['extraClassName'] = 'error';
extraPropsUsername['aria-describedby'] = 'oc-login-error-message';
}
if(errors.password || errors.http){
extraPropsPassword['extraClassName'] = 'error';
extraPropsPassword['aria-describedby'] = 'oc-login-error-message';
}
return (
<div>
{/* eslint-disable-next-line react-intl-format/missing-formatted-message */}
<h1 className="oc-invisible-sr"> Login </h1>
<form action="" className="oc-login-form" onSubmit={(event) => this.logon(event)}>
<TextInput
autoFocus
autoCapitalize="off"
spellCheck="false"
value={username}
onChange={this.handleChange('username')}
autoComplete="kopano-account username"
placeholder={({id: "konnect.login.usernameField.label", defaultMessage: "Username"})}
label={({id: "konnect.login.usernameField.label", defaultMessage: "Username"})}
id="oc-login-username"
{...extraPropsUsername}
/>
<TextInput
type="password"
margin="normal"
onChange={this.handleChange('password')}
autoComplete="kopano-account current-password"
placeholder={({id: "konnect.login.usernameField.label", defaultMessage: "Password"})}
label={({id: "konnect.login.usernameField.label", defaultMessage: "Password"})}
id="oc-login-password"
{...extraPropsPassword}
/>
{hasError && <Typography id="oc-login-error-message" variant="subtitle2" component="span" color="error"
className={classes.message}>{errorMessage}</Typography>}
<div className={classes.wrapper}>
{loginFailed && passwordResetLink && <Link id="oc-login-password-reset" href={passwordResetLink} variant="subtitle2">{"Reset password?"}</Link>}
<br />
<Button
type="submit"
color="primary"
variant="contained"
className="oc-button-primary oc-mt-l"
disabled={!!loading}
onClick={(event) => this.logon(event)}
>
<FormattedMessage id="konnect.login.nextButton.label" defaultMessage="Log in"></FormattedMessage>
</Button>
{loading && <CircularProgress size={24} className={classes.buttonProgress}/>}
</div>
</form>
</div>
);
}
handleChange(name) {
return event => {
this.props.dispatch(updateInput(name, event.target.value));
};
}
logon(event) {
event.preventDefault();
const { username, password, dispatch, history } = this.props;
dispatch(executeLogonIfFormValid(username, password, false)).then((response) => {
if (response.success) {
dispatch(advanceLogonFlow(response.success, history));
}
});
}
}
Login.propTypes = {
classes: PropTypes.object.isRequired,
loading: PropTypes.string.isRequired,
username: PropTypes.string.isRequired,
password: PropTypes.string.isRequired,
passwordResetLink: PropTypes.string.isRequired,
errors: PropTypes.object.isRequired,
hello: PropTypes.object,
query: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
history: PropTypes.object.isRequired
};
const mapStateToProps = (state) => {
const { loading, username, password, errors} = state.login;
const { hello, query, passwordResetLink } = state.common;
return {
loading,
username,
password,
errors,
hello,
query,
passwordResetLink
};
};
export default connect(mapStateToProps)(withStyles(styles)(Login));
@@ -0,0 +1,198 @@
import React, { useEffect, useMemo } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { useTranslation } from 'react-i18next';
import renderIf from 'render-if';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import CircularProgress from '@material-ui/core/CircularProgress';
import green from '@material-ui/core/colors/green';
import TextField from '@material-ui/core/TextField';
import Typography from '@material-ui/core/Typography';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import { updateInput, executeLogonIfFormValid, advanceLogonFlow } from '../../actions/login';
import { ErrorMessage } from '../../errors';
const styles = theme => ({
button: {
margin: theme.spacing(1),
minWidth: 100
},
buttonProgress: {
color: green[500],
position: 'absolute',
top: '50%',
left: '50%',
marginTop: -12,
marginLeft: -12
},
subHeader: {
marginBottom: theme.spacing(3)
},
wrapper: {
position: 'relative',
display: 'inline-block'
},
slideContainer: {
overflowX: 'hidden',
},
message: {
marginTop: theme.spacing(2),
marginBottom: theme.spacing(2)
}
});
function Login(props) {
const {
hello,
query,
dispatch,
history,
loading,
errors,
classes,
username,
password,
} = props;
const { t } = useTranslation();
useEffect(() => {
if (hello && hello.state && history.action !== 'PUSH') {
if (!query.prompt || query.prompt.indexOf('select_account') === -1) {
dispatch(advanceLogonFlow(true, history));
return;
}
history.replace(`/chooseaccount${history.location.search}${history.location.hash}`);
return;
}
}, [ /* no dependencies */ ]);
const handleChange = (name) => (event) => {
dispatch(updateInput(name, event.target.value));
};
const handleNextClick = (event) => {
event.preventDefault();
dispatch(executeLogonIfFormValid(username, password, false)).then((response) => {
if (response.success) {
dispatch(advanceLogonFlow(response.success, history));
}
});
};
const usernamePlaceHolder = useMemo(() => {
if (hello?.details?.branding?.usernameHintText ) {
switch (hello.details.branding.usernameHintText) {
case "Username":
break;
case "Email":
return t("konnect.login.usernameField.placeholder.email", "Email");
case "Identity":
return t("konnect.login.usernameField.placeholder.identity", "Identity");
default:
return hello.details.branding.usernameHintText;
}
}
return t("konnect.login.usernameField.placeholder.username", "Username");
}, [hello, t]);
return (
<DialogContent>
<Typography variant="h5" component="h3" gutterBottom>
{t("konnect.login.headline", "Sign in")}
</Typography>
<form action="" onSubmit={(event) => this.logon(event)}>
<TextField
placeholder={usernamePlaceHolder}
error={!!errors.username}
helperText={<ErrorMessage error={errors.username} values={{what: usernamePlaceHolder}}></ErrorMessage>}
fullWidth
margin="dense"
autoFocus
inputProps={{
autoCapitalize: 'off',
spellCheck: 'false'
}}
value={username}
onChange={handleChange('username')}
autoComplete="kopano-account username"
/>
<TextField
type="password"
placeholder={t("konnect.login.passwordField.label", "Password")}
error={!!errors.password}
helperText={<ErrorMessage error={errors.password}></ErrorMessage>}
fullWidth
margin="dense"
onChange={handleChange('password')}
autoComplete="kopano-account current-password"
/>
<DialogActions>
<div className={classes.wrapper}>
<Button
type="submit"
color="primary"
variant="contained"
className={classes.button}
disabled={!!loading}
onClick={handleNextClick}
>
{t("konnect.login.nextButton.label", "Next")}
</Button>
{loading && <CircularProgress size={24} className={classes.buttonProgress} />}
</div>
</DialogActions>
{renderIf(errors.http)(() => (
<Typography variant="subtitle2" color="error" className={classes.message}>
<ErrorMessage error={errors.http}></ErrorMessage>
</Typography>
))}
{hello?.details?.branding?.signinPageText && <Typography variant="body2">{hello.details.branding.signinPageText}</Typography>}
</form>
</DialogContent>
);
}
Login.propTypes = {
classes: PropTypes.object.isRequired,
loading: PropTypes.string.isRequired,
username: PropTypes.string.isRequired,
password: PropTypes.string.isRequired,
errors: PropTypes.object.isRequired,
branding: PropTypes.object,
hello: PropTypes.object,
query: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
history: PropTypes.object.isRequired
};
const mapStateToProps = (state) => {
const { loading, username, password, errors} = state.login;
const { branding, hello, query } = state.common;
return {
loading,
username,
password,
errors,
branding,
hello,
query
};
};
export default connect(mapStateToProps)(withStyles(styles)(Login));
@@ -23,11 +23,11 @@ class Loginscreen extends React.PureComponent {
}
render() {
const { hello } = this.props;
const { branding, hello } = this.props;
const loading = hello === null;
return (
<ResponsiveScreen loading={loading} withoutPadding={true} >
<ResponsiveScreen loading={loading} branding={branding} withoutPadding>
<Switch>
<Route path="/identifier" exact component={Login}></Route>
<Route path="/chooseaccount" exact component={Chooseaccount}></Route>
@@ -42,15 +42,17 @@ class Loginscreen extends React.PureComponent {
Loginscreen.propTypes = {
classes: PropTypes.object.isRequired,
branding: PropTypes.object,
hello: PropTypes.object,
dispatch: PropTypes.func.isRequired
};
const mapStateToProps = (state) => {
const { hello } = state.common;
const { branding, hello } = state.common;
return {
branding,
hello
};
};
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import { withTranslation } from 'react-i18next';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
@@ -24,25 +24,20 @@ const styles = theme => ({
class Welcomescreen extends React.PureComponent {
render() {
const { classes, hello } = this.props;
const { classes, branding, hello, t } = this.props;
const loading = hello === null;
return (
<ResponsiveScreen loading={loading}>
<Typography variant="h5" component="h3" className="oc-light">
<FormattedMessage
id="konnect.welcome.headline"
defaultMessage="Welcome {displayName}"
values={{displayName: hello.displayName}}>
</FormattedMessage>
<ResponsiveScreen loading={loading} branding={branding}>
<Typography variant="h5" component="h3">
{t("konnect.welcome.headline", "Welcome {{displayName}}", {displayName: hello.displayName})}
</Typography>
<Typography variant="subtitle1" className={classes.subHeader + " oc-light"}>
<Typography variant="subtitle1" className={classes.subHeader}>
{hello.username}
</Typography>
<Typography gutterBottom className="oc-light">
<FormattedMessage id="konnect.welcome.message"
defaultMessage="You are signed in - awesome!"></FormattedMessage>
<Typography gutterBottom>
{t("konnect.welcome.message", "You are signed in - awesome!")}
</Typography>
<DialogActions>
@@ -52,7 +47,7 @@ class Welcomescreen extends React.PureComponent {
variant="contained"
onClick={(event) => this.logoff(event)}
>
<FormattedMessage id="konnect.welcome.signoutButton.label" defaultMessage="Sign out"></FormattedMessage>
{t("konnect.welcome.signoutButton.label", "Sign out")}
</Button>
</DialogActions>
</ResponsiveScreen>
@@ -74,7 +69,9 @@ class Welcomescreen extends React.PureComponent {
Welcomescreen.propTypes = {
classes: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
branding: PropTypes.object,
hello: PropTypes.object,
dispatch: PropTypes.func.isRequired,
@@ -82,11 +79,12 @@ Welcomescreen.propTypes = {
};
const mapStateToProps = (state) => {
const { hello } = state.common;
const { branding, hello } = state.common;
return {
branding,
hello
};
};
export default connect(mapStateToProps)(withStyles(styles)(Welcomescreen));
export default connect(mapStateToProps)(withStyles(styles)(withTranslation()(Welcomescreen)));
+27 -34
View File
@@ -1,4 +1,4 @@
import { injectIntl, defineMessages } from 'react-intl';
import { withTranslation } from 'react-i18next';
export const ERROR_LOGIN_VALIDATE_MISSINGUSERNAME = 'konnect.error.login.validate.missingUsername';
export const ERROR_LOGIN_VALIDATE_MISSINGPASSWORD = 'konnect.error.login.validate.missingPassword';
@@ -7,34 +7,6 @@ export const ERROR_HTTP_NETWORK_ERROR = 'konnect.error.http.networkError';
export const ERROR_HTTP_UNEXPECTED_RESPONSE_STATUS = 'konnect.error.http.unexpectedResponseStatus';
export const ERROR_HTTP_UNEXPECTED_RESPONSE_STATE = 'konnect.error.http.unexpectedResponseState';
// Translatable error messages.
const translations = defineMessages({
[ERROR_LOGIN_VALIDATE_MISSINGUSERNAME]: {
id: ERROR_LOGIN_VALIDATE_MISSINGUSERNAME,
defaultMessage: 'Please enter a valid username'
},
[ERROR_LOGIN_VALIDATE_MISSINGPASSWORD]: {
id: ERROR_LOGIN_VALIDATE_MISSINGPASSWORD,
defaultMessage: 'Please enter a valid password'
},
[ERROR_LOGIN_FAILED]: {
id: ERROR_LOGIN_FAILED,
defaultMessage: 'Logon failed. Please verify your credentials and try again.'
},
[ERROR_HTTP_NETWORK_ERROR]: {
id: ERROR_HTTP_NETWORK_ERROR,
defaultMessage: 'Network error. Please check your connection and try again.'
},
[ERROR_HTTP_UNEXPECTED_RESPONSE_STATUS]: {
id: ERROR_HTTP_UNEXPECTED_RESPONSE_STATUS,
defaultMessage: 'Unexpected HTTP response: {status}. Please check your connection and try again.'
},
[ERROR_HTTP_UNEXPECTED_RESPONSE_STATE]: {
id: ERROR_HTTP_UNEXPECTED_RESPONSE_STATE,
defaultMessage: 'Unexpected response state: {state}'
}
});
// Error with values.
export class ExtendedError extends Error {
values = undefined;
@@ -50,7 +22,7 @@ export class ExtendedError extends Error {
// Component to translate error text with values.
function ErrorMessageComponent(props) {
const { error, intl } = props;
const { error, t, values } = props;
if (!error) {
return null;
@@ -59,10 +31,31 @@ function ErrorMessageComponent(props) {
const id = error.id ? error.id : error.message;
const messageDescriptor = Object.assign({}, {
id,
defaultMessage: error.id ? error.message : undefined
}, translations[id]);
defaultMessage: error.id ? error.message : undefined,
values: {
...error.values,
...values,
},
});
return intl.formatMessage(messageDescriptor, error.values);
switch (messageDescriptor.id) {
case ERROR_LOGIN_VALIDATE_MISSINGUSERNAME:
return t("konnect.error.login.validate.missingUsername", "Enter a valid value.", messageDescriptor.values);
case ERROR_LOGIN_VALIDATE_MISSINGPASSWORD:
return t("konnect.error.login.validate.missingPassword", "Enter your password.");
case ERROR_LOGIN_FAILED:
return t("konnect.error.login.failed", "Logon failed. Please verify your credentials and try again.");
case ERROR_HTTP_NETWORK_ERROR:
return t("konnect.error.http.networkError", "Network error. Please check your connection and try again.");
case ERROR_HTTP_UNEXPECTED_RESPONSE_STATUS:
return t("konnect.error.http.unexpectedResponseStatus", "Unexpected HTTP response: {{status}}. Please check your connection and try again.", messageDescriptor.values);
case ERROR_HTTP_UNEXPECTED_RESPONSE_STATE:
return t("konnect.error.http.unexpectedResponseState", "Unexpected response state: {{state}}", messageDescriptor.values);
default:
}
const f = t;
return f(messageDescriptor.defaultMessage, messageDescriptor.values);
}
export const ErrorMessage = injectIntl(ErrorMessageComponent);
export const ErrorMessage = withTranslation()(ErrorMessageComponent);
+17
View File
@@ -0,0 +1,17 @@
/* not so fancy background */
#bg {
background-color: white;
}
#bg > div {
position: fixed;
top: 0;
width: 100%;
height: 100%;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
background-image: url(./images/loginscreen-bg.svg);
z-index: 0;
}
+80
View File
@@ -0,0 +1,80 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import resourcesToBackend from 'i18next-resources-to-backend';
import LanguageDetector, { CustomDetector } from 'i18next-browser-languagedetector';
import queryString from 'query-string';
import locales from './locales';
const config = {
uiLocalesQueryName: 'ui_locales', // Same as OIDC uses.
uiLocaleCookieName: 'ui_locale', // For domain wide syncing, not set here.
uiLocaleLocalStorageName: 'lico.identifier_ui_locale', // Sufficiently unique, set here.
}
const supportedLanguages = locales.map((locale) => {
return locale.locale;
});
const queryUiLocalesDetector: CustomDetector = {
name: 'queryUiLocales',
lookup: (options): string | string[] | undefined => {
const query = queryString.parse(document.location.search);
const ui_locales = query[config.uiLocalesQueryName];
if (!ui_locales) {
return;
}
if (Array.isArray(ui_locales)) {
return ui_locales as string[];
} else {
return ui_locales.split(' ');
}
},
}
const languageDetector = new LanguageDetector();
languageDetector.addDetector(queryUiLocalesDetector);
i18n
.use(resourcesToBackend((language, namespace, callback) => {
import(
/* webpackMode: "lazy-once" */
/* webpackInclude: /\.json$/ */
/* webpackChunkName: "all-i18n-data" */
/* webpackPrefetch: true */
`./locales/${language}/${namespace}.json`
)
.then((resources) => {
callback(null, resources)
})
.catch((error) => {
callback(error, null)
})
}))
.use(languageDetector)
.use(initReactI18next)
// init i18next
// for all options read: https://www.i18next.com/overview/configuration-options
.init({
fallbackLng: 'en-GB',
supportedLngs: [...supportedLanguages],
cleanCode: true,
returnEmptyString: false,
debug: false,
detection: {
/* https://github.com/i18next/i18next-browser-languageDetector */
order: [queryUiLocalesDetector.name, 'cookie', 'localStorage', 'navigator'],
lookupCookie: config.uiLocaleCookieName,
lookupLocalStorage: config.uiLocaleLocalStorageName,
caches: ['localStorage'],
},
interpolation: {
escapeValue: false,
},
});
export default i18n;
+2
View File
@@ -0,0 +1,2 @@
app-icon.svg
app-icon-*.png
+42
View File
@@ -0,0 +1,42 @@
# Tools
CONVERT ?= convert
IDENTIFY ?= identify
BASE64 ?= base64
ENVSUBST ?= envsubst
SCOUR ?= scour
INKSCAPE ?= inkscape
# Variables
STATIC ?= ../../public/static
ICON ?= lico-icon.svg
# Build
all: app-icon.svg
.PHONY: icons
icons: $(STATIC)/favicon.ico
.PHONY: $(STATIC)/favicon.ico
$(STATIC)/favicon.ico: app-icon-rounded-256x256.png
$(CONVERT) -background transparent $< -define icon:auto-resize=16,32,48,64,128,256 $@
app-icon.svg: $(ICON)
cp -vaf $< $@
app-icon-whitebox-256x256.png: app-icon.svg
$(INKSCAPE) -z -e $@.tmp -w 204.8 -h 204.8 -b white -y 1.0 $<
$(CONVERT) $@.tmp -background white -gravity center -extent 256x256 $@
@$(RM) $@.tmp
app-icon-rounded-256x256.png: app-icon-whitebox-256x256.png
$(CONVERT) -size 256x256 xc:none -draw "roundrectangle 2,2,252,252,126,126" $@.tmp.png
$(CONVERT) $< -matte $@.tmp.png -compose DstIn -composite $@
@$(RM) $@.tmp.png
.PHONY: clean
clean:
$(RM) app-icon-*.png || true
$(RM) app-icon.svg || true
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<g>
<path style="fill:#414141;" d="M14.3,2.3c-3.9-0.9-7.5,0.5-9.7,3.1l7.5,0v0c0,0,0,0,0,0c3.7,0,6.7,3,6.7,6.6c0,3.7-3,6.6-6.7,6.6
c0,0,0,0,0,0l-7.5,0C6.4,20.7,9,22,12,22c6.1,0,11-5.5,9.8-11.9C21.1,6.3,18.1,3.1,14.3,2.3z"/>
<polygon style="fill:#0072BC;" points="15.8,12 10.8,7 10.8,10.3 2,10.3 2,13.7 10.8,13.7 10.8,17 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 685 B

@@ -0,0 +1,32 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920" height="1080" preserveAspectRatio="none" viewBox="0 0 1920 1080">
<g clip-path="url(&quot;#SvgjsClipPath1039&quot;)" fill="none">
<circle r="180" cx="129.17" cy="133.37" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="180" cx="866.4" cy="819.73" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="166.485" cx="1209.08" cy="856.22" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="319.96" cx="1455.14" cy="182.11" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="359.475" cx="746.69" cy="499.07" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="176.48" cx="1393.64" cy="84.76" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="100.755" cx="1851.69" cy="183.43" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="330.61" cx="1758.65" cy="829.71" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="221.495" cx="604.37" cy="31.19" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="127.345" cx="1110" cy="866.11" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="143.26" cx="1209.08" cy="714.12" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="109.325" cx="1687.2" cy="396.48" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="229.51" cx="1469.76" cy="840.69" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="162.63" cx="1090.59" cy="577.16" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="222.61" cx="66.93" cy="481.38" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="192.95" cx="228.28" cy="23.36" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="304.245" cx="1453.03" cy="791.48" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="100.16" cx="298.58" cy="1026.17" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="98.92" cx="540.42" cy="1003.91" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="94.615" cx="1046.82" cy="438.03" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="159.25" cx="106.75" cy="163.79" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="245.675" cx="769.03" cy="319.36" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
<circle r="178.39" cx="690.45" cy="874.83" stroke="#0d51d9" stroke-opacity="0.25" stroke-width="2"></circle>
</g>
<defs>
<clipPath id="SvgjsClipPath1039">
<rect width="1920" height="1080" x="0" y="0"></rect>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

-13
View File
@@ -1,13 +0,0 @@
import 'kpop/static/css/base.css';
import 'kpop/static/css/scrollbar.css';
import './app.css';
import * as kpop from 'kpop/es/version';
import * as version from './version';
console.info(`Kopano Identifier build version: ${version.build}`); // eslint-disable-line no-console
console.info(`Kopano Kpop build version: ${kpop.build}`); // eslint-disable-line no-console
// NOTE(longsleep): Load async, this enables code splitting via Webpack.
import(/* webpackChunkName: "identifier-app" */ './app');
+22
View File
@@ -0,0 +1,22 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import '@fontsource/roboto/300.css';
import '@fontsource/roboto/400.css';
import '@fontsource/roboto/500.css';
import '@fontsource/roboto/700.css';
import './i18n';
import App from './App';
import store from './store';
ReactDOM.render(
<React.StrictMode>
<Provider store={store as any}>
<App/>
</Provider>
</React.StrictMode>,
document.getElementById('root')
);
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Verbindung zum Server fehlgeschlagen",
"konnect.login.retryButton.label": "Wiederholen",
"konnect.scopeDescription.aliasBasic": "Zugriff auf Ihre grundlegenden Benutzerinformationen",
"konnect.scopeDescription.offlineAccess": "Dauerhaften Zugriff (läuft nicht ab)",
"konnect.scopeDescription.scope": "Geltungsbereich: {scope}",
"konnect.goodbye.headline": "Bis bald",
"konnect.goodbye.subHeader": "sie sind jetzt von Ihrem Kopano Konto abgemeldet",
"konnect.goodbye.message.close": "Sie können dieses Fenster jetzt schließen.",
"konnect.goodbye.confirm.headline": "Hallo {displayName}",
"konnect.goodbye.confirm.subHeader": "Bitte bestätigen Sie, dass Sie sich abmelden möchten",
"konnect.goodbye.message.confirm": "Klicken Sie auf die Schaltfläche unten um sich aus Ihrem Kopano Konto abzumelden.",
"konnect.goodbye.signoutButton.label": "Abmelden",
"konnect.welcome.signoutButton.label": "Abmelden",
"konnect.chooseaccount.headline": "Konto auswählen",
"konnect.chooseaccount.subHeader": "um sich bei Kopano anzumelden",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Anderes Konto",
"konnect.consent.headline": "Hi {displayName}",
"konnect.consent.message": "{clientDisplayName} möchte",
"konnect.consent.tooltip.client": "Wenn Sie \"Einverstanden\" klicken werden Sie zu {redirectURI} weitergeleitet",
"konnect.consent.question": "{clientDisplayName} den Zugriff gestatten?",
"konnect.consent.consequence": "Wenn Sie Einverstanden klicken, erhält die App Zugriff auf Ihre Informationen.",
"konnect.consent.cancelButton.label": "Abbrechen",
"konnect.consent.allowButton.label": "Einverstanden",
"konnect.login.headline": "Anmelden",
"konnect.login.subHeader": "mit Ihrem Kopano Konto",
"konnect.login.usernameField.label": "Benutzername",
"konnect.login.passwordField.label": "Passwort",
"konnect.login.nextButton.label": "Weiter",
"konnect.welcome.headline": "Willkommen {displayName}",
"konnect.welcome.message": "Sie sind angemeldet - super!",
"konnect.error.login.validate.missingUsername": "Geben Sie einen Benutzername ein",
"konnect.error.login.validate.missingPassword": "Geben Sie ein Passwort ein",
"konnect.error.login.failed": "Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Eingabe und versuchen Sie es noch einmal.",
"konnet.error.http.networkError": "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal.",
"konnect.error.http.unexpectedResponseStatus": "Unerwartete HTTP-Antwort: {status}. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal.",
"konnect.error.http.unexpectedResponseState": "Unerwarteter Antwort-Status: {state}"
}
@@ -0,0 +1,94 @@
{
"konnect": {
"consent": {
"message": "<0><0><0></0></0></0> möchte",
"allowButton": {
"label": "Einverstanden"
},
"question": "<1><0></0></1> den Zugriff gestatten?",
"consequence": "Wenn Sie Einverstanden klicken, erhält die App Zugriff auf Ihre Informationen.",
"cancelButton": {
"label": "Abbrechen"
},
"tooltip": {
"client": "Wenn Sie \"Einverstanden\" klicken werden Sie zu {{redirectURI}} weitergeleitet"
},
"headline": "Hallo {{displayName}}"
},
"chooseaccount": {
"useOther": {
"persona": {
"label": "?"
},
"label": "Anderes Konto"
},
"headline": "Konto auswählen",
"subHeader": "das angemeldet werden soll"
},
"scopeDescription": {
"aliasBasic": "Zugriff auf Ihre grundlegenden Benutzerinformationen",
"offlineAccess": "Dauerhaften Zugriff (läuft nicht ab)",
"scope": "Geltungsbereich: {{scope}}"
},
"login": {
"usernameField": {
"placeholder": {
"email": "E-Mail",
"identity": "Identität",
"username": "Benutzername"
}
},
"nextButton": {
"label": "Weiter"
},
"passwordField": {
"label": "Passwort"
},
"retryButton": {
"label": "Wiederholen"
},
"headline": "Anmelden"
},
"error": {
"login": {
"validate": {
"missingUsername": "Geben Sie einen gültigen Wert ein.",
"missingPassword": "Geben Sie ein Passwort ein."
},
"failed": "Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Eingabe und versuchen Sie es noch einmal."
},
"http": {
"networkError": "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal.",
"unexpectedResponseStatus": "Unerwartete HTTP-Antwort: {{status}}. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es noch einmal.",
"unexpectedResponseState": "Unerwarteter Antwort-Status: {{state}}"
}
},
"loading": {
"error": {
"headline": "Verbindung zum Server fehlgeschlagen"
}
},
"goodbye": {
"headline": "Bis bald",
"confirm": {
"headline": "Hallo {{displayName}}",
"subHeader": "Bitte bestätigen Sie, dass Sie sich abmelden möchten"
},
"message": {
"confirm": "Klicken Sie auf die Schaltfläche unten um sich aus Ihrem Konto abzumelden.",
"close": "Sie können dieses Fenster jetzt schließen."
},
"signoutButton": {
"label": "Abmelden"
},
"subHeader": "sie sind jetzt abgemeldet"
},
"welcome": {
"signoutButton": {
"label": "Abmelden"
},
"headline": "Willkommen {{displayName}}",
"message": "Sie sind angemeldet - super!"
}
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
@@ -0,0 +1,40 @@
{
"konnect": {
"consent": {
"allowButton": {},
"cancelButton": {},
"tooltip": {}
},
"chooseaccount": {
"useOther": {
"persona": {}
}
},
"scopeDescription": {},
"login": {
"usernameField": {
"placeholder": {}
},
"nextButton": {},
"passwordField": {},
"retryButton": {}
},
"error": {
"login": {
"validate": {}
},
"http": {}
},
"loading": {
"error": {}
},
"goodbye": {
"confirm": {},
"message": {},
"signoutButton": {}
},
"welcome": {
"signoutButton": {}
}
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "La connexion au serveur a échoué",
"konnect.login.retryButton.label": "Réessayer",
"konnect.scopeDescription.aliasBasic": "Consulter les informations de base de votre compte",
"konnect.scopeDescription.offlineAccess": "Conserver les autorisations d'accès à l'avenir",
"konnect.scopeDescription.scope": "Portée : {scope}",
"konnect.goodbye.headline": "Au revoir",
"konnect.goodbye.subHeader": "vous avez été déconnecté de Kopano",
"konnect.goodbye.message.close": "Vous pouvez fermer cette fenêtre à présent.",
"konnect.goodbye.confirm.headline": "Bonjour {displayName}",
"konnect.goodbye.confirm.subHeader": "Confirmer votre déconnexion",
"konnect.goodbye.message.confirm": "Cliquer le bouton ci-dessous, pour quitter Kopano.",
"konnect.goodbye.signoutButton.label": "Quitter",
"konnect.welcome.signoutButton.label": "Quitter",
"konnect.chooseaccount.headline": "Choisir un compte",
"konnect.chooseaccount.subHeader": "pour vous authentifier dans Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Utiliser un autre compte",
"konnect.consent.headline": "Bonjour {displayName}",
"konnect.consent.message": "{clientDisplayName} souhaite",
"konnect.consent.tooltip.client": "En cliquant \"Autoriser\" vous serez redirigé vers : {redirectURI}",
"konnect.consent.question": "Autoriser {clientDisplayName} à faire cela ?",
"konnect.consent.consequence": "En cliquant, vous autoriser l'app à accéder à vos informations.",
"konnect.consent.cancelButton.label": "Annuler",
"konnect.consent.allowButton.label": "Autoriser",
"konnect.login.headline": "Identification",
"konnect.login.subHeader": "avec vos identifiants Kopano",
"konnect.login.usernameField.label": "Utilisateur",
"konnect.login.passwordField.label": "Mot de passe",
"konnect.login.nextButton.label": "Suivant",
"konnect.welcome.headline": "Bienvenue {displayName}",
"konnect.welcome.message": "Magnifique - Vous êtes connecté !",
"konnect.error.login.validate.missingUsername": "Saisir un identifiant",
"konnect.error.login.validate.missingPassword": "Saisir un mot de passe",
"konnect.error.login.failed": "Echec de connexion. Vérifier vos identifiants et essayer à nouveau.",
"konnet.error.http.networkError": "Erreur réseau. Vérifier votre connexion, et réessayer.",
"konnect.error.http.unexpectedResponseStatus": "Erreur HTTP inattendue : {status}. Vérifier votre connexion et réessayer.",
"konnect.error.http.unexpectedResponseState": "Erreur d'état inattendue : {state}"
}
@@ -0,0 +1,91 @@
{
"konnect": {
"consent": {
"message": "<0><0><0></0></0></0> souhaite",
"allowButton": {
"label": "Autoriser"
},
"question": "Autoriser <1><0></0></1> à faire cela?",
"consequence": "En cliquant, vous autoriser l'app à accéder à vos informations.",
"cancelButton": {
"label": "Annuler"
},
"tooltip": {
"client": "En cliquant \"Autoriser\" vous serez redirigé vers: {{redirectURI}}"
},
"headline": "Bonjour {{displayName}}"
},
"chooseaccount": {
"useOther": {
"persona": {
"label": "?"
},
"label": "Utiliser un autre compte"
},
"headline": "Choisir un compte",
"subHeader": "identification"
},
"scopeDescription": {
"aliasBasic": "Consulter les informations de base de votre compte",
"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": {
"missingPassword": "Saisir un mot de passe."
},
"failed": "Echec de connexion. Vérifier vos identifiants et essayer à nouveau."
},
"http": {
"networkError": "Erreur réseau. Vérifier votre connexion, et réessayer.",
"unexpectedResponseStatus": "Erreur HTTP inattendue : {{status}}. Vérifier votre connexion et réessayer.",
"unexpectedResponseState": "Erreur d'état inattendue : {{state}}"
}
},
"loading": {
"error": {
"headline": "La connexion au serveur a échoué"
}
},
"goodbye": {
"headline": "Au revoir",
"confirm": {
"headline": "Bonjour {{displayName}}",
"subHeader": "confirmer votre déconnexion"
},
"message": {
"confirm": "Cliquer le bouton ci-dessous, pour quitter.",
"close": "Vous pouvez fermer cette fenêtre à présent."
},
"signoutButton": {
"label": "Quitter"
},
"subHeader": "vous avez été déconnecté"
},
"welcome": {
"signoutButton": {
"label": "Quitter"
},
"headline": "Bienvenue {{displayName}}",
"message": "Magnifique - Vous êtes connecté!"
}
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "सर्वर से कनेक्ट करने में विफल",
"konnect.login.retryButton.label": "पुन: प्रयास करें",
"konnect.scopeDescription.aliasBasic": "अपनी मूल खाता जानकारी देखे",
"konnect.scopeDescription.offlineAccess": "अनुमत पहुंच को लगातार और हमेशा बनाए रखें",
"konnect.scopeDescription.scope": "क्षेत्र: {scope}",
"konnect.goodbye.headline": "अलविदा",
"konnect.goodbye.subHeader": "आपको अपने Kopano खाते से साइन आउट कर दिया गया है",
"konnect.goodbye.message.close": "अब आप इस विंडो को बंद कर सकते हैं.",
"konnect.goodbye.confirm.headline": "नमस्ते {displayName}",
"konnect.goodbye.confirm.subHeader": "कृपया साइन आउट की पुष्टि करें",
"konnect.goodbye.message.confirm": "अपने Kopano खाते से साइन आउट करने के लिए नीचे दिए गए बटन को दबाएं.",
"konnect.goodbye.signoutButton.label": "साइन आउट",
"konnect.welcome.signoutButton.label": "साइन आउट",
"konnect.chooseaccount.headline": "खाता चुनें",
"konnect.chooseaccount.subHeader": "Kopano में साइन इन करने के लिए",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "दूसरे खाते का उपयोग करें",
"konnect.consent.headline": "नमस्ते {displayName}",
"konnect.consent.message": "{clientDisplayName} चाहते है की",
"konnect.consent.tooltip.client": "\"अनुमति\" पर क्लिक करने से आपको {redirecturI} पे पुनर्निर्देशित किया जायेगा",
"konnect.consent.question": "क्या {clientDisplayName} को ये करने की अनुमति देना चाहते है?",
"konnect.consent.consequence": "अनुमति पर क्लिक करके, आप इस एप्लिकेशन को आपकी जानकारी का उपयोग करने की अनुमति देते हैं.",
"konnect.consent.cancelButton.label": "रद्द करें",
"konnect.consent.allowButton.label": "अनुमति दीजिये",
"konnect.login.headline": "साइन इन",
"konnect.login.subHeader": "अपने Kopano खाते के साथ",
"konnect.login.usernameField.label": "उपयोगकर्ता नाम",
"konnect.login.passwordField.label": "पासवर्ड",
"konnect.login.nextButton.label": "अगला",
"konnect.welcome.headline": "स्वागत हे {displayName}",
"konnect.welcome.message": "आप साइंड इन हैं - अद्भुत!",
"konnect.error.login.validate.missingUsername": "उपयोगकर्ता नाम डालिये",
"konnect.error.login.validate.missingPassword": "पासवर्ड डालिए",
"konnect.error.login.failed": "लोगऑन नाकाम रहा. कृपया अपने क्रेडेंशियल्स जांचे और पुनः प्रयास करें.",
"konnet.error.http.networkError": "नेटवर्क त्रुटि। कृपया अपने संपर्क की जांच करे और फिर से प्रयास करें.",
"konnect.error.http.unexpectedResponseStatus": "अनपेक्षित HTTP प्रतिक्रिया: {status}. कृपया अपने संपर्क की जांच करे और फिर से प्रयास करें.",
"konnect.error.http.unexpectedResponseState": "अनपेक्षित प्रतिक्रिया अवस्था: {state}"
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
-50
View File
@@ -1,50 +0,0 @@
// NOTE(longsleep): This loads all translation files to be included in the
// app bundle. They are not that large.
// Please keep imports and exports alphabetically sorted.
import de from './de.json';
import fr from './fr.json';
import hi from './hi.json';
import is from './is.json';
import nb from './nb.json';
import nl from './nl.json';
import ptPT from './pt_PT.json';
import ru from './ru.json';
function enableLocales(locales, enabled) {
if (process.env.NODE_ENV !== 'production') { // eslint-disable-line no-undef
return locales;
}
return enabled.reduce(function(value, locale) {
value[locale] = locales[locale];
return value;
}, {});
}
// Locales must follow BCP 47 format (https://tools.ietf.org/html/rfc5646).
const locales = enableLocales({
de,
'en-GB': {},
'en-US': {},
fr,
hi,
is,
nb,
nl,
'pt-PT': ptPT,
ru
}, [
// List of enabled languages in production builds.
'de',
'en-GB',
'en-US',
'fr',
'hi',
'is',
'nb',
'nl',
'pt-PT',
'ru'
]);
export default locales;
+15
View File
@@ -0,0 +1,15 @@
import allLocales from './locales.json';
interface Locale {
locale: string,
name: string,
nativeName: string,
}
function enableLocales(locales: Locale[]): Locale[] {
return locales;
}
export const locales = enableLocales(allLocales);
export default locales;
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Mistókst að tengjast netþjóni",
"konnect.login.retryButton.label": "Reyna aftur",
"konnect.scopeDescription.aliasBasic": "Komast í grunnupplýsingar um þig",
"konnect.scopeDescription.offlineAccess": "Viðhalda heimildunum alltaf og að eilífu (mundu mig)",
"konnect.scopeDescription.scope": "Gildissvið: {scope}",
"konnect.goodbye.headline": "Bless",
"konnect.goodbye.subHeader": "útskráning Kopano-aðgangsins þíns tókst",
"konnect.goodbye.message.close": "Þú getur lokað þessum glugga núna.",
"konnect.goodbye.confirm.headline": "Halló {displayName}",
"konnect.goodbye.confirm.subHeader": "vinsamlegast staðfestu útskráningu",
"konnect.goodbye.message.confirm": "Smelltu á takkann fyrir neðan til að skrá þig út af Kopano aðganginum núna.",
"konnect.goodbye.signoutButton.label": "Útskrá",
"konnect.welcome.signoutButton.label": "Útskrá",
"konnect.chooseaccount.headline": "Veldu aðgang",
"konnect.chooseaccount.subHeader": "til að skrá þig inn í Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Nota annan aðgang",
"konnect.consent.headline": "Hæ {displayName}",
"konnect.consent.message": "{clientDisplayName} vill",
"konnect.consent.tooltip.client": "Þegar þú smellir á \"Leyfa\" áframsendist þú á: {redirectURI}",
"konnect.consent.question": "Leyfa {clientDisplayName} að gera þetta?",
"konnect.consent.consequence": "Með því að smella á \"Leyfa\", leyfir þú þessu forriti að nota upplýsingarnar um þig.",
"konnect.consent.cancelButton.label": "Hætta við",
"konnect.consent.allowButton.label": "Leyfa",
"konnect.login.headline": "Innskrá",
"konnect.login.subHeader": "með Kopano-aðganginum þínum",
"konnect.login.usernameField.label": "Notandanafn",
"konnect.login.passwordField.label": "Lykilorð",
"konnect.login.nextButton.label": "Næsta",
"konnect.welcome.headline": "Halló {displayName}",
"konnect.welcome.message": "Innskráningin tókst - frábært!",
"konnect.error.login.validate.missingUsername": "Sláðu inn notandanafn",
"konnect.error.login.validate.missingPassword": "Sláðu inn lykilorð",
"konnect.error.login.failed": "Innskráning mistókst. Vinsamlegast staðfestu notandaupplýsingarnar og reyndu aftur.",
"konnet.error.http.networkError": "Netvilla. Vinsamlegast athugaðu tenginguna þína og reyndu aftur.",
"konnect.error.http.unexpectedResponseStatus": "Ófyrirsjáanlegt HTTP svar: {status}. Vinsamlegast athugaðu tenginguna þína og reyndu aftur.",
"konnect.error.http.unexpectedResponseState": "Ófyrirsjáanleg svarstaða: {state}"
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
@@ -0,0 +1,40 @@
{
"konnect": {
"consent": {
"allowButton": {},
"cancelButton": {},
"tooltip": {}
},
"chooseaccount": {
"useOther": {
"persona": {}
}
},
"scopeDescription": {},
"login": {
"usernameField": {
"placeholder": {}
},
"nextButton": {},
"passwordField": {},
"retryButton": {}
},
"error": {
"login": {
"validate": {}
},
"http": {}
},
"loading": {
"error": {}
},
"goodbye": {
"confirm": {},
"message": {},
"signoutButton": {}
},
"welcome": {
"signoutButton": {}
}
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
+66
View File
@@ -0,0 +1,66 @@
[
{
"locale": "de",
"name": "German",
"nativeName": "Deutsch",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "en-GB",
"name": "English",
"nativeName": "English",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "es",
"name": "Spanish",
"nativeName": "Español",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "fr",
"name": "French",
"nativeName": "Français",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "it",
"name": "Italian",
"nativeName": "Italiano",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "nl",
"name": "Dutch",
"nativeName": "Nederlands",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
}
},
{
"locale": "zh-CN",
"name": "Simplified Chinese",
"nativeName": "简体中文",
"orientation": {
"characterOrder": "left-to-right",
"lineOrder": "top-to-bottom"
},
"ietf": "zh_hans"
}
]
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Klarte ikke å forbinde med server",
"konnect.login.retryButton.label": "Prøv igjen",
"konnect.scopeDescription.aliasBasic": "Tilgang til informasjon om basiskonto",
"konnect.scopeDescription.offlineAccess": "Behold den tillate tilgangen for alltid",
"konnect.scopeDescription.scope": "Omfang: {scope}",
"konnect.goodbye.headline": "Farvel",
"konnect.goodbye.subHeader": "du har blitt logget ut fra din Kopano konto",
"konnect.goodbye.message.close": "Du kan lukke dette vinduet nå.",
"konnect.goodbye.confirm.headline": "Hallo {displayName}",
"konnect.goodbye.confirm.subHeader": "vennligst bekreft utlogging",
"konnect.goodbye.message.confirm": "Trykk på knappen under, for å logge ut av din Kopano konto.",
"konnect.goodbye.signoutButton.label": "Logg ut",
"konnect.welcome.signoutButton.label": "Logg ut",
"konnect.chooseaccount.headline": "Velg en konto",
"konnect.chooseaccount.subHeader": "for å logge inn i Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Bruk en annen konto",
"konnect.consent.headline": "Hei {displayName}",
"konnect.consent.message": "{clientDisplayName} ønsker",
"konnect.consent.tooltip.client": "Ved å klikke på \"Tillatt\" så vil du bli ledet til: {redirectURI}",
"konnect.consent.question": "Tillatt {clientDisplayName} å gjøre dette?",
"konnect.consent.consequence": "Ved å klikke på Aksepter, så tillater du at appen bruker din informasjon.",
"konnect.consent.cancelButton.label": "Avbryt",
"konnect.consent.allowButton.label": "Tillat",
"konnect.login.headline": "Logg inn",
"konnect.login.subHeader": "med din Kopano konto",
"konnect.login.usernameField.label": "Brukernavn",
"konnect.login.passwordField.label": "Passord",
"konnect.login.nextButton.label": "Neste",
"konnect.welcome.headline": "Velkommen {displayName}",
"konnect.welcome.message": "Du er logget på!",
"konnect.error.login.validate.missingUsername": "Skriv inn et brukernavn",
"konnect.error.login.validate.missingPassword": "Skriv inn et passord",
"konnect.error.login.failed": "Logg inn feilet. Vennligst sjekk brukernavn/passord, og forsøk igjen.",
"konnet.error.http.networkError": "Nettverksfeil. Sjekk din forbindelse, og forsøk igjen.",
"konnect.error.http.unexpectedResponseStatus": "Uventet HTTP respons: {status}. Sjekk tilkoblingen din og prøv igjen.",
"konnect.error.http.unexpectedResponseState": "Uventet svar-status: {state}"
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Kon niet met server verbinden",
"konnect.login.retryButton.label": "Opnieuw",
"konnect.scopeDescription.aliasBasic": "Basis accountgegevens weergeven",
"konnect.scopeDescription.offlineAccess": "De toestemming voor altijd onthouden",
"konnect.scopeDescription.scope": "Scope: {scope}",
"konnect.goodbye.headline": "Tot ziens",
"konnect.goodbye.subHeader": "je bent afgemeld van je Kopano account",
"konnect.goodbye.message.close": "Dit venster kan nu worden gesloten.",
"konnect.goodbye.confirm.headline": "Hallo {displayName}",
"konnect.goodbye.confirm.subHeader": "bevestig afmelden",
"konnect.goodbye.message.confirm": "Klik op onderstaande knop om af te melden van je Kopano account.",
"konnect.goodbye.signoutButton.label": "Afmelden",
"konnect.welcome.signoutButton.label": "Afmelden",
"konnect.chooseaccount.headline": "Account kiezen",
"konnect.chooseaccount.subHeader": "om aan te melden bij Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Gebruik een ander account",
"konnect.consent.headline": "Hoi {displayName}",
"konnect.consent.message": "{clientDisplayName} wil",
"konnect.consent.tooltip.client": "Door op \"Toestaan\" te klikken word je doorverwezen naar: {redirectURI}",
"konnect.consent.question": "{clientDisplayName} toestaan dit te doen?",
"konnect.consent.consequence": "Door op Toestaan te klikken, krijgt deze app toestemming je informatie te gebruiken.",
"konnect.consent.cancelButton.label": "Annuleren",
"konnect.consent.allowButton.label": "Toestaan",
"konnect.login.headline": "Aanmelden",
"konnect.login.subHeader": "met je Kopano account",
"konnect.login.usernameField.label": "Gebruikersnaam",
"konnect.login.passwordField.label": "Wachtwoord",
"konnect.login.nextButton.label": "Volgende",
"konnect.welcome.headline": "Welkom {displayName}",
"konnect.welcome.message": "Je bent aangemeld - fantastisch!",
"konnect.error.login.validate.missingUsername": "Voer een gebruikersnaam in",
"konnect.error.login.validate.missingPassword": "Voer een wachtwoord in",
"konnect.error.login.failed": "Inloggen mislukt. Controleer logingegevens en probeer opnieuw.",
"konnet.error.http.networkError": "Netwerk probleem. Controleer je verbinding en probeer opnieuw.",
"konnect.error.http.unexpectedResponseStatus": "Onverwachte HTTP respons: {status}. Controleer je verbinding en probeer opnieuw.",
"konnect.error.http.unexpectedResponseState": "Onverwachte respons status: {state}"
}
@@ -0,0 +1,91 @@
{
"konnect": {
"consent": {
"message": "<0><0><0></0></0></0> wil",
"allowButton": {
"label": "Toestaan"
},
"question": "<1><0></0></1> toestaan dit te doen?",
"consequence": "Door op Toestaan te klikken, krijgt deze app toestemming je informatie te gebruiken.",
"cancelButton": {
"label": "Annuleren"
},
"tooltip": {
"client": "Door op \"Toestaan\" te klikken word je doorverwezen naar: {{redirectURI}}"
},
"headline": "Hoi {{displayName}}"
},
"chooseaccount": {
"useOther": {
"persona": {
"label": "?"
},
"label": "Gebruik een ander account"
},
"headline": "Account kiezen",
"subHeader": "aanmelden"
},
"scopeDescription": {
"aliasBasic": "Basis accountgegevens weergeven",
"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": {
"missingPassword": "Voer een wachtwoord in."
},
"failed": "Inloggen mislukt. Controleer logingegevens en probeer opnieuw."
},
"http": {
"networkError": "Netwerk probleem. Controleer je verbinding en probeer opnieuw.",
"unexpectedResponseStatus": "Onverwachte HTTP respons: {{status}}. Controleer je verbinding en probeer opnieuw.",
"unexpectedResponseState": "Onverwachte respons status: {{state}}"
}
},
"loading": {
"error": {
"headline": "Kon niet met server verbinden"
}
},
"goodbye": {
"headline": "Tot ziens",
"confirm": {
"headline": "Hallo {{displayName}}",
"subHeader": "bevestig afmelden"
},
"message": {
"confirm": "Klik op onderstaande knop om af te melden van je account.",
"close": "Dit venster kan nu worden gesloten."
},
"signoutButton": {
"label": "Afmelden"
},
"subHeader": "je bent afgemeld van je account"
},
"welcome": {
"signoutButton": {
"label": "Afmelden"
},
"headline": "Welkom {{displayName}}",
"message": "Je bent aangemeld - fantastisch!"
}
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Falhou a ligar ao servidor",
"konnect.login.retryButton.label": "Tentar novamente",
"konnect.scopeDescription.aliasBasic": "Aceder à sua informação básica da conta",
"konnect.scopeDescription.offlineAccess": "Manter o acesso permitido de forma persistente e para sempre",
"konnect.scopeDescription.scope": "Contexto: {scope}",
"konnect.goodbye.headline": "Adeus",
"konnect.goodbye.subHeader": "a sessão da sua conta Kopano foi terminada",
"konnect.goodbye.message.close": "Pode fechar esta janela agora.",
"konnect.goodbye.confirm.headline": "Olá {displayName}",
"konnect.goodbye.confirm.subHeader": "por favor confirme o fim de sessão",
"konnect.goodbye.message.confirm": "Carregue no botão abaixo para terminar sessão na sua conta Kopano agora.",
"konnect.goodbye.signoutButton.label": "Terminar sessão",
"konnect.welcome.signoutButton.label": "Terminar sessão",
"konnect.chooseaccount.headline": "Escolher uma conta",
"konnect.chooseaccount.subHeader": "para iniciar sessão no Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Use outra conta",
"konnect.consent.headline": "Olá {displayName}",
"konnect.consent.message": "{clientDisplayName} quer",
"konnect.consent.tooltip.client": "Ao carregar em \"Permitir\" será redirecionado para: {redirectURI}",
"konnect.consent.question": "Permitir que {clientDisplayName} faça isto?",
"konnect.consent.consequence": "Ao carregar em Permitir, está a permitir que esta app use os seus dados.",
"konnect.consent.cancelButton.label": "Cancelar",
"konnect.consent.allowButton.label": "Permitir",
"konnect.login.headline": "Iniciar sessão",
"konnect.login.subHeader": "com a sua conta Kopano",
"konnect.login.usernameField.label": "Utilizador",
"konnect.login.passwordField.label": "Palavra-passe",
"konnect.login.nextButton.label": "Seguinte",
"konnect.welcome.headline": "Bem vindo {displayName}",
"konnect.welcome.message": "Iniciou sessão - fantástico!",
"konnect.error.login.validate.missingUsername": "Insira um utilizador",
"konnect.error.login.validate.missingPassword": "Insira uma palavra-passe",
"konnect.error.login.failed": "Falhou início de sessão. Por favor verifique as suas credenciais e tente novamente.",
"konnet.error.http.networkError": "Erro de rede. Por favor verifique as ligações e tente novamente.",
"konnect.error.http.unexpectedResponseStatus": "Resposta HTTP inesperada: {status}. Por favor verifique a sua ligação e tente novamente.",
"konnect.error.http.unexpectedResponseState": "Resposta de estado inesperada: {state}"
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "Не удалось подключиться к серверу",
"konnect.login.retryButton.label": "Повторить",
"konnect.scopeDescription.aliasBasic": "Доступ к вашей основной учетной записи",
"konnect.scopeDescription.offlineAccess": "Сохраните разрешение на доступ как постоянное",
"konnect.scopeDescription.scope": "Охват: {scope}",
"konnect.goodbye.headline": "До свидания",
"konnect.goodbye.subHeader": "вы вышли из вашей учетной записи Kopano",
"konnect.goodbye.message.close": "Теперь вы можете закрыть окно.",
"konnect.goodbye.confirm.headline": "Здравствуйте, {displayName}",
"konnect.goodbye.confirm.subHeader": "пожалуйста, подтвердите выход",
"konnect.goodbye.message.confirm": "Нажмите кнопку ниже, чтобы выйти из вашей учетной записи Kopano.",
"konnect.goodbye.signoutButton.label": "Выход",
"konnect.welcome.signoutButton.label": "Выход",
"konnect.chooseaccount.headline": "Выберите учётную запись",
"konnect.chooseaccount.subHeader": "для входа в Kopano",
"konnect.chooseaccount.useOther.persona.label": "?",
"konnect.chooseaccount.useOther.label": "Другой пользователь",
"konnect.consent.headline": "Привет, {displayName}",
"konnect.consent.message": "{clientDisplayName} хочет",
"konnect.consent.tooltip.client": "После нажатия \"Разрешить\" вы будете перенаправлена на: {redirectURI}",
"konnect.consent.question": "Разрешить {clientDisplayName} сделать это?",
"konnect.consent.consequence": "Нажимая Разрешить, ты даёте разрешение этому приложению использовать вашу информацию.",
"konnect.consent.cancelButton.label": "Отмена",
"konnect.consent.allowButton.label": "Разрешить",
"konnect.login.headline": "Вход",
"konnect.login.subHeader": "с вашей учётной записью Kopano",
"konnect.login.usernameField.label": "Имя пользователя",
"konnect.login.passwordField.label": "Пароль",
"konnect.login.nextButton.label": "Далее",
"konnect.welcome.headline": "Добро пожаловать, {displayName}",
"konnect.welcome.message": "Вы вошли - круто!",
"konnect.error.login.validate.missingUsername": "Введите имя пользователя",
"konnect.error.login.validate.missingPassword": "Введите пароль",
"konnect.error.login.failed": "Не удалось войти. Пожалуйста, проверьте ваши учетные данные и попробуйте снова.",
"konnet.error.http.networkError": "Сетевая ошибка. Пожалуйста, проверьте ваше соединение и попробуйте снова.",
"konnect.error.http.unexpectedResponseStatus": "Неожиданный ответ HTTP: {status}. Проверьте подключение и повторите попытку.",
"konnect.error.http.unexpectedResponseState": "Неожиданный ответ: {state}"
}
-39
View File
@@ -1,39 +0,0 @@
{
"konnect.loading.error.headline": "",
"konnect.login.retryButton.label": "",
"konnect.scopeDescription.aliasBasic": "",
"konnect.scopeDescription.offlineAccess": "",
"konnect.scopeDescription.scope": "",
"konnect.goodbye.headline": "",
"konnect.goodbye.subHeader": "",
"konnect.goodbye.message.close": "",
"konnect.goodbye.confirm.headline": "",
"konnect.goodbye.confirm.subHeader": "",
"konnect.goodbye.message.confirm": "",
"konnect.goodbye.signoutButton.label": "",
"konnect.welcome.signoutButton.label": "",
"konnect.chooseaccount.headline": "",
"konnect.chooseaccount.subHeader": "",
"konnect.chooseaccount.useOther.persona.label": "",
"konnect.chooseaccount.useOther.label": "",
"konnect.consent.headline": "",
"konnect.consent.message": "",
"konnect.consent.tooltip.client": "",
"konnect.consent.question": "",
"konnect.consent.consequence": "",
"konnect.consent.cancelButton.label": "",
"konnect.consent.allowButton.label": "",
"konnect.login.headline": "",
"konnect.login.subHeader": "",
"konnect.login.usernameField.label": "",
"konnect.login.passwordField.label": "",
"konnect.login.nextButton.label": "",
"konnect.welcome.headline": "",
"konnect.welcome.message": "",
"konnect.error.login.validate.missingUsername": "",
"konnect.error.login.validate.missingPassword": "",
"konnect.error.login.failed": "",
"konnet.error.http.networkError": "",
"konnect.error.http.unexpectedResponseStatus": "",
"konnect.error.http.unexpectedResponseState": ""
}
@@ -0,0 +1,40 @@
{
"konnect": {
"consent": {
"allowButton": {},
"cancelButton": {},
"tooltip": {}
},
"chooseaccount": {
"useOther": {
"persona": {}
}
},
"scopeDescription": {},
"login": {
"usernameField": {
"placeholder": {}
},
"nextButton": {},
"passwordField": {},
"retryButton": {}
},
"error": {
"login": {
"validate": {}
},
"http": {}
},
"loading": {
"error": {}
},
"goodbye": {
"confirm": {},
"message": {},
"signoutButton": {}
},
"welcome": {
"signoutButton": {}
}
}
}
+1
View File
@@ -0,0 +1 @@
/// <reference types="react-scripts" />
+6 -14
View File
@@ -20,24 +20,14 @@ const defaultPathPrefix = (() => {
return pathPrefix;
})();
const defaultPasswordResetLink = (() => {
const root = document.getElementById('root');
let link = root ? root.getAttribute('passwort-reset-link') : null;
if (!link || link === '__PASSWORD_RESET_LINK__') {
// Not replaced, probably we are running in debug mode or whatever. Use sane default.
link = '';
}
return link;
})();
const defaultState = {
hello: null,
branding: null,
error: null,
flow: flow,
query: query,
updateAvailable: false,
pathPrefix: defaultPathPrefix,
passwordResetLink: defaultPasswordResetLink
pathPrefix: defaultPathPrefix
};
function commonReducer(state = defaultState, action) {
@@ -49,7 +39,8 @@ function commonReducer(state = defaultState, action) {
case RESET_HELLO:
return Object.assign({}, state, {
hello: null
hello: null,
branding: null
});
case RECEIVE_HELLO:
@@ -59,7 +50,8 @@ function commonReducer(state = defaultState, action) {
username: action.username,
displayName: action.displayName,
details: action.hello
}
},
branding: action.hello.branding ? action.hello.branding : state.branding
});
case SERVICE_WORKER_NEW_CONTENT:
+39
View File
@@ -0,0 +1,39 @@
import { unstable_createMuiStrictModeTheme as createMuiTheme } from '@material-ui/core';
import blueGrey from '@material-ui/core/colors/blueGrey';
import blue from '@material-ui/core/colors/blue';
import red from '@material-ui/core/colors/red';
const primaryColor = blue;
const secondaryColor = blueGrey;
const errorColor = red;
// All the following keys are optional.
// We try our best to provide a great default value.
const theme = createMuiTheme({
palette: {
primary: primaryColor,
secondary: secondaryColor,
error: errorColor,
// Used by `getContrastText()` to maximize the contrast between the background and
// the text.
// NOTE(longsleep): KopanoBlue is too light and thus needs 2.4 contrastThreshold
// to make sure the default 500 color is still using white text. It will
// show warnings in development mode that the contrast is too low as W3C
// recommends the threshold to be 3 or more. This cannot be helped.
contrastThreshold: 2.4,
// Used to shift a color's luminance by approximately
// two indexes within its tonal palette.
// E.g., shift from Red 500 to Red 300 or Red 700.
tonalOffset: 0.2,
},
typography: {
fontSize: 12,
useNextVariants: true,
button: {
textTransform: 'none',
},
},
});
export default theme;
+1 -83
View File
@@ -1,87 +1,5 @@
export function withClientRequestState(obj) {
// Generate a 16 byte random token
const values = new Uint8Array(16);
crypto.getRandomValues(values);
// Convert the 16 byte to a hex string and assign to the state attribute
obj.state = Array.prototype.map.call(values, x => x.toString(16)).join('');
obj.state = Math.random().toString(36).substring(7);
return obj;
}
export function dirname(s) {
return s.replace(/\\/g,'/').replace(/\/[^/]*$/, '');
}
export function propertyFromStylesheet(selector, attribute, asURL=false) {
let value;
let sheetHref;
Array.prototype.some.call(document.styleSheets, function(sheet) {
try {
return Array.prototype.some.call(sheet.cssRules, function(rule) {
sheetHref = sheet.href;
if (selector === rule.selectorText) {
return Array.prototype.some.call(rule.style, function(style) {
if (attribute === style) {
value = rule.style.getPropertyValue(attribute);
return true;
}
return false;
});
}
return false;
});
} catch(e) {
// Ignore sheets which caused errors. This for example can happen if an
// extension injected styles from an other origin.
return false;
}
});
if (value && asURL) {
// This removes url() shit if there.
value = value.match(/(?:\(['|"]?)(.*?)(?:['|"]?\))/)[1];
if (!value) {
return null;
}
if (sheetHref) {
// URLs in CSS are relative to the CSS - so lets add stuff.
const baseHref = dirname(sheetHref);
value = baseHref + '/' + value;
}
}
return value;
}
export function enhanceBodyBackground() {
const bg = propertyFromStylesheet('#bg-enhanced.enhanced', 'background-image', true);
const overlay = propertyFromStylesheet('#bg-enhanced.enhanced::after', 'background-image', true);
const promises = [];
if (bg) {
promises.push(new Promise(resolve => {
const img = new Image();
img.onload = () => {
resolve();
};
// Set image source to whatever the url from css holds.
img.src = bg;
}));
}
if (overlay) {
promises.push(new Promise(resolve => {
const img = new Image();
img.onload = () => {
resolve();
};
// Set image source to whatever the url from css holds.
img.src = overlay;
}));
}
Promise.all(promises).then(() => {
window.document.getElementById('bg-enhanced').className += ' enhanced';
});
}
-2
View File
@@ -1,5 +1,3 @@
/*global process: true*/
const build = process.env.REACT_APP_KOPANO_BUILD || '0.0.0-no-proper-build';
export {
+4 -5
View File
@@ -342,7 +342,7 @@ module.exports = function(webpackEnv) {
formatter: require.resolve('react-dev-utils/eslintFormatter'),
eslintPath: require.resolve('eslint'),
resolvePluginsRelativeTo: __dirname,
},
loader: require.resolve('eslint-loader'),
},
@@ -375,7 +375,7 @@ module.exports = function(webpackEnv) {
customize: require.resolve(
'babel-preset-react-app/webpack-overrides'
),
plugins: [
[
require.resolve('babel-plugin-named-asset-import'),
@@ -417,7 +417,7 @@ module.exports = function(webpackEnv) {
cacheDirectory: true,
// See #6846 for context on why cacheCompression is disabled
cacheCompression: false,
// Babel sourcemaps are needed for debugging into node_modules
// code. Without the options below, debuggers like VSCode
// show incorrect code and set breakpoints on the wrong lines.
@@ -617,9 +617,8 @@ module.exports = function(webpackEnv) {
new WorkboxWebpackPlugin.GenerateSW({
clientsClaim: true,
exclude: [/\.map$/, /asset-manifest\.json$/],
importWorkboxFrom: 'cdn',
navigateFallback: publicUrl + '/index.html',
navigateFallbackBlacklist: [
navigateFallbackDenylist: [
// Exclude URLs starting with /_, as they're likely an API call
new RegExp('^/_'),
// Exclude any URLs whose last part seems to be a file extension
+4426 -3349
View File
File diff suppressed because it is too large Load Diff