Merge pull request #3 from trippjoe/main

rewrite without react
This commit is contained in:
tripp 2022-03-29 16:51:27 -04:00 committed by GitHub
commit 999378e543
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
181 changed files with 5022 additions and 37188 deletions

View file

@ -1,23 +0,0 @@
{
"plugins": [
[
"module-resolver",
{
"cwd": "babelrc",
"alias": {
"Constants": "./app/src/constants",
"Components": "./app/src/components",
"Core": "./app/src/core",
"Pages": "./app/src/pages",
"Redux": "./app/src/redux",
"I18n": "./app/localization"
}
},
"@babel/plugin-syntax-dynamic-import"
]
],
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}

20
.gitignore vendored
View file

@ -6,8 +6,6 @@ yarn-debug.log*
yarn-error.log*
lerna-debug.log*
imgui.ini
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
@ -90,19 +88,7 @@ typings/
# Electron-Forge
out/
# Bundled files
app/dist/
/old-files
# Packed apps
dist/
# VSCode specific
.vscode/
# Logfile specific for development builds
dev-scripts/webpack-dev-server.log
dev-scripts/webpack-dev-server-error.log
# License-specific files
license.data
public.key
imgui.ini
/game_config

19
LICENSE
View file

@ -1,19 +0,0 @@
The MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -1,26 +1,16 @@
# OpenGOAL Launcher
## Description
A launcher for users to install and run the OpenGOAL project with ease.
## Preview
![Launcher GIF](./app/src/assets/images/launcher.gif)
## Contributing
As of right now, this project is dependent on the user building the OpenGOAL tools themselves, follow the [OpenGOAL README](https://github.com/open-goal/jak-project#readme) before attempting to run this.
If you are interested in contributing to this project please clone the repo to your local machine and install all dependencies with `npm i`.
To run the application navigate to the root directory and run: `npm run dev`.
A launcher for users to install and run the OpenGOAL project with ease
## Disclaimer
Users are required to provide their own copy of the ISO file in order to run the game.
## Built With
- [Secure Electron Template](https://github.com/reZach/secure-electron-template)
- [Electron Forge](https://www.electronforge.io/)
- [Node.js](https://nodejs.org/en/)
- [Electron](https://www.electronjs.org/)
- [React](https://reactjs.org/)
- [Redux](https://redux.js.org/)
- [Chakra UI](https://chakra-ui.com/)
- [Bootstrap](https://getbootstrap.com/)
## Resources
- [OpenGOAL Github Organization](https://github.com/open-goal/)

View file

@ -1,334 +0,0 @@
const {
app,
protocol,
BrowserWindow,
session,
ipcMain,
Menu
} = require("electron");
const {
default: installExtension,
REDUX_DEVTOOLS,
REACT_DEVELOPER_TOOLS
} = require("electron-devtools-installer");
const SecureElectronLicenseKeys = require("secure-electron-license-keys");
const Protocol = require("./protocol");
const MenuBuilder = require("./menu");
const i18nextBackend = require("i18next-electron-fs-backend");
const i18nextMainBackend = require("../localization/i18n.mainconfig");
const Store = require("secure-electron-store").default;
const ContextMenu = require("secure-electron-context-menu").default;
const path = require("path");
const fs = require("fs");
const crypto = require("crypto");
const isDev = process.env.NODE_ENV === "development";
const port = 40992; // Hardcoded; needs to match webpack.development.js and package.json
const selfHost = `http://localhost:${port}`;
const { buildGame, isoSeries, fetchLatestCommit, launchGame } = require('../src/utils/utils.js');
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win;
let menuBuilder;
async function createWindow() {
// If you'd like to set up auto-updating for your app,
// I'd recommend looking at https://github.com/iffy/electron-updater-example
// to use the method most suitable for you.
// eg. autoUpdater.checkForUpdatesAndNotify();
if (!isDev) {
// Needs to happen before creating/loading the browser window;
// protocol is only used in prod
protocol.registerBufferProtocol(Protocol.scheme, Protocol.requestHandler); /* eng-disable PROTOCOL_HANDLER_JS_CHECK */
}
const store = new Store({
path: app.getPath("userData")
});
// Use saved config values for configuring your
// BrowserWindow, for instance.
// NOTE - this config is not passcode protected
// and stores plaintext values
//let savedConfig = store.mainInitialStore(fs);
// Create the browser window.
win = new BrowserWindow({
width: 800,
height: 600,
resizable: false,
title: "OpenGOAL Launcher",
webPreferences: {
devTools: isDev,
nodeIntegration: true,
// nodeIntegrationInWorker: false,
// nodeIntegrationInSubFrames: false,
contextIsolation: true,
enableRemoteModule: false,
additionalArguments: [`storePath:${app.getPath("userData")}`],
preload: path.join(__dirname, "preload.js"),
/* eng-disable PRELOAD_JS_CHECK */
disableBlinkFeatures: "Auxclick"
}
});
// Sets up main.js bindings for our i18next backend
i18nextBackend.mainBindings(ipcMain, win, fs);
// Sets up main.js bindings for our electron store;
// callback is optional and allows you to use store in main process
const callback = function (success, initialStore) {
console.log(`${!success ? "Un-s" : "S"}uccessfully retrieved store in main process.`);
console.log(initialStore); // {"key1": "value1", ... }
};
store.mainBindings(ipcMain, win, fs, callback);
// Sets up bindings for our custom context menu
ContextMenu.mainBindings(ipcMain, win, Menu, isDev, {
"loudAlertTemplate": [{
id: "loudAlert",
label: "AN ALERT!"
}],
"softAlertTemplate": [{
id: "softAlert",
label: "Soft alert"
}]
});
// Setup bindings for offline license verification
SecureElectronLicenseKeys.mainBindings(ipcMain, win, fs, crypto, {
root: process.cwd(),
version: app.getVersion()
});
// Load app
if (isDev) {
win.loadURL(selfHost);
} else {
win.loadURL(`${Protocol.scheme}://rse/index.html`);
}
win.webContents.on("did-finish-load", () => {
win.setTitle(`OpenGOAL Launcher (v${app.getVersion()})`);
});
// Only do these things when in development
if (isDev) {
// Errors are thrown if the dev tools are opened
// before the DOM is ready
win.webContents.once("dom-ready", async () => {
await installExtension([REDUX_DEVTOOLS, REACT_DEVELOPER_TOOLS])
.then((name) => console.log(`Added Extension: ${name}`))
.catch((err) => console.log("An error occurred: ", err))
.finally(() => {
require("electron-debug")(); // https://github.com/sindresorhus/electron-debug
win.webContents.openDevTools();
});
});
}
// Emitted when the window is closed.
win.on("closed", () => {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
win = null;
});
// https://electronjs.org/docs/tutorial/security#4-handle-session-permission-requests-from-remote-content
const ses = session;
const partition = "default";
ses.fromPartition(partition) /* eng-disable PERMISSION_REQUEST_HANDLER_JS_CHECK */
.setPermissionRequestHandler((webContents, permission, permCallback) => {
const allowedPermissions = []; // Full list here: https://developer.chrome.com/extensions/declare_permissions#manifest
if (allowedPermissions.includes(permission)) {
permCallback(true); // Approve permission request
} else {
console.error(
`The application tried to request permission for '${permission}'. This permission was not whitelisted and has been blocked.`
);
permCallback(false); // Deny
}
});
// https://electronjs.org/docs/tutorial/security#1-only-load-secure-content;
// The below code can only run when a scheme and host are defined, I thought
// we could use this over _all_ urls
// ses.fromPartition(partition).webRequest.onBeforeRequest({urls:["http://localhost./*"]}, (listener) => {
// if (listener.url.indexOf("http://") >= 0) {
// listener.callback({
// cancel: true
// });
// }
// });
menuBuilder = MenuBuilder(win, app.name);
// Set up necessary bindings to update the menu items
// based on the current language selected
i18nextMainBackend.on("initialized", (loaded) => {
i18nextMainBackend.changeLanguage("en");
i18nextMainBackend.off("initialized"); // Remove listener to this event as it's not needed anymore
});
// When the i18n framework starts up, this event is called
// (presumably when the default language is initialized)
// BEFORE the "initialized" event is fired - this causes an
// error in the logs. To prevent said error, we only call the
// below code until AFTER the i18n framework has finished its
// "initialized" event.
i18nextMainBackend.on("languageChanged", (lng) => {
if (i18nextMainBackend.isInitialized) {
menuBuilder.buildMenu(i18nextMainBackend);
}
});
}
// Needs to be called before app is ready;
// gives our scheme access to load relative files,
// as well as local storage, cookies, etc.
// https://electronjs.org/docs/api/protocol#protocolregisterschemesasprivilegedcustomschemes
protocol.registerSchemesAsPrivileged([{
scheme: Protocol.scheme,
privileges: {
standard: true,
secure: true
}
}]);
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on("ready", createWindow);
// Quit when all windows are closed.
app.on("window-all-closed", () => {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== "darwin") {
app.quit();
} else {
i18nextBackend.clearMainBindings(ipcMain);
ContextMenu.clearMainBindings(ipcMain);
SecureElectronLicenseKeys.clearMainBindings(ipcMain);
}
});
app.on("activate", () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (win === null) {
createWindow();
}
});
// https://electronjs.org/docs/tutorial/security#12-disable-or-limit-navigation
app.on("web-contents-created", (event, contents) => {
contents.on("will-navigate", (contentsEvent, navigationUrl) => {
/* eng-disable LIMIT_NAVIGATION_JS_CHECK */
const parsedUrl = new URL(navigationUrl);
const validOrigins = [selfHost];
// Log and prevent the app from navigating to a new page if that page's origin is not whitelisted
if (!validOrigins.includes(parsedUrl.origin)) {
console.error(
`The application tried to navigate to the following address: '${parsedUrl}'. This origin is not whitelisted and the attempt to navigate was blocked.`
);
contentsEvent.preventDefault();
}
});
contents.on("will-redirect", (contentsEvent, navigationUrl) => {
const parsedUrl = new URL(navigationUrl);
const validOrigins = [];
// Log and prevent the app from redirecting to a new page
if (!validOrigins.includes(parsedUrl.origin)) {
console.error(
`The application tried to redirect to the following address: '${navigationUrl}'. This attempt was blocked.`
);
contentsEvent.preventDefault();
}
});
// https://electronjs.org/docs/tutorial/security#11-verify-webview-options-before-creation
contents.on("will-attach-webview", (contentsEvent, webPreferences, params) => {
// Strip away preload scripts if unused or verify their location is legitimate
delete webPreferences.preload;
delete webPreferences.preloadURL;
// Disable Node.js integration
webPreferences.nodeIntegration = false;
});
// https://electronjs.org/docs/tutorial/security#13-disable-or-limit-creation-of-new-windows
// This code replaces the old "new-window" event handling;
// https://github.com/electron/electron/pull/24517#issue-447670981
contents.setWindowOpenHandler(({
url
}) => {
const parsedUrl = new URL(url);
const validOrigins = [];
// Log and prevent opening up a new window
if (!validOrigins.includes(parsedUrl.origin)) {
console.error(
`The application tried to open a new window at the following address: '${url}'. This attempt was blocked.`
);
return {
action: "deny"
};
}
return {
action: "allow"
};
});
});
// Filter loading any module via remote;
// you shouldn't be using remote at all, though
// https://electronjs.org/docs/tutorial/security#16-filter-the-remote-module
app.on("remote-require", (event, webContents, moduleName) => {
event.preventDefault();
});
// built-ins are modules such as "app"
app.on("remote-get-builtin", (event, webContents, moduleName) => {
event.preventDefault();
});
app.on("remote-get-global", (event, webContents, globalName) => {
event.preventDefault();
});
app.on("remote-get-current-window", (event, webContents) => {
event.preventDefault();
});
app.on("remote-get-current-web-contents", (event, webContents) => {
event.preventDefault();
});
ipcMain.on('getISO', isoSeries);
ipcMain.handle('checkUpdates', async () => {
let response = await fetchLatestCommit();
return response;
});
ipcMain.on('build', buildGame);
ipcMain.on('launch', launchGame);
app.on('status', (status) => {
win.webContents.send('status', status);
});

View file

@ -1,250 +0,0 @@
const { Menu, MenuItem, BrowserWindow } = require("electron");
const i18nBackend = require("i18next-electron-fs-backend");
const whitelist = require("../localization/whitelist");
const isMac = process.platform === "darwin";
const MenuBuilder = function(mainWindow, appName) {
// https://electronjs.org/docs/api/menu#main-process
const defaultTemplate = function(i18nextMainBackend) {
return [
// { role: "appMenu" }
...(isMac
? [
{
label: appName,
submenu: [
{
role: "about",
label: i18nextMainBackend.t("About")
},
{
type: "separator"
},
{
role: "services",
label: i18nextMainBackend.t("Services")
},
{
type: "separator"
},
{
role: "hide",
label: i18nextMainBackend.t("Hide")
},
{
role: "hideothers",
label: i18nextMainBackend.t("Hide Others")
},
{
role: "unhide",
label: i18nextMainBackend.t("Unhide")
},
{
type: "separator"
},
{
role: "quit",
label: i18nextMainBackend.t("Quit")
}
]
}
]
: []),
// { role: "fileMenu" }
{
label: i18nextMainBackend.t("File"),
submenu: [
isMac
? {
role: "close",
label: i18nextMainBackend.t("Quit")
}
: {
role: "quit",
label: i18nextMainBackend.t("Exit")
}
]
},
// { role: "editMenu" }
{
label: i18nextMainBackend.t("Edit"),
submenu: [
{
role: "undo",
label: i18nextMainBackend.t("Undo")
},
{
role: "redo",
label: i18nextMainBackend.t("Redo")
},
{
type: "separator"
},
{
role: "cut",
label: i18nextMainBackend.t("Cut")
},
{
role: "copy",
label: i18nextMainBackend.t("Copy")
},
{
role: "paste",
label: i18nextMainBackend.t("Paste")
},
...(isMac
? [
{
role: "pasteAndMatchStyle",
label: i18nextMainBackend.t("Paste and Match Style")
},
{
role: "delete",
label: i18nextMainBackend.t("Delete")
},
{
role: "selectAll",
label: i18nextMainBackend.t("Select All")
},
{
type: "separator"
},
{
label: i18nextMainBackend.t("Speech"),
submenu: [
{
role: "startspeaking",
label: i18nextMainBackend.t("Start Speaking")
},
{
role: "stopspeaking",
label: i18nextMainBackend.t("Stop Speaking")
}
]
}
]
: [
{
role: "delete",
label: i18nextMainBackend.t("Delete")
},
{
type: "separator"
},
{
role: "selectAll",
label: i18nextMainBackend.t("Select All")
}
])
]
},
// { role: "viewMenu" }
{
label: i18nextMainBackend.t("View"),
submenu: [
{
role: "reload",
label: i18nextMainBackend.t("Reload")
},
{
role: "forcereload",
label: i18nextMainBackend.t("Force Reload")
},
{
role: "toggledevtools",
label: i18nextMainBackend.t("Toggle Developer Tools")
},
{
type: "separator"
},
{
role: "resetzoom",
label: i18nextMainBackend.t("Reset Zoom")
},
{
role: "zoomin",
label: i18nextMainBackend.t("Zoom In")
},
{
role: "zoomout",
label: i18nextMainBackend.t("Zoom Out")
},
{
type: "separator"
},
{
role: "togglefullscreen",
label: i18nextMainBackend.t("Toggle Fullscreen")
}
]
},
// language menu
{
label: i18nextMainBackend.t("Language"),
submenu: whitelist.buildSubmenu(i18nBackend.changeLanguageRequest, i18nextMainBackend)
},
// { role: "windowMenu" }
{
label: i18nextMainBackend.t("Window"),
submenu: [
{
role: "minimize",
label: i18nextMainBackend.t("Minimize")
},
{
role: "zoom",
label: i18nextMainBackend.t("Zoom")
},
...(isMac
? [
{
type: "separator"
},
{
role: "front",
label: i18nextMainBackend.t("Front")
},
{
type: "separator"
},
{
role: "window",
label: i18nextMainBackend.t("Window")
}
]
: [
{
role: "close",
label: i18nextMainBackend.t("Close")
}
])
]
},
{
role: "help",
label: i18nextMainBackend.t("Help"),
submenu: [
{
label: i18nextMainBackend.t("Learn More"),
click: async () => {
const { shell } = require("electron");
await shell.openExternal("https://electronjs.org");
}
}
]
}
];
};
return {
buildMenu: function(i18nextMainBackend) {
const menu = Menu.buildFromTemplate(defaultTemplate(i18nextMainBackend));
Menu.setApplicationMenu(menu);
return menu;
}
};
};
module.exports = MenuBuilder;

View file

@ -1,32 +0,0 @@
const { contextBridge, ipcRenderer } = require("electron");
const fs = require("fs");
const i18nextBackend = require("i18next-electron-fs-backend");
const Store = require("secure-electron-store").default;
const ContextMenu = require("secure-electron-context-menu").default;
const SecureElectronLicenseKeys = require("secure-electron-license-keys");
// Create the electron store to be made available in the renderer process
const store = new Store();
// Expose protected methods that allow the renderer process to use
// the ipcRenderer without exposing the entire object
contextBridge.exposeInMainWorld("api", {
i18nextElectronBackend: i18nextBackend.preloadBindings(ipcRenderer, process),
store: store.preloadBindings(ipcRenderer, fs),
contextMenu: ContextMenu.preloadBindings(ipcRenderer),
licenseKeys: SecureElectronLicenseKeys.preloadBindings(ipcRenderer),
// were gonna figure out redux store in the future, but for now this is how im gonna communicate between front-end/backend
send: (command) => {
let validCommands = ['getISO', 'checkUpdates', 'launch', 'build'];
if (validCommands.includes(command)) {
ipcRenderer.send(command);
}
},
receive: (channel, func) => {
let validChannels = ["fromMain", 'status'];
if (validChannels.includes(channel)) {
// Deliberately strip event as it includes `sender`
ipcRenderer.on(channel, (event, ...args) => func(...args));
}
}
});

View file

@ -1,70 +0,0 @@
/*
Reasonably Secure Electron
Copyright (C) 2021 Bishop Fox
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------------------------------------------------------------
Implementing a custom protocol achieves two goals:
1) Allows us to use ES6 modules/targets for Angular
2) Avoids running the app in a file:// origin
*/
const fs = require("fs");
const path = require("path");
const DIST_PATH = path.join(__dirname, "../../app/dist");
const scheme = "app";
const mimeTypes = {
".js": "text/javascript",
".mjs": "text/javascript",
".html": "text/html",
".htm": "text/html",
".json": "application/json",
".css": "text/css",
".svg": "image/svg+xml",
".ico": "image/vnd.microsoft.icon",
".png": "image/png",
".jpg": "image/jpeg",
".map": "text/plain"
};
function charset(mimeType) {
return [".html", ".htm", ".js", ".mjs"].some((m) => m === mimeType) ?
"utf-8" :
null;
}
function mime(filename) {
const type = mimeTypes[path.extname(`${filename || ""}`).toLowerCase()];
return type ? type : null;
}
function requestHandler(req, next) {
const reqUrl = new URL(req.url);
let reqPath = path.normalize(reqUrl.pathname);
if (reqPath === "/") {
reqPath = "/index.html";
}
const reqFilename = path.basename(reqPath);
fs.readFile(path.join(DIST_PATH, reqPath), (err, data) => {
const mimeType = mime(reqFilename);
if (!err && mimeType !== null) {
next({
mimeType: mimeType,
charset: charset(mimeType),
data: data
});
} else {
console.error(err);
}
});
}
module.exports = {
scheme,
requestHandler
};

View file

@ -1,39 +0,0 @@
const i18n = require("i18next");
const reactI18Next = require("react-i18next");
const i18nBackend = require("i18next-electron-fs-backend").default;
const whitelist = require("./whitelist");
// On Mac, the folder for resources isn't
// in the same directory as Linux/Windows;
// https://www.electron.build/configuration/contents#extrafiles
const isMac = window.api.i18nextElectronBackend.clientOptions.platform === "darwin";
const isDev = window.api.i18nextElectronBackend.clientOptions.environment === "development";
const prependPath = isMac && !isDev ? window.api.i18nextElectronBackend.clientOptions.resourcesPath : ".";
i18n
.use(i18nBackend)
.use(reactI18Next.initReactI18next)
.init({
backend: {
loadPath: prependPath + "/app/localization/locales/{{lng}}/{{ns}}.json",
addPath: prependPath + "/app/localization/locales/{{lng}}/{{ns}}.missing.json",
ipcRenderer: window.api.i18nextElectronBackend
},
debug: false,
namespace: "translation",
saveMissing: true,
saveMissingTo: "current",
lng: "en",
fallbackLng: false, // set to false when generating translation files locally
supportedLngs: whitelist.langs
});
window.api.i18nextElectronBackend.onLanguageChange((args) => {
i18n.changeLanguage(args.lng, (error, t) => {
if (error) {
console.error(error);
}
});
});
module.exports = i18n;

View file

@ -1,29 +0,0 @@
const i18n = require("i18next");
const backend = require("i18next-fs-backend");
const whitelist = require("./whitelist");
// On Mac, the folder for resources isn't
// in the same directory as Linux/Windows;
// https://www.electron.build/configuration/contents#extrafiles
const path = require("path");
const isMac = process.platform === "darwin";
const isDev = process.env.NODE_ENV === "development";
const prependPath = isMac && !isDev ? path.join(process.resourcesPath, "..") : ".";
i18n
.use(backend)
.init({
backend: {
loadPath: prependPath + "/app/localization/locales/{{lng}}/{{ns}}.json",
addPath: prependPath + "/app/localization/locales/{{lng}}/{{ns}}.missing.json"
},
debug: false,
namespace: "translation",
saveMissing: true,
saveMissingTo: "current",
lng: "en",
fallbackLng: false, // set to false when generating translation files locally
supportedLngs: whitelist.langs
});
module.exports = i18n;

View file

@ -1,28 +0,0 @@
{
"Hello": "hallo",
"File": "Lêer",
"Exit": "Uitgang",
"Edit": "Wysig",
"Undo": "Ontdoen",
"Redo": "Herhaal",
"Cut": "Sny",
"Copy": "Kopieer",
"Paste": "Plak",
"Delete": "Vee uit",
"Select All": "Kies Alles",
"View": "Beskou",
"Reload": "Herlaai",
"Force Reload": "Dwing herlaai",
"Toggle Developer Tools": "Skakel ontwikkelaarhulpmiddels",
"Reset Zoom": "Stel die zoom terug",
"Zoom In": "Zoom in",
"Zoom Out": "Zoom uit",
"Toggle Fullscreen": "Skakel volskerm",
"Language": "Taal",
"Window": "Venster",
"Minimize": "Minimaliseer",
"Zoom": "Zoom in",
"Close": "Naby",
"Help": "Hulp",
"Learn More": "Leer meer"
}

View file

@ -1,13 +0,0 @@
{
"About": "About",
"Services": "Services",
"Hide": "Hide",
"Hide Others": "Hide Others",
"Unhide": "Unhide",
"Quit": "Quit",
"Paste and Match Style": "Paste and Match Style",
"Speech": "Speech",
"Start Speaking": "Start Speaking",
"Stop Speaking": "Stop Speaking",
"Front": "Front"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "እው ሰላም ነው",
"File": "ፋይል",
"Exit": "መውጫ",
"Edit": "አርትዕ",
"Undo": "ቀልብስ",
"Redo": "ድገም",
"Cut": "ቁረጥ",
"Copy": "ገልብጥ",
"Paste": "ለጥፍ",
"Delete": "ሰርዝ",
"Select All": "ሁሉንም ምረጥ",
"View": "አሳይ",
"Reload": "እንደገና ጫን",
"Force Reload": "አስገዳጅ ዳግም ጫን",
"Toggle Developer Tools": "የገንቢ መሣሪያዎችን ይቀያይሩ",
"Reset Zoom": "አጉላ ዳግም አስጀምር",
"Zoom In": "አቅርብ",
"Zoom Out": "አጉላ",
"Toggle Fullscreen": "ሙሉ ማያ ገጽን ይቀያይሩ",
"Language": "ቋንቋ",
"Window": "መስኮት",
"Minimize": "አሳንስ",
"Zoom": "አጉላ",
"Close": "ገጠመ",
"Help": "እገዛ",
"Learn More": "ተጨማሪ እወቅ"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "مرحبا",
"File": "ملف",
"Exit": "خروج",
"Edit": "تعديل",
"Undo": "الغاء التحميل",
"Redo": "إعادة",
"Cut": "يقطع",
"Copy": "نسخ",
"Paste": "معجون",
"Delete": "حذف",
"Select All": "اختر الكل",
"View": "رأي",
"Reload": "إعادة تحميل",
"Force Reload": "فرض إعادة التحميل",
"Toggle Developer Tools": "تبديل أدوات المطور",
"Reset Zoom": "إعادة تعيين التكبير",
"Zoom In": "تكبير",
"Zoom Out": "تصغير",
"Toggle Fullscreen": "ملء الشاشة تبديل",
"Language": "لغة",
"Window": "نافذة او شباك",
"Minimize": "تصغير",
"Zoom": "تكبير",
"Close": "قريب",
"Help": "مساعدة",
"Learn More": "أعرف أكثر"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Здравейте",
"File": "Файл",
"Exit": "Изход",
"Edit": "Pедактиране",
"Undo": "Отмяна",
"Redo": "Повторно",
"Cut": "Разрез",
"Copy": "копие",
"Paste": "Поставете",
"Delete": "Изтрий",
"Select All": "Избери всички",
"View": "Изглед",
"Reload": "Презаредете",
"Force Reload": "Принудително презареждане",
"Toggle Developer Tools": "Превключете Инструменти за програмисти",
"Reset Zoom": "Нулирайте мащаба",
"Zoom In": "Увеличавам",
"Zoom Out": "Отдалечавам",
"Toggle Fullscreen": "Превключване на цял екран",
"Language": "Език",
"Window": "Прозорец",
"Minimize": "Минимизиране",
"Zoom": "Мащабиране",
"Close": "Близо",
"Help": "Помогне",
"Learn More": "Научете повече"
}

View file

@ -1,13 +0,0 @@
{
"About": "About",
"Services": "Services",
"Hide": "Hide",
"Hide Others": "Hide Others",
"Unhide": "Unhide",
"Quit": "Quit",
"Paste and Match Style": "Paste and Match Style",
"Speech": "Speech",
"Start Speaking": "Start Speaking",
"Stop Speaking": "Stop Speaking",
"Front": "Front"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hola",
"File": "Dossier",
"Exit": "Surt",
"Edit": "Edita",
"Undo": "Desfés",
"Redo": "Refés",
"Cut": "Tallar",
"Copy": "Copia",
"Paste": "Enganxa",
"Delete": "Suprimeix",
"Select All": "Seleccionar tot",
"View": "Veure",
"Reload": "Recarregar",
"Force Reload": "Força la recàrrega",
"Toggle Developer Tools": "Commuta les eines per a desenvolupadors",
"Reset Zoom": "Restableix el zoom",
"Zoom In": "Ampliar",
"Zoom Out": "Disminuir el zoom",
"Toggle Fullscreen": "Commuta la pantalla completa",
"Language": "Llenguatge",
"Window": "Finestra",
"Minimize": "Minimitzar",
"Zoom": "Zoom",
"Close": "Tanca",
"Help": "Ajuda",
"Learn More": "Aprèn més"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Ahoj",
"File": "Soubor",
"Exit": "Výstup",
"Edit": "Upravit",
"Undo": "Vrátit",
"Redo": "Předělat",
"Cut": "Střih",
"Copy": "Kopírovat",
"Paste": "Vložit",
"Delete": "Vymazat",
"Select All": "Vybrat vše",
"View": "Pohled",
"Reload": "Znovu načíst",
"Force Reload": "Force Reload",
"Toggle Developer Tools": "Přepnout vývojářské nástroje",
"Reset Zoom": "Obnovit přiblížení",
"Zoom In": "Přiblížit",
"Zoom Out": "Oddálit",
"Toggle Fullscreen": "Přepnout na celou obrazovku",
"Language": "Jazyk",
"Window": "Okno",
"Minimize": "Minimalizovat",
"Zoom": "Zvětšení",
"Close": "Zavřít",
"Help": "Pomoc",
"Learn More": "Zjistit více"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hej",
"File": "Fil",
"Exit": "Afslut",
"Edit": "Redigere",
"Undo": "Fortryd",
"Redo": "Gentag igen",
"Cut": "Skære",
"Copy": "Kopi",
"Paste": "sæt ind",
"Delete": "Slet",
"Select All": "Vælg alle",
"View": "Udsigt",
"Reload": "Genindlæs",
"Force Reload": "Tving genindlæsning",
"Toggle Developer Tools": "Skift udviklerværktøjer",
"Reset Zoom": "Nulstil zoom",
"Zoom In": "Zoom ind",
"Zoom Out": "Zoome ud",
"Toggle Fullscreen": "Skift fuld skærm",
"Language": "Sprog",
"Window": "Vindue",
"Minimize": "Minimer",
"Zoom": "Zoom",
"Close": "Tæt",
"Help": "Hjælp",
"Learn More": "Lær mere"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hallo",
"File": "Datei",
"Exit": "Ausgang",
"Edit": "Bearbeiten",
"Undo": "Rückgängig machen",
"Redo": "Wiederholen",
"Cut": "Schnitt",
"Copy": "Kopieren",
"Paste": "Einfügen",
"Delete": "Löschen",
"Select All": "Wählen Sie Alle",
"View": "Aussicht",
"Reload": "Neu laden",
"Force Reload": "Nachladen erzwingen",
"Toggle Developer Tools": "Entwickler-Tools umschalten",
"Reset Zoom": "Zoom zurücksetzen",
"Zoom In": "Hineinzoomen",
"Zoom Out": "Rauszoomen",
"Toggle Fullscreen": "Vollbild umschalten",
"Language": "Sprache",
"Window": "Fenster",
"Minimize": "Minimieren",
"Zoom": "Zoomen",
"Close": "Schließen",
"Help": "Hilfe",
"Learn More": "Erfahren Sie mehr"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Γειά σου",
"File": "Αρχείο",
"Exit": "Εξοδος",
"Edit": "Επεξεργασία",
"Undo": "Ξεκάνω",
"Redo": "Ξανακάνω",
"Cut": "Τομή",
"Copy": "αντίγραφο",
"Paste": "Επικόλληση",
"Delete": "Διαγράφω",
"Select All": "Επιλογή όλων",
"View": "Θέα",
"Reload": "Φορτώνω πάλι",
"Force Reload": "Αναγκαστική επαναφόρτωση",
"Toggle Developer Tools": "Εναλλαγή εργαλείων προγραμματιστή",
"Reset Zoom": "Επαναφορά ζουμ",
"Zoom In": "Μεγέθυνση",
"Zoom Out": "Σμίκρυνση",
"Toggle Fullscreen": "Λειτουργεία πλήρους οθόνης",
"Language": "Γλώσσα",
"Window": "Παράθυρο",
"Minimize": "Σμικροποιώ",
"Zoom": "Ανίπταμαι διαγωνίως",
"Close": "Κλείσε",
"Help": "Βοήθεια",
"Learn More": "Μάθε περισσότερα"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hello",
"File": "File",
"Exit": "Exit",
"Edit": "Edit",
"Undo": "Undo",
"Redo": "Redo",
"Cut": "Cut",
"Copy": "Copy",
"Paste": "Paste",
"Delete": "Delete",
"Select All": "Select All",
"View": "View",
"Reload": "Reload",
"Force Reload": "Force Reload",
"Toggle Developer Tools": "Toggle Developer Tools",
"Reset Zoom": "Reset Zoom",
"Zoom In": "Zoom In",
"Zoom Out": "Zoom Out",
"Toggle Fullscreen": "Toggle Fullscreen",
"Language": "Language",
"Window": "Window",
"Minimize": "Minimize",
"Zoom": "Zoom",
"Close": "Close",
"Help": "Help",
"Learn More": "Learn More"
}

View file

@ -1,13 +0,0 @@
{
"About": "About",
"Services": "Services",
"Hide": "Hide",
"Hide Others": "Hide Others",
"Unhide": "Unhide",
"Quit": "Quit",
"Paste and Match Style": "Paste and Match Style",
"Speech": "Speech",
"Start Speaking": "Start Speaking",
"Stop Speaking": "Stop Speaking",
"Front": "Front"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hola",
"File": "Archivo",
"Exit": "Salida",
"Edit": "Editar",
"Undo": "Deshacer",
"Redo": "Rehacer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Pegar",
"Delete": "Eliminar",
"Select All": "Seleccionar todo",
"View": "Ver",
"Reload": "Recargar",
"Force Reload": "Forzar recarga",
"Toggle Developer Tools": "Alternar herramientas para desarrolladores",
"Reset Zoom": "Restablecer zoom",
"Zoom In": "Acercarse",
"Zoom Out": "Disminuir el zoom",
"Toggle Fullscreen": "Alternar pantalla completa",
"Language": "Idioma",
"Window": "Ventana",
"Minimize": "Minimizar",
"Zoom": "Enfocar",
"Close": "Cerrar",
"Help": "Ayuda",
"Learn More": "Aprende más"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Tere",
"File": "Fail",
"Exit": "Välju",
"Edit": "Muuda",
"Undo": "Võta tagasi",
"Redo": "Tee uuesti",
"Cut": "Lõika",
"Copy": "Kopeeri",
"Paste": "Kleepige",
"Delete": "Kustuta",
"Select All": "Vali kõik",
"View": "Vaade",
"Reload": "Laadige uuesti",
"Force Reload": "Sundige uuesti laadima",
"Toggle Developer Tools": "Lülitage arendaja tööriistad sisse ja välja",
"Reset Zoom": "Lähtesta suum",
"Zoom In": "Suurenda",
"Zoom Out": "Suumi välja",
"Toggle Fullscreen": "Lülitab täisekraani sisse",
"Language": "Keel",
"Window": "Aken",
"Minimize": "Minimeeri",
"Zoom": "Suum",
"Close": "Sulge",
"Help": "Abi",
"Learn More": "Lisateave"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "سلام",
"File": "فایل",
"Exit": "خروج",
"Edit": "ویرایش کنید",
"Undo": "واگرد",
"Redo": "دوباره انجام دهید",
"Cut": "قطع كردن",
"Copy": "کپی 🀄",
"Paste": "چسباندن",
"Delete": "حذف",
"Select All": "انتخاب همه",
"View": "چشم انداز",
"Reload": "بارگیری مجدد",
"Force Reload": "بارگیری مجدد",
"Toggle Developer Tools": "Toggle Developer Tools",
"Reset Zoom": "تنظیم مجدد بزرگنمایی",
"Zoom In": "بزرگنمایی",
"Zoom Out": "کوچک نمایی",
"Toggle Fullscreen": "تغییر حالت تمام صفحه",
"Language": "زبان",
"Window": "پنجره",
"Minimize": "به حداقل رساندن",
"Zoom": "بزرگنمایی",
"Close": "نزدیک",
"Help": "کمک",
"Learn More": "بیشتر بدانید"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hei",
"File": "Tiedosto",
"Exit": "Lopeta",
"Edit": "Muokata",
"Undo": "Kumoa",
"Redo": "Tee uudelleen",
"Cut": "Leikata",
"Copy": "Kopio",
"Paste": "Liitä",
"Delete": "Poistaa",
"Select All": "Valitse kaikki",
"View": "Näytä",
"Reload": "Lataa uudelleen",
"Force Reload": "Pakota uudelleen",
"Toggle Developer Tools": "Toggle Kehittäjän työkalut",
"Reset Zoom": "Nollaa zoomaus",
"Zoom In": "Lähennä",
"Zoom Out": "Loitontaa",
"Toggle Fullscreen": "Vaihda Koko näyttö",
"Language": "Kieli",
"Window": "Ikkuna",
"Minimize": "Minimoida",
"Zoom": "Zoomaus",
"Close": "kiinni",
"Help": "auta",
"Learn More": "Lisätietoja"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Kamusta",
"File": "File",
"Exit": "Lumabas",
"Edit": "I-edit",
"Undo": "Pawalang-bisa",
"Redo": "Gawing muli",
"Cut": "Gupitin",
"Copy": "Kopya",
"Paste": "I-paste",
"Delete": "Tanggalin",
"Select All": "Piliin lahat",
"View": "Tingnan",
"Reload": "Reload",
"Force Reload": "Force Reload",
"Toggle Developer Tools": "I-toggle ang Mga Tool ng Developer",
"Reset Zoom": "I-reset ang Pag-zoom",
"Zoom In": "Palakihin",
"Zoom Out": "Mag-zoom Out",
"Toggle Fullscreen": "I-toggle ang Fullscreen",
"Language": "Wika",
"Window": "Window",
"Minimize": "I-minimize",
"Zoom": "Mag-zoom",
"Close": "Isara",
"Help": "Tulong",
"Learn More": "Matuto Nang Higit Pa"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Bonjour",
"File": "Fichier",
"Exit": "Quitter",
"Edit": "Éditer",
"Undo": "Annuler",
"Redo": "Rétablir",
"Cut": "Couper",
"Copy": "Copier",
"Paste": "Coller",
"Delete": "Effacer",
"Select All": "Tout sélectionner",
"View": "Vue",
"Reload": "Recharger",
"Force Reload": "Rechargement forcé",
"Toggle Developer Tools": "Outils de développement",
"Reset Zoom": "Réinitialiser le zoom",
"Zoom In": "Agrandir",
"Zoom Out": "Réduire",
"Toggle Fullscreen": "Basculer en plein écran",
"Language": "Langue",
"Window": "Fenêtre",
"Minimize": "Minimiser",
"Zoom": "Zoom",
"Close": "Fermer",
"Help": "Aide",
"Learn More": "En apprendre plus"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "નમસ્તે",
"File": "ફાઇલ",
"Exit": "બહાર નીકળો",
"Edit": "સંપાદિત કરો",
"Undo": "પૂર્વવત્ કરો",
"Redo": "ફરી કરો",
"Cut": "કાપવું",
"Copy": "નકલ કરો",
"Paste": "પેસ્ટ કરો",
"Delete": "કા .ી નાખો",
"Select All": "બધા પસંદ કરો",
"View": "જુઓ",
"Reload": "ફરીથી લોડ",
"Force Reload": "ફરીથી લોડ કરો",
"Toggle Developer Tools": "ટ Developગલ વિકાસકર્તા સાધનો",
"Reset Zoom": "ઝૂમ ફરીથી સેટ કરો",
"Zoom In": "મોટું કરો",
"Zoom Out": "ઝૂમ આઉટ",
"Toggle Fullscreen": "પૂર્ણસ્ક્રીન ટogગલ કરો",
"Language": "ભાષા",
"Window": "વિંડો",
"Minimize": "ઘટાડવા",
"Zoom": "ઝૂમ",
"Close": "બંધ",
"Help": "સહાય કરો",
"Learn More": "વધુ શીખો"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "שלום",
"File": "קוֹבֶץ",
"Exit": "יְצִיאָה",
"Edit": "לַעֲרוֹך",
"Undo": "לבטל",
"Redo": "לַעֲשׂוֹת שׁוּב",
"Cut": "גזירה",
"Copy": "עותק",
"Paste": "לְהַדבִּיק",
"Delete": "לִמְחוֹק",
"Select All": "בחר הכל",
"View": "נוף",
"Reload": "לִטעוֹן מִחָדָשׁ",
"Force Reload": "כוח טעינה מחדש",
"Toggle Developer Tools": "החלף את הכלים למפתחים",
"Reset Zoom": "אפס זום",
"Zoom In": "לְהִתְמַקֵד",
"Zoom Out": "להקטין את התצוגה",
"Toggle Fullscreen": "החלף מסך מלא",
"Language": "שפה",
"Window": "חַלוֹן",
"Minimize": "לְצַמְצֵם",
"Zoom": "תקריב",
"Close": "סגור",
"Help": "עֶזרָה",
"Learn More": "למד עוד"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "नमस्कार",
"File": "फ़ाइल",
"Exit": "बाहर जाएं",
"Edit": "संपादित करें",
"Undo": "पूर्ववत करें",
"Redo": "फिर से करें",
"Cut": "कट गया",
"Copy": "कॉपी करें",
"Paste": "चिपकाना",
"Delete": "हटा दें",
"Select All": "सबका चयन करें",
"View": "राय",
"Reload": "पुनः लोड करें",
"Force Reload": "फोर्स रीलोड",
"Toggle Developer Tools": "डेवलपर टूल टॉगल करें",
"Reset Zoom": "ज़ूम रीसेट करें",
"Zoom In": "ज़ूम इन",
"Zoom Out": "ज़ूम आउट",
"Toggle Fullscreen": "पूर्णस्क्रीन चालू करें",
"Language": "भाषा: हिन्दी",
"Window": "खिड़की",
"Minimize": "छोटा करना",
"Zoom": "ज़ूम",
"Close": "बंद करे",
"Help": "हाथ बटाना",
"Learn More": "और अधिक जानें"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "zdravo",
"File": "Datoteka",
"Exit": "Izlaz",
"Edit": "Uredi",
"Undo": "Poništi",
"Redo": "Ponovi",
"Cut": "Izrezati",
"Copy": "Kopirati",
"Paste": "Zalijepiti",
"Delete": "Izbrisati",
"Select All": "Odaberi sve",
"View": "Pogled",
"Reload": "Ponovno učitati",
"Force Reload": "Prisilno ponovno učitavanje",
"Toggle Developer Tools": "Uključi / isključi alate za programere",
"Reset Zoom": "Resetiraj zumiranje",
"Zoom In": "Povećaj",
"Zoom Out": "Umanji",
"Toggle Fullscreen": "Uključi / isključi cijeli zaslon",
"Language": "Jezik",
"Window": "Prozor",
"Minimize": "Minimizirajte",
"Zoom": "Zum",
"Close": "Zatvoriti",
"Help": "Pomozite",
"Learn More": "Saznajte više"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Helló",
"File": "File",
"Exit": "Kijárat",
"Edit": "Szerkesztés",
"Undo": "Visszavonás",
"Redo": "Újra",
"Cut": "Vágott",
"Copy": "Másolat",
"Paste": "Paszta",
"Delete": "Töröl",
"Select All": "Mindet kiválaszt",
"View": "Kilátás",
"Reload": "Újratöltés",
"Force Reload": "Újratöltés kényszerítése",
"Toggle Developer Tools": "Toggle Fejlesztői eszközök",
"Reset Zoom": "A nagyítás visszaállítása",
"Zoom In": "Ráközelíteni",
"Zoom Out": "Kicsinyítés",
"Toggle Fullscreen": "Teljes képernyőre váltás",
"Language": "Nyelv",
"Window": "Ablak",
"Minimize": "Minimalizálja",
"Zoom": "Zoomolás",
"Close": "Bezárás",
"Help": "Segítség",
"Learn More": "Tudj meg többet"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Halo",
"File": "Mengajukan",
"Exit": "Keluar",
"Edit": "Edit",
"Undo": "Membuka",
"Redo": "Mengulangi",
"Cut": "Memotong",
"Copy": "Salinan",
"Paste": "Tempel",
"Delete": "Menghapus",
"Select All": "Pilih Semua",
"View": "Melihat",
"Reload": "Muat ulang",
"Force Reload": "Paksa Muat Ulang",
"Toggle Developer Tools": "Alihkan Alat Pengembang",
"Reset Zoom": "Setel Ulang Zoom",
"Zoom In": "Perbesar",
"Zoom Out": "Perkecil",
"Toggle Fullscreen": "Alihkan Layar Penuh",
"Language": "Bahasa",
"Window": "Jendela",
"Minimize": "Memperkecil",
"Zoom": "Perbesar",
"Close": "Menutup",
"Help": "Tolong",
"Learn More": "Belajarlah lagi"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Ciao",
"File": "File",
"Exit": "Uscita",
"Edit": "modificare",
"Undo": "Disfare",
"Redo": "Rifare",
"Cut": "Tagliare",
"Copy": "copia",
"Paste": "Incolla",
"Delete": "Elimina",
"Select All": "Seleziona tutto",
"View": "Visualizza",
"Reload": "Ricaricare",
"Force Reload": "Forza ricarica",
"Toggle Developer Tools": "Attiva / disattiva strumenti per sviluppatori",
"Reset Zoom": "Ripristina zoom",
"Zoom In": "Ingrandire",
"Zoom Out": "Zoom indietro",
"Toggle Fullscreen": "Passare a schermo intero",
"Language": "linguaggio",
"Window": "Finestra",
"Minimize": "Minimizzare",
"Zoom": "Ingrandisci",
"Close": "Vicino",
"Help": "Aiuto",
"Learn More": "Per saperne di più"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "こんにちは",
"File": "ファイル",
"Exit": "出口",
"Edit": "編集",
"Undo": "元に戻す",
"Redo": "やり直し",
"Cut": "切る",
"Copy": "コピー",
"Paste": "ペースト",
"Delete": "削除",
"Select All": "すべて選択",
"View": "見る",
"Reload": "リロード",
"Force Reload": "強制リロード",
"Toggle Developer Tools": "開発者ツールの切り替え",
"Reset Zoom": "ズームをリセット",
"Zoom In": "ズームイン",
"Zoom Out": "ズームアウトする",
"Toggle Fullscreen": "フルスクリーン切り替え",
"Language": "言語",
"Window": "窓",
"Minimize": "最小化",
"Zoom": "ズーム",
"Close": "閉じる",
"Help": "助けて",
"Learn More": "もっと詳しく知る"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "ಹಲೋ",
"File": "ಫೈಲ್",
"Exit": "ನಿರ್ಗಮಿಸಿ",
"Edit": "ತಿದ್ದು",
"Undo": "ರದ್ದುಗೊಳಿಸಿ",
"Redo": "ಮತ್ತೆಮಾಡು",
"Cut": "ಕತ್ತರಿಸಿ",
"Copy": "ನಕಲಿಸಿ",
"Paste": "ಅಂಟಿಸಿ",
"Delete": "ಅಳಿಸಿ",
"Select All": "ಎಲ್ಲವನ್ನು ಆರಿಸು",
"View": "ನೋಟ",
"Reload": "ಮರುಲೋಡ್ ಮಾಡಿ",
"Force Reload": "ಫೋರ್ಸ್ ರೀಲೋಡ್",
"Toggle Developer Tools": "ಡೆವಲಪರ್ ಪರಿಕರಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ",
"Reset Zoom": "ಜೂಮ್ ಅನ್ನು ಮರುಹೊಂದಿಸಿ",
"Zoom In": "ಇನ್ನು ಹತ್ತಿರವಾಗಿಸಿ",
"Zoom Out": "O ೂಮ್ .ಟ್ ಮಾಡಿ",
"Toggle Fullscreen": "ಪೂರ್ಣಪರದೆ ಟಾಗಲ್ ಮಾಡಿ",
"Language": "ಭಾಷೆ",
"Window": "ಕಿಟಕಿ",
"Minimize": "ಕಡಿಮೆ ಮಾಡಿ",
"Zoom": "O ೂಮ್ ಮಾಡಿ",
"Close": "ಮುಚ್ಚಿ",
"Help": "ಸಹಾಯ",
"Learn More": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "여보세요",
"File": "파일",
"Exit": "출구",
"Edit": "편집하다",
"Undo": "실행 취소",
"Redo": "다시 하다",
"Cut": "절단",
"Copy": "부",
"Paste": "풀",
"Delete": "지우다",
"Select All": "모두 선택",
"View": "전망",
"Reload": "새로 고침",
"Force Reload": "강제 재 장전",
"Toggle Developer Tools": "개발자 도구 전환",
"Reset Zoom": "줌 재설정",
"Zoom In": "확대",
"Zoom Out": "축소",
"Toggle Fullscreen": "전체 화면 전환",
"Language": "언어",
"Window": "창문",
"Minimize": "최소화",
"Zoom": "줌",
"Close": "닫기",
"Help": "도움",
"Learn More": "더 알아보기"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Sveiki",
"File": "Failas",
"Exit": "Išeiti",
"Edit": "Redaguoti",
"Undo": "Atšaukti",
"Redo": "Perdaryti",
"Cut": "Iškirpti",
"Copy": "Kopijuoti",
"Paste": "Įklijuoti",
"Delete": "Ištrinti",
"Select All": "Pasirinkti viską",
"View": "Vaizdas",
"Reload": "Perkrauti",
"Force Reload": "Priversti perkrauti",
"Toggle Developer Tools": "Perjungti kūrėjo įrankius",
"Reset Zoom": "Atstatyti mastelį",
"Zoom In": "Priartinti",
"Zoom Out": "Nutolinti",
"Toggle Fullscreen": "Įjungti pilnojo ekrano režimą",
"Language": "Kalba",
"Window": "Langas",
"Minimize": "Sumažinkite",
"Zoom": "Mastelis",
"Close": "Uždaryti",
"Help": "Pagalba",
"Learn More": "Sužinokite daugiau"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Sveiki",
"File": "Fails",
"Exit": "Izeja",
"Edit": "Rediģēt",
"Undo": "Atsaukt",
"Redo": "Pārtaisīt",
"Cut": "Griezt",
"Copy": "Kopēt",
"Paste": "Ielīmēt",
"Delete": "Dzēst",
"Select All": "Izvēlēties visus",
"View": "Skats",
"Reload": "Pārlādēt",
"Force Reload": "Piespiest pārlādēt",
"Toggle Developer Tools": "Pārslēgt izstrādātāja rīkus",
"Reset Zoom": "Atiestatīt tālummaiņu",
"Zoom In": "Pietuvināt",
"Zoom Out": "Attālināt",
"Toggle Fullscreen": "Pārslēgt pilnekrāna režīmu",
"Language": "Valoda",
"Window": "Logs",
"Minimize": "Samazināt",
"Zoom": "Tālummaiņa",
"Close": "Aizvērt",
"Help": "Palīdzība",
"Learn More": "Uzzināt vairāk"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "ഹലോ",
"File": "ഫയൽ",
"Exit": "പുറത്ത്",
"Edit": "എഡിറ്റുചെയ്യുക",
"Undo": "പഴയപടിയാക്കുക",
"Redo": "വീണ്ടും ചെയ്യുക",
"Cut": "മുറിക്കുക",
"Copy": "പകർത്തുക",
"Paste": "പേസ്റ്റ്",
"Delete": "ഇല്ലാതാക്കുക",
"Select All": "എല്ലാം തിരഞ്ഞെടുക്കുക",
"View": "കാണുക",
"Reload": "വീണ്ടും ലോഡുചെയ്യുക",
"Force Reload": "ഫോഴ്‌സ് റീലോഡ്",
"Toggle Developer Tools": "ഡവലപ്പർ ഉപകരണങ്ങൾ ടോഗിൾ ചെയ്യുക",
"Reset Zoom": "സൂം പുന et സജ്ജമാക്കുക",
"Zoom In": "വലുതാക്കുക",
"Zoom Out": "സൂം .ട്ട് ചെയ്യുക",
"Toggle Fullscreen": "പൂർണ്ണസ്‌ക്രീൻ ടോഗിൾ ചെയ്യുക",
"Language": "ഭാഷ",
"Window": "ജാലകം",
"Minimize": "ചെറുതാക്കുക",
"Zoom": "സൂം ചെയ്യുക",
"Close": "അടയ്‌ക്കുക",
"Help": "സഹായിക്കൂ",
"Learn More": "കൂടുതലറിവ് നേടുക"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "नमस्कार",
"File": "फाईल",
"Exit": "बाहेर पडा",
"Edit": "सुधारणे",
"Undo": "पूर्ववत करा",
"Redo": "पुन्हा करा",
"Cut": "कट",
"Copy": "कॉपी करा",
"Paste": "पेस्ट करा",
"Delete": "हटवा",
"Select All": "सर्व निवडा",
"View": "पहा",
"Reload": "रीलोड करा",
"Force Reload": "सक्तीने रीलोड करा",
"Toggle Developer Tools": "विकसक साधने टॉगल करा",
"Reset Zoom": "झूम रीसेट करा",
"Zoom In": "प्रतिमेचे दृष्य रूप मोठे करा",
"Zoom Out": "झूम कमी करा",
"Toggle Fullscreen": "टॉगल पूर्णस्क्रीन",
"Language": "इंग्रजी",
"Window": "विंडो",
"Minimize": "कमी करा",
"Zoom": "झूम करा",
"Close": "बंद",
"Help": "मदत",
"Learn More": "अधिक जाणून घ्या"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hello",
"File": "Fail",
"Exit": "Keluar",
"Edit": "Edit",
"Undo": "Buat asal",
"Redo": "Buat semula",
"Cut": "Potong",
"Copy": "Salinan",
"Paste": "Tampal",
"Delete": "Padam",
"Select All": "Pilih semua",
"View": "Pandangan",
"Reload": "Tambah nilai",
"Force Reload": "Pakai Muat Semula",
"Toggle Developer Tools": "Togol Alat Pembangun",
"Reset Zoom": "Tetapkan semula Zum",
"Zoom In": "Mengezum masuk",
"Zoom Out": "Zum keluar",
"Toggle Fullscreen": "Togol Skrin Penuh",
"Language": "Bahasa",
"Window": "Tingkap",
"Minimize": "Kurangkan",
"Zoom": "Zum",
"Close": "Tutup",
"Help": "Tolonglah",
"Learn More": "Ketahui Lebih Lanjut"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hallo",
"File": "het dossier",
"Exit": "Uitgang",
"Edit": "Bewerk",
"Undo": "Ongedaan maken",
"Redo": "Opnieuw doen",
"Cut": "Besnoeiing",
"Copy": "Kopiëren",
"Paste": "Plakken",
"Delete": "Verwijderen",
"Select All": "Selecteer alles",
"View": "Visie",
"Reload": "Herlaad",
"Force Reload": "Forceer herladen",
"Toggle Developer Tools": "Schakel Developer Tools in",
"Reset Zoom": "Zoom opnieuw instellen",
"Zoom In": "In zoomen",
"Zoom Out": "Uitzoomen",
"Toggle Fullscreen": "Volledig scherm activeren",
"Language": "Taal",
"Window": "Venster",
"Minimize": "Minimaliseren",
"Zoom": "Zoom",
"Close": "Dichtbij",
"Help": "Helpen",
"Learn More": "Leer meer"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hallo",
"File": "Fil",
"Exit": "Exit",
"Edit": "Redigere",
"Undo": "Angre",
"Redo": "Gjøre om",
"Cut": "Kutte opp",
"Copy": "Kopiere",
"Paste": "Lim inn",
"Delete": "Slett",
"Select All": "Velg alle",
"View": "Utsikt",
"Reload": "Last inn på nytt",
"Force Reload": "Force Reload",
"Toggle Developer Tools": "Bytt utviklerverktøy",
"Reset Zoom": "Tilbakestill zoom",
"Zoom In": "Zoom inn",
"Zoom Out": "Zoome ut",
"Toggle Fullscreen": "Bytt fullskjerm",
"Language": "Språk",
"Window": "Vindu",
"Minimize": "Minimer",
"Zoom": "Zoom",
"Close": "Lukk",
"Help": "Hjelp",
"Learn More": "Lære mer"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Witaj",
"File": "Plik",
"Exit": "Wyjście",
"Edit": "Edytować",
"Undo": "Cofnij",
"Redo": "Przerobić",
"Cut": "Skaleczenie",
"Copy": "Kopiuj",
"Paste": "Pasta",
"Delete": "Usunąć",
"Select All": "Zaznacz wszystko",
"View": "Widok",
"Reload": "Przeładować",
"Force Reload": "Wymuś przeładowanie",
"Toggle Developer Tools": "Przełącz narzędzia programistyczne",
"Reset Zoom": "Resetuj powiększenie",
"Zoom In": "Zbliżenie",
"Zoom Out": "Pomniejsz",
"Toggle Fullscreen": "Przełącz tryb pełnoekranowy",
"Language": "Język",
"Window": "Okno",
"Minimize": "Zminimalizować",
"Zoom": "Powiększenie",
"Close": "Blisko",
"Help": "Wsparcie",
"Learn More": "Ucz się więcej"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Olá",
"File": "Arquivo",
"Exit": "Saída",
"Edit": "Editar",
"Undo": "Desfazer",
"Redo": "Refazer",
"Cut": "Cortar",
"Copy": "cópia de",
"Paste": "Colar",
"Delete": "Excluir",
"Select All": "Selecionar tudo",
"View": "Visão",
"Reload": "recarregar",
"Force Reload": "Forçar recarga",
"Toggle Developer Tools": "Alternar ferramentas de desenvolvedor",
"Reset Zoom": "Redefinir zoom",
"Zoom In": "Mais Zoom",
"Zoom Out": "Reduzir o zoom",
"Toggle Fullscreen": "Alternar para o modo tela cheia",
"Language": "Língua",
"Window": "Janela",
"Minimize": "Minimizar",
"Zoom": "Ampliação",
"Close": "Perto",
"Help": "Socorro",
"Learn More": "Saber mais"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "buna",
"File": "Fişier",
"Exit": "Ieșire",
"Edit": "Editați | ×",
"Undo": "Anula",
"Redo": "A reface",
"Cut": "A tăia",
"Copy": "Copie",
"Paste": "Pastă",
"Delete": "Șterge",
"Select All": "Selectează tot",
"View": "Vedere",
"Reload": "Reîncarcă",
"Force Reload": "Forța de reîncărcare",
"Toggle Developer Tools": "Comutați instrumentele pentru dezvoltatori",
"Reset Zoom": "Resetați Zoom",
"Zoom In": "A mari",
"Zoom Out": "A micsora",
"Toggle Fullscreen": "Comutare la ecran complet",
"Language": "Limba",
"Window": "Fereastră",
"Minimize": "Minimizează",
"Zoom": "Zoom",
"Close": "Închide",
"Help": "Ajutor",
"Learn More": "Aflați mai multe"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Здравствуйте",
"File": "Файл",
"Exit": "Выход",
"Edit": "Редактировать",
"Undo": "Отменить",
"Redo": "Повторить",
"Cut": "Вырезать",
"Copy": "Копировать",
"Paste": "Вставить",
"Delete": "Удалить",
"Select All": "Выбрать все",
"View": "Вид",
"Reload": "Перезагрузить",
"Force Reload": "Перезагрузить принудительно",
"Toggle Developer Tools": "Инструменты разработчика",
"Reset Zoom": "Сбросить масштаб",
"Zoom In": "Приблизить",
"Zoom Out": "Уменьшить",
"Toggle Fullscreen": "Полноэкранный режим",
"Language": "Язык",
"Window": "Окно",
"Minimize": "Свернуть",
"Zoom": "Развернуть",
"Close": "Закрыть",
"Help": "Помощь",
"Learn More": "Узнать больше"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Ahoj",
"File": "Súbor",
"Exit": "Východ",
"Edit": "Upraviť",
"Undo": "Vrátenie späť",
"Redo": "Znova",
"Cut": "Vystrihnúť",
"Copy": "Kópia",
"Paste": "Vložiť",
"Delete": "Odstrániť",
"Select All": "Vybrať všetko",
"View": "vyhliadka",
"Reload": "Znova načítať",
"Force Reload": "Vynútiť opätovné načítanie",
"Toggle Developer Tools": "Prepnúť Nástroje pre vývojárov",
"Reset Zoom": "Obnoviť priblíženie",
"Zoom In": "Priblížiť",
"Zoom Out": "Oddialiť",
"Toggle Fullscreen": "Prepnúť na celú obrazovku",
"Language": "Jazyk",
"Window": "Okno",
"Minimize": "Minimalizovať",
"Zoom": "Zväčšiť",
"Close": "Zavrieť",
"Help": "Pomoc",
"Learn More": "Uč sa viac"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Здраво",
"File": "Филе",
"Exit": "Излаз",
"Edit": "Уредити",
"Undo": "Опозови",
"Redo": "Понови",
"Cut": "Исеци",
"Copy": "Копирај",
"Paste": "Налепи",
"Delete": "Избриши",
"Select All": "Изабери све",
"View": "Поглед",
"Reload": "Освежи",
"Force Reload": "Форце Релоад",
"Toggle Developer Tools": "Укључите / искључите алате за програмере",
"Reset Zoom": "Ресетујте зум",
"Zoom In": "Увеличати",
"Zoom Out": "Умањи",
"Toggle Fullscreen": "Укључи / искључи цео екран",
"Language": "Језик",
"Window": "Прозор",
"Minimize": "Смањите",
"Zoom": "Зоом",
"Close": "Близу",
"Help": "Помоћ",
"Learn More": "Сазнајте више"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Hej",
"File": "Fil",
"Exit": "Utgång",
"Edit": "Redigera",
"Undo": "Ångra",
"Redo": "Göra om",
"Cut": "Skära",
"Copy": "Kopiera",
"Paste": "Klistra",
"Delete": "Radera",
"Select All": "Välj alla",
"View": "Se",
"Reload": "Ladda om",
"Force Reload": "Tvinga om laddning",
"Toggle Developer Tools": "Växla utvecklarverktyg",
"Reset Zoom": "Återställ zoom",
"Zoom In": "Zooma in",
"Zoom Out": "Zooma ut",
"Toggle Fullscreen": "Växla helskärm",
"Language": "Språk",
"Window": "Fönster",
"Minimize": "Minimera",
"Zoom": "Zoom",
"Close": "Stänga",
"Help": "Hjälp",
"Learn More": "Läs mer"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Habari",
"File": "Faili",
"Exit": "Utgång",
"Edit": "Hariri",
"Undo": "Tendua",
"Redo": "Rudia",
"Cut": "Kata",
"Copy": "Nakili",
"Paste": "Bandika",
"Delete": "Futa",
"Select All": "Chagua Zote",
"View": "Angalia",
"Reload": "Pakia upya",
"Force Reload": "Lazimisha Kupakia tena",
"Toggle Developer Tools": "Geuza Zana za Wasanidi Programu",
"Reset Zoom": "Weka Upya Zoom",
"Zoom In": "Vuta karibu",
"Zoom Out": "Zoom nje",
"Toggle Fullscreen": "Geuza Skrini nzima",
"Language": "Lugha",
"Window": "Dirisha",
"Minimize": "Punguza",
"Zoom": "Kuza",
"Close": "Funga",
"Help": "Msaada",
"Learn More": "Jifunze zaidi"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "வணக்கம்",
"File": "கோப்பு",
"Exit": "வெளியேறு",
"Edit": "தொகு",
"Undo": "செயல்தவிர்",
"Redo": "மீண்டும் செய்",
"Cut": "வெட்டு",
"Copy": "நகலெடுக்கவும்",
"Paste": "ஒட்டவும்",
"Delete": "அழி",
"Select All": "அனைத்தையும் தெரிவுசெய்",
"View": "காண்க",
"Reload": "ஏற்றவும்",
"Force Reload": "ஃபோர்ஸ் ரீலோட்",
"Toggle Developer Tools": "டெவலப்பர் கருவிகளை நிலைமாற்று",
"Reset Zoom": "பெரிதாக்கு என்பதை மீட்டமைக்கவும்",
"Zoom In": "பெரிதாக்க",
"Zoom Out": "பெரிதாக்கு",
"Toggle Fullscreen": "மாற்று முழுத்திரை",
"Language": "மொழி",
"Window": "ஜன்னல்",
"Minimize": "குறைத்தல்",
"Zoom": "பெரிதாக்கு",
"Close": "நெருக்கமான",
"Help": "உதவி",
"Learn More": "மேலும் அறிக"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "హలో",
"File": "ఫైల్",
"Exit": "బయటకి దారి",
"Edit": "సవరించండి",
"Undo": "చర్యరద్దు చేయండి",
"Redo": "పునరావృతం",
"Cut": "కట్",
"Copy": "కాపీ",
"Paste": "అతికించండి",
"Delete": "తొలగించు",
"Select All": "అన్ని ఎంచుకోండి",
"View": "చూడండి",
"Reload": "రీలోడ్ చేయండి",
"Force Reload": "ఫోర్స్ రీలోడ్",
"Toggle Developer Tools": "డెవలపర్ సాధనాలను టోగుల్ చేయండి",
"Reset Zoom": "జూమ్‌ను రీసెట్ చేయండి",
"Zoom In": "పెద్దదిగా చూపు",
"Zoom Out": "పెద్దది చెయ్యి",
"Toggle Fullscreen": "టోగుల్ పూర్తి స్క్రీన్",
"Language": "భాష",
"Window": "కిటికీ",
"Minimize": "తగ్గించడానికి",
"Zoom": "జూమ్ చేయండి",
"Close": "దగ్గరగా",
"Help": "సహాయం",
"Learn More": "ఇంకా నేర్చుకో"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "สวัสดี",
"File": "ไฟล์",
"Exit": "ออก",
"Edit": "แก้ไข",
"Undo": "เลิกทำ",
"Redo": "ทำซ้ำ",
"Cut": "ตัด",
"Copy": "สำเนา",
"Paste": "วาง",
"Delete": "ลบ",
"Select All": "เลือกทั้งหมด",
"View": "ดู",
"Reload": "โหลดซ้ำ",
"Force Reload": "บังคับให้โหลดซ้ำ",
"Toggle Developer Tools": "สลับเครื่องมือสำหรับนักพัฒนา",
"Reset Zoom": "รีเซ็ตการซูม",
"Zoom In": "ขยายเข้า",
"Zoom Out": "ซูมออก",
"Toggle Fullscreen": "สลับเต็มหน้าจอ",
"Language": "ภาษา",
"Window": "หน้าต่าง",
"Minimize": "ย่อเล็กสุด",
"Zoom": "ซูม",
"Close": "ปิด",
"Help": "ช่วยด้วย",
"Learn More": "เรียนรู้เพิ่มเติม"
}

View file

@ -1,28 +0,0 @@
{
"Hello": "Merhaba",
"File": "Dosya",
"Exit": ıkış",
"Edit": "Düzenle",
"Undo": "Geri alma",
"Redo": "Yeniden yap",
"Cut": "Kesmek",
"Copy": "Kopyala",
"Paste": "Yapıştırmak",
"Delete": "Sil",
"Select All": "Hepsini seç",
"View": "Görünüm",
"Reload": "Tekrar yükle",
"Force Reload": "Yeniden Yüklemeye Zorla",
"Toggle Developer Tools": "Geliştirici Araçlarını Aç / Kapat",
"Reset Zoom": "Yakınlaştırmayı Sıfırla",
"Zoom In": "Yakınlaştır",
"Zoom Out": "Uzaklaştır",
"Toggle Fullscreen": "Tam ekrana geç",
"Language": "Dil",
"Window": "Pencere",
"Minimize": "küçültmek",
"Zoom": "Yakınlaştır",
"Close": "Kapat",
"Help": "Yardım",
"Learn More": "Daha fazla bilgi edin"
}

Some files were not shown because too many files have changed in this diff Show more