mirror of
https://github.com/WowUp/WowUp.git
synced 2026-04-24 07:47:29 -04:00
Merge remote-tracking branch 'upstream/electron' into feat/addon-released-date
This commit is contained in:
@@ -22,6 +22,7 @@ import {
|
||||
RENAME_DIRECTORY_CHANNEL,
|
||||
READ_FILE_CHANNEL,
|
||||
GET_ASSET_FILE_PATH,
|
||||
DELETE_FILE_CHANNEL,
|
||||
} from "./src/common/constants";
|
||||
import { CurseGetScanResultsRequest } from "./src/common/curse/curse-get-scan-results-request";
|
||||
import { CurseGetScanResultsResponse } from "./src/common/curse/curse-get-scan-results-response";
|
||||
@@ -132,13 +133,10 @@ ipcMain.on(LIST_DIRECTORIES_CHANNEL, (evt, arg: ValueRequest<string>) => {
|
||||
ipcMain.on(PATH_EXISTS_CHANNEL, (evt, arg: ValueRequest<string>) => {
|
||||
const response: ValueResponse<boolean> = { value: false };
|
||||
|
||||
fs.open(arg.value, "r", (err, fid) => {
|
||||
fs.access(arg.value, (err) => {
|
||||
if (err) {
|
||||
if (err.code === "ENOENT") {
|
||||
response.value = false;
|
||||
} else {
|
||||
response.error = err;
|
||||
}
|
||||
console.error(err);
|
||||
response.value = true;
|
||||
} else {
|
||||
response.value = true;
|
||||
}
|
||||
@@ -243,6 +241,22 @@ ipcMain.on(DELETE_DIRECTORY_CHANNEL, (evt, arg: DeleteDirectoryRequest) => {
|
||||
});
|
||||
});
|
||||
|
||||
ipcMain.on(DELETE_FILE_CHANNEL, (evt, arg: ValueRequest<string>) => {
|
||||
console.log("Delete File", arg);
|
||||
const response: ValueResponse<boolean> = {
|
||||
value: false,
|
||||
};
|
||||
fs.unlink(arg.value, (err) => {
|
||||
if (err) {
|
||||
response.error = err;
|
||||
} else {
|
||||
response.value = true;
|
||||
}
|
||||
|
||||
evt.reply(arg.responseKey, response);
|
||||
});
|
||||
});
|
||||
|
||||
ipcMain.on(RENAME_DIRECTORY_CHANNEL, (evt, arg: CopyDirectoryRequest) => {
|
||||
console.log("Rename Dir", arg);
|
||||
fs.rename(arg.sourcePath, arg.destinationPath, (err) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="app">
|
||||
<app-titlebar></app-titlebar>
|
||||
<app-titlebar *ngIf="showTitleBar"></app-titlebar>
|
||||
<div class="content">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
|
||||
@@ -20,6 +20,8 @@ const AUTO_UPDATE_PERIOD_MS = 60 * 60 * 1000; // 1 hour
|
||||
export class AppComponent implements AfterViewInit {
|
||||
private _autoUpdateInterval?: number;
|
||||
|
||||
public showTitleBar: boolean = true;
|
||||
|
||||
constructor(
|
||||
private _analyticsService: AnalyticsService,
|
||||
private _electronService: ElectronService,
|
||||
@@ -33,6 +35,8 @@ export class AppComponent implements AfterViewInit {
|
||||
this.translate.setDefaultLang("en");
|
||||
|
||||
this.translate.use(this._electronService.locale);
|
||||
|
||||
this.showTitleBar = !this._electronService.isLinux;
|
||||
}
|
||||
|
||||
ngAfterViewInit(): void {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
.addon-detail-view {
|
||||
width: 35vw;
|
||||
max-width: 500px;
|
||||
min-width: 380px;
|
||||
max-width: 600px;
|
||||
margin-top: 8px;
|
||||
|
||||
.addon-detail-title,
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
<mat-bar-button *ngIf="showStatusText === false" (btnClick)="onInstallUpdateClick()" [options]="buttonOptions$ | async"
|
||||
class="install-button">
|
||||
</mat-bar-button>
|
||||
|
||||
<div class="row">
|
||||
<div *ngIf="showStatusText === true" class="status-text" [ngClass]="{ 'ignored': listItem.isIgnored }">
|
||||
{{getStatusText()}}
|
||||
</div>
|
||||
<mat-icon *ngIf="this.listItem.isAutoUpdate === true" class="auto-update-icon"
|
||||
[matTooltip]="'PAGES.MY_ADDONS.TABLE.AUTO_UPDATE_ICON_TOOLTIP' | translate">
|
||||
update
|
||||
</mat-icon>
|
||||
</div>
|
||||
<mat-bar-button
|
||||
*ngIf="showStatusText === false"
|
||||
(btnClick)="onInstallUpdateClick()"
|
||||
[options]="buttonOptions$ | async"
|
||||
class="install-button"
|
||||
>
|
||||
</mat-bar-button>
|
||||
<!-- <app-addon-install-button [addon]="listItem.addon" [hideUninstall]="true"> </app-addon-install-button> -->
|
||||
<div
|
||||
*ngIf="showStatusText === true"
|
||||
class="status-text"
|
||||
[ngClass]="{ ignored: listItem.isIgnored }"
|
||||
>
|
||||
{{ getStatusText() }}
|
||||
</div>
|
||||
<mat-icon
|
||||
*ngIf="this.listItem.isAutoUpdate === true"
|
||||
class="auto-update-icon"
|
||||
[matTooltip]="'PAGES.MY_ADDONS.TABLE.AUTO_UPDATE_ICON_TOOLTIP' | translate"
|
||||
>
|
||||
update
|
||||
</mat-icon>
|
||||
</div>
|
||||
|
||||
@@ -224,12 +224,20 @@ export class AddonService {
|
||||
|
||||
// TODO track error
|
||||
} finally {
|
||||
if (fs.existsSync(unzippedDirectory)) {
|
||||
const unzippedDirectoryExists = await this._fileService.pathExists(
|
||||
unzippedDirectory
|
||||
);
|
||||
|
||||
const downloadedFilePathExists = await this._fileService.pathExists(
|
||||
downloadedFilePath
|
||||
);
|
||||
|
||||
if (unzippedDirectoryExists) {
|
||||
await this._fileService.deleteDirectory(unzippedDirectory);
|
||||
}
|
||||
|
||||
if (fs.existsSync(downloadedFilePath)) {
|
||||
fs.unlinkSync(downloadedFilePath);
|
||||
if (downloadedFilePathExists) {
|
||||
await this._fileService.deleteFile(downloadedFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ export class ElectronService {
|
||||
public readonly windowMinimized$ = this._windowMinimizedSrc.asObservable();
|
||||
public readonly isWin = process.platform === "win32";
|
||||
public readonly isMac = process.platform === "darwin";
|
||||
public readonly isLinux = process.platform === "linux";
|
||||
|
||||
get isElectron(): boolean {
|
||||
return !!(window && window.process && window.process.type);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Injectable } from "@angular/core";
|
||||
import {
|
||||
COPY_DIRECTORY_CHANNEL,
|
||||
DELETE_DIRECTORY_CHANNEL,
|
||||
DELETE_FILE_CHANNEL,
|
||||
GET_ASSET_FILE_PATH,
|
||||
LIST_DIRECTORIES_CHANNEL,
|
||||
LIST_FILES_CHANNEL,
|
||||
@@ -53,7 +54,11 @@ export class FileService {
|
||||
});
|
||||
}
|
||||
|
||||
public pathExists(sourcePath: string) {
|
||||
public pathExists(sourcePath: string): Promise<boolean> {
|
||||
if (!sourcePath) {
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const eventHandler = (_evt: any, arg: ValueResponse<boolean>) => {
|
||||
if (arg.error) {
|
||||
@@ -91,6 +96,25 @@ export class FileService {
|
||||
});
|
||||
}
|
||||
|
||||
public deleteFile(sourcePath: string): Promise<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const eventHandler = (_evt: any, arg: ValueResponse<boolean>) => {
|
||||
if (arg.error) {
|
||||
return reject(arg.error);
|
||||
}
|
||||
resolve(arg.value);
|
||||
};
|
||||
|
||||
const request: ValueRequest<string> = {
|
||||
value: sourcePath,
|
||||
responseKey: uuidv4(),
|
||||
};
|
||||
|
||||
this._electronService.ipcRenderer.once(request.responseKey, eventHandler);
|
||||
this._electronService.ipcRenderer.send(DELETE_FILE_CHANNEL, request);
|
||||
});
|
||||
}
|
||||
|
||||
public copyDirectory(sourcePath: string, destinationPath: string) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const eventHandler = (_evt: any, arg: Error) => {
|
||||
@@ -173,6 +197,14 @@ export class FileService {
|
||||
});
|
||||
}
|
||||
|
||||
public listEntries(sourcePath: string, filter: string) {
|
||||
const globFilter = globrex(filter);
|
||||
|
||||
return fs
|
||||
.readdirSync(sourcePath, { withFileTypes: true })
|
||||
.filter((entry) => !!globFilter.regex.test(entry.name));
|
||||
}
|
||||
|
||||
public listFiles(sourcePath: string, filter: string) {
|
||||
const globFilter = globrex(filter);
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import { WarcraftServiceImpl } from "./warcraft.service.impl";
|
||||
import { WowClientType } from "app/models/warcraft/wow-client-type";
|
||||
|
||||
export class WarcraftServiceLinux implements WarcraftServiceImpl {
|
||||
public async getBlizzardAgentPath(): Promise<string> {
|
||||
return '';
|
||||
}
|
||||
|
||||
public getExecutableName(clientType: WowClientType): string {
|
||||
switch (clientType) {
|
||||
case WowClientType.Retail:
|
||||
return 'Wow.exe';
|
||||
case WowClientType.Classic:
|
||||
return 'WowClassic.exe';
|
||||
case WowClientType.RetailPtr:
|
||||
return 'WowT.exe';
|
||||
case WowClientType.ClassicPtr:
|
||||
return 'WowClassicT.exe';
|
||||
case WowClientType.Beta:
|
||||
return 'WowB.exe';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ import * as fs from "fs";
|
||||
import { map, filter, delay, switchMap } from "rxjs/operators";
|
||||
import { WowClientType } from "app/models/warcraft/wow-client-type";
|
||||
import { StorageService } from "../storage/storage.service";
|
||||
import log from "electron-log";
|
||||
import { WarcraftServiceMac } from "./warcraft.service.mac";
|
||||
import { WarcraftServiceLinux } from "./warcraft.service.linux";
|
||||
import { AddonFolder } from "app/models/wowup/addon-folder";
|
||||
import { ElectronService } from "..";
|
||||
import { TocService } from "../toc/toc.service";
|
||||
@@ -374,6 +374,10 @@ export class WarcraftService {
|
||||
return new WarcraftServiceMac();
|
||||
}
|
||||
|
||||
if(this._electronService.isLinux){
|
||||
return new WarcraftServiceLinux();
|
||||
}
|
||||
|
||||
throw new Error("No warcraft service implementation found");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +68,8 @@ export class WowUpService {
|
||||
this.applicationVersion = _electronService.remote.app.getVersion();
|
||||
this.isBetaBuild =
|
||||
this.applicationVersion.toLowerCase().indexOf("beta") != -1;
|
||||
|
||||
this.cleanupDownloads();
|
||||
}
|
||||
|
||||
public get updaterExists() {
|
||||
@@ -308,4 +310,28 @@ export class WowUpService {
|
||||
? WowUpReleaseChannelType.Beta
|
||||
: WowUpReleaseChannelType.Stable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up lost downloads in the download folder
|
||||
*/
|
||||
private async cleanupDownloads() {
|
||||
const downloadFiles = this._fileService.listEntries(
|
||||
this.applicationDownloadsFolderPath,
|
||||
"*"
|
||||
);
|
||||
|
||||
for (let entry of downloadFiles) {
|
||||
const path = join(this.applicationDownloadsFolderPath, entry.name);
|
||||
try {
|
||||
if (entry.isDirectory()) {
|
||||
await this._fileService.deleteDirectory(path);
|
||||
} else {
|
||||
await this._fileService.deleteFile(path);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Failed to delete download entry", path);
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"ABOUT": {
|
||||
"CHANGE_LOG_SECTION_LABEL": "Log ändern",
|
||||
"TITLE": "WowUp.io",
|
||||
"WEBSITE_LINK_LABEL": "Schau dir die Webseite an!"
|
||||
"WEBSITE_LINK_LABEL": "Schau Dir die Webseite an!"
|
||||
},
|
||||
"GET_ADDONS": {
|
||||
"CLIENT_TYPE_SELECT_LABEL": "World of Warcraft",
|
||||
@@ -15,7 +15,7 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Autor",
|
||||
"PROVIDER_COLUMN_HEADER": "Anbieter",
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "DOWNLOAD_COUNT_COLUMN_HEADER",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Anzahl Downloads",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"MY_ADDONS": {
|
||||
"CHECK_UPDATES_BUTTON": "Updates prüfen",
|
||||
"CHECK_UPDATES_BUTTON_TOOLTIP": "Nach neuesten Addon-Updates suchen",
|
||||
"CHECK_UPDATES_BUTTON_TOOLTIP": "Nach neuen Addon-Updates suchen",
|
||||
"CLIENT_TYPE_SELECT_LABEL": "World of Warcraft",
|
||||
"RESCAN_FOLDERS_BUTTON": "Ordner erneut scannen",
|
||||
"RESCAN_FOLDERS_BUTTON_TOOLTIP": "Scannen Sie Ihren Client-Ordner nach installierten Addons",
|
||||
@@ -51,10 +51,10 @@
|
||||
"IGNORE_ADDON_BUTTON": "Ignorieren",
|
||||
"AUTO_UPDATE_ADDON_BUTTON": "Automatisches Aktualisieren",
|
||||
"CHANNEL_SUBMENT_TITLE": "Kanal",
|
||||
"SHOW_FOLDER": "SHOW_FOLDER",
|
||||
"SHOW_FOLDER": "Dateiordner anzeigen",
|
||||
"REINSTALL_ADDON_BUTTON": "Neu installieren",
|
||||
"REMOVE_ADDON_BUTTON": "Entfernen",
|
||||
"STABLE_ADDON_CHANNEL": "Stall",
|
||||
"STABLE_ADDON_CHANNEL": "Stable",
|
||||
"BETA_ADDON_CHANNEL": "Beta",
|
||||
"ALPHA_ADDON_CHANNEL": "Alpha"
|
||||
},
|
||||
@@ -68,8 +68,8 @@
|
||||
},
|
||||
"OPTIONS": {
|
||||
"APPLICATION": {
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "ENABLE_SYSTEM_NOTIFICATIONS_LABEL",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Systembenachrichtigungen aktivieren",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Aktivieren / Deaktivieren verschiedener Systembenachrichtigungen",
|
||||
"MINIMIZE_ON_CLOSE_LABEL": "Minimieren bei Schliessen",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Beim Schließen des WowUp-Fensters auf das Systemabschnitt minimieren.",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC",
|
||||
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"DEBUG": {
|
||||
"DEBUG_DATA_BUTTON": "Debug-Daten dumpen",
|
||||
"DEBUG_DATA_DESCRIPTION": "Protokollieren Sie Debug-Daten, um mögliche Probleme zu diagnostizieren. Dies finden Sie in Ihrer aktuellen Protokolldatei für Neugierde.",
|
||||
"DEBUG_DATA_DESCRIPTION": "Protokollieren Sie Debug-Daten, um mögliche Probleme zu diagnostizieren. Dies finden Sie in Ihrer aktuellen Protokolldatei (für Neugierige).",
|
||||
"DEBUG_DATA_LABEL": "Debug-Daten",
|
||||
"LOG_FILES_BUTTON": "Log-Dateien anzeigen",
|
||||
"LOG_FILES_DESCRIPTION": "Öffnen Sie den Ordner, der Ihre letzten Logdateien enthält.",
|
||||
@@ -110,14 +110,14 @@
|
||||
},
|
||||
"INSTALL_FROM_URL": {
|
||||
"ADDON_URL_INPUT_LABEL": "Addon URL",
|
||||
"ADDON_URL_INPUT_PLACEHOLDER": "Ex. GitHub or WowInterface URL",
|
||||
"ADDON_URL_INPUT_PLACEHOLDER": "z.B. GitHub oder WowInterface URL",
|
||||
"CLOSE_BUTTON": "Schließen",
|
||||
"IMPORT_BUTTON": "Importieren",
|
||||
"INSTALL_BUTTON": "Installieren",
|
||||
"INSTALL_SUCCESS_LABEL": "Installiert!",
|
||||
"TITLE": "Installieren Sie die Addon-URL",
|
||||
"DESCRIPTION": "Wenn Sie ein Addon direkt von einer URL installieren möchten, fügen Sie es unten ein, um loszulegen.",
|
||||
"SUPPORTED_SOURCES": "Unterstützt WowInterface und GitHub*"
|
||||
"TITLE": "Installation eines Addons über eine externe URL",
|
||||
"DESCRIPTION": "Wenn Sie ein Addon direkt von einer URL installieren möchten, fügen Sie es unten in der Zeile ein.",
|
||||
"SUPPORTED_SOURCES": "Unterstützt wird WowInterface und GitHub*"
|
||||
},
|
||||
"TELEMETRY": {
|
||||
"DESCRIPTION": "Hilf mir, WowUp zu verbessern, indem du anonyme Installationsdateien und/oder Fehler schickst?",
|
||||
@@ -128,18 +128,18 @@
|
||||
},
|
||||
"COMMON": {
|
||||
"ADDON_STATUS": {
|
||||
"COMPLETE": "COMPLETE",
|
||||
"DOWNLOADING": "DOWNLOADING",
|
||||
"INSTALLING": "INSTALLING",
|
||||
"UNINSTALLING": "UNINSTALLING",
|
||||
"UPDATING": "UPDATING"
|
||||
"COMPLETE": "Vollständig",
|
||||
"DOWNLOADING": "Herunterladen",
|
||||
"INSTALLING": "Installiere",
|
||||
"UNINSTALLING": "Deinstalliere",
|
||||
"UPDATING": "Aktualisiere"
|
||||
},
|
||||
"ADDON_STATE": {
|
||||
"UNINSTALL": "UNINSTALL",
|
||||
"IGNORED": "IGNORED",
|
||||
"UPDATE": "UPDATE",
|
||||
"INSTALL": "INSTALL",
|
||||
"UPTODATE": "UPTODATE"
|
||||
"UNINSTALL": "Deinstalliert",
|
||||
"IGNORED": "Ignoriert",
|
||||
"UPDATE": "Aktualisiert",
|
||||
"INSTALL": "Installiert",
|
||||
"UPTODATE": "Aktuell"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
146
wowup-electron/src/assets/i18n/nb.json
Normal file
146
wowup-electron/src/assets/i18n/nb.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"PAGES": {
|
||||
"ABOUT": {
|
||||
"CHANGE_LOG_SECTION_LABEL": "Endringslogg",
|
||||
"TITLE": "WowUp.io",
|
||||
"WEBSITE_LINK_LABEL": "Besøk nettsiden!"
|
||||
},
|
||||
"GET_ADDONS": {
|
||||
"CLIENT_TYPE_SELECT_LABEL": "World of Warcraft",
|
||||
"REFRESH_BUTTON": "Oppdater",
|
||||
"INSTALL_FROM_URL_BUTTON": "Installer fra URL",
|
||||
"SEARCH_LABEL": "Søk",
|
||||
"TABLE": {
|
||||
"ADDON_COLUMN_HEADER": "Utvidelse",
|
||||
"AUTHOR_COLUMN_HEADER": "Forfatter",
|
||||
"PROVIDER_COLUMN_HEADER": "Leverandør",
|
||||
"STATUS_COLUMN_HEADER": "Status",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Nedlastinger"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
"TITLE": "Appen virker !",
|
||||
"GO_TO_DETAIL": "Gå til Detalj",
|
||||
"MY_ADDONS_TAB_TITLE": "Mine Utvidelser",
|
||||
"GET_ADDONS_TAB_TITLE": "Få Utvidelser",
|
||||
"ABOUT_TAB_TITLE": "Om",
|
||||
"OPTIONS_TAB_TITLE": "Alternativer"
|
||||
},
|
||||
"MY_ADDONS": {
|
||||
"CHECK_UPDATES_BUTTON": "Finn Oppdateringer",
|
||||
"CHECK_UPDATES_BUTTON_TOOLTIP": "Finn de siste oppdateringene til utvidelsene dine",
|
||||
"CLIENT_TYPE_SELECT_LABEL": "World of Warcraft",
|
||||
"FILTER_LABEL": "Filter",
|
||||
"RESCAN_FOLDERS_BUTTON": "Skann Mapper",
|
||||
"RESCAN_FOLDERS_BUTTON_TOOLTIP": "Skann klientens mapper etter installerte utvidelser",
|
||||
"UPDATE_ALL_BUTTON": "Oppdater Alle",
|
||||
"UPDATE_ALL_BUTTON_TOOLTIP": "Oppdater alle utvidelser for denne klienten",
|
||||
"TABLE": {
|
||||
"ADDON_COLUMN_HEADER": "Utvidelse",
|
||||
"ADDON_INSTALL_BUTTON": "Installer",
|
||||
"ADDON_UPDATE_BUTTON": "Oppdater",
|
||||
"AUTHOR_COLUMN_HEADER": "Forfatter",
|
||||
"AUTO_UPDATE_ICON_TOOLTIP": "Automatisk oppdatering aktivert",
|
||||
"GAME_VERSION_COLUMN_HEADER": "Spillversjon",
|
||||
"LATEST_VERSION_COLUMN_HEADER": "Siste Versjon",
|
||||
"PROVIDER_COLUMN_HEADER": "Leverandør",
|
||||
"STATUS_COLUMN_HEADER": "Status"
|
||||
},
|
||||
"ADDON_CONTEXT_MENU": {
|
||||
"IGNORE_ADDON_BUTTON": "Ignorer",
|
||||
"AUTO_UPDATE_ADDON_BUTTON": "Oppdater Automatisk",
|
||||
"CHANNEL_SUBMENT_TITLE": "Kanal",
|
||||
"SHOW_FOLDER": "Vis Mappe",
|
||||
"REINSTALL_ADDON_BUTTON": "Re-Installer",
|
||||
"REMOVE_ADDON_BUTTON": "Fjern",
|
||||
"STABLE_ADDON_CHANNEL": "Stable",
|
||||
"BETA_ADDON_CHANNEL": "Beta",
|
||||
"ALPHA_ADDON_CHANNEL": "Alpha"
|
||||
},
|
||||
"COLUMNS_CONTEXT_MENU": {
|
||||
"TITLE": "Vis Kolonner"
|
||||
},
|
||||
"UPDATE_ALL_CONTEXT_MENU": {
|
||||
"UPDATE_RETAIL_CLASSIC_BUTTON": "Oppdater Retail/Classic",
|
||||
"UPDATE_ALL_CLIENTS_BUTTON": "Oppdater Alle Klienter"
|
||||
}
|
||||
},
|
||||
"OPTIONS": {
|
||||
"APPLICATION": {
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Aktiver systemvarsler",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Aktiver/Deaktiver forskjellige systemvarsler, foreksempel: automatisk oppdatering av addons.",
|
||||
"MINIMIZE_ON_CLOSE_LABEL": "Minimer ved lukking",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "Når WowUp-vinduet lukkes, minimer til menylinjen.",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Når WowUp-vinduet lukkes, minimer til oppgavelinjens varselområde.",
|
||||
"TELEMETRY_DESCRIPTION": "Hjelp til med å forbedre WowUp ved å sende anonyme data og feilmeldinger.",
|
||||
"TELEMETRY_LABEL": "Telemetri",
|
||||
"TITLE": "Applikasjon"
|
||||
},
|
||||
"DEBUG": {
|
||||
"DEBUG_DATA_BUTTON": "Dump Debugdata",
|
||||
"DEBUG_DATA_DESCRIPTION": "Loggfør debugdata for å hjelpe til med å diagnotisere eventuelle problemer. Hvis du er nyskgjerrig kan du finne dette i din siste loggfil.",
|
||||
"DEBUG_DATA_LABEL": "Debugdata",
|
||||
"LOG_FILES_BUTTON": "Vis Loggfiler",
|
||||
"LOG_FILES_DESCRIPTION": "Åpne mappen som inneholder dine siste loggfiler.",
|
||||
"LOG_FILES_LABEL": "Loggfiler",
|
||||
"TITLE": "Debug"
|
||||
},
|
||||
"WOW": {
|
||||
"AUTO_UPDATE_DESCRIPTION": "Nye utvidelser du installerer vil bli satt til å oppdateres automatisk",
|
||||
"AUTO_UPDATE_LABEL": "Automatisk Oppdatering",
|
||||
"TITLE": "World of Warcraft",
|
||||
"DEFAULT_ADDON_CHANNEL_LABEL": "Standard kanal for utvidelser",
|
||||
"DEFAULT_ADDON_CHANNEL_SELECT_LABEL": "Kanal for Utvidelser",
|
||||
"RESCAN_CLIENTS_BUTTON": "Skann Igjen",
|
||||
"RESCAN_CLIENTS_LABEL": "Skann installerte World of Warcraft produkter på nytt"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DIALOGS": {
|
||||
"ADDON_DETAILS": {
|
||||
"VIEW_IN_BROWSER_BUTTON": "Se i nettleser"
|
||||
},
|
||||
"ALERT": {
|
||||
"POSITIVE_BUTTON": "Okey"
|
||||
},
|
||||
"CONFIRM": {
|
||||
"NEGATIVE_BUTTON": "Nei",
|
||||
"POSITIVE_BUTTON": "Ja"
|
||||
},
|
||||
"INSTALL_FROM_URL": {
|
||||
"ADDON_URL_INPUT_LABEL": "Utvidelsens URL",
|
||||
"ADDON_URL_INPUT_PLACEHOLDER": "Ex. GitHub eller WowInterface URL",
|
||||
"CLOSE_BUTTON": "Lukk",
|
||||
"IMPORT_BUTTON": "Importer",
|
||||
"INSTALL_BUTTON": "Installer",
|
||||
"INSTALL_SUCCESS_LABEL": "Installert!",
|
||||
"TITLE": "Installer Utvidelse fra URL",
|
||||
"DESCRIPTION": "Hvis du vil installere en utvidelse direkte fra en URL kan du lime den inn i feltet nedenfor.",
|
||||
"SUPPORTED_SOURCES": "Støtter WowInterface og GitHub*"
|
||||
},
|
||||
"TELEMETRY": {
|
||||
"DESCRIPTION": "Hjelp meg med å forbedre WowUp ved å sende anyonyme data og feilmeldinger?",
|
||||
"NEGATIVE_BUTTON": "Nei Takk!",
|
||||
"POSITIVE_BUTTON": "Selvfølgelig!",
|
||||
"TITLE": "WowUp Telemetri"
|
||||
}
|
||||
},
|
||||
"COMMON": {
|
||||
"ADDON_STATUS": {
|
||||
"BACKINGUP": "Sikkerhetskopierer",
|
||||
"COMPLETE": "Installert",
|
||||
"DOWNLOADING": "Laster Ned",
|
||||
"INSTALLING": "Installerer",
|
||||
"PENDING": "Venter",
|
||||
"UNINSTALLING": "Avinstallerer",
|
||||
"UPDATING": "Oppdaterer..."
|
||||
},
|
||||
"ADDON_STATE": {
|
||||
"UNINSTALL": "Avinstaller",
|
||||
"IGNORED": "Ignorert",
|
||||
"UPDATE": "Oppdater",
|
||||
"INSTALL": "Installer",
|
||||
"UPTODATE": "Oppdatert"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,12 +15,12 @@
|
||||
"AUTHOR_COLUMN_HEADER": "Автор",
|
||||
"PROVIDER_COLUMN_HEADER": "Источник",
|
||||
"STATUS_COLUMN_HEADER": "Статус",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Кол-во загрузок",
|
||||
"DOWNLOAD_COUNT_COLUMN_HEADER": "Загрузок",
|
||||
"RELEASED_AT_COLUMN_HEADER": "RELEASED_AT_COLUMN_HEADER"
|
||||
}
|
||||
},
|
||||
"HOME": {
|
||||
"TITLE": "Приложение работает !",
|
||||
"TITLE": "Приложение работает!",
|
||||
"GO_TO_DETAIL": "Детали",
|
||||
"MY_ADDONS_TAB_TITLE": "Мои модификации",
|
||||
"GET_ADDONS_TAB_TITLE": "Получить модификации",
|
||||
@@ -69,11 +69,11 @@
|
||||
},
|
||||
"OPTIONS": {
|
||||
"APPLICATION": {
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "ENABLE_SYSTEM_NOTIFICATIONS_LABEL",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Включить системные уведомления",
|
||||
"ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Включить/Выключить различные окна системных уведомлений, такие как автоматически обновлённые модификации.",
|
||||
"MINIMIZE_ON_CLOSE_LABEL": "Свернуть в трей при закрытии",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "При закрытии окна WowUp сворачивается в системный трей.",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "При закрытии окна WowUp сворачивается в область уведомлений панели задач.",
|
||||
"MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "При закрытии окна WowUp сворачивается в меню статуса.",
|
||||
"TELEMETRY_DESCRIPTION": "Помогите улучшить WowUp, отправив анонимные данные об установке и/или ошибках.",
|
||||
"TELEMETRY_LABEL": "Телеметрия",
|
||||
"TITLE": "Приложение"
|
||||
@@ -145,4 +145,4 @@
|
||||
"UPTODATE": "Актуальная"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
export const DOWNLOAD_FILE_CHANNEL = "download-file";
|
||||
export const COPY_DIRECTORY_CHANNEL = "copy-directory";
|
||||
export const DELETE_DIRECTORY_CHANNEL = "delete-directory";
|
||||
export const DELETE_FILE_CHANNEL = "delete-file";
|
||||
export const RENAME_DIRECTORY_CHANNEL = "rename-directory";
|
||||
export const STAT_DIRECTORY_CHANNEL = "stat-directory";
|
||||
export const LIST_DIRECTORIES_CHANNEL = "list-directories";
|
||||
|
||||
Reference in New Issue
Block a user