feat: internationalization Bulgarian (#5998)

* Feature BG init

* lint fix

* Fix merge conflict

* merge main branch add bg lang

* reference centrally defined langs

* refactor supportedLanguages

---------

Co-authored-by: Livio Spring <livio.a@gmail.com>
Co-authored-by: Elio Bischof <eliobischof@gmail.com>
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Elio Bischof <elio@zitadel.com>
This commit is contained in:
dian mushkov 2023-06-16 18:35:03 +03:00 committed by GitHub
parent 7b69449207
commit 4378eb7cb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 3992 additions and 36 deletions

View File

@ -1,5 +1,6 @@
import { CommonModule, registerLocaleData } from '@angular/common';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import localeBg from '@angular/common/locales/bg';
import localeDe from '@angular/common/locales/de';
import localeEn from '@angular/common/locales/en';
import localeEs from '@angular/common/locales/es';
@ -80,6 +81,8 @@ registerLocaleData(localePl);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/pl.json'));
registerLocaleData(localeZh);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/zh.json'));
registerLocaleData(localeBg);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/bg.json'));
export class WebpackTranslateLoader implements TranslateLoader {
getTranslation(lang: string): Observable<any> {

View File

@ -19,6 +19,7 @@ import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import { supportedLanguages } from 'src/app/utils/language';
import { InfoSectionType } from '../../info-section/info-section.component';
import { WarnDialogComponent } from '../../warn-dialog/warn-dialog.component';
import { PolicyComponentServiceType } from '../policy-component-types.enum';
@ -109,7 +110,7 @@ export class LoginTextsComponent implements OnInit, OnDestroy {
@Input() public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
public KeyNamesArray: string[] = KeyNamesArray;
public LOCALES: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public LOCALES: string[] = supportedLanguages;
private sub: Subscription = new Subscription();

View File

@ -47,6 +47,7 @@ import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import { supportedLanguages } from 'src/app/utils/language';
import { InfoSectionType } from '../../info-section/info-section.component';
import { WarnDialogComponent } from '../../warn-dialog/warn-dialog.component';
import { PolicyComponentServiceType } from '../policy-component-types.enum';
@ -441,7 +442,7 @@ export class MessageTextsComponent implements OnInit, OnDestroy {
};
public locale: string = 'en';
public LOCALES: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public LOCALES: string[] = supportedLanguages;
private sub: Subscription = new Subscription();
public canWrite$: Observable<boolean> = this.authService.isAllowed([
this.serviceType === PolicyComponentServiceType.ADMIN

View File

@ -20,6 +20,7 @@ import { AdminService } from 'src/app/services/admin.service';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import { supportedLanguages } from 'src/app/utils/language';
@Component({
selector: 'cnsl-org-create',
@ -45,7 +46,7 @@ export class OrgCreateComponent {
public pwdForm?: UntypedFormGroup;
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = supportedLanguages;
public policy?: PasswordComplexityPolicy.AsObject;
public usePassword: boolean = false;

View File

@ -13,6 +13,7 @@ import { ToastService } from 'src/app/services/toast.service';
import { CountryCallingCodesService, CountryPhoneCode } from 'src/app/services/country-calling-codes.service';
import { formatPhone } from 'src/app/utils/formatPhone';
import { supportedLanguages } from 'src/app/utils/language';
import {
containsLowerCaseValidator,
containsNumberValidator,
@ -33,7 +34,7 @@ import {
export class UserCreateComponent implements OnInit, OnDestroy {
public user: AddHumanUserRequest.AsObject = new AddHumanUserRequest().toObject();
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = supportedLanguages;
public selected: CountryPhoneCode | undefined;
public countryPhoneCodes: CountryPhoneCode[] = [];
public userForm!: UntypedFormGroup;

View File

@ -23,6 +23,7 @@ import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import { formatPhone } from 'src/app/utils/formatPhone';
import { supportedLanguages } from 'src/app/utils/language';
import { EditDialogComponent, EditDialogType } from './edit-dialog/edit-dialog.component';
@Component({
@ -33,7 +34,7 @@ import { EditDialogComponent, EditDialogType } from './edit-dialog/edit-dialog.c
export class AuthUserDetailComponent implements OnDestroy {
public user?: User.AsObject;
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = supportedLanguages;
private subscription: Subscription = new Subscription();

View File

@ -22,6 +22,7 @@ import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import { formatPhone } from 'src/app/utils/formatPhone';
import { supportedLanguages } from 'src/app/utils/language';
import { EditDialogComponent, EditDialogType } from '../auth-user-detail/edit-dialog/edit-dialog.component';
import { ResendEmailDialogComponent } from '../auth-user-detail/resend-email-dialog/resend-email-dialog.component';
import { MachineSecretDialogComponent } from './machine-secret-dialog/machine-secret-dialog.component';
@ -44,7 +45,7 @@ export class UserDetailComponent implements OnInit {
public user!: User.AsObject;
public metadata: Metadata.AsObject[] = [];
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
public languages: string[] = ['de', 'en', 'es', 'it', 'fr', 'ja', 'pl', 'zh'];
public languages: string[] = supportedLanguages;
public ChangeType: any = ChangeType;

View File

@ -2,6 +2,7 @@ import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import * as moment from 'moment';
import { supportedLanguages } from 'src/app/utils/language';
@Pipe({
name: 'localizedDate',
@ -22,9 +23,7 @@ export class LocalizedDatePipe implements PipeTransform {
return moment(value).format(`${format}, HH:mm`);
}
} else {
const lang = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'].includes(this.translateService.currentLang)
? this.translateService.currentLang
: 'en';
const lang = supportedLanguages.includes(this.translateService.currentLang) ? this.translateService.currentLang : 'en';
const datePipe: DatePipe = new DatePipe(lang);
return datePipe.transform(value, pattern ?? 'mediumDate');
}

View File

@ -1,3 +1,3 @@
export const supportedLanguages = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
export const supportedLanguagesRegexp: RegExp = /de|en|es|fr|it|ja|pl|zh/;
export const supportedLanguages = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh', 'bg'];
export const supportedLanguagesRegexp: RegExp = /de|en|es|fr|it|ja|pl|zh|bg/;
export const fallbackLanguage: string = 'en';

File diff suppressed because it is too large Load Diff

View File

@ -1039,7 +1039,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "SMTP Einstellungen",
@ -1238,7 +1239,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Email Verification erfolgreich",
@ -2106,7 +2108,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Manager hinzufügen",

View File

@ -1040,7 +1040,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "SMTP Settings",
@ -1239,7 +1240,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Email verification done",
@ -2103,7 +2105,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Add a Manager",

View File

@ -1040,7 +1040,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "Ajustes SMTP",
@ -1239,7 +1240,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Verificación de email realizada",
@ -2103,7 +2105,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Añadir un Mánager",

View File

@ -1039,7 +1039,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "Paramètres SMTP",
@ -1238,7 +1239,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Vérification de l'email effectuée",
@ -2095,7 +2097,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Ajouter un manager",

View File

@ -1039,7 +1039,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "Impostazioni SMTP",
@ -1238,7 +1239,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Verifica dell'e-mail terminata con successo.",
@ -2107,7 +2109,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Aggiungi un manager",

View File

@ -1040,7 +1040,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "SMTP設定",
@ -1234,7 +1235,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "メール認証が完了しました",
@ -2098,7 +2100,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "マネージャーを追加する",

View File

@ -1039,7 +1039,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "Ustawienia SMTP",
@ -1238,7 +1239,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "Weryfikacja adresu e-mail zakończona",
@ -2107,7 +2109,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "Dodaj managera",

View File

@ -1039,7 +1039,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"SMTP": {
"TITLE": "SMTP 设置",
@ -1237,7 +1238,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"KEYS": {
"emailVerificationDoneText": "电子邮件验证完成",
@ -2094,7 +2096,8 @@
"it": "Italiano",
"ja": "日本語",
"pl": "Polski",
"zh": "简体中文"
"zh": "简体中文",
"bg": "Български"
},
"MEMBER": {
"ADD": "添加管理者",

View File

@ -42,6 +42,7 @@ ZITADEL is available in the following languages
- 日本語 (ja)
- Polishpl
- 简体中文zh
- Bulgarian (bg)
A language is displayed based on your agent's language header. The default language is English.

View File

@ -0,0 +1,440 @@
Login:
Title: Добре дошъл обратно!
Description: Въведете вашите данни за вход.
TitleLinking: Влезте за потребителско свързване
DescriptionLinking: >-
Въведете вашите данни за вход, за да свържете вашия външен потребител с
потребител на ZITADEL.
LoginNameLabel: Потребителско име
UsernamePlaceHolder: потребителско име
LoginnamePlaceHolder: потребителско име@домейн
ExternalUserDescription: Влезте с външен потребител.
MustBeMemberOfOrg: 'Потребителят трябва да е член на {{.OrgName}} организация.'
RegisterButtonText: регистрирам
NextButtonText: следващия
LDAP:
Title: Влизам
Description: Въведете вашите данни за вход.
LoginNameLabel: Потребителско име
PasswordLabel: Парола
NextButtonText: следващия
SelectAccount:
Title: Изберете акаунт
Description: Използвайте вашия ZITADEL-акаунт
TitleLinking: Изберете акаунт за свързване на потребител
DescriptionLinking: 'Изберете своя акаунт, който да свържете с вашия външен потребител.'
OtherUser: Друг потребител
SessionState0: активен
SessionState1: неактивен
MustBeMemberOfOrg: 'Потребителят трябва да е член на {{.OrgName}} организация.'
Password:
Title: Парола
Description: Въведете вашите данни за вход.
PasswordLabel: Парола
MinLength: Минимална дължина
HasUppercase: Главна буква
HasLowercase: Малка буква
HasNumber: Номер
HasSymbol: Символ
Confirmation: Съвпадение за потвърждение
ResetLinkText: нулиране на парола
BackButtonText: обратно
NextButtonText: следващия
UsernameChange:
Title: Промяна на потребителското име
Description: Задайте новото си потребителско име
UsernameLabel: Потребителско име
CancelButtonText: анулиране
NextButtonText: следващия
UsernameChangeDone:
Title: Потребителското име е променено
Description: Вашето потребителско име бе променено успешно.
NextButtonText: следващия
InitPassword:
Title: Задайте парола
Description: >-
Получихте код, който трябва да въведете във формата по-долу, за да зададете
новата си парола.
CodeLabel: Код
NewPasswordLabel: нова парола
NewPasswordConfirmLabel: потвърди парола
ResendButtonText: код за препращане
NextButtonText: следващия
InitPasswordDone:
Title: Зададена парола
Description: Паролата е зададена успешно
NextButtonText: следващия
CancelButtonText: анулиране
InitUser:
Title: Активиране на потребител
Description: Потвърдете имейла си с кода по-долу и задайте парола.
CodeLabel: Код
NewPasswordLabel: нова парола
NewPasswordConfirm: потвърди парола
NextButtonText: следващия
ResendButtonText: код за препращане
InitUserDone:
Title: Потребителят е активиран
Description: Имейлът е потвърден и паролата е успешно зададена
NextButtonText: следващия
CancelButtonText: анулиране
InitMFAPrompt:
Title: 2-факторна настройка
Description: >-
Двуфакторното удостоверяване ви дава допълнителна сигурност за вашия
потребителски акаунт.
Provider0: 'Приложение за удостоверяване (напр. Google/Microsoft Authenticator, Authy)'
Provider1: 'Зависи от устройството (напр. FaceID, Windows Hello, пръстов отпечатък)'
NextButtonText: следващия
SkipButtonText: пропуснете
InitMFAOTP:
Title: 2-факторна проверка
Description: 'Създайте своя 2-фактор. '
OTPDescription: >-
Сканирайте кода с вашето приложение за удостоверяване (напр.
Google/Microsoft Authenticator, Authy) или копирайте тайната и поставете
генерирания код по-долу.
SecretLabel: Тайна
CodeLabel: Код
NextButtonText: следващия
CancelButtonText: анулиране
InitMFAU2F:
Title: Добавете ключ за сигурност
Description: >-
Ключът за сигурност е метод за потвърждение, който може да бъде вграден във
вашия телефон, да използва Bluetooth или да се включи директно в USB порта
на вашия компютър.
TokenNameLabel: Име на защитния ключ/устройство
NotSupported: 'WebAuthN не се поддържа от вашия браузър. '
RegisterTokenButtonText: Добавете ключ за сигурност
ErrorRetry: >-
Опитайте отново, създайте ново предизвикателство или изберете различен
метод.
InitMFADone:
Title: Ключът за сигурност е проверен
Description: 'Страхотно! '
NextButtonText: следващия
CancelButtonText: анулиране
MFAProvider:
Provider0: 'Приложение за удостоверяване (напр. Google/Microsoft Authenticator, Authy)'
Provider1: 'Зависи от устройството (напр. FaceID, Windows Hello, пръстов отпечатък)'
ChooseOther: или изберете друга опция
VerifyMFAOTP:
Title: Проверете 2-фактора
Description: Проверете вашия втори фактор
CodeLabel: Код
NextButtonText: следващия
VerifyMFAU2F:
Title: 2-факторна проверка
Description: >-
Потвърдете своя 2-фактор с регистрираното устройство (напр. FaceID, Windows
Hello, пръстов отпечатък)
NotSupported: 'WebAuthN не се поддържа от вашия браузър. '
ErrorRetry: 'Опитайте отново, създайте нова заявка или изберете друг метод.'
ValidateTokenButtonText: Проверете 2-фактора
Passwordless:
Title: Вход без парола
Description: >-
Влезте с методи за удостоверяване, предоставени от вашето устройство, като
FaceID, Windows Hello или пръстов отпечатък.
NotSupported: 'WebAuthN не се поддържа от вашия браузър. '
ErrorRetry: >-
Опитайте отново, създайте ново предизвикателство или изберете различен
метод.
LoginWithPwButtonText: Влезте с парола
ValidateTokenButtonText: Влезте без парола
PasswordlessPrompt:
Title: Настройка без парола
Description: 'Искате ли да настроите влизане без парола? '
DescriptionInit: 'Трябва да настроите влизане без парола. '
PasswordlessButtonText: Преминете без парола
NextButtonText: следващия
SkipButtonText: пропуснете
PasswordlessRegistration:
Title: Настройка без парола
Description: >-
Добавете вашето удостоверяване, като предоставите име (напр. MyMobilePhone,
MacBook и т.н.) и след това щракнете върху бутона „Регистриране без парола“
по-долу.
TokenNameLabel: Име на устройството
NotSupported: 'WebAuthN не се поддържа от вашия браузър. '
RegisterTokenButtonText: Регистрирайте се без парола
ErrorRetry: >-
Опитайте отново, създайте ново предизвикателство или изберете различен
метод.
PasswordlessRegistrationDone:
Title: Настройка без парола
Description: Успешно добавено устройство за без парола.
DescriptionClose: Сега можете да затворите този прозорец.
NextButtonText: следващия
CancelButtonText: анулиране
PasswordChange:
Title: Промяна на паролата
Description: 'Променете паролата си. '
OldPasswordLabel: Стара парола
NewPasswordLabel: нова парола
NewPasswordConfirmLabel: Потвърждение на парола
CancelButtonText: анулиране
NextButtonText: следващия
Footer: Долен колонтитул
PasswordChangeDone:
Title: Промяна на паролата
Description: Вашата парола бе променена успешно.
NextButtonText: следващия
PasswordResetDone:
Title: Връзката за повторно задаване на парола е изпратена
Description: 'Проверете имейла си, за да нулирате паролата си.'
NextButtonText: следващия
EmailVerification:
Title: Потвърждение на имейла
Description: 'Изпратихме ви имейл, за да потвърдим адреса ви. '
CodeLabel: Код
NextButtonText: следващия
ResendButtonText: код за препращане
EmailVerificationDone:
Title: Потвърждение на имейла
Description: Вашият имейл адрес е потвърден успешно.
NextButtonText: следващия
CancelButtonText: анулиране
LoginButtonText: Влизам
RegisterOption:
Title: Опции за регистрация
Description: Изберете как искате да се регистрирате
RegisterUsernamePasswordButtonText: С парола за потребителско име
ExternalLoginDescription: или се регистрирайте при външен потребител
LoginButtonText: Влизам
RegistrationUser:
Title: Регистрация
Description: 'Въведете своите потребителски данни. '
DescriptionOrgRegister: Въведете своите потребителски данни.
EmailLabel: Електронна поща
UsernameLabel: Потребителско име
FirstnameLabel: Първо име
LastnameLabel: Фамилия
LanguageLabel: език
German: Deutsch
English: Английски
Italian: Италиано
French: Français
Chinese: 简体中文
Polish: Полски
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Пол
Female: Женски пол
Male: Мъжки
Diverse: разнообразен / X
PasswordLabel: Парола
PasswordConfirmLabel: Потвърждение на парола
TosAndPrivacyLabel: Правила и условия
TosConfirm: Приемам
TosLinkText: TOS
PrivacyConfirm: Приемам
PrivacyLinkText: политика за поверителност
ExternalLogin: или се регистрирайте при външен потребител
BackButtonText: Влизам
NextButtonText: следващия
ExternalRegistrationUserOverview:
Title: Регистрация на външен потребител
Description: 'Взехме вашите потребителски данни от избрания доставчик. '
EmailLabel: Електронна поща
UsernameLabel: Потребителско име
FirstnameLabel: Първо име
LastnameLabel: Фамилия
NicknameLabel: Псевдоним
PhoneLabel: Телефонен номер
LanguageLabel: език
German: Deutsch
English: Английски
Italian: Италиано
French: Français
Chinese: 简体中文
Japanese: 日本語
Polish: Полски
Spanish: Español
TosAndPrivacyLabel: Правила и условия
TosConfirm: Приемам
TosLinkText: TOS
PrivacyConfirm: Приемам
PrivacyLinkText: политика за поверителност
ExternalLogin: или се регистрирайте при външен потребител
BackButtonText: обратно
NextButtonText: спаси
RegistrationOrg:
Title: Регистрация на организация
Description: Въведете името на вашата организация и потребителските данни.
OrgNameLabel: Наименование на организацията
EmailLabel: Електронна поща
UsernameLabel: Потребителско име
FirstnameLabel: Първо име
LastnameLabel: Фамилия
PasswordLabel: Парола
PasswordConfirmLabel: Потвърждение на парола
TosAndPrivacyLabel: Правила и условия
TosConfirm: Приемам
TosLinkText: TOS
PrivacyConfirm: Приемам
PrivacyLinkText: политика за поверителност
SaveButtonText: Създайте организация
LoginSuccess:
Title: Успешен вход
AutoRedirectDescription: 'Ще бъдете насочени обратно към вашето приложение автоматично. '
RedirectedDescription: Сега можете да затворите този прозорец.
NextButtonText: следващия
LogoutDone:
Title: Излязъл
Description: Вие излязохте успешно.
LoginButtonText: Влизам
LinkingUsersDone:
Title: Свързване с потребители
Description: Свързването с потребители е готово.
CancelButtonText: анулиране
NextButtonText: следващия
ExternalNotFound:
Title: Външен потребител не е намерен
Description: 'Външен потребител не е намерен. '
LinkButtonText: Връзка
AutoRegisterButtonText: регистрирам
TosAndPrivacyLabel: Правила и условия
TosConfirm: Приемам
TosLinkText: TOS
PrivacyConfirm: Приемам
PrivacyLinkText: политика за поверителност
German: Deutsch
English: Английски
Italian: Италиано
French: Français
Chinese: 简体中文
Polish: Полски
Japanese: 日本語
Spanish: Español
DeviceAuth:
Title: Упълномощаване на устройството
UserCode:
Label: Потребителски код
Description: 'Въведете потребителския код, представен на устройството.'
ButtonNext: следващия
Action:
Description: Дайте достъп до устройството.
GrantDevice: сте на път да предоставите устройство
AccessToScopes: достъп до следните обхвати
Button:
Allow: позволява
Deny: отричам
Done:
Description: Свършен.
Approved: 'Упълномощаването на устройството е одобрено. '
Denied: 'Упълномощаването на устройството е отказано. '
Footer:
PoweredBy: Задвижвани от
Tos: TOS
PrivacyPolicy: Политика за поверителност
Help: Помогне
SupportEmail: Поддръжка на имейл
Errors:
Internal: Възникна вътрешна грешка
AuthRequest:
NotFound: Не може да се намери authrequest
UserAgentNotCorresponding: Потребителският агент не отговаря
UserAgentNotFound: ID на потребителски агент не е намерен
TokenNotFound: Токенът не е намерен
RequestTypeNotSupported: Типът заявка не се поддържа
MissingParameters: Липсват задължителни параметри
User:
NotFound: Потребителят не може да бъде намерен
AlreadyExists: Вече съществува потребител
Inactive: Потребителят е неактивен
NotFoundOnOrg: Потребителят не може да бъде намерен в избраната организация
NotAllowedOrg: Потребителят не е член на необходимата организация
NotMatchingUserID: Потребителят и потребителят в заявката за удостоверяване не съвпадат
UserIDMissing: UserID е празен
Invalid: Невалидни потребителски данни
DomainNotAllowedAsUsername: Домейнът вече е резервиран и не може да се използва
NotAllowedToLink: Потребителят няма право да се свързва с външен доставчик на данни за вход
Profile:
NotFound: Профилът не е намерен
NotChanged: Профилът не е променен
Empty: Профилът е празен
FirstNameEmpty: Първото име в профила е празно
LastNameEmpty: Фамилията в профила е празна
IDMissing: Липсва ID на потребителския профил
Email:
NotFound: Имейлът не е намерен
Invalid: Имейлът е невалиден
AlreadyVerified: Имейлът вече е потвърден
NotChanged: Имейлът не е променен
Empty: Имейлът е празен
IDMissing: Имейл ID липсва
Phone:
NotFound: Телефонът не е намерен
Invalid: Телефонът е невалиден
AlreadyVerified: Телефонът вече е потвърден
Empty: Телефонът е празен
NotChanged: Телефонът не е сменен
Address:
NotFound: Адресът не е намерен
NotChanged: Адресът не е променен
Username:
AlreadyExists: Потребителско име вече е заето
Reserved: Потребителско име вече е заето
Empty: Потребителското име е празно
Password:
ConfirmationWrong: Потвърждението на паролата е грешно
Empty: Паролата е празна
Invalid: Паролата е невалидна
InvalidAndLocked: >-
Паролата е невалидна и потребителят е заключен, свържете се с вашия
администратор.
UsernameOrPassword:
Invalid: Потребителското име или паролата са невалидни
PasswordComplexityPolicy:
NotFound: Политиката за парола не е намерена
MinLength: Паролата е твърде кратка
HasLower: Паролата трябва да съдържа малка буква
HasUpper: Паролата трябва да съдържа горна буква
HasNumber: Паролата трябва да съдържа число
HasSymbol: Паролата трябва да съдържа символ
Code:
Expired: Кодът е изтекъл
Invalid: Кодът е невалиден
Empty: Кодът е празен
CryptoCodeNil: Крипто кодът е нула
NotFound: Не може да се намери код
GeneratorAlgNotSupported: Неподдържан генераторен алгоритъм
EmailVerify:
UserIDEmpty: UserID е празен
ExternalData:
CouldNotRead: Външните данни не могат да бъдат прочетени правилно
MFA:
NoProviders: Няма налични многофакторни доставчици
OTP:
AlreadyReady: Многофакторният OTP (OneTimePassword) вече е настроен
NotExisting: Многофакторният OTP (OneTimePassword) не съществува
InvalidCode: Невалиден код
NotReady: Многофакторният OTP (OneTimePassword) не е готов
Locked: Потребителят е заключен
SomethingWentWrong: Нещо се обърка
NotActive: Потребителят не е активен
ExternalIDP:
IDPTypeNotImplemented: Типът IDP не е внедрен
NotAllowed: Външен доставчик на вход не е разрешен
IDPConfigIDEmpty: Идентификационният номер на доставчика е празен
ExternalUserIDEmpty: ID на външен потребител е празен
UserDisplayNameEmpty: Екранното име на потребителя е празно
NoExternalUserData: Не са получени външни потребителски данни
CreationNotAllowed: Създаването на нов потребител не е разрешено на този доставчик
LinkingNotAllowed: Свързването на потребител не е разрешено на този доставчик
GrantRequired: 'Влизането не е възможно. '
ProjectRequired: 'Влизането не е възможно. '
IdentityProvider:
InvalidConfig: Конфигурацията на доставчика на самоличност е невалидна
IAM:
LockoutPolicy:
NotExisting: Политиката за блокиране не съществува
Org:
LoginPolicy:
RegistrationNotAllowed: Регистрацията не е разрешена
DeviceAuth:
NotExisting: Потребителският код не съществува
optional: (по избор)

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Geschlecht
Female: weiblich
Male: männlich

View File

@ -316,7 +316,7 @@ ExternalNotFound:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
DeviceAuth:
Title: Device Authorization
UserCode:

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Género
Female: Mujer
Male: Hombre

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Genre
Female: Femme
Male: Homme

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Genere
Female: Femminile
Male: Maschile

View File

@ -214,6 +214,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: 性別
Female: 女性
Male: 男性

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: Płeć
Female: Kobieta
Male: Mężczyzna

View File

@ -222,6 +222,7 @@ RegistrationUser:
Polish: Polski
Japanese: 日本語
Spanish: Español
Bulgarian: Български
GenderLabel: 性别
Female: 女性
Male: 男性

View File

@ -76,6 +76,8 @@
</option>
<option value="zh" id="zh" {{if (selectedLanguage "zh")}} selected {{end}}>{{t "ExternalNotFound.Chinese"}}
</option>
<option value="bg" id="bg" {{if (selectedLanguage "bg")}} selected {{end}}>{{t "ExternalNotFound.Bulgarian"}}
</option>
</select>
</div>
</div>

View File

@ -0,0 +1,59 @@
InitCode:
Title: ZITADEL - Инициализиране на потребител
PreHeader: Инициализиране на потребителя
Subject: Инициализиране на потребителя
Greeting: 'Здравейте {{.DisplayName}},'
Text: >-
Този потребител е създаден в ZITADEL. {{.PreferredLoginName}} за да
влезете. {{.Code}}) Ако не сте поискали този имейл, моля, игнорирайте го.
ButtonText: Завършете инициализацията
PasswordReset:
Title: ZITADEL - Нулиране на парола
PreHeader: Нулирайте паролата
Subject: Нулирайте паролата
Greeting: 'Здравейте {{.DisplayName}},'
Text: >-
Получихме заявка за повторно задаване на парола. {{.Code}}) Ако не сте
поискали този имейл, моля, игнорирайте го.
ButtonText: Нулирайте паролата
VerifyEmail:
Title: ZITADEL - Потвърдете имейл
PreHeader: Потвърди Имейл
Subject: Потвърди Имейл
Greeting: 'Здравейте {{.DisplayName}},'
Text: >-
Добавен е нов имейл. {{.Code}}) Ако не сте добавили нов имейл, моля,
игнорирайте този имейл.
ButtonText: Потвърди Имейл
VerifyPhone:
Title: ZITADEL - Потвърдете телефона
PreHeader: Потвърдете телефона
Subject: Потвърдете телефона
Greeting: 'Здравейте {{.DisplayName}},'
Text: 'Добавен е нов телефонен номер. {{.Code}}'
ButtonText: Потвърдете телефона
DomainClaimed:
Title: ZITADEL - Домейнът е заявен
PreHeader: Промяна на имейл/потребителско име
Subject: Домейнът е заявен
Greeting: 'Здравейте {{.DisplayName}},'
Text: >-
Домейнът {{.Domain}} е заявено от организация. {{.Username}} не е част от
тази организация. {{.TempUsername}}) за това влизане.
ButtonText: Влизам
PasswordlessRegistration:
Title: ZITADEL - Добавете вход без парола
PreHeader: Добавете вход без парола
Subject: Добавете вход без парола
Greeting: 'Здравейте {{.DisplayName}},'
Text: 'Получихме заявка за добавяне на токен за влизане без парола. '
ButtonText: Добавете вход без парола
PasswordChange:
Title: ZITADEL - Паролата на потребителя е променена
PreHeader: Промяна на паролата
Subject: Паролата на потребителя е променена
Greeting: 'Здравейте {{.DisplayName}},'
Text: >-
Паролата на вашия потребител е променена, ако тази промяна не е направена от
вас, моля, незабавно нулирайте паролата си.
ButtonText: Влизам

1238
internal/static/i18n/bg.yaml Normal file

File diff suppressed because it is too large Load Diff