Eliminate duplicate locales (#1176)

pull/1179/head
Thomas Kaul 2 years ago committed by GitHub
parent 2e6a7d5a91
commit 11136ae4f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -43,8 +43,8 @@
<ion-icon name="ellipsis-vertical"></ion-icon> <ion-icon name="ellipsis-vertical"></ion-icon>
</button> </button>
<mat-menu #transactionMenu="matMenu" xPosition="before"> <mat-menu #transactionMenu="matMenu" xPosition="before">
<button i18n mat-menu-item (click)="onDeleteAccess(element.id)"> <button mat-menu-item (click)="onDeleteAccess(element.id)">
Revoke <ng-container i18n>Revoke</ng-container>
</button> </button>
</mat-menu> </mat-menu>
</td> </td>

@ -19,13 +19,8 @@
</ng-container> </ng-container>
<ng-container matColumnDef="currency"> <ng-container matColumnDef="currency">
<th <th *matHeaderCellDef class="d-none d-lg-table-cell px-1" mat-header-cell>
*matHeaderCellDef <ng-container i18n>Currency</ng-container>
class="d-none d-lg-table-cell px-1"
i18n
mat-header-cell
>
Currency
</th> </th>
<td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell> <td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell>
{{ element.currency }} {{ element.currency }}
@ -36,13 +31,8 @@
</ng-container> </ng-container>
<ng-container matColumnDef="platform"> <ng-container matColumnDef="platform">
<th <th *matHeaderCellDef class="d-none d-lg-table-cell px-1" mat-header-cell>
*matHeaderCellDef <ng-container i18n>Platform</ng-container>
class="d-none d-lg-table-cell px-1"
i18n
mat-header-cell
>
Platform
</th> </th>
<td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell> <td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell>
<div class="d-flex"> <div class="d-flex">
@ -81,10 +71,9 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell px-1 text-right" class="d-none d-lg-table-cell px-1 text-right"
i18n
mat-header-cell mat-header-cell
> >
Cash Balance <ng-container i18n>Cash Balance</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -116,10 +105,9 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell px-1 text-right" class="d-none d-lg-table-cell px-1 text-right"
i18n
mat-header-cell mat-header-cell
> >
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -151,10 +139,9 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-lg-none d-xl-none px-1 text-right" class="d-lg-none d-xl-none px-1 text-right"
i18n
mat-header-cell mat-header-cell
> >
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"

@ -105,19 +105,18 @@
<ion-icon name="ellipsis-vertical"></ion-icon> <ion-icon name="ellipsis-vertical"></ion-icon>
</button> </button>
<mat-menu #accountMenu="matMenu" xPosition="before"> <mat-menu #accountMenu="matMenu" xPosition="before">
<button i18n mat-menu-item (click)="onViewData(job.data)"> <button mat-menu-item (click)="onViewData(job.data)">
View Data <ng-container i18n>View Data</ng-container>
</button> </button>
<button <button
i18n
mat-menu-item mat-menu-item
[disabled]="job.stacktrace?.length <= 0" [disabled]="job.stacktrace?.length <= 0"
(click)="onViewStacktrace(job.stacktrace)" (click)="onViewStacktrace(job.stacktrace)"
> >
View Stacktrace <ng-container i18n>View Stacktrace</ng-container>
</button> </button>
<button i18n mat-menu-item (click)="onDeleteJob(job.id)"> <button mat-menu-item (click)="onDeleteJob(job.id)">
Delete Job <ng-container i18n>Delete Job</ng-container>
</button> </button>
</mat-menu> </mat-menu>
</td> </td>

@ -43,8 +43,8 @@
</div> </div>
<div class="justify-content-end" mat-dialog-actions> <div class="justify-content-end" mat-dialog-actions>
<button i18n mat-button (click)="onCancel()">Cancel</button> <button i18n mat-button (click)="onCancel()">Cancel</button>
<button color="primary" i18n mat-flat-button (click)="onUpdate()"> <button color="primary" mat-flat-button (click)="onUpdate()">
Save <ng-container i18n>Save</ng-container>
</button> </button>
</div> </div>
</form> </form>

@ -36,26 +36,23 @@
</button> </button>
<mat-menu #accountMenu="matMenu" xPosition="before"> <mat-menu #accountMenu="matMenu" xPosition="before">
<button <button
i18n
mat-menu-item mat-menu-item
(click)="onGatherSymbol({dataSource: item.dataSource, symbol: item.symbol})" (click)="onGatherSymbol({dataSource: item.dataSource, symbol: item.symbol})"
> >
Gather Data <ng-container i18n>Gather Data</ng-container>
</button> </button>
<button <button
i18n
mat-menu-item mat-menu-item
(click)="onGatherProfileDataBySymbol({dataSource: item.dataSource, symbol: item.symbol})" (click)="onGatherProfileDataBySymbol({dataSource: item.dataSource, symbol: item.symbol})"
> >
Gather Profile Data <ng-container i18n>Gather Profile Data</ng-container>
</button> </button>
<button <button
i18n
mat-menu-item mat-menu-item
[disabled]="item.activityCount !== 0" [disabled]="item.activityCount !== 0"
(click)="onDeleteProfileData({dataSource: item.dataSource, symbol: item.symbol})" (click)="onDeleteProfileData({dataSource: item.dataSource, symbol: item.symbol})"
> >
Delete Profile Data <ng-container i18n>Delete Profile Data</ng-container>
</button> </button>
</mat-menu> </mat-menu>
</td> </td>

@ -7,17 +7,17 @@
<tr class="mat-header-row"> <tr class="mat-header-row">
<th class="mat-header-cell px-1 py-2 text-right">#</th> <th class="mat-header-cell px-1 py-2 text-right">#</th>
<th class="mat-header-cell px-1 py-2" i18n>User</th> <th class="mat-header-cell px-1 py-2" i18n>User</th>
<th class="mat-header-cell px-1 py-2 text-right" i18n> <th class="mat-header-cell px-1 py-2 text-right">
Registration <ng-container i18n>Registration</ng-container>
</th> </th>
<th class="mat-header-cell px-1 py-2 text-right" i18n> <th class="mat-header-cell px-1 py-2 text-right">
Accounts <ng-container i18n>Accounts</ng-container>
</th> </th>
<th class="mat-header-cell px-1 py-2 text-right" i18n> <th class="mat-header-cell px-1 py-2 text-right">
Activities <ng-container i18n>Activities</ng-container>
</th> </th>
<th class="mat-header-cell px-1 py-2 text-right" i18n> <th class="mat-header-cell px-1 py-2 text-right">
Engagement per Day <ng-container i18n>Engagement per Day</ng-container>
</th> </th>
<th class="mat-header-cell px-1 py-2" i18n>Last Request</th> <th class="mat-header-cell px-1 py-2" i18n>Last Request</th>
<th class="mat-header-cell px-1 py-2"></th> <th class="mat-header-cell px-1 py-2"></th>

@ -285,17 +285,16 @@
mat-flat-button mat-flat-button
><ion-icon name="logo-github"></ion-icon ><ion-icon name="logo-github"></ion-icon
></a> ></a>
<button class="mx-1" i18n mat-flat-button (click)="openLoginDialog()"> <button class="mx-1" mat-flat-button (click)="openLoginDialog()">
Sign In <ng-container i18n>Sign In</ng-container>
</button> </button>
<a <a
*ngIf="currentRoute !== 'register' && !info?.isReadOnlyMode" *ngIf="currentRoute !== 'register' && !info?.isReadOnlyMode"
class="d-none d-sm-block" class="d-none d-sm-block"
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[routerLink]="['/register']" [routerLink]="['/register']"
>Get Started ><ng-container i18n>Get Started</ng-container>
</a> </a>
</ng-container> </ng-container>
</mat-toolbar> </mat-toolbar>

@ -49,12 +49,11 @@
<div> <div>
<button <button
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[disabled]="!data.accessToken" [disabled]="!data.accessToken"
[mat-dialog-close]="data" [mat-dialog-close]="data"
> >
Sign in <ng-container i18n>Sign in</ng-container>
</button> </button>
</div> </div>
</div> </div>

@ -18,8 +18,8 @@
</ng-container> </ng-container>
<ng-container matColumnDef="symbol"> <ng-container matColumnDef="symbol">
<th *matHeaderCellDef class="px-1" i18n mat-header-cell mat-sort-header> <th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
Symbol <ng-container i18n>Symbol</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
<span [title]="element.name">{{ element.symbol | gfSymbol }}</span> <span [title]="element.name">{{ element.symbol | gfSymbol }}</span>
@ -30,11 +30,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell px-1" class="d-none d-lg-table-cell px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Name <ng-container i18n>Name</ng-container>
</th> </th>
<td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell> <td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell>
<ng-container *ngIf="element.name !== element.symbol">{{ <ng-container *ngIf="element.name !== element.symbol">{{
@ -47,11 +46,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td class="d-none d-lg-table-cell px-1" mat-cell *matCellDef="let element"> <td class="d-none d-lg-table-cell px-1" mat-cell *matCellDef="let element">
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
@ -68,11 +66,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="justify-content-end px-1" class="justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Allocation <ng-container i18n>Allocation</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
@ -89,10 +86,9 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell px-1 text-right" class="d-none d-lg-table-cell px-1 text-right"
i18n
mat-header-cell mat-header-cell
> >
Performance <ng-container i18n>Performance</ng-container>
</th> </th>
<td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell> <td *matCellDef="let element" class="d-none d-lg-table-cell px-1" mat-cell>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
@ -137,8 +133,8 @@
*ngIf="dataSource.data.length > pageSize && !isLoading" *ngIf="dataSource.data.length > pageSize && !isLoading"
class="my-3 text-center" class="my-3 text-center"
> >
<button i18n mat-stroked-button (click)="onShowAllPositions()"> <button mat-stroked-button (click)="onShowAllPositions()">
Show all <ng-container i18n>Show all</ng-container>
</button> </button>
</div> </div>

@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="mb-5 row"> <div class="mb-5 row">
<div class="col"> <div class="col">
<h3 class="d-flex justify-content-center mb-3" i18n>About Ghostfolio</h3> <h3 class="d-flex justify-content-center mb-3">About Ghostfolio</h3>
<div class="about-container"> <div class="about-container">
<p> <p>
Ghostfolio is a lightweight wealth management application for Ghostfolio is a lightweight wealth management application for
@ -21,7 +21,7 @@
<ng-container *ngIf="version"> <ng-container *ngIf="version">
This instance is running Ghostfolio {{ version }}. This instance is running Ghostfolio {{ version }}.
</ng-container> </ng-container>
<ng-container *ngIf="hasPermissionForStatistics" i18n <ng-container *ngIf="hasPermissionForStatistics"
>Check the system status at >Check the system status at
<a href="https://status.ghostfol.io" title="Ghostfolio status" <a href="https://status.ghostfol.io" title="Ghostfolio status"
>status.ghostfol.io</a >status.ghostfol.io</a
@ -102,7 +102,7 @@
<div *ngIf="hasPermissionForStatistics" class="mb-5 row"> <div *ngIf="hasPermissionForStatistics" class="mb-5 row">
<div class="col"> <div class="col">
<h3 class="mb-3 text-center" i18n>Ghostfolio in Numbers</h3> <h3 class="mb-3 text-center">Ghostfolio in Numbers</h3>
<mat-card> <mat-card>
<mat-card-content> <mat-card-content>
<div class="row"> <div class="row">
@ -177,7 +177,6 @@
<a <a
class="py-2 w-100" class="py-2 w-100"
color="primary" color="primary"
i18n
mat-stroked-button mat-stroked-button
[routerLink]="['/faq']" [routerLink]="['/faq']"
>FAQ</a >FAQ</a
@ -190,7 +189,6 @@
<a <a
class="py-2 w-100" class="py-2 w-100"
color="primary" color="primary"
i18n
mat-stroked-button mat-stroked-button
[routerLink]="['/about', 'changelog']" [routerLink]="['/about', 'changelog']"
>Changelog & License</a >Changelog & License</a
@ -200,7 +198,6 @@
<a <a
class="py-2 w-100" class="py-2 w-100"
color="primary" color="primary"
i18n
mat-stroked-button mat-stroked-button
[routerLink]="['/about', 'privacy-policy']" [routerLink]="['/about', 'privacy-policy']"
>Privacy Policy</a >Privacy Policy</a
@ -210,7 +207,6 @@
<a <a
class="py-2 w-100" class="py-2 w-100"
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[routerLink]="['/blog']" [routerLink]="['/blog']"
>Blog</a >Blog</a

@ -31,11 +31,10 @@
<ng-container *ngIf="hasPermissionForSubscription"> <ng-container *ngIf="hasPermissionForSubscription">
<button <button
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
(click)="onCheckout(priceId)" (click)="onCheckout(priceId)"
> >
Upgrade <ng-container i18n>Upgrade</ng-container>
</button> </button>
<div *ngIf="price" class="mt-1"> <div *ngIf="price" class="mt-1">
<ng-container *ngIf="coupon" <ng-container *ngIf="coupon"
@ -91,8 +90,8 @@
<div class="d-flex mt-4 py-1"> <div class="d-flex mt-4 py-1">
<form #changeUserSettingsForm="ngForm" class="w-100"> <form #changeUserSettingsForm="ngForm" class="w-100">
<div class="d-flex mb-2"> <div class="d-flex mb-2">
<div class="align-items-center d-flex pt-1 pt-1 w-50" i18n> <div class="align-items-center d-flex pt-1 pt-1 w-50">
Base Currency <ng-container i18n>Base Currency</ng-container>
</div> </div>
<div class="pl-1 w-50"> <div class="pl-1 w-50">
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
@ -132,8 +131,8 @@
<div class="align-items-center d-flex mb-2"> <div class="align-items-center d-flex mb-2">
<div class="pr-1 w-50"> <div class="pr-1 w-50">
<div i18n>Locale</div> <div i18n>Locale</div>
<div class="hint-text text-muted" i18n> <div class="hint-text text-muted">
Date and number format <ng-container i18n>Date and number format</ng-container>
</div> </div>
</div> </div>
<div class="pl-1 w-50"> <div class="pl-1 w-50">
@ -155,8 +154,8 @@
</div> </div>
</div> </div>
<div class="d-flex"> <div class="d-flex">
<div class="align-items-center d-flex pr-1 pt-1 w-50" i18n> <div class="align-items-center d-flex pr-1 pt-1 w-50">
View Mode <ng-container i18n>View Mode</ng-container>
</div> </div>
<div class="pl-1 w-50"> <div class="pl-1 w-50">
<div class="align-items-center d-flex overflow-hidden"> <div class="align-items-center d-flex overflow-hidden">

@ -14,12 +14,11 @@
<button i18n mat-button (click)="onCancel()">Cancel</button> <button i18n mat-button (click)="onCancel()">Cancel</button>
<button <button
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[disabled]="!addAccessForm.form.valid" [disabled]="!addAccessForm.form.valid"
[mat-dialog-close]="data" [mat-dialog-close]="data"
> >
Save <ng-container i18n>Save</ng-container>
</button> </button>
</div> </div>
</form> </form>

@ -66,12 +66,11 @@
<button i18n mat-button (click)="onCancel()">Cancel</button> <button i18n mat-button (click)="onCancel()">Cancel</button>
<button <button
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[disabled]="!addAccountForm.form.valid" [disabled]="!addAccountForm.form.valid"
[mat-dialog-close]="data" [mat-dialog-close]="data"
> >
Save <ng-container i18n>Save</ng-container>
</button> </button>
</div> </div>
</form> </form>

@ -1,36 +1,34 @@
<div class="container"> <div class="container">
<div class="mb-5 row"> <div class="mb-5 row">
<div class="col"> <div class="col">
<h3 class="mb-3 text-center" i18n>Frequently Asked Questions (FAQ)</h3> <h3 class="mb-3 text-center">Frequently Asked Questions (FAQ)</h3>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>What is Ghostfolio?</mat-card-title> <mat-card-title>What is Ghostfolio?</mat-card-title>
<mat-card-content i18n> <mat-card-content>
Ghostfolio is a lightweight, open source wealth management application Ghostfolio is a lightweight, open source wealth management application
for individuals to keep track of their net worth. The software for individuals to keep track of their net worth. The software
empowers you to make solid, data-driven investment decisions. empowers you to make solid, data-driven investment decisions.
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n <mat-card-title
>What assets can I track with Ghostfolio?</mat-card-title >What assets can I track with Ghostfolio?</mat-card-title
> >
<mat-card-content i18n> <mat-card-content>
With Ghostfolio, you can keep track of various assets like stocks, With Ghostfolio, you can keep track of various assets like stocks,
ETFs or cryptocurrencies. ETFs or cryptocurrencies.
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n <mat-card-title>What else is included in Ghostfolio?</mat-card-title>
>What else is included in Ghostfolio?</mat-card-title <mat-card-content>
>
<mat-card-content i18n>
Please find a feature overview to manage your wealth Please find a feature overview to manage your wealth
<a [routerLink]="['/features']">here</a>. <a [routerLink]="['/features']">here</a>.
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>How do I start?</mat-card-title> <mat-card-title>How do I start?</mat-card-title>
<mat-card-content i18n> <mat-card-content>
You can sign up via the “<a [routerLink]="['/register']" You can sign up via the “<a [routerLink]="['/register']"
>Get Started</a >Get Started</a
>” button at the top of the page. You have multiple options to join >” button at the top of the page. You have multiple options to join
@ -42,8 +40,8 @@
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>Can I use Ghostfolio anonymously?</mat-card-title> <mat-card-title>Can I use Ghostfolio anonymously?</mat-card-title>
<mat-card-content i18n> <mat-card-content>
Yes, the authentication systems (via security token or Yes, the authentication systems (via security token or
<a href="../en/blog/2022/07/ghostfolio-meets-internet-identity" <a href="../en/blog/2022/07/ghostfolio-meets-internet-identity"
>Internet Identity</a >Internet Identity</a
@ -52,8 +50,8 @@
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>How can Ghostfolio be free?</mat-card-title> <mat-card-title>How can Ghostfolio be free?</mat-card-title>
<mat-card-content i18n <mat-card-content
>This project is driven by the efforts of contributors from around the >This project is driven by the efforts of contributors from around the
world. The world. The
<a href="https://github.com/ghostfolio/ghostfolio">source code</a> is <a href="https://github.com/ghostfolio/ghostfolio">source code</a> is
@ -64,16 +62,16 @@
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>Is it really free?</mat-card-title> <mat-card-title>Is it really free?</mat-card-title>
<mat-card-content i18n <mat-card-content
>Yes, it is! Our >Yes, it is! Our
<a [routerLink]="['/pricing']">pricing page</a> details everything you <a [routerLink]="['/pricing']">pricing page</a> details everything you
get for free.</mat-card-content get for free.</mat-card-content
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>What is Ghostfolio Premium?</mat-card-title> <mat-card-title>What is Ghostfolio Premium?</mat-card-title>
<mat-card-content i18n <mat-card-content
><a [routerLink]="['/pricing']">Ghostfolio Premium</a> is a fully ><a [routerLink]="['/pricing']">Ghostfolio Premium</a> is a fully
managed Ghostfolio cloud offering for ambitious investors. The revenue managed Ghostfolio cloud offering for ambitious investors. The revenue
is used to cover the hosting infrastructure. It is the Open Source is used to cover the hosting infrastructure. It is the Open Source
@ -81,8 +79,8 @@
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>Can I start with a trial version?</mat-card-title> <mat-card-title>Can I start with a trial version?</mat-card-title>
<mat-card-content i18n <mat-card-content
>Yes, you can try >Yes, you can try
<a [routerLink]="['/pricing']">Ghostfolio Premium</a> by signing up <a [routerLink]="['/pricing']">Ghostfolio Premium</a> by signing up
for Ghostfolio and applying for a trial (see “My Ghostfolio”). Its for Ghostfolio and applying for a trial (see “My Ghostfolio”). Its
@ -91,8 +89,8 @@
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>Which devices are supported?</mat-card-title> <mat-card-title>Which devices are supported?</mat-card-title>
<mat-card-content i18n <mat-card-content
>Ghostfolio works in every modern web browser on smartphones, tablets >Ghostfolio works in every modern web browser on smartphones, tablets
and desktop computers (where you have even more analysis options and and desktop computers (where you have even more analysis options and
statistics). For Android users, there is a dedicated Ghostfolio app statistics). For Android users, there is a dedicated Ghostfolio app
@ -104,10 +102,10 @@
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n <mat-card-title
>Ghostfolio sounds cool, how can I get involved?</mat-card-title >Ghostfolio sounds cool, how can I get involved?</mat-card-title
> >
<mat-card-content i18n <mat-card-content
>Any support for Ghostfolio is welcome. Be it with a >Any support for Ghostfolio is welcome. Be it with a
<a [routerLink]="['/pricing']">Ghostfolio Premium</a> subscription to <a [routerLink]="['/pricing']">Ghostfolio Premium</a> subscription to
finance the hosting, a positive rating in the finance the hosting, a positive rating in the
@ -124,8 +122,8 @@
> >
</mat-card> </mat-card>
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-title i18n>Got any other questions?</mat-card-title> <mat-card-title>Got any other questions?</mat-card-title>
<mat-card-content i18n <mat-card-content
>Join the Ghostfolio >Join the Ghostfolio
<a <a
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg"

@ -1,9 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3 class="d-flex justify-content-center mb-3 text-center" i18n> <h3 class="d-flex justify-content-center mb-3 text-center">Features</h3>
Features
</h3>
<div class="mb-4"> <div class="mb-4">
<p> <p>
Check out the numerous features of <strong>Ghostfolio</strong> to Check out the numerous features of <strong>Ghostfolio</strong> to
@ -14,7 +12,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Stocks</h4> <h4>Stocks</h4>
<p class="m-0">Keep track of your stock purchases and sales.</p> <p class="m-0">Keep track of your stock purchases and sales.</p>
</div> </div>
</mat-card> </mat-card>
@ -22,7 +20,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>ETFs</h4> <h4>ETFs</h4>
<p class="m-0"> <p class="m-0">
Are you into ETFs (Exchange Traded Funds)? Track your ETF Are you into ETFs (Exchange Traded Funds)? Track your ETF
investments. investments.
@ -33,7 +31,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Bonds</h4> <h4>Bonds</h4>
<p class="m-0"> <p class="m-0">
Manage your investment in bonds and other assets with fixed Manage your investment in bonds and other assets with fixed
income. income.
@ -44,7 +42,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Cryptocurrencies</h4> <h4>Cryptocurrencies</h4>
<p class="m-0"> <p class="m-0">
Keep track of your Bitcoin and Altcoin holdings. Keep track of your Bitcoin and Altcoin holdings.
</p> </p>
@ -54,7 +52,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Dividend</h4> <h4>Dividend</h4>
<p class="m-0"> <p class="m-0">
Are you building a dividend portfolio? Track your dividend in Are you building a dividend portfolio? Track your dividend in
Ghostfolio. Ghostfolio.
@ -65,7 +63,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Wealth Items</h4> <h4 class="align-items-center d-flex">Wealth Items</h4>
<p class="m-0"> <p class="m-0">
Track all your treasuries, be it your luxury watch or rare Track all your treasuries, be it your luxury watch or rare
trading cards. trading cards.
@ -76,7 +74,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Emergency Fund</h4> <h4 class="align-items-center d-flex">Emergency Fund</h4>
<p class="m-0"> <p class="m-0">
Define your emergency fund you are comfortable with for Define your emergency fund you are comfortable with for
difficult times. difficult times.
@ -87,7 +85,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Import and Export</h4> <h4 class="align-items-center d-flex">Import and Export</h4>
<p class="m-0">Import and export your investment activities.</p> <p class="m-0">Import and export your investment activities.</p>
</div> </div>
</mat-card> </mat-card>
@ -95,7 +93,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Multi-Accounts</h4> <h4>Multi-Accounts</h4>
<p class="m-0"> <p class="m-0">
Keep an eye on all your accounts across multiple platforms Keep an eye on all your accounts across multiple platforms
(multi-banking). (multi-banking).
@ -107,7 +105,7 @@
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex"> <h4 class="align-items-center d-flex">
<span i18n>Portfolio Calculations</span> <span>Portfolio Calculations</span>
<gf-premium-indicator <gf-premium-indicator
*ngIf="hasPermissionForSubscription" *ngIf="hasPermissionForSubscription"
class="ml-1" class="ml-1"
@ -125,7 +123,7 @@
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex"> <h4 class="align-items-center d-flex">
<span i18n>Portfolio Allocations</span> <span>Portfolio Allocations</span>
<gf-premium-indicator <gf-premium-indicator
*ngIf="hasPermissionForSubscription" *ngIf="hasPermissionForSubscription"
class="ml-1" class="ml-1"
@ -141,7 +139,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Dark Mode</h4> <h4 class="align-items-center d-flex">Dark Mode</h4>
<p class="m-0"> <p class="m-0">
Ghostfolio automatically switches to a dark color theme based on Ghostfolio automatically switches to a dark color theme based on
your operating system's preferences. your operating system's preferences.
@ -152,7 +150,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Zen Mode</h4> <h4 class="align-items-center d-flex">Zen Mode</h4>
<p class="m-0"> <p class="m-0">
Keep calm and activate Zen Mode if the markets are going crazy. Keep calm and activate Zen Mode if the markets are going crazy.
</p> </p>
@ -166,7 +164,7 @@
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex"> <h4 class="align-items-center d-flex">
<span i18n>Market Mood</span> <span>Market Mood</span>
<gf-premium-indicator class="ml-1"></gf-premium-indicator> <gf-premium-indicator class="ml-1"></gf-premium-indicator>
</h4> </h4>
<p class="m-0"> <p class="m-0">
@ -181,7 +179,7 @@
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex"> <h4 class="align-items-center d-flex">
<span i18n>Static Analysis</span> <span>Static Analysis</span>
<gf-premium-indicator <gf-premium-indicator
*ngIf="hasPermissionForSubscription" *ngIf="hasPermissionForSubscription"
class="ml-1" class="ml-1"
@ -197,7 +195,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Community</h4> <h4>Community</h4>
<p class="m-0"> <p class="m-0">
Join the Ghostfolio Join the Ghostfolio
<a <a
@ -214,7 +212,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Open Source Software</h4> <h4>Open Source Software</h4>
<p class="m-0"> <p class="m-0">
The source code is fully available as The source code is fully available as
<a <a
@ -232,7 +230,7 @@
</div> </div>
<div *ngIf="!user" class="row"> <div *ngIf="!user" class="row">
<div class="col mt-3 text-center"> <div class="col mt-3 text-center">
<a color="primary" i18n mat-flat-button [routerLink]="['/register']"> <a color="primary" mat-flat-button [routerLink]="['/register']">
Get Started Get Started
</a> </a>
</div> </div>

@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col text-center"> <div class="col text-center">
<h1 class="font-weight-bold intro my-5" i18n> <h1 class="font-weight-bold intro my-5">
Manage your wealth like a boss Manage your wealth like a boss
</h1> </h1>
<div> <div>
@ -29,19 +29,13 @@
<a <a
class="d-inline-block" class="d-inline-block"
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[routerLink]="['/register']" [routerLink]="['/register']"
> >
Get Started Get Started
</a> </a>
<div class="d-inline-block mx-3 text-muted" i18n>or</div> <div class="d-inline-block mx-3 text-muted">or</div>
<a <a class="d-inline-block" mat-stroked-button [routerLink]="['/demo']">
class="d-inline-block"
i18n
mat-stroked-button
[routerLink]="['/demo']"
>
Live Demo Live Demo
</a> </a>
</div> </div>
@ -107,7 +101,7 @@
</li> </li>
</ul> </ul>
<div class="mt-4 text-center"> <div class="mt-4 text-center">
<a [routerLink]="['/about']" i18n mat-stroked-button <a [routerLink]="['/about']" mat-stroked-button
>Learn more about Ghostfolio</a >Learn more about Ghostfolio</a
> >
</div> </div>
@ -162,16 +156,11 @@
Join now or check out the example account Join now or check out the example account
</p> </p>
<div class="py-2 text-center"> <div class="py-2 text-center">
<a color="primary" i18n mat-flat-button [routerLink]="['/register']"> <a color="primary" mat-flat-button [routerLink]="['/register']">
Get Started Get Started
</a> </a>
<div class="d-inline-block mx-3 text-muted" i18n>or</div> <div class="d-inline-block mx-3 text-muted">or</div>
<a <a class="d-inline-block" mat-stroked-button [routerLink]="['/demo']">
class="d-inline-block"
i18n
mat-stroked-button
[routerLink]="['/demo']"
>
Live Demo Live Demo
</a> </a>
</div> </div>

@ -94,8 +94,8 @@
<div class="col-md-12 allocations-by-symbol"> <div class="col-md-12 allocations-by-symbol">
<mat-card class="mb-3"> <mat-card class="mb-3">
<mat-card-header class="overflow-hidden w-100"> <mat-card-header class="overflow-hidden w-100">
<mat-card-title class="align-items-center d-flex text-truncate" i18n> <mat-card-title class="align-items-center d-flex text-truncate">
By Holding</mat-card-title <ng-container i18n>By Holding</ng-container></mat-card-title
> >
<gf-toggle <gf-toggle
[defaultValue]="period" [defaultValue]="period"

@ -1,10 +1,10 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3 class="align-items-center d-flex justify-content-center mb-3" i18n> <h3 class="align-items-center d-flex justify-content-center mb-3">
X-ray X-ray
</h3> </h3>
<p class="mb-4" i18n> <p class="mb-4">
Ghostfolio X-ray uses static analysis to identify potential issues and Ghostfolio X-ray uses static analysis to identify potential issues and
risks in your portfolio. risks in your portfolio.
<span class="d-none" <span class="d-none"
@ -14,21 +14,21 @@
> >
</p> </p>
<div class="mb-4"> <div class="mb-4">
<h4 class="m-0" i18n>Currency Cluster Risks</h4> <h4 class="m-0">Currency Cluster Risks</h4>
<gf-rules <gf-rules
[hasPermissionToCreateOrder]="hasPermissionToCreateOrder" [hasPermissionToCreateOrder]="hasPermissionToCreateOrder"
[rules]="currencyClusterRiskRules" [rules]="currencyClusterRiskRules"
></gf-rules> ></gf-rules>
</div> </div>
<div class="mb-4"> <div class="mb-4">
<h4 class="m-0" i18n>Account Cluster Risks</h4> <h4 class="m-0">Account Cluster Risks</h4>
<gf-rules <gf-rules
[hasPermissionToCreateOrder]="hasPermissionToCreateOrder" [hasPermissionToCreateOrder]="hasPermissionToCreateOrder"
[rules]="accountClusterRiskRules" [rules]="accountClusterRiskRules"
></gf-rules> ></gf-rules>
</div> </div>
<div> <div>
<h4 class="m-0" i18n>Fees</h4> <h4 class="m-0">Fees</h4>
<gf-rules <gf-rules
[hasPermissionToCreateOrder]="hasPermissionToCreateOrder" [hasPermissionToCreateOrder]="hasPermissionToCreateOrder"
[rules]="feeRules" [rules]="feeRules"

@ -201,12 +201,11 @@
<button i18n mat-button type="button" (click)="onCancel()">Cancel</button> <button i18n mat-button type="button" (click)="onCancel()">Cancel</button>
<button <button
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
type="submit" type="submit"
[disabled]="!activityForm.valid" [disabled]="!activityForm.valid"
> >
Save <ng-container i18n>Save</ng-container>
</button> </button>
</div> </div>
</div> </div>

@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3 class="d-flex justify-content-center mb-3 text-center" i18n> <h3 class="d-flex justify-content-center mb-3 text-center">
Pricing Plans Pricing Plans
</h3> </h3>
<div class="mb-4"> <div class="mb-4">
@ -20,7 +20,7 @@
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 i18n>Open Source</h4> <h4>Open Source</h4>
<p> <p>
For tech-savvy investors who prefer to run For tech-savvy investors who prefer to run
<strong>Ghostfolio</strong> on their own infrastructure. <strong>Ghostfolio</strong> on their own infrastructure.
@ -73,7 +73,7 @@
[ngClass]="{ 'active': user?.subscription?.type === 'Basic' }" [ngClass]="{ 'active': user?.subscription?.type === 'Basic' }"
> >
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex" i18n>Basic</h4> <h4 class="align-items-center d-flex">Basic</h4>
<p> <p>
For new investors who are just getting started with trading. For new investors who are just getting started with trading.
</p> </p>
@ -124,7 +124,7 @@
> >
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4 class="align-items-center d-flex"> <h4 class="align-items-center d-flex">
<span i18n>Premium</span> <span>Premium</span>
<gf-premium-indicator <gf-premium-indicator
class="ml-1" class="ml-1"
[enableLink]="false" [enableLink]="false"
@ -186,7 +186,7 @@
>{{ baseCurrency }}&nbsp;<strong >{{ baseCurrency }}&nbsp;<strong
>{{ price }}</strong >{{ price }}</strong
></ng-container ></ng-container
>&nbsp;<span i18n>per year</span></span >&nbsp;<span>per year</span></span
> >
</p> </p>
</mat-card> </mat-card>
@ -196,14 +196,14 @@
</div> </div>
<div *ngIf="user?.subscription?.type === 'Basic'" class="row"> <div *ngIf="user?.subscription?.type === 'Basic'" class="row">
<div class="col mt-3 text-center"> <div class="col mt-3 text-center">
<a color="primary" i18n mat-flat-button [routerLink]="['/account']"> <a color="primary" mat-flat-button [routerLink]="['/account']">
Upgrade Plan Upgrade Plan
</a> </a>
</div> </div>
</div> </div>
<div *ngIf="!user" class="row"> <div *ngIf="!user" class="row">
<div class="col mt-3 text-center"> <div class="col mt-3 text-center">
<a color="primary" i18n mat-flat-button [routerLink]="['/register']"> <a color="primary" mat-flat-button [routerLink]="['/register']">
Get Started Get Started
</a> </a>
<p class="text-muted"><small>It's free</small></p> <p class="text-muted"><small>It's free</small></p>

@ -129,8 +129,8 @@
Ghostfolio empowers you to keep track of your wealth. Ghostfolio empowers you to keep track of your wealth.
</p> </p>
<div class="py-2 text-center"> <div class="py-2 text-center">
<a color="primary" href="https://ghostfol.io" i18n mat-flat-button> <a color="primary" href="https://ghostfol.io" mat-flat-button>
Get Started <ng-container i18n>Get Started</ng-container>
</a> </a>
</div> </div>
</div> </div>

@ -20,12 +20,11 @@
<button <button
class="d-inline-block" class="d-inline-block"
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
[disabled]="!demoAuthToken || info?.isReadOnlyMode" [disabled]="!demoAuthToken || info?.isReadOnlyMode"
(click)="createAccount()" (click)="createAccount()"
> >
Create Account <ng-container i18n>Create Account</ng-container>
</button> </button>
<ng-container *ngIf="hasPermissionForSocialLogin"> <ng-container *ngIf="hasPermissionForSocialLogin">
<div class="my-3 text-muted" i18n>or</div> <div class="my-3 text-muted" i18n>or</div>

@ -14,21 +14,20 @@
*ngIf="hasError" *ngIf="hasError"
class="align-items-center col d-flex flex-column justify-content-center" class="align-items-center col d-flex flex-column justify-content-center"
> >
<h1 class="d-flex h5 justify-content-center mb-0 text-center" i18n> <h1 class="d-flex h5 justify-content-center mb-0 text-center">
Oops, authentication has failed. <ng-container i18n>Oops, authentication has failed.</ng-container>
</h1> </h1>
<button <button
class="mb-3 mt-4" class="mb-3 mt-4"
color="primary" color="primary"
i18n
mat-flat-button mat-flat-button
(click)="signIn()" (click)="signIn()"
> >
Try again <ng-container i18n>Try again</ng-container>
</button> </button>
<div class="text-muted" i18n>or</div> <div class="text-muted"><ng-container i18n>or</ng-container></div>
<button class="mt-1" i18n mat-flat-button (click)="deregisterDevice()"> <button class="mt-1" mat-flat-button (click)="deregisterDevice()">
Go back to Home Page <ng-container i18n>Go back to Home Page</ng-container>
</button> </button>
</div> </div>
</div> </div>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -36,8 +36,8 @@
></td> ></td>
</ng-container> </ng-container>
<ng-container matColumnDef="date"> <ng-container matColumnDef="date">
<th *matHeaderCellDef class="px-1" i18n mat-header-cell mat-sort-header> <th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
Date <ng-container i18n>Date</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
<div class="d-flex"> <div class="d-flex">
@ -48,8 +48,8 @@
</ng-container> </ng-container>
<ng-container matColumnDef="type"> <ng-container matColumnDef="type">
<th *matHeaderCellDef class="px-1" i18n mat-header-cell mat-sort-header> <th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
Type <ng-container i18n>Type</ng-container>
</th> </th>
<td *matCellDef="let element" mat-cell class="px-1"> <td *matCellDef="let element" mat-cell class="px-1">
<div <div
@ -80,8 +80,8 @@
</ng-container> </ng-container>
<ng-container matColumnDef="symbol"> <ng-container matColumnDef="symbol">
<th *matHeaderCellDef class="px-1" i18n mat-header-cell mat-sort-header> <th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
Symbol <ng-container i18n>Symbol</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
@ -103,11 +103,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell px-1" class="d-none d-lg-table-cell px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Currency <ng-container i18n>Currency</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -125,11 +124,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Quantity <ng-container i18n>Quantity</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -155,11 +153,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Unit Price <ng-container i18n>Unit Price</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -185,11 +182,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Fee <ng-container i18n>Fee</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -219,11 +215,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td <td
*matCellDef="let element" *matCellDef="let element"
@ -255,11 +250,10 @@
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-lg-none d-xl-none justify-content-end px-1" class="d-lg-none d-xl-none justify-content-end px-1"
i18n
mat-header-cell mat-header-cell
mat-sort-header mat-sort-header
> >
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td *matCellDef="let element" class="d-lg-none d-xl-none px-1" mat-cell> <td *matCellDef="let element" class="d-lg-none d-xl-none px-1" mat-cell>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">

Loading…
Cancel
Save