Initial commit
This commit is contained in:
parent
22532b67ea
commit
518d381447
30
.dockerignore
Normal file
30
.dockerignore
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
/Dockerfile
|
||||||
|
/node_modules
|
||||||
|
/.github
|
||||||
|
/.vscode
|
||||||
|
/docs
|
||||||
|
/build
|
160
.github/workflows/ci.yaml
vendored
Normal file
160
.github/workflows/ci.yaml
vendored
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
name: ci
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.head_commit.author.name != 'actions'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2.1.3
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- uses: bahmutov/npm-install@v1
|
||||||
|
- run: yarn build
|
||||||
|
- run: npx keycloakify
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: standalone_keycloak_theme
|
||||||
|
path: build_keycloak/target/*keycloak-theme*.jar
|
||||||
|
- run: npx keycloakify --external-assets
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: keycloak_theme
|
||||||
|
path: build_keycloak/target/*keycloak-theme*.jar
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: build
|
||||||
|
path: build
|
||||||
|
|
||||||
|
check_if_version_upgraded:
|
||||||
|
name: Check if version upgrade
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
outputs:
|
||||||
|
from_version: ${{ steps.step1.outputs.from_version }}
|
||||||
|
to_version: ${{ steps.step1.outputs.to_version }}
|
||||||
|
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
|
||||||
|
steps:
|
||||||
|
- uses: garronej/ts-ci@v1.1.7
|
||||||
|
id: step1
|
||||||
|
with:
|
||||||
|
action_name: is_package_json_version_upgraded
|
||||||
|
|
||||||
|
github_pages:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- check_if_version_upgraded
|
||||||
|
- build
|
||||||
|
# We publish the the docker image only if it's a push on the default branch or if it's a PR from a
|
||||||
|
# branch (meaning not a PR from a fork). It would be more straightforward to test if secrets.DOCKERHUB_TOKEN is
|
||||||
|
# defined but GitHub Action don't allow it.
|
||||||
|
if: |
|
||||||
|
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
|
||||||
|
github.event_name == 'push' ||
|
||||||
|
github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: build
|
||||||
|
path: build
|
||||||
|
- uses: actions/setup-node@v2.1.3
|
||||||
|
with:
|
||||||
|
node-version: '15'
|
||||||
|
- run: echo $(node -e 'console.log(require("url").parse(require("./package.json").homepage).host)') > build/CNAME
|
||||||
|
- run: git remote set-url origin https://git:${GITHUB_TOKEN}@github.com/${{github.repository}}.git
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- run: npx -y -p gh-pages@3.1.0 gh-pages -d build -u "github-actions-bot <actions@github.com>"
|
||||||
|
|
||||||
|
docker:
|
||||||
|
needs:
|
||||||
|
- check_if_version_upgraded
|
||||||
|
- build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# We publish the the docker image only if it's a push on the default branch or if it's a PR from a
|
||||||
|
# branch (meaning not a PR from a fork). It would be more straightforward to test if secrets.DOCKERHUB_TOKEN is
|
||||||
|
# defined but GitHub Action don't allow it.
|
||||||
|
if: |
|
||||||
|
github.event_name == 'push' ||
|
||||||
|
github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: docker/setup-qemu-action@v1
|
||||||
|
- uses: docker/setup-buildx-action@v1
|
||||||
|
- uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Computing Docker image tags
|
||||||
|
id: step1
|
||||||
|
env:
|
||||||
|
IS_UPGRADED_VERSION: ${{ needs.check_if_version_upgraded.outputs.is_upgraded_version }}
|
||||||
|
TO_VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }}
|
||||||
|
run: |
|
||||||
|
OUT=$GITHUB_REPOSITORY:$(
|
||||||
|
[ "$GITHUB_EVENT_NAME" == "pull_request" ] &&
|
||||||
|
echo "$GITHUB_HEAD_REF" ||
|
||||||
|
echo "${GITHUB_REF#refs/*/}"
|
||||||
|
)
|
||||||
|
if [ "$IS_UPGRADED_VERSION" = "true" ]; then
|
||||||
|
OUT=$OUT,$GITHUB_REPOSITORY:$TO_VERSION,$GITHUB_REPOSITORY:latest
|
||||||
|
fi
|
||||||
|
OUT=$(echo "$OUT" | awk '{print tolower($0)}')
|
||||||
|
echo ::set-output name=docker_tags::$OUT
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: build
|
||||||
|
path: build
|
||||||
|
- run: tar -cvf build.tar ./build
|
||||||
|
- uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
context: .
|
||||||
|
tags: ${{ steps.step1.outputs.docker_tags }}
|
||||||
|
file: Dockerfile.ci
|
||||||
|
|
||||||
|
create_github_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- check_if_version_upgraded
|
||||||
|
# We create a release only if the version have been upgraded and we are on a default branch
|
||||||
|
# PR on the default branch can release beta but not real release
|
||||||
|
if: |
|
||||||
|
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
|
||||||
|
(
|
||||||
|
github.event_name == 'push' ||
|
||||||
|
needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
|
||||||
|
)
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: keycloak_theme
|
||||||
|
- run: mkdir jars
|
||||||
|
- run: mv *keycloak-theme*.jar jars/keycloak-theme.jar
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: standalone_keycloak_theme
|
||||||
|
- run: mv *keycloak-theme*.jar jars/standalone-keycloak-theme.jar
|
||||||
|
- uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
name: Release v${{ needs.check_if_version_upgraded.outputs.to_version }}
|
||||||
|
tag_name: v${{ needs.check_if_version_upgraded.outputs.to_version }}
|
||||||
|
target_commitish: ${{ github.head_ref || github.ref }}
|
||||||
|
generate_release_notes: true
|
||||||
|
files: |
|
||||||
|
jars/keycloak-theme.jar
|
||||||
|
jars/standalone-keycloak-theme.jar
|
||||||
|
draft: false
|
||||||
|
prerelease: ${{ needs.check_if_version_upgraded.outputs.is_release_beta == 'true' }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
46
.gitignore
vendored
Normal file
46
.gitignore
vendored
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules
|
||||||
|
jspm_packages
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
.vscode
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
/dist
|
||||||
|
|
||||||
|
/build_keycloak
|
||||||
|
/build
|
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# build environment
|
||||||
|
FROM node:14-alpine as build
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json yarn.lock ./
|
||||||
|
RUN yarn install --frozen-lockfile
|
||||||
|
COPY . .
|
||||||
|
RUN yarn build
|
||||||
|
|
||||||
|
# production environment
|
||||||
|
FROM nginx:stable-alpine
|
||||||
|
COPY --from=build /app/build /usr/share/nginx/html
|
||||||
|
COPY --from=build /app/nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
CMD nginx -g 'daemon off;'
|
21
Dockerfile.ci
Normal file
21
Dockerfile.ci
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# This is an alternative Dockerfile
|
||||||
|
# that aims to be used in the CI pipeline.
|
||||||
|
# In this version we assume that the app have been build (yarn build that generate ./build/)
|
||||||
|
# prior and archived into a build.tar file present in the context.
|
||||||
|
# We do do that because
|
||||||
|
# 1) We want to avoid building the app twice, one for the docker image and one for the theme .tar
|
||||||
|
# 2) If we use keycloakify --external-assets we have to generate the theme from the build/ directory
|
||||||
|
# that is going to be in production. (CRA generates hashes, every build is different, even if the code is the same)
|
||||||
|
|
||||||
|
# build environment
|
||||||
|
FROM alpine as build
|
||||||
|
WORKDIR /app
|
||||||
|
#We use ADD instead of COPY because build/ is in .dockerignore
|
||||||
|
ADD build.tar .
|
||||||
|
COPY nginx.conf .
|
||||||
|
|
||||||
|
# production environment (copy pasted from ./Dockerfile)
|
||||||
|
FROM nginx:stable-alpine
|
||||||
|
COPY --from=build /app/build /usr/share/nginx/html
|
||||||
|
COPY --from=build /app/nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
CMD nginx -g 'daemon off;'
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 GitHub user u/garronej
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
195
README.md
195
README.md
|
@ -1,2 +1,193 @@
|
||||||
# keycloakify-advanced-starter
|
<p align="center">
|
||||||
A starter and demo project for Keycloakify v6 - Component level customization.
|
<img src="https://github.com/garronej/keycloakify-starter/workflows/ci/badge.svg?branch=main">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
A starter/demo project for [Keycloakify](https://keycloakify.dev)
|
||||||
|
|
||||||
|
# ⚠️ Please read the two following notices ⚠️
|
||||||
|
|
||||||
|
> This starter is for **CSS-level customization**, if you want to customize the pages at
|
||||||
|
> **the component level** heads over to [keycloakify-advanced-starter](https://github.com/garronej/keycloakify-advanced-starter).
|
||||||
|
|
||||||
|
> If you are only looking to create a theme and don't care about integrating it into a preexisting React app there
|
||||||
|
> are a lot of things that you can remove from this starter. [Please read this](/standalone-keycloak-theme).
|
||||||
|
|
||||||
|
# Quick start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn install
|
||||||
|
yarn start # See the Hello World app
|
||||||
|
# Uncomment line 6 of src/KcApp/kcContext, reload https://localhost:3000
|
||||||
|
# You can now develop your Login pages.
|
||||||
|
|
||||||
|
# Think your theme is ready? Run
|
||||||
|
yarn keycloak
|
||||||
|
# Read the instruction printed on the console to see how to test
|
||||||
|
# your theme on a real Keycloak instance.
|
||||||
|
```
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
This repo constitutes an easily reusable CI setup for SPA React App that generates Keycloaks's theme
|
||||||
|
using [keycloakify](https://github.com/InseeFrLab/keycloakify).
|
||||||
|
|
||||||
|
# The CI workflow
|
||||||
|
|
||||||
|
- This CI is configured to both publish on [GitHub Pages](https://github.com/garronej/keycloakify-starter/blob/71baa789254f00bf521d40dc0a8db6925aa72942/.github/workflows/ci.yaml#L47-L65) and on [DockerHub](https://github.com/garronej/keycloakify-starter/blob/71baa789254f00bf521d40dc0a8db6925aa72942/.github/workflows/ci.yaml#L66-L111). In practice you probably want one
|
||||||
|
or the other but not both.
|
||||||
|
We deploy the demo app at [demo-app.keycloakify.dev](https://demo-app.keycloakify.dev) using GitHub page on the branch `gh-pages` (you have to enable it).
|
||||||
|
To configure your own domain name please refer to [this documentation](https://docs.gitlanding.dev/using-a-custom-domain-name).
|
||||||
|
- To release **don't create a tag manually**, the CI do it for you. Just update the `package.json`'s version field and push.
|
||||||
|
- The `.jar` files that bundle the Keycloak theme will be attached as an asset with every GitHub release. [Example](https://github.com/InseeFrLab/keycloakify-starter/releases/tag/v0.1.0). The permalink to download the latest version is: `https://github.com/USER/PROJECT/releases/latest/download/keycloak-theme.jar`.
|
||||||
|
For this demo repo it's [here](https://github.com/garronej/keycloakify-starter/releases/latest/download/keycloak-theme.jar)
|
||||||
|
- The CI publishes the app docker image on DockerHub. `<org>/<repo>:main` for each **commit** on `main`, `<org>/<repo>:<feature-branch-name>` for each **pull-request** on `main`
|
||||||
|
and when **releasing a new version**: `<org>/<repo>:latest` and `<org>/<repo>:X.Y.Z`
|
||||||
|
[See on DockerHub](https://hub.docker.com/r/garronej/keycloakify-starter/tags?page=1&ordering=last_updated)
|
||||||
|
|
||||||
|
![image](https://user-images.githubusercontent.com/6702424/187989551-9461fb46-f545-4e99-b20c-e0fe4a0f773d.png)
|
||||||
|
|
||||||
|
![image](https://user-images.githubusercontent.com/6702424/187988970-99c71326-5228-4d51-8a07-dab8113387f4.png)
|
||||||
|
|
||||||
|
If you want an example of an app that put that setup in production checkout onyxia-ui: [the repo](https://github.com/InseeFrLab/onyxia-ui), [the login](https://auth.lab.sspcloud.fr/auth/realms/sspcloud/protocol/openid-connect/auth?client_id=onyxia&redirect_uri=https%3A%2F%2Fonyxia.lab.sspcloud.fr), [the app](https://datalab.sspcloud.fr).
|
||||||
|
|
||||||
|
# Standalone vs `--external-assets`
|
||||||
|
|
||||||
|
The CI creates two jars
|
||||||
|
- `keycloak-theme.jar`: Generated with `npx keycloakify --external-assets`, the assets, located `static/**/*`, like for example
|
||||||
|
`static/js/main.<hash>.js` will be downloaded from `https://demo-app.keycloakify.dev/static/js/main.<hash>.js` (`demo-app.keycloakify.dev` is
|
||||||
|
specified in the `package.json`.
|
||||||
|
- `standalone-keycloak-theme.jar`: Generated with `npx keycloakify`, this theme is fully standalone, all assets will be served by the
|
||||||
|
Keycloak server, for example `static/js/main.<hash>.js` will be downloaded from an url like `http://<your keycloak url>/resources/xxxx/login/keycloakify-starter/build/static/js/main.<hash>.js`.
|
||||||
|
|
||||||
|
More info on the `--external-assets` build option [here](https://docs.keycloakify.dev/v/v6/build-options#external-assets).
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -f Dockerfile -t garronej/keycloakify-starter:test .
|
||||||
|
#OR (to reproduce how the image is built in the ci workflow):
|
||||||
|
yarn && yarn build && tar -cvf build.tar ./build && docker build -f Dockerfile.ci -t garronej/keycloakify-starter:test . && rm build.tar
|
||||||
|
|
||||||
|
docker run -it -dp 8083:80 garronej/keycloakify-starter:test
|
||||||
|
```
|
||||||
|
|
||||||
|
## DockerHub credentials
|
||||||
|
|
||||||
|
To enables the CI to publish on DockerHub on your behalf go to
|
||||||
|
repository `Settings` tab, then `Secrets` you will need to add two new secrets:
|
||||||
|
|
||||||
|
- `DOCKERHUB_TOKEN`, you Dockerhub authorization token.
|
||||||
|
- `DOCKERHUB_USERNAME`, Your Dockerhub username.
|
||||||
|
|
||||||
|
# Standalone keycloak theme
|
||||||
|
|
||||||
|
If you are only looking to create a keycloak theme, you can run theses few commands
|
||||||
|
after clicking ![image](https://user-images.githubusercontent.com/6702424/98155461-92395e80-1ed6-11eb-93b2-98c64453043f.png) to refactor the template
|
||||||
|
and remove unnecessary file.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -r src/App
|
||||||
|
rm src/KcApp/index.ts
|
||||||
|
mv src/KcApp/* src/
|
||||||
|
|
||||||
|
cat << EOF > src/index.tsx
|
||||||
|
import { createRoot } from "react-dom/client";
|
||||||
|
import { StrictMode, lazy, Suspense } from "react";
|
||||||
|
import { kcContext } from "./KcApp/kcContext";
|
||||||
|
|
||||||
|
const KcApp = lazy(() => import("./KcApp"));
|
||||||
|
|
||||||
|
if( kcContext === undefined ){
|
||||||
|
throw new Error(
|
||||||
|
"This app is a Keycloak theme" +
|
||||||
|
"It isn't meant to be deployed outside of Keycloak"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
createRoot(document.getElementById("root")!).render(
|
||||||
|
<StrictMode>
|
||||||
|
<KcApp kcContext={kcContext} />
|
||||||
|
</StrictMode>,
|
||||||
|
);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
rm .dockerignore Dockerfile Dockerfile.ci nginx.conf
|
||||||
|
|
||||||
|
cat << EOF > .github/workflows/ci.yaml
|
||||||
|
name: ci
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.head_commit.author.name != 'actions'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2.1.3
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- uses: bahmutov/npm-install@v1
|
||||||
|
- run: yarn build
|
||||||
|
- run: npx keycloakify
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: standalone_keycloak_theme
|
||||||
|
path: build_keycloak/target/*keycloak-theme*.jar
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: build
|
||||||
|
path: build
|
||||||
|
|
||||||
|
check_if_version_upgraded:
|
||||||
|
name: Check if version upgrade
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
outputs:
|
||||||
|
from_version: ${{ steps.step1.outputs.from_version }}
|
||||||
|
to_version: ${{ steps.step1.outputs.to_version }}
|
||||||
|
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
|
||||||
|
steps:
|
||||||
|
- uses: garronej/ts-ci@v1.1.7
|
||||||
|
id: step1
|
||||||
|
with:
|
||||||
|
action_name: is_package_json_version_upgraded
|
||||||
|
|
||||||
|
create_github_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- check_if_version_upgraded
|
||||||
|
# We create a release only if the version have been upgraded and we are on a default branch
|
||||||
|
# PR on the default branch can release beta but not real release
|
||||||
|
if: |
|
||||||
|
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
|
||||||
|
(
|
||||||
|
github.event_name == 'push' ||
|
||||||
|
needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
|
||||||
|
)
|
||||||
|
steps:
|
||||||
|
- run: mkdir jars
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: standalone_keycloak_theme
|
||||||
|
- run: mv *keycloak-theme*.jar jars/standalone-keycloak-theme.jar
|
||||||
|
- uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
name: Release v${{ needs.check_if_version_upgraded.outputs.to_version }}
|
||||||
|
tag_name: v${{ needs.check_if_version_upgraded.outputs.to_version }}
|
||||||
|
target_commitish: ${{ github.head_ref || github.ref }}
|
||||||
|
generate_release_notes: true
|
||||||
|
files: |
|
||||||
|
jars/standalone-keycloak-theme.jar
|
||||||
|
draft: false
|
||||||
|
prerelease: ${{ needs.check_if_version_upgraded.outputs.is_release_beta == 'true' }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
4
keycloak_email/html/email-test.ftl
Normal file
4
keycloak_email/html/email-test.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("emailTestBodyHtml",realmName))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
5
keycloak_email/html/email-update-confirmation.ftl
Normal file
5
keycloak_email/html/email-update-confirmation.ftl
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
${kcSanitize(msg("emailUpdateConfirmationBodyHtml",link, newEmail, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
|
||||||
|
</body>
|
||||||
|
</html>
|
4
keycloak_email/html/email-verification-with-code.ftl
Normal file
4
keycloak_email/html/email-verification-with-code.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("emailVerificationBodyCodeHtml",code))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/email-verification.ftl
Normal file
4
keycloak_email/html/email-verification.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("emailVerificationBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/event-login_error.ftl
Normal file
4
keycloak_email/html/event-login_error.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("eventLoginErrorBodyHtml",event.date,event.ipAddress))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/event-remove_totp.ftl
Normal file
4
keycloak_email/html/event-remove_totp.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/event-update_password.ftl
Normal file
4
keycloak_email/html/event-update_password.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/event-update_totp.ftl
Normal file
4
keycloak_email/html/event-update_totp.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
8
keycloak_email/html/executeActions.ftl
Normal file
8
keycloak_email/html/executeActions.ftl
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<#outputformat "plainText">
|
||||||
|
<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#sep></#items></#list></#if></#assign>
|
||||||
|
</#outputformat>
|
||||||
|
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("executeActionsBodyHtml",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration)))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/identity-provider-link.ftl
Normal file
4
keycloak_email/html/identity-provider-link.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("identityProviderLinkBodyHtml", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration)))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
4
keycloak_email/html/password-reset.ftl
Normal file
4
keycloak_email/html/password-reset.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#import "template.ftl" as layout>
|
||||||
|
<@layout.emailLayout>
|
||||||
|
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
|
||||||
|
</@layout.emailLayout>
|
7
keycloak_email/html/template.ftl
Normal file
7
keycloak_email/html/template.ftl
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<#macro emailLayout>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<#nested>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</#macro>
|
21
keycloak_email/messages/messages_ca.properties
Normal file
21
keycloak_email/messages/messages_ca.properties
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
emailVerificationSubject=Verificaci\u00F3 d''email
|
||||||
|
emailVerificationBody=Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.
|
||||||
|
emailVerificationBodyHtml=<p>Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.</p><p><a href=\"{0}\">{0}</a></p><p> Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.</p><p> Si tu no has creat aquest compte, simplement ignora aquest missatge.</p>
|
||||||
|
passwordResetSubject=Reinicia contrasenya
|
||||||
|
passwordResetBody=Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.
|
||||||
|
passwordResetBodyHtml=<p>Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.</p><p>Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.</p>
|
||||||
|
executeActionsSubject=Actualitza el teu compte
|
||||||
|
executeActionsBody=L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minutes.\n\nSi no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.
|
||||||
|
executeActionsBodyHtml=<p>L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enlla\u00E7 expirar\u00E0 en {1} minutes.</p><p>Si no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.</p>
|
||||||
|
eventLoginErrorSubject=Fallada en l''inici de sessi\u00F3
|
||||||
|
eventLoginErrorBody=S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
|
||||||
|
eventLoginErrorBodyHtml=<p>S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>
|
||||||
|
eventRemoveTotpSubject=Esborrat OTP
|
||||||
|
eventRemoveTotpBody=OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. </ P>
|
||||||
|
eventUpdatePasswordSubject=Actualitzaci\u00F3 de contrasenya
|
||||||
|
eventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>
|
||||||
|
eventUpdateTotpSubject=Actualitzaci\u00F3 de OTP
|
||||||
|
eventUpdateTotpBody=OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>
|
60
keycloak_email/messages/messages_cs.properties
Normal file
60
keycloak_email/messages/messages_cs.properties
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Ověření e-mailu
|
||||||
|
emailVerificationBody=Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \n\n{0}\n\nTento odkaz vyprší za {3}.\n\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.
|
||||||
|
emailVerificationBodyHtml=<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href="{0}">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {3}.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - testovací zpráva
|
||||||
|
emailTestBody=Toto je testovací zpráva
|
||||||
|
emailTestBodyHtml=<p>Toto je testovací zpráva </p>
|
||||||
|
identityProviderLinkSubject=Odkaz {0}
|
||||||
|
identityProviderLinkBody=Někdo chce propojit váš účet "{1}" s účtem "{0}" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \n\n{3}\n\nPlatnost tohoto odkazu je {5}.\n\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Někdo chce propojit váš účet <b>{1}</b> s účtem <b>{0}</b> uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty.</p><p><a href="{3}">Odkaz na propojení účtů.</a></p><p> Platnost tohoto odkazu je {5}. </p><p> Pokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.</p>
|
||||||
|
passwordResetSubject=Zapomenuté heslo
|
||||||
|
passwordResetBody=Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\n\n{0}\n\nPlatnost tohoto odkazu je {3}.\n\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.
|
||||||
|
passwordResetBodyHtml=<p>Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href="{0}">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {3}.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>
|
||||||
|
executeActionsSubject=Aktualizujte svůj účet
|
||||||
|
executeActionsBody=Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\n\n{0}\n\nPlatnost tohoto odkazu je {4}.\n\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.
|
||||||
|
executeActionsBodyHtml=<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href="{0}">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>
|
||||||
|
eventLoginErrorSubject=Chyba přihlášení
|
||||||
|
eventLoginErrorBody=Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
|
||||||
|
eventLoginErrorBodyHtml=<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
|
||||||
|
eventRemoveTotpSubject=Odebrat TOTP
|
||||||
|
eventRemoveTotpBody=V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
|
||||||
|
eventRemoveTotpBodyHtml=<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
|
||||||
|
eventUpdatePasswordSubject=Aktualizace hesla
|
||||||
|
eventUpdatePasswordBody=V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
|
||||||
|
eventUpdateTotpSubject=Aktualizace OTP
|
||||||
|
eventUpdateTotpBody=V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
|
||||||
|
eventUpdateTotpBodyHtml=<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Konfigurace OTP
|
||||||
|
requiredAction.terms_and_conditions=Smluvní podmínky
|
||||||
|
requiredAction.UPDATE_PASSWORD=Aktualizace hesla
|
||||||
|
requiredAction.UPDATE_PROFILE=Aktualizace profilu
|
||||||
|
requiredAction.VERIFY_EMAIL=Ověření e-mailu
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=sekund
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.2=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.3=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.4=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minut
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuta
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=hodin
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=hodina
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.2=hodiny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.3=hodiny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.4=hodiny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=dní
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=den
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.2=dny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.3=dny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.4=dny
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.</p><p><b>{0}</b></p>
|
||||||
|
|
47
keycloak_email/messages/messages_da.properties
Normal file
47
keycloak_email/messages/messages_da.properties
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# encoding: UTF-8
|
||||||
|
emailVerificationSubject=Verificer email
|
||||||
|
emailVerificationBody=Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse \n\n{0}\n\nDette link vil udløbe inden for {3}.\n\nHvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.
|
||||||
|
emailVerificationBodyHtml=<p>Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse</p><p><a href="{0}">Link til email verificering</a></p><p>Dette link vil udløbe inden for {3}.</p><p>Hvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP test besked
|
||||||
|
emailTestBody=Dette er en test besked
|
||||||
|
emailTestBodyHtml=<p>Dette er en test besked</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Nogen vil forbinde din "{1}" konto med "{0}" kontoen som er tilknyttet brugeren {2}. Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti\n\n{3}\n\nDette link vil udløbe efter {5}.\n\nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2} . Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti</p><p><a href="{3}">Bekræft</a></p><p>Dette link vil udløbe efter {5}.</p><p>nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
|
||||||
|
passwordResetSubject=Gendan adgangskode
|
||||||
|
passwordResetBody=Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.\n\n{0}\n\nDette link og kode vil udløbe efter {3}.\n\nHvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.
|
||||||
|
passwordResetBodyHtml=<p>Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.</p><p><a href="{0}">Nulstil adgangskode</a></p><p>Dette link og kode vil udløbe efter {3}.</p><p>Hvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.</p>
|
||||||
|
executeActionsSubject=Opdater din konto
|
||||||
|
executeActionsBody=Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.\n\n{0}\n\nDette link udløber efter {4}.\n\nHvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.
|
||||||
|
executeActionsBodyHtml=<p>Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.</p><p><a href="{0}">Opdater konto</a></p><p>Dette link udløber efter {4}.</p><p>Hvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.</p>
|
||||||
|
eventLoginErrorSubject=Logind fejl
|
||||||
|
eventLoginErrorBody=Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
|
||||||
|
eventLoginErrorBodyHtml=<p>Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
|
||||||
|
eventRemoveTotpSubject=Fjern OTP
|
||||||
|
eventRemoveTotpBody=OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
|
||||||
|
eventUpdatePasswordSubject=Opdater adgangskode
|
||||||
|
eventUpdatePasswordBody=Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
|
||||||
|
eventUpdateTotpSubject=Opdater OTP
|
||||||
|
eventUpdateTotpBody=OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Konfigurer OTP
|
||||||
|
requiredAction.terms_and_conditions=Vilkår og Betingelser
|
||||||
|
requiredAction.UPDATE_PASSWORD=Opdater Adgangskode
|
||||||
|
requiredAction.UPDATE_PROFILE=Opdater Profil
|
||||||
|
requiredAction.VERIFY_EMAIL=Verificer Email
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.seconds=sekunder
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.seconds.1=sekund
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.minutes=minutter
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.minutes.1=minut
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.hours=timer
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.hours.1=time
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.days=dage
|
||||||
|
forbindexpirationFormatter.timePeriodUnit.days.1=dag
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Verificer din email adresse ved at indtaste følgende kode.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Verificer din email adresse ved at indtaste følgende kode.</p><p><b>{0}</b></p>
|
43
keycloak_email/messages/messages_de.properties
Normal file
43
keycloak_email/messages/messages_de.properties
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
emailVerificationSubject=E-Mail verifizieren
|
||||||
|
emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.
|
||||||
|
emailVerificationBodyHtml=<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href="{0}">Link zur Best\u00E4tigung der E-Mail-Adresse</a></p><p>Dieser Link wird in {1} Minuten ablaufen.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.
|
||||||
|
identityProviderLinkBodyHtml=<p>Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{3}">Link zur Best\u00E4tigung der Kontoverkn\u00FCpfung</a></p><p>Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.</p>
|
||||||
|
passwordResetSubject=Passwort zur\u00FCcksetzen
|
||||||
|
passwordResetBody=Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.
|
||||||
|
passwordResetBodyHtml=<p>Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{0}">Link zum Zur\u00FCcksetzen von Anmeldeinformationen</a></p><p>Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.</p>
|
||||||
|
executeActionsSubject=Aktualisieren Sie Ihr Konto
|
||||||
|
executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.
|
||||||
|
executeActionsBodyHtml=<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href="{0}">Link zum Account-Update</a></p><p>Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.</p>
|
||||||
|
eventLoginErrorSubject=Fehlgeschlagene Anmeldung
|
||||||
|
eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
||||||
|
eventLoginErrorBodyHtml=<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
|
||||||
|
eventRemoveTotpSubject=OTP Entfernt
|
||||||
|
eventRemoveTotpBody=OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
|
||||||
|
eventUpdatePasswordSubject=Passwort Aktualisiert
|
||||||
|
eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
|
||||||
|
eventUpdateTotpSubject=OTP Aktualisiert
|
||||||
|
eventUpdateTotpBody=OTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren
|
||||||
|
requiredAction.terms_and_conditions=Bedingungen und Konditionen
|
||||||
|
requiredAction.UPDATE_PASSWORD=Passwort aktualisieren
|
||||||
|
requiredAction.UPDATE_PROFILE=Profil aktualisieren
|
||||||
|
requiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=Sekunden
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=Sekunde
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=Minuten
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=Minute
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=Stunden
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=Stunde
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=Tage
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=Tag
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.</p><p><b>{0}</b></p>
|
55
keycloak_email/messages/messages_en.properties
Normal file
55
keycloak_email/messages/messages_en.properties
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
emailVerificationSubject=Verify email
|
||||||
|
emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {3}.\n\nIf you didn''t create this account, just ignore this message.
|
||||||
|
emailVerificationBodyHtml=<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href="{0}">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn''t create this account, just ignore this message.</p>
|
||||||
|
emailUpdateConfirmationSubject=Verify new email
|
||||||
|
emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
|
||||||
|
emailUpdateConfirmationBodyHtml=<p>To update your {2} account with email address {1}, click the link below</p><p><a href="{0}">{0}</a></p><p>This link will expire within {3}.</p><p>If you don''t want to proceed with this modification, just ignore this message.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP test message
|
||||||
|
emailTestBody=This is a test message
|
||||||
|
emailTestBodyHtml=<p>This is a test message</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2}. If this was you, click the link below to link accounts</p><p><a href="{3}">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>
|
||||||
|
passwordResetSubject=Reset password
|
||||||
|
passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed.
|
||||||
|
passwordResetBodyHtml=<p>Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.</p><p><a href="{0}">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don''t want to reset your credentials, just ignore this message and nothing will be changed.</p>
|
||||||
|
executeActionsSubject=Update Your Account
|
||||||
|
executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
|
||||||
|
executeActionsBodyHtml=<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href="{0}">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>
|
||||||
|
eventLoginErrorSubject=Login error
|
||||||
|
eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
|
||||||
|
eventLoginErrorBodyHtml=<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>
|
||||||
|
eventRemoveTotpSubject=Remove OTP
|
||||||
|
eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>
|
||||||
|
eventUpdatePasswordSubject=Update password
|
||||||
|
eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>
|
||||||
|
eventUpdateTotpSubject=Update OTP
|
||||||
|
eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Configure OTP
|
||||||
|
requiredAction.terms_and_conditions=Terms and Conditions
|
||||||
|
requiredAction.UPDATE_PASSWORD=Update Password
|
||||||
|
requiredAction.UPDATE_PROFILE=Update Profile
|
||||||
|
requiredAction.VERIFY_EMAIL=Verify Email
|
||||||
|
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=seconds
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=second
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minutes
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minute
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=hours
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=hour
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=days
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=day
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Please verify your email address by entering in the following code.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>
|
||||||
|
|
21
keycloak_email/messages/messages_es.properties
Normal file
21
keycloak_email/messages/messages_es.properties
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
emailVerificationSubject=Verificaci\u00F3n de email
|
||||||
|
emailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.
|
||||||
|
emailVerificationBodyHtml=<p>Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.</p><p><a href=\"{0}\">Enlace de verficaci\u00F3n de direcci\u00F3n de email</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.</p>
|
||||||
|
passwordResetSubject=Reiniciar contrase\u00F1a
|
||||||
|
passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.
|
||||||
|
passwordResetBodyHtml=<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.</p>
|
||||||
|
executeActionsSubject=Actualiza tu cuenta
|
||||||
|
executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.
|
||||||
|
executeActionsBodyHtml=<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.</p>
|
||||||
|
eventLoginErrorSubject=Fallo en el inicio de sesi\u00F3n
|
||||||
|
eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
|
||||||
|
eventLoginErrorBodyHtml=<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
|
||||||
|
eventRemoveTotpSubject=Borrado OTP
|
||||||
|
eventRemoveTotpBody=OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
|
||||||
|
eventUpdatePasswordSubject=Actualizaci\u00F3n de contrase\u00F1a
|
||||||
|
eventUpdatePasswordBody=Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
|
||||||
|
eventUpdateTotpSubject=Actualizaci\u00F3n de OTP
|
||||||
|
eventUpdateTotpBody=OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
|
46
keycloak_email/messages/messages_fi.properties
Normal file
46
keycloak_email/messages/messages_fi.properties
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# encoding: UTF-8
|
||||||
|
emailVerificationSubject=Vahvista sähköposti
|
||||||
|
emailVerificationBody=Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi\n\n{0}\n\nLinkin vanhenemisaika: {3}.\n\nJos et luonut tätä tiliä, jätä viesti huomiotta.
|
||||||
|
emailVerificationBodyHtml=<p>Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi</p><p><a href="{0}">Linkki vahvistamiseen</a></p><p>Linkin vanhenemisaika: {3}.</p><p>Jos et luonut tätä tiliä, jätä viesti huomiotta.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP testiviesti
|
||||||
|
emailTestBody=Tämä on testiviesti
|
||||||
|
emailTestBodyHtml=<p>Tämä on testiviesti</p>
|
||||||
|
identityProviderLinkSubject=Linkki {0}
|
||||||
|
identityProviderLinkBody=Saimme pyynnön linkittää "{1}"-tilin "{0}"-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi\n\n{3}\n\nLinkin vanhenemisaika: {5}.\n\nJos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.
|
||||||
|
identityProviderLinkBodyHtml=<p>Saimme pyynnön linkittää <b>{1}</b>-tilin <b>{0}</b>-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi</p><p><a href="{3}">Vahvista tilien linkitys</a></p><p>Linkin vanhenemisaika: {5}.</p><p>Jos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.</p>
|
||||||
|
passwordResetSubject=Salasanan nollaus
|
||||||
|
passwordResetBody=Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:\n\n{0}\n\nLinkin vanhenemisaika: {3} .\n\nJos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.
|
||||||
|
passwordResetBodyHtml=<p>Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:</p><p><a href="{0}">Linkki salasanan vaihtoon</a></p><p>Linkin vanhenemisaika: <strong>{3}</strong>.</p><p>Jos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.</p>
|
||||||
|
executeActionsSubject=Päivitä tilisi
|
||||||
|
executeActionsBody=Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.\n\n{0}\n\nLinkin vanhenemisaika: {4}.\n\nJos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.
|
||||||
|
executeActionsBodyHtml=<p>Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.</p><p><a href="{0}">Linkki tilin päivittämiseen</a></p><p>Linkin vanhenemisaika: {4}.</p><p>Jos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.</p>
|
||||||
|
eventLoginErrorSubject=Kirjautuminen epäonnistui
|
||||||
|
eventLoginErrorBody=Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.
|
||||||
|
eventLoginErrorBodyHtml=<p>Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.</p>
|
||||||
|
eventRemoveTotpSubject=Poista OTP
|
||||||
|
eventRemoveTotpBody=OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
|
||||||
|
eventUpdatePasswordSubject=Päivitä salasana
|
||||||
|
eventUpdatePasswordBody=Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan..
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
|
||||||
|
eventUpdateTotpSubject=Päivitä OTP
|
||||||
|
eventUpdateTotpBody=OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
|
||||||
|
requiredAction.CONFIGURE_TOTP=Konfiguroi OTP
|
||||||
|
requiredAction.terms_and_conditions=Käyttöehdot
|
||||||
|
requiredAction.UPDATE_PASSWORD=Päivitä salasana
|
||||||
|
requiredAction.UPDATE_PROFILE=Päivitä profiili
|
||||||
|
requiredAction.VERIFY_EMAIL=Vahvista sähköposti
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=sekuntia
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunti
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minuuttia
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuutti
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=tuntia
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=tunti
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=päivää
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=päivä
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.</p><p><b>{0}</b></p>
|
46
keycloak_email/messages/messages_fr.properties
Normal file
46
keycloak_email/messages/messages_fr.properties
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
emailVerificationSubject=V\u00e9rification du courriel
|
||||||
|
emailVerificationBody=Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
|
||||||
|
emailVerificationBodyHtml=<p>Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
|
||||||
|
emailUpdateConfirmationSubject=V\u00e9rification du nouveau courriel
|
||||||
|
emailUpdateConfirmationBody=Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
|
||||||
|
emailUpdateConfirmationBodyHtml=<p>Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous</p><p><a href="{0}">{0}</a></p><p>Ce lien expirera dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
|
||||||
|
identityProviderLinkSubject=Lien {0}
|
||||||
|
identityProviderLinkBody=Quelqu''un souhaite lier votre compte "{1}" au compte "{0}" de l''utilisateur {2} . Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour lier les comptes\n\n{3}\n\nCe lien expire dans {5}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. Si vous liez les comptes, vous pourrez vous connecter \u00e0 {1} via {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Quelqu''un souhaite lier votre compte <b>{1}</b> au compte <b>{0}</b> de l''utilisateur {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour lier les comptes</p><p><a href="{3}">Lien pour confirmer la liaison des comptes</a></p><p>Ce lien expire dans {5}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. Si vous liez les comptes, vous pourrez vous connecter \u00e0 {1} via {0}.</p>
|
||||||
|
passwordResetSubject=R\u00e9initialiser le mot de passe
|
||||||
|
passwordResetBody=Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.
|
||||||
|
passwordResetBodyHtml=<p>Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.</p><p><a href="{0}">Lien pour r\u00e9initialiser votre mot de passe</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.</p>
|
||||||
|
executeActionsSubject=Mettre \u00e0 jour votre compte
|
||||||
|
executeActionsBody=Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2} pour r\u00e9aliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {4}.\n\nSi vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.
|
||||||
|
executeActionsBodyHtml=<p>Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2} pour r\u00e9aliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {4}.</p><p>Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.</p>
|
||||||
|
eventLoginErrorSubject=Erreur de connexion
|
||||||
|
eventLoginErrorBody=Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
|
||||||
|
eventLoginErrorBodyHtml=<p>Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
|
||||||
|
eventRemoveTotpSubject=Suppression du OTP
|
||||||
|
eventRemoveTotpBody=Le OTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
|
||||||
|
eventRemoveTotpBodyHtml=<p>Le OTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
|
||||||
|
eventUpdatePasswordSubject=Mise \u00e0 jour du mot de passe
|
||||||
|
eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
|
||||||
|
eventUpdateTotpSubject=Mise \u00e0 jour du OTP
|
||||||
|
eventUpdateTotpBody=Le OTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
|
||||||
|
eventUpdateTotpBodyHtml=<p>Le OTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Configurer un OTP
|
||||||
|
requiredAction.terms_and_conditions=Conditions g\u00e9n\u00e9rale d''utilisation
|
||||||
|
requiredAction.UPDATE_PASSWORD=Mise \u00e0 jour du mot de passe
|
||||||
|
requiredAction.UPDATE_PROFILE=Mise \u00e0 jour du profile
|
||||||
|
requiredAction.VERIFY_EMAIL=V\u00e9rification de l''adresse courriel
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=secondes
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=seconde
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minutes
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minute
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=heures
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=heure
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=jours
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=jour
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Veuillez v\u00e9rifier votre adresse de courriel en saisissant le code suivant.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Veuillez v\u00e9rifier votre adresse de courriel en saisissant le code suivant.</p><p><b>{0}</b></p>
|
47
keycloak_email/messages/messages_hu.properties
Normal file
47
keycloak_email/messages/messages_hu.properties
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Email cím megerősítése
|
||||||
|
emailVerificationBody=Ezzel az email címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az email címet.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön hozta létre a felhasználói fiókot, akkor kérem hagyja figyelmen kívül ezt az üzenetet.
|
||||||
|
emailVerificationBodyHtml=<p>Ezzel az email címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az email címet.</p><p><a href="{0}">Hivatkozás a fiók és az email cím megerősítéséhez</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön hozta létre a felhasználói fiókot, akkor kérem hagyja figyelmen kívül ezt az üzenetet.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP teszt üzenet
|
||||||
|
emailTestBody=Ez egy KEYCLOAK teszt üzenet.
|
||||||
|
emailTestBodyHtml=<p>Ez egy KEYCLOAK teszt üzenet.</p>
|
||||||
|
identityProviderLinkSubject={0} összekötés
|
||||||
|
identityProviderLinkBody=Valaki össze kívánja kötni az Ön "{1}" tartományi fiókját a(z) "{0}" személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem kattintson a lenti hivatkozásra, hogy összekösse fiókjait.\n\n{3}\n\nA hivatkozás érvényét veszti {5} múlva.\n\nHa nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem hagyja figyelmen kívül ezt az üzenetet.\n\nHa összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.
|
||||||
|
identityProviderLinkBodyHtml=<p>Valaki össze kívánja kötni az Ön <b>{1}</b> tartomány fiókját a(z) <b>{0}</b> személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem kattintson a lenti hivatkozásra, hogy összekösse fiókjait.</p><p><a href="{3}">Hivatkozás a fiók összekötés megerősítéshez</a></p><p>A hivatkozás érvényét veszti {5} múlva.</p><p>Ha nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem hagyja figyelmen kívül ezt az üzenetet.</p><p>Ha összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.</p>
|
||||||
|
passwordResetSubject=Jelszó visszaállítás
|
||||||
|
passwordResetBody=Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem kattintson a lenti hivatkozásra a jelszava megváltoztatásához.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön kérte a jelszó visszaállítást, akkor kérem hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.
|
||||||
|
passwordResetBodyHtml=<p>Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem kattintson a lenti hivatkozásra a jelszava megváltoztatásához.</p><p><a href="{0}">Hivatkozás a jelszó visszaállításhoz</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön kérte a jelszó visszaállítást, akkor kérem hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.</p>
|
||||||
|
executeActionsSubject=Felhasználói fiók adatok módosítása
|
||||||
|
executeActionsBody=Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.\n\n{0}\n\nA hivatkozás érvényét veszti {4} múlva.\n\nHa nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.
|
||||||
|
executeActionsBodyHtml=<p>Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.</p><p><a href="{0}">Hivatkozás a felhasználói fiók adatok módosításához</a></p><p>A hivatkozás érvényét veszti {4} múlva.</p><p>Ha nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.</p>
|
||||||
|
eventLoginErrorSubject=Belépési hiba
|
||||||
|
eventLoginErrorBody=Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön próbált meg belépni.
|
||||||
|
eventLoginErrorBodyHtml=<p>Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön próbált meg belépni.</p>
|
||||||
|
eventRemoveTotpSubject=Egyszer használatos jelszó (OTP) eltávolítása
|
||||||
|
eventRemoveTotpBody=Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP eltávolítását.
|
||||||
|
eventRemoveTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP eltávolítását.</p>
|
||||||
|
eventUpdatePasswordSubject=Jelszó csere
|
||||||
|
eventUpdatePasswordBody=Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte a jelszó cserét.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte a jelszó cserét.</p>
|
||||||
|
eventUpdateTotpSubject=Egyszer használatos jelszó (OTP) csere
|
||||||
|
eventUpdateTotpBody=Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP beállítások módosítását.
|
||||||
|
eventUpdateTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP beállítások módosítását.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Egyszer használatos jelszó (OTP) beállítása
|
||||||
|
requiredAction.terms_and_conditions=Felhasználási feltételek
|
||||||
|
requiredAction.UPDATE_PASSWORD=Jelszó csere
|
||||||
|
requiredAction.UPDATE_PROFILE=Fiók adatok módosítása
|
||||||
|
requiredAction.VERIFY_EMAIL=Email cím megerősítése
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=másodperc
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=másodperc
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=perc
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=perc
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=óra
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=óra
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=nap
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=nap
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Kérem erősítse meg az email címét a következő kód megadásával.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Kérem erősítse meg az email címét a következő kód megadásával.</p><p><b>{0}</b></p>
|
50
keycloak_email/messages/messages_it.properties
Normal file
50
keycloak_email/messages/messages_it.properties
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
emailVerificationSubject=Verifica l''email
|
||||||
|
emailVerificationBody=Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadr\u00e0 in {3}.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio.
|
||||||
|
emailVerificationBodyHtml=<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href="{0}">Link per verificare l''indirizzo email</a></p><p>Questo link scadr\u00e0 in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - messaggio di test SMTP
|
||||||
|
emailTestBody=Questo \u00e8 un messaggio di test
|
||||||
|
emailTestBodyHtml=<p>Questo \u00e8 un messaggio di test</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Qualcuno vuole associare il tuo account "{1}" con l''account "{0}" dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\n\n{3}\n\nQuesto link scadr\u00e0 in {5}.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l''account <b>{0}</b> dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href="{3}">{3}</a></p><p>Questo link scadr\u00e0 in {5}.</p><p>Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>
|
||||||
|
passwordResetSubject=Reimposta la password
|
||||||
|
passwordResetBody=Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {3}.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.
|
||||||
|
passwordResetBodyHtml=<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href="{0}">{0}</a></p><p>Questo link scadr\u00e0 in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.</p>
|
||||||
|
executeActionsSubject=Aggiorna il tuo account
|
||||||
|
executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadr\u00e0 in {4}.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.
|
||||||
|
executeActionsBodyHtml=<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href="{0}">Link to account update</a></p><p>Questo link scadr\u00e0 in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.</p>
|
||||||
|
eventLoginErrorSubject=Errore di accesso
|
||||||
|
eventLoginErrorBody=\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
|
||||||
|
eventLoginErrorBodyHtml=<p>\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
|
||||||
|
eventRemoveTotpSubject=Rimozione OTP (password temporanea valida una volta sola)
|
||||||
|
eventRemoveTotpBody=La OTP (password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
|
||||||
|
eventRemoveTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
|
||||||
|
eventUpdatePasswordSubject=Aggiornamento password
|
||||||
|
eventUpdatePasswordBody=La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
|
||||||
|
eventUpdateTotpSubject=Aggiornamento OTP (password temporanea valida una volta sola)
|
||||||
|
eventUpdateTotpBody=La OTP (password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
|
||||||
|
eventUpdateTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Configurazione OTP
|
||||||
|
requiredAction.terms_and_conditions=Termini e condizioni
|
||||||
|
requiredAction.UPDATE_PASSWORD=Aggiornamento password
|
||||||
|
requiredAction.UPDATE_PROFILE=Aggiornamento profilo
|
||||||
|
requiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=secondi
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=secondo
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minuti
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuto
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=ore
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=ora
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=giorni
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=giorno
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>
|
52
keycloak_email/messages/messages_ja.properties
Normal file
52
keycloak_email/messages/messages_ja.properties
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Eメールの確認
|
||||||
|
emailVerificationBody=このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。
|
||||||
|
emailVerificationBodyHtml=<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href="{0}">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTPテストメッセージ
|
||||||
|
emailTestBody=これはテストメッセージです
|
||||||
|
emailTestBodyHtml=<p>これはテストメッセージです</p>
|
||||||
|
identityProviderLinkSubject=リンク {0}
|
||||||
|
identityProviderLinkBody=あなたの"{1}"アカウントと{2}ユーザーの"{0}"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは{5}だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。
|
||||||
|
identityProviderLinkBodyHtml=<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href="{3}">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>
|
||||||
|
passwordResetSubject=パスワードのリセット
|
||||||
|
passwordResetBody=あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。
|
||||||
|
passwordResetBodyHtml=<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href="{0}">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>
|
||||||
|
executeActionsSubject=アカウントの更新
|
||||||
|
executeActionsBody=次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは{4}だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。
|
||||||
|
executeActionsBodyHtml=<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href="{0}">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>
|
||||||
|
eventLoginErrorSubject=ログインエラー
|
||||||
|
eventLoginErrorBody={0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。
|
||||||
|
eventLoginErrorBodyHtml=<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>
|
||||||
|
eventRemoveTotpSubject=OTPの削除
|
||||||
|
eventRemoveTotpBody={0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。
|
||||||
|
eventRemoveTotpBodyHtml=<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>
|
||||||
|
eventUpdatePasswordSubject=パスワードの更新
|
||||||
|
eventUpdatePasswordBody={0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。
|
||||||
|
eventUpdatePasswordBodyHtml=<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>
|
||||||
|
eventUpdateTotpSubject=OTPの更新
|
||||||
|
eventUpdateTotpBody={0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。
|
||||||
|
eventUpdateTotpBodyHtml=<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=OTPの設定
|
||||||
|
requiredAction.terms_and_conditions=利用規約
|
||||||
|
requiredAction.UPDATE_PASSWORD=パスワードの更新
|
||||||
|
requiredAction.UPDATE_PROFILE=プロファイルの更新
|
||||||
|
requiredAction.VERIFY_EMAIL=Eメールの確認
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=秒
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=秒
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=分
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=分
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=時間
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=時間
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=日
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=日
|
||||||
|
|
||||||
|
emailVerificationBodyCode=次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>
|
||||||
|
|
25
keycloak_email/messages/messages_lt.properties
Normal file
25
keycloak_email/messages/messages_lt.properties
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=El. pašto patvirtinimas
|
||||||
|
emailVerificationBody=Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.
|
||||||
|
emailVerificationBodyHtml=<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>
|
||||||
|
identityProviderLinkSubject=Sąsaja {0}
|
||||||
|
identityProviderLinkBody=Kažas pageidauja susieti Jūsų "{1}" paskyrą su "{0}" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\n\n{3}\n\nŠi nuoroda galioja {4} min.\n\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT"{3}">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>
|
||||||
|
passwordResetSubject=Slaptažodžio atkūrimas
|
||||||
|
passwordResetBody=Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\n\n{0}\n\nŠi nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
|
||||||
|
passwordResetBodyHtml=<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
|
||||||
|
executeActionsSubject=Atnaujinkite savo paskyrą
|
||||||
|
executeActionsBody=Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
|
||||||
|
executeActionsBodyHtml=<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
|
||||||
|
eventLoginErrorSubject=Nesėkmingas bandymas prisijungti prie jūsų paskyros
|
||||||
|
eventLoginErrorBody=Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi
|
||||||
|
eventLoginErrorBodyHtml=<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>
|
||||||
|
eventRemoveTotpSubject=OTP pašalinimas
|
||||||
|
eventRemoveTotpBody=Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
|
||||||
|
eventRemoveTotpBodyHtml=<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>
|
||||||
|
eventUpdatePasswordSubject=Slaptažodžio atnaujinimas
|
||||||
|
eventUpdatePasswordBody={1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi
|
||||||
|
eventUpdatePasswordBodyHtml=<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>
|
||||||
|
eventUpdateTotpSubject=OTP atnaujinimas
|
||||||
|
eventUpdateTotpBody=OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>
|
38
keycloak_email/messages/messages_nl.properties
Normal file
38
keycloak_email/messages/messages_nl.properties
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
emailVerificationSubject=Bevestig e-mailadres
|
||||||
|
emailVerificationBody=Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \n\n{0}\n\nDeze koppeling zal binnen {3} vervallen.\n\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.
|
||||||
|
emailVerificationBodyHtml=<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href="{0}">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP testbericht
|
||||||
|
emailTestBody=Dit is een testbericht
|
||||||
|
emailTestBodyHtml=<p>Dit is een testbericht</p>
|
||||||
|
identityProviderLinkSubject=Koppel {0}
|
||||||
|
identityProviderLinkBody=Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\n\n{3}\n\nDeze link zal over {5} vervallen.\n\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href="{3}">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>
|
||||||
|
passwordResetSubject=Wijzig wachtwoord
|
||||||
|
passwordResetBody=Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\n\n{0}\n\nDe link en de code zullen binnen {3} vervallen.\n\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.
|
||||||
|
passwordResetBodyHtml=<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href="{0}">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>
|
||||||
|
executeActionsSubject=Wijzig uw account
|
||||||
|
executeActionsBody=Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \n\n{0}\n\nDeze link zal over {4} vervallen. \n\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.
|
||||||
|
executeActionsBodyHtml=<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href="{0}">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>
|
||||||
|
eventLoginErrorSubject=Inlogfout
|
||||||
|
eventLoginErrorBody=Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.
|
||||||
|
eventLoginErrorBodyHtml=<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>
|
||||||
|
eventRemoveTotpSubject=OTP verwijderd
|
||||||
|
eventRemoveTotpBody=OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
|
||||||
|
eventUpdatePasswordSubject=Wachtwoord gewijzigd
|
||||||
|
eventUpdatePasswordBody=Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
|
||||||
|
eventUpdateTotpSubject=OTP gewijzigd
|
||||||
|
eventUpdateTotpBody=OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
|
||||||
|
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=seconden
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=seconde
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minuten
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuut
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=uur
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=uur
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=dagen
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=dag
|
24
keycloak_email/messages/messages_no.properties
Normal file
24
keycloak_email/messages/messages_no.properties
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
emailVerificationSubject=Bekreft e-postadresse
|
||||||
|
emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.
|
||||||
|
emailVerificationBodyHtml=<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>
|
||||||
|
identityProviderLinkSubject=Lenke {0}
|
||||||
|
identityProviderLinkBody=Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.</p><p><a href="{3}">{3}</a></p><p>Denne lenken vil utl\u00F8pe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>
|
||||||
|
passwordResetSubject=Tilbakestill passord
|
||||||
|
passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.
|
||||||
|
passwordResetBodyHtml=<p>Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>
|
||||||
|
executeActionsSubject=Oppdater kontoen din
|
||||||
|
executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.
|
||||||
|
executeActionsBodyHtml=<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>
|
||||||
|
eventLoginErrorSubject=Innlogging feilet
|
||||||
|
eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||||
|
eventLoginErrorBodyHtml=<p>Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
|
||||||
|
eventRemoveTotpSubject=Fjern engangskode
|
||||||
|
eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||||
|
eventRemoveTotpBodyHtml=<p>Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
|
||||||
|
eventUpdatePasswordSubject=Oppdater passord
|
||||||
|
eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
|
||||||
|
eventUpdateTotpSubject=Oppdater engangskode
|
||||||
|
eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
|
||||||
|
eventUpdateTotpBodyHtml=<p>Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
|
56
keycloak_email/messages/messages_pl.properties
Normal file
56
keycloak_email/messages/messages_pl.properties
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# encoding: UTF-8
|
||||||
|
emailVerificationSubject=Zweryfikuj email
|
||||||
|
emailVerificationBody=Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij poniższy link, aby zweryfikować swój adres e-mail \n\n{0}\n\nLink ten wygaśnie w ciągu {3}.\n\nJeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.
|
||||||
|
emailVerificationBodyHtml=<p>Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij <a href="{0}">ten link</a> aby zweryfikować swój adres e-mail</p><p>Link ten wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - wiadomość testowa SMTP
|
||||||
|
emailTestBody=To jest wiadomość testowa
|
||||||
|
emailTestBodyHtml=<p>To jest wiadomość testowa</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Ktoś chce połączyć Twoje konto "{1}" z kontem "{0}" użytkownika {2}. Jeśli to Ty, kliknij poniższy link by połączyć konta\n\n{3}\n\nTen link wygaśnie w ciągu {5}.\n\nJeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij <a href="{3}">ten link</a> by połączyć konta.</p><p>Ten link wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.</p>
|
||||||
|
passwordResetSubject=Zresetuj hasło
|
||||||
|
passwordResetBody=Ktoś właśnie poprosił o zmianę danych logowania Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.\n\n{0}\n\nTen link i kod stracą ważność w ciągu {3}.\n\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.
|
||||||
|
passwordResetBodyHtml=<p>Ktoś właśnie poprosił o zmianę poświadczeń Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.</p><p><a href="{0}">Link do resetowania poświadczeń</a></p><p>Ten link wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
|
||||||
|
executeActionsSubject=Zaktualizuj swoje konto
|
||||||
|
executeActionsBody=Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy link, aby rozpocząć ten proces.\n\n{0}\n\nTen link wygaśnie w ciągu {4}.\n\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.
|
||||||
|
executeActionsBodyHtml=<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij <a href="{0}">ten link</a>, aby rozpocząć proces.</p><p>Link ten wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
|
||||||
|
eventLoginErrorSubject=Błąd logowania
|
||||||
|
eventLoginErrorBody=Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
|
||||||
|
eventLoginErrorBodyHtml=<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
|
||||||
|
eventRemoveTotpSubject=Usuń hasło jednorazowe (OTP)
|
||||||
|
eventRemoveTotpBody=Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
|
||||||
|
eventRemoveTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
|
||||||
|
eventUpdatePasswordSubject=Aktualizuj hasło
|
||||||
|
eventUpdatePasswordBody=Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
|
||||||
|
eventUpdateTotpSubject=Aktualizuj hasło jednorazowe (OTP)
|
||||||
|
eventUpdateTotpBody=Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
|
||||||
|
eventUpdateTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Konfiguracja hasła jednorazowego (OTP)
|
||||||
|
requiredAction.terms_and_conditions=Regulamin
|
||||||
|
requiredAction.UPDATE_PASSWORD=Aktualizacja hasła
|
||||||
|
requiredAction.UPDATE_PROFILE=Aktualizacja profilu
|
||||||
|
requiredAction.VERIFY_EMAIL=Weryfikacja adresu e-mail
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=sekund
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.2=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.3=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.4=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minut
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuta
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=godzin
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=godzina
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.2=godziny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.3=godziny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.4=godziny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=dni
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=dzień
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>
|
51
keycloak_email/messages/messages_pt_BR.properties
Normal file
51
keycloak_email/messages/messages_pt_BR.properties
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
emailVerificationSubject=Verifica\u00E7\u00E3o de endere\u00e7o de e-mail
|
||||||
|
emailVerificationBody=Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email.\n\n{0}\n\nEste link ir\u00E1 expirar dentro de {3}.\n\nSe n\u00E3o foi voc\u00EA quem criou esta conta, basta ignorar esta mensagem.
|
||||||
|
emailVerificationBodyHtml=<p>Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email.</p><p><a href="{0}">Link para verifica\u00e7\u00e3o de endere\u00e7o de e-mail</a></p><p>Este link ir\u00E1 expirar dentro de {3}.</p><p>Se n\u00E3o foi voc\u00EA quem criou esta conta, basta ignorar esta mensagem.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - Mensagem de teste SMTP
|
||||||
|
emailTestBody=Esta \u00E9 uma mensagem de teste
|
||||||
|
emailTestBodyHtml=<p>Esta \u00E9 uma mensagem de teste</p>
|
||||||
|
identityProviderLinkSubject=Vincular {0}
|
||||||
|
identityProviderLinkBody=Algu\u00E9m quer vincular a sua conta "{1}" com a conta "{0}" do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link ir\u00E1 expirar em {5}.\n\nSe voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} fazendo login em {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Algu\u00E9m quer vincular a sua conta <b>{1}</b> com a conta <b>{0}</b> do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.</p><p><a href="{3}">Link para confirmar vincula\u00e7\u00e3o de contas</a></p><p>Este link ir\u00E1 expirar em {5}.</p><p>Se voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} fazendo login em {0}.</p>
|
||||||
|
passwordResetSubject=Redefini\u00E7\u00E3o de senha
|
||||||
|
passwordResetBody=Algu\u00E9m solicitou uma altera\u00E7\u00E3o de senha da sua conta {2}. Se foi voc\u00EA, clique no link abaixo para redefini-la.\n\n{0}\n\nEste link e c\u00F3digo expiram em {3}.\n\nSe voc\u00EA n\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\u00E1 alterado.
|
||||||
|
passwordResetBodyHtml=<p>Algu\u00E9m solicitou uma altera\u00E7\u00E3o de senha da sua conta {2}. Se foi voc\u00EA, clique no link abaixo para redefini-la.</p><p><a href="{0}">Link para redefinir a senha</a></p><p>Este link ir\u00E1 expirar em {3}.</p><p>Se voc\u00EA n\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\u00E1 alterado.</p>
|
||||||
|
executeActionsSubject=Atualiza\u00E7\u00E3o de conta
|
||||||
|
executeActionsBody=Um administrador solicitou que voc\u00EA atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.\n\n{0}\n\nEste link ir\u00E1 expirar em {4}.\n\nSe voc\u00EA n\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\u00E1 alterado.
|
||||||
|
executeActionsBodyHtml=<p>Um administrador solicitou que voc\u00EA atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href="{0}">Link para atualizar a conta</a></p><p>Este link ir\u00E1 expirar em {4}.</p><p>Se voc\u00EA n\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\u00E1 alterado.</p>
|
||||||
|
eventLoginErrorSubject=Erro de login
|
||||||
|
eventLoginErrorBody=Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
|
||||||
|
eventLoginErrorBodyHtml=<p>Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
|
||||||
|
eventRemoveTotpSubject=Remover autentica\u00e7\u00e3o de dois fatores
|
||||||
|
eventRemoveTotpBody=A autentica\u00e7\u00e3o de dois fatores foi removida da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
|
||||||
|
eventRemoveTotpBodyHtml=<p>A autentica\u00e7\u00e3o de dois fatores foi removida da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
|
||||||
|
eventUpdatePasswordSubject=Atualiza\u00E7\u00E3o de senha
|
||||||
|
eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
|
||||||
|
eventUpdateTotpSubject=Atualiza\u00E7\u00E3o de autentica\u00e7\u00e3o de dois fatores
|
||||||
|
eventUpdateTotpBody=A autentica\u00e7\u00e3o de dois fatores foi atualizada para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
|
||||||
|
eventUpdateTotpBodyHtml=<p>A autentica\u00e7\u00e3o de dois fatores foi atualizada para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Configurar Autentica\u00e7\u00e3o de Dois Fatores
|
||||||
|
requiredAction.terms_and_conditions=Termos e Condi\u00E7\u00F5es
|
||||||
|
requiredAction.UPDATE_PASSWORD=Atualizar Senha
|
||||||
|
requiredAction.UPDATE_PROFILE=Atualizar Perfil
|
||||||
|
requiredAction.VERIFY_EMAIL=Verificar Endere\u00e7o de E-mail
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=segundos
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=segundo
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minutos
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minuto
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=horas
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=hora
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=dias
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=dia
|
||||||
|
|
||||||
|
emailVerificationBodyCode=Verifique o seu endere\u00E7o de e-mail inserindo o seguinte c\u00F3digo.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>Verifique o seu endere\u00E7o de e-mail inserindo o seguinte c\u00F3digo.</p><p><b>{0}</b></p>
|
||||||
|
|
25
keycloak_email/messages/messages_ru.properties
Normal file
25
keycloak_email/messages/messages_ru.properties
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Подтверждение E-mail
|
||||||
|
emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.
|
||||||
|
emailVerificationBodyHtml=<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>
|
||||||
|
identityProviderLinkSubject=Ссылка {0}
|
||||||
|
identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href="{3}">{3}</a></p><p>Эта ссылка устареет через {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.</p>
|
||||||
|
passwordResetSubject=Сброс пароля
|
||||||
|
passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.
|
||||||
|
passwordResetBodyHtml=<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>
|
||||||
|
executeActionsSubject=Обновление Вашей учетной записи
|
||||||
|
executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.
|
||||||
|
executeActionsBodyHtml=<p>Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>
|
||||||
|
eventLoginErrorSubject=Ошибка входа
|
||||||
|
eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
|
||||||
|
eventLoginErrorBodyHtml=<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
|
||||||
|
eventRemoveTotpSubject=Удалить OTP
|
||||||
|
eventRemoveTotpBody=OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
|
||||||
|
eventUpdatePasswordSubject=Обновление пароля
|
||||||
|
eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
|
||||||
|
eventUpdateTotpSubject=Обновление OTP
|
||||||
|
eventUpdateTotpBody=OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
|
48
keycloak_email/messages/messages_sk.properties
Normal file
48
keycloak_email/messages/messages_sk.properties
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Overenie e-mailu
|
||||||
|
emailVerificationBody=Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \n\n{0}\n\nTento odkaz uplynie do {1} minút.\n\nAk ste tento účet nevytvorili, ignorujte túto správu.
|
||||||
|
emailVerificationBodyHtml=<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href="{0}"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - Testovacia správa SMTP
|
||||||
|
emailTestBody=Toto je skúšobná správa
|
||||||
|
emailTestBodyHtml=<p>Toto je skúšobná správa</p>
|
||||||
|
identityProviderLinkSubject=Odkaz {0}
|
||||||
|
identityProviderLinkBody=Niekto chce prepojiť váš účet "{1}" s účtom {0}"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \n\n{3}\n\nTento odkaz uplynie do {4} minút.\n\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href="{3}">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>
|
||||||
|
passwordResetSubject=Obnovenie hesla
|
||||||
|
passwordResetBody=Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\n\n{0}\n\nTento odkaz a kód uplynie do {1} minút.\n\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.
|
||||||
|
passwordResetBodyHtml=<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href="{0}">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>
|
||||||
|
executeActionsSubject=Aktualizujte svoj účet
|
||||||
|
executeActionsBody=Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\n\n{0}\n\nTento odkaz vyprší za {1} minúty.\n\nAk si nie ste vedomý, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.
|
||||||
|
executeActionsBodyHtml=<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href="{0}"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu uplynie do {1} minúty.</p><p> Ak si nie ste vedomí, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>
|
||||||
|
eventLoginErrorSubject=Chyba prihlásenia
|
||||||
|
eventLoginErrorBody=Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
|
||||||
|
eventLoginErrorBodyHtml=<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
|
||||||
|
eventRemoveTotpSubject=Odstrániť TOTP
|
||||||
|
eventRemoveTotpBody=OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
|
||||||
|
eventUpdatePasswordSubject=Aktualizovať heslo
|
||||||
|
eventUpdatePasswordBody=Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
|
||||||
|
eventUpdateTotpSubject=Aktualizácia TOTP
|
||||||
|
eventUpdateTotpBody=TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
|
||||||
|
eventUpdateTotpBodyHtml=<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=Konfigurácia OTP
|
||||||
|
requiredAction.terms_and_conditions=Zmluvné podmienky
|
||||||
|
requiredAction.UPDATE_PASSWORD=Aktualizovať heslo
|
||||||
|
requiredAction.UPDATE_PROFILE=Aktualizovať profil
|
||||||
|
requiredAction.VERIFY_EMAIL=Overiť e-mail
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=sekundy
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=minúta
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minutu
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=hodiny
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=hodina
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=dni
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=deň
|
25
keycloak_email/messages/messages_sv.properties
Normal file
25
keycloak_email/messages/messages_sv.properties
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=Verifiera e-post
|
||||||
|
emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.
|
||||||
|
emailVerificationBodyHtml=<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>
|
||||||
|
identityProviderLinkSubject=Länk {0}
|
||||||
|
identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.
|
||||||
|
identityProviderLinkBodyHtml=<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href="{3}">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>
|
||||||
|
passwordResetSubject=Återställ lösenord
|
||||||
|
passwordResetBody=Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.
|
||||||
|
passwordResetBodyHtml=<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href="{0}">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
|
||||||
|
executeActionsSubject=Uppdatera ditt konto
|
||||||
|
executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.
|
||||||
|
executeActionsBodyHtml=<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
|
||||||
|
eventLoginErrorSubject=Inloggningsfel
|
||||||
|
eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
|
||||||
|
eventLoginErrorBodyHtml=<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
|
||||||
|
eventRemoveTotpSubject=Ta bort OTP
|
||||||
|
eventRemoveTotpBody=OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
|
||||||
|
eventUpdatePasswordSubject=Uppdatera lösenord
|
||||||
|
eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
|
||||||
|
eventUpdateTotpSubject=Uppdatera OTP
|
||||||
|
eventUpdateTotpBody=OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
|
51
keycloak_email/messages/messages_tr.properties
Normal file
51
keycloak_email/messages/messages_tr.properties
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
emailVerificationSubject=E-postay\u0131 do\u011Frula
|
||||||
|
emailVerificationBody=Birisi bu e-posta adresiyle bir {2} hesap olu\u015Fturdu. Bu sizseniz, e-posta adresinizi do\u011Frulamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131ya t\u0131klay\u0131n\n\n{0}\n\nBu ba\u011Flant\u0131 {3} i\u00E7inde sona erecek.\n\nBu hesab\u0131 olu\u015Fturmad\u0131ysan\u0131z, sadece bu iletiyi yoksay\u0131n\u0131z.
|
||||||
|
emailVerificationBodyHtml=<p>Birisi bu e-posta adresiyle bir {2} hesap olu\u015Fturdu. Bu sizseniz, e-posta adresinizi do\u011Frulamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n.</p><p><a href="{0}">E-posta adresi do\u011Frulama adresi</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {3} i\u00E7erisinde sona erecek.</p><p>Bu hesab\u0131 siz olu\u015Fturmad\u0131ysan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin.</p>
|
||||||
|
emailTestSubject=[KEYCLOAK] - SMTP test mesaj\u0131
|
||||||
|
emailTestBody=Bu bir test mesaj\u0131
|
||||||
|
emailTestBodyHtml=<p>Bu bir test mesaj\u0131</p>
|
||||||
|
identityProviderLinkSubject=Link {0}
|
||||||
|
identityProviderLinkBody=Birisi "{1}" hesab\u0131n\u0131z\u0131 "{0}" kullan\u0131c\u0131 hesab\u0131 {2} ile ba\u011Flamak istiyor. Bu sizseniz, hesaplar\u0131 ba\u011Flamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n:\n\n{3}\n\nBu ba\u011Flant\u0131 {5} i\u00E7inde sona erecek.\n\nHesab\u0131n\u0131z\u0131 ba\u011Flamak istemiyorsan\u0131z bu mesaj\u0131 g\u00F6z ard\u0131 edin. Hesaplar\u0131 ba\u011Flarsan\u0131z, {1} ile {0} aras\u0131nda oturum a\u00E7abilirsiniz.
|
||||||
|
identityProviderLinkBodyHtml=<p>Birisi <b> {1} </ b> hesab\u0131n\u0131z\u0131 {2} kullan\u0131c\u0131s\u0131 <b> {0} </ b> hesab\u0131na ba\u011Flamak istiyor. Bu sizseniz, ba\u011Flant\u0131 vermek i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n</p><p><a href="{3}">Hesap ba\u011Flant\u0131s\u0131n\u0131 onaylamak i\u00E7in ba\u011Flant\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {5} i\u00E7erisinde sona erecek.</p><p>Hesab\u0131 ba\u011Flamak istemiyorsan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin. Hesaplar\u0131 ba\u011Flarsan\u0131z, {1} ile {0} aras\u0131nda oturum a\u00E7abilirsiniz.</p>
|
||||||
|
passwordResetSubject=\u015Eifreyi s\u0131f\u0131rla
|
||||||
|
passwordResetBody=Birisi, {2} hesab\u0131n\u0131z\u0131n kimlik bilgilerini de\u011Fi\u015Ftirmeyi istedi.Bu sizseniz, s\u0131f\u0131rlamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n.\n\n{0}\n\nBu ba\u011Flant\u0131 ve kod {3} i\u00E7inde sona erecek.\n\nFakat bilgilerinizi s\u0131f\u0131rlamak istemiyorsan\u0131z, Sadece bu mesaj\u0131 g\u00F6rmezden gelin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmeyecek.
|
||||||
|
passwordResetBodyHtml=<p>Birisi, {2} hesab\u0131n\u0131z\u0131n kimlik bilgilerini de\u011Fi\u015Ftirmeyi istedi. Sizseniz, s\u0131f\u0131rlamak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n\u0131z.</p><p><a href="{0}">Kimlik bilgilerini s\u0131f\u0131rlamak i\u00E7in ba\u011Flant\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {3} i\u00E7erisinde sona erecek.</p><p>Kimlik bilgilerinizi s\u0131f\u0131rlamak istemiyorsan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin.</p>
|
||||||
|
executeActionsSubject=Hesab\u0131n\u0131z\u0131 G\u00FCncelleyin
|
||||||
|
executeActionsBody=Y\u00F6neticiniz a\u015Fa\u011F\u0131daki i\u015Flemleri ger\u00E7ekle\u015Ftirerek {2} hesab\u0131n\u0131z\u0131 g\u00FCncelledi: {3}. Bu i\u015Flemi ba\u015Flatmak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n.\n\n{0}\n\nBu ba\u011Flant\u0131n\u0131n s\u00FCresi {4} i\u00E7erisinde sona erecek.\n\nY\u00F6neticinizin bunu istedi\u011Finden habersizseniz, bu mesaj\u0131 g\u00F6z ard\u0131 edin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmez.
|
||||||
|
executeActionsBodyHtml=<p>Y\u00F6neticiniz a\u015Fa\u011F\u0131daki i\u015Flemleri ger\u00E7ekle\u015Ftirerek {2} hesab\u0131n\u0131z\u0131 g\u00FCncelledi: {3}. Bu i\u015Flemi ba\u015Flatmak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n.</p><p><a href="{0}">Hesap g\u00FCncelleme ba\u011Flant\u0131s\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {4} i\u00E7erisinde sona erecek.</p><p>Y\u00F6neticinizin bunu istedi\u011Finden habersizseniz, bu mesaj\u0131 g\u00F6z ard\u0131 edin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmez.</p>
|
||||||
|
eventLoginErrorSubject=Giri\u015F hatas\u0131
|
||||||
|
eventLoginErrorBody={1} ''den {0} tarihinde ba\u015Far\u0131s\u0131z bir giri\u015F denemesi yap\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
|
||||||
|
eventLoginErrorBodyHtml=<p>{1} ''den {0} tarihinde ba\u015Far\u0131s\u0131z bir giri\u015F denemesi yap\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
|
||||||
|
eventRemoveTotpSubject=OTP''yi kald\u0131r
|
||||||
|
eventRemoveTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131zdan kald\u0131r\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131zdan kald\u0131r\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
|
||||||
|
eventUpdatePasswordSubject=\u015Eifreyi g\u00FCncelle
|
||||||
|
eventUpdatePasswordBody=\u015Eifreniz {0} tarihinde {0} tarihinde de\u011Fi\u015Ftirildi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
|
||||||
|
eventUpdatePasswordBodyHtml=<p>\u015Eifreniz {0} tarihinde {0} tarihinde de\u011Fi\u015Ftirildi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
|
||||||
|
eventUpdateTotpSubject=OTP''yi G\u00FCncelle
|
||||||
|
eventUpdateTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131z i\u00E7in g\u00FCncellendi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
|
||||||
|
eventUpdateTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131z i\u00E7in g\u00FCncellendi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
|
||||||
|
|
||||||
|
requiredAction.CONFIGURE_TOTP=OTP''yi yap\u0131land\u0131r
|
||||||
|
requiredAction.terms_and_conditions=\u015Eartlar ve Ko\u015Fullar
|
||||||
|
requiredAction.UPDATE_PASSWORD=\u015Eifre G\u00FCncelleme
|
||||||
|
requiredAction.UPDATE_PROFILE=Profilleri g\u00FCncelle
|
||||||
|
requiredAction.VERIFY_EMAIL=E-mail do\u011Frula
|
||||||
|
|
||||||
|
# units for link expiration timeout formatting
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds=saniye
|
||||||
|
linkExpirationFormatter.timePeriodUnit.seconds.1=saniye
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes=dakika
|
||||||
|
linkExpirationFormatter.timePeriodUnit.minutes.1=dakika
|
||||||
|
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
|
||||||
|
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours=saat
|
||||||
|
linkExpirationFormatter.timePeriodUnit.hours.1=saat
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days=g\u00FCn
|
||||||
|
linkExpirationFormatter.timePeriodUnit.days.1=g\u00FCn
|
||||||
|
|
||||||
|
emailVerificationBodyCode=L\u00FCtfen a\u015Fa\u011F\u0131daki kodu girerek e-posta adresinizi do\u011Frulay\u0131n.\n\n{0}\n\n.
|
||||||
|
emailVerificationBodyCodeHtml=<p>L\u00FCtfen a\u015Fa\u011F\u0131daki kodu girerek e-posta adresinizi do\u011Frulay\u0131n.</p><p><b>{0}</b></p>
|
||||||
|
|
25
keycloak_email/messages/messages_zh_CN.properties
Normal file
25
keycloak_email/messages/messages_zh_CN.properties
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
emailVerificationSubject=验证电子邮件
|
||||||
|
emailVerificationBody=用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您没有注册用户,请忽略这条消息。
|
||||||
|
emailVerificationBodyHtml=<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户,请忽略这条消息。</p>
|
||||||
|
identityProviderLinkSubject=链接 {0}
|
||||||
|
identityProviderLinkBody=有用户想要将账户 "{1}" 与用户{2}的账户"{0}" 做链接 . 如果是本人操作,请点击以下链接完成链接请求\n\n{3}\n\n这个链接会在 {4} 分钟后过期.\n\n如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.
|
||||||
|
identityProviderLinkBodyHtml=<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b> 做链接 . 如果是本人操作,请点击以下链接完成链接请求</p><p><a href="{3}">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.</p>
|
||||||
|
passwordResetSubject=重置密码
|
||||||
|
passwordResetBody=有用户要求修改账户 {2} 的密码.如是本人操作,请点击下面链接进行重置.\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您不想重置您的密码,请忽略这条消息,密码不会改变。
|
||||||
|
passwordResetBodyHtml=<p>有用户要求修改账户 {2} 的密码如是本人操作,请点击下面链接进行重置.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码,请忽略这条消息,密码不会改变。</p>
|
||||||
|
executeActionsSubject=更新您的账户
|
||||||
|
executeActionsBody=您的管理员要求您更新账户 {2}. 点击以下链接开始更新\n\n{0}\n\n这个链接会在 {1} 分钟后失效.\n\n如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。
|
||||||
|
executeActionsBodyHtml=<p>您的管理员要求您更新账户{2}. 点击以下链接开始更新.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。</p>
|
||||||
|
eventLoginErrorSubject=登录错误
|
||||||
|
eventLoginErrorBody=在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.
|
||||||
|
eventLoginErrorBodyHtml=<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.</p>
|
||||||
|
eventRemoveTotpSubject=删除 OTP
|
||||||
|
eventRemoveTotpBody=OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员
|
||||||
|
eventRemoveTotpBodyHtml=<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员。</p>
|
||||||
|
eventUpdatePasswordSubject=更新密码
|
||||||
|
eventUpdatePasswordBody=您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员
|
||||||
|
eventUpdatePasswordBodyHtml=<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>
|
||||||
|
eventUpdateTotpSubject=更新 OTP
|
||||||
|
eventUpdateTotpBody=您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。
|
||||||
|
eventUpdateTotpBodyHtml=<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>
|
2
keycloak_email/text/email-test.ftl
Normal file
2
keycloak_email/text/email-test.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("emailTestBody", realmName)}
|
2
keycloak_email/text/email-update-confirmation.ftl
Normal file
2
keycloak_email/text/email-update-confirmation.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("emailUpdateConfirmationBody",link, newEmail, realmName, linkExpirationFormatter(linkExpiration))}
|
2
keycloak_email/text/email-verification-with-code.ftl
Normal file
2
keycloak_email/text/email-verification-with-code.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("emailVerificationBodyCode",code)}
|
2
keycloak_email/text/email-verification.ftl
Normal file
2
keycloak_email/text/email-verification.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("emailVerificationBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}
|
2
keycloak_email/text/event-login_error.ftl
Normal file
2
keycloak_email/text/event-login_error.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("eventLoginErrorBody",event.date,event.ipAddress)}
|
2
keycloak_email/text/event-remove_totp.ftl
Normal file
2
keycloak_email/text/event-remove_totp.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("eventRemoveTotpBody",event.date, event.ipAddress)}
|
2
keycloak_email/text/event-update_password.ftl
Normal file
2
keycloak_email/text/event-update_password.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("eventUpdatePasswordBody",event.date, event.ipAddress)}
|
2
keycloak_email/text/event-update_totp.ftl
Normal file
2
keycloak_email/text/event-update_totp.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("eventUpdateTotpBody",event.date, event.ipAddress)}
|
4
keycloak_email/text/executeActions.ftl
Normal file
4
keycloak_email/text/executeActions.ftl
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#items></#list><#else></#if></#assign>
|
||||||
|
|
||||||
|
${msg("executeActionsBody",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration))}
|
2
keycloak_email/text/identity-provider-link.ftl
Normal file
2
keycloak_email/text/identity-provider-link.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("identityProviderLinkBody", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration))}
|
2
keycloak_email/text/password-reset.ftl
Normal file
2
keycloak_email/text/password-reset.ftl
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<#ftl output_format="plainText">
|
||||||
|
${msg("passwordResetBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}
|
1
keycloak_email/theme.properties
Normal file
1
keycloak_email/theme.properties
Normal file
|
@ -0,0 +1 @@
|
||||||
|
locales=ca,cs,da,de,en,es,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN
|
42
nginx.conf
Normal file
42
nginx.conf
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_min_length 1024;
|
||||||
|
gzip_proxied expired no-cache no-store private auth;
|
||||||
|
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/javascript application/xml;
|
||||||
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
|
||||||
|
# Any route containing a file extension (e.g. /devicesfile.js)
|
||||||
|
location ~ ^.+\..+$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
|
||||||
|
location ~* \.(?:html|json|txt)$ {
|
||||||
|
expires -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# CRA generates filenames with hashes so we can
|
||||||
|
# tell the browser to keep in cache the resources.
|
||||||
|
location ~* \.(?:css|js|md|woff2?|eot|ttf|xml)$ {
|
||||||
|
expires 1y;
|
||||||
|
access_log off;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
|
||||||
|
# Allow fonts and scripts to be downloaded from pages
|
||||||
|
# served by Keycloak (CORS for --external-request)
|
||||||
|
# We allow .md for beeing able to fetch the terms of service.
|
||||||
|
location ~* \.(?:js|woff2?|eot|ttf|xml|md)$ {
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
50
package.json
Executable file
50
package.json
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"name": "keycloakify-starter",
|
||||||
|
"homepage": "https://demo-app.keycloakify.dev",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"description": "A starter/demo project for keycloakify",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/garronej/keycloakify-starter.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "react-scripts start",
|
||||||
|
"build": "react-scripts build",
|
||||||
|
"keycloak": "yarn build && keycloakify",
|
||||||
|
"download-builtin-keycloak-theme": "download-builtin-keycloak-theme 15.0.2"
|
||||||
|
},
|
||||||
|
"author": "u/garronej",
|
||||||
|
"license": "MIT",
|
||||||
|
"keywords": [],
|
||||||
|
"dependencies": {
|
||||||
|
"@emotion/react": "^11.9.0",
|
||||||
|
"keycloakify": "^6.0.0",
|
||||||
|
"react": "18.1.0",
|
||||||
|
"react-dom": "18.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^15.3.1",
|
||||||
|
"@types/react": "18.0.9",
|
||||||
|
"@types/react-dom": "18.0.4",
|
||||||
|
"react-scripts": "5.0.0",
|
||||||
|
"typescript": "^4.7.3"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": [
|
||||||
|
"react-app",
|
||||||
|
"react-app/jest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"browserslist": {
|
||||||
|
"production": [
|
||||||
|
">0.2%",
|
||||||
|
"not dead",
|
||||||
|
"not op_mini all"
|
||||||
|
],
|
||||||
|
"development": [
|
||||||
|
"last 1 chrome version",
|
||||||
|
"last 1 firefox version",
|
||||||
|
"last 1 safari version"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
39
public/fonts/WorkSans/font.css
Normal file
39
public/fonts/WorkSans/font.css
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-bold-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-medium-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-regular-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-semibold-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%/fonts/WorkSans/font.css">
|
||||||
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Work Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal; /*400*/
|
||||||
|
font-display: swap;
|
||||||
|
src: url("./worksans-regular-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Work Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
font-display: swap;
|
||||||
|
src: url("./worksans-medium-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Work Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: swap;
|
||||||
|
src: url("./worksans-semibold-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Work Sans";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold; /*700*/
|
||||||
|
font-display: swap;
|
||||||
|
src: url("./worksans-bold-webfont.woff2") format("woff2");
|
||||||
|
}
|
BIN
public/fonts/WorkSans/worksans-bold-webfont.woff2
Normal file
BIN
public/fonts/WorkSans/worksans-bold-webfont.woff2
Normal file
Binary file not shown.
BIN
public/fonts/WorkSans/worksans-medium-webfont.woff2
Normal file
BIN
public/fonts/WorkSans/worksans-medium-webfont.woff2
Normal file
Binary file not shown.
BIN
public/fonts/WorkSans/worksans-regular-webfont.woff2
Normal file
BIN
public/fonts/WorkSans/worksans-regular-webfont.woff2
Normal file
Binary file not shown.
BIN
public/fonts/WorkSans/worksans-semibold-webfont.woff2
Normal file
BIN
public/fonts/WorkSans/worksans-semibold-webfont.woff2
Normal file
Binary file not shown.
84
public/index.html
Normal file
84
public/index.html
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<!--
|
||||||
|
Notice the use of %PUBLIC_URL% in the tags above.
|
||||||
|
It will be replaced with the URL of the `public` folder during the build.
|
||||||
|
Only files inside the `public` folder can be referenced from the HTML.
|
||||||
|
|
||||||
|
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||||
|
work correctly both with client-side routing and a non-root public URL.
|
||||||
|
Learn how to configure a non-root public URL by running `npm run build`.
|
||||||
|
-->
|
||||||
|
<title>React App</title>
|
||||||
|
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-bold-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-medium-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-regular-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<link rel="preload" href="%PUBLIC_URL%/fonts/WorkSans/worksans-semibold-webfont.woff2" as="font" crossorigin="anonymous">
|
||||||
|
<!--
|
||||||
|
We need to put it plain in the html because of Keycloakify, in case we decide to remove --external-assets
|
||||||
|
SEE: https://github.com/InseeFrLab/keycloakify#font-face-importing-fonts-from-thesrc-dir
|
||||||
|
-->
|
||||||
|
<style>
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Work Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
/*400*/
|
||||||
|
font-display: swap;
|
||||||
|
src: url("%PUBLIC_URL%/fonts/WorkSans/worksans-regular-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Work Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
font-display: swap;
|
||||||
|
src: url("%PUBLIC_URL%/fonts/WorkSans/worksans-medium-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Work Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: swap;
|
||||||
|
src: url("%PUBLIC_URL%/fonts/WorkSans/worksans-semibold-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Work Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
/*700*/
|
||||||
|
font-display: swap;
|
||||||
|
src: url("%PUBLIC_URL%/fonts/WorkSans/worksans-bold-webfont.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<div id="root"></div>
|
||||||
|
<!--
|
||||||
|
This HTML file is a template.
|
||||||
|
If you open it directly in the browser, you will see an empty page.
|
||||||
|
|
||||||
|
You can add webfonts, meta tags, or analytics to this file.
|
||||||
|
The build step will place the bundled scripts into the <body> tag.
|
||||||
|
|
||||||
|
To begin the development, run `npm start` or `yarn start`.
|
||||||
|
To create a production bundle, use `npm run build` or `yarn build`.
|
||||||
|
-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
50
src/App/App.css
Normal file
50
src/App/App.css
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||||
|
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||||
|
sans-serif;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.App {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-logo {
|
||||||
|
height: 40vmin;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
.App-logo {
|
||||||
|
animation: App-logo-spin infinite 20s linear;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-header {
|
||||||
|
background-color: #282c34;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: calc(10px + 2vmin);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-link {
|
||||||
|
color: #61dafb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes App-logo-spin {
|
||||||
|
from {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
15
src/App/App.tsx
Normal file
15
src/App/App.tsx
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import "./App.css";
|
||||||
|
import logo from "./logo.svg";
|
||||||
|
import myimg from "./myimg.png";
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
return (
|
||||||
|
<div className="App">
|
||||||
|
<header className="App-header">
|
||||||
|
<img src={logo} className="App-logo" alt="logo" />
|
||||||
|
<img src={myimg} alt="test_image" />
|
||||||
|
<p style={{ "fontFamily": '"Work Sans"' }}>Hello world</p>
|
||||||
|
</header>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
4
src/App/index.ts
Normal file
4
src/App/index.ts
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
import App from "./App";
|
||||||
|
export * from "./App";
|
||||||
|
|
||||||
|
export default App;
|
1
src/App/logo.svg
Normal file
1
src/App/logo.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |
BIN
src/App/myimg.png
Normal file
BIN
src/App/myimg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
8
src/KcApp/KcApp.css
Normal file
8
src/KcApp/KcApp.css
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
.my-color {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.my-font {
|
||||||
|
font-family: 'Work Sans';
|
||||||
|
}
|
70
src/KcApp/KcApp.tsx
Normal file
70
src/KcApp/KcApp.tsx
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
import "./KcApp.css";
|
||||||
|
import type { KcContext } from "./kcContext";
|
||||||
|
import KcAppBase, { defaultKcProps, useDownloadTerms, useI18n } from "keycloakify";
|
||||||
|
import tos_en_url from "./tos_en.md";
|
||||||
|
import tos_fr_url from "./tos_fr.md";
|
||||||
|
|
||||||
|
export type Props = {
|
||||||
|
kcContext: KcContext;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function KcApp(props: Props) {
|
||||||
|
const { kcContext } = props;
|
||||||
|
|
||||||
|
useDownloadTerms({
|
||||||
|
kcContext,
|
||||||
|
"downloadTermMarkdown": async ({ currentLanguageTag }) => {
|
||||||
|
const markdownString = await fetch(
|
||||||
|
(() => {
|
||||||
|
switch (currentLanguageTag) {
|
||||||
|
case "fr":
|
||||||
|
return tos_fr_url;
|
||||||
|
default:
|
||||||
|
return tos_en_url;
|
||||||
|
}
|
||||||
|
})(),
|
||||||
|
).then(response => response.text());
|
||||||
|
|
||||||
|
return markdownString;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const i18n = useI18n({
|
||||||
|
kcContext,
|
||||||
|
// NOTE: Here you can override the default i18n messages
|
||||||
|
// or define new ones that, for example, you would have
|
||||||
|
// defined in the Keycloak admin UI for UserProfile
|
||||||
|
// https://user-images.githubusercontent.com/6702424/182050652-522b6fe6-8ee5-49df-aca3-dba2d33f24a5.png
|
||||||
|
"extraMessages": {
|
||||||
|
"en": {
|
||||||
|
"foo": "foo in English",
|
||||||
|
// Here we overwrite the default english value for the message "doForgotPassword"
|
||||||
|
// that is "Forgot Password?" see: https://github.com/InseeFrLab/keycloakify/blob/f0ae5ea908e0aa42391af323b6d5e2fd371af851/src/lib/i18n/generated_messages/18.0.1/login/en.ts#L17
|
||||||
|
"doForgotPassword": "I forgot my password"
|
||||||
|
},
|
||||||
|
"fr": {
|
||||||
|
/* spell-checker: disable */
|
||||||
|
"foo": "foo en Francais",
|
||||||
|
"doForgotPassword": "J'ai oublié mon mot de passe"
|
||||||
|
/* spell-checker: enable */
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
//NOTE: Locale not yet downloaded
|
||||||
|
if (i18n === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<KcAppBase
|
||||||
|
kcContext={kcContext}
|
||||||
|
i18n={i18n}
|
||||||
|
{...{
|
||||||
|
...defaultKcProps,
|
||||||
|
// NOTE: The classes are defined in ./KcApp.css
|
||||||
|
"kcHeaderWrapperClass": "my-color my-font",
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
3
src/KcApp/index.ts
Normal file
3
src/KcApp/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import KcApp from "./KcApp";
|
||||||
|
export * from "./KcApp";
|
||||||
|
export default KcApp;
|
16
src/KcApp/kcContext.ts
Normal file
16
src/KcApp/kcContext.ts
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
import { getKcContext } from "keycloakify/lib/getKcContext";
|
||||||
|
|
||||||
|
export const { kcContext } = getKcContext({
|
||||||
|
/* Uncomment to test th<e login page for development */
|
||||||
|
//"mockPageId": "login.ftl",
|
||||||
|
"mockData": [
|
||||||
|
{
|
||||||
|
"pageId": "login.ftl",
|
||||||
|
"locale": {
|
||||||
|
"currentLanguageTag": "fr", //When we test the login page we do it in french
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
export type KcContext = NonNullable<typeof kcContext>;
|
180
src/KcApp/tos_en.md
Normal file
180
src/KcApp/tos_en.md
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
# Terms of Service
|
||||||
|
|
||||||
|
## Presentation / Features
|
||||||
|
|
||||||
|
[EC: continuation of today's meeting: this would deserve to differentiate the SSP Cloud from the Onyxia SSP Cloud instance]
|
||||||
|
|
||||||
|
The SSP Cloud is a service (hereinafter referred to as "the service") implemented by the National Institute for Statistics and Economic Studies (hereinafter referred to as "Insee").
|
||||||
|
|
||||||
|
The SSP Cloud is an implementation of free software [Onyxia] (https://github.com/InseeFrLab/onyxia) created and maintained by the innovation and technical instruction division of INSEE (information system management / innovation unit and information system strategy). The SSP Cloud is hosted by INSEE.
|
||||||
|
|
||||||
|
[EC: I will remove the "on open data", since the SSP Cloud can accommodate secure data under the appropriate conditions]
|
||||||
|
The SSP Cloud is a platform offering a "datalab" intended for _data science_ experiments on open data in which users can orchestrate services dedicated to the practice of _data science_ (development environments, databases, etc.). This service offering thus aims to familiarize users with new collaborative working methods using _open source_ statistical languages (R, python, Julia, etc.), _cloud computing_ type technologies, as well as to allow processing experiments. innovative statistics. The services offered are standard.
|
||||||
|
|
||||||
|
The SSP Cloud is aimed at officials of the official statistical system as well as teachers and students of the Group of National Schools of Economics and Statistics, allowing inter-service collaboration and cooperation with their ecosystem. Access can thus be granted on request and after decision of the governance bodies of the Cloud SSP to external collaborators and involved in the realization of experimental projects of the official statistical system. Projects involving non-open data are also subject to the decision of the governing bodies.
|
||||||
|
|
||||||
|
The SSP Cloud allows:
|
||||||
|
|
||||||
|
- the orchestration of _data science_ trainings
|
||||||
|
- access to _data science_ services
|
||||||
|
- secure data storage
|
||||||
|
- management of secrets, such as encryption keys
|
||||||
|
- access to a code management service
|
||||||
|
- orchestration of data processing flows
|
||||||
|
|
||||||
|
A user account is also used to connect to the service platform of the Inter-ministerial Mutualization Free Software community (<https://groupes.mim-libre.fr/>).
|
||||||
|
|
||||||
|
## Legal Notice
|
||||||
|
|
||||||
|
Functional administration of the Cloud SSP: Insee
|
||||||
|
|
||||||
|
This site is published by the National Institute for Statistics and Economic Studies (Insee).
|
||||||
|
INSEE
|
||||||
|
88 avenue Verdier
|
||||||
|
CS 70058
|
||||||
|
92541 Montrouge cedex
|
||||||
|
|
||||||
|
Director of publication: Mr. Jean-Luc Tavernier
|
||||||
|
|
||||||
|
Administrator: Frédéric Comte
|
||||||
|
|
||||||
|
Maintenance of the _open source_ Onyxia project: Insee
|
||||||
|
|
||||||
|
Hosting: Insee - Innovation and technical instruction division
|
||||||
|
|
||||||
|
## Terms of use of the Service
|
||||||
|
|
||||||
|
The SSP Cloud datalab can be accessed from any browser connected to
|
||||||
|
Internet. The use of a computer is recommended. Use of the datalab services is free.
|
||||||
|
|
||||||
|
The user community is accessible on:
|
||||||
|
|
||||||
|
- Tchap, salon [SSP Cloud] (https://www.tchap.gouv.fr/#/room/#SSPCloudXDpAw6v:agent.finances.tchap.gouv.fr)
|
||||||
|
- Rocket Chat at MIM Libre, [SSP Cloud] lounge (https://chat.mim-libre.fr/channel/sspcloud)
|
||||||
|
|
||||||
|
## Limits of use of the Service
|
||||||
|
|
||||||
|
Public data and data can be processed on the datalab
|
||||||
|
usual (working data without particular sensitivity). In the absence of specific authorization for a given experimental project, cannot be
|
||||||
|
"protected" or "sensitive" data processed on the datalab, with or without a
|
||||||
|
confidentiality intended to restrict distribution to a specific domain
|
||||||
|
(statistical, commercial, industrial secrecy, etc.).
|
||||||
|
|
||||||
|
[EC: seems too "weak" to me, refer to the opinion of the UAJC on this point: if an agent puts sensitive data on the datalab, under his responsibility, what is the responsibility of his employer? from INSEE? can be added "after he has taken a legal opinion on the character 'protected' or 'sensitive' and that he informed his hierarchy ??]
|
||||||
|
The "protected" or "sensitive" nature of the information stored or processed on the datalab
|
||||||
|
is subject to the discretion of the user under his own
|
||||||
|
responsibility.
|
||||||
|
|
||||||
|
## Roles, commitments and associated responsibilities
|
||||||
|
|
||||||
|
The service is made available by INSEE without other express guarantees or
|
||||||
|
tacit than those provided herein. The service is based on benchmark open source technologies. However, it is not guaranteed that it
|
||||||
|
is free from anomalies or errors. The service is therefore made available ** without
|
||||||
|
guaranteed availability and performance **. As such, INSEE cannot
|
||||||
|
be held responsible for loss and / or damage of any kind
|
||||||
|
be, who couldbe caused as a result of a malfunction or
|
||||||
|
unavailability of the service. Such situations will not give right to any
|
||||||
|
financial compensation.
|
||||||
|
|
||||||
|
Each user has a personal storage space. By default, all the information deposited in a user's storage space is accessible only to him. Each user has the possibility of making public files stored in their personal storage space. Each user is responsible for making their files available to the public.
|
||||||
|
|
||||||
|
[EC: take the opinion of the UAJC, I do not know if it is the user specifically who is responsible for the processing or the institution on which he depends]
|
||||||
|
Each user is responsible for processing all the experimental work he performs on the SSP Cloud.
|
||||||
|
He must, if necessary, declare the personal processing carried out using the SSP Cloud to the data protection officer of his structure and inform the members thereof. [not sure that it is only the DPD of his structure who must be aware, also the DPD Insee?]
|
||||||
|
[EC: in the case of a project involving several institutions, users must have previously established a data sharing / provision agreement.]
|
||||||
|
|
||||||
|
## Creating an account on the SSP Cloud
|
||||||
|
|
||||||
|
Access to the SSP Cloud requires prior registration and authentication.
|
||||||
|
|
||||||
|
## Experimental projects on sensitive data
|
||||||
|
|
||||||
|
** TODO **
|
||||||
|
|
||||||
|
Role of the project security manager
|
||||||
|
|
||||||
|
Enrollment of sensitive projects
|
||||||
|
|
||||||
|
Creation of collaborative spaces for sensitive projects
|
||||||
|
|
||||||
|
Creation and life cycle of spaces
|
||||||
|
|
||||||
|
## Processing of personal data
|
||||||
|
|
||||||
|
Data processing is based on the performance of the mission of providing a platform dedicated to experimentation and learning about data science for the benefit of the official statistical system.
|
||||||
|
|
||||||
|
The Service only collects the data strictly necessary for its implementation.
|
||||||
|
artwork.
|
||||||
|
|
||||||
|
The processing of personal data within the meaning of Articles 9 and 10 of
|
||||||
|
general data protection regulation (racial or ethnic origin,
|
||||||
|
political opinions, religious or philosophical beliefs, belonging
|
||||||
|
union, criminal convictions ...) is banned on the SSP Cloud.
|
||||||
|
|
||||||
|
[EC: same remark as above -> have the opinion of the Legal Unit]
|
||||||
|
Personal data processed as part of an experiment carried out by a user, when there is any, is the responsibility of the entity
|
||||||
|
administrative office from which the user originated. The
|
||||||
|
arrangements for their treatment must be communicated by
|
||||||
|
the user to the data protection officer of his entity
|
||||||
|
administrative unit.
|
||||||
|
|
||||||
|
Regarding the scope of the SSP Cloud service, the purpose of processing
|
||||||
|
concerns the management of the platform's accounts
|
||||||
|
(creation / conservation / deletion), operation of the platform (monitoring,
|
||||||
|
usage statistics) as well as the management of the services offered by the platform. Below is the list of
|
||||||
|
transverse personal data whose processing is under the
|
||||||
|
responsibility of INSEE.
|
||||||
|
|
||||||
|
** Suite to be managed with the DC POD **
|
||||||
|
|
||||||
|
> RL: @Fred, I put it a bit at random, I let you complete / amend
|
||||||
|
|
||||||
|
### Profile data
|
||||||
|
|
||||||
|
their first name, last name and email address (required);
|
||||||
|
|
||||||
|
freely:
|
||||||
|
|
||||||
|
- photo (see gitlab)
|
||||||
|
- ...
|
||||||
|
|
||||||
|
### Trace data
|
||||||
|
|
||||||
|
They are collected each time a user connects and, for example,
|
||||||
|
the use of a technical identifier, to trace connection operations and
|
||||||
|
modification of the objects of the service database.
|
||||||
|
|
||||||
|
They are used for technical support purposes. They can also do
|
||||||
|
subject to periodic review by the directors for control purposes and usage statistics.
|
||||||
|
|
||||||
|
### Cookie data
|
||||||
|
|
||||||
|
These cookies are only intended to allow the service to function and
|
||||||
|
to facilitate its use by users according to the constraints of each typology.
|
||||||
|
|
||||||
|
- Session cookie: mandatory, it identifies the session of
|
||||||
|
the user. The cookie is destroyed at the end of the session.
|
||||||
|
|
||||||
|
- Reauthentication cookie: optional, it allows you to re-authenticate
|
||||||
|
the user logged in for the duration of the cookie (one year maximum)
|
||||||
|
|
||||||
|
## Modification and evolution of the Service
|
||||||
|
|
||||||
|
INSEE reserves the right to develop, modify or suspend,
|
||||||
|
without notice, the Service for maintenance reasons or for any other
|
||||||
|
reason deemed necessary. The information is then communicated to users via Tchap.
|
||||||
|
The terms of these conditions of use may be modified or
|
||||||
|
completed at any time, without notice, depending on changes
|
||||||
|
made to the Service, changes in legislation or for any other reason
|
||||||
|
deemed necessary. These modifications and updates are binding on the user who
|
||||||
|
should therefore refer regularly to this section to verifythe
|
||||||
|
general conditions in force (accessible from the home page).
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
For technical problems and / or
|
||||||
|
functionalities encountered on the platform, it is recommended, first of all
|
||||||
|
time to solicit communities of peers in collaborative spaces
|
||||||
|
provided for this purpose on Tchap and Rocket Chat-MIM Libre.
|
||||||
|
|
||||||
|
CNIL right of access for: <innovation@insee.fr>
|
180
src/KcApp/tos_fr.md
Normal file
180
src/KcApp/tos_fr.md
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
# Conditions générales d'utilisation
|
||||||
|
|
||||||
|
## Présentation / Fonctionnalités
|
||||||
|
|
||||||
|
[EC: suite de la réunion d'aujourdhui : cela mériterait de différencier le SSP Cloud de l'instance d'Onyxia SSP Cloud]
|
||||||
|
|
||||||
|
Le SSP Cloud est un service (ci après désigné par "le service") mis en œuvre par l'Institut national de la statistique et des études économiques (ci-après dénommé "l'Insee").
|
||||||
|
|
||||||
|
Le SSP Cloud est une implémentation du logiciel libre [Onyxia](https://github.com/InseeFrLab/onyxia) créé et maintenu par la division innovation et instruction technique de l'Insee (direction du système d'information/unité innovation et stratégie du système d'information). L’hébergement du SSP Cloud est assuré par l'Insee.
|
||||||
|
|
||||||
|
[EC: j'enlèverai le "sur données ouvertes", puisque le SSP Cloud peut accueillir dans les donditions idoines des données sécurisées]
|
||||||
|
Le SSP Cloud est une plateforme proposant un "datalab" destiné aux expérimentations de _data science_ sur données ouvertes dans lequel les utilisateurs peuvent orchestrer des services dédiés à la pratique de la _data science_ (environnements de développement, bases de données...). Cette offre de services vise ainsi à familiariser les utilisateurs avec de nouvelles méthodes de travail collaboratif mobilisant des langages statistiques _open source_ (R, python, Julia...), des technologies de type _cloud computing_ ainsi qu'à permettre d'expérimenter des traitements statistiques innovants. Les services proposés sont standards.
|
||||||
|
|
||||||
|
Le SSP Cloud s’adresse aux agents du système statistique public ainsi qu'aux enseignants et étudiants du Groupe des écoles nationales d'économie et de statistique, permettant une collaboration interservices et la coopération avec leur écosystème. Des accès peuvent ainsi être accordés sur demande et après décision des organes de gouvernance du SSP Cloud à des collaborateurs extérieurs et impliqués dans la réalisation de projets expérimentaux du système statistique public. Les projets mobilisant des données non ouvertes sont aussi soumis à la décision des organes de gouvernance.
|
||||||
|
|
||||||
|
Le SSP Cloud permet :
|
||||||
|
|
||||||
|
- l'orchestration de formations de _data science_
|
||||||
|
- l'accès à des services de _data science_
|
||||||
|
- le stockage sécurisé de données
|
||||||
|
- la gestion de secrets, tels que des clés de chiffrement
|
||||||
|
- l'accès à un service de gestion de code
|
||||||
|
- l'orchestration de flux de traitement de données
|
||||||
|
|
||||||
|
Un compte utilisateur permet également de se connecter à la plateforme de services de la communauté Mutualisation Inter-ministérielle Logiciels Libres (<https://groupes.mim-libre.fr/>).
|
||||||
|
|
||||||
|
## Mentions légales
|
||||||
|
|
||||||
|
Administration fonctionnelle du SSP Cloud : Insee
|
||||||
|
|
||||||
|
Ce site est édité par l'Institut national de la statistique et des études économiques (Insee).
|
||||||
|
Insee
|
||||||
|
88 avenue Verdier
|
||||||
|
CS 70058
|
||||||
|
92541 Montrouge cedex
|
||||||
|
|
||||||
|
Directeur de la publication : Monsieur Jean-Luc Tavernier
|
||||||
|
|
||||||
|
Administrateur : Frédéric Comte
|
||||||
|
|
||||||
|
Maintenance du projet _open source_ Onyxia : Insee
|
||||||
|
|
||||||
|
Hébergement : Insee - Division innovation et instruction technique
|
||||||
|
|
||||||
|
## Modalités d’utilisation du Service
|
||||||
|
|
||||||
|
Le datalab SSP Cloud est accessible depuis n’importe quel navigateur connecté à
|
||||||
|
Internet. L'utilisation d'un ordinateur est recommandée. L’utilisation des services du datalab est gratuite.
|
||||||
|
|
||||||
|
La communauté d'utilisateurs est accessible sur :
|
||||||
|
|
||||||
|
- Tchap, salon [SSP Cloud](https://www.tchap.gouv.fr/#/room/#SSPCloudXDpAw6v:agent.finances.tchap.gouv.fr)
|
||||||
|
- Rocket Chat du MIM Libre, salon [SSP Cloud](https://chat.mim-libre.fr/channel/sspcloud)
|
||||||
|
|
||||||
|
## Limites d’utilisation du Service
|
||||||
|
|
||||||
|
Peuvent être traitées sur le datalab les données publiques et données
|
||||||
|
usuelles (données de travail sans sensibilité particulière). En l'absence d'autorisation spécifique pour un projet d'expérimentation donné, ne peuvent être
|
||||||
|
traitées sur le datalab les données ‘protégées’ ou ‘sensibles’, avec ou sans marque de
|
||||||
|
confidentialité destinée à restreindre la diffusion à un domaine spécifique
|
||||||
|
(secret statistique, commercial, industriel..).
|
||||||
|
|
||||||
|
[EC: me semble trop "faible", se référer à l'avis de l'UAJC sur ce point : si un agent met des données sensibles sur le datalab, sous sa responsabilité, quelle est la responsabilité de son employeur? de l'Insee ? peut être ajouter "après qu'il ait pris un avis juridique sur le caractère 'protégé' ou 'sensible' et qu'il en ait informé sa hiérarchie??]
|
||||||
|
Le caractère ‘protégé’ ou ‘sensible’ des informations stockées ou traitées sur le datalab
|
||||||
|
est soumis à l’appréciation de l’utilisateur sous sa propre
|
||||||
|
responsabilité.
|
||||||
|
|
||||||
|
## Les rôles, engagements et responsabilités associées
|
||||||
|
|
||||||
|
Le service est mis à disposition par l'Insee sans autres garanties expresses ou
|
||||||
|
tacites que celles qui sont prévues par les présentes. Le service s’appuie sur des technologies open source de référence. Toutefois, il n’est pas garanti qu’il
|
||||||
|
soit exempt d’anomalies ou erreurs. Le service est donc mis à disposition **sans
|
||||||
|
garantie sur sa disponibilité et ses performances**. A ce titre, l'Insee ne peut
|
||||||
|
être tenue responsable des pertes et/ou préjudices, de quelque nature qu’ils
|
||||||
|
soient, qui pourraient être causés à la suite d’un dysfonctionnement ou une
|
||||||
|
indisponibilité du service. De telles situations n'ouvriront droit à aucune
|
||||||
|
compensation financière.
|
||||||
|
|
||||||
|
Chaque utilisateur dispose d'un espace de stockage personnel. Par défaut, toutes les informations déposées dans un espace de stockage d'un utilisateur ne sont accessibles qu'à lui seul. Chaque utilisateur a la possibilité de rendre publics des fichiers stockés dans son espace de stockage personnel. Chaque utilisateur est responsable de la mise à disposition publique de ses fichiers.
|
||||||
|
|
||||||
|
[EC : prendre l'avis de l'UAJC, je ne sais pas si c'est l'utilisateur nommément qui est responsable du traitement ou bien l'institution dont il dépend]
|
||||||
|
Chaque utilisateur est responsable de traitement pour l’ensemble des travaux d'expérimentation qu'il réalise sur le SSP Cloud.
|
||||||
|
Il doit, le cas échant, déclarer les traitements à caractère personnel réalisés à l'aide du SSP Cloud au délégué à la protection des données de sa structure et en informer les membres. [pas sur que ce soit uniquement le DPD de sa structure qui doit être au courant, aussi le DPD Insee?]
|
||||||
|
[EC : dans le cas d'un projet faisant intervenir plusieurs institutions, les utilisateurs doivent avoir au préalable établi un conventionnement de partage/ mise à disposition des données.]
|
||||||
|
|
||||||
|
## La création de compte sur le SSP Cloud
|
||||||
|
|
||||||
|
L'accès au SSP Cloud nécessite une inscription préalable et une authentification.
|
||||||
|
|
||||||
|
## Les projets d'expérimentation sur données sensibles
|
||||||
|
|
||||||
|
**TODO**
|
||||||
|
|
||||||
|
Rôle du responsable de sécurité du projet
|
||||||
|
|
||||||
|
Enrôlement des projets sensibles
|
||||||
|
|
||||||
|
Création d'espaces collaboratifs pour les projets sensibles
|
||||||
|
|
||||||
|
Création et cycle de vie des espaces
|
||||||
|
|
||||||
|
## Traitement des données à caractère personnel
|
||||||
|
|
||||||
|
Le traitement des données se fonde sur l’exécution de la mission que constitue la mise à disposition d'une plateforme dédiée à l'expérimentation et à l'apprentissage de la datascience au bénéfice du système statistique public.
|
||||||
|
|
||||||
|
Le Service ne collecte que les données strictement nécessaires à sa mise en
|
||||||
|
œuvre.
|
||||||
|
|
||||||
|
Le traitement de données à caractère personnel au sens des articles 9 et 10 du
|
||||||
|
règlement général sur la protection des données (origine raciale ou ethnique,
|
||||||
|
opinions politiques, convictions religieuses ou philosophiques, appartenance
|
||||||
|
syndicale, condamnations pénales...) est proscrit sur le SSP Cloud.
|
||||||
|
|
||||||
|
[EC: meme remarque que ci-dessus --> avoir l'avis de l'Unité juridique]
|
||||||
|
Les données à caractère personnel traitées dans le cadre d'une expérimentation réalisée par un utilisateur, quand il y en a, relèvent de la responsabilité de l’entité
|
||||||
|
administrative dont est issu l’utilisateur. Les
|
||||||
|
dispositions relatives à leur traitement doivent être communiquées par
|
||||||
|
l'utilisateur au délégué à la protection des données de son entité
|
||||||
|
administrative de rattachement.
|
||||||
|
|
||||||
|
Pour ce qui est du périmètre du service SSP Cloud, la finalité de traitement
|
||||||
|
concerne la gestion des comptes de la plateforme
|
||||||
|
(création/conservation/suppression), l’exploitation de la plateforme (suivi,
|
||||||
|
statistiques d’usages) ainsi que la gestion des services offerts par la plateforme. Ci-dessous la liste des
|
||||||
|
données à caractère personnel transverses dont le traitement est sous la
|
||||||
|
responsabilité de l'Insee.
|
||||||
|
|
||||||
|
**Suite à gérer avec le DC POD**
|
||||||
|
|
||||||
|
> RL : @Fred, je mets un peu au hasard, je te laisse compléter/amender
|
||||||
|
|
||||||
|
### Données relatives au profil
|
||||||
|
|
||||||
|
ses prénom, nom et adresse mail (obligatoire) ;
|
||||||
|
|
||||||
|
de façon libre :
|
||||||
|
|
||||||
|
- photo (cf. gitlab)
|
||||||
|
- ...
|
||||||
|
|
||||||
|
### Données de trace
|
||||||
|
|
||||||
|
Elles sont collectées à chaque connexion d'un utilisateur et permettent, par
|
||||||
|
l’utilisation d’un identifiant technique, de tracer les opérations de connexion et
|
||||||
|
de modification des objets de la base de données du service.
|
||||||
|
|
||||||
|
Elles servent à des fins de support technique. Elles peuvent également faire
|
||||||
|
l'objet d'une revue périodique de la part des administrateurs à des fins de contrôle et de statistiques d'usage.
|
||||||
|
|
||||||
|
### Les données de cookies
|
||||||
|
|
||||||
|
Ces cookies n’ont pour objet que de permettre le fonctionnement du service et
|
||||||
|
de faciliter son usage par les utilisateurs selon les contraintes chaque typologie.
|
||||||
|
|
||||||
|
- Cookie de session : obligatoire , il permet d'identifier la session de
|
||||||
|
l'utilisateur. Le cookie est détruit à la fin de la session.
|
||||||
|
|
||||||
|
- Cookie de réauthentification : optionnel, il permet de ré-authentifier
|
||||||
|
l'utilisateur connecté pendant la durée du cookie (un an maximum)
|
||||||
|
|
||||||
|
## Modification et évolution du Service
|
||||||
|
|
||||||
|
L'Insee se réserve la liberté de faire évoluer, de modifier ou de suspendre,
|
||||||
|
sans préavis, le Service pour des raisons de maintenance ou pour tout autre
|
||||||
|
motif jugé nécessaire. L'information est alors communiquée aux utilisateurs via Tchap.
|
||||||
|
Les termes des présentes conditions d’utilisation peuvent être modifiés ou
|
||||||
|
complétés à tout moment, sans préavis, en fonction des modifications
|
||||||
|
apportées au Service, de l’évolution de la législation ou pour tout autre motif
|
||||||
|
jugé nécessaire. Ces modifications et mises à jour s’imposent à l’utilisateur qui
|
||||||
|
doit, en conséquence, se référer régulièrement à cette rubrique pour vérifier les
|
||||||
|
conditions générales en vigueur (accessible depuis la page d’accueil).
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
Pour les problèmes techniques et/ou
|
||||||
|
fonctionnels rencontrés sur la plateforme, il est conseillé, dans un premier
|
||||||
|
temps de solliciter les communautés de pairs dans les espaces collaboratifs
|
||||||
|
prévus à cet effet sur Tchap et Rocket Chat-MIM Libre.
|
||||||
|
|
||||||
|
Droit d’accès CNIL pour : <innovation@insee.fr>
|
16
src/index.tsx
Normal file
16
src/index.tsx
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
import { createRoot } from "react-dom/client";
|
||||||
|
import { StrictMode, lazy, Suspense } from "react";
|
||||||
|
import { kcContext } from "./KcApp/kcContext";
|
||||||
|
|
||||||
|
const App = lazy(() => import("./App"));
|
||||||
|
const KcApp = lazy(() => import("./KcApp"));
|
||||||
|
|
||||||
|
if (kcContext !== undefined) {
|
||||||
|
console.log(kcContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
createRoot(document.getElementById("root")!).render(
|
||||||
|
<StrictMode>
|
||||||
|
<Suspense>{kcContext === undefined ? <App /> : <KcApp kcContext={kcContext} />}</Suspense>
|
||||||
|
</StrictMode>,
|
||||||
|
);
|
5
src/react-app-env.d.ts
vendored
Normal file
5
src/react-app-env.d.ts
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
/// <reference types="react-scripts" />
|
||||||
|
declare module "*.md" {
|
||||||
|
const src: string;
|
||||||
|
export default src;
|
||||||
|
}
|
21
tsconfig.json
Normal file
21
tsconfig.json
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"baseUrl": "src",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"include": ["src"]
|
||||||
|
}
|
Loading…
Reference in a new issue