[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[reclaim-ui] 321/459: I18n
From: |
gnunet |
Subject: |
[reclaim-ui] 321/459: I18n |
Date: |
Fri, 11 Jun 2021 23:26:53 +0200 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository reclaim-ui.
commit 9c491ad5d2bfea30d09b0af6a4561ef322e912fe
Author: annawimbauer <anna.wimbauer@gmx.de>
AuthorDate: Mon Oct 5 14:04:18 2020 +0000
I18n
---
package.json | 2 +
src/app/app.component.html | 2 +-
src/app/app.component.ts | 11 ++
.../authorization-request.component.html | 28 ++---
.../authorization-request.component.ts | 15 ++-
.../edit-authorizations.component.html | 18 +--
.../edit-authorizations.component.ts | 13 ++-
.../edit-credentials.component.html | 58 +++++-----
.../edit-credentials/edit-credentials.component.ts | 15 ++-
src/app/edit-identity/edit-identity.component.html | 61 +++++-----
src/app/edit-identity/edit-identity.component.ts | 11 ++
src/app/identity-list/identity-list.component.html | 46 ++++----
src/app/identity-list/identity-list.component.ts | 17 ++-
src/app/new-identity/new-identity.component.html | 12 +-
src/app/new-identity/new-identity.component.ts | 11 ++
src/polyfills.ts | 4 +
yarn.lock | 123 ++++++++++++++++++++-
17 files changed, 320 insertions(+), 127 deletions(-)
diff --git a/package.json b/package.json
index 5c8ae06..257c23b 100644
--- a/package.json
+++ b/package.json
@@ -19,9 +19,11 @@
"@angular/compiler": "^10.0",
"@angular/core": "^10.0",
"@angular/forms": "^10.0",
+ "@angular/localize": "^10.1.3",
"@angular/platform-browser": "^10.0",
"@angular/platform-browser-dynamic": "^10.0",
"@angular/router": "^10.0",
+ "@types/chrome": "^0.0.124",
"@types/jsonwebtoken": "^8.5.0",
"angular-oauth2-oidc": "^10.0.0",
"bootstrap": "^4.4.1",
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 10bb6fa..7bb4ac3 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -2,5 +2,5 @@
<router-outlet></router-outlet>
<div style="margin: 1em" (click)="toggleExperimental()">
<i [className]="isExperimental() ? 'fa fa-toggle-on' : 'fa
fa-toggle-off'"></i>
- Exerimental features <b *ngIf="isExperimental()">enabled</b><span
*ngIf="!isExperimental()">disabled</span>
+ <b
*ngIf="isExperimental()">{{getMessage("app_html@experimentalEnabled")}}</b><span
*ngIf="!isExperimental()">{{getMessage("app_html@experimentalDisabled")}}</span>
</div>
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index a3b7a5a..0631678 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -22,4 +22,15 @@ export class AppComponent {
this.configService.get().experiments =
!this.configService.get().experiments;
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/app/authorization-request/authorization-request.component.html
b/src/app/authorization-request/authorization-request.component.html
index d8fb8a4..f565d8e 100644
--- a/src/app/authorization-request/authorization-request.component.html
+++ b/src/app/authorization-request/authorization-request.component.html
@@ -1,23 +1,22 @@
<div style="text-align: center;">
<i class="fa fa-2x fa-openid"></i>
- <b class="fa-2x"> Personal information request </b>
+ <b class="fa-2x" > {{getMessage("authorization_request_html@personalInfo")}}
</b>
<br/>
<span *ngIf="isClientVerified() === undefined">
<i class="fa fa-2x fa-circle-o-notch fa-spin fa-fw"></i>
- <b class="fa-2x"> Verifying request, please stand by...</b>
+ <b class="fa-2x" >
{{getMessage("authorization_request_html@verifyRequest")}}</b>
</span>
<br/>
</div>
<div class="card" *ngIf="isClientVerified()" style="margin-left:30%;
width:40%;">
- <div class="card-body">
+ <div class="card-body" >
<strong>{{ oidcService.clientName }}</strong>
- asks you to share personal information.<br/>
- Choose an identity to let it access the following information:
+ {{getMessage("authorization_request_html@chooseId")}}
<ul>
<li *ngFor="let attribute of
getRequestedStandardScopesWithDescription()"><strong>{{attribute}}</strong></li>
</ul>
<div *ngIf="getRequestedNonStandardClaims().length > 0">
- as well as the following additional attributes:
+ {{getMessage("authorization_request_html@attributes")}}
<ul>
<li *ngFor="let attribute of
getRequestedNonStandardClaims()"><strong>{{attribute}}</strong></li>
</ul>
@@ -26,32 +25,29 @@
<!-- Sharing disclaimer -->
<div class="alert alert-warning alert-dismissible fade show mb-1"
role="alert">
<i class="fa fa-exclamation-triangle mr-2"></i>
- <strong>Be careful when sharing personal data with third parties!</strong>
- If you do not want to share information from any of your identities with
- <i>{{ oidcService.clientName }}</i>, you may decline the request.
- You may also permanently remove or edit information from an identity before
- sharing.
+
<strong>{{getMessage("authorization_request_html@personalDataWarning1")}}</strong>
+ {{getMessage("authorization_request_html@personalDataWarning2",
oidcService.clientName)}}
</div>
<div style="margin: 1em;">
<button class="btn btn-danger m-1 mt-4" *ngIf="isClientVerified()"
(click)="cancelRequest()" style="margin-bottom: -4%;">
- <span class="fa fa-ban"></span> Decline
+ <span class="fa fa-ban"></span> {{getMessage("Decline")}}
</button>
<button class="btn btn-primary m-1 mt-4" [routerLink]="['/']"
*ngIf="isClientVerified()">
- <span class="fa fa-arrow-circle-right"></span> Select identity...
+ <span class="fa fa-arrow-circle-right"></span>
{{getMessage("authorization_request_html@selectId")}}
</button>
</div>
</div>
<div *ngIf="isClientVerified() !== undefined && !isClientVerified()"
style="text-align: center;">
<div class="alert alert-danger show" role="alert">
- <b>Authorization failed.</b><br/>
+ <b >{{getMessage("authorization_request_html@authFailed")}}</b><br/>
<button class="btn btn-primary mt-4" *ngIf="!isClientVerified()"
(click)="retryVerify();">
- <span class="fa fa-openid"></span> Retry
+ <span class="fa fa-openid"></span>
{{getMessage("authorization_request_html@retry")}}
</button>
</div>
</div>
<div *ngIf="isClientVerified() === undefined" style="text-align: center;">
<button class="btn btn-danger mt-4" *ngIf="isClientVerified() === undefined"
(click)="cancelRequest()">
- <span class="fa fa-ban"></span> Cancel verification request
+ <span class="fa fa-ban"></span>
{{getMessage("authorization_request_html@cancelRequest")}}
</button>
</div>
diff --git a/src/app/authorization-request/authorization-request.component.ts
b/src/app/authorization-request/authorization-request.component.ts
index 1b5bfe4..2172b2d 100644
--- a/src/app/authorization-request/authorization-request.component.ts
+++ b/src/app/authorization-request/authorization-request.component.ts
@@ -9,6 +9,8 @@ import { OpenIdService } from '../open-id.service';
})
export class AuthorizationRequestComponent implements OnInit {
+ browser: typeof browser;
+
constructor(private oidcService: OpenIdService,
private router: Router) { }
@@ -30,7 +32,7 @@ export class AuthorizationRequestComponent implements OnInit {
cancelRequest() {
this.oidcService.cancelAuthorization().subscribe(() => {
- console.log('Request cancelled');
+
console.log(this.getMessage("authorization_request_ts@requestCancelled"));
this.router.navigate(['/']);
//Manually reset this component
});
@@ -40,5 +42,16 @@ export class AuthorizationRequestComponent implements OnInit
{
this.oidcService.getClientName();
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/app/edit-authorizations/edit-authorizations.component.html
b/src/app/edit-authorizations/edit-authorizations.component.html
index ddb918d..21c3b90 100644
--- a/src/app/edit-authorizations/edit-authorizations.component.html
+++ b/src/app/edit-authorizations/edit-authorizations.component.html
@@ -1,8 +1,8 @@
<!-- Identity edit screen -->
<div class="m-2 card">
<div class="card-avatar card-img-top">
- <div class="card-avatar-character text-dark">
- Manage authorizations for <i>{{ identity.name }}</i>
+ <div class="card-avatar-character text-dark" >
+ {{getMessage("edit_authorizations_html@manageAuths")}} <i>{{
identity.name }}</i>
</div>
</div>
<div class="card-body">
@@ -13,12 +13,12 @@
<tr>
<th scope="col">
<h6 class="card-subtitle mb-2">
- Authorized Entity:
+ {{getMessage("edit_authorizations_html@authEntity")}}
</h6>
</th>
<th scope="col">
<h6 class="card-subtitle mb-2">
- Shared attributes:
+ {{getMessage("edit_authorizations_html@sharedAttributes")}}
</h6>
</th>
<th scope="col"></th>
@@ -38,15 +38,15 @@
</td>
<td>
<button class="btn btn-primary" *ngIf="showConfirmRevoke !=
ticket" (click)="confirmRevoke(ticket)">
- <span class="fa fa-unlink"></span> Revoke
+ <span class="fa fa-unlink"></span> {{getMessage("Revoke")}}
</button>
<div class="alert alert-danger fade show"
*ngIf="showConfirmRevoke == ticket">
- Do you really want to revoke this authorization?<br/><br/>
+
{{getMessage("edit_authorizations_html@revokeVerifikation")}}<br/><br/>
<button class="btn btn-primary m-2"
(click)="revokeTicket(ticket)">
- <span class="fa fa-check"></span> Yes
+ <span class="fa fa-check"></span> {{getMessage("Yes")}}
</button>
<button class="btn btn-primary m-2"
(click)="hideConfirmRevoke()">
- <span class="fa fa-close"></span> No
+ <span class="fa fa-close"></span> {{getMessage("No")}}
</button>
</div>
</td>
@@ -57,7 +57,7 @@
<!-- Edit card buttons -->
<div>
<button class="btn btn-primary" [routerLink]="['/edit-identity',
identity.name]">
- <span class="fa fa-back"></span> Back to {{identity.name}}
+ <span class="fa fa-back"></span>
{{getMessage("edit_authorizations_html@BackTo", identity.name)}}
</button>
</div>
</div>
diff --git a/src/app/edit-authorizations/edit-authorizations.component.ts
b/src/app/edit-authorizations/edit-authorizations.component.ts
index 79b2efe..35984ef 100644
--- a/src/app/edit-authorizations/edit-authorizations.component.ts
+++ b/src/app/edit-authorizations/edit-authorizations.component.ts
@@ -54,7 +54,7 @@ export class EditAuthorizationsComponent implements OnInit {
getAudienceName(ticket) {
if (undefined === this.audienceNames[ticket.audience]) {
- return 'Unknown';
+ return this.getMessage("edit_authorizations_ts@unknown");
}
return this.audienceNames[ticket.audience];
}
@@ -140,5 +140,16 @@ export class EditAuthorizationsComponent implements OnInit
{
});
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/app/edit-credentials/edit-credentials.component.html
b/src/app/edit-credentials/edit-credentials.component.html
index 0bf7189..9572ca0 100644
--- a/src/app/edit-credentials/edit-credentials.component.html
+++ b/src/app/edit-credentials/edit-credentials.component.html
@@ -1,13 +1,13 @@
<!-- Identity edit screen -->
<div class="m-2 card">
<div class="card-avatar card-img-top">
- <div class="card-avatar-character text-dark">
- Third party credentials for <i>{{ identity.name }}</i>
+ <div class="card-avatar-character text-dark" >
+ {{getMessage("edit_credentials_html@credentialsFor")}} <i>{{
identity.name }}</i>
</div>
</div>
<!-- Credential management -->
<div class="card-body">
- <h3>Link account:</h3>
+ <h3 >{{getMessage("edit_credentials_html@linkAccount")}}</h3>
<!--IdProvider-Discovery-->
<div>
<!--Email not found Warning-->
@@ -16,53 +16,50 @@
<span class="fa fa-warning"></span> {{errorMassage}}
</div>
<!--Issuer Discovery Warning-->
- <div *ngIf="!isValidEmailforDiscovery()" class="alert alert-primary
alert-dismissible fade show" role="alert">
- <span class="fa fa-warning"></span> This account is not compatible
with re:claimID.
+ <div *ngIf="!isValidEmailforDiscovery()" class="alert alert-primary
alert-dismissible fade show" role="alert" >
+ <span class="fa fa-warning"></span>
{{getMessage("edit_credentials_html@notCompatible")}}
</div>
<div *ngIf="!newIdProviderDiscovered() && !loggedIn()"
- class="alert alert-secondary alert-dismissible fade show my-2"
role="alert">
- <span class="fa fa-info"> </span> <b class="ml-2">INFO</b><br/>
- It is possible to link your external
- accounts with a re:claimID identity. To do so, enter you email address
- below and click "Check compatibility". <br/><i>NOTE:</i> Not all
external accounts
- support linking to re:claimID identities.<br/>
+ class="alert alert-secondary alert-dismissible fade show my-2"
role="alert" >
+ <span class="fa fa-info"> </span> <b
class="ml-2">{{getMessage("edit_credentials_html@info")}}</b><br/>
+ {{getMessage("edit_credentials_html@linkAccountInfo")}}
</div>
<div *ngIf="!newIdProviderDiscovered()" class="my-2 col-lg-4">
<input placeholder="user@example.com" [(ngModel)]="webfingerEmail">
- <button *ngIf="!newIdProviderDiscovered()" class="btn btn-primary
fhg-link" (click)="discoverIdProvider()">
- <span class="fa fa-search"></span> Check compatibility
+ <button *ngIf="!newIdProviderDiscovered()" class="btn btn-primary
fhg-link" (click)="discoverIdProvider()" >
+ <span class="fa fa-search"></span>
{{getMessage("edit_credentials_html@checkCompatability")}}
</button>
</div>
<!--Description-->
<!--Link account-->
<div *ngIf="newIdProviderDiscovered() && !loggedIn()" class="mb-3 px-2">
- <div class="mx-n2">Available claims to request:</div>
+ <div class="mx-n2"
>{{getMessage("edit_credentials_html@availableClaims")}}</div>
<div *ngFor="let scope of scopes" class="mx-2">
<i class="fa text-primary" [class.fa-toggle-off]="!scope.chosen"
[class.fa-toggle-on]="scope.chosen"
[class.text-muted]="necessaryScope(scope.scope)"
(click)="!necessaryScope(scope.scope) && scope.chosen = !scope.chosen"></i>
<span class="ml-1"
[class.text-muted]="necessaryScope(scope.scope)">{{scope.scope}}</span>
<!--<input type="checkbox" class="form-check-input" id="scopes"
[disabled]="necessaryScope(scope.scope)" [(ngModel)]="scope.chosen">-->
<!--<label class="form-check-label"
for="scope.chosen">{{scope.scope}}</label>-->
</div>
- <button class="btn btn-primary mb-1 mt-2 fhg-link"
(click)="loginFhgAccount()">
- <span class="fa fa-link"></span> Link
+ <button class="btn btn-primary mb-1 mt-2 fhg-link"
(click)="loginFhgAccount()" >
+ <span class="fa fa-link"></span>
{{getMessage("edit_credentials_html@link")}}
</button>
- <button class="btn btn-primary mb-1 fhg-link"
(click)="cancelLinking()">
- <span class="fa fa-close"></span> Cancel
+ <button class="btn btn-primary mb-1 fhg-link"
(click)="cancelLinking()" >
+ <span class="fa fa-close"></span> {{getMessage("Cancel")}}
</button>
</div>
</div>
<hr />
- <h3>Credentials:</h3>
+ <h3 >{{getMessage("edit_credentials_html@credentials")}}</h3>
<!-- Credential creation warning -->
<div
*ngIf="loggedIn() && !credentialNameValid(newCredential) ||
!credentialTypeValid(newCredential) || !credentialValueValid(newCredential)"
- class="alert alert-primary alert-dismissible fade show" role="alert">
- <span class="fa fa-warning"></span> Note:
+ class="alert alert-primary alert-dismissible fade show" role="alert" >
+ <span class="fa fa-warning"></span>
{{getMessage("edit_credentials_html@note")}}
<ul>
- <li>Only use alphanumeric credential names.</li>
- <li>You cannot define the same name twice.</li>
- <li>Types and values may not be empty!</li>
+ <li>{{getMessage("edit_credentials_html@note1")}}</li>
+ <li>{{getMessage("edit_credentials_html@note2")}}</li>
+ <li>{{getMessage("edit_credentials_html@note3")}}</li>
</ul>
</div>
@@ -70,11 +67,10 @@
<table class="table pb-1" style="">
<thead>
<tr>
- <th>Name</th>
- <th>Type</th>
- <th>Expires</th>
- <!--<th>Issuer</th>-->
- <th>Issuer</th>
+ <th >{{getMessage("edit_credentials_html@name")}}</th>
+ <th >{{getMessage("edit_credentials_html@type")}}</th>
+ <th >{{getMessage("edit_credentials_html@expires")}}</th>
+ <th >{{getMessage("edit_credentials_html@issuer")}}</th>
</tr>
</thead>
<tbody>
@@ -102,7 +98,7 @@
</button>
</td>
<td>
- <div *ngIf="!isCredentialValid(credential)"> <span
style="color:#f00"> Expired </span> <span
+ <div *ngIf="!isCredentialValid(credential)"> <span
style="color:#f00" > {{getMessage("edit_credentials_html@expired")}} </span>
<span
class="fa fa-times"></span> </div>
</td>
</tr>
@@ -135,7 +131,7 @@
<!-- Edit card buttons -->
<div>
<button class="btn btn-primary" (click)="goBack()"
[disabled]="!canGoBack()">
- <span class="fa fa-save"></span> Back
+ <span class="fa fa-save"></span> {{getMessage("Back")}}
</button>
</div>
</div>
diff --git a/src/app/edit-credentials/edit-credentials.component.ts
b/src/app/edit-credentials/edit-credentials.component.ts
index 39b32d6..ced66ad 100644
--- a/src/app/edit-credentials/edit-credentials.component.ts
+++ b/src/app/edit-credentials/edit-credentials.component.ts
@@ -269,10 +269,10 @@ export class EditCredentialsComponent implements OnInit {
},
error => {
if (error.status == 404){
- this.errorMassage = 'No account found with this email'
+ this.errorMassage = this.getMessage("edit_credentials_ts@noAccount");
}
else{
- this.errorMassage = 'An Error has occured - This may have been caused
by a wrong e-mail address'
+ this.errorMassage =
this.getMessage("edit_credentials_ts@errorWrongAddress");
}
this.emailNotFoundAlertClosed = false;
setTimeout(() => this.emailNotFoundAlertClosed = true, 20000);
@@ -355,5 +355,16 @@ export class EditCredentialsComponent implements OnInit {
this.scopes = [];
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/app/edit-identity/edit-identity.component.html
b/src/app/edit-identity/edit-identity.component.html
index 3445684..33c0a0e 100644
--- a/src/app/edit-identity/edit-identity.component.html
+++ b/src/app/edit-identity/edit-identity.component.html
@@ -12,10 +12,9 @@
<!-- Attribute table -->
<div class="card-body">
<div>
- <h3 class="card-subtitle mb-2">Basic user information <span
(click)="showGeneralInfo = !showGeneralInfo" class="fa
fa-question-circle"></span></h3>
- <div class="alert alert-secondary fade show" *ngIf="showGeneralInfo">
- The attributes below correspond to the standard scopes of the OpenID
Connect
- specification: ``profile'', ``email'', ``phone'' and ``address''.
+ <h3 class="card-subtitle mb-2">
{{getMessage("edit_identity_html@basicInfo")}} <span (click)="showGeneralInfo =
!showGeneralInfo" class="fa fa-question-circle"></span></h3>
+ <div class="alert alert-secondary fade show" *ngIf="showGeneralInfo" >
+ {{getMessage("edit_identity_html@standardScopes")}}
</div>
<div class="table pb-1">
@@ -30,7 +29,7 @@
</div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)" >{{ getCredValue(claim) }}
issued by <i>{{ getIssuer(claim) }}</i> as attribute for ``{{ claim.value
}}''</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -71,7 +70,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)" >{{ getCredValue(claim) }}
issued by <i>{{ getIssuer(claim) }}</i> as attribute for ``{{ claim.value
}}''</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -114,7 +113,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)" >{{ getCredValue(claim) }}
issued by <i>{{ getIssuer(claim) }}</i> as attribute for ``{{ claim.value
}}''</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -156,7 +155,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)" >{{ getCredValue(claim) }}
issued by <i>{{ getIssuer(claim) }}</i> as attribute for ``{{ claim.value
}}''</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -176,14 +175,14 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<select *ngIf="isExperimental()" class="custom-select"
(change)="claim.flag=$event.target.value; ">
- <option value="0">Plain</option>
- <option value="1">Credential</option>
+ <option value="0">{{ getMessage("edit_identity_html@plain")
}}</option>
+ <option value="1">{{
getMessage("edit_identity_html@credential") }}</option>
</select>
<input *ngIf="claim.flag == '0'" placeholder="Value"
[(ngModel)]="claim.value">
<select *ngIf="claim.flag == '1'" class="custom-select"
- (change)="claim.credential=$event.target.value; ">
- <option value="">Select credential source</option>
+ (change)="claim.credential=$event.target.value; " >
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
@@ -191,7 +190,7 @@
<select class="custom-select"
*ngIf="(claim.credential !== '') && (claim.flag == '1')"
(change)="claim.value=$event.target.value">
- <option value="">Select claim</option>
+ <option value="">{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let att of credentialValuesForClaim(claim)"
value={{att.name}}>
{{att.value}} <i>({{att.name}})</i>
</option>
@@ -207,9 +206,9 @@
</div>
- <h3 class="card-subtitle mb-2">Additional information <span
(click)="showExtraInfo = !showExtraInfo" class="fa
fa-question-circle"></span></h3>
- <div class="alert alert-secondary fade show" *ngIf="showExtraInfo">
- Non-standard claims which are not explicitly covered in the OpenID
Connect core specification.
+ <h3 class="card-subtitle mb-2" >{{
getMessage("edit_identity_html@additionalInfo") }}<span (click)="showExtraInfo
= !showExtraInfo" class="fa fa-question-circle"></span></h3>
+ <div class="alert alert-secondary fade show" *ngIf="showExtraInfo" >
+ {{ getMessage("edit_identity_html@non_standardClaims") }}
</div>
<!-- Missing "non-standard" claims that are requested -->
@@ -223,14 +222,14 @@
<div class="col-sm">
<input *ngIf="!isClaimCredentialRequested(missing)"
placeholder="Value" [(ngModel)]="missing.value">
<select *ngIf="isClaimCredentialRequested(missing)"
class="custom-select" (change)="missing.credential=$event.target.value; ">
- <option value="">Select credential source</option>
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
</select>
<select *ngIf="isClaimCredentialRequested(missing) &&
missing.credential !== ''" class="custom-select"
(change)="missing.value=$event.target.value">
- <option value="">Select claim</option>
+ <option value="">{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let claim of credentialValuesForCred(missing)"
value={{claim.name}}>
{{claim.value}} <i>({{claim.name}})</i>
</option>
@@ -253,7 +252,7 @@
</div>
<div class="col-sm">
<input *ngIf="!isClaimCred(attribute)" placeholder="Value"
[(ngModel)]="attribute.value">
- <span *ngIf="isClaimCred(attribute)" >{{ getCredValue(attribute)
}} issued by <i>{{ getIssuer(attribute) }}</i> as attribute for ``{{
attribute.value }}''</span>
+ <span *ngIf="isClaimCred(attribute)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary"
(click)="deleteAttribute(attribute)" *ngIf="!isClaimCred(attribute)">
@@ -272,13 +271,13 @@
<div class="col-sm">
<select *ngIf="isExperimental()" class="custom-select"
(change)="newAttribute.flag=$event.target.value; ">
- <option value="0">Plain</option>
- <option value="1">Credential</option>
+ <option value="0">{{ getMessage("edit_identity_html@plain")
}}</option>
+ <option value="1">{{
getMessage("edit_identity_html@credential") }}</option>
</select>
<input *ngIf="newAttribute.flag == '0'" placeholder="Value"
[class.text-danger]="!attributeValueValid(newAttribute)"
[(ngModel)]="newAttribute.value">
<select *ngIf="newAttribute.flag == '1'" class="custom-select"
- (change)="newAttribute.credential=$event.target.value; ">
- <option value="">Select credential source</option>
+ (change)="newAttribute.credential=$event.target.value; " >
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
@@ -286,7 +285,7 @@
<select class="custom-select"
*ngIf="newAttribute.credential !== '' && newAttribute.flag ==
'1'" (change)="newAttribute.value=$event.target.value">
- <option value="">Select claim</option>
+ <option value="" >{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let claim of
credentialValuesForClaim(newAttribute)" value={{claim.name}}>
{{claim.value}} <i>({{claim.name}})</i>
</option>
@@ -302,11 +301,11 @@
</div>
<!-- Attribute creation warning -->
<div *ngIf="!attributeNameValid(newAttribute) ||
!attributeValueValid(newAttribute)" class="alert alert-primary
alert-dismissible fade show" role="alert">
- <span class="fa fa-warning"></span> Note:
+ <span class="fa fa-warning"></span> {{
getMessage("edit_identity_html@note") }}
<ul>
- <li>Only use alphanumeric attribute names.</li>
- <li>You cannot define the same name twice.</li>
- <li>Attribute values may not be empty!</li>
+ <li>{{ getMessage("edit_identity_html@note1") }}</li>
+ <li>{{ getMessage("edit_identity_html@note2") }}</li>
+ <li>{{ getMessage("edit_identity_html@note3") }}</li>
</ul>
</div>
@@ -315,15 +314,15 @@
<!-- Edit card buttons -->
<div>
<button class="btn btn-primary" (click)="saveIdentity()"
[disabled]="!canSaveIdentity()">
- <span class="fa fa-save"></span> Save and Back
+ <span class="fa fa-save"></span> {{ getMessage("SaveAndBack") }}
</button>
<button *ngIf="!inOpenIdFlow()" class="btn btn-primary"
[routerLink]="['/edit-authorizations', identity.name]" [style.float]="'right'">
<span class="fa fa-openid"></span>
- Manage authorizations
+ {{ getMessage("edit_identity_html@manageAuths") }}
</button>
<button *ngIf="!inOpenIdFlow() && isExperimental()" class="btn
btn-primary" [routerLink]="['/edit-credentials', identity.name]"
[style.float]="'right'">
<span class="fa fa-openid"></span>
- Manage credentials
+ {{ getMessage("edit_identity_html@manageCreds") }}
</button>
</div>
</div>
diff --git a/src/app/edit-identity/edit-identity.component.ts
b/src/app/edit-identity/edit-identity.component.ts
index c1f065b..035acfa 100644
--- a/src/app/edit-identity/edit-identity.component.ts
+++ b/src/app/edit-identity/edit-identity.component.ts
@@ -535,4 +535,15 @@ export class EditIdentityComponent implements OnInit {
return this.configService.get().experiments;
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/app/identity-list/identity-list.component.html
b/src/app/identity-list/identity-list.component.html
index c4f2e49..79160e8 100644
--- a/src/app/identity-list/identity-list.component.html
+++ b/src/app/identity-list/identity-list.component.html
@@ -3,7 +3,7 @@
<div class="logo"><img src="assets/reclaim_icon.png"/></div>
<hr>
<div style="text-align: center; font-size: 18px;">
- <strong> Unable to connect to GNUnet. <br/> Maybe it is not running?
</strong>
+ <strong> {{ getMessage("identity_list_html@unableToConnect") }} </strong>
</div>
</oid-modal>
@@ -15,8 +15,8 @@
<div class="search-wrapper">
<input class="form-control mr-sm-2" type="search" [(ngModel)]="searchTerm"
name="searchTerm" placeholder="Search identities" style="border-radius: 2em;">
</div>
- <button class="btn btn-primary" [routerLink]="['/new-identity']">
- <span class="fa fa-user-plus"></span> New identity
+ <button class="btn btn-primary" [routerLink]="['/new-identity']" >
+ <span class="fa fa-user-plus"></span> {{
getMessage("identity_list_html@newId") }}
</button>
</div>
<br/>
@@ -25,7 +25,7 @@
<!-- Cancel authorization -->
<div style="margin-bottom: 1em; text-align: center;" *ngIf="inOpenIdFlow()">
<button *ngIf="inOpenIdFlow()" class="btn btn-danger mt-2"
(click)="cancelRequest()">
- <span class="fa fa-ban"></span> Decline authorization request
+ <span class="fa fa-ban"></span> {{
getMessage("identity_list_html@declineRequest") }}
</button>
</div>
@@ -33,7 +33,7 @@
<div *ngFor="let err of errorInfos" class="alert alert-danger show"
role="alert">
<b>ERROR</b>
<button class="btn btn-primary ml-4"
(click)="errorInfos.splice(errorInfos.indexOf(err,0), 1)">
- <span>Dismiss</span>
+ <span>{{ getMessage("identity_list_html@dismiss") }}</span>
</button>
<br/>
{{err}}
@@ -41,16 +41,16 @@
<!-- No identities present -->
<div *ngIf="isConnected() && 0 == identities.length" style="text-align:
center;" class="alert alert-secondary alert-dismissible fade show" role="alert">
- You don't have any identities yet.<br/><br/>
+ {{ getMessage("identity_list_html@noId") }}<br/><br/>
<button class="btn btn-primary" [routerLink]="['/new-identity']">
- <span class="fa fa-plus"></span> Add your first identity!
+ <span class="fa fa-plus"></span> {{
getMessage("identity_list_html@addFirstId") }}
</button>
</div>
<!-- Identity cards -->
<!-- No match -->
<div *ngIf="canSearch()">
- <div *ngIf="(identities | search: searchTerm).length == 0"
style="text-align: center;" class="alert alert-secondary alert-dismissible fade
show" role="alert">No matching identities.</div>
+ <div *ngIf="(identities | search: searchTerm).length == 0"
style="text-align: center;" class="alert alert-secondary alert-dismissible fade
show" role="alert">{{ getMessage("identity_list_html@noMatchingIds") }}</div>
</div>
<!-- Cards -->
<div class="card-columns p-2 mr-5 ml-5" [ngStyle]="{'column-count': '1'}"
style="display: flex; flex-direction:column; align-items:center">
@@ -69,33 +69,33 @@
</div>
<!-- Identity deletion confirmation -->
<div class="alert alert-danger fade show" [hidden]="showConfirmDelete !=
identity">
- Do you really want to delete this identity?<br/><br/>
+ {{ getMessage("identity_list_html@verifyDelete") }}<br/><br/>
<button class="btn btn-primary" (click)="deleteIdentity(identity)">
- <span class="fa fa-trash"></span> Delete
+ <span class="fa fa-trash"></span> {{ getMessage("Delete") }}
</button>
<button class="btn btn-primary" (click)="hideConfirmDelete()">
- <span class="fa fa-close"></span> Cancel
+ <span class="fa fa-close"></span> {{ getMessage("Cancel") }}
</button>
</div>
<!-- Maybe add some info to identities? - dialog -->
- <div class="alert alert-secondary fade show"
[hidden]="hasAttributes(identity)">
- This identity has no attributes. Maybe try <a class="buttonlink"
[routerLink]="['/edit-identity', identity.name]">adding some?</a>
+ <div class="alert alert-secondary fade show"
[hidden]="hasAttributes(identity)" >
+ {{ getMessage("identity_list_html@noAttributes1") }} <a
class="buttonlink" [routerLink]="['/edit-identity', identity.name]">{{
getMessage("identity_list_html@noAttributes2") }}</a>
</div>
<div [hidden]="!isAnyRequestedClaimMissing(identity)"
class="alert alert-warning alert-dismissible fade show"
[class.alert-warning]="!isAnyRequiredClaimMissing(identity)"
[class.alert-danger]="isAnyRequiredClaimMissing(identity)"
- role="alert">
- <span class="fa fa-openid"></span> This identity is missing some
requested information:
+ role="alert" >
+ <span class="fa fa-openid"></span> {{
getMessage("identity_list_html@missingInformation") }}
<ul>
<li *ngIf="isProfileRequested() && isProfileMissing(identity)"><b>{{
getProfileDescription() }}</b></li>
<li *ngIf="isEmailRequested() && isEmailMissing(identity)"><b>{{
getEmailDescription() }}</b></li>
<li *ngIf="isPhoneRequested() && isPhoneMissing(identity)"><b>{{
getPhoneDescription() }}</b></li>
<li *ngIf="isAddressRequested() && isAddressMissing(identity)"><b>{{
getAddressDescription() }}</b></li>
- <li *ngFor="let attr of
getMissingClaims(identity)"><b>{{attr.name}}</b><i *ngIf="!isOptional(attr)">
(required)</i></li>
+ <li *ngFor="let attr of
getMissingClaims(identity)"><b>{{attr.name}}</b><i *ngIf="!isOptional(attr)">
({{ getMessage("identity_list_html@required") }})</i></li>
</ul>
<button class="btn btn-primary" [routerLink]="['/edit-identity',
identity.name]">
- <span class="fa fa-edit"></span> Edit identity
+ <span class="fa fa-edit"></span> {{
getMessage("identity_list_html@editId") }}
</button>
</div>
@@ -121,14 +121,14 @@
</div>
<div *ngIf="(openIdentity != identity) &&
hasLotsOfAttributes(identity)" class="ml-4">
<div>
- <i>... and {{ attributes[identity.pubkey].length - 5 }} more
attributes</i><br/>
+ <i>{{ getMessage("identity_list_html@moreAttributes",
attributes[identity.pubkey].length - 5) }}</i><br/>
</div>
</div>
</div>
</div>
<button class="btn btn-primary mt-3" (click)="openIdentity = identity"
*ngIf="(openIdentity != identity) && hasLotsOfAttributes(identity)">
<i class="fa fa-expand"></i>
- Show all attributes
+ {{ getMessage("identity_list_html@showAll") }}
</button>
</div>
</div>
@@ -136,8 +136,8 @@
<button [disabled]="!isClientVerified() ||
isAnyRequiredClaimMissing(identity)"
(click)="loginIdentity(identity)"
class="btn btn-primary mr-1 openid-login">
- <span *ngIf="isClientVerified()">Share information marked with <i
class="fa fa-openid text-primary"></i> from this identity.</span>
- <span *ngIf="!isClientVerified()"><i class="fa
fa-exclamation-circle"></i> Sharing disabled</span>
+ <span *ngIf="isClientVerified()" >{{
getMessage("identity_list_html@shareInfo1") }} <i class="fa fa-openid
text-primary"></i> {{ getMessage("identity_list_html@shareInfo2") }}</span>
+ <span *ngIf="!isClientVerified()" ><i class="fa
fa-exclamation-circle"></i> {{ getMessage("identity_list_html@sharingDisabled")
}}</span>
</button>
</div>
</div>
@@ -148,12 +148,12 @@
<div class="card-avatar-character text-dark">
<!--<div class="icon m-1 text-uppercase"
[style.background-color]="intToRGB(identity.pubkey)">{{
identity.name[0]}}</div>-->
<i class="fa fa-user-circle"></i>
- <span class="m-1" style="display: inline-block"><i> New
Identity</i></span>
+ <span class="m-1" style="display: inline-block" ><i>{{
getMessage("identity_list_html@newId") }}</i></span>
</div>
</div>
<div class="card-body">
<div style="text-align:center" class="mb-4">
- <i>Click to add a new identity.</i>
+ <i>{{ getMessage("identity_list_html@addId") }}</i>
</div>
<div style="text-align:center">
<img src="assets/reclaim_icon.png" style="width: 5em;opacity: 0.3;">
diff --git a/src/app/identity-list/identity-list.component.ts
b/src/app/identity-list/identity-list.component.ts
index 5b48d98..0e0a596 100644
--- a/src/app/identity-list/identity-list.component.ts
+++ b/src/app/identity-list/identity-list.component.ts
@@ -126,7 +126,7 @@ export class IdentityListComponent implements OnInit {
}
},
err => {
- this.errorInfos.push("Error retrieving references for ``" +
identity.name + "''");
+ this.errorInfos.push(this.getMessage("identity_list_ts@errorReferences",
identity.name));
console.log(err);
});
}
@@ -156,7 +156,7 @@ export class IdentityListComponent implements OnInit {
this.updateMissingClaims(identity);
},
err => {
- this.errorInfos.push("Error retrieving attributes for ``" +
identity.name + "''");
+ this.errorInfos.push(this.getMessage("identity_list_ts@errorAttributes",
identity.name));
console.log(err);
});
}
@@ -168,7 +168,7 @@ export class IdentityListComponent implements OnInit {
this.updateIdentities();
},
err => {
- this.errorInfos.push("Failed deleting identity ``" + identity.name +
"''");
+
this.errorInfos.push(this.getMessage("identity_list_ts@errorDeletingId",
identity.name));
console.log(err);
});
}
@@ -479,4 +479,15 @@ export class IdentityListComponent implements OnInit {
isSharingInfoOpened(identity): boolean {
return this.showSharingInfo == identity;
}
+
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
}
diff --git a/src/app/new-identity/new-identity.component.html
b/src/app/new-identity/new-identity.component.html
index 83a8805..9922eaa 100644
--- a/src/app/new-identity/new-identity.component.html
+++ b/src/app/new-identity/new-identity.component.html
@@ -3,30 +3,30 @@
<div class="m-2 card" style="text-align:center; width:100%; max-width:
50em;">
<div class="card-avatar card-img-top">
<div class="card-avatar-character text-dark">
- New identity
+ {{getMessage("new_identity_html@newId")}}
</div>
</div>
<!-- Invalid input -->
<div *ngIf="'' !== newIdentity.name && !canSave() && !isDuplicate()"
class="alert alert-danger alert-dismissible fade show" role="alert">
- Only Alphanumeric input. No spaces or special characters allowed.
+ {{getMessage("new_identity_html@inputSpecification")}}
</div>
<!--Identity already exists -->
<div *ngIf="isDuplicate()" class="alert alert-warning alert-dismissible
fade show" role="alert">
- An identity with this username already exists.
+ {{getMessage("new_identity_html@usernameDuplicate")}}
</div>
<!-- Input text -->
<div *ngIf="'' === newIdentity.name || canSave()" class="alert
alert-secondary alert-dismissible fade show" role="alert">
- Enter a username for your new identity
+ {{getMessage("new_identity_html@enterUsername")}}
</div>
<div class="card-body">
<input [class.text-danger]="'' !== newIdentity.name && !canSave()"
style="text-align: center; border: 1px solid #111;"
(keyup.enter)="saveIdentity()" pattern="^[a-zA-Z0-9-]+" placeholder="Username"
title="Only Alphanumeric input. No spaces or special characters allowed."
class="mr-2" [(ngModel)]="newIdentity.name" autofocus>
<br/>
<br/>
<button [disabled]="!canSave()" [style.inactive]="!canSave()" class="-1
btn btn-primary" (click)="saveIdentity()">
- <span class="fa fa-save"></span> Save
+ <span class="fa fa-save"></span> {{getMessage("Save")}}
</button>
<button class="m-1 btn btn-danger" (click)="cancelAddIdentity()">
- <span class="fa fa-close"></span> Cancel
+ <span class="fa fa-close"></span> {{getMessage("Cancel")}}
</button>
</div>
</div>
diff --git a/src/app/new-identity/new-identity.component.ts
b/src/app/new-identity/new-identity.component.ts
index bf1a87e..6c26f7b 100644
--- a/src/app/new-identity/new-identity.component.ts
+++ b/src/app/new-identity/new-identity.component.ts
@@ -80,4 +80,15 @@ export class NewIdentityComponent implements OnInit {
});
}
+ //Internationalization
+ getMessage(key, sub?){
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
+ }
+
}
diff --git a/src/polyfills.ts b/src/polyfills.ts
index 5b598b8..eeae731 100644
--- a/src/polyfills.ts
+++ b/src/polyfills.ts
@@ -1,3 +1,7 @@
+/***************************************************************************************************
+ * Load `$localize` onto the global scope - used if i18n tags appear in
Angular templates.
+ */
+import '@angular/localize/init';
diff --git a/yarn.lock b/yarn.lock
index bc876e8..aae8453 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -215,6 +215,15 @@
resolved
"https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.12.tgz#c61392c0615654810cf99ee7ff46335bd0f2660b"
integrity
sha512-0qfIAn5fP5lD+JW6il5HBHGS89rv+idRv5aooDkHqBhuBo4V2VuB1wNy5eP49GZbHKMW1xPAzv1MqeMdk+zwQA==
+"@angular/localize@^10.1.3":
+ version "10.1.3"
+ resolved
"https://registry.yarnpkg.com/@angular/localize/-/localize-10.1.3.tgz#791bf79f8d14872c87f88be6bce4de718cded1e9"
+ integrity
sha512-OJTCUTd7qF3JoqCM7+lNTNUErzHpm5TvGObFthXvP2V+u1ipsFeqTffzqEv7SrZ5+PkabRUditUrPOVAkFIlyw==
+ dependencies:
+ "@babel/core" "7.8.3"
+ glob "7.1.2"
+ yargs "15.3.0"
+
"@angular/platform-browser-dynamic@^10.0":
version "10.0.3"
resolved
"https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.3.tgz#bbfd231c10d50a1a834ce48bec425ba889e1a783"
@@ -252,6 +261,27 @@
invariant "^2.2.4"
semver "^5.5.0"
+"@babel/core@7.8.3":
+ version "7.8.3"
+ resolved
"https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941"
+ integrity
sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==
+ dependencies:
+ "@babel/code-frame" "^7.8.3"
+ "@babel/generator" "^7.8.3"
+ "@babel/helpers" "^7.8.3"
+ "@babel/parser" "^7.8.3"
+ "@babel/template" "^7.8.3"
+ "@babel/traverse" "^7.8.3"
+ "@babel/types" "^7.8.3"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.1"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
"@babel/core@7.9.6":
version "7.9.6"
resolved
"https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376"
@@ -316,6 +346,15 @@
lodash "^4.17.13"
source-map "^0.5.0"
+"@babel/generator@^7.11.5", "@babel/generator@^7.8.3":
+ version "7.11.6"
+ resolved
"https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620"
+ integrity
sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==
+ dependencies:
+ "@babel/types" "^7.11.5"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
"@babel/helper-annotate-as-pure@^7.10.4":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
@@ -473,6 +512,13 @@
dependencies:
"@babel/types" "^7.10.4"
+"@babel/helper-split-export-declaration@^7.11.0":
+ version "7.11.0"
+ resolved
"https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f"
+ integrity
sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==
+ dependencies:
+ "@babel/types" "^7.11.0"
+
"@babel/helper-validator-identifier@^7.10.4":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
@@ -488,7 +534,7 @@
"@babel/traverse" "^7.10.4"
"@babel/types" "^7.10.4"
-"@babel/helpers@^7.10.4", "@babel/helpers@^7.9.6":
+"@babel/helpers@^7.10.4", "@babel/helpers@^7.8.3", "@babel/helpers@^7.9.6":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044"
integrity
sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==
@@ -511,6 +557,11 @@
resolved
"https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64"
integrity
sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==
+"@babel/parser@^7.11.5", "@babel/parser@^7.8.3":
+ version "7.11.5"
+ resolved
"https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037"
+ integrity
sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==
+
"@babel/plugin-proposal-async-generator-functions@^7.8.3":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6"
@@ -1002,7 +1053,7 @@
"@babel/parser" "^7.8.6"
"@babel/types" "^7.8.6"
-"@babel/template@^7.10.4", "@babel/template@^7.8.6":
+"@babel/template@^7.10.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
integrity
sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
@@ -1026,6 +1077,21 @@
globals "^11.1.0"
lodash "^4.17.13"
+"@babel/traverse@^7.8.3":
+ version "7.11.5"
+ resolved
"https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3"
+ integrity
sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.11.5"
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/helper-split-export-declaration" "^7.11.0"
+ "@babel/parser" "^7.11.5"
+ "@babel/types" "^7.11.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
"@babel/types@^7.10.4", "@babel/types@^7.4.4", "@babel/types@^7.8.6",
"@babel/types@^7.9.6":
version "7.10.4"
resolved
"https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee"
@@ -1035,6 +1101,15 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
+"@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.8.3":
+ version "7.11.5"
+ resolved
"https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d"
+ integrity
sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
"@istanbuljs/schema@^0.1.2":
version "0.1.2"
resolved
"https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
@@ -1112,11 +1187,31 @@
semver "7.3.2"
semver-intersect "1.4.0"
+"@types/chrome@^0.0.124":
+ version "0.0.124"
+ resolved
"https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.124.tgz#1cdb8e1c1ddb04b15844f5a71b9907f73bbb84a2"
+ integrity
sha512-0UmDQ6A9gaahvztKryIonSTyUMEhuhKNyyJAnBB7ZJN/YXP7YRkL4onPFSTxnIbXcMnYsQFo8TxsGP8jY2mdEw==
+ dependencies:
+ "@types/filesystem" "*"
+ "@types/har-format" "*"
+
"@types/color-name@^1.1.1":
version "1.1.1"
resolved
"https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity
sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+"@types/filesystem@*":
+ version "0.0.29"
+ resolved
"https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.29.tgz#ee3748eb5be140dcf980c3bd35f11aec5f7a3748"
+ integrity
sha512-85/1KfRedmfPGsbK8YzeaQUyV1FQAvMPMTuWFQ5EkLd2w7szhNO96bk3Rh/SKmOfd9co2rCLf0Voy4o7ECBOvw==
+ dependencies:
+ "@types/filewriter" "*"
+
+"@types/filewriter@*":
+ version "0.0.28"
+ resolved
"https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3"
+ integrity sha1-wFTor02d11205jq8dviFFocU1LM=
+
"@types/glob@^7.1.1":
version "7.1.3"
resolved
"https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
@@ -1125,6 +1220,11 @@
"@types/minimatch" "*"
"@types/node" "*"
+"@types/har-format@*":
+ version "1.2.4"
+ resolved
"https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.4.tgz#3275842095abb60d14b47fa798cc9ff708dab6d4"
+ integrity
sha512-iUxzm1meBm3stxUMzRqgOVHjj4Kgpgu5w9fm4X7kPRfSgVRzythsucEN7/jtOo8SQzm+HfcxWWzJS0mJDH/3DQ==
+
"@types/json-schema@^7.0.4":
version "7.0.5"
resolved
"https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
@@ -3876,6 +3976,18 @@ glob-parent@^5.0.0, glob-parent@^5.1.0,
glob-parent@^5.1.1, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
+glob@7.1.2:
+ version "7.1.2"
+ resolved
"https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ integrity
sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@7.1.6, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4:
version "7.1.6"
resolved
"https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
@@ -4779,7 +4891,7 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
-json5@^2.1.2:
+json5@^2.1.0, json5@^2.1.2:
version "2.1.3"
resolved
"https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
integrity
sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
@@ -4971,6 +5083,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14,
lodash@^4.17.15:
resolved
"https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
integrity
sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+lodash@^4.17.19:
+ version "4.17.20"
+ resolved
"https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity
sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
log-symbols@^3.0.0:
version "3.0.0"
resolved
"https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [reclaim-ui] 338/459: update en, (continued)
- [reclaim-ui] 338/459: update en, gnunet, 2021/06/11
- [reclaim-ui] 366/459: fix, gnunet, 2021/06/11
- [reclaim-ui] 333/459: Added translation using Weblate (German), gnunet, 2021/06/11
- [reclaim-ui] 305/459: renamed attestations to credentials, gnunet, 2021/06/11
- [reclaim-ui] 365/459: preserve history on authz redirect, gnunet, 2021/06/11
- [reclaim-ui] 344/459: translate claims and scopedescription, gnunet, 2021/06/11
- [reclaim-ui] 348/459: fix, gnunet, 2021/06/11
- [reclaim-ui] 374/459: logout before login, gnunet, 2021/06/11
- [reclaim-ui] 367/459: towards better attribute import, gnunet, 2021/06/11
- [reclaim-ui] 351/459: make parser happy, gnunet, 2021/06/11
- [reclaim-ui] 321/459: I18n,
gnunet <=
- [reclaim-ui] 354/459: redirect at api request, gnunet, 2021/06/11
- [reclaim-ui] 350/459: do not escape, gnunet, 2021/06/11
- [reclaim-ui] 377/459: ignore some profile claims, gnunet, 2021/06/11
- [reclaim-ui] 384/459: move info for import, gnunet, 2021/06/11
- [reclaim-ui] 385/459: fix bugs with requested attributes, gnunet, 2021/06/11
- [reclaim-ui] 355/459: fix, gnunet, 2021/06/11
- [reclaim-ui] 375/459: blacklist some claims, gnunet, 2021/06/11
- [reclaim-ui] 378/459: update, gnunet, 2021/06/11
- [reclaim-ui] 379/459: minor, gnunet, 2021/06/11
- [reclaim-ui] 356/459: Merge branch 'master' of gitlab.com:reclaimid/ui, gnunet, 2021/06/11