Add translations

Add translation for the multi select menu header.
Add translation for the Go to PROVIDER text in addon dialog.
This commit is contained in:
jliddev
2020-11-05 22:57:39 -06:00
parent 3b4a0d7f19
commit 2cc362b74f
12 changed files with 109 additions and 255 deletions

View File

@@ -27,7 +27,7 @@
[providerName]="provider"
class="flex-shrink-0"
></app-addon-provider-badge> -->
<span> Go to {{ provider }} &nbsp; </span>
<span> {{ 'DIALOGS.ADDON_DETAILS.VIEW_ON_PROVIDER_PREFIX' | translate }} {{ provider }} &nbsp; </span>
<a
class="icon-link"
appExternalLink

View File

@@ -1,21 +1,14 @@
<div
class="tab-container d-flex flex-col"
[ngClass]="{
<div class="tab-container d-flex flex-col" [ngClass]="{
mac: electronService.isMac,
windows: electronService.isWin,
linux: electronService.isLinux
}"
>
}">
<div class="control-container">
<div class="select-container">
<mat-form-field>
<mat-label>{{ "PAGES.MY_ADDONS.CLIENT_TYPE_SELECT_LABEL" | translate }}</mat-label>
<mat-select
class="select pointer"
[(value)]="selectedClient"
(selectionChange)="onClientChange()"
[disabled]="enableControls === false"
>
<mat-select class="select pointer" [(value)]="selectedClient" (selectionChange)="onClientChange()"
[disabled]="enableControls === false">
<mat-option [value]="clientType" *ngFor="let clientType of warcraftService.installedClientTypes$ | async">
{{ warcraftService.getClientDisplayName(clientType) }}
</mat-option>
@@ -27,55 +20,28 @@
<mat-form-field>
<mat-label>{{ "PAGES.MY_ADDONS.FILTER_LABEL" | translate }}</mat-label>
<input matInput (keyup)="filterAddons()" [(ngModel)]="filter" />
<button
mat-button
color="accent"
*ngIf="filter"
matSuffix
mat-icon-button
aria-label="Clear"
(click)="onClearFilter()"
>
<button mat-button color="accent" *ngIf="filter" matSuffix mat-icon-button aria-label="Clear"
(click)="onClearFilter()">
<mat-icon>close</mat-icon>
</button>
</mat-form-field>
</div>
<div class="button-container">
<button
mat-flat-button
color="primary"
[matTooltip]="'PAGES.MY_ADDONS.UPDATE_ALL_BUTTON_TOOLTIP' | translate"
[disabled]="enableControls === false || enableUpdateAll === false"
(click)="onUpdateAll()"
(contextmenu)="onUpdateAllContext($event)"
appUserActionTracker
category="MyAddons"
action="UpdateAll"
>
<button mat-flat-button color="primary" [matTooltip]="'PAGES.MY_ADDONS.UPDATE_ALL_BUTTON_TOOLTIP' | translate"
[disabled]="enableControls === false || enableUpdateAll === false" (click)="onUpdateAll()"
(contextmenu)="onUpdateAllContext($event)" appUserActionTracker category="MyAddons" action="UpdateAll">
{{ "PAGES.MY_ADDONS.UPDATE_ALL_BUTTON" | translate }}
</button>
<button
mat-flat-button
color="primary"
<button mat-flat-button color="primary"
[matTooltip]="'PAGES.MY_ADDONS.CHECK_UPDATES_BUTTON_TOOLTIP' | translate"
[disabled]="enableControls === false"
(click)="onRefresh()"
appUserActionTracker
category="MyAddons"
action="CheckUpdates"
>
[disabled]="enableControls === false" (click)="onRefresh()" appUserActionTracker category="MyAddons"
action="CheckUpdates">
{{ "PAGES.MY_ADDONS.CHECK_UPDATES_BUTTON" | translate }}
</button>
<button
mat-flat-button
color="primary"
<button mat-flat-button color="primary"
[matTooltip]="'PAGES.MY_ADDONS.RESCAN_FOLDERS_BUTTON_TOOLTIP' | translate"
[disabled]="enableControls === false"
(click)="onReScan()"
appUserActionTracker
category="MyAddons"
action="ReScanFolders"
>
[disabled]="enableControls === false" (click)="onReScan()" appUserActionTracker category="MyAddons"
action="ReScanFolders">
{{ "PAGES.MY_ADDONS.RESCAN_FOLDERS_BUTTON" | translate }}
</button>
</div>
@@ -91,26 +57,15 @@
</div>
<div class="table-container flex-grow-1" [hidden]="isBusy === true || sortedListItems.length === 0">
<table
#table
mat-table
matSort
(matSortChange)="onSortChange()"
[dataSource]="dataSource"
[matSortActive]="activeSort"
[matSortDirection]="activeSortDirection"
class="mat-elevation-z8"
>
<table #table mat-table matSort (matSortChange)="onSortChange()" [dataSource]="dataSource"
[matSortActive]="activeSort" [matSortDirection]="activeSortDirection" class="mat-elevation-z8">
<ng-container matColumnDef="addon.name">
<th mat-header-cell mat-sort-header *matHeaderCellDef>
{{ "PAGES.MY_ADDONS.TABLE.ADDON_COLUMN_HEADER" | translate }}
</th>
<td mat-cell *matCellDef="let element" class="cell-padding">
<app-my-addons-addon-cell
[addon]="element"
(onViewDetails)="openDetailDialog($event)"
[showUpdateToVersion]="!isLatestUpdateColumnVisible()"
>
<app-my-addons-addon-cell [addon]="element" (onViewDetails)="openDetailDialog($event)"
[showUpdateToVersion]="!isLatestUpdateColumnVisible()">
</app-my-addons-addon-cell>
</td>
</ng-container>
@@ -128,14 +83,9 @@
<th class="installed-at-cell" mat-header-cell mat-sort-header *matHeaderCellDef>
{{ "PAGES.MY_ADDONS.TABLE.UPDATED_AT_COLUMN_HEADER" | translate }}
</th>
<td
mat-cell
*matCellDef="let element"
class="cell-padding"
<td mat-cell *matCellDef="let element" class="cell-padding"
[matTooltip]="'COMMON.DATES.DATETIME_SHORT' | translate: { d: element.installedAt }"
matTooltipPosition="above"
matTooltipShowDelay="500"
>
matTooltipPosition="above" matTooltipShowDelay="500">
{{ element.installedAt | relativeDuration }}
</td>
</ng-container>
@@ -144,12 +94,8 @@
<th mat-header-cell mat-sort-header *matHeaderCellDef>
{{ "PAGES.MY_ADDONS.TABLE.LATEST_VERSION_COLUMN_HEADER" | translate }}
</th>
<td
mat-cell
*matCellDef="let element"
class="cell-padding"
[ngClass]="{ 'addon-update-available': element.addon.latestVersion !== element.addon.installedVersion }"
>
<td mat-cell *matCellDef="let element" class="cell-padding"
[ngClass]="{ 'addon-update-available': element.addon.latestVersion !== element.addon.installedVersion }">
{{ element.addon.latestVersion }}
</td>
</ng-container>
@@ -158,14 +104,9 @@
<th class="released-at-cell" mat-header-cell mat-sort-header *matHeaderCellDef>
{{ "PAGES.MY_ADDONS.TABLE.RELEASED_AT_COLUMN_HEADER" | translate }}
</th>
<td
mat-cell
*matCellDef="let element"
class="cell-padding"
<td mat-cell *matCellDef="let element" class="cell-padding"
[matTooltip]="'COMMON.DATES.DATETIME_SHORT' | translate: { d: element.addon.releasedAt }"
matTooltipPosition="above"
matTooltipShowDelay="500"
>
matTooltipPosition="above" matTooltipShowDelay="500">
{{ element.addon.releasedAt | relativeDuration }}
</td>
</ng-container>
@@ -191,11 +132,8 @@
<div class="addon-provider-name">
{{ element.addon.providerSource }}
</div>
<img
class="provider-logo"
[matTooltip]="'Sourced from ' + element.addon.providerName"
src="assets/icons/favicon.256x256.png"
/>
<img class="provider-logo" [matTooltip]="'Sourced from ' + element.addon.providerName"
src="assets/icons/favicon.256x256.png" />
</div>
</td>
</ng-container>
@@ -213,42 +151,24 @@
</td>
</ng-container>
<tr
mat-header-row
*matHeaderRowDef="displayedColumns; sticky: true"
(contextmenu)="onHeaderContext($event); $event.preventDefault()"
></tr>
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"
(contextmenu)="onHeaderContext($event); $event.preventDefault()"></tr>
<tr
mat-row
*matRowDef="let row; let i = index; columns: displayedColumns"
tabindex="0"
[ngClass]="{ 'selected-row': row.selected }"
(click)="onRowClicked($event, row, i)"
(dblclick)="openDetailDialog(row)"
(contextmenu)="onCellContext($event, row)"
(keydown.control.a)="selectAllRows($event)"
(keydown.meta.a)="selectAllRows($event)"
></tr>
<tr mat-row *matRowDef="let row; let i = index; columns: displayedColumns" tabindex="0"
[ngClass]="{ 'selected-row': row.selected }" (click)="onRowClicked($event, row, i)"
(dblclick)="openDetailDialog(row)" (contextmenu)="onCellContext($event, row)"
(keydown.control.a)="selectAllRows($event)" (keydown.meta.a)="selectAllRows($event)"></tr>
</table>
</div>
</div>
<div
style="visibility: hidden; position: fixed"
#addonContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x"
[style.top]="contextMenuPosition.y"
[matMenuTriggerFor]="contextMenu"
></div>
<div style="visibility: hidden; position: fixed" #addonContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="contextMenu"></div>
<mat-menu #contextMenu="matMenu" class="addon-context-menu">
<ng-template matMenuContent let-listItem="listItem">
<div class="addon-context-menu-header">
<div
*ngIf="listItem.hasThumbnail === true"
class="thumbnail"
[style.backgroundImage]="'url(' + listItem.addon.thumbnailUrl + ')'"
></div>
<div *ngIf="listItem.hasThumbnail === true" class="thumbnail"
[style.backgroundImage]="'url(' + listItem.addon.thumbnailUrl + ')'"></div>
<div *ngIf="listItem.hasThumbnail === false" class="thumbnail">
<div class="thumbnail-letter">
{{ listItem.thumbnailLetter }}
@@ -263,97 +183,45 @@
</div>
</div>
<mat-divider></mat-divider>
<mat-checkbox
class="mat-menu-item"
[checked]="listItem.addon.isIgnored"
(change)="onClickIgnoreAddon($event, listItem)"
appUserActionTracker
category="MyAddons"
action="IgnoreAddon"
[label]="listItem.addon.name"
>
<mat-checkbox class="mat-menu-item" [checked]="listItem.addon.isIgnored"
(change)="onClickIgnoreAddon($event, listItem)" appUserActionTracker category="MyAddons" action="IgnoreAddon"
[label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.IGNORE_ADDON_BUTTON" | translate }}
</mat-checkbox>
<mat-checkbox
*ngIf="listItem.addon.isIgnored === false"
class="mat-menu-item"
[checked]="listItem.addon.autoUpdateEnabled"
(change)="onClickAutoUpdateAddon($event, listItem)"
appUserActionTracker
category="MyAddons"
action="AutoUpdateAddon"
[label]="listItem.addon.name"
>
<mat-checkbox *ngIf="listItem.addon.isIgnored === false" class="mat-menu-item"
[checked]="listItem.addon.autoUpdateEnabled" (change)="onClickAutoUpdateAddon($event, listItem)"
appUserActionTracker category="MyAddons" action="AutoUpdateAddon" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.AUTO_UPDATE_ADDON_BUTTON" | translate }}
</mat-checkbox>
<button mat-menu-item [matMenuTriggerFor]="addonChannels">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.CHANNEL_SUBMENT_TITLE" | translate }}
</button>
<button
mat-menu-item
(click)="onShowfolder(listItem.addon)"
appUserActionTracker
category="MyAddons"
action="ShowAddonFolder"
[label]="listItem.addon.name"
>
<button mat-menu-item (click)="onShowfolder(listItem.addon)" appUserActionTracker category="MyAddons"
action="ShowAddonFolder" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.SHOW_FOLDER" | translate }}
</button>
<button
mat-menu-item
(click)="onReInstallAddon(listItem)"
appUserActionTracker
category="MyAddons"
action="ReInstallAddon"
[label]="listItem.addon.name"
>
<button mat-menu-item (click)="onReInstallAddon(listItem)" appUserActionTracker category="MyAddons"
action="ReInstallAddon" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.REINSTALL_ADDON_BUTTON" | translate }}
</button>
<mat-divider></mat-divider>
<button
mat-menu-item
(click)="onRemoveAddon(listItem.addon)"
appUserActionTracker
category="MyAddons"
action="RemoveAddon"
[label]="listItem.addon.name"
>
<button mat-menu-item (click)="onRemoveAddon(listItem.addon)" appUserActionTracker category="MyAddons"
action="RemoveAddon" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.REMOVE_ADDON_BUTTON" | translate }}
</button>
<mat-menu #addonChannels="matMenu" class="addon-context-menu">
<mat-radio-group
class="vertical-radio-group"
[ngModel]="listItem.addon.channelType"
(change)="onSelectedAddonChannelChange($event, listItem)"
>
<mat-radio-button
class="mat-menu-item"
[value]="0"
appUserActionTracker
category="MyAddons"
action="SetStableAddonChannel"
[label]="listItem.addon.name"
>
<mat-radio-group class="vertical-radio-group" [ngModel]="listItem.addon.channelType"
(change)="onSelectedAddonChannelChange($event, listItem)">
<mat-radio-button class="mat-menu-item" [value]="0" appUserActionTracker category="MyAddons"
action="SetStableAddonChannel" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.STABLE_ADDON_CHANNEL" | translate }}
</mat-radio-button>
<mat-radio-button
class="mat-menu-item"
[value]="1"
appUserActionTracker
category="MyAddons"
action="SetBetaAddonChannel"
[label]="listItem.addon.name"
>
<mat-radio-button class="mat-menu-item" [value]="1" appUserActionTracker category="MyAddons"
action="SetBetaAddonChannel" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.BETA_ADDON_CHANNEL" | translate }}
</mat-radio-button>
<mat-radio-button
class="mat-menu-item"
[value]="2"
appUserActionTracker
category="MyAddons"
action="SetAlphaAddonChannel"
[label]="listItem.addon.name"
>
<mat-radio-button class="mat-menu-item" [value]="2" appUserActionTracker category="MyAddons"
action="SetAlphaAddonChannel" [label]="listItem.addon.name">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.ALPHA_ADDON_CHANNEL" | translate }}
</mat-radio-button>
</mat-radio-group>
@@ -361,33 +229,21 @@
</ng-template>
</mat-menu>
<div
style="visibility: hidden; position: fixed"
#addonMultiContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x"
[style.top]="contextMenuPosition.y"
[matMenuTriggerFor]="multiContextMenu"
></div>
<div style="visibility: hidden; position: fixed" #addonMultiContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="multiContextMenu"></div>
<mat-menu #multiContextMenu="matMenu" class="addon-context-menu">
<ng-template matMenuContent let-listItems="listItems">
<div class="addon-context-menu-header">
{{ listItems.length + " addons selected" }}
<div class="addon-context-menu-header" translate [translateParams]="{ count: listItems.length }">
PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.ADDONS_SELECTED
</div>
<mat-divider></mat-divider>
<mat-checkbox
class="mat-menu-item"
[indeterminate]="isIndeterminate(listItems, 'addon.isIgnored')"
[checked]="isAllItemsSelected(listItems, 'addon.isIgnored')"
(change)="onClickIgnoreAddons($event, listItems)"
>
<mat-checkbox class="mat-menu-item" [indeterminate]="isIndeterminate(listItems, 'addon.isIgnored')"
[checked]="isAllItemsSelected(listItems, 'addon.isIgnored')" (change)="onClickIgnoreAddons($event, listItems)">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.IGNORE_ADDON_BUTTON" | translate }}
</mat-checkbox>
<mat-checkbox
class="mat-menu-item"
[indeterminate]="isIndeterminate(listItems, 'addon.autoUpdateEnabled')"
<mat-checkbox class="mat-menu-item" [indeterminate]="isIndeterminate(listItems, 'addon.autoUpdateEnabled')"
[checked]="isAllItemsSelected(listItems, 'addon.autoUpdateEnabled')"
(change)="onClickAutoUpdateAddons($event, listItems)"
>
(change)="onClickAutoUpdateAddons($event, listItems)">
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.AUTO_UPDATE_ADDON_BUTTON" | translate }}
</mat-checkbox>
<button mat-menu-item [matMenuTriggerFor]="addonChannels">
@@ -416,13 +272,9 @@
</ng-template>
</mat-menu>
<div
style="visibility: hidden; position: fixed"
#columnContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x"
[style.top]="contextMenuPosition.y"
[matMenuTriggerFor]="columnContextMenu"
></div>
<div style="visibility: hidden; position: fixed" #columnContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="columnContextMenu">
</div>
<mat-menu #columnContextMenu="matMenu" class="addon-context-menu">
<ng-template matMenuContent let-columns="columns">
<div class="addon-context-menu-header">
@@ -431,43 +283,25 @@
</div>
</div>
<mat-divider></mat-divider>
<mat-checkbox
*ngFor="let column of columns"
class="mat-menu-item"
[checked]="column.visible"
(change)="onColumnVisibleChange($event, column)"
>
<mat-checkbox *ngFor="let column of columns" class="mat-menu-item" [checked]="column.visible"
(change)="onColumnVisibleChange($event, column)">
{{ column.display | translate }}
</mat-checkbox>
</ng-template>
</mat-menu>
<div
style="visibility: hidden; position: fixed"
#updateAllContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x"
[style.top]="contextMenuPosition.y"
[matMenuTriggerFor]="updateAllContextMenu"
></div>
<div style="visibility: hidden; position: fixed" #updateAllContextMenuTrigger="matMenuTrigger"
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="updateAllContextMenu">
</div>
<mat-menu #updateAllContextMenu="matMenu" class="addon-context-menu">
<ng-template matMenuContent let-columns="columns">
<button
mat-menu-item
(click)="onUpdateAllRetailClassic()"
appUserActionTracker
category="MyAddons"
action="UpdateAllClassicRetail"
>
<button mat-menu-item (click)="onUpdateAllRetailClassic()" appUserActionTracker category="MyAddons"
action="UpdateAllClassicRetail">
{{ "PAGES.MY_ADDONS.UPDATE_ALL_CONTEXT_MENU.UPDATE_RETAIL_CLASSIC_BUTTON" | translate }}
</button>
<button
mat-menu-item
(click)="onUpdateAllClients()"
appUserActionTracker
category="MyAddons"
action="UpdateAllClients"
>
<button mat-menu-item (click)="onUpdateAllClients()" appUserActionTracker category="MyAddons"
action="UpdateAllClients">
{{ "PAGES.MY_ADDONS.UPDATE_ALL_CONTEXT_MENU.UPDATE_ALL_CLIENTS_BUTTON" | translate }}
</button>
</ng-template>
</mat-menu>
</mat-menu>

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "Von {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Im Browser anzeigen"
"VIEW_IN_BROWSER_BUTTON": "Im Browser anzeigen",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Okay"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alpha",
"AUTO_UPDATE_ADDON_BUTTON": "Automatisches Aktualisieren",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "By {authorName}",
"VIEW_IN_BROWSER_BUTTON": "View in browser"
"VIEW_IN_BROWSER_BUTTON": "View in browser",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Okay"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alpha",
"AUTO_UPDATE_ADDON_BUTTON": "Auto Update",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "By {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Ver en el navegador"
"VIEW_IN_BROWSER_BUTTON": "Ver en el navegador",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Aceptar"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alfa",
"AUTO_UPDATE_ADDON_BUTTON": "Actualización automática",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "By {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Voir dans le navigateur"
"VIEW_IN_BROWSER_BUTTON": "Voir dans le navigateur",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Ok"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alphabétisation",
"AUTO_UPDATE_ADDON_BUTTON": "Mise à jour automatique",
"BETA_ADDON_CHANNEL": "Bêta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "Di {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Visualizza nel browser"
"VIEW_IN_BROWSER_BUTTON": "Visualizza nel browser",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Ok"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alfa",
"AUTO_UPDATE_ADDON_BUTTON": "Aggiornamento Automatico",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "By {authorName}",
"VIEW_IN_BROWSER_BUTTON": "View in browser"
"VIEW_IN_BROWSER_BUTTON": "View in browser",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Okay"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alpha",
"AUTO_UPDATE_ADDON_BUTTON": "Auto Update",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "Av {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Se i nettleser"
"VIEW_IN_BROWSER_BUTTON": "Se i nettleser",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Okey"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alpha",
"AUTO_UPDATE_ADDON_BUTTON": "Oppdater Automatisk",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "Por {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Visualizar no navegador"
"VIEW_IN_BROWSER_BUTTON": "Visualizar no navegador",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Ok"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Alfa",
"AUTO_UPDATE_ADDON_BUTTON": "Atualização Automática",
"BETA_ADDON_CHANNEL": "Beta",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "От {authorName}",
"VIEW_IN_BROWSER_BUTTON": "Посмотреть в браузере"
"VIEW_IN_BROWSER_BUTTON": "Посмотреть в браузере",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "Окей"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "Альфа",
"AUTO_UPDATE_ADDON_BUTTON": "Автообновление",
"BETA_ADDON_CHANNEL": "Бета",

View File

@@ -67,7 +67,8 @@
"DIALOGS": {
"ADDON_DETAILS": {
"BY_AUTHOR": "By {authorName}",
"VIEW_IN_BROWSER_BUTTON": "在浏览器中查看"
"VIEW_IN_BROWSER_BUTTON": "在浏览器中查看",
"VIEW_ON_PROVIDER_PREFIX": "View on"
},
"ALERT": {
"POSITIVE_BUTTON": "好的"
@@ -129,6 +130,7 @@
},
"MY_ADDONS": {
"ADDON_CONTEXT_MENU": {
"ADDONS_SELECTED": "{count} {count, plural, =1{addon} other{addons}} selected",
"ALPHA_ADDON_CHANNEL": "阿尔法",
"AUTO_UPDATE_ADDON_BUTTON": "自动更新",
"BETA_ADDON_CHANNEL": "测试版",