mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-28 21:57:23 +00:00
feat: add it-IT to internationalization (#2439)
* login it * deepl translations, corrections * login, en typos * it internal, typo fixes * message texts, optim console texts, guide for internationalization * missing console, fix de, en * Add missing keys from main * translate missing keys * add it to console selection, change it policy descriptors * add missing i18n from jwt idp, fixes * add missing translations * missing translations * fix * auth user language change, interceptor * remove multiline operator Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
parent
cfdb8c3301
commit
12eed30c08
@ -21,27 +21,20 @@ import { ManagementService } from './services/mgmt.service';
|
|||||||
import { ThemeService } from './services/theme.service';
|
import { ThemeService } from './services/theme.service';
|
||||||
import { UpdateService } from './services/update.service';
|
import { UpdateService } from './services/update.service';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'cnsl-root',
|
selector: 'cnsl-root',
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrls: ['./app.component.scss'],
|
styleUrls: ['./app.component.scss'],
|
||||||
animations: [
|
animations: [toolbarAnimation, ...navAnimations, accountCard, routeAnimations, adminLineAnimation],
|
||||||
toolbarAnimation,
|
|
||||||
...navAnimations,
|
|
||||||
accountCard,
|
|
||||||
routeAnimations,
|
|
||||||
adminLineAnimation,
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
export class AppComponent implements OnDestroy {
|
export class AppComponent implements OnDestroy {
|
||||||
@ViewChild('drawer') public drawer!: MatDrawer;
|
@ViewChild('drawer') public drawer!: MatDrawer;
|
||||||
@ViewChild('input', { static: false }) input!: ElementRef;
|
@ViewChild('input', { static: false }) input!: ElementRef;
|
||||||
public isHandset$: Observable<boolean> = this.breakpointObserver
|
public isHandset$: Observable<boolean> = this.breakpointObserver.observe('(max-width: 599px)').pipe(
|
||||||
.observe('(max-width: 599px)')
|
map((result) => {
|
||||||
.pipe(map(result => {
|
|
||||||
return result.matches;
|
return result.matches;
|
||||||
}));
|
}),
|
||||||
|
);
|
||||||
@HostBinding('class') public componentCssClass: string = 'dark-theme';
|
@HostBinding('class') public componentCssClass: string = 'dark-theme';
|
||||||
|
|
||||||
public showAccount: boolean = false;
|
public showAccount: boolean = false;
|
||||||
@ -78,9 +71,18 @@ export class AppComponent implements OnDestroy {
|
|||||||
private activatedRoute: ActivatedRoute,
|
private activatedRoute: ActivatedRoute,
|
||||||
@Inject(DOCUMENT) private document: Document,
|
@Inject(DOCUMENT) private document: Document,
|
||||||
) {
|
) {
|
||||||
console.log('%cWait!', 'text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: #5469D4; font-size: 50px');
|
console.log(
|
||||||
console.log('%cInserting something here could give attackers access to your zitadel account.', 'color: red; font-size: 18px');
|
'%cWait!',
|
||||||
console.log('%cIf you don\'t know exactly what you\'re doing, close the window and stay on the safe side', 'font-size: 16px');
|
'text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: #5469D4; font-size: 50px',
|
||||||
|
);
|
||||||
|
console.log(
|
||||||
|
'%cInserting something here could give attackers access to your zitadel account.',
|
||||||
|
'color: red; font-size: 18px',
|
||||||
|
);
|
||||||
|
console.log(
|
||||||
|
"%cIf you don't know exactly what you're doing, close the window and stay on the safe side",
|
||||||
|
'font-size: 16px',
|
||||||
|
);
|
||||||
console.log('%cIf you know exactly what you are doing, you should work for us', 'font-size: 16px');
|
console.log('%cIf you know exactly what you are doing, you should work for us', 'font-size: 16px');
|
||||||
this.setLanguage();
|
this.setLanguage();
|
||||||
|
|
||||||
@ -109,10 +111,7 @@ export class AppComponent implements OnDestroy {
|
|||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lightbulb-off-outline.svg'),
|
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lightbulb-off-outline.svg'),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_radar', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/radar.svg'));
|
||||||
'mdi_radar',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/radar.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon(
|
||||||
'mdi_lock_question',
|
'mdi_lock_question',
|
||||||
@ -129,20 +128,14 @@ export class AppComponent implements OnDestroy {
|
|||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lock-reset.svg'),
|
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lock-reset.svg'),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_broom', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/broom.svg'));
|
||||||
'mdi_broom',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/broom.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon(
|
||||||
'mdi_pin_outline',
|
'mdi_pin_outline',
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin-outline.svg'),
|
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin-outline.svg'),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_pin', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin.svg'));
|
||||||
'mdi_pin',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon(
|
||||||
'mdi_format-letter-case-lower',
|
'mdi_format-letter-case-lower',
|
||||||
@ -159,54 +152,40 @@ export class AppComponent implements OnDestroy {
|
|||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/counter.svg'),
|
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/counter.svg'),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_openid', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/openid.svg'));
|
||||||
'mdi_openid',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/openid.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_jwt', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/jwt.svg'));
|
||||||
'mdi_jwt',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/jwt.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_symbol', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/symbol.svg'));
|
||||||
'mdi_symbol',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/symbol.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon(
|
||||||
'mdi_numeric',
|
'mdi_numeric',
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/numeric.svg'),
|
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/numeric.svg'),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.matIconRegistry.addSvgIcon(
|
this.matIconRegistry.addSvgIcon('mdi_api', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/api.svg'));
|
||||||
'mdi_api',
|
|
||||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/api.svg'),
|
|
||||||
);
|
|
||||||
|
|
||||||
this.activatedRoute.queryParams
|
this.activatedRoute.queryParams.pipe(takeUntil(this.destroy$)).subscribe((route) => {
|
||||||
.pipe(takeUntil(this.destroy$))
|
const { org } = route;
|
||||||
.subscribe(route => {
|
if (org) {
|
||||||
const { org } = route;
|
this.authService.getActiveOrg(org).then((queriedOrg) => {
|
||||||
if (org) {
|
this.org = queriedOrg;
|
||||||
this.authService.getActiveOrg(org).then(queriedOrg => {
|
});
|
||||||
this.org = queriedOrg;
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.loadPrivateLabelling();
|
this.loadPrivateLabelling();
|
||||||
|
|
||||||
this.getProjectCount();
|
this.getProjectCount();
|
||||||
|
|
||||||
this.authService.activeOrgChanged.pipe(takeUntil(this.destroy$)).subscribe(org => {
|
this.authService.activeOrgChanged.pipe(takeUntil(this.destroy$)).subscribe((org) => {
|
||||||
this.org = org;
|
this.org = org;
|
||||||
this.getProjectCount();
|
this.getProjectCount();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.authenticationService.authenticationChanged.pipe(takeUntil(this.destroy$)).subscribe((authenticated) => {
|
this.authenticationService.authenticationChanged.pipe(takeUntil(this.destroy$)).subscribe((authenticated) => {
|
||||||
if (authenticated) {
|
if (authenticated) {
|
||||||
this.authService.getActiveOrg().then(org => {
|
this.authService.getActiveOrg().then((org) => {
|
||||||
this.org = org;
|
this.org = org;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -219,17 +198,15 @@ export class AppComponent implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.isDarkTheme = this.themeService.isDarkTheme;
|
this.isDarkTheme = this.themeService.isDarkTheme;
|
||||||
this.isDarkTheme.subscribe(dark => this.onSetTheme(dark ? 'dark-theme' : 'light-theme'));
|
this.isDarkTheme.subscribe((dark) => this.onSetTheme(dark ? 'dark-theme' : 'light-theme'));
|
||||||
|
|
||||||
this.translate.onLangChange.subscribe((language: LangChangeEvent) => {
|
this.translate.onLangChange.subscribe((language: LangChangeEvent) => {
|
||||||
this.document.documentElement.lang = language.lang;
|
this.document.documentElement.lang = language.lang;
|
||||||
this.language = language.lang;
|
this.language = language.lang;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.filterControl.valueChanges.pipe(debounceTime(300)).subscribe(value => {
|
this.filterControl.valueChanges.pipe(debounceTime(300)).subscribe((value) => {
|
||||||
this.loadOrgs(
|
this.loadOrgs(value.trim().toLowerCase());
|
||||||
value.trim().toLowerCase(),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.hideAdminWarn = localStorage.getItem('hideAdministratorWarning') === 'true' ? true : false;
|
this.hideAdminWarn = localStorage.getItem('hideAdministratorWarning') === 'true' ? true : false;
|
||||||
@ -270,7 +247,7 @@ export class AppComponent implements OnDestroy {
|
|||||||
|
|
||||||
setDefaultColors();
|
setDefaultColors();
|
||||||
|
|
||||||
this.mgmtService.getLabelPolicy().then(labelpolicy => {
|
this.mgmtService.getLabelPolicy().then((labelpolicy) => {
|
||||||
if (labelpolicy.policy) {
|
if (labelpolicy.policy) {
|
||||||
this.labelpolicy = labelpolicy.policy;
|
this.labelpolicy = labelpolicy.policy;
|
||||||
|
|
||||||
@ -296,8 +273,7 @@ export class AppComponent implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public loadPolicies(): void {
|
public loadPolicies(): void {
|
||||||
this.mgmtService.getPrivacyPolicy().then(privacypolicy => {
|
this.mgmtService.getPrivacyPolicy().then((privacypolicy) => {
|
||||||
|
|
||||||
if (privacypolicy.policy) {
|
if (privacypolicy.policy) {
|
||||||
this.privacyPolicy = privacypolicy.policy;
|
this.privacyPolicy = privacypolicy.policy;
|
||||||
}
|
}
|
||||||
@ -316,7 +292,7 @@ export class AppComponent implements OnDestroy {
|
|||||||
|
|
||||||
this.orgLoading$.next(true);
|
this.orgLoading$.next(true);
|
||||||
this.orgs$ = from(this.authService.listMyProjectOrgs(10, 0, query ? [query] : undefined)).pipe(
|
this.orgs$ = from(this.authService.listMyProjectOrgs(10, 0, query ? [query] : undefined)).pipe(
|
||||||
map(resp => {
|
map((resp) => {
|
||||||
return resp.resultList.sort((left, right) => left.name.localeCompare(right.name));
|
return resp.resultList.sort((left, right) => left.name.localeCompare(right.name));
|
||||||
}),
|
}),
|
||||||
catchError(() => of([])),
|
catchError(() => of([])),
|
||||||
@ -347,16 +323,15 @@ export class AppComponent implements OnDestroy {
|
|||||||
this.translate.addLangs(['en', 'de']);
|
this.translate.addLangs(['en', 'de']);
|
||||||
this.translate.setDefaultLang('en');
|
this.translate.setDefaultLang('en');
|
||||||
|
|
||||||
this.authService.user.subscribe(userprofile => {
|
this.authService.user.subscribe((userprofile) => {
|
||||||
if (userprofile) {
|
if (userprofile) {
|
||||||
// this.user = userprofile;
|
// this.user = userprofile;
|
||||||
const cropped = navigator.language.split('-')[0] ?? 'en';
|
const cropped = navigator.language.split('-')[0] ?? 'en';
|
||||||
const fallbackLang = cropped.match(/en|de/) ? cropped : 'en';
|
const fallbackLang = cropped.match(/en|de|it/) ? cropped : 'en';
|
||||||
|
|
||||||
const lang =
|
const lang = userprofile?.human?.profile?.preferredLanguage.match(/en|de|it/)
|
||||||
userprofile?.human?.profile?.preferredLanguage.match(/en|de/) ?
|
? userprofile.human.profile?.preferredLanguage
|
||||||
userprofile.human.profile?.preferredLanguage :
|
: fallbackLang;
|
||||||
fallbackLang;
|
|
||||||
this.translate.use(lang);
|
this.translate.use(lang);
|
||||||
this.language = lang;
|
this.language = lang;
|
||||||
this.document.documentElement.lang = lang;
|
this.document.documentElement.lang = lang;
|
||||||
@ -388,4 +363,3 @@ export class AppComponent implements OnDestroy {
|
|||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ export class LoginTextsComponent implements OnDestroy {
|
|||||||
public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
|
public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
|
||||||
|
|
||||||
public KeyNamesArray: string[] = KeyNamesArray;
|
public KeyNamesArray: string[] = KeyNamesArray;
|
||||||
public LOCALES: string[] = ['en'];
|
public LOCALES: string[] = ['en', 'de', 'it'];
|
||||||
|
|
||||||
private sub: Subscription = new Subscription();
|
private sub: Subscription = new Subscription();
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ export class MessageTextsComponent implements OnDestroy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public locale: string = 'en';
|
public locale: string = 'en';
|
||||||
public LOCALES: string[] = ['en'];
|
public LOCALES: string[] = ['en', 'de', 'it'];
|
||||||
private sub: Subscription = new Subscription();
|
private sub: Subscription = new Subscription();
|
||||||
public currentPolicy: GridPolicy = MESSAGE_TEXTS_POLICY;
|
public currentPolicy: GridPolicy = MESSAGE_TEXTS_POLICY;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ import { EditDialogComponent, EditDialogType } from './edit-dialog/edit-dialog.c
|
|||||||
export class AuthUserDetailComponent implements OnDestroy {
|
export class AuthUserDetailComponent implements OnDestroy {
|
||||||
public user!: User.AsObject;
|
public user!: User.AsObject;
|
||||||
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
|
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
|
||||||
public languages: string[] = ['de', 'en'];
|
public languages: string[] = ['de', 'en', 'it'];
|
||||||
|
|
||||||
private subscription: Subscription = new Subscription();
|
private subscription: Subscription = new Subscription();
|
||||||
|
|
||||||
@ -39,19 +39,26 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
) {
|
) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.refreshUser();
|
this.refreshUser();
|
||||||
|
|
||||||
|
this.userService.getSupportedLanguages().then((lang) => {
|
||||||
|
this.languages = lang.languagesList;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshUser(): void {
|
refreshUser(): void {
|
||||||
this.refreshChanges$.emit();
|
this.refreshChanges$.emit();
|
||||||
this.userService.getMyUser().then(resp => {
|
this.userService
|
||||||
if (resp.user) {
|
.getMyUser()
|
||||||
this.user = resp.user;
|
.then((resp) => {
|
||||||
}
|
if (resp.user) {
|
||||||
this.loading = false;
|
this.user = resp.user;
|
||||||
}).catch(error => {
|
}
|
||||||
this.toast.showError(error);
|
this.loading = false;
|
||||||
this.loading = false;
|
})
|
||||||
});
|
.catch((error) => {
|
||||||
|
this.toast.showError(error);
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnDestroy(): void {
|
public ngOnDestroy(): void {
|
||||||
@ -71,13 +78,15 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
width: '400px',
|
width: '400px',
|
||||||
});
|
});
|
||||||
|
|
||||||
dialogRefPhone.afterClosed().subscribe(resp => {
|
dialogRefPhone.afterClosed().subscribe((resp) => {
|
||||||
if (resp && resp !== this.user.userName) {
|
if (resp && resp !== this.user.userName) {
|
||||||
this.userService.updateMyUserName(resp).then(() => {
|
this.userService
|
||||||
|
.updateMyUserName(resp)
|
||||||
|
.then(() => {
|
||||||
this.toast.showInfo('USER.TOAST.USERNAMECHANGED', true);
|
this.toast.showInfo('USER.TOAST.USERNAMECHANGED', true);
|
||||||
this.refreshUser();
|
this.refreshUser();
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch((error) => {
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -101,7 +110,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
this.toast.showInfo('USER.TOAST.SAVED', true);
|
this.toast.showInfo('USER.TOAST.SAVED', true);
|
||||||
this.refreshChanges$.emit();
|
this.refreshChanges$.emit();
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch((error) => {
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -109,7 +118,8 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
|
|
||||||
public saveEmail(email: string): void {
|
public saveEmail(email: string): void {
|
||||||
this.userService
|
this.userService
|
||||||
.setMyEmail(email).then(() => {
|
.setMyEmail(email)
|
||||||
|
.then(() => {
|
||||||
this.toast.showInfo('USER.TOAST.EMAILSAVED', true);
|
this.toast.showInfo('USER.TOAST.EMAILSAVED', true);
|
||||||
if (this.user.human) {
|
if (this.user.human) {
|
||||||
const mailToSet = new Email();
|
const mailToSet = new Email();
|
||||||
@ -117,18 +127,22 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
this.user.human.email = mailToSet.toObject();
|
this.user.human.email = mailToSet.toObject();
|
||||||
this.refreshUser();
|
this.refreshUser();
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
})
|
||||||
|
.catch((error) => {
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public enteredPhoneCode(code: string): void {
|
public enteredPhoneCode(code: string): void {
|
||||||
this.userService.verifyMyPhone(code).then(() => {
|
this.userService
|
||||||
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
.verifyMyPhone(code)
|
||||||
this.refreshUser();
|
.then(() => {
|
||||||
}).catch(error => {
|
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
||||||
this.toast.showError(error);
|
this.refreshUser();
|
||||||
});
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
this.toast.showError(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public changedLanguage(language: string): void {
|
public changedLanguage(language: string): void {
|
||||||
@ -136,40 +150,50 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public resendPhoneVerification(): void {
|
public resendPhoneVerification(): void {
|
||||||
this.userService.resendMyPhoneVerification().then(() => {
|
this.userService
|
||||||
this.toast.showInfo('USER.TOAST.PHONEVERIFICATIONSENT', true);
|
.resendMyPhoneVerification()
|
||||||
this.refreshChanges$.emit();
|
.then(() => {
|
||||||
}).catch(error => {
|
this.toast.showInfo('USER.TOAST.PHONEVERIFICATIONSENT', true);
|
||||||
this.toast.showError(error);
|
this.refreshChanges$.emit();
|
||||||
});
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
this.toast.showError(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public resendEmailVerification(): void {
|
public resendEmailVerification(): void {
|
||||||
this.userService.resendMyEmailVerification().then(() => {
|
this.userService
|
||||||
this.toast.showInfo('USER.TOAST.EMAILVERIFICATIONSENT', true);
|
.resendMyEmailVerification()
|
||||||
this.refreshChanges$.emit();
|
.then(() => {
|
||||||
}).catch(error => {
|
this.toast.showInfo('USER.TOAST.EMAILVERIFICATIONSENT', true);
|
||||||
this.toast.showError(error);
|
this.refreshChanges$.emit();
|
||||||
});
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
this.toast.showError(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public deletePhone(): void {
|
public deletePhone(): void {
|
||||||
this.userService.removeMyPhone().then(() => {
|
this.userService
|
||||||
this.toast.showInfo('USER.TOAST.PHONEREMOVED', true);
|
.removeMyPhone()
|
||||||
if (this.user.human?.phone) {
|
.then(() => {
|
||||||
const phone = new Phone();
|
this.toast.showInfo('USER.TOAST.PHONEREMOVED', true);
|
||||||
this.user.human.phone = phone.toObject();
|
if (this.user.human?.phone) {
|
||||||
this.refreshUser();
|
const phone = new Phone();
|
||||||
}
|
this.user.human.phone = phone.toObject();
|
||||||
}).catch(error => {
|
this.refreshUser();
|
||||||
this.toast.showError(error);
|
}
|
||||||
});
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
this.toast.showError(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public savePhone(phone: string): void {
|
public savePhone(phone: string): void {
|
||||||
if (this.user.human) {
|
if (this.user.human) {
|
||||||
this.userService
|
this.userService
|
||||||
.setMyPhone(phone).then(() => {
|
.setMyPhone(phone)
|
||||||
|
.then(() => {
|
||||||
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
||||||
if (this.user.human) {
|
if (this.user.human) {
|
||||||
const phoneToSet = new Phone();
|
const phoneToSet = new Phone();
|
||||||
@ -177,7 +201,8 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
this.user.human.phone = phoneToSet.toObject();
|
this.user.human.phone = phoneToSet.toObject();
|
||||||
this.refreshUser();
|
this.refreshUser();
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
})
|
||||||
|
.catch((error) => {
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -199,7 +224,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
width: '400px',
|
width: '400px',
|
||||||
});
|
});
|
||||||
|
|
||||||
dialogRefPhone.afterClosed().subscribe(resp => {
|
dialogRefPhone.afterClosed().subscribe((resp) => {
|
||||||
if (resp) {
|
if (resp) {
|
||||||
this.savePhone(resp);
|
this.savePhone(resp);
|
||||||
}
|
}
|
||||||
@ -219,7 +244,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
|||||||
width: '400px',
|
width: '400px',
|
||||||
});
|
});
|
||||||
|
|
||||||
dialogRefEmail.afterClosed().subscribe(resp => {
|
dialogRefEmail.afterClosed().subscribe((resp) => {
|
||||||
if (resp) {
|
if (resp) {
|
||||||
this.saveEmail(resp);
|
this.saveEmail(resp);
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ import {
|
|||||||
GetMyProfileResponse,
|
GetMyProfileResponse,
|
||||||
GetMyUserRequest,
|
GetMyUserRequest,
|
||||||
GetMyUserResponse,
|
GetMyUserResponse,
|
||||||
|
GetSupportedLanguagesRequest,
|
||||||
|
GetSupportedLanguagesResponse,
|
||||||
ListMyAuthFactorsRequest,
|
ListMyAuthFactorsRequest,
|
||||||
ListMyAuthFactorsResponse,
|
ListMyAuthFactorsResponse,
|
||||||
ListMyLinkedIDPsRequest,
|
ListMyLinkedIDPsRequest,
|
||||||
@ -86,8 +88,6 @@ import { Gender, MembershipQuery, User, WebAuthNVerification } from '../proto/ge
|
|||||||
import { GrpcService } from './grpc.service';
|
import { GrpcService } from './grpc.service';
|
||||||
import { StorageKey, StorageLocation, StorageService } from './storage.service';
|
import { StorageKey, StorageLocation, StorageService } from './storage.service';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
@ -108,26 +108,26 @@ export class GrpcAuthService {
|
|||||||
private storage: StorageService,
|
private storage: StorageService,
|
||||||
) {
|
) {
|
||||||
this.user = merge(
|
this.user = merge(
|
||||||
of(this.oauthService.getAccessToken()).pipe(
|
of(this.oauthService.getAccessToken()).pipe(filter((token) => (token ? true : false))),
|
||||||
filter(token => token ? true : false),
|
|
||||||
),
|
|
||||||
this.oauthService.events.pipe(
|
this.oauthService.events.pipe(
|
||||||
filter(e => e.type === 'token_received'),
|
filter((e) => e.type === 'token_received'),
|
||||||
timeout(this.oauthService.waitForTokenInMsec || 0),
|
timeout(this.oauthService.waitForTokenInMsec || 0),
|
||||||
catchError(_ => of(null)), // timeout is not an error
|
catchError((_) => of(null)), // timeout is not an error
|
||||||
map(_ => this.oauthService.getAccessToken()),
|
map((_) => this.oauthService.getAccessToken()),
|
||||||
),
|
),
|
||||||
).pipe(
|
).pipe(
|
||||||
take(1),
|
take(1),
|
||||||
mergeMap(() => {
|
mergeMap(() => {
|
||||||
return from(this.getMyUser().then(resp => {
|
return from(
|
||||||
const user = resp.user;
|
this.getMyUser().then((resp) => {
|
||||||
if (user) {
|
const user = resp.user;
|
||||||
return user;
|
if (user) {
|
||||||
} else {
|
return user;
|
||||||
return undefined;
|
} else {
|
||||||
}
|
return undefined;
|
||||||
}));
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
finalize(() => {
|
finalize(() => {
|
||||||
this.loadPermissions();
|
this.loadPermissions();
|
||||||
@ -143,7 +143,7 @@ export class GrpcAuthService {
|
|||||||
|
|
||||||
public async getActiveOrg(id?: string): Promise<Org.AsObject> {
|
public async getActiveOrg(id?: string): Promise<Org.AsObject> {
|
||||||
if (id) {
|
if (id) {
|
||||||
const find = this.cachedOrgs.find(tmp => tmp.id === id);
|
const find = this.cachedOrgs.find((tmp) => tmp.id === id);
|
||||||
if (find) {
|
if (find) {
|
||||||
this.setActiveOrg(find);
|
this.setActiveOrg(find);
|
||||||
return Promise.resolve(find);
|
return Promise.resolve(find);
|
||||||
@ -151,7 +151,7 @@ export class GrpcAuthService {
|
|||||||
const orgs = (await this.listMyProjectOrgs(10, 0)).resultList;
|
const orgs = (await this.listMyProjectOrgs(10, 0)).resultList;
|
||||||
this.cachedOrgs = orgs;
|
this.cachedOrgs = orgs;
|
||||||
|
|
||||||
const toFind = this.cachedOrgs.find(tmp => tmp.id === id);
|
const toFind = this.cachedOrgs.find((tmp) => tmp.id === id);
|
||||||
if (toFind) {
|
if (toFind) {
|
||||||
this.setActiveOrg(toFind);
|
this.setActiveOrg(toFind);
|
||||||
return Promise.resolve(toFind);
|
return Promise.resolve(toFind);
|
||||||
@ -167,7 +167,7 @@ export class GrpcAuthService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const org = this.storage.getItem<Org.AsObject>(StorageKey.organization, StorageLocation.local);
|
const org = this.storage.getItem<Org.AsObject>(StorageKey.organization, StorageLocation.local);
|
||||||
if (org && orgs.find(tmp => tmp.id === org.id)) {
|
if (org && orgs.find((tmp) => tmp.id === org.id)) {
|
||||||
this.storage.setItem(StorageKey.organization, org, StorageLocation.session);
|
this.storage.setItem(StorageKey.organization, org, StorageLocation.session);
|
||||||
return org;
|
return org;
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ export class GrpcAuthService {
|
|||||||
if (orgs.length === 0) {
|
if (orgs.length === 0) {
|
||||||
return Promise.reject(new Error('No organizations found!'));
|
return Promise.reject(new Error('No organizations found!'));
|
||||||
}
|
}
|
||||||
const orgToSet = orgs.find(element => element.id !== '0' && element.name !== '');
|
const orgToSet = orgs.find((element) => element.id !== '0' && element.name !== '');
|
||||||
|
|
||||||
if (orgToSet) {
|
if (orgToSet) {
|
||||||
this.setActiveOrg(orgToSet);
|
this.setActiveOrg(orgToSet);
|
||||||
@ -197,31 +197,35 @@ export class GrpcAuthService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private loadPermissions(): void {
|
private loadPermissions(): void {
|
||||||
from(this.listMyZitadelPermissions()).pipe(
|
from(this.listMyZitadelPermissions())
|
||||||
map(rolesResp => rolesResp.resultList),
|
.pipe(
|
||||||
catchError(_ => {
|
map((rolesResp) => rolesResp.resultList),
|
||||||
return of([]);
|
catchError((_) => {
|
||||||
}),
|
return of([]);
|
||||||
finalize(() => {
|
}),
|
||||||
this.fetchedZitadelPermissions.next(true);
|
finalize(() => {
|
||||||
}),
|
this.fetchedZitadelPermissions.next(true);
|
||||||
).subscribe(roles => {
|
}),
|
||||||
this.zitadelPermissions.next(roles);
|
)
|
||||||
});
|
.subscribe((roles) => {
|
||||||
|
this.zitadelPermissions.next(roles);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadFeatures(): void {
|
private loadFeatures(): void {
|
||||||
from(this.listMyZitadelFeatures()).pipe(
|
from(this.listMyZitadelFeatures())
|
||||||
map(featuresResp => featuresResp.resultList),
|
.pipe(
|
||||||
catchError(_ => {
|
map((featuresResp) => featuresResp.resultList),
|
||||||
return of([]);
|
catchError((_) => {
|
||||||
}),
|
return of([]);
|
||||||
finalize(() => {
|
}),
|
||||||
this.fetchedZitadelFeatures.next(true);
|
finalize(() => {
|
||||||
}),
|
this.fetchedZitadelFeatures.next(true);
|
||||||
).subscribe(features => {
|
}),
|
||||||
this.zitadelFeatures.next(features);
|
)
|
||||||
});
|
.subscribe((features) => {
|
||||||
|
this.zitadelFeatures.next(features);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -230,7 +234,7 @@ export class GrpcAuthService {
|
|||||||
*/
|
*/
|
||||||
public isAllowed(roles: string[] | RegExp[]): Observable<boolean> {
|
public isAllowed(roles: string[] | RegExp[]): Observable<boolean> {
|
||||||
if (roles && roles.length > 0) {
|
if (roles && roles.length > 0) {
|
||||||
return this.zitadelPermissions.pipe(switchMap(zroles => of(this.hasRoles(zroles, roles))));
|
return this.zitadelPermissions.pipe(switchMap((zroles) => of(this.hasRoles(zroles, roles))));
|
||||||
} else {
|
} else {
|
||||||
return of(false);
|
return of(false);
|
||||||
}
|
}
|
||||||
@ -242,11 +246,15 @@ export class GrpcAuthService {
|
|||||||
* @param requestedRoles required roles for accessing the respective component
|
* @param requestedRoles required roles for accessing the respective component
|
||||||
*/
|
*/
|
||||||
public hasRoles(userRoles: string[], requestedRoles: string[] | RegExp[]): boolean {
|
public hasRoles(userRoles: string[], requestedRoles: string[] | RegExp[]): boolean {
|
||||||
return requestedRoles.findIndex((regexp: any) => {
|
return (
|
||||||
return userRoles.findIndex(role => {
|
requestedRoles.findIndex((regexp: any) => {
|
||||||
return new RegExp(regexp).test(role);
|
return (
|
||||||
}) > -1;
|
userRoles.findIndex((role) => {
|
||||||
}) > -1;
|
return new RegExp(regexp).test(role);
|
||||||
|
}) > -1
|
||||||
|
);
|
||||||
|
}) > -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -255,7 +263,7 @@ export class GrpcAuthService {
|
|||||||
*/
|
*/
|
||||||
public canUseFeature(features: string[] | RegExp[]): Observable<boolean> {
|
public canUseFeature(features: string[] | RegExp[]): Observable<boolean> {
|
||||||
if (features && features.length > 0) {
|
if (features && features.length > 0) {
|
||||||
return this.zitadelFeatures.pipe(switchMap(zFeatures => of(this.hasFeature(zFeatures, features))));
|
return this.zitadelFeatures.pipe(switchMap((zFeatures) => of(this.hasFeature(zFeatures, features))));
|
||||||
} else {
|
} else {
|
||||||
return of(false);
|
return of(false);
|
||||||
}
|
}
|
||||||
@ -267,33 +275,33 @@ export class GrpcAuthService {
|
|||||||
* @param requestedFeature required features for accessing the respective component
|
* @param requestedFeature required features for accessing the respective component
|
||||||
*/
|
*/
|
||||||
public hasFeature(userFeatures: string[], requestedFeatures: string[] | RegExp[]): boolean {
|
public hasFeature(userFeatures: string[], requestedFeatures: string[] | RegExp[]): boolean {
|
||||||
return requestedFeatures.findIndex((regexp: any) => {
|
return (
|
||||||
return userFeatures.findIndex(feature => {
|
requestedFeatures.findIndex((regexp: any) => {
|
||||||
return new RegExp(regexp).test(feature);
|
return (
|
||||||
}) > -1;
|
userFeatures.findIndex((feature) => {
|
||||||
}) > -1;
|
return new RegExp(regexp).test(feature);
|
||||||
|
}) > -1
|
||||||
|
);
|
||||||
|
}) > -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMyProfile(): Promise<GetMyProfileResponse.AsObject> {
|
public getMyProfile(): Promise<GetMyProfileResponse.AsObject> {
|
||||||
return this.grpcService.auth.getMyProfile(new GetMyProfileRequest(), null).then(resp => resp.toObject());
|
return this.grpcService.auth.getMyProfile(new GetMyProfileRequest(), null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMyPasswordComplexityPolicy(): Promise<GetMyPasswordComplexityPolicyResponse.AsObject> {
|
public getMyPasswordComplexityPolicy(): Promise<GetMyPasswordComplexityPolicyResponse.AsObject> {
|
||||||
return this.grpcService.auth.getMyPasswordComplexityPolicy(
|
return this.grpcService.auth
|
||||||
new GetMyPasswordComplexityPolicyRequest(), null,
|
.getMyPasswordComplexityPolicy(new GetMyPasswordComplexityPolicyRequest(), null)
|
||||||
).then(resp => resp.toObject());
|
.then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMyUser(): Promise<GetMyUserResponse.AsObject> {
|
public getMyUser(): Promise<GetMyUserResponse.AsObject> {
|
||||||
return this.grpcService.auth.getMyUser(
|
return this.grpcService.auth.getMyUser(new GetMyUserRequest(), null).then((resp) => resp.toObject());
|
||||||
new GetMyUserRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyMultiFactors(): Promise<ListMyAuthFactorsResponse.AsObject> {
|
public listMyMultiFactors(): Promise<ListMyAuthFactorsResponse.AsObject> {
|
||||||
return this.grpcService.auth.listMyAuthFactors(
|
return this.grpcService.auth.listMyAuthFactors(new ListMyAuthFactorsRequest(), null).then((resp) => resp.toObject());
|
||||||
new ListMyAuthFactorsRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyProjectOrgs(
|
public listMyProjectOrgs(
|
||||||
@ -313,7 +321,7 @@ export class GrpcAuthService {
|
|||||||
req.setQueriesList(queryList);
|
req.setQueriesList(queryList);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.grpcService.auth.listMyProjectOrgs(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyProjectOrgs(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateMyProfile(
|
public updateMyProfile(
|
||||||
@ -343,7 +351,7 @@ export class GrpcAuthService {
|
|||||||
if (preferredLanguage) {
|
if (preferredLanguage) {
|
||||||
req.setPreferredLanguage(preferredLanguage);
|
req.setPreferredLanguage(preferredLanguage);
|
||||||
}
|
}
|
||||||
return this.grpcService.auth.updateMyProfile(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.updateMyProfile(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public get zitadelPermissionsChanged(): Observable<string[]> {
|
public get zitadelPermissionsChanged(): Observable<string[]> {
|
||||||
@ -352,11 +360,14 @@ export class GrpcAuthService {
|
|||||||
|
|
||||||
public listMyUserSessions(): Promise<ListMyUserSessionsResponse.AsObject> {
|
public listMyUserSessions(): Promise<ListMyUserSessionsResponse.AsObject> {
|
||||||
const req = new ListMyUserSessionsRequest();
|
const req = new ListMyUserSessionsRequest();
|
||||||
return this.grpcService.auth.listMyUserSessions(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyUserSessions(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyUserGrants(limit?: number, offset?: number, queryList?: ListQuery[]):
|
public listMyUserGrants(
|
||||||
Promise<ListMyUserGrantsResponse.AsObject> {
|
limit?: number,
|
||||||
|
offset?: number,
|
||||||
|
queryList?: ListQuery[],
|
||||||
|
): Promise<ListMyUserGrantsResponse.AsObject> {
|
||||||
const req = new ListMyUserGrantsRequest();
|
const req = new ListMyUserGrantsRequest();
|
||||||
const query = new ListQuery();
|
const query = new ListQuery();
|
||||||
if (limit) {
|
if (limit) {
|
||||||
@ -366,10 +377,12 @@ export class GrpcAuthService {
|
|||||||
query.setOffset(offset);
|
query.setOffset(offset);
|
||||||
}
|
}
|
||||||
req.setQuery(query);
|
req.setQuery(query);
|
||||||
return this.grpcService.auth.listMyUserGrants(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyUserGrants(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyMemberships(limit: number, offset: number,
|
public listMyMemberships(
|
||||||
|
limit: number,
|
||||||
|
offset: number,
|
||||||
queryList?: MembershipQuery[],
|
queryList?: MembershipQuery[],
|
||||||
): Promise<ListMyMembershipsResponse.AsObject> {
|
): Promise<ListMyMembershipsResponse.AsObject> {
|
||||||
const req = new ListMyMembershipsRequest();
|
const req = new ListMyMembershipsRequest();
|
||||||
@ -384,92 +397,87 @@ export class GrpcAuthService {
|
|||||||
req.setQueriesList(queryList);
|
req.setQueriesList(queryList);
|
||||||
}
|
}
|
||||||
req.setQuery(metadata);
|
req.setQuery(metadata);
|
||||||
return this.grpcService.auth.listMyMemberships(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyMemberships(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMyEmail(): Promise<GetMyEmailResponse.AsObject> {
|
public getMyEmail(): Promise<GetMyEmailResponse.AsObject> {
|
||||||
const req = new GetMyEmailRequest();
|
const req = new GetMyEmailRequest();
|
||||||
return this.grpcService.auth.getMyEmail(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.getMyEmail(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public setMyEmail(email: string): Promise<SetMyEmailResponse.AsObject> {
|
public setMyEmail(email: string): Promise<SetMyEmailResponse.AsObject> {
|
||||||
const req = new SetMyEmailRequest();
|
const req = new SetMyEmailRequest();
|
||||||
req.setEmail(email);
|
req.setEmail(email);
|
||||||
return this.grpcService.auth.setMyEmail(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.setMyEmail(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public resendMyEmailVerification(): Promise<ResendMyEmailVerificationResponse.AsObject> {
|
public resendMyEmailVerification(): Promise<ResendMyEmailVerificationResponse.AsObject> {
|
||||||
const req = new ResendMyEmailVerificationRequest();
|
const req = new ResendMyEmailVerificationRequest();
|
||||||
return this.grpcService.auth.resendMyEmailVerification(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.resendMyEmailVerification(req, null).then((resp) => resp.toObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
public getSupportedLanguages(): Promise<GetSupportedLanguagesResponse.AsObject> {
|
||||||
|
const req = new GetSupportedLanguagesRequest();
|
||||||
|
return this.grpcService.auth.getSupportedLanguages(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyPhone(): Promise<RemoveMyPhoneResponse.AsObject> {
|
public removeMyPhone(): Promise<RemoveMyPhoneResponse.AsObject> {
|
||||||
return this.grpcService.auth.removeMyPhone(
|
return this.grpcService.auth.removeMyPhone(new RemoveMyPhoneRequest(), null).then((resp) => resp.toObject());
|
||||||
new RemoveMyPhoneRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateMyUserName(username: string): Promise<UpdateMyUserNameResponse.AsObject> {
|
public updateMyUserName(username: string): Promise<UpdateMyUserNameResponse.AsObject> {
|
||||||
const req = new UpdateMyUserNameRequest();
|
const req = new UpdateMyUserNameRequest();
|
||||||
req.setUserName(username);
|
req.setUserName(username);
|
||||||
return this.grpcService.auth.updateMyUserName(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.updateMyUserName(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyZitadelPermissions(): Promise<ListMyZitadelPermissionsResponse.AsObject> {
|
public listMyZitadelPermissions(): Promise<ListMyZitadelPermissionsResponse.AsObject> {
|
||||||
return this.grpcService.auth.listMyZitadelPermissions(
|
return this.grpcService.auth
|
||||||
new ListMyZitadelPermissionsRequest(), null,
|
.listMyZitadelPermissions(new ListMyZitadelPermissionsRequest(), null)
|
||||||
).then(resp => resp.toObject());
|
.then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyZitadelFeatures(): Promise<ListMyZitadelFeaturesResponse.AsObject> {
|
public listMyZitadelFeatures(): Promise<ListMyZitadelFeaturesResponse.AsObject> {
|
||||||
return this.grpcService.auth.listMyZitadelFeatures(
|
return this.grpcService.auth
|
||||||
new ListMyZitadelFeaturesRequest(), null,
|
.listMyZitadelFeatures(new ListMyZitadelFeaturesRequest(), null)
|
||||||
).then(resp => resp.toObject());
|
.then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public getMyPhone(): Promise<GetMyPhoneResponse.AsObject> {
|
public getMyPhone(): Promise<GetMyPhoneResponse.AsObject> {
|
||||||
return this.grpcService.auth.getMyPhone(
|
return this.grpcService.auth.getMyPhone(new GetMyPhoneRequest(), null).then((resp) => resp.toObject());
|
||||||
new GetMyPhoneRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public setMyPhone(phone: string): Promise<SetMyPhoneResponse.AsObject> {
|
public setMyPhone(phone: string): Promise<SetMyPhoneResponse.AsObject> {
|
||||||
const req = new SetMyPhoneRequest();
|
const req = new SetMyPhoneRequest();
|
||||||
req.setPhone(phone);
|
req.setPhone(phone);
|
||||||
return this.grpcService.auth.setMyPhone(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.setMyPhone(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public resendMyPhoneVerification(): Promise<ResendMyPhoneVerificationResponse.AsObject> {
|
public resendMyPhoneVerification(): Promise<ResendMyPhoneVerificationResponse.AsObject> {
|
||||||
const req = new ResendMyPhoneVerificationRequest();
|
const req = new ResendMyPhoneVerificationRequest();
|
||||||
return this.grpcService.auth.resendMyPhoneVerification(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.resendMyPhoneVerification(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateMyPassword(oldPassword: string, newPassword: string): Promise<UpdateMyPasswordResponse.AsObject> {
|
public updateMyPassword(oldPassword: string, newPassword: string): Promise<UpdateMyPasswordResponse.AsObject> {
|
||||||
const req = new UpdateMyPasswordRequest();
|
const req = new UpdateMyPasswordRequest();
|
||||||
req.setOldPassword(oldPassword);
|
req.setOldPassword(oldPassword);
|
||||||
req.setNewPassword(newPassword);
|
req.setNewPassword(newPassword);
|
||||||
return this.grpcService.auth.updateMyPassword(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.updateMyPassword(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyLinkedIDP(
|
public removeMyLinkedIDP(idpId: string, linkedUserId: string): Promise<RemoveMyLinkedIDPResponse.AsObject> {
|
||||||
idpId: string,
|
|
||||||
linkedUserId: string,
|
|
||||||
): Promise<RemoveMyLinkedIDPResponse.AsObject> {
|
|
||||||
const req = new RemoveMyLinkedIDPRequest();
|
const req = new RemoveMyLinkedIDPRequest();
|
||||||
req.setLinkedUserId(linkedUserId);
|
req.setLinkedUserId(linkedUserId);
|
||||||
req.setIdpId(idpId);
|
req.setIdpId(idpId);
|
||||||
return this.grpcService.auth.removeMyLinkedIDP(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.removeMyLinkedIDP(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyAvatar(): Promise<RemoveMyAvatarResponse.AsObject> {
|
public removeMyAvatar(): Promise<RemoveMyAvatarResponse.AsObject> {
|
||||||
const req = new RemoveMyAvatarRequest();
|
const req = new RemoveMyAvatarRequest();
|
||||||
return this.grpcService.auth.removeMyAvatar(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.removeMyAvatar(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyLinkedIDPs(
|
public listMyLinkedIDPs(limit: number, offset: number): Promise<ListMyLinkedIDPsResponse.AsObject> {
|
||||||
limit: number,
|
|
||||||
offset: number,
|
|
||||||
): Promise<ListMyLinkedIDPsResponse.AsObject> {
|
|
||||||
const req = new ListMyLinkedIDPsRequest();
|
const req = new ListMyLinkedIDPsRequest();
|
||||||
const metadata = new ListQuery();
|
const metadata = new ListQuery();
|
||||||
if (limit) {
|
if (limit) {
|
||||||
@ -479,25 +487,21 @@ export class GrpcAuthService {
|
|||||||
metadata.setOffset(offset);
|
metadata.setOffset(offset);
|
||||||
}
|
}
|
||||||
req.setQuery(metadata);
|
req.setQuery(metadata);
|
||||||
return this.grpcService.auth.listMyLinkedIDPs(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyLinkedIDPs(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public addMyMultiFactorOTP(): Promise<AddMyAuthFactorOTPResponse.AsObject> {
|
public addMyMultiFactorOTP(): Promise<AddMyAuthFactorOTPResponse.AsObject> {
|
||||||
return this.grpcService.auth.addMyAuthFactorOTP(
|
return this.grpcService.auth.addMyAuthFactorOTP(new AddMyAuthFactorOTPRequest(), null).then((resp) => resp.toObject());
|
||||||
new AddMyAuthFactorOTPRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public addMyMultiFactorU2F(): Promise<AddMyAuthFactorU2FResponse.AsObject> {
|
public addMyMultiFactorU2F(): Promise<AddMyAuthFactorU2FResponse.AsObject> {
|
||||||
return this.grpcService.auth.addMyAuthFactorU2F(
|
return this.grpcService.auth.addMyAuthFactorU2F(new AddMyAuthFactorU2FRequest(), null).then((resp) => resp.toObject());
|
||||||
new AddMyAuthFactorU2FRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyMultiFactorU2F(tokenId: string): Promise<RemoveMyAuthFactorU2FResponse.AsObject> {
|
public removeMyMultiFactorU2F(tokenId: string): Promise<RemoveMyAuthFactorU2FResponse.AsObject> {
|
||||||
const req = new RemoveMyAuthFactorU2FRequest();
|
const req = new RemoveMyAuthFactorU2FRequest();
|
||||||
req.setTokenId(tokenId);
|
req.setTokenId(tokenId);
|
||||||
return this.grpcService.auth.removeMyAuthFactorU2F(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.removeMyAuthFactorU2F(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public verifyMyMultiFactorU2F(credential: string, tokenname: string): Promise<VerifyMyAuthFactorU2FResponse.AsObject> {
|
public verifyMyMultiFactorU2F(credential: string, tokenname: string): Promise<VerifyMyAuthFactorU2FResponse.AsObject> {
|
||||||
@ -507,25 +511,21 @@ export class GrpcAuthService {
|
|||||||
verification.setTokenName(tokenname);
|
verification.setTokenName(tokenname);
|
||||||
req.setVerification(verification);
|
req.setVerification(verification);
|
||||||
|
|
||||||
return this.grpcService.auth.verifyMyAuthFactorU2F(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.verifyMyAuthFactorU2F(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyPasswordless(): Promise<ListMyPasswordlessResponse.AsObject> {
|
public listMyPasswordless(): Promise<ListMyPasswordlessResponse.AsObject> {
|
||||||
return this.grpcService.auth.listMyPasswordless(
|
return this.grpcService.auth.listMyPasswordless(new ListMyPasswordlessRequest(), null).then((resp) => resp.toObject());
|
||||||
new ListMyPasswordlessRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public addMyPasswordless(): Promise<AddMyPasswordlessResponse.AsObject> {
|
public addMyPasswordless(): Promise<AddMyPasswordlessResponse.AsObject> {
|
||||||
return this.grpcService.auth.addMyPasswordless(
|
return this.grpcService.auth.addMyPasswordless(new AddMyPasswordlessRequest(), null).then((resp) => resp.toObject());
|
||||||
new AddMyPasswordlessRequest(), null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyPasswordless(tokenId: string): Promise<RemoveMyPasswordlessResponse.AsObject> {
|
public removeMyPasswordless(tokenId: string): Promise<RemoveMyPasswordlessResponse.AsObject> {
|
||||||
const req = new RemoveMyPasswordlessRequest();
|
const req = new RemoveMyPasswordlessRequest();
|
||||||
req.setTokenId(tokenId);
|
req.setTokenId(tokenId);
|
||||||
return this.grpcService.auth.removeMyPasswordless(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.removeMyPasswordless(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public verifyMyPasswordless(credential: string, tokenname: string): Promise<VerifyMyPasswordlessResponse.AsObject> {
|
public verifyMyPasswordless(credential: string, tokenname: string): Promise<VerifyMyPasswordlessResponse.AsObject> {
|
||||||
@ -535,37 +535,35 @@ export class GrpcAuthService {
|
|||||||
verification.setPublicKeyCredential(credential);
|
verification.setPublicKeyCredential(credential);
|
||||||
req.setVerification(verification);
|
req.setVerification(verification);
|
||||||
|
|
||||||
return this.grpcService.auth.verifyMyPasswordless(
|
return this.grpcService.auth.verifyMyPasswordless(req, null).then((resp) => resp.toObject());
|
||||||
req, null,
|
|
||||||
).then(resp => resp.toObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public sendMyPasswordlessLink(): Promise<SendMyPasswordlessLinkResponse.AsObject> {
|
public sendMyPasswordlessLink(): Promise<SendMyPasswordlessLinkResponse.AsObject> {
|
||||||
const req = new SendMyPasswordlessLinkRequest();
|
const req = new SendMyPasswordlessLinkRequest();
|
||||||
return this.grpcService.auth.sendMyPasswordlessLink(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.sendMyPasswordlessLink(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public addMyPasswordlessLink(): Promise<AddMyPasswordlessLinkResponse.AsObject> {
|
public addMyPasswordlessLink(): Promise<AddMyPasswordlessLinkResponse.AsObject> {
|
||||||
const req = new AddMyPasswordlessLinkRequest();
|
const req = new AddMyPasswordlessLinkRequest();
|
||||||
return this.grpcService.auth.addMyPasswordlessLink(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.addMyPasswordlessLink(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeMyMultiFactorOTP(): Promise<RemoveMyAuthFactorOTPResponse.AsObject> {
|
public removeMyMultiFactorOTP(): Promise<RemoveMyAuthFactorOTPResponse.AsObject> {
|
||||||
return this.grpcService.auth.removeMyAuthFactorOTP(
|
return this.grpcService.auth
|
||||||
new RemoveMyAuthFactorOTPRequest(), null,
|
.removeMyAuthFactorOTP(new RemoveMyAuthFactorOTPRequest(), null)
|
||||||
).then(resp => resp.toObject());
|
.then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public verifyMyMultiFactorOTP(code: string): Promise<VerifyMyAuthFactorOTPResponse.AsObject> {
|
public verifyMyMultiFactorOTP(code: string): Promise<VerifyMyAuthFactorOTPResponse.AsObject> {
|
||||||
const req = new VerifyMyAuthFactorOTPRequest();
|
const req = new VerifyMyAuthFactorOTPRequest();
|
||||||
req.setCode(code);
|
req.setCode(code);
|
||||||
return this.grpcService.auth.verifyMyAuthFactorOTP(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.verifyMyAuthFactorOTP(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public verifyMyPhone(code: string): Promise<VerifyMyPhoneResponse.AsObject> {
|
public verifyMyPhone(code: string): Promise<VerifyMyPhoneResponse.AsObject> {
|
||||||
const req = new VerifyMyPhoneRequest();
|
const req = new VerifyMyPhoneRequest();
|
||||||
req.setCode(code);
|
req.setCode(code);
|
||||||
return this.grpcService.auth.verifyMyPhone(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.verifyMyPhone(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
public listMyUserChanges(limit: number, sequence: number): Promise<ListMyUserChangesResponse.AsObject> {
|
public listMyUserChanges(limit: number, sequence: number): Promise<ListMyUserChangesResponse.AsObject> {
|
||||||
@ -579,6 +577,6 @@ export class GrpcAuthService {
|
|||||||
query.setSequence(sequence);
|
query.setSequence(sequence);
|
||||||
}
|
}
|
||||||
req.setQuery(query);
|
req.setQuery(query);
|
||||||
return this.grpcService.auth.listMyUserChanges(req, null).then(resp => resp.toObject());
|
return this.grpcService.auth.listMyUserChanges(req, null).then((resp) => resp.toObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -754,7 +754,9 @@
|
|||||||
},
|
},
|
||||||
"PRIVATELABELING_POLICY": {
|
"PRIVATELABELING_POLICY": {
|
||||||
"TITLE": "Private Labeling",
|
"TITLE": "Private Labeling",
|
||||||
"DESCRIPTION": "Definiere das Erscheinungsbild des Logins."
|
"BTN":"Datei auswählen",
|
||||||
|
"DESCRIPTION": "Definiere das Erscheinungsbild des Logins.",
|
||||||
|
"ACTIVATEPREVIEW":"Preview aktivieren"
|
||||||
},
|
},
|
||||||
"LOGIN_POLICY": {
|
"LOGIN_POLICY": {
|
||||||
"TITLE": "Login Richtlinien",
|
"TITLE": "Login Richtlinien",
|
||||||
@ -1300,6 +1302,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"NEXTSTEPS": {
|
"NEXTSTEPS": {
|
||||||
|
"TITLE": "Nächste Schritte",
|
||||||
"0": {
|
"0": {
|
||||||
"TITLE": "Rollen festlegen",
|
"TITLE": "Rollen festlegen",
|
||||||
"DESC": "Erfassen Sie Rollen für ihr Projekt"
|
"DESC": "Erfassen Sie Rollen für ihr Projekt"
|
||||||
@ -1388,7 +1391,7 @@
|
|||||||
"TOKENTYPE": "Auth Token Typ",
|
"TOKENTYPE": "Auth Token Typ",
|
||||||
"TOKENTYPE0": "Bearer Token",
|
"TOKENTYPE0": "Bearer Token",
|
||||||
"TOKENTYPE1": "JWT",
|
"TOKENTYPE1": "JWT",
|
||||||
"UNSECUREREDIRECT": "Ich hoffe, Du weisst, was Du tust.",
|
"UNSECUREREDIRECT": "Wir hoffen, Du weisst, was Du tust.",
|
||||||
"OVERVIEWSECTION": "Übersicht",
|
"OVERVIEWSECTION": "Übersicht",
|
||||||
"OVERVIEWTITLE": "Deine Konfiguration ist bereit. Du kannst sie hier nochmals prüfen.",
|
"OVERVIEWTITLE": "Deine Konfiguration ist bereit. Du kannst sie hier nochmals prüfen.",
|
||||||
"ACCESSTOKENROLEASSERTION": "Benutzerrollen dem Access Token hinzufügen",
|
"ACCESSTOKENROLEASSERTION": "Benutzerrollen dem Access Token hinzufügen",
|
||||||
@ -1480,6 +1483,7 @@
|
|||||||
},
|
},
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
"de": "Deutsch",
|
"de": "Deutsch",
|
||||||
|
"it": "Italienisch",
|
||||||
"en": "Englisch"
|
"en": "Englisch"
|
||||||
},
|
},
|
||||||
"MEMBER": {
|
"MEMBER": {
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
"SECURITYANDPRIVACY_DESC": "Manage Your Information and Security Settings",
|
"SECURITYANDPRIVACY_DESC": "Manage Your Information and Security Settings",
|
||||||
"SECURITYANDPRIVACY_BUTTON": "Personalise Information and Security",
|
"SECURITYANDPRIVACY_BUTTON": "Personalise Information and Security",
|
||||||
"CHANGE_PWD": "Change Password",
|
"CHANGE_PWD": "Change Password",
|
||||||
"PROTECTION": "Organisational Policies",
|
"PROTECTION": "Organizational Policies",
|
||||||
"PROTECTION_DESC": "Manage your organisational guidelines. Explore some pre-packaged solutions that save you time and ensure security.",
|
"PROTECTION_DESC": "Manage your organisational guidelines. Explore some pre-packaged solutions that save you time and ensure security.",
|
||||||
"PROTECTION_BUTTON": "Explore",
|
"PROTECTION_BUTTON": "Explore",
|
||||||
"PROJECTS": "Create and Manage Your Applications and Projects",
|
"PROJECTS": "Create and Manage Your Applications and Projects",
|
||||||
@ -301,8 +301,8 @@
|
|||||||
"EXTERNALIDP": {
|
"EXTERNALIDP": {
|
||||||
"TITLE": "External Identity Providers",
|
"TITLE": "External Identity Providers",
|
||||||
"DESC": "",
|
"DESC": "",
|
||||||
"IDPCONFIGID": "Idp Config ID",
|
"IDPCONFIGID": "IDP Config ID",
|
||||||
"IDPNAME": "Idp Name",
|
"IDPNAME": "IDP Name",
|
||||||
"USERDISPLAYNAME": "External Name",
|
"USERDISPLAYNAME": "External Name",
|
||||||
"EXTERNALUSERID": "External User ID",
|
"EXTERNALUSERID": "External User ID",
|
||||||
"DIALOG": {
|
"DIALOG": {
|
||||||
@ -331,7 +331,7 @@
|
|||||||
"STATE2": "Inactive",
|
"STATE2": "Inactive",
|
||||||
"STATE3": "Deleted",
|
"STATE3": "Deleted",
|
||||||
"STATE4": "Locked",
|
"STATE4": "Locked",
|
||||||
"STATE5": "Supend",
|
"STATE5": "Suspended",
|
||||||
"STATE6": "Initial"
|
"STATE6": "Initial"
|
||||||
},
|
},
|
||||||
"PROFILE": {
|
"PROFILE": {
|
||||||
@ -356,7 +356,7 @@
|
|||||||
"CURRENT":"Current Picture",
|
"CURRENT":"Current Picture",
|
||||||
"PREVIEW":"Preview",
|
"PREVIEW":"Preview",
|
||||||
"DELETESUCCESS":"Deleted successfully!",
|
"DELETESUCCESS":"Deleted successfully!",
|
||||||
"CROPPERERROR":"An error while uploading your file failed. Try a different format and size if necessary."
|
"CROPPERERROR":"An error while uploading your file occurred. Try a different format and size if necessary."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MACHINE": {
|
"MACHINE": {
|
||||||
@ -595,7 +595,7 @@
|
|||||||
"VERIFICATION_VALIDATION_ONGOING": "A verification token has already been requested. Click on the button to trigger a verification check.",
|
"VERIFICATION_VALIDATION_ONGOING": "A verification token has already been requested. Click on the button to trigger a verification check.",
|
||||||
"VERIFICATION_VALIDATION_ONGOING_TYPE": "Type of the token:",
|
"VERIFICATION_VALIDATION_ONGOING_TYPE": "Type of the token:",
|
||||||
"VERIFICATION_SUCCESSFUL": "Domain successfully verified!",
|
"VERIFICATION_SUCCESSFUL": "Domain successfully verified!",
|
||||||
"REQUESTNEWTOKEN": "Request new Token",
|
"REQUESTNEWTOKEN": "Request new token",
|
||||||
"TYPES": {
|
"TYPES": {
|
||||||
"1": "HTTP",
|
"1": "HTTP",
|
||||||
"2": "DNS"
|
"2": "DNS"
|
||||||
@ -659,7 +659,7 @@
|
|||||||
"POSTAL_CODE": "Postal Code",
|
"POSTAL_CODE": "Postal Code",
|
||||||
"COUNTRY": "Country",
|
"COUNTRY": "Country",
|
||||||
"TITLE": "Zitadel Tier",
|
"TITLE": "Zitadel Tier",
|
||||||
"DESCRIPTION": "Zitadel works with Stripe to simplify invoicing. The following link redirects to Stripe.com.",
|
"DESCRIPTION": "Zitadel works with Stripe to simplify invoicing. The following link redirects to stripe.com.",
|
||||||
"QUESTIONS": "For questions regarding payments contact our support ",
|
"QUESTIONS": "For questions regarding payments contact our support ",
|
||||||
"BTN": "Change Tier"
|
"BTN": "Change Tier"
|
||||||
},
|
},
|
||||||
@ -716,7 +716,7 @@
|
|||||||
"BTN":"Select File",
|
"BTN":"Select File",
|
||||||
"ACTIVATEPREVIEW":"Apply configuration",
|
"ACTIVATEPREVIEW":"Apply configuration",
|
||||||
"DARK":"Dark Mode",
|
"DARK":"Dark Mode",
|
||||||
"LIGHT":"Lighg Mode",
|
"LIGHT":"Light Mode",
|
||||||
"CHANGEVIEW":"Change View",
|
"CHANGEVIEW":"Change View",
|
||||||
"ACTIVATED":"Policy changes are now LIVE",
|
"ACTIVATED":"Policy changes are now LIVE",
|
||||||
"THEME":"Theme",
|
"THEME":"Theme",
|
||||||
@ -1483,6 +1483,7 @@
|
|||||||
},
|
},
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
"de": "German",
|
"de": "German",
|
||||||
|
"it": "Italian",
|
||||||
"en": "English"
|
"en": "English"
|
||||||
},
|
},
|
||||||
"MEMBER": {
|
"MEMBER": {
|
||||||
|
1546
console/src/assets/i18n/it.json
Normal file
1546
console/src/assets/i18n/it.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -25,5 +25,21 @@ You will see the default texts in the input field and you can overwrite them by
|
|||||||

|

|
||||||
|
|
||||||
## Reset to default
|
## Reset to default
|
||||||
|
|
||||||
If you don't like your customization anymore click the "reset policy" button.
|
If you don't like your customization anymore click the "reset policy" button.
|
||||||
All your settings will be removed and the default settings of the system will trigger.
|
All your settings will be removed and the default settings of the system will trigger.
|
||||||
|
|
||||||
|
## Internationalization
|
||||||
|
|
||||||
|
ZITADELs support for languages will be extended with time.
|
||||||
|
If you need support for a specific language we highly recommend you to write translation files for the missing language.
|
||||||
|
|
||||||
|
ZITADEL loads translations from three files:
|
||||||
|
|
||||||
|
- [Console translations](https://github.com/caos/zitadel/tree/main/console/src/assets/i18n)
|
||||||
|
- [Login interface texts](https://github.com/caos/zitadel/tree/main/internal/ui/login/static/i18n)
|
||||||
|
- [Email Notifcation texts](https://github.com/caos/zitadel/tree/main/internal/notification/static/i18n)
|
||||||
|
- [Common translations](https://github.com/caos/zitadel/tree/main/internal/static/i18n) for success or error toasts
|
||||||
|
|
||||||
|
Make sure you set the locale as the name. Later on, language header will determine which file gets displayed.
|
||||||
|
|
||||||
|
42
internal/notification/static/i18n/it.yaml
Normal file
42
internal/notification/static/i18n/it.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
InitCode:
|
||||||
|
Title: ZITADEL - Inizializzare l'utente
|
||||||
|
PreHeader: Inizializzare l'utente
|
||||||
|
Subject: Inizializzare l'utente
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: Questo utente è stato creato in ZITADEL. Usa il nome utente {{.PreferredLoginName}} per accedere. Per favore, clicca il pulsante per finire il processo di inizializzazione. (Codice {{.Codice}}) Se non hai richiesto questa mail, per favore ignorala.
|
||||||
|
ButtonText: Termina
|
||||||
|
PasswordReset:
|
||||||
|
Title: ZITADEL - Ripristina la password
|
||||||
|
PreHeader: Ripristina la password
|
||||||
|
Subject: Ripristina la password
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: Abbiamo ricevuto una richiesta di reimpostazione della password. Per favore clicca il pulsante per resettare la tua password. (Codice {{.Codice}}) Se non hai richiesto questa mail, ignorala.
|
||||||
|
ButtonText: Ripristina
|
||||||
|
VerifyEmail:
|
||||||
|
Title: ZITADEL - Verifica l'e-mail
|
||||||
|
PreHeader: Verifica l'e-mail
|
||||||
|
Subject: Verifica l'e-mail
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: È stata aggiunta una nuova email. Per favore fai clic sul pulsante per verificare la tua mail. (Codice {{.Codice}}) Se non hai aggiunto una nuova email, ignora questa email.
|
||||||
|
ButtonText: Verifica
|
||||||
|
VerifyPhone:
|
||||||
|
Title: ZITADEL - Verifica il telefono
|
||||||
|
PreHeader: Verifica il telefono
|
||||||
|
Subject: Verifica il telefono
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: È stato aggiunto un nuovo numero di telefono. Usa il seguente codice per verificarlo {{.Code}}
|
||||||
|
ButtonText: Verifica
|
||||||
|
DomainClaimed:
|
||||||
|
Title: ZITADEL - Il dominio è stato rivendicato
|
||||||
|
PreHeader: Cambiare email / nome utente
|
||||||
|
Subject: Il dominio è stato rivendicato
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: Il dominio {{.Domain}} è stato rivendicato da un'organizzazione. Il tuo attuale utente {{.Username}} non fa parte di questa organizzazione. Perciò dovrai cambiare la tua email quando farai il login. Abbiamo creato un nome utente temporaneo ({{.TempUsername}}) per questo login.
|
||||||
|
ButtonText: Accedi
|
||||||
|
PasswordlessRegistration:
|
||||||
|
Title: ZITADEL - Aggiungere autenticazione passwordless
|
||||||
|
PreHeader: Aggiungi l'autenticazione passwordless
|
||||||
|
Subject: Aggiungi l'autenticazione passwordless
|
||||||
|
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||||
|
Text: Abbiamo ricevuto una richiesta per aggiungere l'autenticazione passwordless. Usa il pulsante qui sotto per aggiungere il tuo token o dispositivo per il login senza password.
|
||||||
|
ButtonText: Attiva passwordless
|
@ -18,7 +18,7 @@ Errors:
|
|||||||
SetPublicFailed: Bucket konnte nicht auf public gesetzt werden
|
SetPublicFailed: Bucket konnte nicht auf public gesetzt werden
|
||||||
Object:
|
Object:
|
||||||
PutFailed: Objekt konnte nicht erstellt werden
|
PutFailed: Objekt konnte nicht erstellt werden
|
||||||
GetFaieled: Objekt konnte nicht gelesen werden
|
GetFailed: Objekt konnte nicht gelesen werden
|
||||||
PresignedTokenFailed: Signiertes Token konnte nicht erstellt werden
|
PresignedTokenFailed: Signiertes Token konnte nicht erstellt werden
|
||||||
ListFailed: Objektliste konnte nicht gelesen werden
|
ListFailed: Objektliste konnte nicht gelesen werden
|
||||||
RemoveFailed: Objekt konnte nicht gelöscht werden
|
RemoveFailed: Objekt konnte nicht gelöscht werden
|
||||||
@ -190,7 +190,7 @@ Errors:
|
|||||||
NotExisting: Org IAM Policy existiert nicht
|
NotExisting: Org IAM Policy existiert nicht
|
||||||
AlreadyExists: Org IAM Policy existiert bereits
|
AlreadyExists: Org IAM Policy existiert bereits
|
||||||
Project:
|
Project:
|
||||||
ProjectIDMissing: Project Id fehlt
|
ProjectIDMissing: Project ID fehlt
|
||||||
AlreadyExists: Project existiert bereits auf der Organisation
|
AlreadyExists: Project existiert bereits auf der Organisation
|
||||||
OrgNotExisting: Organisation existiert nicht
|
OrgNotExisting: Organisation existiert nicht
|
||||||
UserNotExisting: User existiert nicht
|
UserNotExisting: User existiert nicht
|
||||||
@ -242,7 +242,7 @@ Errors:
|
|||||||
MemberInvalid: Member ist ungültig
|
MemberInvalid: Member ist ungültig
|
||||||
MemberAlreadyExisting: Member existiert bereits
|
MemberAlreadyExisting: Member existiert bereits
|
||||||
MemberNotExisting: Member existiert nicht
|
MemberNotExisting: Member existiert nicht
|
||||||
IDMissing: Id fehlt
|
IDMissing: ID fehlt
|
||||||
GlobalOrgMissing: Globale Organisation fehlt
|
GlobalOrgMissing: Globale Organisation fehlt
|
||||||
GlobalOrgAlreadySet: Globale Organisation wurde bereits gesetzt
|
GlobalOrgAlreadySet: Globale Organisation wurde bereits gesetzt
|
||||||
IAMProjectIDMissing: IAM Project ID fehlt
|
IAMProjectIDMissing: IAM Project ID fehlt
|
||||||
@ -266,7 +266,7 @@ Errors:
|
|||||||
IDP:
|
IDP:
|
||||||
AlreadyExists: Identitäts Provider existiert bereits
|
AlreadyExists: Identitäts Provider existiert bereits
|
||||||
NotExisting: Identitäts Provider existiert nicht
|
NotExisting: Identitäts Provider existiert nicht
|
||||||
Invalid: Idp Provider ist ungültig
|
Invalid: IDP ist ungültig
|
||||||
IDPConfig:
|
IDPConfig:
|
||||||
AlreadyExists: Identitäts Provider Konfiguration existiert bereits
|
AlreadyExists: Identitäts Provider Konfiguration existiert bereits
|
||||||
NotInactive: Identitäts Provider Konfiguration nicht inaktive
|
NotInactive: Identitäts Provider Konfiguration nicht inaktive
|
||||||
@ -325,7 +325,7 @@ Errors:
|
|||||||
NotFound: Benutzer Berechtigung konnte nicht gefunden werden
|
NotFound: Benutzer Berechtigung konnte nicht gefunden werden
|
||||||
Invalid: Benutzer Berechtigung ist ungültig
|
Invalid: Benutzer Berechtigung ist ungültig
|
||||||
NotChanged: Benutzer Berechtigung wurde nicht verändert
|
NotChanged: Benutzer Berechtigung wurde nicht verändert
|
||||||
IDMissing: Id fehlt
|
IDMissing: ID fehlt
|
||||||
NotActive: Benutzer Berechtigung ist nicht aktiv
|
NotActive: Benutzer Berechtigung ist nicht aktiv
|
||||||
NotInactive: Benutzer Berechtigung ist nicht deaktiviert
|
NotInactive: Benutzer Berechtigung ist nicht deaktiviert
|
||||||
NoPermissionForProject: Benutzer hat keine Rechte auf diesem Projekt
|
NoPermissionForProject: Benutzer hat keine Rechte auf diesem Projekt
|
||||||
|
@ -17,8 +17,8 @@ Errors:
|
|||||||
RemoveFailed: Bucket not deleted
|
RemoveFailed: Bucket not deleted
|
||||||
SetPublicFailed: Could not set bucket to public
|
SetPublicFailed: Could not set bucket to public
|
||||||
Object:
|
Object:
|
||||||
PutFailed: Objekt not created
|
PutFailed: Object not created
|
||||||
GetFaieled: Objekt could not be read
|
GetFailed: Object could not be read
|
||||||
PresignedTokenFailed: Signed token could not be created
|
PresignedTokenFailed: Signed token could not be created
|
||||||
ListFailed: Objectlist could not be read
|
ListFailed: Objectlist could not be read
|
||||||
RemoveFailed: Object could not be removed
|
RemoveFailed: Object could not be removed
|
||||||
@ -74,7 +74,7 @@ Errors:
|
|||||||
Expired: Code is expired
|
Expired: Code is expired
|
||||||
GeneratorAlgNotSupported: Unsupported generator algorithm
|
GeneratorAlgNotSupported: Unsupported generator algorithm
|
||||||
Password:
|
Password:
|
||||||
NotFound: Passoword not found
|
NotFound: Password not found
|
||||||
Empty: Password is empty
|
Empty: Password is empty
|
||||||
Invalid: Password is invalid
|
Invalid: Password is invalid
|
||||||
NotSet: User has not set a password
|
NotSet: User has not set a password
|
||||||
@ -216,7 +216,7 @@ Errors:
|
|||||||
NotFound: Application not found
|
NotFound: Application not found
|
||||||
Invalid: Application invalid
|
Invalid: Application invalid
|
||||||
NotExisting: Application doesn't exist
|
NotExisting: Application doesn't exist
|
||||||
NotActive:: Application is not active
|
NotActive: Application is not active
|
||||||
NotInactive: Application is not inactive
|
NotInactive: Application is not inactive
|
||||||
OIDCConfigInvalid: OIDC configuration is invalid
|
OIDCConfigInvalid: OIDC configuration is invalid
|
||||||
APIConfigInvalid: API configuration is invalid
|
APIConfigInvalid: API configuration is invalid
|
||||||
@ -285,7 +285,7 @@ Errors:
|
|||||||
AlreadyExists: Default Message Text already exists
|
AlreadyExists: Default Message Text already exists
|
||||||
Invalid: Default Message Text is invalid
|
Invalid: Default Message Text is invalid
|
||||||
PasswordComplexityPolicy:
|
PasswordComplexityPolicy:
|
||||||
NotFound: Default Private Label Policy not found
|
NotFound: Default Password Complexity Policy not found
|
||||||
NotExisting: Default Password Complexity Policy not existing
|
NotExisting: Default Password Complexity Policy not existing
|
||||||
AlreadyExists: Default Password Complexity Policy already existing
|
AlreadyExists: Default Password Complexity Policy already existing
|
||||||
Empty: Default Password Complexity Policy empty
|
Empty: Default Password Complexity Policy empty
|
||||||
@ -688,7 +688,7 @@ EventTypes:
|
|||||||
changed: Project member changed
|
changed: Project member changed
|
||||||
removed: Project member removed
|
removed: Project member removed
|
||||||
cascade:
|
cascade:
|
||||||
removeD: Project member cascade removed
|
removed: Project member cascade removed
|
||||||
role:
|
role:
|
||||||
added: Project role added
|
added: Project role added
|
||||||
changed: Project role changed
|
changed: Project role changed
|
||||||
|
836
internal/static/i18n/it.yaml
Normal file
836
internal/static/i18n/it.yaml
Normal file
@ -0,0 +1,836 @@
|
|||||||
|
Errors:
|
||||||
|
Internal: Si è verificato un errore interno
|
||||||
|
NoChangesFound: Nessun cambiamento
|
||||||
|
OriginNotAllowed: Origine non consentita
|
||||||
|
IDMissing: ID mancante
|
||||||
|
ResourceOwnerMissing: Resource Owner mancante
|
||||||
|
Assets:
|
||||||
|
EmptyKey: Asset key vuoto
|
||||||
|
Store:
|
||||||
|
NotInitialized: Assets storage non inizializzato
|
||||||
|
NotConfigured: Assets storage non configurato
|
||||||
|
Bucket:
|
||||||
|
Internal: Errore interno nella creazione
|
||||||
|
AlreadyExists: Bucket già esistente
|
||||||
|
CreateFailed: Bucket non creato
|
||||||
|
ListFailed: I Bucket non possono essere letti
|
||||||
|
RemoveFailed: Bucket non rimosso
|
||||||
|
SetPublicFailed: Impossibile impostare Bucket
|
||||||
|
Object:
|
||||||
|
PutFailed: Oggetto non creato
|
||||||
|
GetFailed: Oggetto non può essere letto
|
||||||
|
PresignedTokenFailed: Il token non può essere creato
|
||||||
|
ListFailed: La lista degli oggetti non può essere letta
|
||||||
|
RemoveFailed: L'oggetto non può essere rimosso
|
||||||
|
Limit:
|
||||||
|
ExceedsDefault: Il limite supera quello predefinito
|
||||||
|
User:
|
||||||
|
NotFound: L'utente non è stato trovato
|
||||||
|
AlreadyExists: L'utente già esistente
|
||||||
|
NotFoundOnOrg: L'utente non è stato trovato nell'organizzazione scelta
|
||||||
|
NotAllowedOrg: L'utente non è membro dell'organizzazione richiesta
|
||||||
|
UserIDMissing: ID utente mancante
|
||||||
|
OrgIamPolicyNil: Impostazione Org IAM mancante
|
||||||
|
EmailAsUsernameNotAllowed: L'e-mail non è consentita come nome utente
|
||||||
|
Invalid: I dati utente non sono validi
|
||||||
|
DomainNotAllowedAsUsername: Il dominio è già riservato e non può essere utilizzato
|
||||||
|
AlreadyInactive: Utente già inattivo
|
||||||
|
NotInactive: L'utente non è inattivo
|
||||||
|
ShouldBeActiveOrInitial: L'utente non è attivo o inizializzato
|
||||||
|
AlreadyInitialised: L'utente è già inizializzato
|
||||||
|
NotInitialised: L'utente non è ancora inizializzato
|
||||||
|
NotLocked: L'utente non è bloccato
|
||||||
|
NoChanges: Nessun cambiamento trovato
|
||||||
|
InitCodeNotFound: Codice di inizializzazione non trovato
|
||||||
|
UsernameNotChanged: Nome utente non cambiato
|
||||||
|
Profile:
|
||||||
|
NotFound: Profilo non trovato
|
||||||
|
NotChanged: Profilo non cambiato
|
||||||
|
Invalid: Dati non sono validi
|
||||||
|
Email:
|
||||||
|
NotFound: Email non trovata
|
||||||
|
Invalid: L'e-mail non è valida
|
||||||
|
AlreadyVerified: L'e-mail è già verificata
|
||||||
|
NotChanged: Email non cambiata
|
||||||
|
Phone:
|
||||||
|
NotFound: Telefono non trovato
|
||||||
|
Invalid: Il telefono non è valido
|
||||||
|
AlreadyVerified: Telefono già verificato
|
||||||
|
Address:
|
||||||
|
NotFound: Indirizzo non trovato
|
||||||
|
NotChanged: Indirizzo non cambiato
|
||||||
|
Machine:
|
||||||
|
Key:
|
||||||
|
NotFound: Machine Key non trovato
|
||||||
|
NotHuman: L'utente deve essere personale
|
||||||
|
NotMachine: L'utente deve essere tecnico
|
||||||
|
NotAllowedToLink: L'utente non è autorizzato a collegarsi con un provider di accesso esterno
|
||||||
|
Username:
|
||||||
|
AlreadyExists: Nome utente già preso
|
||||||
|
Reservied: Il nome utente è già preso
|
||||||
|
Code:
|
||||||
|
Empty: Il codice è vuoto
|
||||||
|
NotFound: Codice non trovato
|
||||||
|
Expired: Il codice è scaduto
|
||||||
|
GeneratorAlgNotSupported: L'algoritmo del generatore non è supportato
|
||||||
|
Password:
|
||||||
|
NotFound: Password non trovato
|
||||||
|
Empty: La password è vuota
|
||||||
|
Invalid: La password non è valida
|
||||||
|
NotSet: L'utente non ha impostato una password
|
||||||
|
PasswordComplexityPolicy:
|
||||||
|
NotFound: Impostazioni di complessità password non trovati
|
||||||
|
MinLength: La password è troppo corta
|
||||||
|
MinLengthNotAllowed: La lunghezza minima non è consentita
|
||||||
|
HasLower: La password deve contenere lettere minuscole
|
||||||
|
HasUpper: La password deve contenere lettere maiuscole
|
||||||
|
HasNumber: La password deve contenere un numero
|
||||||
|
HasSymbol: La password deve contenere il simbolo
|
||||||
|
ExternalIDP:
|
||||||
|
Invalid: IDP esterno non valido
|
||||||
|
IDPConfigNotExisting: IDP non valido per questa organizzazione
|
||||||
|
NotAllowed: IDP esterno non consentito su questa organizzazione
|
||||||
|
MinimumExternalIDPNeeded: Almeno un IDP deve essere aggiunto
|
||||||
|
AlreadyExists: IDP esterno già preso
|
||||||
|
NotFound: IDP esterno non trovato
|
||||||
|
MFA:
|
||||||
|
OTP:
|
||||||
|
AlreadyReady: Multifattore OTP (OneTimePassword) è già impostato
|
||||||
|
NotExisting: Multifattore OTP (OneTimePassword) non esistente
|
||||||
|
NotReady: Multifattore OTP (OneTimePassword) non è pronto
|
||||||
|
InvalidCode: Codice non valido
|
||||||
|
U2F:
|
||||||
|
NotExisting: U2F non esistente
|
||||||
|
Passwordless:
|
||||||
|
NotExisting: Passwordless non esistente
|
||||||
|
WebAuthN:
|
||||||
|
NotFound: WebAuthN Token non trovato
|
||||||
|
BeginRegisterFailed: WebAuthN inizializzazione non riuscita
|
||||||
|
MarshalError: Errore nel marshalling
|
||||||
|
ErrorOnParseCredential: Errore nell'analisi dei dati delle credenziali
|
||||||
|
CreateCredentialFailed: Errore nella creazione delle credenziali
|
||||||
|
BeginLoginFailed: WebAuthN inizializzazione login fallito
|
||||||
|
ValidateLoginFailed: Errore nella convalidazione delle credenziali
|
||||||
|
CloneWarning: Le credenziali possono essere copiate
|
||||||
|
RefreshToken:
|
||||||
|
Invalid: Refresh Token non è valido
|
||||||
|
NotFound: Refresh Token non trovato
|
||||||
|
Org:
|
||||||
|
AlreadyExists: Nome dell'organizzazione già preso
|
||||||
|
Invalid: L'organizzazione non è valida
|
||||||
|
AlreadyDeactivated: L'organizzazione è già disattivata
|
||||||
|
AlreadyActive: L'organizzazione è già attiva
|
||||||
|
Empty: L'organizzazione è vuota
|
||||||
|
NotFound: Organizzazione non trovata
|
||||||
|
NotChanged: Organizzazione non cambiata
|
||||||
|
InvalidDomain: Dominio non valido
|
||||||
|
DomainMissing: Dominio mancante
|
||||||
|
DomainNotOnOrg: Il dominio non esistente nell'organizzazione
|
||||||
|
DomainNotVerified: Il dominio non è verificato
|
||||||
|
DomainAlreadyVerified: Il dominio è già verificato
|
||||||
|
DomainVerificationTypeInvalid: Il tipo di verifica del dominio non è valido
|
||||||
|
DomainVerificationMissing: La verifica del dominio non è ancora iniziata
|
||||||
|
DomainVerificationFailed: Verifica del dominio fallita
|
||||||
|
PrimaryDomainNotDeletable: Il dominio primario non deve essere cancellato
|
||||||
|
DomainNotFound: Dominio non trovato
|
||||||
|
MemberIDMissing: ID membro mancante
|
||||||
|
MemberNotFound: Membro non trovato
|
||||||
|
InvalidMember: Il membro dell'organizzazione non è valido
|
||||||
|
UserIDMissing: ID utente mancante
|
||||||
|
PolicyAlreadyExists: Impostazione già esistente
|
||||||
|
PolicyNotExisting: Impostazione non esistente
|
||||||
|
IdpInvalid: La configurazione dell'IDP non è valida
|
||||||
|
IdpNotExisting: La configurazione IDP non esistente
|
||||||
|
OIDCConfigInvalid: La configurazione OIDC IDP non è valida
|
||||||
|
IdpIsNotOIDC: La configurazione IDP non è di tipo oidc
|
||||||
|
Domain:
|
||||||
|
AlreadyExists: Il dominio già esistente
|
||||||
|
IDP:
|
||||||
|
InvalidSearchQuery: Parametro di ricerca non valido
|
||||||
|
LoginPolicy:
|
||||||
|
NotFound: Impostazioni di accesso non trovati
|
||||||
|
Invalid: Impostazioni di accesso non sono validi
|
||||||
|
NotExisting: Impostazioni di accesso non esistenti
|
||||||
|
AlreadyExists: Impostazioni di accesso già esistenti
|
||||||
|
IdpProviderAlreadyExisting: IDP già esistente
|
||||||
|
IdpProviderNotExisting: IDP non esistente
|
||||||
|
MFA:
|
||||||
|
AlreadyExists: Multifactor già esistente
|
||||||
|
NotExisting: Multifattore non esistente
|
||||||
|
Unspecified: Multifattore non valido
|
||||||
|
MailTemplate:
|
||||||
|
NotFound: Mail template predefinito non trovato
|
||||||
|
NotChanged: Mail template predefinito non è stato cambiato
|
||||||
|
AlreadyExists: Mail template predefinito già esistente
|
||||||
|
Invalid: Mail template predefinito non è valido
|
||||||
|
CustomMessageText:
|
||||||
|
NotFound: Testo predefinito non trovato
|
||||||
|
NotChanged: Il testo predefinito non è stato cambiato
|
||||||
|
AlreadyExists: Il testo predefinito già eistente
|
||||||
|
Invalid: Il testo predefinito non è valido
|
||||||
|
PasswordComplexity:
|
||||||
|
NotFound: Impostazioni di complessità della password non trovati
|
||||||
|
Empty: Mancano le impostazioni di complessità della password
|
||||||
|
NotExisting: Impostazioni di complessità della password non esistenti
|
||||||
|
AlreadyExists: Impostazioni di complessità della password sono già esistenti
|
||||||
|
PasswordLockout:
|
||||||
|
NotFound: Impostazioni di blocco della password non trovati
|
||||||
|
Empty: Mancano le impostazioni di blocco della password
|
||||||
|
NotExisting: Le impostazioni di blocco della password non esistenti
|
||||||
|
AlreadyExists: Le impostazioni di blocco della password sono già esistenti
|
||||||
|
PasswordAge:
|
||||||
|
NotFound: Impostazioni di validità della password
|
||||||
|
Empty: Impostazioni di validità della password mancanti
|
||||||
|
NotExisting: Impostazioni di validità della password non esistenti
|
||||||
|
AlreadyExists: Impostazioni di validità della password sono già esistenti
|
||||||
|
OrgIAM:
|
||||||
|
Empty: Mancano le impostazioni Org IAM
|
||||||
|
NotExisting: Impostazioni Org IAM non esistenti
|
||||||
|
AlreadyExists: Impostazioni Org IAM già esistenti
|
||||||
|
Project:
|
||||||
|
ProjectIDMissing: ID del progetto mancante
|
||||||
|
AlreadyExists: Il progetto è già stato creato nell'organizzazione
|
||||||
|
OrgNotExisting: L'organizzazione non esistente
|
||||||
|
UserNotExisting: L'utente non esistente
|
||||||
|
CouldNotGenerateClientSecret: Impossibile generare il segreto del cliente
|
||||||
|
Invalid: Il progetto non è valido
|
||||||
|
NotActive: Il progetto non è attivo
|
||||||
|
NotInactive: Il progetto non è disattivato
|
||||||
|
NotFound: Progetto non trovato
|
||||||
|
UserIDMissing: ID utente mancante
|
||||||
|
Member:
|
||||||
|
NotFound: Membro del progetto non trovato
|
||||||
|
Invalid: Il membro del progetto non è valido
|
||||||
|
AlreadyExists: Il membro del progetto già esistente
|
||||||
|
NotExisting: Il membro del progetto non esistente
|
||||||
|
MinimumOneRoleNeeded: Almeno un ruolo deve essere aggiunto
|
||||||
|
Role:
|
||||||
|
AlreadyExists: Ruolo è già esistente
|
||||||
|
Invalid: Ruolo non è valido
|
||||||
|
NotExisting: Ruolo non esistente
|
||||||
|
IDMissing: ID mancante
|
||||||
|
App:
|
||||||
|
AlreadyExists: L'applicazione già esistente
|
||||||
|
NotFound: Applicazione non trovata
|
||||||
|
Invalid: Applicazione non valida
|
||||||
|
NotExisting: L'applicazione non esiste
|
||||||
|
NotActive: L'applicazione non è attiva
|
||||||
|
NotInactive: L'applicazione non è inattiva
|
||||||
|
OIDCConfigInvalid: La configurazione OIDC non è valida
|
||||||
|
APIConfigInvalid: La configurazione API non è valida
|
||||||
|
IsNotOIDC: L'applicazione non è di tipo oidc
|
||||||
|
IsNotAPI: L'applicazione non è di tipo API
|
||||||
|
OIDCAuthMethodNoSecret: Il metodo di autorizzazione OIDC scelto non richiede un segreto
|
||||||
|
APIAuthMethodNoSecret: Il metodo di autorizzazione API scelto non richiede un segreto
|
||||||
|
AuthMethodNoPrivateKeyJWT: Il metodo di autorizzazione scelto non richiede una chiave
|
||||||
|
ClientSecretInvalid: Il segreto del cliente non è valido
|
||||||
|
RequiredFieldsMissing: Mancano alcuni campi obbligatori
|
||||||
|
Grant:
|
||||||
|
AlreadyExists: Grant del progetto già esistente
|
||||||
|
NotFound: Grant non trovato
|
||||||
|
Invalid: Grant del progetto non è valido
|
||||||
|
NotExisting: Grant del progetto non esistente
|
||||||
|
HasNotExistingRole: Uno dei ruoli assegnati non è esistente nel progetto
|
||||||
|
NotActive: Grant del progetto non è attivo
|
||||||
|
NotInactive: Grant del progetto non è inattivo
|
||||||
|
UserIDMisisng: ID utente mancante
|
||||||
|
IAM:
|
||||||
|
Member:
|
||||||
|
RolesNotChanged: I ruoli non sono stati cambiati
|
||||||
|
MemberInvalid: Il membro non è valido
|
||||||
|
MemberAlreadyExisting: Il membro già esistente
|
||||||
|
MemberNotExisting: Il membro non esistente
|
||||||
|
IDMissing: ID mancante
|
||||||
|
GlobalOrgMissing: Manca un'organizzazione globale
|
||||||
|
GlobalOrgAlreadySet: L'organizzazione globale è già stata impostata
|
||||||
|
IAMProjectIDMissing: Manca l'ID del progetto IAM
|
||||||
|
IamProjectAlreadySet: L'ID del progetto IAM è già stato impostato
|
||||||
|
IdpInvalid: La configurazione dell'IDP non è valida
|
||||||
|
IdpNotExisting: La configurazione IDP non esiste
|
||||||
|
OIDCConfigInvalid: La configurazione OIDC IDP non è valida
|
||||||
|
IdpIsNotOIDC: La configurazione IDP non è di tipo OIDC
|
||||||
|
LoginPolicyInvalid: Impostazioni di accesso non sono validi
|
||||||
|
LoginPolicyNotExisting: Impostazioni di accesso non esistenti
|
||||||
|
IdpProviderInvalid: IDP non è valido
|
||||||
|
LoginPolicy:
|
||||||
|
NotFound: Impostazioni di accesso predefinite non trovate
|
||||||
|
NotChanged: Le impostazioni di accesso predefinite non sono state cambiate
|
||||||
|
NotExisting: Impostazioni di accesso predefinite non esistenti
|
||||||
|
AlreadyExists: Impostazioni di accesso predefinite già esistenti
|
||||||
|
MFA:
|
||||||
|
AlreadyExists: Multifattore già esistente
|
||||||
|
NotExisting: Multifattore non esistente
|
||||||
|
Unspecified: Multifattore non valido
|
||||||
|
IDP:
|
||||||
|
AlreadyExists: IDP già esistente
|
||||||
|
NotExisting: IDP non esiste
|
||||||
|
Invalid: IDP non valido
|
||||||
|
IDPConfig:
|
||||||
|
AlreadyExists: La configurazione del IDP già esistente
|
||||||
|
NotInactive: Configurazione del IDP non inattiva
|
||||||
|
NotActive: Configurazione del IDP non attiva
|
||||||
|
LabelPolicy:
|
||||||
|
NotFound: Private Labelling predefinita non trovata
|
||||||
|
NotChanged: Private Labelling non è stata cambiata
|
||||||
|
MailTemplate:
|
||||||
|
NotFound: Mail template predefinito non trovato
|
||||||
|
NotChanged: Mail template predefinito non è stato cambiato
|
||||||
|
AlreadyExists: Mail template predefinito già esistente
|
||||||
|
Invalid: Mail template predefinito non è valido
|
||||||
|
CustomMessageText:
|
||||||
|
NotFound: Testo del mail predefinito non trovato
|
||||||
|
NotChanged: Il testo predefinito del mail non è stato cambiato
|
||||||
|
AlreadyExists: Il testo del mail predefinito già esistente
|
||||||
|
Invalid: Il testo del mail predefinito non è valido
|
||||||
|
PasswordComplexityPolicy:
|
||||||
|
NotFound: Impostazioni di complessità della password predefinite non trovati
|
||||||
|
NotExisting: Impostazioni di complessità della password predefinite non esistenti
|
||||||
|
AlreadyExists: Impostazioni di complessità della password predefinite già esistenti
|
||||||
|
Empty: Le impostazioni di complessità della password predefinite non sono state trovate
|
||||||
|
NotChanged: Le impostazioni di complessità della password predefinite non sono state cambiate
|
||||||
|
PasswordAgePolicy:
|
||||||
|
NotFound: Le impostazioni di validità della password predefinite non trovate
|
||||||
|
NotExisting: Le impostazioni di validità della password predefinite non esistono
|
||||||
|
AlreadyExists: Le impostazioni di validità della password predefinite già esistenti
|
||||||
|
Empty: Le impostazioni di validità della password predefinite vuote
|
||||||
|
NotChanged: Le impostazioni di validità della password non sono state cambiate
|
||||||
|
PasswordLockoutPolicy:
|
||||||
|
NotFound: Impostazioni di blocco della password predefinite non trovate
|
||||||
|
NotExisting: Impostazioni di blocco della password predefinite non esistenti
|
||||||
|
AlreadyExists: Impostazioni di blocco della password predefinite già esistenti
|
||||||
|
Empty: Impostazioni di blocco della password predefinite sono vuote
|
||||||
|
NotChanged: Le impostazioni di blocco della password predefinite non sono state cambiate
|
||||||
|
OrgIAMPolicy:
|
||||||
|
NotFound: Impostazioni Org IAM non trovate
|
||||||
|
Empty: Impostazioni Org IAM mancanti
|
||||||
|
NotExisting: Impostazioni Org IAM non esistenti
|
||||||
|
AlreadyExists: Impostazioni Org IAM già esistenti
|
||||||
|
NotChanged: Impostazioni Org IAM non sono state cambiate
|
||||||
|
Policy:
|
||||||
|
AlreadyExists: Impostazioni già esistenti
|
||||||
|
Label:
|
||||||
|
Invalid:
|
||||||
|
PrimaryColor: Il colore primario non è un valore di colore HEX valido
|
||||||
|
BackgroundColor: Il colore di sfondo non è un valore di colore HEX valido
|
||||||
|
WarnColor: Warn color non è un valore di colore HEX valido
|
||||||
|
FontColor: Il colore del carattere non è un valore di colore HEX valido
|
||||||
|
PrimaryColorDark: Il colore primario (modo scuro) non è un valore di colore HEX valido
|
||||||
|
BackgroundColorDark: Il colore di sfondo (modo scuro) non è un valore di colore HEX valido
|
||||||
|
WarnColorDark: Warn color (dark mode) non è un valore di colore HEX valido
|
||||||
|
FontColorDark: Il colore del carattere (modalità scura) non è un valore di colore HEX valido
|
||||||
|
UserGrant:
|
||||||
|
AlreadyExists: User Grant già esistente
|
||||||
|
NotFound: User Grant non trovato
|
||||||
|
Invalid: User Grant non è valido
|
||||||
|
NotChanged: User Grant non è stata cambiato
|
||||||
|
IDMissing: ID mancante
|
||||||
|
NotActive: User Grant non è attivo
|
||||||
|
NotInactive: User Grant non è disattivato
|
||||||
|
NoPermissionForProject: L'utente non ha permessi su questo progetto
|
||||||
|
RoleKeyNotFound: Ruolo non trovato
|
||||||
|
Member:
|
||||||
|
AlreadyExists: Il membro è già esistente
|
||||||
|
IDPConfig:
|
||||||
|
AlreadyExists: La configurazione IDP con questo nome già esistente
|
||||||
|
NotExisting: La configurazione del IDP non esiste
|
||||||
|
Changes:
|
||||||
|
NotFound: Nessuna storia trovata
|
||||||
|
Token:
|
||||||
|
NotFound: Token non trovato
|
||||||
|
UserSession:
|
||||||
|
NotFound: Sessione non trovata
|
||||||
|
Key:
|
||||||
|
ExpireBeforeNow: La data di scadenza è passata
|
||||||
|
Login:
|
||||||
|
LoginPolicy:
|
||||||
|
MFA:
|
||||||
|
ForceAndNotConfigured: Multifactor è configurato come richiesto, ma nessun provider è configurato. Contatta il tuo amministratore di sistema.
|
||||||
|
Step:
|
||||||
|
Started:
|
||||||
|
AlreadyExists: Il passo iniziato già esistente
|
||||||
|
Done:
|
||||||
|
AlreadyExists: Il passo fatto già esistente
|
||||||
|
Features:
|
||||||
|
NotChanged: La caratteristica non è cambiata
|
||||||
|
CustomText:
|
||||||
|
AlreadyExists: Il testo personalizzato già esistente
|
||||||
|
Invalid: Testo personalizzato non valido
|
||||||
|
NotFound: Testo personalizzato non trovato
|
||||||
|
TranslationFile:
|
||||||
|
ReadError: Errore nella lettura del file di traduzione
|
||||||
|
MergeError: Il file di traduzione non può essere unito alle traduzioni personalizzate
|
||||||
|
NotFound: Il file di traduzione non esiste
|
||||||
|
MetaData:
|
||||||
|
NotFound: Metadati non trovati
|
||||||
|
NoData: L'elenco dei metadati è vuoto
|
||||||
|
Invalid: I metadati non sono validi
|
||||||
|
KeyNotExisting: Una o più chiavi non esistono
|
||||||
|
Action:
|
||||||
|
Invalid: L'azione non è valida
|
||||||
|
NotFound: L'azione non trovata
|
||||||
|
NotActive: L'azione non è attiva
|
||||||
|
NotInactive: L'azione non è inattiva
|
||||||
|
Flow:
|
||||||
|
FlowTypeMissing: FlowType mancante
|
||||||
|
Empty: Flow è già vuoto
|
||||||
|
WrongTriggerType: TriggerType non è valido
|
||||||
|
NoChanges: Nessun cambiamento
|
||||||
|
ActionIDsNotExist: Gli ActionID non esistono
|
||||||
|
Query:
|
||||||
|
CloseRows: Lo statement SQL non può essere terminato
|
||||||
|
SQLStatement: Lo statement SQL non può essere creato
|
||||||
|
InvalidRequest: La richiesta non è valida
|
||||||
|
EventTypes:
|
||||||
|
user:
|
||||||
|
added: Utente aggiunto
|
||||||
|
selfregistered: L'utente si è registrato
|
||||||
|
initialization:
|
||||||
|
code:
|
||||||
|
added: Codice di inizializzazione generato
|
||||||
|
sent: Codice di inizializzazione inviato
|
||||||
|
check:
|
||||||
|
succeeded: Controllo dell'inizializzazione riuscito
|
||||||
|
failed: Controllo dell'inizializzazione fallito
|
||||||
|
token:
|
||||||
|
added: Access Token creato
|
||||||
|
username:
|
||||||
|
reserved: Nome utente riservato
|
||||||
|
released: Nome utente rilasciato
|
||||||
|
email:
|
||||||
|
reserved: Indirizzo e-mail riservato
|
||||||
|
released: Indirizzo e-mail rilasciato
|
||||||
|
changed: Indirizzo e-mail cambiato
|
||||||
|
verified: Indirizzo e-mail verificato
|
||||||
|
verification:
|
||||||
|
failed: Verifica dell'indirizzo e-mail non riuscita
|
||||||
|
code:
|
||||||
|
added: Codice di verifica dell'indirizzo e-mail generato
|
||||||
|
sent: Codice di verifica dell'indirizzo e-mail inviato
|
||||||
|
machine:
|
||||||
|
added: Utente tecnico aggiunto
|
||||||
|
changed: Utente tecnico cambiato
|
||||||
|
key:
|
||||||
|
added: Chiave aggiunta
|
||||||
|
removed: Chiave rimossa
|
||||||
|
human:
|
||||||
|
added: Persona aggiunta
|
||||||
|
selfregistered: Persona registrata
|
||||||
|
avatar:
|
||||||
|
added: Avatar aggiunto
|
||||||
|
removed: Avatar rimosso
|
||||||
|
initialization:
|
||||||
|
code:
|
||||||
|
added: Codice di inizializzazione generato
|
||||||
|
sent: Codice di inizializzazione inviato
|
||||||
|
check:
|
||||||
|
succeeded: Controllo dell'inizializzazione riuscito
|
||||||
|
failed: Controllo dell'inizializzazione fallito
|
||||||
|
username:
|
||||||
|
reserved: Nome utente riservato
|
||||||
|
released: Nome utente rilasciato
|
||||||
|
email:
|
||||||
|
changed: Indirizzo e-mail cambiato
|
||||||
|
verified: Indirizzo e-mail verificato
|
||||||
|
verification:
|
||||||
|
failed: Verificazione dell'indirizzo e-mail non riuscita
|
||||||
|
code:
|
||||||
|
added: Codice di verifica generato
|
||||||
|
sent: Codice di verifica inviato
|
||||||
|
password:
|
||||||
|
changed: Password cambiata
|
||||||
|
code:
|
||||||
|
added: Codice password generato
|
||||||
|
sent: Codice password inviato
|
||||||
|
check:
|
||||||
|
succeeded: Controllo della password riuscito
|
||||||
|
failed: Controllo della password fallito
|
||||||
|
externallogin:
|
||||||
|
check:
|
||||||
|
succeeded: Accesso esterno riuscito
|
||||||
|
externalidp:
|
||||||
|
added: IDP esterno aggiunto
|
||||||
|
removed: IDP esterno rimosso
|
||||||
|
cascade:
|
||||||
|
removed: Cascata IDP rimossa
|
||||||
|
phone:
|
||||||
|
changed: Numero di telefono cambiato
|
||||||
|
verified: Numero di telefono verificato
|
||||||
|
verification:
|
||||||
|
failed: Verificazione del numero di telefono non riuscita
|
||||||
|
code:
|
||||||
|
added: Codice del numero di telefono generato
|
||||||
|
sent: Codice del numero di telefono inviato
|
||||||
|
removed: Numero di telefono rimosso
|
||||||
|
profile:
|
||||||
|
changed: Profilo cambiato
|
||||||
|
address:
|
||||||
|
changed: Indirizzo cambiato
|
||||||
|
mfa:
|
||||||
|
otp:
|
||||||
|
added: OTP aggiunto
|
||||||
|
verified: OTP verificato
|
||||||
|
removed: OTP rimosso
|
||||||
|
check:
|
||||||
|
succeeded: Controllo OTP riuscito
|
||||||
|
failed: Controllo OTP fallito
|
||||||
|
u2f:
|
||||||
|
token:
|
||||||
|
added: Aggiunto il U2F Token
|
||||||
|
verified: U2F Token verificato
|
||||||
|
removed: U2F Token rimosso
|
||||||
|
begin:
|
||||||
|
login: Controllo U2F avviato
|
||||||
|
check:
|
||||||
|
succeeded: Controllo U2F riuscito
|
||||||
|
failed: Controllo U2F fallito
|
||||||
|
signcount:
|
||||||
|
changed: Il checksum del U2F Token è stato cambiato
|
||||||
|
init:
|
||||||
|
skipped: Inizializzazione saltata
|
||||||
|
passwordless:
|
||||||
|
token:
|
||||||
|
added: Aggiunto il token per l'autenticazione passwordless
|
||||||
|
verified: Token per l'autenticazione passwordless verificato
|
||||||
|
removed: Token per l'autenticazione passwordless rimosso
|
||||||
|
begin:
|
||||||
|
login: Avviata l'autenticazione passwordless
|
||||||
|
check:
|
||||||
|
succeeded: Controllo dell'autenticazione passwordless riuscito
|
||||||
|
failed: Controllo dell'autenticazione passwordless fallito
|
||||||
|
signcount:
|
||||||
|
changed: Il checksum è stato cambiato
|
||||||
|
initialization:
|
||||||
|
code:
|
||||||
|
added: Aggiunto il codice di inizializzazione
|
||||||
|
sent: Codice di inizializzazione inviato
|
||||||
|
requested: Richiesta del codice di inizializzazione
|
||||||
|
check:
|
||||||
|
succeeded: Codice di inizializzazione controllato con successo
|
||||||
|
failed: Controllo del codice di inizializzazione fallito
|
||||||
|
signed:
|
||||||
|
out: L'utente è uscito
|
||||||
|
refresh:
|
||||||
|
token:
|
||||||
|
added: Refresh Token creato
|
||||||
|
renewed: Refresh Token rinnovato
|
||||||
|
removed: Refresh Token rimosso
|
||||||
|
locked: Utente bloccato
|
||||||
|
unlocked: Utente sbloccato
|
||||||
|
deactivated: Utente disattivato
|
||||||
|
reactivated: Utente riattivato
|
||||||
|
removed: Utente rimosso
|
||||||
|
password:
|
||||||
|
changed: Password cambiata
|
||||||
|
code:
|
||||||
|
added: Codice password generato
|
||||||
|
sent: Codice password inviato
|
||||||
|
check:
|
||||||
|
succeeded: Controllo della password riuscito
|
||||||
|
failed: Controllo della password fallito
|
||||||
|
phone:
|
||||||
|
changed: Numero di telefono cambiato
|
||||||
|
verified: Numero di telefono verificato
|
||||||
|
verification:
|
||||||
|
failed: Verifica del numero di telefono non riuscita
|
||||||
|
code:
|
||||||
|
added: Codice del numero di telefono generato
|
||||||
|
sent: Codice del numero di telefono inviato
|
||||||
|
profile:
|
||||||
|
changed: Profilo utente cambiato
|
||||||
|
address:
|
||||||
|
changed: Indirizzo utente cambiato
|
||||||
|
mfa:
|
||||||
|
otp:
|
||||||
|
added: OTP aggiunto
|
||||||
|
verified: OTP verificato
|
||||||
|
removed: OTP rimosso
|
||||||
|
check:
|
||||||
|
succeeded: Controllo OTP riuscito
|
||||||
|
failed: Controllo OTP fallito
|
||||||
|
init:
|
||||||
|
skipped: Inizializzazione saltata
|
||||||
|
signed:
|
||||||
|
out: L'utente è uscito
|
||||||
|
grant:
|
||||||
|
added: Autorizzazione aggiunta
|
||||||
|
changed: Autorizzazione cambiata
|
||||||
|
removed: Autorizzazione rimossa
|
||||||
|
deactivated: Autorizzazione disattivata
|
||||||
|
reactivated: Autorizzazione riattivata
|
||||||
|
reserved: Autorizzazione riservata
|
||||||
|
released: Autorizzazione rilasciata
|
||||||
|
cascade:
|
||||||
|
removed: Autorizzazione rimossa
|
||||||
|
changed: Autorizzazione cambiata
|
||||||
|
org:
|
||||||
|
added: Organizzazione aggiunta
|
||||||
|
changed: Organizzazione cambiata
|
||||||
|
deactivated: Organizzazione disattivata
|
||||||
|
reactivated: Organizzazione riattivata
|
||||||
|
removed: Organizzazione rimossa
|
||||||
|
domain:
|
||||||
|
added: Dominio aggiunto
|
||||||
|
verification:
|
||||||
|
added: Aggiunta la verifica del dominio
|
||||||
|
failed: Verifica del dominio fallita
|
||||||
|
verified: Dominio verificato
|
||||||
|
removed: Dominio rimosso
|
||||||
|
primary:
|
||||||
|
set: Set di dominio primario
|
||||||
|
reserved: Dominio riservato
|
||||||
|
released: Dominio rilasciato
|
||||||
|
features:
|
||||||
|
set: Caratteristica aggiunta
|
||||||
|
removed: Caratteristica rimossa
|
||||||
|
name:
|
||||||
|
reserved: Nome dell'organizzazione riservato
|
||||||
|
released: Nome dell'organizzazione rilasciata
|
||||||
|
member:
|
||||||
|
added: Membro dell'organizzazione aggiunto
|
||||||
|
changed: Membro dell'organizzazione cambiato
|
||||||
|
removed: Membro dell'organizzazione rimosso
|
||||||
|
cascade:
|
||||||
|
removeD: Cascata di membri dell'organizzazione rimossa
|
||||||
|
iam:
|
||||||
|
policy:
|
||||||
|
added: Impostazioni IAM aggiunti
|
||||||
|
changed: Impostazioni IAM cambiate
|
||||||
|
removed: Impostazioni IAM rimosse
|
||||||
|
idp:
|
||||||
|
config:
|
||||||
|
added: Configurazione IDP aggiunta
|
||||||
|
changed: Configurazione IDP cambiata
|
||||||
|
removed: Configurazione IDP rimossa
|
||||||
|
deactivated: Configurazione IDP disattivata
|
||||||
|
reactivated: Configurazione IDP riattivata
|
||||||
|
oidc:
|
||||||
|
config:
|
||||||
|
added: Aggiunta la configurazione IDP OIDC
|
||||||
|
changed: Configurazione IDP OIDC modificata
|
||||||
|
saml:
|
||||||
|
config:
|
||||||
|
added: Aggiunta la configurazione IDP SAML
|
||||||
|
changed: Configurazione IDP SAML modificata
|
||||||
|
customtext:
|
||||||
|
set: Testo personalizzato salvato
|
||||||
|
removed: Testo personalizzato rimosso
|
||||||
|
template:
|
||||||
|
removed: Template personalizzato rimosso
|
||||||
|
policy:
|
||||||
|
login:
|
||||||
|
added: Le mpostazioni di accesso sono state aggiunte con successo.
|
||||||
|
changed: Impostazioni di accesso modificate
|
||||||
|
removed: Impostazioni di accesso rimosse
|
||||||
|
idpprovider:
|
||||||
|
added: IDP aggiunto alle impostazioni di accesso
|
||||||
|
removed: IDP rimosso dalle impostazioni di accesso
|
||||||
|
secondfactor:
|
||||||
|
added: Secondo fattore aggiunto alle impostazioni di accesso
|
||||||
|
removed: Secondo fattore rimosso dalle impostazioni di accesso
|
||||||
|
multifactor:
|
||||||
|
added: Aggiunto il fattore multiplo alle impostazioni di accesso
|
||||||
|
removed: Fattore multiplo rimosso dalle impostazioni di accesso
|
||||||
|
password:
|
||||||
|
complexity:
|
||||||
|
added: Le impostazioni di complessità delle password sono state aggiunte con successo
|
||||||
|
changed: Le impostazioni di complessità delle password sono state cambiate
|
||||||
|
removed: Le impostazioni di complessità della password sono state rimosse
|
||||||
|
age:
|
||||||
|
added: Le impostazioni di validità della password
|
||||||
|
changed: Le impostazioni di validità della password sono state cambiate
|
||||||
|
removed: Le impostazioni di validità della password sono state rimosse con successo
|
||||||
|
lockout:
|
||||||
|
added: Le impostazioni di blocco della password sono state aggiunte con successo.
|
||||||
|
changed: Le impostazioni di blocco della password sono state cambiate
|
||||||
|
removed: Le impostazioni di blocco della password sono state rimosse con successo
|
||||||
|
label:
|
||||||
|
added: Impostazioni Private Labelling aggiunte
|
||||||
|
changed: Impostazioni Private Labelling cambiate
|
||||||
|
activated: Impostazioni Private Labelling attivate
|
||||||
|
removed: Impostazioni Private Labelling rimosse
|
||||||
|
logo:
|
||||||
|
added: Logo aggiunto
|
||||||
|
removed: Logo rimosso
|
||||||
|
dark:
|
||||||
|
added: Logo (modalità scura) aggiunto
|
||||||
|
removed: Logo (modalità scura) rimosso
|
||||||
|
icon:
|
||||||
|
added: Icona aggiunta
|
||||||
|
removed: Icona rimossa
|
||||||
|
dark:
|
||||||
|
added: Icona (modalità scura) aggiunta
|
||||||
|
removed: Icona (modalità scura) rimossa
|
||||||
|
font:
|
||||||
|
added: Font aggiunto
|
||||||
|
removed: Font rimosso
|
||||||
|
assets:
|
||||||
|
removed: Asset rimosse
|
||||||
|
privacy:
|
||||||
|
added: Informativa sulla privacy e termini e condizioni aggiunti
|
||||||
|
changed: Informativa sulla privacy e termini e condizioni cambiati
|
||||||
|
removed: Informativa sulla privacy e termini e condizioni rimossi
|
||||||
|
flow:
|
||||||
|
trigger_actions:
|
||||||
|
set: azioni salvate
|
||||||
|
cascade:
|
||||||
|
removed: Azioni a cascata rimosse
|
||||||
|
removed: Azioni rimosse
|
||||||
|
project:
|
||||||
|
added: Progetto aggiunto
|
||||||
|
changed: Progetto cambiato
|
||||||
|
deactivated: Progetto disattivato
|
||||||
|
reactivated: Progetto riattivato
|
||||||
|
removed: Progetto rimosso
|
||||||
|
member:
|
||||||
|
added: Membro del progetto aggiunto
|
||||||
|
changed: Membro del progetto cambiato
|
||||||
|
removed: Membro del progetto rimosso
|
||||||
|
cascade:
|
||||||
|
removeD: Cascata di membri del progetto rimossa
|
||||||
|
role:
|
||||||
|
added: Ruolo del progetto aggiunto
|
||||||
|
changed: Il ruolo del progetto è cambiato
|
||||||
|
removed: Ruolo del progetto rimosso
|
||||||
|
grant:
|
||||||
|
added: Grant aggiunto
|
||||||
|
changed: Grant cambiato
|
||||||
|
removed: Grant rimosso
|
||||||
|
deactivated: Grant disattivato
|
||||||
|
reactivated: Grant riattivato
|
||||||
|
cascade:
|
||||||
|
changed: Grant cambiato
|
||||||
|
member:
|
||||||
|
added: Grant Member aggiunto
|
||||||
|
changed: Grant Member cambiato
|
||||||
|
removed: Grant Member rimosso
|
||||||
|
cascade:
|
||||||
|
removed: Cascata di Grant Member rimossa
|
||||||
|
application:
|
||||||
|
added: Applicazione aggiunta
|
||||||
|
changed: Applicazione cambiata
|
||||||
|
removed: Applicazione rimossa
|
||||||
|
deactivated: Applicazione disattivata
|
||||||
|
reactivated: Applicazione riattivata
|
||||||
|
oidc:
|
||||||
|
secret:
|
||||||
|
check:
|
||||||
|
succeeded: Validazione OIDC Client Secret riuscita
|
||||||
|
failed: VAidazione OIDC Client Secret fallita
|
||||||
|
key:
|
||||||
|
added: Chiave di applicazione aggiunta
|
||||||
|
removed: Chiave di applicazione rimossa
|
||||||
|
config:
|
||||||
|
oidc:
|
||||||
|
added: Configurazione OIDC aggiunta
|
||||||
|
changed: Configurazione OIDC modificata
|
||||||
|
secret:
|
||||||
|
changed: Segreto OIDC cambiato
|
||||||
|
api:
|
||||||
|
added: Configurazione API aggiunta
|
||||||
|
changed: Configurazione API modificata
|
||||||
|
secret:
|
||||||
|
changed: Segreto API cambiato
|
||||||
|
policy:
|
||||||
|
password:
|
||||||
|
complexity:
|
||||||
|
added: Le impostazioni di complessità delle password sono state aggiunte con successo
|
||||||
|
changed: Le impostazioni di complessità delle password sono state cambiate
|
||||||
|
age:
|
||||||
|
added: Le impostazioni di validità della password sono state aggiunte con successo.
|
||||||
|
changed: Le impostazioni di validità della password sono state cambiate
|
||||||
|
lockout:
|
||||||
|
added: Le impostazioni di blocco della password sono state aggiunte.
|
||||||
|
changed: Le impostazioni di blocco della password sono state cambiate.
|
||||||
|
iam:
|
||||||
|
setup:
|
||||||
|
started: Avviato il setup di ZITADEL
|
||||||
|
done: setup di ZITADEL fatto
|
||||||
|
global:
|
||||||
|
org:
|
||||||
|
set: Organizzazione glabale di ZITADEL salvata
|
||||||
|
project:
|
||||||
|
iam:
|
||||||
|
set: progetto ZITADEL salvato
|
||||||
|
member:
|
||||||
|
added: ZITADEL membro aggiunto
|
||||||
|
changed: ZITADEL membro cambiato
|
||||||
|
removed: ZITADEL membro rimosso
|
||||||
|
cascade:
|
||||||
|
removeD: Membro ZITADEL rimosso a cascata
|
||||||
|
idp:
|
||||||
|
config:
|
||||||
|
added: Configurazione IDP aggiunta
|
||||||
|
changed: Configurazione IDP cambiata
|
||||||
|
removed: Configurazione IDP rimossa
|
||||||
|
deactivated: Configurazione IDP disattivata
|
||||||
|
reactivated: Configurazione IDP riattivata
|
||||||
|
oidc:
|
||||||
|
config:
|
||||||
|
added: Aggiunta la configurazione IDP OIDC
|
||||||
|
changed: Configurazione IDP OIDC modificata
|
||||||
|
saml:
|
||||||
|
config:
|
||||||
|
added: Aggiunta la configurazione IDP SAML
|
||||||
|
changed: Configurazione IDP SAML modificata
|
||||||
|
policy:
|
||||||
|
login:
|
||||||
|
added: Le impostazioni di accesso predefinite sono state aggiunte.
|
||||||
|
changed: Le impostazioni di accesso predefinite sono state cambiate.
|
||||||
|
idpprovider:
|
||||||
|
added: IDP aggiunto alle impostazioni di accesso predefinite
|
||||||
|
removed: IDP rimosso dalle impostazioni di accesso predefinite
|
||||||
|
label:
|
||||||
|
added: Le impostazioni Private Labelling sono state aggiunte.
|
||||||
|
changed: Le impostazioni Private Labelling sono state cambiate.
|
||||||
|
activated: Private Labelling attivato
|
||||||
|
logo:
|
||||||
|
added: Logo aggiunto
|
||||||
|
removed: Logo rimosso
|
||||||
|
dark:
|
||||||
|
added: Logo (modalità scura) aggiunto
|
||||||
|
removed: Logo (modalità scura) rimosso
|
||||||
|
icon:
|
||||||
|
added: Icona aggiunta
|
||||||
|
removed: Icona rimossa
|
||||||
|
dark:
|
||||||
|
added: Icona (modalità scura) aggiunta
|
||||||
|
removed: Icona (modalità scura) rimossa
|
||||||
|
font:
|
||||||
|
added: Font aggiunto
|
||||||
|
removed: Font rimosso
|
||||||
|
assets:
|
||||||
|
removed: Asset rimosse
|
||||||
|
key_pair:
|
||||||
|
added: Keypair aggiunto
|
||||||
|
action:
|
||||||
|
added: Azione aggiunta
|
||||||
|
changed: Azione cambiata
|
||||||
|
deactivated: Azione disattivata
|
||||||
|
reactivated: Azione riattivata
|
||||||
|
removed: Azione rimossa
|
||||||
|
Application:
|
||||||
|
OIDC:
|
||||||
|
V1:
|
||||||
|
NotCompliant: La tua configurazione non è conforme e differisce dallo standard OIDC 1.0.
|
||||||
|
NoRedirectUris: Deve essere registrato almeno un URI di reindirizzamento.
|
||||||
|
NotAllCombinationsAreAllowed: La configurazione è conforme, ma non tutte le combinazioni possibili sono permesse.
|
||||||
|
Code:
|
||||||
|
RedirectUris:
|
||||||
|
HttpOnlyForWeb: Grant Type Implicit consente reindirizzamenti http solo per AppType Web
|
||||||
|
CustomOnlyForNative: Grant Type permette solo URI di reindirizzamento personalizzati per AppType native (ad esempio appname:// )
|
||||||
|
Implicit:
|
||||||
|
RedirectUris:
|
||||||
|
CustomNotAllowed: Grant Type non permette URI di reindirizzamento personalizzati
|
||||||
|
HttpNotAllowed: Grant Type implicito non permette URI di reindirizzamento http
|
||||||
|
HttpLocalhostOnlyForNative: http://localhost redirect uri è consentito solo per le applicazioni native.
|
||||||
|
Native:
|
||||||
|
AuthMethodType:
|
||||||
|
NotNone: Le applicazioni native dovrebbero avere authmethodtype none.
|
||||||
|
RedirectUris:
|
||||||
|
MustBeHttpLocalhost: Gli URI di reindirizzamento devono iniziare con il proprio protocollo, http://127.0.0.1, http://[::1] o http://localhost.
|
||||||
|
UserAgent:
|
||||||
|
AuthMethodType:
|
||||||
|
NotNone: L'app agente utente dovrebbe avere authmethodtype none.
|
||||||
|
GrantType:
|
||||||
|
Refresh:
|
||||||
|
NoAuthCode: Refresh Token consentito solo in combinazione con Authorization Code.
|
@ -103,7 +103,7 @@ InitMFAU2F:
|
|||||||
ErrorRetry: Retry, create a new challenge or choose a different method.
|
ErrorRetry: Retry, create a new challenge or choose a different method.
|
||||||
|
|
||||||
InitMFADone:
|
InitMFADone:
|
||||||
Title: Multifcator Verification done
|
Title: Multifactor Verification done
|
||||||
Description: Multifactor verification successfully done. The multifactor has to be entered on each login.
|
Description: Multifactor verification successfully done. The multifactor has to be entered on each login.
|
||||||
NextButtonText: next
|
NextButtonText: next
|
||||||
CancelButtonText: cancel
|
CancelButtonText: cancel
|
||||||
@ -114,7 +114,7 @@ MFAProvider:
|
|||||||
ChooseOther: or choose an other option
|
ChooseOther: or choose an other option
|
||||||
|
|
||||||
VerifyMFAOTP:
|
VerifyMFAOTP:
|
||||||
Title: Verify Multificator
|
Title: Verify Multifactor
|
||||||
Description: Verify your multifactor
|
Description: Verify your multifactor
|
||||||
CodeLabel: Code
|
CodeLabel: Code
|
||||||
NextButtonText: next
|
NextButtonText: next
|
||||||
@ -122,8 +122,8 @@ VerifyMFAOTP:
|
|||||||
VerifyMFAU2F:
|
VerifyMFAU2F:
|
||||||
Title: Multifactor Verification
|
Title: Multifactor Verification
|
||||||
Description: Verify your multifactor U2F / WebAuthN token
|
Description: Verify your multifactor U2F / WebAuthN token
|
||||||
NotSupported: WebAuthN wird durch deinen Browser nicht unterstützt. Stelle sicher, dass du die aktuelle Version installiert hast oder nutze einen anderen (z.B. Chrome, Safari, Firefox)
|
NotSupported: WebAuthN is not supported by your browser. Make sure you are using the newest version or change your browser to a supported one (Chrome, Safari, Firefox)
|
||||||
ErrorRetry: Versuche es erneut, erstelle eine neue Abfrage oder wähle einen andere Methode.
|
ErrorRetry: Retry, create a new request or choose a other method.
|
||||||
ValidateTokenButtonText: Validate Token
|
ValidateTokenButtonText: Validate Token
|
||||||
|
|
||||||
Passwordless:
|
Passwordless:
|
||||||
@ -173,7 +173,7 @@ PasswordChangeDone:
|
|||||||
|
|
||||||
PasswordResetDone:
|
PasswordResetDone:
|
||||||
Title: Reset link set
|
Title: Reset link set
|
||||||
Description: Check your email to to reset your password.
|
Description: Check your email to reset your password.
|
||||||
NextButtonText: next
|
NextButtonText: next
|
||||||
|
|
||||||
EmailVerification:
|
EmailVerification:
|
||||||
|
365
internal/ui/login/static/i18n/it.yaml
Normal file
365
internal/ui/login/static/i18n/it.yaml
Normal file
@ -0,0 +1,365 @@
|
|||||||
|
Login:
|
||||||
|
Title: Bentornato!
|
||||||
|
Description: Inserisci i tuoi dati di accesso.
|
||||||
|
TitleLinking: Accesso per il collegamento degli utenti
|
||||||
|
DescriptionLinking: Inserisci i tuoi dati di accesso per collegare il tuo utente esterno con un utente ZITADEL.
|
||||||
|
LoginNameLabel: Nome di accesso
|
||||||
|
UsernamePlaceHolder: nome utente
|
||||||
|
LoginnamePlaceHolder: nomeutente@dominio
|
||||||
|
ExternalUserDescription: Accedi con un utente esterno.
|
||||||
|
MustBeMemberOfOrg: 'L''utente deve essere membro dell''organizzazione {{.OrgName}}.'
|
||||||
|
RegisterButtonText: registrare
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
SelectAccount:
|
||||||
|
Title: Seleziona l'account
|
||||||
|
Description: Usa il tuo account ZITADEL
|
||||||
|
TitleLinking: Seleziona l'account per il collegamento dell'utente
|
||||||
|
DescriptionLinking: Seleziona il tuo account da collegare al tuo utente esterno.
|
||||||
|
OtherUser: Altro utente
|
||||||
|
SessionState0: attivo
|
||||||
|
SessionState1: inattivo
|
||||||
|
MustBeMemberOfOrg: 'L''utente deve essere membro dell''organizzazione {{.OrgName}}.'
|
||||||
|
|
||||||
|
Password:
|
||||||
|
Title: Password
|
||||||
|
Description: Inserisci i tuoi dati di accesso.
|
||||||
|
PasswordLabel: Password
|
||||||
|
MinLength: Lunghezza minima
|
||||||
|
HasUppercase: Lettera maiuscola
|
||||||
|
HasLowercase: Lettera minuscola
|
||||||
|
HasNumber: Numero
|
||||||
|
HasSymbol: Simbolo
|
||||||
|
Confirmation: Conferma password
|
||||||
|
ResetLinkText: Password dimenticata?
|
||||||
|
BackButtonText: indietro
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
UsernameChange:
|
||||||
|
Title: Cambia nome utente
|
||||||
|
Description: Imposta il tuo nuovo nome utente
|
||||||
|
UsernameLabel: Nome utente
|
||||||
|
CancelButtonText: annulla
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
UsernameChangeDone:
|
||||||
|
Title: Nome utente cambiato
|
||||||
|
Description: Il tuo nome utente è stato cambiato con successo.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
InitPassword:
|
||||||
|
Title: Impostare la password
|
||||||
|
Description: Hai ricevuto un codice, che devi inserire nel modulo sottostante, per impostare la tua nuova password.
|
||||||
|
CodeLabel: Codice
|
||||||
|
NewPasswordLabel: Nuova password
|
||||||
|
NewPasswordConfirmLabel: Conferma la password
|
||||||
|
ResendButtonText: rispedisci
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
InitPasswordDone:
|
||||||
|
Title: Set di password
|
||||||
|
Description: Password impostata con successo
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
|
||||||
|
InitUser:
|
||||||
|
Title: Attivare l'utente
|
||||||
|
Description: Hai ricevuto un codice, che devi inserire nel modulo sottostante, per verificare la tua email e impostare la tua nuova password.
|
||||||
|
CodeLabel: Codice
|
||||||
|
NewPasswordLabel: Nuova password
|
||||||
|
NewPasswordConfirmLabel: Conferma la password
|
||||||
|
NextButtonText: Avanti
|
||||||
|
ResendButtonText: rispedisci
|
||||||
|
|
||||||
|
InitUserDone:
|
||||||
|
Title: Utente attivato
|
||||||
|
Description: Email verificata e password impostata con successo
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
|
||||||
|
InitMFAPrompt:
|
||||||
|
Title: Configurazione a più fattori
|
||||||
|
Description: Vuoi impostare l'autenticazione a più fattori?
|
||||||
|
Provider0: OTP (One Time Password)
|
||||||
|
Provider1: U2F (2° fattore universale)
|
||||||
|
NextButtonText: Avanti
|
||||||
|
SkipButtonText: salta
|
||||||
|
|
||||||
|
InitMFAOTP:
|
||||||
|
Title: Verifica a più fattori
|
||||||
|
Description: Verifica il tuo multifattore.
|
||||||
|
OTPDescription: Scannerizza il codice con la tua app di autenticazione (ad esempio Google Authenticator) o copia la chiave segreta e inserisci il codice generato nel campo sottostante.
|
||||||
|
SecretLabel: Chiave
|
||||||
|
CodeLabel: Codice
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
|
||||||
|
InitMFAU2F:
|
||||||
|
Title: Configurazione a più fattori U2F / WebAuthN
|
||||||
|
Description: Aggiungi il tuo Token fornendo un nome e cliccando sul pulsante 'Registra'.
|
||||||
|
TokenNameLabel: Nome del token / dispositivo
|
||||||
|
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||||
|
RegisterTokenButtonText: Registra
|
||||||
|
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||||
|
|
||||||
|
InitMFADone:
|
||||||
|
Title: Verificazione a più fattori effettuata
|
||||||
|
Description: La verificazione del multifattore eseguita con successo. Il multifattore è richiesto ad ogni login.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
|
||||||
|
MFAProvider:
|
||||||
|
Provider0: OTP (One Time Password)
|
||||||
|
Provider1: U2F (2° fattore universale)
|
||||||
|
ChooseOther: o scegli un'altra opzione
|
||||||
|
|
||||||
|
VerifyMFAOTP:
|
||||||
|
Title: Verificazione del Multificator
|
||||||
|
Description: Verifica il tuo multifattore
|
||||||
|
CodeLabel: Codice
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
VerifyMFAU2F:
|
||||||
|
Title: Verificazione a più fattori
|
||||||
|
Description: Verifica il tuo token U2F / WebAuthN
|
||||||
|
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati di avere l'ultima versione installata o usane una diversa (per esempio Chrome, Safari, Firefox).
|
||||||
|
ErrorRetry: Prova di nuovo, crea una nuova richiesta o scegli un metodo diverso.
|
||||||
|
ValidateTokenButtonText: Verifica
|
||||||
|
|
||||||
|
Passwordless:
|
||||||
|
Title: Accesso senza password
|
||||||
|
Description: Verifica il tuo token
|
||||||
|
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||||
|
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||||
|
LoginWithPwButtonText: Accedi con password
|
||||||
|
ValidateTokenButtonText: Verifica
|
||||||
|
|
||||||
|
PasswordlessPrompt:
|
||||||
|
Title: Autenticazione passwordless
|
||||||
|
Description: Vuoi impostare il login senza password?
|
||||||
|
DescriptionInit: Devi impostare il login senza password. Usa il link che ti è stato inviato per registrare il tuo dispositivo.
|
||||||
|
PasswordlessButtonText: Continua
|
||||||
|
NextButtonText: Avanti
|
||||||
|
SkipButtonText: salta
|
||||||
|
|
||||||
|
PasswordlessRegistration:
|
||||||
|
Title: Configurazione dell'autenticazione senza password
|
||||||
|
Description: Aggiungi il tuo Token fornendo un nome e poi cliccando sul pulsante 'Registra'.
|
||||||
|
TokenNameLabel: Nome del token / dispositivo
|
||||||
|
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||||
|
RegisterTokenButtonText: Registra
|
||||||
|
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||||
|
|
||||||
|
PasswordlessRegistrationDone:
|
||||||
|
Title: Configurazione dell'autenticazione senza password
|
||||||
|
Description: Token per lautenticazione passwordless aggiunto con successo.
|
||||||
|
DescriptionClose: Ora puoi chiudere questa finestra.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
|
||||||
|
PasswordChange:
|
||||||
|
Title: Reimposta password
|
||||||
|
Description: Cambia la tua password. Inserisci la tua vecchia e la nuova password.
|
||||||
|
OldPasswordLabel: Vecchia password
|
||||||
|
NewPasswordLabel: Nuova password
|
||||||
|
NewPasswordConfirmLabel: Conferma della password
|
||||||
|
CancelButtonText: annulla
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
PasswordChangeDone:
|
||||||
|
Title: Reimposta password
|
||||||
|
Description: La tua password è stata cambiata con successo.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
PasswordResetDone:
|
||||||
|
Title: Link per il cambiamento inviato
|
||||||
|
Description: Controlla la tua email per reimpostare la tua password.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
EmailVerification:
|
||||||
|
Title: Verifica email
|
||||||
|
Description: Ti abbiamo inviato un'e-mail per verificare il tuo indirizzo. Inserisci il codice nel campo sottostante.
|
||||||
|
CodeLabel: Codice
|
||||||
|
NextButtonText: Avanti
|
||||||
|
ResendButtonText: rispedisci
|
||||||
|
|
||||||
|
EmailVerificationDone:
|
||||||
|
Title: Verificazione email effettuata
|
||||||
|
Description: La tua email è stata verificata con successo.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
CancelButtonText: annulla
|
||||||
|
LoginButtonText: Accedi
|
||||||
|
|
||||||
|
RegisterOption:
|
||||||
|
Title: Opzioni di registrazione
|
||||||
|
Description: Scegli come vuoi registrarti
|
||||||
|
RegisterUsernamePasswordButtonText: Con nome utente e password
|
||||||
|
ExternalLoginDescription: o registrarsi con un utente esterno
|
||||||
|
|
||||||
|
RegistrationUser:
|
||||||
|
Title: Registrazione
|
||||||
|
Description: Inserisci i tuoi dati utente. La tua email sarà usata come nome di accesso.
|
||||||
|
DescriptionOrgRegister: Inserisci i tuoi dati utente.
|
||||||
|
EmailLabel: email
|
||||||
|
UsernameLabel: Nome utente
|
||||||
|
FirstnameLabel: Nome
|
||||||
|
LastnameLabel: Cognome
|
||||||
|
LanguageLabel: Lingua
|
||||||
|
German: Tedesco
|
||||||
|
English: Inglese
|
||||||
|
GenderLabel: Genere
|
||||||
|
Female: Femminile
|
||||||
|
Male: Maschile
|
||||||
|
Diverse: diverso / X
|
||||||
|
PasswordLabel: Password
|
||||||
|
PasswordConfirmLabel: Conferma della password
|
||||||
|
TosAndPrivacyLabel: Termini di servizio
|
||||||
|
TosConfirm: Accetto i
|
||||||
|
TosLinkText: Termini di servizio
|
||||||
|
TosConfirmAnd: e
|
||||||
|
PrivacyLinkText: l'informativa sulla privacy
|
||||||
|
ExternalLogin: o registrati con un utente esterno
|
||||||
|
BackButtonText: indietro
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
ExternalRegistrationUserOverview:
|
||||||
|
Title: Registrazione utente esterno
|
||||||
|
Description: Abbiamo preso i tuoi dati utente dal provider selezionato. Ora puoi cambiarli o completarli.
|
||||||
|
EmailLabel: E-mail
|
||||||
|
UsernameLabel: Nome utente
|
||||||
|
FirstnameLabel: Nome
|
||||||
|
LastnameLabel: Cognome
|
||||||
|
NicknameLabel: Soprannome
|
||||||
|
PhoneLabel: Numero di telefono
|
||||||
|
LanguageLabel: Lingua
|
||||||
|
German: Tedesco
|
||||||
|
English: Inglese
|
||||||
|
TosAndPrivacyLabel: Termini di servizio
|
||||||
|
TosConfirm: Accetto i
|
||||||
|
TosLinkText: Termini di servizio
|
||||||
|
TosConfirmAnd: e
|
||||||
|
PrivacyLinkText: l'informativa sulla privacy
|
||||||
|
ExternalLogin: o registrati con un utente esterno
|
||||||
|
BackButtonText: indietro
|
||||||
|
NextButtonText: salva
|
||||||
|
|
||||||
|
RegistrationOrg:
|
||||||
|
Title: Registrazione dell'organizzazione
|
||||||
|
Description: Inserisci il tuo nome di organizzazione e i tuoi dati utente.
|
||||||
|
OrgNameLabel: Nome dell'organizzazione
|
||||||
|
EmailLabel: E-mail
|
||||||
|
UsernameLabel: Nome utente
|
||||||
|
FirstnameLabel: Nome
|
||||||
|
LastnameLabel: Cognome
|
||||||
|
PasswordLabel: Password
|
||||||
|
PasswordConfirmLabel: Conferma della password
|
||||||
|
TosAndPrivacyLabel: Termini di servizio
|
||||||
|
TosConfirm: Accetto i
|
||||||
|
TosLinkText: Termini di servizio
|
||||||
|
TosConfirmAnd: e
|
||||||
|
PrivacyLinkText: l'informativa sulla privacy
|
||||||
|
SaveButtonText: Salva
|
||||||
|
|
||||||
|
LoginSuccess:
|
||||||
|
Title: Accesso riuscito
|
||||||
|
AutoRedirectDescription: Sarai reindirizzato automaticamente alla tua applicazione. In caso contrario, clicca sul pulsante sottostante. Dopo puoi chiudere la finestra.
|
||||||
|
RedirectedDescription: Ora puoi chiudere la finestra.
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
LogoutDone:
|
||||||
|
Title: Disconnesso
|
||||||
|
Description: Ti sei disconnesso con successo.
|
||||||
|
LoginButtonText: Accedi
|
||||||
|
|
||||||
|
LinkingUsersDone:
|
||||||
|
Title: Collegamento utente
|
||||||
|
Description: Collegamento fatto.
|
||||||
|
CancelButtonText: annulla
|
||||||
|
NextButtonText: Avanti
|
||||||
|
|
||||||
|
ExternalNotFoundOption:
|
||||||
|
Title: Utente esterno
|
||||||
|
Description: Utente esterno non trovato. Vuoi collegare il tuo utente o registrarne uno nuovo automaticamente.
|
||||||
|
LinkButtonText: Link
|
||||||
|
AutoRegisterButtonText: Registra automaticamente
|
||||||
|
TosAndPrivacyLabel: Termini di servizio
|
||||||
|
TosConfirm: Accetto i
|
||||||
|
TosLinkText: Termini di servizio
|
||||||
|
TosConfirmAnd: e
|
||||||
|
PrivacyLinkText: l'informativa sulla privacy
|
||||||
|
|
||||||
|
Footer:
|
||||||
|
PoweredBy: Alimentato da
|
||||||
|
Tos: Termini di servizio
|
||||||
|
PrivacyPolicy: l'informativa sulla privacy
|
||||||
|
Help: Aiuto
|
||||||
|
HelpLink: 'https://docs.zitadel.ch/docs/manuals/user-login'
|
||||||
|
|
||||||
|
Errors:
|
||||||
|
Internal: Si è verificato un errore interno
|
||||||
|
AuthRequest:
|
||||||
|
NotFound: Impossibile trovare authrequest
|
||||||
|
UserAgentNotCorresponding: User Agent non corrisponde
|
||||||
|
UserAgentNotFound: User Agent ID non trovato
|
||||||
|
TokenNotFound: Token non trovato
|
||||||
|
RequestTypeNotSupported: Il tipo di richiesta non è supportato
|
||||||
|
MissingParameters: Mancano i parametri richiesti
|
||||||
|
User:
|
||||||
|
NotFound: L'utente non è stato trovato
|
||||||
|
Inactive: L'utente è inattivo
|
||||||
|
NotFoundOnOrg: L'utente non è stato trovato nell'organizzazione scelta
|
||||||
|
NotAllowedOrg: L'utente non è membro dell'organizzazione richiesta
|
||||||
|
NotMatchingUserID: Utente e authrequest non corrispondono
|
||||||
|
UserIDMissing: UserID è vuoto
|
||||||
|
Invalid: I dati del utente non sono validi
|
||||||
|
DomainNotAllowedAsUsername: Il dominio è già riservato e non può essere utilizzato
|
||||||
|
NotAllowedToLink: L'utente non è autorizzato a collegarsi con un provider di accesso esterno
|
||||||
|
Password:
|
||||||
|
ConfirmationWrong: La conferma della password è sbagliata
|
||||||
|
Empty: La password è vuota
|
||||||
|
Invalid: La password non è valida
|
||||||
|
InvalidAndLocked: La password non è valida e l'utente è bloccato, contatta il tuo amministratore.
|
||||||
|
PasswordComplexityPolicy:
|
||||||
|
NotFound: Impostazioni della password non trovate
|
||||||
|
MinLength: La password è troppo corta
|
||||||
|
HasLower: La password deve contenere una lettera minuscola
|
||||||
|
HasUpper: La password deve contenere la lettera maiuscola
|
||||||
|
HasNumber: La password deve contenere un numero
|
||||||
|
HasSymbol: La password deve contenere il simbolo
|
||||||
|
Code:
|
||||||
|
Expired: Il codice è scaduto
|
||||||
|
Invalid: Il codice non è valido
|
||||||
|
Empty: Il codice è vuoto
|
||||||
|
CryptoCodeNil: Il codice criptato è null
|
||||||
|
NotFound: Impossibile trovare il codice
|
||||||
|
GeneratorAlgNotSupported: Algoritmo generatore non supportato
|
||||||
|
EmailVerify:
|
||||||
|
UserIDEmpty: UserID è vuoto
|
||||||
|
ExternalData:
|
||||||
|
CouldNotRead: I dati esterni non possono essere letti correttamente
|
||||||
|
MFA:
|
||||||
|
NoProviders: Nessun fornitore multifattore disponibile
|
||||||
|
OTP:
|
||||||
|
AlreadyReady: Multifactor OTP (OneTimePassword) è già impostato
|
||||||
|
NotExisting: Multifactor OTP (OneTimePassword) non esiste
|
||||||
|
InvalidCode: Codice non valido
|
||||||
|
NotReady: Multifattore OTP (OneTimePassword) non è pronto
|
||||||
|
Locked: L'utente è bloccato
|
||||||
|
SomethingWentWrong: Qualcosa è andato storto
|
||||||
|
NotActive: L'utente non è attivo
|
||||||
|
ExternalIDP:
|
||||||
|
IDPTypeNotImplemented: Il tipo di IDP non è implementato
|
||||||
|
NotAllowed: Provider di accesso esterno non consentito
|
||||||
|
IDPConfigIDEmpty: L'ID del fornitore di identità è vuoto
|
||||||
|
ExternalUserIDEmpty: L'ID utente esterno è vuoto
|
||||||
|
UserDisplayNameEmpty: Il nome visualizzato dell'utente è vuoto
|
||||||
|
NoExternalUserData: Nessun dato utente esterno ricevuto
|
||||||
|
GrantRequired: Accesso non possibile. L'utente deve avere almeno una sovvenzione sull'applicazione. Contatta il tuo amministratore.
|
||||||
|
ProjectRequired: Accesso non possibile. L'organizzazione dell'utente deve essere concessa al progetto. Contatta il tuo amministratore.
|
||||||
|
IdentityProvider:
|
||||||
|
InvalidConfig: La configurazione dell'Identity Provider non è valida
|
||||||
|
IAM:
|
||||||
|
LockoutPolicy:
|
||||||
|
NotExisting: Impostazioni di blocco non esistenti
|
||||||
|
|
||||||
|
optional: (opzionale)
|
Loading…
x
Reference in New Issue
Block a user