Made more translations (#122)

* Add some translations

* Fix issue with translation not being persisted

* Made more translations

---------

Co-authored-by: SondreB <sondre@outlook.com>
This commit is contained in:
Lu 2023-04-23 14:02:05 +03:00 committed by GitHub
parent 9978c41624
commit be32df1b2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 354 additions and 99 deletions

View File

@ -188,6 +188,7 @@ export class AppComponent {
console.log('INITIALIZE IS RUNNING....');
// this.translate.addLangs(['ar', 'el', 'en', 'fa', 'fr', 'he', 'no', 'ru']);
// availible language translations
this.translate.addLangs(['en', 'no', 'ru']);
this.translate.setDefaultLang('en');

View File

@ -3,12 +3,12 @@
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>Options</mat-panel-title>
<mat-panel-title>{{ 'Notifications.Options' | translate}} </mat-panel-title>
<mat-panel-description></mat-panel-description>
</mat-expansion-panel-header>
<p class="people-actions">
<button mat-stroked-button (click)="clearNotifications()">Reset Notifications</button>
<button mat-stroked-button (click)="clearNotifications()">{{'Notifications.ResetNotifications' | translate}} </button>
</p>
</mat-expansion-panel>
</mat-accordion>
@ -26,6 +26,6 @@
</mat-card>
<div class="show-more centered">
<button mat-button (click)="showMore()">Show more...</button>
<button mat-button (click)="showMore()">{{'Notifications.ShowMore' | translate }}</button>
</div>
</div>

View File

@ -11,7 +11,7 @@
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>Options</mat-panel-title>
<mat-panel-title>{{ 'People.Options' | translate }}</mat-panel-title>
<mat-panel-description></mat-panel-description>
</mat-expansion-panel-header>
@ -22,37 +22,37 @@
</p> -->
<mat-form-field class="options-field">
<mat-label>Show</mat-label>
<mat-label>{{ 'People.Show' | translate }}</mat-label>
<mat-select (selectionChange)="showChanged()" [(value)]="optionsService.values.peopleDisplayType">
<mat-option [value]="1">Following</mat-option>
<mat-option [value]="2">Muted</mat-option>
<mat-option [value]="3">Blocked</mat-option>
<mat-option [value]="0">Cached</mat-option>
<mat-option [value]="1">{{ 'People.Following' | translate }}</mat-option>
<mat-option [value]="2">{{ 'People.Muted' | translate }}</mat-option>
<mat-option [value]="3">{{ 'People.Blocked' | translate }}</mat-option>
<mat-option [value]="0">{{ 'People.Cached' | translate }}</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="options-field">
<mat-label>Sorting</mat-label>
<mat-label>{{ 'People.Sorting' | translate }}</mat-label>
<mat-select (selectionChange)="updateSorting()" [(value)]="optionsService.values.peopleDisplaySort">
<mat-option value="name-asc">Name (A-Z)</mat-option>
<mat-option value="name-desc">Name (Z-A)</mat-option>
<mat-option value="followed-asc">Followed (Newest)</mat-option>
<mat-option value="followed-desc">Followed (Oldest)</mat-option>
<mat-option value="created-asc">Updated (Newest)</mat-option>
<mat-option value="created-desc">Updated (Oldest)</mat-option>
<mat-option value="name-asc">{{ 'People.NameAZ' | translate }}</mat-option>
<mat-option value="name-desc">{{ 'People.NameZA' | translate }}</mat-option>
<mat-option value="followed-asc">{{ 'People.FollowedNewest' | translate }}</mat-option>
<mat-option value="followed-desc">{{ 'People.FollowedOldest' | translate }}</mat-option>
<mat-option value="created-asc">{{ 'People.UpdatedNewest' | translate }}</mat-option>
<mat-option value="created-desc">{{ 'People.UpdatedOldest' | translate }}</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="options-field">
<mat-label>View</mat-label>
<mat-label>{{ 'People.View' | translate }}</mat-label>
<mat-select (selectionChange)="showChanged()" [(value)]="optionsService.values.peopleDisplayView">
<mat-option [value]="6">Large icons</mat-option>
<mat-option [value]="5">Medium icons</mat-option>
<mat-option [value]="4">Small icons</mat-option>
<mat-option [value]="6">{{ 'People.LargeIcons' | translate }}</mat-option>
<mat-option [value]="5">{{ 'People.MediumIcons' | translate }}</mat-option>
<mat-option [value]="4">{{ 'People.SmallIcons' | translate }} </mat-option>
<!-- <mat-option [value]="3">List</mat-option> -->
<mat-option [value]="2">Details</mat-option>
<mat-option [value]="0">Tiles</mat-option>
<mat-option [value]="1">Content</mat-option>
<mat-option [value]="2">{{ 'People.Details' | translate }} </mat-option>
<mat-option [value]="0">{{ 'People.Tiles' | translate }}</mat-option>
<mat-option [value]="1">{{ 'People.Content' | translate }} </mat-option>
</mat-select>
</mat-form-field>
@ -61,8 +61,8 @@
<p class="people-actions">
<!-- <button mat-stroked-button (click)="importFollowList()">Import Following List</button> -->
<button mat-stroked-button (click)="dataService.publishContactsAndRelays()">Publish Follow (and Relays) List</button>
<button mat-stroked-button (click)="downloadFollowing()">Save Public Following (backup)</button>
<button mat-stroked-button (click)="dataService.publishContactsAndRelays()">{{ 'People.PublishFollowList' | translate }} </button>
<button mat-stroked-button (click)="downloadFollowing()">{{ 'People.SavePublicFollowing' | translate }} </button>
<!-- <button mat-stroked-button (click)="dataService.save()">Save People List (backup)</button> -->
</p>
</mat-expansion-panel>
@ -77,7 +77,7 @@
<div class="events-header">
<!-- <div [style.background-image]="utilities.getBannerBackgroundStyle(profile.banner)" class="profile-banner"></div> -->
<app-event-header [profile]="profile">
<small> <span class="clickable" *ngIf="profile.created">Followed {{ profile.created | ago }}</span> <app-directory-icon [pubkey]="profile.pubkey"></app-directory-icon> </small>
<small> <span class="clickable" *ngIf="profile.created">{{ 'People.Followed' | translate }} {{ profile.created | ago }}</span> <app-directory-icon [pubkey]="profile.pubkey"></app-directory-icon> </small>
</app-event-header>
<app-profile-actions [profile]="profile"></app-profile-actions>
</div>

View File

@ -5,13 +5,13 @@
<mat-card>
<mat-card-content *ngIf="profile">
<p>
<button type="button" mat-stroked-button (click)="profileImageInput.click()">Pick Profile Image</button>
<button type="button" mat-stroked-button (click)="profileImageInput.click()">{{ 'Profile.PickProfileImage' | translate }}</button>
<input hidden (change)="onProfileFileSelected($event)" #profileImageInput type="file" />
<span class="file-name">
<!-- {{selectedProfileFile?.name}} -->
</span>
<button type="button" mat-stroked-button (click)="profileBannerInput.click()">Pick Profile Banner</button>
<button type="button" mat-stroked-button (click)="profileBannerInput.click()">{{ 'Profile.PickProfileBanner' | translate }}</button>
<input hidden (change)="onBannerFileSelected($event)" #profileBannerInput type="file" />
<span class="file-name">
<!-- {{selectedBannerFile?.name}} -->
@ -20,21 +20,21 @@
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>badge</mat-icon>
<mat-label>Display Name</mat-label>
<mat-label>{{ 'Profile.DisplayName' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.display_name" />
</mat-form-field>
</p>
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>alternate_email</mat-icon>
<mat-label>Nickname</mat-label>
<mat-label>{{ 'Profile.Nickname' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.name" />
</mat-form-field>
</p>
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>help_outline</mat-icon>
<mat-label>About</mat-label>
<mat-label>{{ 'Profile.About' | translate }}</mat-label>
<textarea matInput type="text" [(ngModel)]="profile.about" rows="3"></textarea>
</mat-form-field>
</p>
@ -59,28 +59,28 @@
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>how_to_reg</mat-icon>
<mat-label>E-mail/Domain Identifier (NIP05)</mat-label>
<mat-label>{{ 'Profile.MailDomainIdentifier' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.nip05" />
</mat-form-field>
</p>
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>public</mat-icon>
<mat-label>Website</mat-label>
<mat-label>{{ 'Profile.Website' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.website" />
</mat-form-field>
</p>
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>currency_bitcoin</mat-icon>
<mat-label>Bitcoin Payment Link (LUD06)</mat-label>
<mat-label>{{ 'Profile.BitcoinPaymentLink' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.lud06" placeholder="LNURL..." />
</mat-form-field>
</p>
<p>
<mat-form-field class="input-full-width">
<mat-icon matPrefix>currency_bitcoin</mat-icon>
<mat-label>Bitcoin Payment Alias (LUD16)</mat-label>
<mat-label>{{ 'Profile.BitoinPaymenAlias' | translate }}</mat-label>
<input matInput type="text" [(ngModel)]="profile.lud16" placeholder="user@domain" />
</mat-form-field>
</p>
@ -91,11 +91,11 @@
<input matInput type="text" [(ngModel)]="profile.lud16" placeholder="satoshi@bitcoin.org" />
</mat-form-field>
</p> -->
<p>Last updated: {{ profile.created_at | ago }}</p>
<p>{{ 'Profile.LastUpdated' | translate }}: {{ profile.created_at | ago }}</p>
</mat-card-content>
<mat-card-footer align="end">
<button mat-raised-button (click)="cancelEdit()">Cancel</button>&nbsp;
<button mat-raised-button color="primary" (click)="updateMetadata()">Save</button>
<button mat-raised-button (click)="cancelEdit()">{{ 'Profile.Cancel' | translate }}</button>&nbsp;
<button mat-raised-button color="primary" (click)="updateMetadata()">{{ 'Profile.Save' | translate }}</button>
</mat-card-footer>
</mat-card>
</div>

View File

@ -3,18 +3,18 @@
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>Options</mat-panel-title>
<mat-panel-title>{{'Relays.Options' | translate}} </mat-panel-title>
<mat-panel-description></mat-panel-description>
</mat-expansion-panel-header>
<div class="settings-action-buttons">
<!-- <button mat-stroked-button (click)="toggle()"><span *ngIf="!open">Expand All</span><span *ngIf="open">Collapse All</span></button>
<br /> -->
<button mat-flat-button color="primary" (click)="getRelays()">Append from extension</button><button mat-flat-button color="primary" (click)="getDefaultRelays()">Append from app</button>
<button mat-flat-button color="primary" (click)="getRelays()">{{'Relays.AppendFromExtension' | translate }} </button><button mat-flat-button color="primary" (click)="getDefaultRelays()">{{ 'Relays.AppendFromApp' | translate }} </button>
<br />
<button mat-stroked-button (click)="dataService.publishContactsAndRelays()">Publish relay (and following) list</button> <button mat-stroked-button (click)="dataService.publishRelays()">Publish relay (NIP-65) list</button
<button mat-stroked-button (click)="dataService.publishContactsAndRelays()">{{ 'Relays.PublishRelay(and following)list' | translate}} </button> <button mat-stroked-button (click)="dataService.publishRelays()">{{'Relays.PublishRelay(NIP-65)list' | translate}}</button
><br /><br />
<button mat-flat-button color="warn" (click)="deleteRelays()">Delete all relays</button>
<button mat-flat-button color="warn" (click)="deleteRelays()">{{'Relays.DeleteAllRelays' | translate}} </button>
</div>
</mat-expansion-panel>
</mat-accordion>

View File

@ -21,7 +21,7 @@
<mat-tab>
<ng-template mat-tab-label>
<mat-icon class="example-tab-icon">settings_applications</mat-icon>
<span *ngIf="(appState.displayLabels$ | async) === false">&nbsp;Options</span>
<span *ngIf="(appState.displayLabels$ | async) === false">{{&nbsp;'Settings.Options' | translate }}</span>
</ng-template>
<ng-template matTabContent>
<div class="page">
@ -53,8 +53,8 @@
<mat-card>
<mat-card-header>
<mat-card-title>Media Upload Service</mat-card-title>
<mat-card-subtitle>Choose which service to use for uploading photos and films</mat-card-subtitle>
<mat-card-title>{{ 'Settings.MediaTitle' | translate }}</mat-card-title>
<mat-card-subtitle>{{ 'Settings.MediaSubtitle' | translate }}</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<mat-form-field class="input-full-width">
@ -82,12 +82,12 @@
<mat-card>
<mat-card-header>
<mat-card-title>Reactions</mat-card-title>
<mat-card-subtitle>Control if likes should be loaded and displayed</mat-card-subtitle>
<mat-card-title>{{ 'Settings.Reactions' | translate }}</mat-card-title>
<mat-card-subtitle>{{ 'Settings.ReactionsSubtitle' | translate }}</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<p>Reactions is not for everyone and it might consider clutter by some. It also takes up additional bandwidth to download.</p>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableReactions">Enable Reactions</mat-slide-toggle>
<p>{{'Settings.ReactionsNote' | translate }}</p>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableReactions">{{ 'Settings.EnableReactions' | translate }}</mat-slide-toggle>
</mat-card-content>
</mat-card>
@ -95,11 +95,11 @@
<mat-card>
<mat-card-header>
<mat-card-title>Zapping</mat-card-title>
<mat-card-subtitle>Control if zapping features should be enabled</mat-card-subtitle>
<mat-card-title>{{ 'Settings.Zapping' | translate }}</mat-card-title>
<mat-card-subtitle>{{ 'Settings.ZappingSubtitle' | translate }}</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableZapping">Enable Zapping</mat-slide-toggle>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableZapping">{{ 'Settings.EnableZapping' | translate }}</mat-slide-toggle>
</mat-card-content>
</mat-card>
@ -107,14 +107,14 @@
<mat-card>
<mat-card-header>
<mat-card-title>Media widgets</mat-card-title>
<mat-card-subtitle>Control how content are rendered</mat-card-subtitle>
<mat-card-title>{{ 'Settings.MediaWidgets' | translate }}</mat-card-title>
<mat-card-subtitle>{{ 'Settings.MediaWidgetsSubtitle' |translate }}</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<p>Enable this to allow the app to render music widgets when URLs linked to the services is seen in notes.</p>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableSpotify">Enable Spotify</mat-slide-toggle>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableTidal">Enable Tidal</mat-slide-toggle>
<p><button mat-button (click)="openMediaPlayer()">Open Media Player</button></p>
<p>{{ 'Settings.MediaWidgetsNote' | translate }}</p>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableSpotify">{{ 'Settings.EnableSpotify' | translate }}</mat-slide-toggle>
<mat-slide-toggle class="options-slider" (change)="optionsService.save()" [(ngModel)]="optionsService.values.enableTidal">{{ 'Settings.EnableTidal' | translate }}</mat-slide-toggle>
<p><button mat-button (click)="openMediaPlayer()">{{ 'Settings.OpenMediaPlayer' | translate }}</button></p>
</mat-card-content>
</mat-card>

View File

@ -196,6 +196,8 @@ export class SettingsComponent {
this.appState.documentDirection = 'ltr';
this.optionsService.values.dir = 'ltr';
}
this.optionsService.save();
}
async exportPrivateKey() {

View File

@ -1,5 +1,5 @@
<div class="dialog">
<h1 mat-dialog-title>Add a relay</h1>
<h1 mat-dialog-title>{{ 'RelayDialog.AddARelay' | translate }}</h1>
<div mat-dialog-content class="mat-dialog-content">
<mat-form-field appearance="fill" class="input-full-width">
<mat-icon class="circle" matPrefix>dns</mat-icon>
@ -7,12 +7,12 @@
<input matInput type="text" [(ngModel)]="data.url" />
</mat-form-field>
<mat-slide-toggle color="primary" [(ngModel)]="data.read">Read</mat-slide-toggle>&nbsp;
<mat-slide-toggle color="primary" [(ngModel)]="data.write">Write</mat-slide-toggle>
<mat-slide-toggle color="primary" [(ngModel)]="data.read">{{ 'RelayDialog.Read' | translate }}</mat-slide-toggle>&nbsp;
<mat-slide-toggle color="primary" [(ngModel)]="data.write">{{ 'RelayDialog.Write' | translate }}</mat-slide-toggle>
</div>
<div mat-dialog-actions align="end">
<button mat-stroked-button (click)="onNoClick()">Cancel</button>
<button mat-flat-button [mat-dialog-close]="data" color="primary" cdkFocusInitial>Add</button>
<button mat-stroked-button (click)="onNoClick()">{{ 'RelayDialog.Cancel' | translate }}</button>
<button mat-flat-button [mat-dialog-close]="data" color="primary" cdkFocusInitial>{{ 'RelayDialog.Add' | translate }}</button>
</div>
</div>

View File

@ -29,21 +29,21 @@
<h2 *ngIf="relay.nip11?.name">{{ relay.nip11?.name }}</h2>
{{ relay.nip11.description }}<br /><br />
<span class="dimmed">
<span *ngIf="relay.nip11.pubkey"><a [routerLink]="['/p', relay.nip11.pubkey]">Administrator</a><br /></span>
<span *ngIf="relay.nip11.contact">Contact: {{ relay.nip11.contact }}<br /></span>
<span *ngIf="relay.nip11.pubkey"><a [routerLink]="['/p', relay.nip11.pubkey]">{{ 'Relay.Administrator' | translate }}</a><br /></span>
<span *ngIf="relay.nip11.contact">{{ 'Relay.Contact' | translate }}: {{ relay.nip11.contact }}<br /></span>
NIPs: {{ relay.nip11.supported_nips }}<br />
Software: {{ relay.nip11.software }} ({{ relay.nip11.version }})<br />
{{'Relay.Software' | translate}}: {{ relay.nip11.software }} ({{ relay.nip11.version }})<br />
<span class="wrap"> ID: {{ relay.nip11.pubkey }}</span></span
>
</div>
<br />
<div class="dimmed" *ngIf="relay.timeouts">Timeouts: {{ relay.timeouts }}</div>
<div class="dimmed" *ngIf="relay.eventcount">Events: {{ relay.eventcount }}</div>
<div class="dimmed" *ngIf="relay.timeouts"> {{ 'Relay.Timeouts' | translate }} {{ relay.timeouts }}</div>
<div class="dimmed" *ngIf="relay.eventcount"> {{ 'Relay.Events'| translate }}: {{ relay.eventcount }}</div>
<div class="dimmed">Status: {{ relay.status }}</div>
<!-- <div>Subscriptions Count : {{ relay.subscriptions.length }}</div> -->
<mat-card class="relay-options mat-elevation-z8">
<mat-card-header>
<mat-card-title>Relay Options</mat-card-title>
<mat-card-title>{{ 'Relay.RelayOptions' | translate }} </mat-card-title>
<!-- <mat-card-subtitle>Control if this relay is used for reading, writing and if it should be part of your public relay list. Additionally you can keep the relay in your list but disable it to not use.</mat-card-subtitle> -->
</mat-card-header>
<mat-card-content>
@ -65,8 +65,8 @@
<mat-card class="relay-options mat-elevation-z8">
<mat-card-header>
<mat-card-title>Relay Status</mat-card-title>
<mat-card-subtitle>Allows you to disable a relay locally.</mat-card-subtitle>
<mat-card-title>{{ 'Relay.RelayStatus' | translate }} </mat-card-title>
<mat-card-subtitle> {{'Relay.RelayStatus.Subtitle' | translate}} </mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<mat-selection-list (selectionChange)="onRelayStatusChange($event)" [multiple]="false">
@ -81,7 +81,7 @@
<mat-card class="relay-options mat-elevation-z8">
<mat-card-header>
<mat-card-title>Relay Privacy</mat-card-title>
<mat-card-title>{{ 'Relay.RelayPrivacy' | translate }} </mat-card-title>
<!-- <mat-card-subtitle>Control if this relay is used for reading, writing and if it should be part of your public relay list. Additionally you can keep the relay in your list but disable it to not use.</mat-card-subtitle> -->
</mat-card-header>
<mat-card-content>
@ -95,8 +95,8 @@
</mat-card-content>
</mat-card>
<button class="relay-button" [disabled]="!relay.public || optionsService.values.primaryRelay == relay.url" mat-raised-button color="primary" (click)="primaryRelay(relay)">Primary Relay</button>&nbsp;
<button class="relay-button" mat-raised-button color="warn" (click)="deleteRelay(relay)">Delete</button>
<button class="relay-button" [disabled]="!relay.public || optionsService.values.primaryRelay == relay.url" mat-raised-button color="primary" (click)="primaryRelay(relay)">{{'Relay.PrimaryRelay' | translate }} </button>&nbsp;
<button class="relay-button" mat-raised-button color="warn" (click)="deleteRelay(relay)">{{'Relay.Delete' | translate}} </button>
<!-- <button (click)="deleteRelay(relay)" mat-icon-button matTooltip="Remove from queue" color="grey">
<mat-icon>delete</mat-icon>
</button> -->

View File

@ -12,6 +12,7 @@
"ConvertKey": "Convert Key"
},
"Settings": {
"Options": "Options",
"OptionsTitle": "App Options",
"OptionsDescription": "Choose important options for your user experience",
"Settings": "Settings",
@ -19,6 +20,92 @@
"DisplayLanguage": "Display Language",
"ChooseMode": "Choose your mode",
"Dark": "Dark",
"Light": "Light"
"Light": "Light",
"MediaTitle": "Media Upload Service",
"MediaSubtitle": "Choose which service to use for uploading photos and films",
"Reactions": "Reactions",
"ReactionsSubtitle": "Control if likes should be loaded and displayed",
"ReactionsNote": "Reactions is not for everyone and it might consider clutter by some. It also takes up additional bandwidth to download.",
"EnableReactions": "Enable Reactions",
"Zapping": "Zapping",
"ZappingSubtitle": "Control if zapping features should be enabled",
"EnableZapping": "Enable Zapping",
"MediaWidgets": "Media widgets",
"MediaWidgetsSubtitle": "Control how content are rendered",
"MediaWidgetsNote": "Enable this to allow the app to render music widgets when URLs linked to the services is seen in notes.",
"EnableSpotify": "Enable Spotify",
"EnableTidal": "Enable Tidal",
"OpenMediaPlayer": "Open Media Player"
},
"Notifications": {
"Options": "Options",
"ResetNotifications": "Reset Notifications",
"ShowMore": "Show More..."
},
"People": {
"Options": "Options",
"Show": "Show",
"Following": "Following",
"Muted": "Muted",
"Blocked": "Blocked",
"Cached": "Cached",
"Sorting": "Sorting",
"NameAZ": "Name (A-Z)",
"NameZA": "Name (Z-A)",
"FollowedNewest": "Followed (Newest)",
"FollowedOldest": "Followed (Oldest)",
"UpdatedNewest": "Updated (Newest)",
"UpdatedOldest": "Updated (Oldest)",
"LargeIcons": "Large icons",
"MediumIcons": "Medium icons",
"SmallIcons": "Small icons",
"Details": "Details",
"Tiles": "Tiles",
"Content": "Content",
"PublishFollowList": "Publish Follow (and Relays) List",
"SavePublicFollowing": "Save Public Following (backup)",
"Followed": "Followed"
},
"Profile": {
"PickProfileImage": "Pick Profile Image",
"PickProfileBanner": "Pick Profile Banner",
"DisplayName": "Display Name",
"Nickname": "Nickname",
"About": "About",
"MailDomainIdentifier": "E-mail/Domain Identifier (NIP05)",
"Website": "Website",
"BitcoinPaymentLink": "Bitcoin Payment Link (LUD06)",
"BitoinPaymenAlias": "Bitcoin Payment Alias (LUD16)",
"LastUpdated": "Last updated",
"Cancel": "Cancel",
"Save": "Save"
},
"Relays": {
"Options": "Options",
"AppendFromExtension": "Append from extension",
"AppendFromApp": "Append from app",
"PublishRelay(and following)list": "Publish relay (and following) list",
"PublishRelay(NIP-65)list": "Publish relay (NIP-65) list",
"DeleteAllRelays": "Delete All Relays"
},
"RelayDialog": {
"AddARelay": "Add a relay",
"Read": "Read",
"Write": "Write",
"Cancel": "Cancel",
"Add": "Add"
},
"Relay": {
"Administrator": "Administrator",
"Contact": "Contact",
"Software": "Software",
"Timeouts": "Timeouts",
"Events": "Events",
"RelayOptions": "Relay Options",
"RelayStatus": "Relay Status",
"RelayStatusSubtitle": "Allows you to disable a relay locally.",
"RelayPrivacy": "Relay Privacy",
"PrimaryRelay": "Primary Relay",
"Delete": "Delete"
}
}

View File

@ -19,6 +19,85 @@
"DisplayLanguage": "Velg språk",
"ChooseMode": "Velg fargetema",
"Dark": "Mørk",
"Light": "Lys"
"Light": "Lys",
"MediaTitle": "Media Upload Service",
"MediaSubtitle": "Choose which service to use for uploading photos and films",
"Reactions": "Reactions",
"ReactionsSubtitle": "Control if likes should be loaded and displayed",
"ReactionsNote": "Reactions is not for everyone and it might consider clutter by some. It also takes up additional bandwidth to download.",
"EnableReactions": "Enable Reactions",
"Zapping": "Zapping",
"ZappingSubtitle": "Control if zapping features should be enabled",
"EnableZapping": "Enable Zapping",
"MediaWidgets": "Media widgets",
"MediaWidgetsSubtitle": "Control how content are rendered",
"MediaWidgetsNote": "Enable this to allow the app to render music widgets when URLs linked to the services is seen in notes.",
"EnableSpotify": "Enable Spotify",
"EnableTidal": "Enable Tidal",
"OpenMediaPlayer": "Open Media Player"
},
"Notifications": {
"Options": "Alternativ",
"ResetNotifications": "Tilbakestill varsler",
"ShowMore": "Vis flere..."
},
"People": {
"Options": "Options",
"Show": "Show",
"Following": "Following",
"Muted": "Muted",
"Blocked": "Blocked",
"Cached": "Cached",
"Sorting": "Sorting",
"NameAZ": "Name (A-Z)",
"NameZA": "Name (Z-A)",
"FollowedNewest": "Followed (Newest)",
"FollowedOldest": "Followed (Oldest)",
"UpdatedNewest": "Updated (Newest)",
"UpdatedOldest": "Updated (Oldest)",
"LargeIcons": "Large icons",
"MediumIcons": "Medium icons",
"SmallIcons": "Small icons",
"Details": "Details",
"Tiles": "Tiles",
"Content": "Content",
"PublishFollowList": "Publish Follow (and Relays) List",
"SavePublicFollowing": "Save Public Following (backup)",
"Followed": "Followed"
},
"Profile": {
"PickProfileImage": "Pick Profile Image",
"PickProfileBanner": "Pick Profile Banner",
"DisplayName": "Display Name",
"Nickname": "Nickname",
"About": "About",
"MailDomainIdentifier": "E-mail/Domain Identifier (NIP05)",
"Website": "Website",
"BitcoinPaymentLink": "Bitcoin Payment Link (LUD06)",
"BitoinPaymenAlias": "Bitcoin Payment Alias (LUD16)",
"LastUpdated": "Last updated",
"Cancel": "Cancel",
"Save": "Save"
},
"Relays": {
"Options": "Alternativ",
"AppendFromExtension": "Legg til fra utvidelse",
"AppendFromApp": "Legg til fra app",
"PublishRelay(and following)list": "Publiser relay (og følgende) liste",
"PublishRelay(NIP-65)list": "Publiser relay (NIP-65) liste",
"DeleteAllRelays": "Slett alle relays"
},
"Relay": {
"Administrator": "Administrator",
"Contact": "Kontakt",
"Software": "Programvare",
"Timeouts": "Tidsavbrudd",
"Events": "Hendelser",
"RelayOptions": "Relay alternativ",
"RelayStatus": "Relay status",
"RelayStatusSubtitle": "Lar deg deaktivere en relay lokalt.",
"RelayPrivacy": "Relay personvern",
"PrimaryRelay": "Primær relay",
"Delete": "Slett"
}
}

View File

@ -1,25 +1,111 @@
{
"en": "English",
"no": "Norsk",
"fr": "French",
"el": "Greek",
"fa": "Persian",
"ar": "Arabic",
"he": "Hebrew",
"ru": "Русский",
"App": {
"Hide": "Скрыть",
"ConvertKey": "Преобразовать ключ"
},
"Settings": {
"OptionsTitle": "Параметры приложения",
"OptionsDescription": "Выберите важные параметры для вашего пользовательского интерфейса",
"Settings": "Настройки",
"Save": "Сохранить",
"DisplayLanguage": "Язык отображения",
"ChooseMode": "Выберите тему",
"Dark": "Тёмная",
"Light": "Светлая"
}
"en": "English",
"no": "Norsk",
"fr": "French",
"el": "Greek",
"fa": "Persian",
"ar": "Arabic",
"he": "Hebrew",
"ru": "Русский",
"App": {
"Hide": "Hide",
"ConvertKey": "Convert Key"
},
"Settings": {
"Options": "Options",
"OptionsTitle": "App Options",
"OptionsDescription": "Choose important options for your user experience",
"Settings": "Settings",
"Save": "Save",
"DisplayLanguage": "Display Language",
"ChooseMode": "Choose your mode",
"Dark": "Dark",
"Light": "Light",
"MediaTitle": "Media Upload Service",
"MediaSubtitle": "Choose which service to use for uploading photos and films",
"Reactions": "Reactions",
"ReactionsSubtitle": "Control if likes should be loaded and displayed",
"ReactionsNote": "Reactions is not for everyone and it might consider clutter by some. It also takes up additional bandwidth to download.",
"EnableReactions": "Enable Reactions",
"Zapping": "Zapping",
"ZappingSubtitle": "Control if zapping features should be enabled",
"EnableZapping": "Enable Zapping",
"MediaWidgets": "Media widgets",
"MediaWidgetsSubtitle": "Control how content are rendered",
"MediaWidgetsNote": "Enable this to allow the app to render music widgets when URLs linked to the services is seen in notes.",
"EnableSpotify": "Enable Spotify",
"EnableTidal": "Enable Tidal",
"OpenMediaPlayer": "Open Media Player"
},
"Notifications": {
"Options": "Options",
"ResetNotifications": "Reset Notifications",
"ShowMore": "Show More..."
},
"People": {
"Options": "Options",
"Show": "Show",
"Following": "Following",
"Muted": "Muted",
"Blocked": "Blocked",
"Cached": "Cached",
"Sorting": "Sorting",
"NameAZ": "Name (A-Z)",
"NameZA": "Name (Z-A)",
"FollowedNewest": "Followed (Newest)",
"FollowedOldest": "Followed (Oldest)",
"UpdatedNewest": "Updated (Newest)",
"UpdatedOldest": "Updated (Oldest)",
"LargeIcons": "Large icons",
"MediumIcons": "Medium icons",
"SmallIcons": "Small icons",
"Details": "Details",
"Tiles": "Tiles",
"Content": "Content",
"PublishFollowList": "Publish Follow (and Relays) List",
"SavePublicFollowing": "Save Public Following (backup)",
"Followed": "Followed"
},
"Profile": {
"PickProfileImage": "Pick Profile Image",
"PickProfileBanner": "Pick Profile Banner",
"DisplayName": "Display Name",
"Nickname": "Nickname",
"About": "About",
"MailDomainIdentifier": "E-mail/Domain Identifier (NIP05)",
"Website": "Website",
"BitcoinPaymentLink": "Bitcoin Payment Link (LUD06)",
"BitoinPaymenAlias": "Bitcoin Payment Alias (LUD16)",
"LastUpdated": "Last updated",
"Cancel": "Cancel",
"Save": "Save"
},
"Relays": {
"Options": "Options",
"AppendFromExtension": "Append from extension",
"AppendFromApp": "Append from app",
"PublishRelay(and following)list": "Publish relay (and following) list",
"PublishRelay(NIP-65)list": "Publish relay (NIP-65) list",
"DeleteAllRelays": "Delete All Relays"
},
"RelayDialog": {
"AddARelay": "Add a relay",
"Read": "Read",
"Write": "Write",
"Cancel": "Cancel",
"Add": "Add"
},
"Relay": {
"Administrator": "Administrator",
"Contact": "Contact",
"Software": "Software",
"Timeouts": "Timeouts",
"Events": "Events",
"RelayOptions": "Relay Options",
"RelayStatus": "Relay Status",
"RelayStatusSubtitle": "Allows you to disable a relay locally.",
"RelayPrivacy": "Relay Privacy",
"PrimaryRelay": "Primary Relay",
"Delete": "Delete"
}
}