Import corteza-locale as golang pkg and allow hybrid lang importing
This commit is contained in:
@@ -2,6 +2,10 @@ module github.com/cortezaproject/corteza-server
|
||||
|
||||
go 1.16
|
||||
|
||||
// This is useful when testing changes on corteza-locale
|
||||
// and you do not want to push on every change in the locale repo
|
||||
// replace github.com/cortezaproject/corteza-locale => ../locale
|
||||
|
||||
require (
|
||||
github.com/766b/chi-prometheus v0.0.0-20180509160047-46ac2b31aa30
|
||||
github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d
|
||||
@@ -14,6 +18,7 @@ require (
|
||||
github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d
|
||||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
|
||||
github.com/brianvoe/gofakeit/v6 v6.5.0
|
||||
github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14
|
||||
github.com/crewjam/saml v0.4.5
|
||||
github.com/crusttech/go-oidc v0.0.0-20180918092017-982855dad3e1
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
|
||||
@@ -88,6 +88,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14 h1:QMaq2KCK3t0PDwJ6i9tBfxihbUhUMB6/4UatwEAhKhg=
|
||||
github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14/go.mod h1:wsI1UftEdBqTuEDKBZmx2LfNu/kZun5pRbCAi420JCg=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da h1:WXnT88cFG2davqSFqvaFfzkSMC0lqh/8/rKZ+z7tYvI=
|
||||
github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da/go.mod h1:+rmNIXRvYMqLQeR4DHyTvs6y0MEMymTz4vyFpFkKTPs=
|
||||
|
||||
+53
-53
@@ -6,7 +6,6 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
@@ -17,58 +16,61 @@ import (
|
||||
|
||||
const serverApplication = "corteza-server"
|
||||
|
||||
var defaultLanguage = language.English
|
||||
var (
|
||||
defaultLanguage = language.English
|
||||
)
|
||||
|
||||
// Load all configs that are reachable in the given paths
|
||||
func loadConfigs(pp ...string) (ll []*Language, err error) {
|
||||
func loadConfigs(fsys fs.FS) (ll []*Language, err error) {
|
||||
var (
|
||||
pattern string
|
||||
f *os.File
|
||||
configs []string
|
||||
sub fs.FS
|
||||
lang *Language
|
||||
configs = make([]string, 0)
|
||||
)
|
||||
|
||||
// @todo reads language files from all paths
|
||||
for _, p := range pp {
|
||||
pattern = filepath.Join(p, "*", "config.yaml")
|
||||
configs, err = filepath.Glob(pattern)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s glob failed under: %v", pattern, err)
|
||||
configs, err = fs.Glob(fsys, "*/config.yaml")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, config := range configs {
|
||||
if sub, err = fs.Sub(fsys, filepath.Dir(config)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, c := range configs {
|
||||
tag := language.Make(filepath.Base(filepath.Dir(c)))
|
||||
|
||||
lang := &Language{
|
||||
Tag: tag,
|
||||
src: filepath.Dir(c),
|
||||
}
|
||||
|
||||
err = func() error {
|
||||
f, err = os.Open(c)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not read %s: %v", p, err)
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
if err = yaml.NewDecoder(f).Decode(&lang); err != nil {
|
||||
return fmt.Errorf("could not decode %s: %v", p, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ll = append(ll, lang)
|
||||
if lang, err = loadConfig(sub, filepath.Base(config)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
lang.Tag = language.Make(filepath.Base(filepath.Dir(config)))
|
||||
lang.src = filepath.Dir(config)
|
||||
|
||||
ll = append(ll, lang)
|
||||
}
|
||||
|
||||
return ll, nil
|
||||
}
|
||||
|
||||
func loadConfig(fsys fs.FS, p string) (lang *Language, err error) {
|
||||
var f fs.File
|
||||
lang = &Language{
|
||||
Tag: language.Make(filepath.Base(filepath.Dir(p))),
|
||||
fs: fsys,
|
||||
}
|
||||
|
||||
f, err = fsys.Open(p)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not read %s: %v", p, err)
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
if err = yaml.NewDecoder(f).Decode(&lang); err != nil {
|
||||
return nil, fmt.Errorf("could not decode %s: %v", p, err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func loadTranslations(lang *Language, dir string) (err error) {
|
||||
func loadTranslations(lang *Language) (err error) {
|
||||
lang.internal = make(internal)
|
||||
lang.external = make(external)
|
||||
|
||||
@@ -78,15 +80,14 @@ func loadTranslations(lang *Language, dir string) (err error) {
|
||||
auxExternal = make(map[string]map[string]map[string]interface{})
|
||||
)
|
||||
|
||||
err = filepath.Walk(dir, func(p string, finfo fs.FileInfo, err error) error {
|
||||
if err != nil || finfo.IsDir() {
|
||||
err = fs.WalkDir(lang.fs, ".", func(p string, entry fs.DirEntry, err error) error {
|
||||
if err != nil || entry.IsDir() {
|
||||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
f *os.File
|
||||
relPath = p[len(dir)+1:]
|
||||
firstSep = strings.Index(relPath, string(filepath.Separator))
|
||||
f fs.File
|
||||
firstSep = strings.Index(p, string(filepath.Separator))
|
||||
)
|
||||
|
||||
if firstSep == -1 {
|
||||
@@ -100,9 +101,9 @@ func loadTranslations(lang *Language, dir string) (err error) {
|
||||
namespace string
|
||||
keyPath string
|
||||
|
||||
ext = path.Ext(relPath)
|
||||
appDir = relPath[:strings.Index(relPath, string(filepath.Separator))]
|
||||
subpath = relPath[len(appDir)+1:]
|
||||
ext = path.Ext(p)
|
||||
appDir = p[:firstSep]
|
||||
subpath = p[len(appDir)+1:]
|
||||
nsDirIndex = strings.Index(subpath, string(filepath.Separator))
|
||||
nsDotIndex = strings.LastIndex(subpath, ".")
|
||||
|
||||
@@ -130,8 +131,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
|
||||
namespace = subpath[:nsDotIndex]
|
||||
}
|
||||
|
||||
f, err = os.Open(p)
|
||||
if err != nil {
|
||||
if f, err = lang.fs.Open(p); err != nil {
|
||||
return fmt.Errorf("could not open %s: %w", p, err)
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
|
||||
}
|
||||
|
||||
if err = procInternal(lang.internal[namespace], keyPath, f); err != nil {
|
||||
return fmt.Errorf("could not process %s: %v", relPath, err)
|
||||
return fmt.Errorf("could not process %s: %v", p, err)
|
||||
}
|
||||
} else {
|
||||
if isJSON {
|
||||
@@ -166,7 +166,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
|
||||
}
|
||||
|
||||
if err = procExternal(auxExternal[appDir][namespace], keyPath, f); err != nil {
|
||||
return fmt.Errorf("could not process %s: %v", relPath, err)
|
||||
return fmt.Errorf("could not process %s: %v", p, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package locale
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
@@ -23,8 +24,15 @@ type (
|
||||
l sync.RWMutex
|
||||
|
||||
// location of the language files
|
||||
// this is mainly for logging/debugging purposes
|
||||
//
|
||||
// This value is empty when loading
|
||||
// embedded languages
|
||||
src string
|
||||
|
||||
// pointer to the place we loaded files from
|
||||
fs fs.FS
|
||||
|
||||
Tag language.Tag
|
||||
Name string
|
||||
|
||||
|
||||
+68
-18
@@ -4,9 +4,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
locale "github.com/cortezaproject/corteza-locale"
|
||||
"github.com/cortezaproject/corteza-server/pkg/options"
|
||||
"go.uber.org/zap"
|
||||
"golang.org/x/text/language"
|
||||
@@ -86,9 +88,17 @@ func (svc *service) Tags() (tt []language.Tag) {
|
||||
return
|
||||
}
|
||||
|
||||
// Reload all language configurations (as configured via path options) and
|
||||
// all translation files
|
||||
func (svc *service) Reload() error {
|
||||
// Reload all embedded (via github.com/cortezaproject/corteza-locale package)
|
||||
// and imported (from one or more paths found in LOCALE_PATH) translations
|
||||
func (svc *service) Reload() (err error) {
|
||||
var (
|
||||
i int
|
||||
lang *Language
|
||||
ll, aux []*Language
|
||||
|
||||
logFields = make([]zap.Field, 0)
|
||||
)
|
||||
|
||||
svc.l.RLock()
|
||||
defer svc.l.RUnlock()
|
||||
|
||||
@@ -98,42 +108,82 @@ func (svc *service) Reload() error {
|
||||
)
|
||||
|
||||
svc.set = make(map[language.Tag]*Language)
|
||||
configs, err := loadConfigs(svc.src...)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
// load embedded locales from the corteza-locale package
|
||||
if ll, err = loadConfigs(locale.Languages()); err != nil {
|
||||
return fmt.Errorf("could not load embedded locales: %w", err)
|
||||
} else {
|
||||
// cleanup src and effectively mark the
|
||||
// loaded languages as embedded
|
||||
for _, l := range ll {
|
||||
l.src = ""
|
||||
}
|
||||
}
|
||||
|
||||
for i, lang := range configs {
|
||||
// load imported locales from the configured (LOCALE_PATH) paths
|
||||
for _, p := range svc.src {
|
||||
aux, err = loadConfigs(os.DirFS(p))
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not load imported locales: %w", err)
|
||||
}
|
||||
|
||||
for _, l := range aux {
|
||||
l.src = p + "/" + l.src
|
||||
}
|
||||
|
||||
ll = append(ll, aux...)
|
||||
}
|
||||
|
||||
for i, lang = range ll {
|
||||
logFields = []zap.Field{
|
||||
zap.Stringer("tag", lang.Tag),
|
||||
}
|
||||
|
||||
if !hasTag(lang.Tag, svc.tags) {
|
||||
svc.log.Info(
|
||||
"language skipped (see LOCALE_LANGUAGES and LOCALE_PATH)",
|
||||
svc.log.Debug(
|
||||
"language skipped (not in LOCALE_LANGUAGES)",
|
||||
zap.Stringer("tag", lang.Tag),
|
||||
)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
if err = loadTranslations(lang, lang.src); err != nil {
|
||||
return err
|
||||
if !lang.Extends.IsRoot() {
|
||||
logFields = append(logFields, zap.Stringer("extends", lang.Extends))
|
||||
}
|
||||
|
||||
svc.log.Info(
|
||||
"language loaded",
|
||||
zap.Stringer("tag", lang.Tag),
|
||||
zap.String("src", lang.src),
|
||||
zap.Stringer("extends", lang.Extends),
|
||||
)
|
||||
if lang.src != "" {
|
||||
logFields = append(logFields, zap.String("imported", lang.src))
|
||||
} else {
|
||||
logFields = append(logFields, zap.Bool("embedded", true))
|
||||
}
|
||||
|
||||
if err = loadTranslations(lang); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if i == 0 && svc.def == nil {
|
||||
// set first one as default
|
||||
svc.def = lang
|
||||
}
|
||||
|
||||
if svc.set[lang.Tag] != nil {
|
||||
svc.log.Info(
|
||||
"language overloaded",
|
||||
logFields...,
|
||||
)
|
||||
} else {
|
||||
svc.log.Info(
|
||||
"language loaded",
|
||||
logFields...,
|
||||
)
|
||||
}
|
||||
|
||||
svc.set[lang.Tag] = lang
|
||||
}
|
||||
|
||||
// Do another pass and link all extended languages
|
||||
for _, lang := range svc.set {
|
||||
for _, lang = range svc.set {
|
||||
if lang.Extends.IsRoot() {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -25,4 +25,4 @@ props:
|
||||
type: bool
|
||||
description: |-
|
||||
When enabled, Corteza reloads language files on every request
|
||||
Enable this for debugging or developing
|
||||
Enable this for debugging or developing.
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/.idea
|
||||
/coverage.txt
|
||||
/*.iml
|
||||
/.env*
|
||||
/.dev*
|
||||
/.*cover.out*
|
||||
/overalls*
|
||||
profile.coverprofile
|
||||
/public_html
|
||||
/build
|
||||
/var
|
||||
/TODO
|
||||
/gin-bin
|
||||
/.vscode
|
||||
/federation/etc/.env*
|
||||
|
||||
# https://github.com/nektos/act
|
||||
/.act*
|
||||
/workflow
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
# Contributing
|
||||
|
||||
Thank you for helping us make [our vision](https://cortezaproject.org/about/what-is-corteza/) a reality!
|
||||
All contributions are welcome; from bug reports, codefixes, and new features!
|
||||
|
||||
## Ground Rules
|
||||
|
||||
Corteza projects are [Apache 2.0 licensed](LICENSE) and accept contributions via GitHub pull requests.
|
||||
|
||||
Cover the [terminology](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/release-cycle/index.html#_terminology) for the development process and versioning.
|
||||
|
||||
Cover the [Git and GitHub](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/release-cycle/index.html#_github) ground rules regarding branch naming and conventions.
|
||||
|
||||
When you wish to start working on a code contribution, assign yourself to a GitHub issue.
|
||||
If there is no issue, create one beforehand.
|
||||
|
||||
A quick summary on [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/):
|
||||
|
||||
1. Separate subject from body with a blank line
|
||||
2. Limit the subject line to 50 characters
|
||||
3. Capitalize the subject line
|
||||
4. Do not end the subject line with a period
|
||||
5. Use the imperative mood in the subject line
|
||||
6. Wrap the body at 72 characters
|
||||
7. Use the body to explain what and why vs. how
|
||||
|
||||
## Core repositories
|
||||
|
||||
### Corteza Server
|
||||
|
||||
Corteza server is the back-end of the Corteza ecosystem.
|
||||
The core logic is written in GO, using [go-chi](https://pkg.go.dev/github.com/go-chi/chi@v3.3.4+incompatible?utm_source=gopls) for the routing.
|
||||
|
||||
Communication between the Corteza server and web applications is done using the REST API and web sockets.
|
||||
Communication between back-end services (Corteza server and Corredor) is done using gRPC.
|
||||
|
||||
The [Developer Guide/Corteza Server](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/structure.html), and the feature insight documents.
|
||||
|
||||
|
||||
### Corteza Web Applications
|
||||
|
||||
The web applications are written in Vue.js and provide the user interface to interact with the entire system.
|
||||
The repositories:
|
||||
|
||||
1. [corteza-webapp-one](https://github.com/cortezaproject/corteza-webapp-one)
|
||||
2. [corteza-webapp-admin](https://github.com/cortezaproject/corteza-webapp-admin)
|
||||
3. [corteza-webapp-compose](https://github.com/cortezaproject/corteza-webapp-compose)
|
||||
4. [corteza-webapp-workflow](https://github.com/cortezaproject/corteza-webapp-workflow)
|
||||
|
||||
Communication between the Corteza server and web applications is done using the REST API and web sockets.
|
||||
|
||||
The [Developer Guide/Corteza Web Applications](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/structure.html), and the feature insight documents.
|
||||
|
||||
### Documentation
|
||||
|
||||
The documentation is written in [AsciiDoc](https://asciidoc.org/) and compiled using [Antora](https://antora.org/).
|
||||
The source code is available on the [GitHub cortezaproject/corteza-docs repository](https://github.com/cortezaproject/corteza-docs); the generated output is available on the [documentation page](http://docs.cortezaproject.org/).
|
||||
|
||||
The [Developer Guide/Documentation](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html) covers the [conventions](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html#_conventions), [writing guidelines](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html#documentation-writing-guidelines), as well as some [examples](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/examples/index.html) to help you get started.
|
||||
|
||||
## Bug reporting
|
||||
|
||||
Please submit any bug reports on the **issues** section of the corresponding GitHub repository.
|
||||
If you are unsure where to submit the issue, or you are unsure if this is a feature; reach out to us on [our forum](https://forum.cortezaproject.org/).
|
||||
|
||||
## Feature requests
|
||||
|
||||
Feature and improvement requests should be submitted on [our forum](https://forum.cortezaproject.org/).
|
||||
Before opening a new topic, search around to see if there are any similar topics that would cover your case.
|
||||
|
||||
## DCO
|
||||
|
||||
By contributing to this project you agree to the Developer Certificate of Origin (DCO).
|
||||
This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution.
|
||||
See the [DCO](DCO) file for details.
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
Developer Certificate of Origin
|
||||
Version 1.1
|
||||
|
||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||
660 York Street, Suite 102,
|
||||
San Francisco, CA 94110 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
# Guide for frontend and backend developers
|
||||
|
||||
This guide is for corteza frontend and backend developers.
|
||||
It shows how to connect translations from corteza-locale repository to frontend web applications and backend server.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Clone corteza-locale repository to a separate folder.
|
||||
|
||||
## Fronted developers
|
||||
|
||||
### Using corteza-server Docker container to support webapp development
|
||||
|
||||
#### Configuration with Docker Compose
|
||||
|
||||
See the `docker-compose.yaml` in the root of the repository.
|
||||
|
||||
1. Run it by executing (inside cloned `corteza-locale` repository):
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
2. Fix `config.js` in the web application to point to the server
|
||||
```js
|
||||
window.CortezaAPI = `//localhost:1818/api`
|
||||
```
|
||||
|
||||
#### Verify the loaded languages
|
||||
|
||||
```shell
|
||||
docker-compose logs | grep locale | head
|
||||
```
|
||||
|
||||
This will show you first couple (head) filtered (grep) log lines.
|
||||
If some of them contain "language loaded" that reflect the setup in your `corteza-locale/src` you have successfully loaded translations into Corteza server.
|
||||
|
||||
#### Verify by loading translations
|
||||
```shell
|
||||
curl 'http://localhost:1818/api/system/locale/en/corteza-webapp-admin' -H "Accept: application/json" -H 'Accept-Language: en'
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## Backend developers
|
||||
|
||||
Corteza server loads, parses and serves all languages files for all frontend web applications and server.
|
||||
|
||||
### Changes in configuration
|
||||
|
||||
The following chapter assumes your Corteza server development env is already set-up
|
||||
|
||||
Add `LOCALE_PATH` and `LOCALE_LOG` to your .env file
|
||||
```dotenv
|
||||
LOCALE_PATH=../corteza-locale/src
|
||||
LOCALE_LOG=true
|
||||
```
|
||||
|
||||
Path can be absolute or relative and should contain subdirectories with languages.
|
||||
You can remove or comment-out LOCALE_LOG if you find the setting to verbose.
|
||||
|
||||
|
||||
#### Verify the loaded languages
|
||||
|
||||
When you (re)start your corteza server yu should see the following log among the first logged lines:
|
||||
|
||||
```
|
||||
20:24:42.881 INFO locale locale/locale.go:81 reloading {"src": ["../corteza-locale/src"]}
|
||||
20:24:42.899 INFO locale locale/load.go:66 language loaded {"tag": "en", "config": "../corteza-locale/src/en/config.yaml"}
|
||||
```
|
||||
|
||||
You will see additional log lines for every language loaded.
|
||||
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
<h1 align="center">
|
||||
<img width="300px" src=".github/assets/corteza_logo.svg" />
|
||||
<br />
|
||||
<p>Corteza translations and locales</p>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](https://img.shields.io/docker/pulls/cortezaproject/corteza-server)
|
||||
[](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=stable%20version)
|
||||
[](https://img.shields.io/github/license/cortezaproject/corteza-server)
|
||||
|
||||
[](https://goreportcard.com/report/github.com/cortezaproject/corteza-server)
|
||||
[](https://drone.crust.tech/cortezaproject/corteza)
|
||||
[](https://img.shields.io/codecov/c/github/cortezaproject/corteza-server)
|
||||
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
**Corteza Locale** provides the centralized repository for all corteza translations.
|
||||
|
||||
These files are automatically pulled and bundled into corteza-server when it is built.
|
||||
|
||||
Please follow the [developer's guide](DEV.md) to configure in your local development environment with translations.
|
||||
|
||||
## What is Corteza?
|
||||
|
||||
<div align="center">
|
||||
<img style="max-height: 350px;" src=".github/assets/corteza_dashboard.png" />
|
||||
</div>
|
||||
|
||||
Corteza is the only **100% free**, **open-source**, **standardized** and **enterprise-grade** Low-code platform.
|
||||
It is developed entirely in the public domain and maintained by [Crust Technology](https://www.crust.tech/), its founder.
|
||||
|
||||
With Corteza, you can quickly **build scalable cloud applications** that are **integrable** with external services and **accessible (WCAG 2.1)**.
|
||||
|
||||
### Core features:
|
||||
|
||||
* quick setup,
|
||||
* flexible and intuitive low-code configuration,
|
||||
* powerful automation system using workflows and automation scripts,
|
||||
* flexible reporting capabilities,
|
||||
* secure RBAC access control system.
|
||||
|
||||
## Online demo
|
||||
|
||||
You can check out Corteza online by creating an account on our community instance https://latest.cortezaproject.org.
|
||||
|
||||
## Deploying Corteza
|
||||
|
||||
Refer to the [DevOps guide](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/index.html) for a complete guide on how to get Corteza up and running.
|
||||
Additionally, we've provided some [video instructions](https://forum.cortezaproject.org/t/videos-on-how-to-set-up-corteza/91).
|
||||
|
||||
Quick references:
|
||||
|
||||
* [data backup and restore](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/maintenance/backups.html)
|
||||
* [troubleshooting](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/maintenance/troubleshooting.html)
|
||||
* [setting up an email relay](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/extension-requirements/email-relay.html)
|
||||
* [setting up sink routes](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/extension-requirements/sink-route.html)
|
||||
|
||||
## Upgrading Corteza
|
||||
|
||||
[](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=latest%20stable%20version)
|
||||
|
||||
Refer to the [changelog](https://docs.cortezaproject.org/corteza-docs/2021.6/changelog/index.html) and the [upgrade guide](https://docs.cortezaproject.org/corteza-docs/2021.6/upgrade-guide/index.html) to upgrade your Corteza instance.
|
||||
|
||||
## Using Corteza
|
||||
|
||||
Refer to the [End-User Guide](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/index.html) to learn the built-in applications and features from the end-user perspective.
|
||||
|
||||
Quick references:
|
||||
|
||||
* [Corteza CRM](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/crm/index.html)
|
||||
* [Corteza Service Solution](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/service-solution/index.html)
|
||||
|
||||
## Create with Corteza
|
||||
|
||||
Refer to the [Integrator Guide](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/index.html) to learn how you can build on the core features to create virtually anything.
|
||||
|
||||
Quick references:
|
||||
|
||||
* [Corteza Compose configuration](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/compose-configuration/index.html)
|
||||
* automation using [workflows](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/workflows/index.html) and [automation scripts](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/automation-scripts/index.html)
|
||||
* [using the REST API](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/accessing-corteza/index.html),
|
||||
|
||||
## Contributing
|
||||
|
||||
Refer to the [Developer Guide/Corteza Server](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html) document for details regarding the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/structure.html), and the feature insight documents.
|
||||
|
||||
Refer to the [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and code of conduct.
|
||||
|
||||
## Community
|
||||
|
||||
Reach out to us on [our forum](https://forum.cortezaproject.org/).
|
||||
|
||||
## License
|
||||
|
||||
Corteza is released under the Apache-2.0 license.
|
||||
Refer to the [LICENSE](LICENSE) file for additional information.
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
version: '3.5'
|
||||
|
||||
# This is a working sample docker compose configuration file
|
||||
# that should speed-up your migration to new centralized i18n setup
|
||||
|
||||
services:
|
||||
server:
|
||||
# image tag (i18n-dev-temp) is temporary and will change in the future!
|
||||
image: cortezaproject/corteza-server:i18n-dev-temp
|
||||
restart: on-failure
|
||||
depends_on: [ db ]
|
||||
ports: [ "127.0.0.1:1818:80" ]
|
||||
environment:
|
||||
HTTP_WEBAPP_ENABLED: 'true'
|
||||
DOMAIN: localhost:1818
|
||||
DB_DSN: mysql://dbuser:dbpass@tcp(db:3306)/corteza_i18n?collation=utf8mb4_general_ci
|
||||
|
||||
# The two important settings (for i18n dev)
|
||||
LOCALE_PATH: /corteza-locale/src
|
||||
LOCALE_LOG: 'true'
|
||||
volumes:
|
||||
- .:/corteza-locale:ro
|
||||
|
||||
db:
|
||||
# MySQL Database
|
||||
# See https://hub.docker.com/r/percona/percona-server for details
|
||||
image: percona:8.0
|
||||
restart: on-failure
|
||||
environment:
|
||||
# To be picked up by percona image when creating the database
|
||||
# Must match with DB_DSN settings inside .env
|
||||
#
|
||||
# Warning: these are values that are only used on 1st start
|
||||
# if you want to change it later, you need to do that
|
||||
# manually inside db container
|
||||
MYSQL_DATABASE: corteza_i18n
|
||||
MYSQL_USER: dbuser
|
||||
MYSQL_PASSWORD: dbpass
|
||||
MYSQL_ROOT_PASSWORD: dbpass
|
||||
healthcheck: { test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"], timeout: 20s, retries: 10 }
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
module github.com/cortezaproject/corteza-locale
|
||||
|
||||
go 1.16
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package locale
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// This helps us import translations into corteza-server as a module
|
||||
// dependency
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"io/fs"
|
||||
)
|
||||
|
||||
//go:embed src/*
|
||||
var languages embed.FS
|
||||
|
||||
// Languages returns embedded translation files
|
||||
// as a virtual filesystem
|
||||
func Languages() fs.FS {
|
||||
sub, _ := fs.Sub(languages, "src")
|
||||
return sub
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
name: English
|
||||
|
||||
#extends: base
|
||||
|
||||
|
||||
# Language defaults, can be overwritten in the configuration
|
||||
#formats:
|
||||
# datetime:
|
||||
# full: 'YYYY-MM-DD hh:mm:ss'
|
||||
# short: 'YYYY-MM-DD'
|
||||
# time: 'hh:mm'
|
||||
#
|
||||
# currency: '$'
|
||||
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
template:
|
||||
title: Authorized clients
|
||||
|
||||
list:
|
||||
authorized-on: Authorized on
|
||||
buttons:
|
||||
revoke: Revoke access
|
||||
empty: No authorized clients found
|
||||
|
||||
alerts:
|
||||
removed: Client authorization removed
|
||||
Generated
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
template:
|
||||
title: Change your password
|
||||
form:
|
||||
email:
|
||||
label: E-mail *
|
||||
placeholder: email@domain.ltd
|
||||
aria-label: Email
|
||||
old-password:
|
||||
label: Old password *
|
||||
placeholder: Enter your old password
|
||||
aria-label: Old password
|
||||
new-password:
|
||||
label: New password *
|
||||
placeholder: Enter your new password
|
||||
aria-label: New password
|
||||
button:
|
||||
change-password: Change your password
|
||||
alerts:
|
||||
passw-changed: Password successfully changed.
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
template:
|
||||
title: Internal error
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
version: version {{version}}
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
logged-in-as: You're logged-in as
|
||||
logout: logout
|
||||
Generated
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
template:
|
||||
authorize-client: Finalize the authorization of
|
||||
class:
|
||||
your-profile: Your profile
|
||||
security: Security
|
||||
login-session: Login sessions
|
||||
authorized-clients: Authorized clients
|
||||
Generated
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
template:
|
||||
title: Log in
|
||||
form:
|
||||
email:
|
||||
label: E-mail
|
||||
placeholder: email@domain.ltd
|
||||
password:
|
||||
label: Password
|
||||
placeholder: password
|
||||
button:
|
||||
login-and-remember: Log in and remember me
|
||||
login: Log in
|
||||
continue: Continue
|
||||
links:
|
||||
request-password-reset: Forgot your password?
|
||||
signup: Create a new account
|
||||
external:
|
||||
login-with: Login with {{idp}}
|
||||
|
||||
alerts:
|
||||
logged-in: You are now logged-in.
|
||||
local-disabled: Local accounts disabled
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
template:
|
||||
log-out: Logout successful.
|
||||
log-in: Click here to <a href="{{link}}">log in</a>.
|
||||
Generated
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
template:
|
||||
title: Disable two-factor authentication with TOTP
|
||||
instructions: Disable by entering existing code.
|
||||
button:
|
||||
remove: Remove
|
||||
Generated
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
template:
|
||||
title: Configure two-factor authentication with TOTP
|
||||
enforced: |
|
||||
TOTP multi factor authentication is enforced by Corteza administrator.
|
||||
Please configure it right away.
|
||||
|
||||
instructions: |
|
||||
Corteza uses time based one time passwords (TOTP) as one of the underlying technologies for two-factor authentication. Use one of the applications listed below and type in the secret or scan the QR code.
|
||||
<br />
|
||||
<br />
|
||||
This will enable additional security for your account.
|
||||
<br />
|
||||
<br />
|
||||
You can use one of the following applications:
|
||||
|
||||
lastpass: <a target="_blank" href="{{ link }}">LastPass Authenticator</a>
|
||||
gauth: Google Authenticator for <a target="_blank" href="{{ android }}">Android</a> or <a target="_blank" href="{{ iphone }}">iPhone</a>
|
||||
authy: <a target="_blank" href="{{ link }}">Authy</a>
|
||||
|
||||
form:
|
||||
title: "Complete the configuration by entering code from the authenticator application:"
|
||||
button: Submit
|
||||
|
||||
alerts:
|
||||
text-2FA-enabled: Two factor authentication with TOTP enabled
|
||||
text-2FA-disabled: Two factor authentication with TOTP disabled
|
||||
Generated
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
template:
|
||||
title: Multi-factor authentication
|
||||
|
||||
email:
|
||||
instructions: Check your inbox and enter the received code
|
||||
code: Code
|
||||
verify: Verify
|
||||
resend: Resend
|
||||
confirmed: Email OTP confirmed
|
||||
|
||||
totp:
|
||||
instructions: Check your TOTP application and enter the code you received
|
||||
code: Code
|
||||
confirmed: TOTP confirmed
|
||||
verify: Verify
|
||||
|
||||
alerts:
|
||||
email:
|
||||
resent: Email OTP resent
|
||||
|
||||
topt:
|
||||
valid: TOTP valid
|
||||
Generated
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
template:
|
||||
title: Authorize
|
||||
form:
|
||||
greeting-paragraph: Hello
|
||||
question-for-client: would like to perform actions on this Corteza server on your behalf.
|
||||
buttons:
|
||||
allow: Allow
|
||||
deny: Deny
|
||||
links:
|
||||
mistake: If this is a mistake, please <a href="{{link}}">log out</a>.
|
||||
errors:
|
||||
invalid-user: Cannot continue with unauthorized email, visit <a href="{{link}}">your profile</a> and resolve the issue.
|
||||
alerts:
|
||||
denied: cannot authorize {{client}}, no permissions.
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
template:
|
||||
title: Password reset requested
|
||||
instructions: If the email you entered is found in our database, you'll receive a password reset link to your inbox in a few moments.
|
||||
links: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.
|
||||
alert:
|
||||
inv-exp-passw-token: Invalid or expired password reset token, please repeat password reset request.
|
||||
pass-reset-success: Password successfully reset.
|
||||
pass-reset-disabled: Password reset disabled.
|
||||
Generated
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
template:
|
||||
title: Confirm your email
|
||||
instructions: You should receive email confirmation link to your inbox in a few moments.
|
||||
links: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.
|
||||
Generated
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
template:
|
||||
title: Your profile
|
||||
form:
|
||||
email:
|
||||
label: Email
|
||||
placeholder: email@domain.ltd
|
||||
resend-confirmation-link: Email is not verified, <a href="{{link}}?resend">resend confirmation link.</a>
|
||||
name:
|
||||
label: Full name
|
||||
placeholder: Your full name
|
||||
handle:
|
||||
label: Handle
|
||||
placeholder: Short name, nickname or handle
|
||||
buttons:
|
||||
submit: Update profile
|
||||
alerts:
|
||||
profile-updated: Profile successfully updated.
|
||||
profile-update-fail: Could not update profile due to input errors
|
||||
Generated
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
template:
|
||||
title: Request password reset link
|
||||
form:
|
||||
email:
|
||||
label: E-mail
|
||||
placeholder: email@domain.ltd
|
||||
buttons:
|
||||
request: Request password reset link via email
|
||||
links: <a href="{{signup}}">Create new account</a> or <a href="{{login}}">log in</a>.
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
template:
|
||||
title: Reset your password
|
||||
form:
|
||||
email:
|
||||
label: E-mail
|
||||
placeholder: email@domain.ltd
|
||||
new-password:
|
||||
label: New password
|
||||
placeholder: Set new password
|
||||
buttons:
|
||||
change-password: Change your password
|
||||
Generated
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
template:
|
||||
title: Security
|
||||
|
||||
password:
|
||||
title: Password
|
||||
change-link: Change your password
|
||||
|
||||
mfa:
|
||||
title: Multi-factor authentication
|
||||
totp:
|
||||
title: Additional security with mobile app (time-based one-time-password)
|
||||
enforced: Configured and required on login.
|
||||
disabled: Currently disabled.
|
||||
configure: Configure
|
||||
disable: Disable
|
||||
|
||||
email:
|
||||
title: Additional security with one-time-password over email
|
||||
enforced: Enabled and required on login.
|
||||
disabled: Currently disabled.
|
||||
enable: Configure
|
||||
disable: Disable
|
||||
|
||||
all-disabled: All MFA methods are currently disabled. Ask your administrator to enable them.
|
||||
|
||||
alerts:
|
||||
topt-disabled: Two factor authentication with TOTP disabled
|
||||
Generated
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
template:
|
||||
title: Your session
|
||||
|
||||
list:
|
||||
current: Current session
|
||||
authorized-on: Authorized on
|
||||
same-machine: This machine
|
||||
ip-address: IP Address
|
||||
same-browser: This browser
|
||||
browser: Browser
|
||||
|
||||
expires: Expires
|
||||
expired: Expired
|
||||
today: Today
|
||||
tomorrow: In 1 day
|
||||
soon: In {{days}} days
|
||||
|
||||
delete: Delete this session
|
||||
|
||||
delete-all: Delete all sessions
|
||||
Generated
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
template:
|
||||
title: Sign up
|
||||
form:
|
||||
email:
|
||||
label: E-mail *
|
||||
placeholder: email@domain.ltd
|
||||
password:
|
||||
label: Password *
|
||||
placeholder: Password
|
||||
name:
|
||||
label: Full name
|
||||
placeholder: Your full name
|
||||
nickname:
|
||||
label: Short name, nickname or handle
|
||||
placeholder: Short name, nickname or handle
|
||||
button:
|
||||
sign-up: Submit
|
||||
log-in: Already have an account? <a href="{{link}}">Log in</a>
|
||||
|
||||
alerts:
|
||||
signup-successful: Sign-up successful.
|
||||
email-confirmed-logged-in: Email address confirmed, you're now logged-in.
|
||||
inv-or-exp-token: Invalid or expired email confirmation token, please resend confirmation request.
|
||||
signup-disabled: Signup disabled
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
errors:
|
||||
notAllowedToSetPermissions: not allowed to set permissions
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToDelete: not allowed to delete this session
|
||||
notAllowedToManage: not allowed to manage session's workflow
|
||||
notAllowedToRead: not allowed to read this session
|
||||
notAllowedToSearch: not allowed to search or list sessions
|
||||
notFound: session not found
|
||||
staleData: stale data
|
||||
Generated
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create triggers
|
||||
notAllowedToDelete: not allowed to delete this trigger
|
||||
notAllowedToRead: not allowed to read this trigger
|
||||
notAllowedToSearch: not allowed to search or list triggers
|
||||
notAllowedToUndelete: not allowed to undelete this trigger
|
||||
notAllowedToUpdate: not allowed to update this trigger
|
||||
notFound: trigger not found
|
||||
staleData: stale data
|
||||
Generated
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
errors:
|
||||
disabled: disabled workflow or trigger
|
||||
handleNotUnique: workflow handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create workflows
|
||||
notAllowedToDelete: not allowed to delete this workflow
|
||||
notAllowedToExecute: not allowed to execute this workflow
|
||||
notAllowedToExecuteCorredorStep: not allowed to run corredorExec function, corredor is disabled
|
||||
notAllowedToRead: not allowed to read this workflow
|
||||
notAllowedToSearch: not allowed to search or list workflows
|
||||
notAllowedToUndelete: not allowed to undelete this workflow
|
||||
notAllowedToUpdate: not allowed to update this workflow
|
||||
notFound: workflow not found
|
||||
staleData: stale data
|
||||
unknownWorkflowStep: unknown workflow step
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
errors:
|
||||
notAllowedToSetPermissions: not allowed to set permissions
|
||||
Generated
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
errors:
|
||||
failedToExtractMimeType: could not extract mime type
|
||||
failedToProcessImage: could not process image
|
||||
failedToStoreFile: could not extract store file
|
||||
invalidID: invalid ID
|
||||
invalidModuleID: invalid module ID
|
||||
invalidNamespaceID: invalid namespace ID
|
||||
invalidPageID: invalid page ID
|
||||
invalidRecordID: invalid record ID
|
||||
moduleNotFound: module not found
|
||||
namespaceNotFound: namespace not found
|
||||
notAllowedToCreate: not allowed to create attachments
|
||||
notAllowedToCreateEmptyAttachment: not allowed to create empty attachments
|
||||
notAllowedToCreateRecords: not allowed to create records
|
||||
notAllowedToListAttachments: not allowed to list attachments
|
||||
notAllowedToRead: not allowed to read this module
|
||||
notAllowedToReadNamespace: not allowed to read this namespace
|
||||
notAllowedToReadPage: not allowed to read this page
|
||||
notAllowedToReadRecord: not allowed to read this record
|
||||
notAllowedToSearch: not allowed to search or list modules
|
||||
notAllowedToUpdateNamespace: not allowed to update this namespace
|
||||
notAllowedToUpdatePage: not allowed to update this page
|
||||
notAllowedToUpdateRecord: not allowed to update this record
|
||||
notFound: attachment not found
|
||||
pageNotFound: page not found
|
||||
recordNotFound: record not found
|
||||
Generated
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
errors:
|
||||
handleNotUnique: handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
invalidNamespaceID: invalid or missing namespace ID
|
||||
moduleNotFound: module does not exist
|
||||
namespaceNotFound: namespace does not exist
|
||||
notAllowedToCreate: not allowed to create charts
|
||||
notAllowedToDelete: not allowed to delete this chart
|
||||
notAllowedToRead: not allowed to read this chart
|
||||
notAllowedToReadNamespace: not allowed to read this namespace
|
||||
notAllowedToSearch: not allowed to search or list charts
|
||||
notAllowedToUndelete: not allowed to undelete this chart
|
||||
notAllowedToUpdate: not allowed to update this chart
|
||||
notFound: chart does not exist
|
||||
staleData: stale data
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
errors:
|
||||
handleNotUnique: handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
invalidNamespaceID: invalid or missing namespace ID
|
||||
nameNotUnique: name not unique
|
||||
namespaceNotFound: namespace does not exist
|
||||
notAllowedToCreate: not allowed to create modules
|
||||
notAllowedToDelete: not allowed to delete this module
|
||||
notAllowedToListModules: not allowed to list modules
|
||||
notAllowedToRead: not allowed to read this module
|
||||
notAllowedToReadNamespace: not allowed to read this namespace
|
||||
notAllowedToSearch: not allowed to search or list modules
|
||||
notAllowedToUndelete: not allowed to undelete this module
|
||||
notAllowedToUpdate: not allowed to update this module
|
||||
notFound: module does not exist
|
||||
staleData: stale data
|
||||
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
errors:
|
||||
handleNotUnique: handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create namespaces
|
||||
notAllowedToDelete: not allowed to delete this namespace
|
||||
notAllowedToRead: not allowed to read this namespace
|
||||
notAllowedToSearch: not allowed to search or list namespaces
|
||||
notAllowedToUndelete: not allowed to undelete this namespace
|
||||
notAllowedToUpdate: not allowed to update this namespace
|
||||
notFound: namespace does not exist
|
||||
staleData: stale data
|
||||
Generated
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
errors:
|
||||
failedToDownloadAttachment: 'could not download attachment from {attachmentURL}: {err}'
|
||||
failedToLoadUser: could not load user for {recipient}
|
||||
invalidReceipientFormat: invalid recipient format ({recipient})
|
||||
noRecipients: cannot send email message without recipients
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
errors:
|
||||
handleNotUnique: handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
invalidNamespaceID: invalid or missing namespace ID
|
||||
moduleNotFound: module does not exist
|
||||
namespaceNotFound: namespace does not exist
|
||||
notAllowedToCreate: not allowed to create pages
|
||||
notAllowedToDelete: not allowed to delete this page
|
||||
notAllowedToListPages: not allowed to list pages
|
||||
notAllowedToRead: not allowed to read this page
|
||||
notAllowedToReadNamespace: not allowed to read this namespace
|
||||
notAllowedToSearch: not allowed to search or list pages
|
||||
notAllowedToUndelete: not allowed to undelete this page
|
||||
notAllowedToUpdate: not allowed to update this page
|
||||
notFound: page does not exist
|
||||
staleData: stale data
|
||||
Generated
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
errors:
|
||||
fieldNotFound: no such field {field}
|
||||
importSessionAlreadActive: import session already active
|
||||
invalidID: invalid ID
|
||||
invalidModuleID: invalid or missing module ID
|
||||
invalidNamespaceID: invalid or missing namespace ID
|
||||
invalidReferenceFormat: invalid reference format
|
||||
invalidValueStructure: more than one value for a single-value field {field}
|
||||
moduleNotFoundModule: module not found
|
||||
namespaceNotFound: namespace not found
|
||||
notAllowedToChangeFieldValue: not allowed to change value of field {field}
|
||||
notAllowedToCreate: not allowed to create records
|
||||
notAllowedToDelete: not allowed to delete this record
|
||||
notAllowedToListRecords: not allowed to list records
|
||||
notAllowedToRead: not allowed to read this record
|
||||
notAllowedToReadModule: not allowed to read module
|
||||
notAllowedToReadNamespace: not allowed to read this namespace
|
||||
notAllowedToSearch: not allowed to search or list records
|
||||
notAllowedToUndelete: not allowed to undelete this record
|
||||
notAllowedToUpdate: not allowed to update this record
|
||||
notFound: record not found
|
||||
staleData: stale data
|
||||
unknownBulkOperation: unknown bulk operation {bulkOperation}
|
||||
valueInput: invalid record value input
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
errors:
|
||||
notAllowedToSetPermissions: not allowed to set permissions
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
errors:
|
||||
composeModuleNotFound: compose module not found
|
||||
composeNamespaceNotFound: compose namespace not found
|
||||
invalidID: invalid ID
|
||||
nodeNotFound: node does not exist
|
||||
notAllowedToCreate: not allowed to create modules
|
||||
notAllowedToManage: not allowed to manage this module
|
||||
notFound: module does not exist
|
||||
notUnique: node not unique
|
||||
requestParametersInvalid: request parameters invalid
|
||||
staleData: stale data
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
errors:
|
||||
composeModuleNotFound: compose module not found
|
||||
composeNamespaceNotFound: compose namespace not found
|
||||
federationModuleNotFound: federation module not found
|
||||
moduleMappingExists: module mapping already exists
|
||||
nodeNotFound: node does not exist
|
||||
notAllowedToMap: not allowed to map this module
|
||||
notFound: module mapping does not exist
|
||||
Generated
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
errors:
|
||||
notAllowedToCreate: not allowed to create nodes
|
||||
notAllowedToManage: not allowed to manage this node
|
||||
notAllowedToPair: not allowed to pair this node
|
||||
notAllowedToSearch: not allowed to search or list nodes
|
||||
notFound: node does not exist
|
||||
pairingTokenInvalid: pairing token invalid
|
||||
pairingURIInvalid: 'pairing URI invalid: {err}'
|
||||
pairingURISourceIDInvalid: pairing URI without source node ID
|
||||
pairingURITokenInvalid: pairing URI with invalid pairing token
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
errors:
|
||||
nodeNotFound: node does not exist
|
||||
notFound: node_sync does not exist
|
||||
Generated
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
errors:
|
||||
federationSyncStructureChanged: module structure changed
|
||||
invalidID: invalid ID
|
||||
nodeNotFound: node does not exist
|
||||
notAllowedToCreate: not allowed to create modules
|
||||
notAllowedToManage: not allowed to manage this module
|
||||
notAllowedToMap: not allowed to map this module
|
||||
notFound: module does not exist
|
||||
notUnique: node not unique
|
||||
staleData: stale data
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
errors:
|
||||
unauthorized: unauthorized
|
||||
unauthorizedScope: unauthorized scope
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
errors:
|
||||
notAllowedToSetPermissions: not allowed to set permissions
|
||||
Generated
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
invalidRoute: invalid route
|
||||
notAllowedToCreate: not allowed to create a filter
|
||||
notAllowedToDelete: not allowed to delete this filter
|
||||
notAllowedToRead: not allowed to read this filter
|
||||
notAllowedToUndelete: not allowed to undelete this filter
|
||||
notAllowedToUpdate: not allowed to update this filter
|
||||
notFound: filter not found
|
||||
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
errors:
|
||||
alreadyExists: route by that endpoint already exists
|
||||
existsEndpoint: route with this endpoint already exists
|
||||
invalidEndpoint: invalid endpoint
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create a route
|
||||
notAllowedToDelete: not allowed to delete this route
|
||||
notAllowedToExec: not allowed to execute this route
|
||||
notAllowedToRead: not allowed to read this route
|
||||
notAllowedToUndelete: not allowed to undelete this route
|
||||
notAllowedToUpdate: not allowed to update this route
|
||||
notFound: route not found
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create applications
|
||||
notAllowedToDelete: not allowed to delete this application
|
||||
notAllowedToManageFlag: not allowed to manage flags for applications
|
||||
notAllowedToManageFlagGlobal: not allowed to manage global flags for applications
|
||||
notAllowedToRead: not allowed to read this application
|
||||
notAllowedToSearch: not allowed to search or list applications
|
||||
notAllowedToUndelete: not allowed to undelete this application
|
||||
notAllowedToUpdate: not allowed to update this application
|
||||
notFound: application not found
|
||||
Generated
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
errors:
|
||||
failedToExtractMimeType: could not extract mime type
|
||||
failedToProcessImage: could not process image
|
||||
failedToStoreFile: could not extract store file
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create attachments
|
||||
notAllowedToCreateEmptyAttachment: not allowed to create empty attachments
|
||||
notAllowedToListAttachments: not allowed to list attachments
|
||||
notFound: attachment not found
|
||||
Generated
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
errors:
|
||||
credentialsLinkedToInvalidUser: credentials {credentials.kind} linked to disabled or deleted user {user}
|
||||
disabledMFAWithEmailOTP: multi factor authentication with email OTP is disabled
|
||||
disabledMFAWithTOTP: multi factor authentication with TOTP is disabled
|
||||
enforcedMFAWithEmailOTP: OTP over email is enforced and cannot be disabled
|
||||
enforcedMFAWithTOTP: TOTP is enforced and cannot be disabled
|
||||
externalDisabledByConfig: external authentication (using external authentication provider) is disabled
|
||||
failedUnconfirmedEmail: system requires confirmed email before logging in
|
||||
internalLoginDisabledByConfig: internal login (username/password) is disabled
|
||||
internalSignupDisabledByConfig: internal sign-up (username/password) is disabled
|
||||
invalidCredentials: invalid username and password combination
|
||||
invalidEmailFormat: invalid email
|
||||
invalidEmailOTP: invalid code
|
||||
invalidHandle: invalid handle
|
||||
invalidTOTP: invalid code
|
||||
invalidToken: invalid token
|
||||
notAllowedToConfigureTOTP: not allowed to configure TOTP
|
||||
notAllowedToImpersonate: not allowed to impersonate this user
|
||||
notAllowedToRemoveTOTP: not allowed to remove TOTP
|
||||
passwodResetFailedOldPasswordCheckFailed: failed to change password, old password does not match
|
||||
passwordChangeFailedForUnknownUser: failed to change password for the unknown user
|
||||
passwordNotSecure: provided password is not secure; use longer password with more non-alphanumeric character
|
||||
passwordResetDisabledByConfig: password reset is disabled
|
||||
profileWithoutValidEmail: external authentication provider returned profile without valid email
|
||||
unconfiguredTOTP: TOTP not configured
|
||||
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create auth clients
|
||||
notAllowedToDelete: not allowed to delete this auth client
|
||||
notAllowedToRead: not allowed to read this auth client
|
||||
notAllowedToSearch: not allowed to search or list auth clients
|
||||
notAllowedToUndelete: not allowed to undelete this auth client
|
||||
notAllowedToUpdate: not allowed to update this auth client
|
||||
notFound: auth client not found
|
||||
unableToChangeDefaultClientHandle: unable to change the handle of the default auth client
|
||||
unableToDeleteDefaultClient: unable to delete the default auth client
|
||||
unableToDisableDefaultClient: unable to disable the default auth client
|
||||
Generated
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
errors:
|
||||
alreadyExists: queue by that name already exists
|
||||
invalidConsumer: invalid consumer
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create a queue
|
||||
notAllowedToDelete: not allowed to delete this queue
|
||||
notAllowedToRead: not allowed to read this queue
|
||||
notAllowedToReadFrom: not allowed to read messages from this queue
|
||||
notAllowedToSearch: not allowed to search or list queues
|
||||
notAllowedToUndelete: not allowed to undelete this queue
|
||||
notAllowedToUpdate: not allowed to update this queue
|
||||
notAllowedToWriteTo: not allowed to add messages to this queue
|
||||
notFound: queue not found
|
||||
Generated
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToAssign: not allowed to assign reminders to other users
|
||||
notAllowedToDismiss: not allowed to dismiss reminders of other users
|
||||
notAllowedToRead: not allowed to read reminders of other users
|
||||
notFound: reminder not found
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
errors:
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create reports
|
||||
notAllowedToDelete: not allowed to delete this report
|
||||
notAllowedToListReports: not allowed to list reports
|
||||
notAllowedToRead: not allowed to read this report
|
||||
notAllowedToRun: not allowed to run this report
|
||||
notAllowedToSearch: not allowed to list or search reports
|
||||
notAllowedToUndelete: not allowed to undelete this report
|
||||
notAllowedToUpdate: not allowed to update this report
|
||||
notFound: report not found
|
||||
Generated
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
errors:
|
||||
handleNotUnique: role handle not unique
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
nameNotUnique: role name not unique
|
||||
notAllowedToArchive: not allowed to archive this role
|
||||
notAllowedToCreate: not allowed to create roles
|
||||
notAllowedToDelete: not allowed to delete this role
|
||||
notAllowedToManageMembers: not allowed to manage role members
|
||||
notAllowedToRead: not allowed to read this role
|
||||
notAllowedToSearch: not allowed to search or list roles
|
||||
notAllowedToUnarchive: not allowed to unarchive this role
|
||||
notAllowedToUndelete: not allowed to undelete this role
|
||||
notAllowedToUpdate: not allowed to update this role
|
||||
notFound: role not found
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
errors:
|
||||
badSinkParamEncoding: bad encoding of sink parameters
|
||||
contentLengthExceedsMaxAllowedSize: content length exceeds max size limit
|
||||
failedToCreateEvent: failed to create sink event from request
|
||||
failedToProcess: failed to process request
|
||||
failedToRespond: failed to respond to request
|
||||
failedToSign: 'could not sign request params: {err}'
|
||||
invalidContentType: invalid content-type header
|
||||
invalidHttpMethod: invalid HTTP method
|
||||
invalidPath: invalid path
|
||||
invalidSignature: invalid signature
|
||||
invalidSignatureParam: invalid sink signature parameter
|
||||
invalidSinkRequestUrlParams: invalid sink request url params
|
||||
misplacedSignature: signature misplaced
|
||||
missingSignature: missing sink signature parameter
|
||||
processingError: sink request process error
|
||||
signatureExpired: signature expired
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
errors:
|
||||
notAllowedToReadStatistics: not allowed to read statistics
|
||||
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
errors:
|
||||
cannotRenderPartial: cannot render partial templates
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create templates
|
||||
notAllowedToDelete: not allowed to delete this template
|
||||
notAllowedToRead: not allowed to read this template
|
||||
notAllowedToRender: not allowed to render this template
|
||||
notAllowedToSearch: not allowed to search or list templates
|
||||
notAllowedToUndelete: not allowed to undelete this template
|
||||
notAllowedToUpdate: not allowed to update this template
|
||||
notFound: template not found
|
||||
Generated
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
errors:
|
||||
emailNotUnique: email not unique
|
||||
handleNotUnique: handle not unique
|
||||
invalidEmail: Invalid email! {{resource}}
|
||||
invalidHandle: invalid handle
|
||||
invalidID: invalid ID
|
||||
notAllowedToCreate: not allowed to create users
|
||||
notAllowedToCreateSystem: not allowed to create system users
|
||||
notAllowedToDelete: not allowed to delete this user
|
||||
notAllowedToListUsers: not allowed to list users
|
||||
notAllowedToRead: not allowed to read this user
|
||||
notAllowedToSearch: not allowed to list or search users
|
||||
notAllowedToSuspend: not allowed to suspend this user
|
||||
notAllowedToUndelete: not allowed to undelete this user
|
||||
notAllowedToUnsuspend: not allowed to unsuspend this user
|
||||
notAllowedToUpdate: not allowed to update this user
|
||||
notAllowedToUpdateSystem: not allowed to update system users
|
||||
notFound: user not found
|
||||
passwordNotSecure: provided password is not secure; use longer password with more non-alphanumeric character
|
||||
usernameNotUnique: username not unique
|
||||
Generated
Vendored
+271
@@ -0,0 +1,271 @@
|
||||
automation:
|
||||
add: Add script
|
||||
edit:
|
||||
asyncHelp: Do not wait for results and ignore errors. Incompatible with critical flag.
|
||||
asyncLabel: Run this script asynchronously
|
||||
codeTabLabel: Code
|
||||
criticalHelp: Wait until this script is executed. In case of errors, abort execution of other scripts and before* trigger
|
||||
criticalLabel: Critical script
|
||||
delete: Delete script
|
||||
enabledHelp: Disabled scripts will be ignored
|
||||
enabledLabel: Enabled
|
||||
mailAutomationTriggers:
|
||||
addMatcher: Add condition
|
||||
addTrigger: Add trigger
|
||||
delete: Delete trigger
|
||||
deleteTrigger: Delete
|
||||
enable: Enable trigger
|
||||
matchAll: Must match all conditions
|
||||
matcher:
|
||||
fields:
|
||||
bcc: BCC
|
||||
cc: CC
|
||||
from: From
|
||||
placeholder: Mail header field
|
||||
replyTo: Reply To
|
||||
subject: Subject
|
||||
to: To
|
||||
match: Value to match
|
||||
operators:
|
||||
equal-ci: Match full
|
||||
placeholder: Operator
|
||||
prefix-ci: Match prefix
|
||||
regex: Regex
|
||||
suffix-ci: Match suffix
|
||||
user: Existing user
|
||||
tabLabel: Mail triggers
|
||||
nameLabel: Name
|
||||
namePlaceholder: Automation script name
|
||||
runAsCurrentUser: Run as "{{ user }}"
|
||||
runAsHelp: Script runner
|
||||
scheduledTriggers:
|
||||
tabLabel: Scheduled
|
||||
securityLabel: Security
|
||||
settingsTabLabel: Settings
|
||||
timeoutHelp: How much time do we wait before aborting the script? Value in milliseconds (1000ms = 1s). It defaults (when 0) to 2s with 30s as maximum. Consult with your administrator for exact numbers and limitations.
|
||||
timeoutLabel: Script execution timeout
|
||||
timeoutPlaceholder: "1500"
|
||||
title: Automation script
|
||||
userPickerPlaceholder: Select user
|
||||
import: Import automation script(s)
|
||||
list:
|
||||
column:
|
||||
label:
|
||||
async: Async.
|
||||
critical: Critical
|
||||
enabled: Enabled
|
||||
runAs: Run As
|
||||
runInUA: In browser
|
||||
unnamed: (Unnamed script)
|
||||
manage: Manage automation scripts ({{count}})
|
||||
manage-id-permissions: Manage permissions for this script
|
||||
manage-wc-permissions: Manage permissions for all scripts
|
||||
newLabel: Create a new script
|
||||
newPlaceholder: Script name
|
||||
testing:
|
||||
load: Load
|
||||
parametersHeadline: 'Parameters & payload:'
|
||||
resultsHeadline: 'Results:'
|
||||
testInBrowser: Test in Browser
|
||||
testInCorredor: Test in Corredor
|
||||
warning: ""
|
||||
title: List of automation script
|
||||
general:
|
||||
notFound: 'Not found'
|
||||
label:
|
||||
"no": "No"
|
||||
submit: Submit
|
||||
"yes": "Yes"
|
||||
logout: Logout
|
||||
noAccess: You do not have permissions to access Admin panel
|
||||
pagination:
|
||||
next: Next
|
||||
prev: Prev
|
||||
navigation:
|
||||
adminPanel: Admin panel
|
||||
automation: Automation
|
||||
chart: Charts
|
||||
configuration: Configuration
|
||||
help:
|
||||
documentation: Documentation
|
||||
feedback: Send feedback
|
||||
forum: Help
|
||||
version: 'Version:'
|
||||
module: Modules
|
||||
more: More
|
||||
namespace: Namespaces
|
||||
noPageTitle: No page title
|
||||
page: Pages
|
||||
publicPages: Public pages
|
||||
userSettings:
|
||||
changePassword: Change password
|
||||
loggedInAs: Logged in as {{user}}
|
||||
logout: Logout
|
||||
profile: Profile
|
||||
permission:
|
||||
automationWorkflow:
|
||||
all: all workflows
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete this workflow
|
||||
title: Delete any workflow
|
||||
execute:
|
||||
description: 'Default: deny'
|
||||
specific: Execute this workflow
|
||||
title: Execute any workflow
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read this workflow
|
||||
title: Read any workflow
|
||||
sessionsManage:
|
||||
description: 'Default: deny'
|
||||
specific: Manage sessions for this workflow
|
||||
title: Manage all sessions
|
||||
triggersManage:
|
||||
description: 'Default: deny'
|
||||
specific: Manage triggers for this workflow
|
||||
title: Manage all triggers
|
||||
undelete:
|
||||
description: 'Default: deny'
|
||||
specific: Undelete this workflow
|
||||
title: Undelete any workflow
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update this workflow
|
||||
title: Update any workflow
|
||||
specific: workflow "{{target}}"
|
||||
base:
|
||||
compose: Compose
|
||||
system: System
|
||||
resetBack: Reset back to "{{current}}"
|
||||
saveChanges: Save changes
|
||||
setFor: Set permissions for {{target}}
|
||||
systemApplication:
|
||||
all: all applications
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete {{target}}
|
||||
title: Delete any application
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read {{target}}
|
||||
title: Read any application
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update {{target}}
|
||||
title: Update any application
|
||||
specific: application "{{target}}"
|
||||
systemApigwRoute:
|
||||
all: all routes
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete {{target}}
|
||||
title: Delete any route
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read {{target}}
|
||||
title: Read any route
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update {{target}}
|
||||
title: Update any route
|
||||
specific: route "{{target}}"
|
||||
systemAuthClient:
|
||||
all: all auth clients
|
||||
operations:
|
||||
authorize:
|
||||
description: 'User can authorize (use) this client. Default: deny'
|
||||
specific: Authorize client "{{target}}
|
||||
title: Authorize any client
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete client "{{target}}
|
||||
title: Delete any client
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read client "{{target}}
|
||||
title: Read any client
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update client "{{target}}
|
||||
title: Update any client
|
||||
specific: auth client "{{target}}"
|
||||
systemRole:
|
||||
all: all roles
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete {{target}}
|
||||
title: Delete any role
|
||||
membersManage:
|
||||
description: 'Default: deny'
|
||||
specific: Manage members for {{target}}
|
||||
title: Manage members for any role
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read {{target}}
|
||||
title: Read any role
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update {{target}}
|
||||
title: Update any role
|
||||
specific: role "{{target}}"
|
||||
systemTemplate:
|
||||
all: all templates
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete {{target}}
|
||||
title: Delete any template
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read {{target}}
|
||||
title: Read any template
|
||||
render:
|
||||
description: 'Default: deny'
|
||||
specific: Render {{target}}
|
||||
title: Render any template
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update {{target}}
|
||||
title: Update any template
|
||||
specific: template "{{target}}"
|
||||
systemUser:
|
||||
all: all users
|
||||
operations:
|
||||
delete:
|
||||
description: 'Default: deny'
|
||||
specific: Delete {{target}}
|
||||
title: Delete any user
|
||||
emailUnmask:
|
||||
description: 'Default: deny'
|
||||
specific: Show email details for {{target}}
|
||||
title: Show email details for any user
|
||||
impersonate:
|
||||
description: 'Default: deny'
|
||||
specific: Impersonate this user {{target}}
|
||||
title: Impersonate any user
|
||||
nameUnmask:
|
||||
description: 'Default: deny'
|
||||
specific: Show name details for {{target}}
|
||||
title: Show name details for any user
|
||||
read:
|
||||
description: 'Default: deny'
|
||||
specific: Read {{target}}
|
||||
title: Read any user
|
||||
suspend:
|
||||
description: 'Default: deny'
|
||||
specific: Suspend {{target}}
|
||||
title: Suspend any user
|
||||
unsuspend:
|
||||
description: 'Default: deny'
|
||||
specific: Unsuspend {{target}}
|
||||
title: Unsuspend any user
|
||||
update:
|
||||
description: 'Default: deny'
|
||||
specific: Update {{target}}
|
||||
title: Update any user
|
||||
specific: user "{{target}}"
|
||||
Generated
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
list:
|
||||
rules:
|
||||
add: Add role
|
||||
addRole: Add new role
|
||||
component:
|
||||
operations:
|
||||
grant: Grant permissions on automation
|
||||
sessionsSearch: Search sessions
|
||||
triggersSearch: Search triggers
|
||||
workflowCreate: Create new workflow
|
||||
workflowsSearch: Search workflows
|
||||
type:
|
||||
label: Automation
|
||||
loading: Loading permissions
|
||||
noRole: No role selected
|
||||
notAllowed: Not allowed to set permissions
|
||||
submit: Submit
|
||||
tip1: Click on permission/role cell to allow a specific operation
|
||||
tip2: Use Alt-Click to set explicit deny on operation
|
||||
title: List of rules
|
||||
workflow:
|
||||
operations:
|
||||
delete: Delete workflow
|
||||
execute: Execute workflow
|
||||
read: Read workflow
|
||||
sessionsManage: Manage workflow sessions
|
||||
triggersManage: Manage workflow triggers
|
||||
undelete: Undelete workflow
|
||||
update: Update workflow
|
||||
type:
|
||||
label: Workflow
|
||||
title: Automation permissions
|
||||
navItem:
|
||||
label: Permissions
|
||||
Generated
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
list:
|
||||
columns:
|
||||
updatedAt: Last update
|
||||
filter:
|
||||
absoluteTime: Show absolute time
|
||||
incScriptsWithErrors: Errors ({{ count }})
|
||||
incScriptsWithIterator: Iterator ({{ count }})
|
||||
incScriptsWithSecurity: Security ({{ count }})
|
||||
incScriptsWithTriggers: Triggers ({{ count }})
|
||||
searchQuery: Search query
|
||||
flags:
|
||||
iterator: Iterator
|
||||
security: Security
|
||||
triggers: Triggers
|
||||
labelMissing: <label missing>
|
||||
title: Corredor Scripts
|
||||
navItem:
|
||||
label: Corredor Scripts
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.sessions.yaml
Generated
Vendored
+53
@@ -0,0 +1,53 @@
|
||||
editor:
|
||||
info:
|
||||
completedAt: Completed at
|
||||
createdAt: Created at
|
||||
createdByUserID: Created by - ID
|
||||
createdByUserName: Created by - Name
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
error: Error
|
||||
eventType: Event type
|
||||
id: ID
|
||||
resourceType: Resource type
|
||||
status: Status
|
||||
title: Basic information
|
||||
workflowID: WorkflowID
|
||||
title: Session
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created At
|
||||
eventType: Event type
|
||||
sessionID: SessionID
|
||||
status: Status
|
||||
workflowID: WorkflowID
|
||||
filterForm:
|
||||
all:
|
||||
label: All
|
||||
completed:
|
||||
label: Completed
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
failed:
|
||||
label: Failed
|
||||
inProgress:
|
||||
label: completed sessions
|
||||
inclusive:
|
||||
label: Including
|
||||
prompted:
|
||||
label: Prompted
|
||||
sessions:
|
||||
label: sessions
|
||||
started:
|
||||
label: Started
|
||||
suspended:
|
||||
label: Suspended
|
||||
loading: Loading sessions
|
||||
numFound: '{{count}} session found'
|
||||
numFound_plural: '{{count}} sessions found'
|
||||
title: Sessions
|
||||
navItem:
|
||||
label: Sessions
|
||||
Generated
Vendored
+52
@@ -0,0 +1,52 @@
|
||||
editor:
|
||||
info:
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
enabled: Enabled
|
||||
handle: Handle
|
||||
id: ID
|
||||
name: Name
|
||||
openBuilder: Open builder
|
||||
title: Basic information
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
new: New
|
||||
permissions: Permissions
|
||||
title:
|
||||
create: Create workflow
|
||||
edit: Edit workflow
|
||||
triggers:
|
||||
and: and
|
||||
columns:
|
||||
constraints: Constraints
|
||||
eventType: Event
|
||||
resourceType: Resource
|
||||
title: Triggers
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
enabled: Enabled
|
||||
handle: Name
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted workflows
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
inclusive:
|
||||
label: Including
|
||||
query:
|
||||
label: Filter workflows list
|
||||
placeholder: Filter workflows by name
|
||||
loading: Loading workflows
|
||||
new: New
|
||||
numFound: '{{count}} workflow found'
|
||||
numFound_plural: '{{count}} workflows found'
|
||||
permissions: Permissions
|
||||
title: Workflows
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Workflows
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navGroup:
|
||||
label: Automation
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
list:
|
||||
columns:
|
||||
events: Triggered on events
|
||||
label: Label
|
||||
name: Name
|
||||
title: Compose Automation
|
||||
navItem:
|
||||
label: Automation
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/compose.permissions.yaml
Generated
Vendored
+73
@@ -0,0 +1,73 @@
|
||||
list:
|
||||
rules:
|
||||
add: Add role
|
||||
addRole: Add new role
|
||||
chart:
|
||||
operations:
|
||||
delete: Delete any chart
|
||||
read: Read any chart
|
||||
update: Update any chart
|
||||
type:
|
||||
label: Charts
|
||||
component:
|
||||
operations:
|
||||
grant: Grant permissions on compose service
|
||||
namespaceCreate: Create namespaces
|
||||
namespacesSearch: List and search namespaces
|
||||
settingsManage: Manage all settings
|
||||
settingsRead: Access all settings
|
||||
type:
|
||||
label: Compose service
|
||||
loading: Loading permissions
|
||||
module:
|
||||
operations:
|
||||
delete: Delete any module
|
||||
read: Read any module
|
||||
recordCreate: Create record under any module
|
||||
recordsSearch: List and search records under any module
|
||||
update: Update any module
|
||||
type:
|
||||
label: Modules
|
||||
moduleField:
|
||||
operations:
|
||||
recordValueRead: Read any module field
|
||||
recordValueUpdate: Update any module field
|
||||
type:
|
||||
label: Module fields
|
||||
namespace:
|
||||
operations:
|
||||
chartCreate: Create charts under any namespace
|
||||
chartsSearch: List and search charts under any namespace
|
||||
delete: Delete any namespace
|
||||
manage: Manage any namespace
|
||||
moduleCreate: Create modules under any namespace
|
||||
modulesSearch: List and search modules under any namespace
|
||||
pageCreate: Create pages under any namespace
|
||||
pagesSearch: List and search pages under any namespace
|
||||
read: Access any namespace
|
||||
update: Update any namespace
|
||||
type:
|
||||
label: Namespaces
|
||||
noRole: No role selected
|
||||
notAllowed: Not allowed to set permissions
|
||||
page:
|
||||
operations:
|
||||
delete: Delete any page
|
||||
read: Read any page
|
||||
update: Update any page
|
||||
type:
|
||||
label: Pages
|
||||
record:
|
||||
operations:
|
||||
delete: Delete any record
|
||||
read: Read any record
|
||||
update: Update any record
|
||||
type:
|
||||
label: Records
|
||||
submit: Submit
|
||||
tip1: Click on permission/role cell to allow a specific operation
|
||||
tip2: Use Alt-Click to set explicit deny on operation
|
||||
title: List of rules
|
||||
title: Compose permissions
|
||||
navItem:
|
||||
label: Permissions
|
||||
Generated
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
editor:
|
||||
basic:
|
||||
attachments:
|
||||
max-size: Max size (MB)
|
||||
page: Page attachments
|
||||
record: Record attachments
|
||||
type:
|
||||
description: 'MIME types, separated with ",". Example: "text/plain,text/csv"'
|
||||
whitelist: File type whitelist
|
||||
title: Basic
|
||||
title: Compose settings
|
||||
navItem:
|
||||
label: Settings
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navGroup:
|
||||
label: Compose
|
||||
Generated
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
applications:
|
||||
applications: Application(s)
|
||||
deleted: Deleted
|
||||
title: Active application(s)
|
||||
total: Total
|
||||
navItem:
|
||||
label: Dashboard
|
||||
roles:
|
||||
archived: Archived
|
||||
deleted: Deleted
|
||||
roles: Role(s)
|
||||
title: Active role(s)
|
||||
total: Total
|
||||
title: Dashboard
|
||||
users:
|
||||
deleted: Deleted
|
||||
suspended: Suspended
|
||||
title: Active user(s)
|
||||
total: Total
|
||||
users: User(s)
|
||||
Generated
Vendored
+66
@@ -0,0 +1,66 @@
|
||||
editor:
|
||||
generate:
|
||||
body: '{{ userLabel }} is sending you an invitation for Corteza Federated Network. To start sharing data between organizations, go to the admin panel of your Corteza application, click on “Federation” and select “Pair Federation Network” on top right corner. Copy the link below and await confirmation from another administrator.'
|
||||
description: To add your organization to a federated network send an email invite or share the link below with an administrator of another organization.
|
||||
hello: Hello,
|
||||
invitation: Invitation to Federated Network
|
||||
kindRegards: Kind regards, Corteza team.
|
||||
notGenerated: Link not generated
|
||||
sendEmail: Send Email
|
||||
subject: 'Subject:'
|
||||
generateUri: Generate Federation Link
|
||||
info:
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
email: Admin Email
|
||||
enabled: Enabled
|
||||
name: Server name
|
||||
status: Status
|
||||
tags:
|
||||
label: Tags
|
||||
placeholder: +Add
|
||||
title: Basic information
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
url: Server URL
|
||||
title:
|
||||
create: Create Federated Node
|
||||
edit: Edit Federated Node
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
enabled: Enabled
|
||||
name: Name
|
||||
status: Status
|
||||
tags: ""
|
||||
filterForm:
|
||||
query:
|
||||
label: Filter servers list
|
||||
placeholder: Filter servers by name
|
||||
loading: Loading servers
|
||||
new: New
|
||||
numFound: '{{count}} server found'
|
||||
numFound_plural: '{{count}} servers found'
|
||||
pair:
|
||||
confirm: Confirm
|
||||
label: Pair Federation Node
|
||||
networkEstablished: Federated network will be established after the final confirmation from the administrator of another Corteza Federation Node.
|
||||
note: 'Note:'
|
||||
status:
|
||||
confirmPending:
|
||||
description: |-
|
||||
{{ email }} accepted the invitation to join “{{ name }}” Federated Network.
|
||||
Click on “Confirm” to start sharing the data.
|
||||
descriptionNoMail: |-
|
||||
Admin of “{{ name }}” accepted the invitation to join the Federated Network.
|
||||
Click on “Confirm” to start sharing the data
|
||||
none:
|
||||
description: To pair your organization with a federated network, paste the generated URL of another organization below.
|
||||
pending:
|
||||
description: Pairing successful, pending final confirmation by administrator
|
||||
title: Federated Networks
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Nodes
|
||||
Generated
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
list:
|
||||
rules:
|
||||
add: Add role
|
||||
addRole: Add new role
|
||||
component:
|
||||
operations:
|
||||
grant: Grant permissions on federation service
|
||||
nodeCreate: Create nodes
|
||||
nodesSearch: List or create nodes
|
||||
pair: Pair nodes
|
||||
settingsManage: Manage all settings
|
||||
settingsRead: Access all settings
|
||||
type:
|
||||
label: Federation service
|
||||
exposedModule:
|
||||
operations:
|
||||
manage: Manage any module
|
||||
type:
|
||||
label: Modules
|
||||
loading: Loading permissions
|
||||
noRole: No role selected
|
||||
node:
|
||||
operations:
|
||||
delete: Delete any node
|
||||
manage: Manage any node
|
||||
moduleCreate: Create modules
|
||||
pair: Pair nodes
|
||||
read: Access any node
|
||||
update: Update any node
|
||||
type:
|
||||
label: Nodes
|
||||
notAllowed: Not allowed to set permissions
|
||||
sharedModule:
|
||||
operations:
|
||||
map: Map any module
|
||||
type:
|
||||
label: Modules
|
||||
submit: Submit
|
||||
tip1: Click on permission/role cell to allow a specific operation
|
||||
tip2: Use Alt-Click to set explicit deny on operation
|
||||
title: List of rules
|
||||
title: Federation permissions
|
||||
navItem:
|
||||
label: Permissions
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navGroup:
|
||||
label: Federation
|
||||
Generated
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
list:
|
||||
columns:
|
||||
action: Action
|
||||
actor: User
|
||||
description: Description
|
||||
requestOrigin: Origin
|
||||
resource: Resource
|
||||
severity: Severity
|
||||
timestamp: Timestamp
|
||||
details:
|
||||
id: 'ID'
|
||||
header: 'Details'
|
||||
timestamp: 'Timestamp'
|
||||
requestOrigin: 'Request Origin'
|
||||
requestID: 'Request ID'
|
||||
actorIPAddr: 'Actor/User'
|
||||
actor: 'User'
|
||||
actorID: 'User ID'
|
||||
severity: 'Severity'
|
||||
resource: 'Resource'
|
||||
action: 'Action'
|
||||
headerAdditional: 'Additional information'
|
||||
description: 'Description'
|
||||
error: 'Error'
|
||||
severity:
|
||||
emergency: 'Emergency'
|
||||
alert: 'Alert'
|
||||
critical: 'Critical'
|
||||
error: 'Error'
|
||||
warning: 'Warning'
|
||||
notice: 'Notice'
|
||||
info: 'Info'
|
||||
debug: 'Debug'
|
||||
filter:
|
||||
action: Action
|
||||
actor: User ID
|
||||
choose-date: Choose a date
|
||||
from: Starting from
|
||||
no-time: No time selected
|
||||
resource: Resource
|
||||
search: Search
|
||||
to: Ending at
|
||||
today: Today
|
||||
loadOlder: Load older actions
|
||||
title: Action log
|
||||
navItem:
|
||||
label: Action log
|
||||
Generated
Vendored
+92
@@ -0,0 +1,92 @@
|
||||
navItem:
|
||||
label: 'API Gateway'
|
||||
|
||||
list:
|
||||
title: 'API Gateway'
|
||||
new: 'New'
|
||||
permissions: 'Permissions'
|
||||
yaml: 'YAML'
|
||||
loading: 'Loading routes'
|
||||
numFound: '{{count}} route found'
|
||||
numFound_plural: '{{count}} routes found'
|
||||
|
||||
filterForm:
|
||||
query:
|
||||
label: 'Filter API Gateway list'
|
||||
placeholder: 'Filter routes by name'
|
||||
|
||||
|
||||
excluded:
|
||||
label: 'Without'
|
||||
|
||||
|
||||
inclusive:
|
||||
label: 'Including'
|
||||
|
||||
|
||||
exclusive:
|
||||
label: 'Only'
|
||||
|
||||
|
||||
deleted:
|
||||
label: 'Deleted routes'
|
||||
|
||||
|
||||
columns:
|
||||
endpoint: 'Endpoint'
|
||||
createdAt: 'Created'
|
||||
enabled: 'Enabled'
|
||||
actions: ''
|
||||
|
||||
editor:
|
||||
title: 'Edit route'
|
||||
new: 'New'
|
||||
permissions: 'Permissions'
|
||||
|
||||
info:
|
||||
title: 'Basic information'
|
||||
|
||||
id: 'ID'
|
||||
endpoint: 'Endpoint'
|
||||
method: 'Method'
|
||||
enabled: 'Enabled'
|
||||
|
||||
delete: 'Delete'
|
||||
undelete: 'Undelete'
|
||||
deletedAt: 'Deleted at'
|
||||
|
||||
updatedAt: 'Updated at'
|
||||
createdAt: 'Created at'
|
||||
validEndpoint: 'Invalid endpoint format'
|
||||
filters:
|
||||
title: 'Filter list'
|
||||
modal:
|
||||
title: 'Query parameters verifier'
|
||||
ok: 'Save & Close'
|
||||
statusActive: 'Active'
|
||||
statusDisabled: 'Disabled'
|
||||
|
||||
step_title:
|
||||
prefilter: 'Prefiltering'
|
||||
processer: 'Processing'
|
||||
postfilter: 'Postfiltering'
|
||||
|
||||
list:
|
||||
remove: 'Remove'
|
||||
filters: 'Filters'
|
||||
status: 'Status'
|
||||
actions: 'Actions'
|
||||
active: 'Active'
|
||||
noFiltersMsg: 'Please add a filter!'
|
||||
|
||||
labels:
|
||||
expr: 'Expression'
|
||||
location: 'Location'
|
||||
workflow: 'Workflow'
|
||||
status: 'HTTP Status'
|
||||
|
||||
|
||||
add: 'Add'
|
||||
addFilter: 'Add filter'
|
||||
params: 'Params'
|
||||
filterListEmpty: 'Filter list is empty!'
|
||||
vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/system.applications.yaml
Generated
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
editor:
|
||||
info:
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
enabled: Enabled
|
||||
id: ID
|
||||
name: Name
|
||||
title: Basic information
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
new: New
|
||||
permissions: Permissions
|
||||
title:
|
||||
create: Create application
|
||||
edit: Edit application
|
||||
unify:
|
||||
config:
|
||||
description: Application configuration (JSON)
|
||||
label: Configuration
|
||||
listed: Listed
|
||||
logo:
|
||||
description: Logo used in the application selector
|
||||
label: Logo
|
||||
placeholder: Choose a logo or drop it here...
|
||||
name:
|
||||
description: Name used in the application selector
|
||||
label: Name
|
||||
pinned: Pinned
|
||||
title: Unify app selector
|
||||
url:
|
||||
description: Application URL
|
||||
label: URL
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
enabled: Enabled
|
||||
name: Name
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted applications
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
inclusive:
|
||||
label: Including
|
||||
query:
|
||||
label: Filter applications list
|
||||
placeholder: Filter applications by name
|
||||
loading: Loading applications
|
||||
new: New
|
||||
numFound: '{{count}} application found'
|
||||
numFound_plural: '{{count}} applications found'
|
||||
permissions: Permissions
|
||||
title: Applications
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Applications
|
||||
Generated
Vendored
+85
@@ -0,0 +1,85 @@
|
||||
editor:
|
||||
info:
|
||||
add: Add
|
||||
api: Allow client access to Corteza API on behalf of user
|
||||
choose-date: Choose a date
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
enabled:
|
||||
disabledFootnote: Unable to disable the default client
|
||||
label: Enabled
|
||||
expiresAt:
|
||||
description: If not defined the client has no expiration date
|
||||
label: Expires at
|
||||
grant:
|
||||
authorization_code: Will be used to authenticate users (grant type = authorization_code)
|
||||
client_credentials: Will be used to authenticate machines (grant type = client_credentials)
|
||||
handle:
|
||||
disabledFootnote: Unable to change the handle of the default auth client
|
||||
label: Handle
|
||||
name: Name
|
||||
no-time: No time selected
|
||||
profile: Allow client access to user's profile
|
||||
redirectURI: Redirect URI's
|
||||
remove: Remove
|
||||
searchRoles: Search roles
|
||||
secret: Secret
|
||||
security:
|
||||
forbiddenRoles:
|
||||
description: Roles from this list will be removed from security context when user authorizes this client
|
||||
label: Forbidden roles ({{count}})
|
||||
forcedRoles:
|
||||
description: Roles from this list will be always added to security context when user authorizes this client
|
||||
label: Forced roles ({{count}})
|
||||
impersonateUser:
|
||||
description: When authenticating with client credentials, act in the name of the impersonated user
|
||||
label: Impersonate user
|
||||
permittedRoles:
|
||||
description: Only roles in this list will be added into security context when user authorizes this client
|
||||
label: Permitted roles ({{count}})
|
||||
title: Basic information
|
||||
trusted:
|
||||
description: When client is trusted users do not see authorization step
|
||||
label: Trusted
|
||||
undelete: Undelete
|
||||
unnamed: Unnamed role
|
||||
updatedAt: Updated at
|
||||
uri: URI
|
||||
validFrom:
|
||||
description: If not defined the client is valid until expiration
|
||||
label: Valid from
|
||||
new: New
|
||||
permissions: Permissions
|
||||
title:
|
||||
create: Create client
|
||||
edit: Edit client
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
enabled: Enabled
|
||||
handle: Handle
|
||||
meta:
|
||||
name: Name
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted clients
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
inclusive:
|
||||
label: Including
|
||||
query:
|
||||
label: Filter clients list
|
||||
placeholder: Filter clients
|
||||
loading: Loading clients
|
||||
new: New
|
||||
numFound: '{{count}} clients found'
|
||||
numFound_plural: '{{count}} clients found'
|
||||
permissions: Permissions
|
||||
title: Auth Clients
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Auth Clients
|
||||
Generated
Vendored
+118
@@ -0,0 +1,118 @@
|
||||
list:
|
||||
rules:
|
||||
add: Add role
|
||||
addRole: Add new role
|
||||
application:
|
||||
operations:
|
||||
delete: Delete any application
|
||||
read: Read any application
|
||||
update: Update any application
|
||||
type:
|
||||
label: Applications
|
||||
authClient:
|
||||
operations:
|
||||
authorize: Authorize any client
|
||||
delete: Delete any client
|
||||
read: Read any client
|
||||
update: Update any client
|
||||
type:
|
||||
label: Auth clients
|
||||
component:
|
||||
operations:
|
||||
actionLogRead: Access action log
|
||||
applicationCreate: Create new application
|
||||
applicationFlagGlobal: Can pin application for everyone
|
||||
applicationFlagSelf: Can pin application for themselves
|
||||
applicationsSearch: List and search applications
|
||||
authClientCreate: Create new auth client
|
||||
authClientsSearch: List and search auth clients
|
||||
apigwRouteCreate: Create new route
|
||||
apigwRoutesSearch: List and search routes
|
||||
apigwFilterCreate: Create new filter
|
||||
apigwFiltersSearch: List and search filters
|
||||
|
||||
grant: Grant permission on system service
|
||||
queueCreate: Create new messaging queue
|
||||
queuesSearch: List and search messaging queues
|
||||
reminderAssign: Allow reminder assignment
|
||||
roleCreate: Create new role
|
||||
rolesSearch: List and search roles
|
||||
settingsManage: Manage all settings
|
||||
settingsRead: Access all settings
|
||||
templateCreate: Create new template
|
||||
templatesSearch: List and search templates
|
||||
userCreate: Create new user
|
||||
usersSearch: List and search users
|
||||
type:
|
||||
label: System service
|
||||
loading: Loading permissions
|
||||
noRole: No role selected
|
||||
notAllowed: Not allowed to set permissions
|
||||
queue:
|
||||
operations:
|
||||
delete: Delete any queue
|
||||
queueRead: Read messages from queue
|
||||
queueWrite: Write messages to queue
|
||||
read: Read any queue
|
||||
update: Update any queue
|
||||
type:
|
||||
label: Messaging queues
|
||||
role:
|
||||
operations:
|
||||
delete: Delete any role
|
||||
membersManage: Manage members for any role
|
||||
read: Read any role
|
||||
update: Update any role
|
||||
type:
|
||||
label: Roles
|
||||
submit: Submit
|
||||
apigwRoute:
|
||||
type:
|
||||
label: 'API gateway Routes'
|
||||
|
||||
operations:
|
||||
read: 'Read any route'
|
||||
update: 'Update any route'
|
||||
delete: 'Delete any route'
|
||||
apigwFilter:
|
||||
type:
|
||||
label: 'API gateway filters'
|
||||
|
||||
operations:
|
||||
read: 'Read any filters'
|
||||
update: 'Update any filters'
|
||||
delete: 'Delete any filters'
|
||||
template:
|
||||
operations:
|
||||
delete: Delete any template
|
||||
read: Read any template
|
||||
render: Render any template
|
||||
update: Update any template
|
||||
type:
|
||||
label: Templates
|
||||
tip1: Click on permission/role cell to allow a specific operation
|
||||
tip2: Use Alt-Click to set explicit deny on operation
|
||||
title: List of rules
|
||||
user:
|
||||
operations:
|
||||
delete: Delete any user
|
||||
emailUnmask: Show email details
|
||||
impersonate: Impersonate any user
|
||||
nameUnmask: Show name details
|
||||
read: Read any user
|
||||
suspend: Suspend any user
|
||||
unsuspend: Unsuspend any user
|
||||
update: Update any user
|
||||
type:
|
||||
label: Users
|
||||
report:
|
||||
operations:
|
||||
read: Read any report
|
||||
update: Update any report
|
||||
delete: Delete any report
|
||||
run: Run any report
|
||||
type:
|
||||
label: Reports
|
||||
title: System permissions
|
||||
navItem:
|
||||
label: Permissions
|
||||
Generated
Vendored
+42
@@ -0,0 +1,42 @@
|
||||
editor:
|
||||
info:
|
||||
consumer: Consumer
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
dispatch_events: Dispatch events
|
||||
dispatch_events_desc: Dispatch events notifies the eventbus of queue message changes (new, processed, ...)
|
||||
name: Queue name
|
||||
poll_delay: Polling changes delay
|
||||
poll_delay_empty: 'Poll delay will not be used; to enable, use duration format (ie: 1h / 1m15s / 1h90s)'
|
||||
poll_delay_set: Poll delay will be used; if empty, it will not be used.
|
||||
title: Basic information
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
new: New
|
||||
title:
|
||||
edit: Edit queue
|
||||
new: Add a queue
|
||||
list:
|
||||
columns:
|
||||
actions: Actions
|
||||
consumer: Consumer
|
||||
createdAt: Created At
|
||||
queue: Queue
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted queues
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
handle:
|
||||
label: Filter queues list
|
||||
placeholder: Filter queues by name
|
||||
inclusive:
|
||||
label: Including
|
||||
loading: Loading messaging queues
|
||||
new: New
|
||||
title: Messaging queues
|
||||
navItem:
|
||||
label: Messaging Queues
|
||||
Generated
Vendored
+55
@@ -0,0 +1,55 @@
|
||||
editor:
|
||||
info:
|
||||
archive: Archive
|
||||
archivedAt: Archived at
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
handle: Handle
|
||||
name: Role name
|
||||
title: Basic information
|
||||
unarchive: Unarchive
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
members:
|
||||
add: Add
|
||||
count: Members ({{count}})
|
||||
remove: Remove
|
||||
searchUsers: Search users
|
||||
title: Role members
|
||||
unnamed: Unnamed user
|
||||
new: New
|
||||
permissions: Permissions
|
||||
title:
|
||||
create: Create role
|
||||
edit: Edit role
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
enabled: Enabled
|
||||
handle: Handle
|
||||
name: Name
|
||||
filterForm:
|
||||
archived:
|
||||
label: archived roles
|
||||
deleted:
|
||||
label: deleted roles
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
inclusive:
|
||||
label: Including
|
||||
query:
|
||||
label: Filter roles list
|
||||
placeholder: Filter roles by name
|
||||
loading: Loading roles
|
||||
new: New
|
||||
numFound: '{{count}} role found'
|
||||
numFound_plural: '{{count}} roles found'
|
||||
permissions: Permissions
|
||||
title: Roles
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Roles
|
||||
Generated
Vendored
+71
@@ -0,0 +1,71 @@
|
||||
editor:
|
||||
auth:
|
||||
internal:
|
||||
enabled: Internal authentication enabled
|
||||
password-reset:
|
||||
enabled: Password reset enabled
|
||||
signup:
|
||||
email-confirmation-required: Signup email confirmation required
|
||||
enabled: Signup enabled
|
||||
split-credentials-check:
|
||||
description: 'Split login into two steps: collect the email input first and show the input for the password on the 2nd screen. Automatically forward user to external identity provider when user does not have his password set and there is only one IdP present'
|
||||
label: Enable split-credentials check
|
||||
title: Internal
|
||||
mail:
|
||||
from-address: Sender's address
|
||||
from-name: Sender's name
|
||||
title: Authentication email sender mail
|
||||
validate-email: Please enter valid email address.
|
||||
mfa:
|
||||
TOTP:
|
||||
enabled: Allow users to use time based one-time-password (using mobile application)
|
||||
enforced: Force users to use time based one-time-password (using mobile application)
|
||||
issuer:
|
||||
description: Issuer name will be send to authenticator app when user configures it.
|
||||
label: Issuer
|
||||
emailOTP:
|
||||
enabled: Allow users to use one-time-password over email
|
||||
enforced: Force users to use one-time-password over email
|
||||
expires:
|
||||
description: How long will password be valid before it expires.
|
||||
label: Valid for
|
||||
title: Multi-factor authentication
|
||||
title: Authentication
|
||||
url: URL
|
||||
external:
|
||||
addOidcProvider: Add OIDC provider
|
||||
certificate: Certificate
|
||||
clientKey: Client key
|
||||
clientSecret: Secret
|
||||
enabled: Enable external authentication
|
||||
facebook: Facebook
|
||||
github: GitHub
|
||||
google: Google
|
||||
handle: Handle
|
||||
issuer: OIDC Issuer URL
|
||||
issuerHint: Where to find the /.well-known/openid-configuration (without the /.well-known/openid-configuration part)
|
||||
issuerPlaceholder: https://issuer.tld
|
||||
linkedin: LinkedIn
|
||||
oidc: OpenID Connect
|
||||
providerEnabled: Enable
|
||||
saml:
|
||||
cert: Certificate public key
|
||||
cert-key: Certificate private key
|
||||
desc:
|
||||
cert: Content will be minimized
|
||||
cert-key: Content will be minimized
|
||||
idp:
|
||||
ident-handle: Handle field coming from idp
|
||||
ident-identifier: Determines by which field do we match, usually email
|
||||
ident-name: Name field coming from idp
|
||||
idp:
|
||||
ident-handle: Identity payload handle
|
||||
ident-identifier: Identity payload default identifier
|
||||
ident-name: Identity payload name
|
||||
title: Identity provider
|
||||
url: URL
|
||||
title: SAML
|
||||
title: External Authentication Providers
|
||||
title: System settings
|
||||
navItem:
|
||||
label: Settings
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navItem:
|
||||
label: Stats
|
||||
Generated
Vendored
+72
@@ -0,0 +1,72 @@
|
||||
editor:
|
||||
content:
|
||||
editor:
|
||||
unsupported: Unsupported editor
|
||||
partial: Partial template
|
||||
preview:
|
||||
html: Preview HTML
|
||||
pdf: Preview PDF
|
||||
title: Preview output
|
||||
title: Template content
|
||||
toolbox:
|
||||
partials: Partials
|
||||
samples:
|
||||
defaultHTML: Default HTML
|
||||
label: Samples
|
||||
snippets:
|
||||
funcCall: Call a function
|
||||
interpolate: Interpolate value
|
||||
iterator: Iterate over a set
|
||||
label: Snippets
|
||||
title: Toolbox
|
||||
info:
|
||||
contentType:
|
||||
text_html: HTML
|
||||
text_plain: Plain text
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
handle: Handle
|
||||
meta:
|
||||
description: Description
|
||||
short: Short name
|
||||
partial: Partial template
|
||||
partialDescription: Partial templates may be used inside other templates such as headers and footers. Partial templates may not be used on their own.
|
||||
title: Basic information
|
||||
type: Template type
|
||||
undelete: Undelete
|
||||
updatedAt: Updated at
|
||||
new: New
|
||||
permissions: Permissions
|
||||
title:
|
||||
create: Create template
|
||||
edit: Edit template
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
handle: Handle
|
||||
language: Language
|
||||
meta:
|
||||
short: Short name
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted templates
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
handle:
|
||||
label: Filter templates list
|
||||
placeholder: Filter templates by handle
|
||||
inclusive:
|
||||
label: Including
|
||||
loading: Loading templates
|
||||
new: New
|
||||
numFound: '{{count}} template found'
|
||||
numFound_plural: '{{count}} templates found'
|
||||
permissions: Permissions
|
||||
title: Templates
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Templates
|
||||
Generated
Vendored
+93
@@ -0,0 +1,93 @@
|
||||
editor:
|
||||
info:
|
||||
confirmEmail: Confirm email address
|
||||
createdAt: Created at
|
||||
delete: Delete
|
||||
deletedAt: Deleted at
|
||||
email: Email
|
||||
handle: Handle
|
||||
name: Full name
|
||||
revokeAllSession: Revoke all active session
|
||||
suspend: Suspend
|
||||
suspendedAt: Suspended at
|
||||
title: Basic information
|
||||
undelete: Undelete
|
||||
unsuspend: Unsuspend
|
||||
updatedAt: Updated at
|
||||
mfa:
|
||||
TOTP:
|
||||
disabled:
|
||||
text: User did not configure TOTP protection.
|
||||
enabled:
|
||||
text: User configured TOTP protection auth mobile app.
|
||||
remove:
|
||||
label: Remove
|
||||
emailOTP:
|
||||
disable:
|
||||
label: Disable
|
||||
disabled:
|
||||
text: |-
|
||||
Email OTP protection is disabled for this user.
|
||||
Email with the security code on each login will not be sent.
|
||||
enable:
|
||||
label: Enable
|
||||
enabled:
|
||||
text: |-
|
||||
Email OTP protection is enabled for this user.
|
||||
User will receive email with the security code on each login.
|
||||
title: Multi-factor authentication
|
||||
new: New
|
||||
notifications:
|
||||
membershipOK: Membership successfully updated
|
||||
passwordOK: Password successfully changed
|
||||
title: User updated
|
||||
userInfoOK: User info successfully updated
|
||||
password:
|
||||
confirm: Confirm password
|
||||
length: The passwords must be at least {{length}} characters long!
|
||||
missmatch: The passwords must match!
|
||||
new: New password
|
||||
title: Password
|
||||
removePassword: Remove password
|
||||
permissions: Permissions
|
||||
roles:
|
||||
add: Add
|
||||
count: Roles ({{count}})
|
||||
remove: Remove
|
||||
searchRoles: Search roles
|
||||
title: Role membership
|
||||
unnamed: Unnamed role
|
||||
title:
|
||||
create: Create user
|
||||
edit: Edit user
|
||||
list:
|
||||
columns:
|
||||
actions: ""
|
||||
createdAt: Created
|
||||
email: Email
|
||||
enabled: Enabled
|
||||
handle: Handle
|
||||
name: Name
|
||||
filterForm:
|
||||
deleted:
|
||||
label: deleted users
|
||||
excluded:
|
||||
label: Without
|
||||
exclusive:
|
||||
label: Only
|
||||
inclusive:
|
||||
label: Including
|
||||
query:
|
||||
label: Filter users list
|
||||
placeholder: Filter users by name, email
|
||||
suspended:
|
||||
label: suspended users
|
||||
loading: Loading users
|
||||
new: New
|
||||
numFound: '{{count}} user found'
|
||||
numFound_plural: '{{count}} users found'
|
||||
permissions: Permissions
|
||||
title: Users
|
||||
yaml: YAML
|
||||
navItem:
|
||||
label: Users
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navGroup:
|
||||
label: System
|
||||
Generated
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
navItem:
|
||||
label: 'Settings'
|
||||
|
||||
editor:
|
||||
title: 'User Interface Settings'
|
||||
|
||||
mainLogo:
|
||||
title: 'Main logo'
|
||||
|
||||
uploader:
|
||||
instructions: 'Click or drop main logo here to upload'
|
||||
uploading: 'Uploading main logo'
|
||||
|
||||
iconLogo:
|
||||
title: 'Icon logo'
|
||||
|
||||
uploader:
|
||||
instructions: 'Click or drop icon logo image here to upload'
|
||||
uploading: 'Uploading icon logo'
|
||||
|
||||
favicon:
|
||||
title: 'Favicon'
|
||||
|
||||
uploader:
|
||||
instructions: 'Click or drop favicon file here to upload'
|
||||
uploading: 'Uploading favicon'
|
||||
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
navGroup:
|
||||
label: User interface
|
||||
Generated
Vendored
+337
@@ -0,0 +1,337 @@
|
||||
automation:
|
||||
addPlaceholderLabel: Add placeholder (dummy button)
|
||||
availableScriptsAndWorkflow: Available scripts and workflows ({{count}})
|
||||
badge:
|
||||
script: script
|
||||
workflow: workflow
|
||||
buttonLabel: Label
|
||||
buttonVariant: Variant
|
||||
configuredButtons: Configured buttons
|
||||
dangerButton: Danger
|
||||
darkButton: Dark
|
||||
dummyButtonLabel: Dummy
|
||||
editButton: Edit
|
||||
editTitle:
|
||||
script: Edit automation script button
|
||||
workflow: Edit workflow button
|
||||
label: Automation
|
||||
lightButton: Light
|
||||
noDescription: No description
|
||||
noLabel: Unlabeled
|
||||
noScript: There is no script or workflow configured for this button
|
||||
noScripts: There are no manual scripts compatible with this page block
|
||||
primaryButton: Primary
|
||||
removeAll: Remove all
|
||||
searchPlaceholder: Filter available scripts by label, script name and description
|
||||
secondaryButton: Secondary
|
||||
stepID: 'stepID: {{stepID}}'
|
||||
successButton: Success
|
||||
warningButton: Warning
|
||||
calendar:
|
||||
addEventsSource: Add events source
|
||||
calendarHeader: Calendar header
|
||||
feedLabel: Configure events source
|
||||
feedPlaceholder: Select a feed source
|
||||
hideHeader: Hide calendar header
|
||||
hideNavigation: Hide prev/next button
|
||||
hideTitle: Hide title text
|
||||
hideToday: Hide today button
|
||||
label: Calendar
|
||||
recordFeed:
|
||||
colorLabel: Event color
|
||||
eventAllDay: Show as all-day-events
|
||||
eventEndFieldLabel: Event end
|
||||
eventEndFieldPlaceholder: (No field, event will last 1 hour)
|
||||
eventStartFieldLabel: Event start
|
||||
eventStartFieldPlaceholder: (No field)
|
||||
moduleLabel: Select module
|
||||
modulePlaceholder: (No module)
|
||||
noMultiFields: Multi-value fields are currently not supported
|
||||
optionLabel: Records
|
||||
prefilterLabel: Prefilter events
|
||||
prefilterPlaceholder: field1 = 1 AND field2 = 232
|
||||
titleLabel: Title
|
||||
titlePlaceholder: (No field)
|
||||
reminderFeed:
|
||||
colorLabel: Event color
|
||||
optionLabel: Reminders
|
||||
today: Today
|
||||
view:
|
||||
dayGridMonth: Month
|
||||
default: Default view
|
||||
enabled: Enabled views
|
||||
footnote: Make sure default is one of the available views
|
||||
listMonth: Agenda
|
||||
timeGridDay: Day
|
||||
timeGridWeek: Week
|
||||
viewLabel: $t(block.calendar.label)
|
||||
chart:
|
||||
add: New Chart
|
||||
addFunnel: Funnel chart
|
||||
addGauge: Gauge chart
|
||||
addGeneric: Generic chart
|
||||
configure:
|
||||
label: Configure chart
|
||||
reportLabel: Report {{l}}
|
||||
reportsLabel: Reports
|
||||
display: 'Chart to display inside this block:'
|
||||
edit: Edit chart
|
||||
label: Chart
|
||||
pick: Pick a chart
|
||||
preview:
|
||||
chartId: Chart preview (ID {{0}})
|
||||
content:
|
||||
label: Content
|
||||
file:
|
||||
label: File
|
||||
preview:
|
||||
label: File block
|
||||
general:
|
||||
changeBlock: Change existing block
|
||||
descriptionLabel: $t(general.label.description)
|
||||
descriptionPlaceholder: Block description
|
||||
headerStyle: Block header style (color)
|
||||
module: Module
|
||||
style:
|
||||
danger: Danger variant
|
||||
default: Dark variant
|
||||
primary: Primary variant
|
||||
secondary: Secondary variant
|
||||
success: Success variant
|
||||
warning: Warning variant
|
||||
title: Add new block
|
||||
titleLabel: $t(general.label.title)
|
||||
titlePlaceholder: Block title
|
||||
iframe:
|
||||
label: IFrame
|
||||
pickURLField: Pick an URL field
|
||||
srcDesc: Used as a fallback when set in combination with record field.
|
||||
srcFieldDesc: Only available on record pages and on modules with existing "url" field kind
|
||||
srcFieldLabel: Field (URL) from record to use for the iframe
|
||||
srcLabel: URL to show in the iframe
|
||||
metric:
|
||||
defaultMetricLabel: Unnamed metric
|
||||
edit:
|
||||
bucketLabel: Bucket size
|
||||
bucketPlaceholder: Select a bucket size
|
||||
dateFormat: Date format
|
||||
dimensionFieldLabel: Field
|
||||
dimensionFieldPlaceholder: Dimension field
|
||||
dimensionLabel: Dimension
|
||||
filterFootnote: Simplified SQL condition (WHERE ...) syntax is supported. Variables like {{0}}, {{1}} and {{2}} are evaluated (when available)
|
||||
filterLabel: Filter
|
||||
labelLabel: Label
|
||||
labelPlaceholder: Label
|
||||
metricFieldLabel: Field
|
||||
metricFieldPlaceholder: Dimension field
|
||||
metricLabel: Metric
|
||||
moduleLabel: Module
|
||||
modulePlaceholder: Pick a module
|
||||
numberFormat: Number format
|
||||
operationAvg: Avg
|
||||
operationCountd: Count
|
||||
operationLabel: Aggregation operation
|
||||
operationMax: Max
|
||||
operationMin: Min
|
||||
operationPlaceholder: Aggregation operation
|
||||
operationStd: Std
|
||||
operationSum: Sum
|
||||
prefixLabel: Prefix
|
||||
refreshData: Refresh data
|
||||
suffixLabel: Suffix
|
||||
tabTitle: Metric
|
||||
transformFunctionDescription: v - current value; label - current value's label
|
||||
transformFunctionLabel: Transform value
|
||||
editStyle:
|
||||
backgroundColor: Background color
|
||||
color: Text color
|
||||
fontSize: Font size in pixels
|
||||
labelLabel: Label style
|
||||
valueLabel: Value style
|
||||
label: Metric
|
||||
record:
|
||||
confirmDelete: Are you sure you want to delete this record?
|
||||
deleteRecord: Delete record
|
||||
label: Record
|
||||
preview:
|
||||
blockNoRecord: Can not render this block without a record
|
||||
fieldsFromModule: Single record block, displaying fields ({{0}}) from module {{1}}
|
||||
untitled: Untitled
|
||||
recordDeleted: This record was deleted
|
||||
recordList:
|
||||
addRecord: Add
|
||||
cancelSelection: Cancel
|
||||
editFields: Editable module fields
|
||||
export:
|
||||
all: Export all records
|
||||
allow: Allow records export
|
||||
csv: CSV Export
|
||||
dateRange: 'Select date range:'
|
||||
filter:
|
||||
createdAt: Record created
|
||||
custom: Custom
|
||||
lastMonth: Last month
|
||||
lastWeek: Last week
|
||||
thisMonth: This month
|
||||
thisWeek: This week
|
||||
today: Today
|
||||
updatedAt: Record updated
|
||||
inRange: Set date range
|
||||
includeQuery: Filter by search query
|
||||
json: JSON Export
|
||||
limitations: 'CSV export limitation: only the first value in the multi value fields will be exported'
|
||||
query: Search query
|
||||
rangeBy: 'Set range by:'
|
||||
recordCount: '{{count}} records ready for export'
|
||||
selectFields: 'Select fields you want to export:'
|
||||
selection: Selected records
|
||||
specifyTimezone: Export to timezone
|
||||
timezonePlaceholder: Select timezone
|
||||
federated: Federated
|
||||
fields: Module fields
|
||||
filter:
|
||||
addField: Add new filter field
|
||||
addFilter: + Add filter
|
||||
byValue: Filter records based on field value
|
||||
conditions:
|
||||
and: AND
|
||||
or: OR
|
||||
deletedRecords: Deleted records
|
||||
field: Filter field
|
||||
fieldPlaceholder: Pick a field
|
||||
fieldValue: Field value
|
||||
fieldValuePlaceholder: Input field filter
|
||||
including: Including
|
||||
label: Filter
|
||||
note: 'Note: If Field value is undefined, the filter will look for records where that field value is undefined.'
|
||||
only: Only
|
||||
operators:
|
||||
contains: Contains
|
||||
equal: Equal
|
||||
greaterThan: Greater than
|
||||
lessThan: Less than
|
||||
notEqual: Not equal
|
||||
title: Record list filter
|
||||
update: Update filter
|
||||
where: Where
|
||||
without: Without
|
||||
hideRecordCloneButton: Hide clone record button
|
||||
hideRecordEditButton: Hide edit record button
|
||||
hideRecordPermissionsButton: Hide record permissions button
|
||||
hideRecordReminderButton: Hide record reminder button
|
||||
hideRecordViewButton: Hide view record button
|
||||
import:
|
||||
dropzoneFileAdded: '{{name}} was uploaded and is ready for import ({{count}} record)'
|
||||
dropzoneFileAdded_plural: '{{name}} was uploaded and is ready for import ({{count}} records)'
|
||||
dropzoneLabel: Click or drop file here to upload (.csv or JSON)
|
||||
failed: 'Something went wrong during the import. Please try again: {{failReason}}'
|
||||
fileColumns: File columns
|
||||
hasRequiredFileFields: This module has required file upload fields that are not yet supported via the importer
|
||||
matchFields: 'Match imported columns with existing ones:'
|
||||
moduleFields: Module fields
|
||||
onError: 'If any record fails to import:'
|
||||
onErrorFail: Cancel import
|
||||
onErrorSkip: Skip record
|
||||
pickModuleField: Pick a module field
|
||||
progressRatio: '{{completed}} / {{entryCount}} rows'
|
||||
report:
|
||||
count: Number of records
|
||||
detectedErrors: Detected errors
|
||||
error: Error
|
||||
failedEntries: Failed source entries
|
||||
failedEntriesLine: Entry
|
||||
failedEntriesLines: Entries from to (inclusive)
|
||||
failedRecords: Failed records
|
||||
finishedAt: Finished At
|
||||
importedRecords: Imported records
|
||||
startedAt: Started At
|
||||
title: Record import error report
|
||||
totalRecords: Total records
|
||||
success: Import successful.
|
||||
to: Import to {{modulename}}
|
||||
uploadFile: Upload the file you want to import (.csv or JSON format)
|
||||
label: Record list
|
||||
moduleFootnote: Modules without a {{0}} can only be used in a record list as an inline editor
|
||||
pagination:
|
||||
next: Next
|
||||
prev: Previous
|
||||
showing: '{{from}} - {{to}} of {{count}} records'
|
||||
single: One record
|
||||
single_plural: '{{count}} records'
|
||||
positionField:
|
||||
footnote: Records will be sorted based on this field
|
||||
label: Record sort field
|
||||
preview:
|
||||
addRecordButton: Add record button
|
||||
bePaged: '{{0}} be paged.'
|
||||
isDisabled: '{{0}} is disabled.'
|
||||
isEnabled: '{{0}} is enabled.'
|
||||
isHidden: '{{0}} is hidden.'
|
||||
isShown: '{{0}} is shown'
|
||||
moduleNotSelected: Block with table of records, module not selected.
|
||||
recordFromModule: 'Showing records from {{0}} module with columns: {{1}}'
|
||||
recordsPerPage: '{{0}} records are shown per page.'
|
||||
resultsCan: Results can
|
||||
resultsCant: Results can not
|
||||
resultsPrefiltered: 'Results are prefiltered:'
|
||||
searchInput: Search inputbox
|
||||
sorting: Sorting
|
||||
tableHeader: Table header
|
||||
usersSearchThrough: Users search through the records.
|
||||
usersSee: Users see {{0}}.
|
||||
withPresortedRecords: with presorted ({{0}}) records.
|
||||
record:
|
||||
draggable: Can drag & drop records to order them
|
||||
fullPageNavigation: Full page navigation
|
||||
hideAddButton: Hide add record button
|
||||
hidePaging: Hide paging
|
||||
inlineEditor: Inline editor
|
||||
inlineEditorAllow: Allow inline record editing
|
||||
inlineEditorFootnote: Only one inline editor with the same module can be present the same page
|
||||
newLabel: New records
|
||||
noPermission: No permission to read record
|
||||
perPage: Records per page
|
||||
prefilterFootnote: Simplified SQL condition (WHERE ...) syntax is supported. Variables like {{0}}, {{1}} and {{2}} are evaluated (when available)
|
||||
prefilterHideSearch: Hide search box
|
||||
prefilterLabel: Prefilter records
|
||||
prefilterPlaceholder: field1 = 1 AND field2 = 232
|
||||
presortFootnote: Simplified SQL condition (ORDER BY ...) syntax is supported.
|
||||
presortHideSort: Hide sorting
|
||||
presortLabel: Presort records
|
||||
presortPlaceholder: field1 DESC, field2 ASC
|
||||
showTotalCount: Show total record count
|
||||
recordPage: record page
|
||||
refField:
|
||||
footnote: Field that links records with the parent record
|
||||
label: Parent field
|
||||
selectable: Enable record selection
|
||||
selected: '{{count}} of {{total}} records selected'
|
||||
recordOrganizer:
|
||||
descriptionField:
|
||||
footnote: Field value will be used as record description
|
||||
label: Description field
|
||||
group:
|
||||
footnote: Value that will be set to the key field. This does not affect the filtering. Make sure to specify the prefilter where needed.
|
||||
label: Key value
|
||||
groupField:
|
||||
footnote: Field whose value will change when a record is moved into the record organizer
|
||||
label: Key field
|
||||
label: Record organizer
|
||||
labelField:
|
||||
footnote: Field value will be used as record label
|
||||
label: Label field
|
||||
noRecords: No records in module linked with record organizer. Drag and drop records here.
|
||||
notConfigured: Record organizer is not configured correctly.
|
||||
positionField:
|
||||
footnote: Records will be sorted based on this field
|
||||
label: Record sort field
|
||||
preview:
|
||||
label: 'Record Organizer block for module {{0}}. Label field {{1}}, Description field {{2}}. Value setting field: {{3}}, Sorted by position field: {{4}}.'
|
||||
moduleNotSelected: Record Organizer module not selected.
|
||||
socialFeed:
|
||||
label: Twitter feed
|
||||
noInput: No input for displaying social feed...
|
||||
preview:
|
||||
socialFeed: Twitterblo feed
|
||||
twitterProfileField: Field that contains Twitter Profile URL for a record
|
||||
twitterProfileLabel: Twitter Profile URL for list pages i.e (https://twitter.com/bloomberg)
|
||||
Generated
Vendored
+97
@@ -0,0 +1,97 @@
|
||||
colorLabel: '{{count}} colors'
|
||||
colorScheme: Color scheme
|
||||
edit:
|
||||
dimension:
|
||||
calculateLabelCount: Calculate how many labels can be shown
|
||||
defaultValueFootnote: Use this value for missing dimension values
|
||||
defaultValueLabel: Default value
|
||||
fieldLabel: Field
|
||||
fieldPlaceholder: Select a dimension field
|
||||
function:
|
||||
date: DATE
|
||||
label: Function
|
||||
month: MONTH
|
||||
none: (no grouping / buckets)
|
||||
placeholder: Select dimension modifier (bucket size)
|
||||
quarter: QUARTER
|
||||
week: WEEK
|
||||
year: YEAR
|
||||
gaugeSteps: Steps
|
||||
label: Dimensions (datetime & select fields)
|
||||
skipMissingValues: Skip missing values
|
||||
filter:
|
||||
customize: Customize filter
|
||||
label: Filters
|
||||
noFilter: (no filter)
|
||||
recordsCreatedLastMonth: Records created last month
|
||||
recordsCreatedLastQuarter: Records created last quarter
|
||||
recordsCreatedLastYear: Records created last year
|
||||
recordsCreatedThisMonth: Records created this month
|
||||
recordsCreatedThisQuarter: Records created this quarter
|
||||
recordsCreatedThisYear: Records created this year
|
||||
loadData: Load data
|
||||
metric:
|
||||
add: Add metric
|
||||
fieldLabel: Field
|
||||
fieldPlaceholder: Select metric field
|
||||
fillArea: Fill area below the line
|
||||
fixTooltips: Always show tooltips
|
||||
function:
|
||||
avg: AVG
|
||||
countd: COUNTD
|
||||
label: Function
|
||||
max: MAX
|
||||
min: MIN
|
||||
placeholder: Select metric aggregate function
|
||||
std: STD
|
||||
sum: SUM
|
||||
fx:
|
||||
description: n - current dataset value, m - previous dataset value
|
||||
label: Post processing function
|
||||
gaugeColor: Color
|
||||
label: Metric
|
||||
labelColor: Label color
|
||||
labelLabel: Label
|
||||
labelPlaceholder: Total
|
||||
legend:
|
||||
bottom: Bottom
|
||||
left: Left
|
||||
positionPlaceholder: Legend position
|
||||
right: Right
|
||||
top: Top
|
||||
lineTension:
|
||||
curvy: Big curvatures
|
||||
label: Line tension
|
||||
medium: Medium curvatures
|
||||
placeholder: Line tension
|
||||
slight: Small curvatures
|
||||
straight: Straight lines
|
||||
output:
|
||||
bar: Bar
|
||||
doughnut: Doughnut
|
||||
label: Output
|
||||
line: Line
|
||||
pie: Pie
|
||||
placeholder: Select metric output
|
||||
relative: Show relative value
|
||||
relativePrecision: 'Precision:'
|
||||
title: Metrics (numeric fields)
|
||||
modulePick: Pick a module
|
||||
title: Chart builder
|
||||
unconfiguredReport: Unconfigured report
|
||||
yAxis:
|
||||
axisOnRight: Place axis on the right side
|
||||
axisScaleFromZero: Always begin axis scale at zero
|
||||
label: Y-axis
|
||||
labelLabel: Axis label
|
||||
labelPlaceholder: Axis label
|
||||
logarithmicScale: Logarithmic scale
|
||||
maxLabel: Max value
|
||||
maxPlaceholder: Maximum value
|
||||
minLabel: Min value
|
||||
minPlaceholder: Minimum value
|
||||
import: 'Import chart(s):'
|
||||
newLabel: 'Create a new chart:'
|
||||
newPlaceholder: Chart name
|
||||
searchPlaceholder: Type here to search all charts in this namespace
|
||||
title: List of Charts
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user