From bbc929d46d65c4ac1877e744a695158cdc3b2cf3 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Sat, 15 Dec 2018 14:04:29 +0100 Subject: [PATCH] Merged translation system (#17) * A lots of translation changes (Generate translation files) * Removed auto generated package lock file * Implementation of the translation system, inc generators. * improved loader error handling * Finalizing the translation system. Needs some tests and a final translation generation. As well a handy translation mapper or editor would be likely. May source this out into another project? * Finalizing the translation system * Finalized translation system and added polish and turkish google translation * Finally done :) * Fixed defautl repositories dosnt show up * fixed settings not initialized --- .gitignore | 2 +- files.php | 8 + out.d.ts | 0 package-lock.json | 4253 ------------ package.json | 7 +- scripts/build_declarations.sh | 2 +- scripts/resolve_commands.sh | 35 +- scripts/web_build.sh | 4 +- shared/css/modal-settings.scss | 147 + shared/generate_i18n_gtranslate.py | 134 + shared/generate_packed.sh | 2 +- shared/generate_translations.sh | 17 + shared/generate_voice.py | 5 +- shared/html/templates.html | 700 +- shared/i18n/de_DE.translation | 32 + shared/i18n/de_google_translate.translation | 6805 +++++++++++++++++++ shared/i18n/info.json | 18 + shared/i18n/pl_google_translate.translation | 5728 ++++++++++++++++ shared/i18n/template.translation | 27 + shared/i18n/tr_google_translate.translation | 5728 ++++++++++++++++ shared/js/chat.ts | 3 + shared/js/client.ts | 2 +- shared/js/i18n/localize.ts | 331 +- shared/js/load.ts | 68 +- shared/js/log.ts | 7 +- shared/js/main.ts | 65 +- shared/js/ui/modal/ModalSettings.ts | 175 +- shared/js/utils/tab.ts | 1 + shared/test.json | 5413 +++++++++++++++ shared/tsconfig/tsconfig.json | 10 +- shared/tsconfig/tsconfig_packed.json | 10 +- {build => tools}/dtsgen/declarator.ts | 8 +- {build => tools}/dtsgen/index.ts | 4 + {build => tools}/dtsgen/test/test_01.ts | 13 + {build => tools}/dtsgen/test/test_02.ts | 0 {build => tools}/dtsgen/tsconfig.json | 0 tools/trgen/bin/tsc.sh | 6 + tools/trgen/compiler.ts | 84 + tools/trgen/generator.ts | 8 + tools/trgen/index.ts | 161 + tools/trgen/jsrender_generator.ts | 53 + tools/trgen/test/test_01.ts | 27 + tools/trgen/test/test_02.html | 66 + tools/trgen/ts_generator.ts | 296 + tools/trgen/tsconfig.json | 15 + tools/trgen/ttsc_transformer.ts | 67 + tools/trmanager/index.html | 10 + vendor/bbcode | 2 +- 48 files changed, 25943 insertions(+), 4616 deletions(-) create mode 100644 out.d.ts delete mode 100644 package-lock.json create mode 100755 shared/generate_i18n_gtranslate.py create mode 100755 shared/generate_translations.sh create mode 100644 shared/i18n/de_DE.translation create mode 100644 shared/i18n/de_google_translate.translation create mode 100644 shared/i18n/info.json create mode 100644 shared/i18n/pl_google_translate.translation create mode 100644 shared/i18n/template.translation create mode 100644 shared/i18n/tr_google_translate.translation create mode 100644 shared/test.json rename {build => tools}/dtsgen/declarator.ts (96%) rename {build => tools}/dtsgen/index.ts (94%) rename {build => tools}/dtsgen/test/test_01.ts (50%) rename {build => tools}/dtsgen/test/test_02.ts (100%) rename {build => tools}/dtsgen/tsconfig.json (100%) create mode 100755 tools/trgen/bin/tsc.sh create mode 100644 tools/trgen/compiler.ts create mode 100644 tools/trgen/generator.ts create mode 100644 tools/trgen/index.ts create mode 100644 tools/trgen/jsrender_generator.ts create mode 100644 tools/trgen/test/test_01.ts create mode 100644 tools/trgen/test/test_02.html create mode 100644 tools/trgen/ts_generator.ts create mode 100644 tools/trgen/tsconfig.json create mode 100644 tools/trgen/ttsc_transformer.ts create mode 100644 tools/trmanager/index.html diff --git a/.gitignore b/.gitignore index d3890f25..8f12ba49 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ generated/ node_modules/ auth/certs/ auth/js/auth.js.map - +package-lock.json .sass-cache/ .idea/ diff --git a/files.php b/files.php index e765b13a..ed651928 100644 --- a/files.php +++ b/files.php @@ -75,6 +75,14 @@ "path" => "wasm/", "local-path" => "./asm/generated/" ], + [ /* translations */ + "type" => "i18n", + "search-pattern" => "/.*\.(translation|json)/", + "build-target" => "dev|rel", + + "path" => "i18n/", + "local-path" => "./shared/i18n/" + ], /* vendors */ [ diff --git a/out.d.ts b/out.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fcae4ea2..00000000 --- a/package-lock.json +++ /dev/null @@ -1,4253 +0,0 @@ -{ - "name": "client", - "version": "1.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/chokidar": { - "version": "1.7.5", - "resolved": "http://registry.npmjs.org/@types/chokidar/-/chokidar-1.7.5.tgz", - "integrity": "sha512-PDkSRY7KltW3M60hSBlerxI8SFPXsO3AL/aRVsO4Kh9IHRW74Ih75gUuTd/aE4LSSFqypb10UIX3QzOJwBQMGQ==", - "dev": true, - "requires": { - "@types/events": "1.2.0", - "@types/node": "9.6.25" - } - }, - "@types/emscripten": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-0.0.31.tgz", - "integrity": "sha1-FggX0TJOi3BJYE05rEfYXu7t1Zc=", - "dev": true, - "requires": { - "@types/webassembly-js-api": "0.0.1" - } - }, - "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha1-gaZzHOTfQ2GeXIyUU4Oz5iqJ6oY=", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "1.2.0", - "@types/minimatch": "3.0.3", - "@types/node": "9.6.25" - } - }, - "@types/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==", - "dev": true, - "requires": { - "@types/glob": "7.1.1", - "@types/node": "9.6.25" - } - }, - "@types/gulp": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.5.tgz", - "integrity": "sha512-nx1QjPTiRpvLfYsZ7MBu7bT6Cm7tAXyLbY0xbdx2IEMxCK2v2urIhJMQZHW0iV1TskM71Xl6p2uRRuWDbk+/7g==", - "dev": true, - "requires": { - "@types/chokidar": "1.7.5", - "@types/undertaker": "1.2.0", - "@types/vinyl-fs": "2.4.9" - } - }, - "@types/jquery": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.5.tgz", - "integrity": "sha512-18OnkBZ+9pOx8grC2w4i256VS+9j/Ya/N0DcWkZRgPrg7V2oolgk8n7790goBlnChL6nIXAXy1lBTrz/r4lJTg==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/moment": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz", - "integrity": "sha1-YE69GJvDvDShVIaJQE5hoqSqyJY=", - "dev": true, - "requires": { - "moment": "2.22.2" - } - }, - "@types/node": { - "version": "9.6.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.25.tgz", - "integrity": "sha1-IAmrVDLtH14ZGPfGsAC8d4VJshY=", - "dev": true - }, - "@types/undertaker": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.0.tgz", - "integrity": "sha512-bx/5nZCGkasXs6qaA3B6SVDjBZqdyk04UO12e0uEPSzjt5H8jEJw0DKe7O7IM0hM2bVHRh70pmOH7PEHqXwzOw==", - "dev": true, - "requires": { - "@types/events": "1.2.0", - "@types/undertaker-registry": "1.0.1" - } - }, - "@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", - "dev": true - }, - "@types/vinyl": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.2.tgz", - "integrity": "sha512-2iYpNuOl98SrLPBZfEN9Mh2JCJ2EI9HU35SfgBEb51DcmaHkhp8cKMblYeBqMQiwXMgAD3W60DbQ4i/UdLiXhw==", - "dev": true, - "requires": { - "@types/node": "9.6.25" - } - }, - "@types/vinyl-fs": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.9.tgz", - "integrity": "sha512-Q0EXd6c1fORjiOuK4ZaKdfFcMyFzJlTi56dqktwaWVLIDAzE49wUs3bKnYbZwzyMWoH+NcMWnRuR73S9A0jnRA==", - "dev": true, - "requires": { - "@types/events": "1.2.0", - "@types/glob-stream": "6.1.0", - "@types/node": "9.6.25", - "@types/vinyl": "2.0.2" - } - }, - "@types/webassembly-js-api": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@types/webassembly-js-api/-/webassembly-js-api-0.0.1.tgz", - "integrity": "sha1-YtULIBB319TMEJuxytoi/f1FI/s=", - "dev": true - }, - "@types/websocket": { - "version": "0.0.38", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-0.0.38.tgz", - "integrity": "sha1-nb/1oe6VtXuBWvsrC5i4AB5vVcg=", - "dev": true, - "requires": { - "@types/events": "1.2.0", - "@types/node": "9.6.25" - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.2.4", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "lodash.debounce": "4.0.8", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.0" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, - "debug": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", - "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", - "dev": true, - "requires": { - "ms": "2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "1.0.4" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" - } - }, - "electron": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/electron/-/electron-3.0.2.tgz", - "integrity": "sha512-BsU/KJRPODlEoaOZhsmFTIaG2h1Y28JCrqeTGVqGL+fef/7xQZdHx5ZCStUDXXUSTcoqiHlc5QvLH4PfZFbOmg==", - "dev": true, - "requires": { - "@types/node": "8.10.34", - "electron-download": "4.1.1", - "extract-zip": "1.6.7" - }, - "dependencies": { - "@types/node": { - "version": "8.10.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.34.tgz", - "integrity": "sha512-alypNiaAEd0RBGXoWehJ2gchPYCITmw4CYBoB5nDlji8l8on7FsklfdfIs4DDmgpKLSX3OF3ha6SV+0W7cTzUA==", - "dev": true - } - } - }, - "electron-download": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", - "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", - "dev": true, - "requires": { - "debug": "3.2.5", - "env-paths": "1.0.0", - "fs-extra": "4.0.3", - "minimist": "1.2.0", - "nugget": "2.0.1", - "path-exists": "3.0.0", - "rc": "1.2.8", - "semver": "5.5.1", - "sumchecker": "2.0.2" - } - }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", - "dev": true, - "requires": { - "once": "1.3.3" - } - }, - "env-paths": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "parse-node-version": "1.0.0", - "time-stamp": "1.1.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "1.2.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - } - } - }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "1.0.0", - "is-glob": "3.1.0", - "micromatch": "3.1.10", - "resolve-dir": "1.0.1" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.2" - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flagged-respawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", - "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.20" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.6", - "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - } - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.2" - } - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.11.1", - "node-pre-gyp": "0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", - "dev": true, - "requires": { - "globule": "0.1.0" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.3.3" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "http://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "dev": true, - "requires": { - "gaze": "0.5.2" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "0.1.1" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.1" - } - }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "dev": true, - "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } - } - }, - "glogg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", - "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", - "dev": true, - "requires": { - "sparkles": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "gulp": { - "version": "3.9.1", - "resolved": "http://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", - "dev": true, - "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.1.0", - "liftoff": "2.5.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" - }, - "dependencies": { - "semver": { - "version": "4.3.6", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.3", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.5", - "vinyl": "0.5.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "1.0.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "1.0.1" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "1.0.0", - "is-windows": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.12.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", - "dev": true, - "requires": { - "extend": "3.0.2", - "findup-sync": "2.0.0", - "fined": "1.1.0", - "flagged-respawn": "1.0.0", - "is-plain-object": "2.0.4", - "object.map": "1.0.1", - "rechoir": "0.6.2", - "resolve": "1.8.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "lodash": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "dev": true, - "requires": { - "mime-db": "1.36.0" - } - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.7.1", - "is-builtin-module": "1.0.0", - "semver": "5.5.1", - "validate-npm-package-license": "3.0.4" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "dev": true, - "requires": { - "debug": "2.6.9", - "minimist": "1.2.0", - "pretty-bytes": "1.0.4", - "progress-stream": "1.2.0", - "request": "2.88.0", - "single-line-log": "1.1.2", - "throttleit": "0.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "1.0.1", - "array-slice": "1.1.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "1.0.0", - "make-iterator": "1.0.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", - "dev": true, - "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.1" - } - }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.2" - } - }, - "parse-node-version": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", - "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "0.1.2" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "dev": true, - "requires": { - "speedometer": "0.1.4", - "through2": "0.2.3" - } - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "micromatch": "3.1.10", - "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.8.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.20", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" - } - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "0.1.15" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.14.1.tgz", - "integrity": "sha512-XjTTos0ocxN4R2vdOoo083PXUt1XZkOO+ynAl4auomOSAbLr4/aGg19cSpR7w90nUtP6cIRysytboJRUGfw03A==", - "dev": true, - "requires": { - "chokidar": "2.0.4" - } - }, - "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true - }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "2.1.2", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.1" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "2.2.0", - "spdx-license-ids": "3.0.1" - } - }, - "spdx-license-ids": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", - "dev": true - }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "dev": true, - "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", - "dev": true, - "requires": { - "debug": "2.6.9" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", - "dev": true - }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "dev": true, - "requires": { - "readable-stream": "1.1.14", - "xtend": "2.1.2" - } - }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz", - "integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "3.0.2", - "spdx-expression-parse": "3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "1.1.6" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "is-utf8": "0.2.1" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "0.4.0" - } - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "1.0.1" - } - } - } -} diff --git a/package.json b/package.json index f7268832..9d6ff730 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,9 @@ "scripts": { "compile-sass": "sass --update .:.", "build-worker": "tsc -p shared/js/workers/tsconfig_worker_codec.json", - "dtsgen": "node build/dtsgen/index.js" + "dtsgen": "node tools/dtsgen/index.js", + "trgen": "node tools/trgen/index.js", + "ttsc": "ttsc" }, "author": "TeaSpeak (WolverinDEV)", "license": "ISC", @@ -17,10 +19,13 @@ "@types/jquery": "3.3.5", "@types/moment": "^2.13.0", "@types/node": "^9.4.6", + "@types/sha256": "^0.2.0", "@types/websocket": "0.0.38", "electron": "^3.0.2", "gulp": "^3.9.1", "sass": "^1.14.1", + "sha256": "^0.2.0", + "ttypescript": "^1.5.5", "typescript": "^3.1.1" }, "repository": { diff --git a/scripts/build_declarations.sh b/scripts/build_declarations.sh index 1276f138..05d75c1c 100755 --- a/scripts/build_declarations.sh +++ b/scripts/build_declarations.sh @@ -20,7 +20,7 @@ BASEDIR=$(dirname "$0") cd "$BASEDIR/../" #Building the generator -cd build/dtsgen +cd tools/dtsgen execute_tsc -p tsconfig.json if [ $? -ne 0 ]; then echo "Failed to build typescript declaration generator" diff --git a/scripts/resolve_commands.sh b/scripts/resolve_commands.sh index 0750d0a3..9e69e802 100755 --- a/scripts/resolve_commands.sh +++ b/scripts/resolve_commands.sh @@ -1,26 +1,31 @@ #!/usr/bin/env bash function execute_tsc() { - if [ "$command_tsc" == "" ]; then - if [ "$node_bin" == "" ]; then - node_bin=$(npm bin) - fi + execute_npm_command tsc $@ +} - if [ ! -e "${node_bin}/tsc" ]; then - echo "Could not find tsc command" +function execute_ttsc() { + execute_npm_command ttsc $@ +} + +function execute_npm_command() { + command_name=$1 + command_variable="command_$command_name" + #echo "Variable names $command_variable" + + if [ "${!command_variable}" == "" ]; then + node_bin=$(npm bin) + #echo "Node root ${node_bin}" + + if [ ! -e "${node_bin}/${command_name}" ]; then + echo "Could not find \"$command_name\" command" echo "May type npm install" exit 1 fi - command_tsc="${node_bin}/tsc" - - output=$(${command_tsc} -v) - if [ $? -ne 0 ]; then - echo "Failed to execute a simple tsc command!" - echo "$output" - exit 1 - fi + eval "${command_variable}=\"${node_bin}/${command_name}\"" fi - ${command_tsc} $@ + echo "Arguments: ${@:2}" + ${!command_variable} ${@:2} } \ No newline at end of file diff --git a/scripts/web_build.sh b/scripts/web_build.sh index 89280f17..0c925086 100755 --- a/scripts/web_build.sh +++ b/scripts/web_build.sh @@ -60,14 +60,14 @@ if [ "$type" == "release" ]; then #Compile everything for release mode fi elif [ "$type" == "development" ]; then echo "Building shared source" - execute_tsc -p ./shared/tsconfig/tsconfig.json + execute_ttsc -p ./shared/tsconfig/tsconfig.json if [ $? -ne 0 ]; then echo "Failed to compile shared sources" exit 1 fi echo "Building web client source" - execute_tsc -p ./web/tsconfig/tsconfig.json + execute_ttsc -p ./web/tsconfig/tsconfig.json if [ $? -ne 0 ]; then echo "Failed to compile web sources" exit 1 diff --git a/shared/css/modal-settings.scss b/shared/css/modal-settings.scss index f4b1df9b..8f5e1c8e 100644 --- a/shared/css/modal-settings.scss +++ b/shared/css/modal-settings.scss @@ -97,4 +97,151 @@ } } } +} + +.modal .settings-translations { + margin: 5px; + .setting-list { + user-select: none; + + display: flex; + flex-direction: column; + + .list { + display: flex; + flex-direction: column; + justify-content: start; + + overflow-y: auto; + + border: solid 1px lightgray; + padding: 2px; + background: #33333318; + + height: 50%; + min-height: 50%; + max-height: 50%; + + .entry { + display: flex; + flex-direction: row; + justify-content: stretch; + + .default { } + + .name { + flex-grow: 1; + flex-shrink: 1; + } + + &.translation:not(.default) { + padding-left: 15px; + } + + &.translation { + cursor: pointer; + } + + &.repository { + .name { + font-weight: bold; + } + } + + &.selected { + background: #0000FF77; + } + + + .button { + cursor: pointer; + + &:hover { + background-color: #00000010; + } + } + } + } + + .management { + width: 100%; + + display: flex; + flex-direction: row; + justify-content: stretch; + + margin-top: 5px; + float: right; + + .space { + flex-grow: 1; + } + } + + .restart-note { + width: 100%; + + display: flex; + flex-direction: row; + justify-content: space-between; + + margin-top: 5px; + + p { + margin: 0; + } + } + } +} + +/* The info modal for the translations */ +.entry-info-container { + display: flex; + flex-direction: column; + + .property { + display: flex; + flex-direction: row; + justify-content: stretch; + + .key { + width: 100px; + } + + .value { + display: flex; + flex-direction: row; + flex-grow: 1; + } + + &.property-repository { + p { + margin: 0; + } + + .button { + cursor: pointer; + + display: flex; + flex-direction: column; + justify-content: center; + + margin-right: 5px; + + &:hover { + background: #00000011; + } + } + } + + &.property-contributors { + .value { + display: flex; + flex-direction: column; + } + .contributor { + display: block; + } + } + } } \ No newline at end of file diff --git a/shared/generate_i18n_gtranslate.py b/shared/generate_i18n_gtranslate.py new file mode 100755 index 00000000..9eef05d6 --- /dev/null +++ b/shared/generate_i18n_gtranslate.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python2.7 + +""" +We want python 2.7 again... +""" + +import json +import sys + +""" +from googletrans import Translator # Use the free webhook +def run_translate(messages, source_language, target_language): + translator = Translator() + _translations = translator.translate(messages, src=source_language, dest=target_language) + result = [] + for translation in _translations: + result.append({ + "source": translation.origin, + "translated": translation.text + }) + return result +""" + + +from google.cloud import translate # Use googles could solution +def run_translate(messages, source_language, target_language): + translate_client = translate.Client() + + # The text to translate + text = u'Hello, world!' + # The target language + + result = [] + limit = 16 + for chunk in [messages[i:i + limit] for i in xrange(0, len(messages), limit)]: + # Translates some text into Russian + print("Requesting {} translations".format(len(chunk))) + translations = translate_client.translate(chunk, target_language=target_language) + + for translation in translations: + result.append({ + "source": translation["input"], + "translated": translation["translatedText"] + }) + return result + + +def translate_messages(source, destination, target_language): + with open(source) as f: + data = json.load(f) + + result = { + "translations": [], + "info": None + } + try: + with open(destination) as f: + result = json.load(f) + print("loaded old result") + except: + pass + + translations = result["translations"] + if translations is None: + print("Using new translation map") + translations = [] + else: + print("Loaded {} old translations".format(len(translations))) + + messages = [] + for message in data: + try: + messages.index(message["message"]) + except: + try: + found = False + for entry in translations: + if entry["key"]["message"] == message["message"]: + found = True + break + if not found: + raise Exception('add message for translate') + except: + messages.append(message["message"]) + + print("Translating {} messages".format(len(messages))) + if len(messages) != 0: + _translations = run_translate(messages, 'en', target_language) + print("Messages translated, generating target file") + + for translation in _translations: + translations.append({ + "key": { + "message": translation["source"] + }, + "translated": translation["translated"], + "flags": [ + "google-translate" + ] + }) + + print("Writing target file") + result["translations"] = translations + if result["info"] is None: + result["info"] = { + "contributors": [ + { + "name": "Google Translate, via script by Markus Hadenfeldt", + "email": "gtr.i18n.client@teaspeak.de" + } + ], + "name": "Auto translated messages for language " + target_language + } + + with open(destination, 'w') as f: + f.write(json.dumps(result, indent=2)) + print("Done") + + +def main(target_language): + target_file = "i18n/{}_google_translate.translation".format(target_language) + + translate_messages("generated/messages_script.json", target_file, target_language) + translate_messages("generated/messages_template.json", target_file, target_language) + pass + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Invalid argument count!") + print("Usage: ./generate_i18n_gtranslate.py ") + exit(1) + + main(sys.argv[1]) diff --git a/shared/generate_packed.sh b/shared/generate_packed.sh index 71caef62..6fdcca1f 100755 --- a/shared/generate_packed.sh +++ b/shared/generate_packed.sh @@ -19,7 +19,7 @@ if [ ! -e ${LOADER_FILE} ]; then exit 1 fi -execute_tsc -p tsconfig/tsconfig_packed.json +execute_ttsc -p tsconfig/tsconfig_packed.json if [ $? -ne 0 ]; then echo "Failed to generate packed file!" exit 1 diff --git a/shared/generate_translations.sh b/shared/generate_translations.sh new file mode 100755 index 00000000..1319e667 --- /dev/null +++ b/shared/generate_translations.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +BASEDIR=$(dirname "$0") +cd "$BASEDIR" + +#Generate the script translations +npm run ttsc -- -p $(pwd)/tsconfig/tsconfig.json +if [ $? -ne 0 ]; then + echo "Failed to generate translation file for the script files" + exit 1 +fi + +npm run trgen -- -f $(pwd)/html/templates.html -d $(pwd)/generated/messages_template.json +if [ $? -ne 0 ]; then + echo "Failed to generate translations file for the template files" + exit 1 +fi \ No newline at end of file diff --git a/shared/generate_voice.py b/shared/generate_voice.py index 4366275a..c14ea389 100644 --- a/shared/generate_voice.py +++ b/shared/generate_voice.py @@ -1,6 +1,7 @@ """ -This should be executed as python 2.7 (because of pydub) +This should be executed with python 2.7 (because of pydub) """ + import os import requests import json @@ -25,7 +26,7 @@ def tts(text, file): 'Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.52', 'content-type': 'application/x-www-form-urlencoded', 'referer': 'https://www.naturalreaders.com/online/', - 'authority': 'kfiuqykx63.execute-api.us-east-1.amazonaws.com' + 'authority': 'kfiuqykx63.execute-api.us-east-1.amazonaws.com' #You may need to change that here }, data=json.dumps({"t": text}) ) diff --git a/shared/html/templates.html b/shared/html/templates.html index 5133381c..15c92438 100644 --- a/shared/html/templates.html +++ b/shared/html/templates.html @@ -5,7 +5,7 @@ TeaSpeak-Web client templates - + + + + + + + + //TODO tr downwards @@ -1035,44 +1155,44 @@
- Name: + {{tr "Name:" /}}
- Interpret IP/Name as: + {{tr "Interpret IP/Name as:" /}}
- Duration + {{tr "Duration" /}}
@@ -1080,20 +1200,20 @@
- Use this ban as a global ban + {{tr "Use this ban as a global ban" /}}

- Global bans are bans which apply instance wide.
- This means that (if this rule apply to a victim) cant join any virtual server!
- Global bans are by default shown to every server admin group,
- but could only be created with query rights + {{tr "Global bans are bans which apply instance wide.
" + + "This means that (if this rule apply to a victim) cant join any virtual server!
" + + "Global bans are by default shown to every server admin group,
" + + "but could only be created with query rights"/}}

@@ -1199,38 +1319,38 @@ diff --git a/shared/i18n/de_DE.translation b/shared/i18n/de_DE.translation new file mode 100644 index 00000000..8797c612 --- /dev/null +++ b/shared/i18n/de_DE.translation @@ -0,0 +1,32 @@ +{ + "info": { + "contributors": [ + { + "name": "Markus Hadenfeldt", + "email": "i18n.client@teaspeak.de" + } + ], + "name": "German translations" + }, + "translations": [ + { + "key": { + "message": "Show permission description", + "line": 374, + "character": 30, + "filename": "/home/wolverindev/TeaSpeak/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPermissionEdit.ts" + }, + "translated": "Berechtigungsbeschreibung anzeigen", + "flags": [ + "google-translate" + ] + }, + { + "key": { + "message": "Create a new connection" + }, + "translated": "Verbinden", + "flags": [ ] + } + ] +} \ No newline at end of file diff --git a/shared/i18n/de_google_translate.translation b/shared/i18n/de_google_translate.translation new file mode 100644 index 00000000..8f186af9 --- /dev/null +++ b/shared/i18n/de_google_translate.translation @@ -0,0 +1,6805 @@ +{ + "info": { + "name": "German translation, based on Google Translate", + "contributors": [ + { + "name": "Google Translate, via script by Markus Hadenfeldt", + "email": "gtr.i18n.client@teaspeak.de" + }, + { + "name": "Markus Hadenfeldt", + "email": "i18n.client@teaspeak.de" + } + ] + }, + "translations": [ + { + "translated": "Fehler beim Initialisieren des Audio-Controllers!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize audio controller!" + } + }, + { + "translated": "Audios initialisiert", + "flags": [ + "google-translate", + "human-modified" + ], + "key": { + "message": "Sounds initialitzed" + } + }, + { + "translated": "[AudioController] Leerer oder undefinierter Puffer! Lass es fallen", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Got empty or undefined buffer! Dropping it" + } + }, + { + "translated": "[AudioController] Fehler beim Abspielen von Audio. Globaler Audiokontext noch nicht initialisiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Failed to replay audio. Global audio context not initialized yet!" + } + }, + { + "translated": "[AudioController] Die Samplerate der Quelle ist nicht gleich der Samplerate der Wiedergabe! ( %o | %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Source sample rate isn't equal to playback sample rate! ( %o | %o)" + } + }, + { + "translated": "[Audio] Starten der neuen Wiedergabe", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Starting new playback" + } + }, + { + "translated": "[Audio] Prebuffering erfolgreich abgeschlossen (jetzt abgespielt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Prebuffering succeeded (Replaying now)" + } + }, + { + "translated": "[Audio] Pufferung erfolgreich (Wiedergeben jetzt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering succeeded (Replaying now)" + } + }, + { + "translated": "Puffer l\u00f6schen, da die Wiedergabeliste zu gro\u00df wird", + "flags": [ + "google-translate" + ], + "key": { + "message": "Dropping buffer because playing queue grows to much" + } + }, + { + "translated": "[Audio] Puffer\u00fcberlauf festgestellt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Detected a buffer underflow!" + } + }, + { + "translated": "[Audio] Pufferung \u00fcberschritten. Wiedergabe sp\u00fclen und stoppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering exceeded timeout. Flushing and stopping replay" + } + }, + { + "translated": "Json enth\u00e4lt %s nicht", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json does not contains %s" + } + }, + { + "translated": "Der Validator hat f\u00fcr %s den Wert false", + "flags": [ + "google-translate" + ], + "key": { + "message": "Validator results in false for %s" + } + }, + { + "translated": "Ung\u00fcltiger Objekttyp %s f\u00fcr Eintrag %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid object type %s for entry %s" + } + }, + { + "translated": "Jahre", + "flags": [ + "google-translate" + ], + "key": { + "message": "years" + } + }, + { + "translated": "Tage", + "flags": [ + "google-translate" + ], + "key": { + "message": "days" + } + }, + { + "translated": "Std", + "flags": [ + "google-translate" + ], + "key": { + "message": "hours" + } + }, + { + "translated": "Protokoll", + "flags": [ + "google-translate" + ], + "key": { + "message": "minutes" + } + }, + { + "translated": "Sekunden", + "flags": [ + "google-translate" + ], + "key": { + "message": "seconds" + } + }, + { + "translated": "jetzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "now" + } + }, + { + "translated": "Ich habe undefinierten Typ!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got undefined type!" + } + }, + { + "translated": "VAD ge\u00e4ndert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD changed!" + } + }, + { + "translated": "VAD-Schl\u00fcsselerkennung ge\u00e4ndert.
Bitte setzen Sie Ihren PPT-Schl\u00fcssel zur\u00fcck!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD key detection changed.
Please reset your PPT key!" + } + }, + { + "translated": "Ung\u00fcltiger VAD-Handler (Voice Activation Detector)! ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid VAD (Voice activation detector) handler! ( %o)" + } + }, + { + "translated": "[VoiceRecorder] Starten Sie die Aufnahme! (Ger\u00e4t: %o | Gruppe: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Start recording! (Device: %o | Group: %o)" + } + }, + { + "translated": "Mikrofon konnte nicht aufgel\u00f6st werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!" + } + }, + { + "translated": "Mikrofon konnte nicht aufgel\u00f6st werden.
Nachricht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!
Message: " + } + }, + { + "translated": "Konnte kein Mikrofon bekommen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get microphone!" + } + }, + { + "translated": "H\u00f6re auf, aufzunehmen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Stop recording!" + } + }, + { + "translated": "[VoiceRecorder] Mikrofonstrom, aber kein Audiokontext. Warten, bis es initialisiert wird", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Got microphone stream, but havn't a audio context. Waiting until its initialized" + } + }, + { + "translated": "Wieder loslassen ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Release again! ( %o)" + } + }, + { + "translated": "Deaktivieren der Codec-Unterst\u00fctzung f\u00fcr", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disabling codec support for " + } + }, + { + "translated": "Codec-Treiber konnte nicht geladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load codec driver" + } + }, + { + "translated": "Codec konnte nicht geladen oder initialisiert werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load or initialize codec " + } + }, + { + "translated": "nicht unterst\u00fctzter Codec", + "flags": [ + "google-translate" + ], + "key": { + "message": "unsupported codec!" + } + }, + { + "translated": "Codec konnte nicht initialisiert werden!\nFehler: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!\nError: %o" + } + }, + { + "translated": "Codec konnte nicht initialisiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!" + } + }, + { + "translated": "Speex Schmalband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Narrowband" + } + }, + { + "translated": "Speex Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Wideband" + } + }, + { + "translated": "Speex Ultra Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra Wideband" + } + }, + { + "translated": "CELT Mono", + "flags": [ + "google-translate" + ], + "key": { + "message": "CELT Mono" + } + }, + { + "translated": "Opus-Stimme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Voice" + } + }, + { + "translated": "Opus-Musik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Music" + } + }, + { + "translated": "Sprachhandler initialisieren, nachdem AudioController initialisiert wurde!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initializing voice handler after AudioController has been initialized!" + } + }, + { + "translated": "Nativen Sprachstrom einrichten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up native voice stream!" + } + }, + { + "translated": "Nativer Codec wird nicht unterst\u00fctzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Native codec isnt supported!" + } + }, + { + "translated": "Audio konnte nicht \u00fcbertragen werden (nicht verbunden)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not transfer audio (not connected)" + } + }, + { + "translated": "Stream hinzuf\u00fcgen ( %o)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding stream ( %o)!" + } + }, + { + "translated": "Eisangebot konnte nicht erstellt werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not create ice offer!" + } + }, + { + "translated": "Remote-SDP einstellen! ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set remote sdp! ( %o)" + } + }, + { + "translated": "Fehler beim Anwenden der Remote-Beschreibung: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply remote description: %o" + } + }, + { + "translated": "Remote-Cache-Eis-Kandidat %s: %o konnte nicht hinzugef\u00fcgt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote cached ice candidate %s: %o" + } + }, + { + "translated": "Remote-Eis hinzuf\u00fcgen! ( %s | %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add remote ice! ( %s | %o)" + } + }, + { + "translated": "Fehler beim Hinzuf\u00fcgen des Remote-Ice-Kandidaten %s: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote ice candidate %s: %o" + } + }, + { + "translated": "Cache-Eis fernhalten! ( %s | %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cache remote ice! ( %s | %o)" + } + }, + { + "translated": "Fehler beim Einrichten der Sprachbr\u00fccke ({}). Wiederverbindung zulassen: {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge ({}). Allow reconnect: {}" + } + }, + { + "translated": "Sprachbr\u00fccke konnte nicht eingerichtet werden ( %s). Wiederverbindung zulassen: %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge ( %s). Allow reconnect: %s" + } + }, + { + "translated": "Ich habe Eis Kandidat! Veranstaltung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got ice candidate! Event:" + } + }, + { + "translated": "Angebot erstellt und angenommen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offer created and accepted" + } + }, + { + "translated": "Lokale Beschreibung konnte nicht angewendet werden: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply local description: %o" + } + }, + { + "translated": "Angebot senden: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Send offer: %o" + } + }, + { + "translated": "Ich habe einen neuen Datenkanal! ( %s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got new data channel! ( %s)" + } + }, + { + "translated": "Stimme von einem unbekannten Kunden haben? (ClientID: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Having voice from unknown client? (ClientID: %o)" + } + }, + { + "translated": "Der Codec %o konnte nicht abgespielt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback codec %o" + } + }, + { + "translated": "Wiedergabe von Client-Audio ( %o) ( %o) nicht m\u00f6glich", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback client's ( %o) audio ( %o)" + } + }, + { + "translated": "Lokale Stimme endete", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice ended" + } + }, + { + "translated": "Lokale Stimme begann", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice started" + } + }, + { + "translated": " Wechseln Sie zu Kanal ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Switch to channel" + } + }, + { + "translated": "Kanal bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit channel" + } + }, + { + "translated": "Ge\u00e4nderte Kanaleigenschaften von Kanal %s: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed channel properties of channel %s: %o" + } + }, + { + "translated": "Kanal l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete channel" + } + }, + { + "translated": "Erstellen Sie einen Musik-Bot", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create music bot" + } + }, + { + "translated": "Bot erfolgreich erstellt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bot successfully created" + } + }, + { + "translated": "Wurde aber erfolgreich erstellt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "But has been successfully created." + } + }, + { + "translated": "Bot konnte nicht erstellt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to create bot" + } + }, + { + "translated": "Erstellen Sie einen Unterkanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create sub channel" + } + }, + { + "translated": "Kanal erstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create channel" + } + }, + { + "translated": "Kanaloptionen: ' %o'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel options: ' %o'" + } + }, + { + "translated": "Erhaltener Kanalname: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel name: %o" + } + }, + { + "translated": "Das Wiederholen des Abstandhalters hat zu viele Wiederholungen ben\u00f6tigt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repeating spacer took too much repeats!" + } + }, + { + "translated": "Ausrichten: %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Align: %s" + } + }, + { + "translated": "Eigenschaften ( %i) von %s ( %i) aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties ( %i) of %s ( %i)" + } + }, + { + "translated": "Aktualisiereigenschaft %s = ' %s' -> %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating property %s = ' %s' -> %o" + } + }, + { + "translated": "Kanal-Passwort", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password" + } + }, + { + "translated": "Channel Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password:" + } + }, + { + "translated": "Lautst\u00e4rke \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change volume" + } + }, + { + "translated": "Zur\u00fccksetzen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reset" + } + }, + { + "translated": "Stornieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cancel" + } + }, + { + "translated": "OK", + "flags": [ + "google-translate" + ], + "key": { + "message": "OK" + } + }, + { + "translated": "Servergruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Groups" + } + }, + { + "translated": "Zielgruppe konnte nicht aufgel\u00f6st werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve target group!" + } + }, + { + "translated": "Schlie\u00dfen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close" + } + }, + { + "translated": "Start der Mausbewegung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Starting mouse move" + } + }, + { + "translated": "Server Gruppen bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set server group" + } + }, + { + "translated": "Kanalgruppe setzen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set channel group" + } + }, + { + "translated": "Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permissions" + } + }, + { + "translated": " Textchat \u00f6ffnen ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open text chat" + } + }, + { + "translated": "Anstupsen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke client" + } + }, + { + "translated": "Poke message:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke message:
" + } + }, + { + "translated": "Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change description" + } + }, + { + "translated": "Kundenbeschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change client description" + } + }, + { + "translated": "Neue Beschreibung:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New description:
" + } + }, + { + "translated": "Bewegen Sie den Client in Ihren Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move client to your channel" + } + }, + { + "translated": "Klient vom Kanal kicken", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from channel" + } + }, + { + "translated": "Kickgrund:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick reason:
" + } + }, + { + "translated": "Klient vom Server kicken", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client fom server" + } + }, + { + "translated": "Klient vom Server kicken", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from server" + } + }, + { + "translated": "Client verbieten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client" + } + }, + { + "translated": "Lautst\u00e4rke \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change Volume" + } + }, + { + "translated": " Namen \u00e4ndern ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name" + } + }, + { + "translated": "Eigene Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change own description" + } + }, + { + "translated": "Eigene Beschreibung in %s \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing own description to %s" + } + }, + { + "translated": "Der Nickname wurde erfolgreich ge\u00e4ndert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname successfully changed" + } + }, + { + "translated": "Spitzname konnte nicht ge\u00e4ndert werden ({})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not change nickname ({})" + } + }, + { + "translated": " Botnamen \u00e4ndern ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot name" + } + }, + { + "translated": "\u00c4ndern Sie den Musik-Bots-Spitznamen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots nickname" + } + }, + { + "translated": "Neuer Spitzname:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New nickname:
" + } + }, + { + "translated": "Bot-Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot description" + } + }, + { + "translated": "Beschreibung der Musik-Bots \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots description" + } + }, + { + "translated": "Musik-Panel \u00f6ffnen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open music panel" + } + }, + { + "translated": "Schnelle URL-Wiedergabe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quick url replay" + } + }, + { + "translated": "Bitte geben Sie die URL ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the URL" + } + }, + { + "translated": "URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "URL:" + } + }, + { + "translated": "Fehler beim Wiederholen der URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to replay url" + } + }, + { + "translated": "Client %o aus Kanal mit Grund %o tritt aus", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kicking client %o from channel with reason %o" + } + }, + { + "translated": "Bot l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bot" + } + }, + { + "translated": "M\u00f6chten Sie {0} wirklich l\u00f6schen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete {0}" + } + }, + { + "translated": "Bist du sicher?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Are you sure?" + } + }, + { + "translated": "OK", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ok" + } + }, + { + "translated": "Fehler beim Aufl\u00f6sen der Kanalberechtigung f\u00fcr den Namen %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel permission for name %o" + } + }, + { + "translated": "Aktualisierte Berechtigungen %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updated permissions %o" + } + }, + { + "translated": "Erhaltene Berechtigungen: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got permissions: %o" + } + }, + { + "translated": "Genehmigung ausgel\u00f6st! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission triggered! %o" + } + }, + { + "translated": "Ung\u00fcltige Kanalverschiebung (verschiedene Eltern! ( %O | %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel move (different parents! ( %o| %o)" + } + }, + { + "translated": "Multiselect-Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect channel" + } + }, + { + "translated": "Multiselect-Client", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect client" + } + }, + { + "translated": "Nur Musik: %o | Containermusik: %o | Container local: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music only: %o | Container music: %o | Container local: %o" + } + }, + { + "translated": "Anstupsen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke clients" + } + }, + { + "translated": "Verschiebe Kunden in deinen Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move clients to your channel" + } + }, + { + "translated": "Treten Sie Kunden aus dem Channel", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from channel" + } + }, + { + "translated": "Kick clients fom server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients fom server" + } + }, + { + "translated": "Treten Sie die Clients vom Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from server" + } + }, + { + "translated": "Kunden verbieten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban clients" + } + }, + { + "translated": "Bots l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bots" + } + }, + { + "translated": "M\u00f6chten Sie wirklich l\u00f6schen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete " + } + }, + { + "translated": "Einen neuen Kanal erstellen.\nEigenschaften: %o\nBerechtigungen: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creating a new channel.\nProperties: %o\nPermissions: %o" + } + }, + { + "translated": "Kanal konnte nach der Erstellung nicht aufgel\u00f6st werden. Berechtigungen konnten nicht angewendet werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel after creation. Could not apply permissions!" + } + }, + { + "translated": "Kanal {} erfolgreich erstellt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel {} successfully created!" + } + }, + { + "translated": "Wiedergabeton %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "playback sound %o" + } + }, + { + "translated": "Fehlender Ton %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing sound %o" + } + }, + { + "translated": "Verwendung des zwischengespeicherten Puffers: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using cached buffer: %o" + } + }, + { + "translated": "Daten decodieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Decoding data" + } + }, + { + "translated": "Bekam dekodierte Daten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got decoded data" + } + }, + { + "translated": "Audiodaten f\u00fcr %o konnten nicht decodiert werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to decode audio data for %o" + } + }, + { + "translated": "Fehler beim Laden der Audiodatei (Antwortcode %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file. (Response code %o)" + } + }, + { + "translated": "Fehler beim Laden der Audiodatei", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file " + } + }, + { + "translated": "Wiedergabe von %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Replaying %s" + } + }, + { + "translated": "Ihr Browser unterst\u00fctzt decodeAudioData nicht! Verwenden eines Knotens f\u00fcr die Wiedergabe! Dadurch werden die Audioausgabe und die Lautst\u00e4rkeregelung umgangen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Your browser does not support decodeAudioData! Using a node to playback! This bypasses the audio output and volume regulation!" + } + }, + { + "translated": "Du wurdest gesto\u00dfen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked!" + } + }, + { + "translated": "Buchse angeschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Socket connected" + } + }, + { + "translated": "Einloggen...", + "flags": [ + "google-translate" + ], + "key": { + "message": "Logging in..." + } + }, + { + "translated": "Verbindung zu {0} herstellen: {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connecting to {0}:{1}" + } + }, + { + "translated": "Verbindungszeit\u00fcberschreitung ausgel\u00f6st!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect timeout triggered!" + } + }, + { + "translated": "Erhaltener Fehler: ( %s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got error: ( %s)" + } + }, + { + "translated": "Anfrage trennen", + "flags": [ + "google-translate" + ], + "key": { + "message": "request disconnect" + } + }, + { + "translated": "Verbindung geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection closed" + } + }, + { + "translated": "Nachricht json konnte nicht analysiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not parse message json!" + } + }, + { + "translated": "Fehlender Datentyp!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing data type!" + } + }, + { + "translated": "Unbekannter Befehlstyp %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown command type %o" + } + }, + { + "translated": "Handlungsbefehl ' %s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Handling command ' %s'" + } + }, + { + "translated": "Json:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json:" + } + }, + { + "translated": "Fehlender Befehl ' %s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing command ' %s'" + } + }, + { + "translated": "Unzureichende Benutzerberechtigung. Bei Erlaubnis fehlgeschlagen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission " + } + }, + { + "translated": "Unzureichende Benutzerberechtigung. Fehler bei Erlaubnis {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission {}" + } + }, + { + "translated": "Befehlsausf\u00fchrung f\u00fchrt zu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Command execution results in " + } + }, + { + "translated": "Ung\u00fcltiger Versprechen-Ergebnistyp: %o. Ergebnis:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid promise result type: %o. Result:" + } + }, + { + "translated": "Anmeldefehler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got login error" + } + }, + { + "translated": "Version konnte nicht abgerufen werden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to get version:" + } + }, + { + "translated": "Ung\u00fcltiger R\u00fcckgabecode! ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid return code! ( %o)" + } + }, + { + "translated": "Stimme einrichten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up voice" + } + }, + { + "translated": "Verbunden als {0}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connected as {0}" + } + }, + { + "translated": "Ung\u00fcltige Kanalbestellungs-ID!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel order id!" + } + }, + { + "translated": "Ung\u00fcltiger \u00fcbergeordneter Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel parent" + } + }, + { + "translated": "Ich habe %d neue Channels", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d new channels" + } + }, + { + "translated": "%D Kanall\u00f6schungen erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel deletions" + } + }, + { + "translated": "Ung\u00fcltiger Kanal onDelete (Unbekannter Kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel onDelete (Unknown channel)" + } + }, + { + "translated": "%D Kanal versteckt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel hides" + } + }, + { + "translated": "Ung\u00fcltiger Kanal beim Ausblenden (unbekannter Kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel on hide (Unknown channel)" + } + }, + { + "translated": "{0} erschien von {1} bis {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}" + } + }, + { + "translated": "{0} mit Kanal {1} \u200b\u200bverbunden", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} connected to channel {1}" + } + }, + { + "translated": "{0} erschien von {1} bis {2}, verschoben um {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, moved by {3}" + } + }, + { + "translated": "{0} erschien von {1} bis {2}, getreten von {3} {4}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, kicked by {3}{4}" + } + }, + { + "translated": "Unbekannte Begr\u00fcndung f\u00fcr %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reasonid for %o" + } + }, + { + "translated": "Unbekannter Kunde \u00fcbrig!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left!" + } + }, + { + "translated": "{0} verschwand von {1} nach {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} disappeared from {1} to {2}" + } + }, + { + "translated": "{0} hat den Server verlassen {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} left the server{1}" + } + }, + { + "translated": "{0} wurde von {1} vom Server gekickt. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from the server by {1}.{2}" + } + }, + { + "translated": "{0} wurde von {1} aus Ihrem Kanal geworfen. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from your channel by {1}.{2}" + } + }, + { + "translated": "{0} wurde {1} von {2} gesperrt. {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was banned {1} by {2}.{3}" + } + }, + { + "translated": "Unbekannter Kunde hat Grund gelassen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left reason!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Client)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Client)!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Channel to)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel to)!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Channel from)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel from)!" + } + }, + { + "translated": "Sie wurden von {3} von Kanal {1} \u200b\u200bnach {2} verschoben.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You was moved by {3} from channel {1} to {2}" + } + }, + { + "translated": "{0} wurde um {3} von Kanal {1} \u200b\u200bnach {2} verschoben.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was moved from channel {1} to {2} by {3}" + } + }, + { + "translated": "Sie haben von Kanal {1} \u200b\u200bzu {2} gewechselt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You switched from channel {1} to {2}" + } + }, + { + "translated": "{0} hat von Kanal {1} \u200b\u200bzu {2} gewechselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} switched from channel {1} to {2}" + } + }, + { + "translated": "Sie wurden aus dem Kanal {1} \u200b\u200bin den Kanal {2} von {3} {4} geworfen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked out of the channel {1} to channel {2} by {3}{4}" + } + }, + { + "translated": "{0} wurde von Kanal {1} \u200b\u200bin {2} von {3} {4} geworfen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} got kicked from channel {1} to {2} by {3}{4}" + } + }, + { + "translated": "Unbekannte Grund-ID %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reason id %o" + } + }, + { + "translated": "Unbekannter Kanalzug (Channel)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (Channel)!" + } + }, + { + "translated": "Unbekannter Kanalzug (prev)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (prev)!" + } + }, + { + "translated": "Unbekannter Kanalzug (Eltern)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (parent)!" + } + }, + { + "translated": "Unbekannter Kanal bearbeiten (Kanal)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel edit (Channel)!" + } + }, + { + "translated": "Private Nachricht von ung\u00fcltigem Client erhalten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got private message from invalid client!" + } + }, + { + "translated": "Es wurde versucht, einen nicht vorhandenen Client zu aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tried to update an non existing client" + } + }, + { + "translated": "Musik-Player-Info f\u00fcr unbekannten oder ung\u00fcltigen Bot erhalten! (ID: %i, Eintrag: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)" + } + }, + { + "translated": "Verwenden des Info-Managers: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using info manager: %o" + } + }, + { + "translated": "Hostbanner konnte nicht geladen werden: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load hostbanner: %o" + } + }, + { + "translated": "Hostbanner wurde geladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hostbanner has been loaded" + } + }, + { + "translated": "Wird geladen...", + "flags": [ + "google-translate" + ], + "key": { + "message": "loading..." + } + }, + { + "translated": "Kein Titel oder keine URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "No title or url" + } + }, + { + "translated": "Spiel konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play" + } + }, + { + "translated": "Spiel konnte nicht ausgef\u00fchrt werden.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play.
{}" + } + }, + { + "translated": "Fehler beim Ausf\u00fchren der Pause", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause" + } + }, + { + "translated": "Fehler beim Ausf\u00fchren der Pause.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause.
{}" + } + }, + { + "translated": "Stopp konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop" + } + }, + { + "translated": "Stopp konnte nicht ausgef\u00fchrt werden.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop.
{}" + } + }, + { + "translated": "Ausf\u00fchrung fehlgeschlagen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute forward" + } + }, + { + "translated": "R\u00fccklauf konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute rewind" + } + }, + { + "translated": "Nicht implementiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented" + } + }, + { + "translated": "Diese Funktion ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function is not implemented yet!" + } + }, + { + "translated": "Eltern: %o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Parents: %o | %o" + } + }, + { + "translated": "Spieler: %o | oo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Player: %o | %o" + } + }, + { + "translated": "Skala:% f => \u00fcbersetzen: %o | %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Scale: %f => translate: %o | %o" + } + }, + { + "translated": "Erforderlicher Test: %o | %i | %o => %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Test needed required: %o | %i | %o => %o" + } + }, + { + "translated": "Bekannte unbekannte Berechtigungs-ID ( %o / %o ( %o))!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got unknown permission id ( %o/ %o ( %o))!" + } + }, + { + "translated": "Berechtigungszuordnung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission mapping" + } + }, + { + "translated": "Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Group " + } + }, + { + "translated": "%i <> %s -> %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "%i <> %s -> %s" + } + }, + { + "translated": "Ich habe %i Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %i permissions" + } + }, + { + "translated": "Ich ben\u00f6tige Berechtigungen, habe aber keine Berechtigungsliste!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got needed permissions but don't have a permission list!" + } + }, + { + "translated": "%D ben\u00f6tigte Berechtigungen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d needed permissions." + } + }, + { + "translated": "Konnte Perm f\u00fcr ID %s nicht aufl\u00f6sen ( %o | %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve perm for id %s ( %o| %o)" + } + }, + { + "translated": "Kanalberechtigungen f\u00fcr Kanal %o erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel permissions for channel %o" + } + }, + { + "translated": "Fehlendes Kanalberechtigungshandle f\u00fcr angeforderte Kanal-ID %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing channel permission handle for requested channel id %o" + } + }, + { + "translated": "Erteilungserlaubnis% konnte nicht aufgel\u00f6st werden. Neues erstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve grant permission %o. Creating a new one." + } + }, + { + "translated": "Gew\u00fcnschte Berechtigung mit ung\u00fcltigem Schl\u00fcssel angefordert! ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Requested needed permission with invalid key! ( %o)" + } + }, + { + "translated": "ung\u00fcltige Bestellung!", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid order!" + } + }, + { + "translated": "Gruppenziel konnte nicht aufgel\u00f6st werden! => %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve group target! => %o" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe %o / %o erhalten, aber es ist keine registrierte Gruppe!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/ %o, but its not a registered group!" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe %o / %o erhalten, wurde aber nie angefordert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/ %o, but it was never requested!" + } + }, + { + "translated": "Tab customElements konnte nicht abgelehnt werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not defied tab customElements!" + } + }, + { + "translated": "Einstellungen", + "flags": [ + "google-translate", + "human-modified" + ], + "key": { + "message": "Settings" + } + }, + { + "translated": "Geben Sie den gew\u00fcnschten Schl\u00fcssel ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type the key you wish" + } + }, + { + "translated": "Schl\u00fcssel %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got key %o" + } + }, + { + "translated": "Kein Ger\u00e4t", + "flags": [ + "google-translate" + ], + "key": { + "message": "No device" + } + }, + { + "translated": "Ger\u00e4t %s ( %s): %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got device %s ( %s): %s" + } + }, + { + "translated": "Konnte nicht \u00fcber Ger\u00e4ten auflisten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not enumerate over devices!" + } + }, + { + "translated": "Ger\u00e4teliste konnte nicht abgerufen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get device list!" + } + }, + { + "translated": "Ausgew\u00e4hltes Mikrofon: id: %o Gruppe: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected microphone device: id: %o group: %o" + } + }, + { + "translated": "Ausgew\u00e4hltes Lautsprecherger\u00e4t: id: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected speaker device: id: %o" + } + }, + { + "translated": "Ger\u00e4t konnte nicht ge\u00e4ndert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to change device!" + } + }, + { + "translated": "Verbot %o hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding ban %o" + } + }, + { + "translated": "Verbot konnte nicht hinzugef\u00fcgt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add ban" + } + }, + { + "translated": "Bearbeiten der Anleihe% und", + "flags": [ + "google-translate" + ], + "key": { + "message": "Editing ban %o" + } + }, + { + "translated": "Bearbeitungs\u00e4nderungen \u00fcbernehmen %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Apply edit changes %o" + } + }, + { + "translated": "Verbot konnte nicht bearbeitet werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to edit ban" + } + }, + { + "translated": "Gel\u00f6schte Version%", + "flags": [ + "google-translate" + ], + "key": { + "message": "Deleting ban %o" + } + }, + { + "translated": "Verbot konnte nicht gel\u00f6scht werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to delete ban" + } + }, + { + "translated": "Bekam Banliste: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got banlist: %o" + } + }, + { + "translated": "Fehlender Verbotseintrag mit ID %d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing ban entry with id %d" + } + }, + { + "translated": "Ban Liste", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banlist" + } + }, + { + "translated": "Suche nach Filter %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Search for filter %s" + } + }, + { + "translated": "Nachricht absetzen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set away message" + } + }, + { + "translated": "Bitte geben Sie die Abwesenheitsnachricht ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the away message" + } + }, + { + "translated": "Kanal-Codec wird nicht unterst\u00fctzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel codec unsupported" + } + }, + { + "translated": "Dieser Kanal hat einen nicht unterst\u00fctzten Codec.
Sie k\u00f6nnen niemanden innerhalb dieses Kanals sprechen oder h\u00f6ren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This channel has an unsupported codec.
You cant speak or listen to anybody within this channel!" + } + }, + { + "translated": "Token verwenden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use token" + } + }, + { + "translated": "Bitte geben Sie Ihren Token / Privilegschl\u00fcssel ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your token/priviledge key" + } + }, + { + "translated": "Toke erfolgreich eingesetzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toke successfully used!" + } + }, + { + "translated": "Token-Liste ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Token list is not implemented yet!" + } + }, + { + "translated": "Starten Sie die Verbindung zu %s: %d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Start connection to %s: %d" + } + }, + { + "translated": "Fehler beim Hashing des Passworts", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while hashing password" + } + }, + { + "translated": "Passwort f\u00fcr Hash-Server fehlgeschlagen!
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to hash server password!
" + } + }, + { + "translated": "Codec-Codetyp wird nicht unterst\u00fctzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec encode type not supported!" + } + }, + { + "translated": "Verbindung zum Remote-Host konnte nicht hergestellt werden! Ausnahme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host! Exception" + } + }, + { + "translated": "Konnte keine Verbindung herstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect" + } + }, + { + "translated": "Verbindung zum Remote-Host konnte nicht hergestellt werden (Verbindung abgelehnt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host (Connection refused)" + } + }, + { + "translated": "Verbindung zum Remote-Server verloren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote server!" + } + }, + { + "translated": "Die Verbindung wurde vom Remote-Host geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "The connection was closed by remote host" + } + }, + { + "translated": "Verbindungs-Ping-Timeout", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection ping timeout" + } + }, + { + "translated": "Verbindung unterbrochen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection lost" + } + }, + { + "translated": "Verbindung zum Remote-Host verloren (Ping-Timeout)
Sogar m\u00f6glich?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote host (Ping timeout)
Even possible?" + } + }, + { + "translated": "Server geschlossen ({0})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed ({0})" + } + }, + { + "translated": "Server geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed" + } + }, + { + "translated": "Server erfordert Passwort", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server requires password" + } + }, + { + "translated": "Server password", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password" + } + }, + { + "translated": "Server Passwort eingeben:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter server password:" + } + }, + { + "translated": "Sie wurden von {0} {1} vom Server gekickt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked from the server by {0}{1}" + } + }, + { + "translated": "Sie wurden von {0} {1} vom Server gebannt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got banned from the server by {0}{1}" + } + }, + { + "translated": "Nicht abgeholte Verbindung trennen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got uncaught disconnect!" + } + }, + { + "translated": "Typ: %o Daten:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type: %o Data:" + } + }, + { + "translated": "Erstellen Sie einen neuen Dateidownload f\u00fcr %s: %s (Schl\u00fcssel: %s, erwartet %d Bytes).", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create new file download to %s: %s (Key: %s, Expect %d bytes)" + } + }, + { + "translated": "Haben Sie Daten, aber Socket geschlossen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got data, but socket closed?" + } + }, + { + "translated": "ein Fehler ist aufgetreten", + "flags": [ + "google-translate" + ], + "key": { + "message": "an error occurent" + } + }, + { + "translated": "unerwartetes Schlie\u00dfen (Remote geschlossen)", + "flags": [ + "google-translate" + ], + "key": { + "message": "unexpected close (remote closed)" + } + }, + { + "translated": "Ung\u00fcltiger Dateilisteneintrag Pfad: %s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry. Path: %s" + } + }, + { + "translated": "Ung\u00fcltiger Dateilisteneintrag beendet. Pfad:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry finish. Path: " + } + }, + { + "translated": "Symbol% \u200b\u200bs -> %s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download icon %s -> %s" + } + }, + { + "translated": "Download des Symbols {0} fehlgeschlagen. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download icon {0}. ({1})" + } + }, + { + "translated": "Fehler beim Herunterladen des Symbols! ( %s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading icon! ( %s)" + } + }, + { + "translated": "Fehler beim Anfordern des Downloads f\u00fcr das Symbol {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request download for icon {0}. ({1})" + } + }, + { + "translated": "Symbol hat einen Bildtyp von %o (Medium: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon has an image type of %o (media: %o)" + } + }, + { + "translated": "Symbol% \u200b\u200bo geladen :)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon %o loaded :)" + } + }, + { + "translated": "Symbol% \u200b\u200bo konnte nicht geladen werden. Grund:% p", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load icon %o. Reason: %p" + } + }, + { + "translated": "Avatar %s wird heruntergeladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Downloading avatar %s" + } + }, + { + "translated": "Avatar %o -> %s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download avatar %o -> %s" + } + }, + { + "translated": "Avatar kann f\u00fcr {0} nicht heruntergeladen werden. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download avatar for {0}. ({1})" + } + }, + { + "translated": "Fehler beim Herunterladen des Avatars! ( %s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading avatar! ( %s)" + } + }, + { + "translated": "Avatar-Download f\u00fcr {0} konnte nicht angefordert werden. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request avatar download for {0}. ({1})" + } + }, + { + "translated": "avatar has an image type of %o (media: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar has an image type of %o (media: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar konnte f\u00fcr %s nicht geladen werden. Gr\u00fcnde daf\u00fcr", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar for %s. Reason: %s" + } + }, + { + "translated": "Avatar konnte nicht geladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar " + } + }, + { + "translated": "Fehlende erforderliche Wasm-Funktion!
Bitte laden Sie die Seite neu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing required wasm function!
Please reload the page!" + } + }, + { + "translated": "Verschiebung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Shift" + } + }, + { + "translated": "Alt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Alt" + } + }, + { + "translated": "STRG", + "flags": [ + "google-translate" + ], + "key": { + "message": "CTRL" + } + }, + { + "translated": "Sieg", + "flags": [ + "google-translate" + ], + "key": { + "message": "Win" + } + }, + { + "translated": "unset", + "flags": [ + "google-translate" + ], + "key": { + "message": "unset" + } + }, + { + "translated": "Zu formatierende Nachricht enth\u00e4lt ung\u00fcltigen Index ( %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message to format contains invalid index ( %o)" + } + }, + { + "translated": "Offset: %d Anzahl: %d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offset: %d Number: %d" + } + }, + { + "translated": "klar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Clear" + } + }, + { + "translated": "Schlie\u00dfen Sie alle privaten Registerkarten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close all private tabs" + } + }, + { + "translated": "Namen \u00e4ndern!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name!" + } + }, + { + "translated": "Schlie\u00dfbar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set closeable: " + } + }, + { + "translated": "Gesangsmeldung konnte nicht gesendet werden (nicht verbunden)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not send chant message (Not connected)" + } + }, + { + "translated": "Erstellen Sie eine neue Verbindung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create a new connection" + } + }, + { + "translated": "Identit\u00e4t konnte nicht gelesen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity! " + } + }, + { + "translated": "Identit\u00e4tsdatei konnte nicht gelesen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity file!" + } + }, + { + "translated": "Bitte w\u00e4hlen Sie eine Identit\u00e4t aus!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please select an identity!" + } + }, + { + "translated": "Aktualisierung \u00fcber angezeigt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating via shown" + } + }, + { + "translated": "Verbinden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect" + } + }, + { + "translated": "Verbot bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit ban" + } + }, + { + "translated": "Verbot hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add ban" + } + }, + { + "translated": "Ja", + "flags": [ + "google-translate" + ], + "key": { + "message": "Yes" + } + }, + { + "translated": "Nein", + "flags": [ + "google-translate" + ], + "key": { + "message": "No" + } + }, + { + "translated": "Fehler beim Initialisieren des \u00dcbersetzungssystems!\nFehler: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialized the translation system!\nError: %o" + } + }, + { + "translated": "Der TeamSpeak-Identit\u00e4tsparser konnte nicht eingerichtet werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not setup the TeamSpeak identity parser!" + } + }, + { + "translated": "Ppt konnte nicht initialisiert werden!\nFehler: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!\nError: %o" + } + }, + { + "translated": "Ppt konnte nicht initialisiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!" + } + }, + { + "translated": "Audio-Controller sp\u00e4ter initialisieren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initialize audio controller later!" + } + }, + { + "translated": "Fehlender audio.player.initializeFromGesture", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing audio.player.initializeFromGesture" + } + }, + { + "translated": "PCM-Daten konnten f\u00fcr Codec nicht erneut berechnet werden. Fehler: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resample PCM data for codec. Error: %o" + } + }, + { + "translated": "PCM-Daten konnten nicht f\u00fcr Codec codiert werden. Fehler: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not encode PCM data for codec. Error: %o" + } + }, + { + "translated": "Erforderliche Zeit: %d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Required time: %d" + } + }, + { + "translated": "Lagerzeit der Arbeiternachricht: %d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Worker message stock time: %d" + } + }, + { + "translated": "Ung\u00fcltiger Arbeitstoken!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid worker token!" + } + }, + { + "translated": "[Codec] Bekannte Antwort des Arbeitnehmers: Erfolg: %o Nachricht: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Codec] Got worker init response: Success: %o Message: %o" + } + }, + { + "translated": "R\u00fcckruf f\u00fcr Kost\u00fcm! ( %O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Costume callback! ( %o)" + } + }, + { + "translated": "\u00dcbersetzungsdatei von %s erfolgreich initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully initialized up translation file from %s" + } + }, + { + "translated": "Verwalten Sie den virtuellen Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Manager the Virtual Server" + } + }, + { + "translated": "Bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit" + } + }, + { + "translated": "Servereigenschaften \u00e4ndern %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing server properties %o" + } + }, + { + "translated": "Ge\u00e4nderte Eigenschaften: %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed properties: %o" + } + }, + { + "translated": "Eigenschaften aktualisieren ( %i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties ( %i)" + } + }, + { + "translated": "Server Permissions", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Permissions" + } + }, + { + "translated": "Gruppe aufwenden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend group" + } + }, + { + "translated": "Alle erweitern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend all" + } + }, + { + "translated": "Gruppe minimieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse group" + } + }, + { + "translated": "Alles einklappen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse all" + } + }, + { + "translated": "Erlaubnis hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add permission" + } + }, + { + "translated": "Berechtigung entfernen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove permission" + } + }, + { + "translated": "Erlaubnis hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add grant permission" + } + }, + { + "translated": "Berechtigungsbeschreibung anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show permission description" + } + }, + { + "translated": "Nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented!" + } + }, + { + "translated": "Diese Funktion ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function isnt implemented yet!" + } + }, + { + "translated": "Kopieren Sie den Berechtigungsnamen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Copy permission name" + } + }, + { + "translated": "Es wurde versucht, eine nicht bekannte Berechtigung zu bearbeiten! ( %s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attempted to edit a not known permission! ( %s)" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Kanal-ID f\u00fcr die Aktion des Berechtigungseditors!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected channel id for permission editor action!" + } + }, + { + "translated": "ung\u00fcltiger Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid channel" + } + }, + { + "translated": "Berechtigung %s mit Eigenschaften hinzugef\u00fcgt: %o %o %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %s with properties: %o %o %o" + } + }, + { + "translated": "Berechtigung %s wurde entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed permission %s" + } + }, + { + "translated": "Zuschuss von %o f\u00fcr %s hinzugef\u00fcgt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added grant of %o for %s" + } + }, + { + "translated": "Berechtigungsberechtigung f\u00fcr %s entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed grant permission for %s" + } + }, + { + "translated": "Berechtigung %o mit Eigenschaften hinzugef\u00fcgt: %o %o %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %o with properties: %o %o %o" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Gruppen-ID f\u00fcr Berechtigungseditor-Aktion!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor action!" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Gruppen-ID f\u00fcr den Berechtigungseditor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor!" + } + }, + { + "translated": "Die Zielabtastrate liegt au\u00dferhalb des Bereichs [3000, 384000].", + "flags": [ + "google-translate" + ], + "key": { + "message": "The target sample rate is outside the range [3000, 384000]." + } + }, + { + "translated": "Leerer Puffer als Eingabe erhalten! Leere Ausgabe zur\u00fcckgeben!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Received empty buffer as input! Returning empty output!" + } + }, + { + "translated": "Ziel Adresse und Port:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote address and port:" + } + }, + { + "translated": "Server-Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password:" + } + }, + { + "translated": "Spitzname:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname:" + } + }, + { + "translated": "Identit\u00e4tseinstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Identity Settings" + } + }, + { + "translated": "Forumkonto", + "flags": [ + "google-translate" + ], + "key": { + "message": "Forum Account" + } + }, + { + "translated": "TeamSpeak", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeamSpeak" + } + }, + { + "translated": "Spitzname (nur zu Debug-Zwecken!)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname (Debug purposes only!)" + } + }, + { + "translated": "Bitte geben Sie Ihre exportierte TS3-Identit\u00e4tszeichenfolge ein oder w\u00e4hlen Sie Ihre exportierte Identit\u00e4t aus", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your exported TS3 Identity string bellow or select your exported Identity" + } + }, + { + "translated": "Sie verwenden Ihr Forumkonto als Best\u00e4tigung", + "flags": [ + "google-translate" + ], + "key": { + "message": "You're using your forum account as verification" + } + }, + { + "translated": "Dies ist nur zum Debuggen und verwendet den Namen als eindeutige Kennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "This is just for debug and uses the name as unique identifier" + } + }, + { + "translated": "Name:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name:" + } + }, + { + "translated": "Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Password:" + } + }, + { + "translated": "Thema:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Topic:" + } + }, + { + "translated": "Beschreibung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description:" + } + }, + { + "translated": "Standard", + "flags": [ + "google-translate" + ], + "key": { + "message": "Standard" + } + }, + { + "translated": "Kanaltyp", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Type" + } + }, + { + "translated": "Tempor\u00e4r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Temporary" + } + }, + { + "translated": "Semi-Permanent", + "flags": [ + "google-translate" + ], + "key": { + "message": "Semi-Permanent" + } + }, + { + "translated": "Dauerhaft", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permanent" + } + }, + { + "translated": "Standardkanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Channel" + } + }, + { + "translated": "Diesen Kanal sortieren nach:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sort this channel after:" + } + }, + { + "translated": "Ben\u00f6tigte Gespr\u00e4chskraft:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Talk Power:" + } + }, + { + "translated": "Audio", + "flags": [ + "google-translate" + ], + "key": { + "message": "Audio" + } + }, + { + "translated": "Voreinstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Presets" + } + }, + { + "translated": "Voice Mobile", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Mobile" + } + }, + { + "translated": "Voice Desktop", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Desktop" + } + }, + { + "translated": "Musik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music" + } + }, + { + "translated": "Brauch", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom" + } + }, + { + "translated": "Benutzerdefinierte Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom Settings" + } + }, + { + "translated": "Codec:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec:" + } + }, + { + "translated": "Speex Ultra-Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra-Wideband" + } + }, + { + "translated": "Qualit\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quality:" + } + }, + { + "translated": "Regelm\u00e4\u00dfig ben\u00f6tigte Kr\u00e4fte:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular needed powers:" + } + }, + { + "translated": "Beitreten:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Join:" + } + }, + { + "translated": "Aussicht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "View:" + } + }, + { + "translated": "Abonnieren:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribe:" + } + }, + { + "translated": "Desc. Aussicht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Desc. view:" + } + }, + { + "translated": "\u00c4ndern:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Modify:" + } + }, + { + "translated": "L\u00f6schen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete:" + } + }, + { + "translated": "Erforderliche Befugnisse f\u00fcr die Datei\u00fcbertragung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "File transfer needed powers:" + } + }, + { + "translated": "Erweitert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Advanced" + } + }, + { + "translated": "Andere Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Other Settings" + } + }, + { + "translated": "Phonetischer Name:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Phonetic Name:" + } + }, + { + "translated": "Verz\u00f6gerung l\u00f6schen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay:" + } + }, + { + "translated": "Sprachdaten verschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data encrypted" + } + }, + { + "translated": "Max Benutzer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Max users" + } + }, + { + "translated": "Unbegrenzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unlimited" + } + }, + { + "translated": "Begrenzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Limited" + } + }, + { + "translated": "Family Max Benutzer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Family Max users" + } + }, + { + "translated": "Vererbt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Inherited" + } + }, + { + "translated": "gepr\u00fcft", + "flags": [ + "google-translate" + ], + "key": { + "message": "checked" + } + }, + { + "translated": "Maximale Anzahl Kunden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Maximum Clients:" + } + }, + { + "translated": "Reservierte Slots:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reserved slots:" + } + }, + { + "translated": "Willkommensnachricht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Welcome Message:" + } + }, + { + "translated": "Wirt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host" + } + }, + { + "translated": "Bindung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Binding" + } + }, + { + "translated": "Wirt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host:" + } + }, + { + "translated": "Hafen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Port:" + } + }, + { + "translated": "Hinweis: Diese Einstellungen erfordern einen Neustart des virtuellen Servers, um wirksam zu werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Note: These settings require a virtual server restart to take effect!" + } + }, + { + "translated": "Host-Nachricht", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host message" + } + }, + { + "translated": "Botschaft:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message:" + } + }, + { + "translated": "Nachrichtenmodus:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message Mode:" + } + }, + { + "translated": "Keine Nachricht", + "flags": [ + "google-translate" + ], + "key": { + "message": "No message" + } + }, + { + "translated": "Nachricht im Protokoll anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message in log" + } + }, + { + "translated": "Nachricht als modal anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal" + } + }, + { + "translated": "Nachricht als modal anzeigen und Verbindung mit dem Client trennen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal and disconnect the client" + } + }, + { + "translated": "Host-Banner", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host banner" + } + }, + { + "translated": "Banner-Gfx-URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banner Gfx URL:" + } + }, + { + "translated": "Gfx-Intervall:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Gfx Interval:" + } + }, + { + "translated": "Gr\u00f6\u00dfe \u00e4ndern:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Resize:" + } + }, + { + "translated": "Nicht einstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do not adjust" + } + }, + { + "translated": "Passen Sie das Seitenverh\u00e4ltnis an, aber ignorieren Sie es", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust but ignore ratio aspect" + } + }, + { + "translated": "Passen Sie das Seitenverh\u00e4ltnis an und halten Sie es", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust and keep ratio aspect" + } + }, + { + "translated": "Host-Schaltfl\u00e4che", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host Button" + } + }, + { + "translated": "Tooltip:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tooltip:" + } + }, + { + "translated": "Icon-URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon URL:" + } + }, + { + "translated": "Transfers", + "flags": [ + "google-translate" + ], + "key": { + "message": "Transfers" + } + }, + { + "translated": "Hochladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload" + } + }, + { + "translated": "Bandbreitenlimit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bandwidth Limit:" + } + }, + { + "translated": "Bytes / s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bytes/s" + } + }, + { + "translated": "Upload-Quote:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload Quota:" + } + }, + { + "translated": "MiB", + "flags": [ + "google-translate" + ], + "key": { + "message": "MiB" + } + }, + { + "translated": "Herunterladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download" + } + }, + { + "translated": "Download-Quote:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download Quota:" + } + }, + { + "translated": "Anti-Flood", + "flags": [ + "google-translate" + ], + "key": { + "message": "Anti-Flood" + } + }, + { + "translated": "Reduzierte Punkte pro Tick:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reduced points per tick:" + } + }, + { + "translated": "Erforderliche Punkte zum Blockieren von Befehlen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block commands:" + } + }, + { + "translated": "F\u00fcr das Blockieren der IP ben\u00f6tigte Punkte:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block IP:" + } + }, + { + "translated": "Sicherheit", + "flags": [ + "google-translate" + ], + "key": { + "message": "Security" + } + }, + { + "translated": "Ben\u00f6tigte Sicherheitsstufe:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Security Level:" + } + }, + { + "translated": "Kanalsprachdatenverschl\u00fcsselung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel voice data encryption:" + } + }, + { + "translated": "Pro Kanal einzeln bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit per channel individually" + } + }, + { + "translated": "Weltweit deaktiviert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally disabled" + } + }, + { + "translated": "Weltweit aktiviert (empfohlen)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally enabled (recommended)" + } + }, + { + "translated": "Sonstiges", + "flags": [ + "google-translate" + ], + "key": { + "message": "Misc" + } + }, + { + "translated": "Standardgruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default groups" + } + }, + { + "translated": "Server-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server group" + } + }, + { + "translated": "Musik-Bot-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music bot group" + } + }, + { + "translated": "Kanalgruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group" + } + }, + { + "translated": "Channel Admin-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Admin group" + } + }, + { + "translated": "Beschweren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Complain" + } + }, + { + "translated": "Autoban Graf", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Count" + } + }, + { + "translated": "Autoban Zeit", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Time" + } + }, + { + "translated": "Zeit entfernen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove Time" + } + }, + { + "translated": "Minimum Clients ist Kanal vor der Stille:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Minimum clients is channel before silence:" + } + }, + { + "translated": "Lautst\u00e4rkeregler f\u00fcr Priorit\u00e4tslautsprecher:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Priority speaker dim modificator:" + } + }, + { + "translated": "Verz\u00f6gerung f\u00fcr tempor\u00e4re Kan\u00e4le l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay for temporary channels" + } + }, + { + "translated": "Serverliste", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server list" + } + }, + { + "translated": "Aktivieren Sie die Berichterstellung f\u00fcr die TeamSpeak-Serverliste", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeamSpeak server list" + } + }, + { + "translated": " Aktivieren Sie das Reporting f\u00fcr die TeaSpeak-Serverliste (TeaSpeak unterst\u00fctzt diese Einstellung nicht)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeaSpeak server list (TeaSpeak does not support this setting)" + } + }, + { + "translated": "Mitteilungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Messages" + } + }, + { + "translated": "Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel" + } + }, + { + "translated": "Standardthema:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Topic:" + } + }, + { + "translated": "Standardbeschreibung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Description" + } + }, + { + "translated": "Klient", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client" + } + }, + { + "translated": "Allgemeines", + "flags": [ + "google-translate" + ], + "key": { + "message": "General" + } + }, + { + "translated": "Noch nicht eingerichtet!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Didnt setuped yet!" + } + }, + { + "translated": "Mikrofon", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone" + } + }, + { + "translated": "Ger\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Device:" + } + }, + { + "translated": "Sprachaktivit\u00e4tserkennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Activity Detection" + } + }, + { + "translated": "Immer aktiv", + "flags": [ + "google-translate" + ], + "key": { + "message": "Always active" + } + }, + { + "translated": "Sprachaktivit\u00e4tserkennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity detection" + } + }, + { + "translated": "Dr\u00fccken, um zu sprechen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk" + } + }, + { + "translated": "Es gibt keine Einstellungen f\u00fcr eine immer Online-Spracherkennung.", + "flags": [ + "google-translate" + ], + "key": { + "message": "There are no setting entries for an always online voice detection." + } + }, + { + "translated": "Taste zum Sprechen dr\u00fccken:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk key:" + } + }, + { + "translated": "Nicht initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uninitialised" + } + }, + { + "translated": "Sprachaktivit\u00e4tsschwelle ( 20 %)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity threshold (20%)" + } + }, + { + "translated": "Lautsprecher", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speaker" + } + }, + { + "translated": "Kanalgruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Groups" + } + }, + { + "translated": "Kanalberechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel permissions" + } + }, + { + "translated": "Client-Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client permissions" + } + }, + { + "translated": "Kundennummer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client unique ID:" + } + }, + { + "translated": "Eindeutige ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unique ID:" + } + }, + { + "translated": "Kundendatenbank-ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client database ID:" + } + }, + { + "translated": "Client-Channel-Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client channel permissions" + } + }, + { + "translated": "\u00c4ndern von Gruppen von", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing groups of" + } + }, + { + "translated": "Filter:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Filter:" + } + }, + { + "translated": "Nur erteilte Berechtigungen anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show granted permissions only" + } + }, + { + "translated": "Berechtigungsname", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission Name" + } + }, + { + "translated": "Wert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Value" + } + }, + { + "translated": "\u00dcberspringen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Skip" + } + }, + { + "translated": "Negieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Negate" + } + }, + { + "translated": "Gew\u00e4hrt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Granted" + } + }, + { + "translated": "Aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update" + } + }, + { + "translated": "Hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add" + } + }, + { + "translated": "L\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove" + } + }, + { + "translated": "Name / IP / UID / HWID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name/IP/UID/HWID" + } + }, + { + "translated": "Grund", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason" + } + }, + { + "translated": "Sch\u00f6pfer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creator" + } + }, + { + "translated": "Erstellt / l\u00e4uft ab", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created / Expires" + } + }, + { + "translated": "Neu laden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reload" + } + }, + { + "translated": "Zeige nur eigene Verbote", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show only own bans" + } + }, + { + "translated": "Eigene Verbote hervorheben", + "flags": [ + "google-translate" + ], + "key": { + "message": "Highlight own bans" + } + }, + { + "translated": "Grund:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason:" + } + }, + { + "translated": "Dauer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration:" + } + }, + { + "translated": "permanent", + "flags": [ + "google-translate" + ], + "key": { + "message": "permanent" + } + }, + { + "translated": "Verbot des Kunden durch", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client by" + } + }, + { + "translated": "Spitzname", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname" + } + }, + { + "translated": "Verbietet den Client nach seinem aktuellen Spitznamen.
Der derzeitige Spitzname kann nicht verwendet werden, bis das Verbot abgelaufen ist", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his current nickname.
The currently nickname cant be used until the ban expired" + } + }, + { + "translated": "Hardware ID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID" + } + }, + { + "translated": "Verbietet den Client anhand seiner Hardware-ID.
Die Hardware-ID hat unterschiedliche Bedeutungen, abh\u00e4ngig vom Benutzeragenten
TeaClient: Die Hardware-ID entspricht der MAC-Adresse
TeaWeb: Der TeaSpeak-Webclient hat keine Hardware-ID. Dies ist zuf\u00e4llig
TeamSpeak 3-Client: Die Hardware-ID ist das Ergebnis einiger Hashes von hardwarespezifischen Eigenschaften", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his hardware id.
The hardware id has different meanings, depends on the users agent
TeaClient: The hardware id will be equal to the mac address
TeaWeb: The TeaSpeak web client hasn't a hardware id, it will be random
TeamSpeak 3 client: The hardware id will be a result of some hashes from hardware specific properties" + } + }, + { + "translated": "IP Adresse", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP Address" + } + }, + { + "translated": "Erstellt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created:" + } + }, + { + "translated": "Verfallen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expire:" + } + }, + { + "translated": "IP:", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP:" + } + }, + { + "translated": "Interpretiere IP / Name als:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Interpret IP/Name as:" + } + }, + { + "translated": "Platzhalter IPv4", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv4" + } + }, + { + "translated": "Wildcard IPv6", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv6" + } + }, + { + "translated": "Feste Zeichenfolge", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fixed string" + } + }, + { + "translated": "Regul\u00e4ren Ausdruck", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular Expression" + } + }, + { + "translated": "Hardware ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID:" + } + }, + { + "translated": "Dauer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration" + } + }, + { + "translated": "Verwenden Sie dieses Verbot als globales Verbot", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use this ban as a global ban" + } + }, + { + "translated": "Globale Verbote sind Verbote, die sich auf alle Instanzen beziehen.
Dies bedeutet, dass (falls diese Regel auf ein Opfer zutrifft) kein virtueller Server beitreten kann !
Globale Verbote werden standardm\u00e4\u00dfig jeder Server-Admin-Gruppe angezeigt.
konnte aber nur mit Abfragerechten erstellt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Global bans are bans which apply instance wide.
This means that (if this rule apply to a victim) cant join any virtual server!
Global bans are by default shown to every server admin group,
but could only be created with query rights" + } + }, + { + "translated": "Keine Musik zu spielen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not playing any music" + } + }, + { + "translated": "Ausf\u00fchrung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Version:" + } + }, + { + "translated": "Online seit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Online since:" + } + }, + { + "translated": "Volumen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Volume:" + } + }, + { + "translated": "TeaSpeak-Konto:", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeaSpeak Account:" + } + }, + { + "translated": "Servergruppen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server groups:" + } + }, + { + "translated": "Kanalgruppe:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group:" + } + }, + { + "translated": "Weg", + "flags": [ + "google-translate" + ], + "key": { + "message": "Away" + } + }, + { + "translated": "Lautsprecher / Kopfh\u00f6rer deaktiviert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones disabled" + } + }, + { + "translated": "Mikrofon ausgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone disabled" + } + }, + { + "translated": "Lautsprecher / Kopfh\u00f6rer stummgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones Muted" + } + }, + { + "translated": "Mikrofon stummgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone Muted" + } + }, + { + "translated": "Lebenszeit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Livetime:" + } + }, + { + "translated": "Remote Volume:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote Volume:" + } + }, + { + "translated": "Lokales Volumen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local Volume:" + } + }, + { + "translated": "Momentan abgespielt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Currently replaying:" + } + }, + { + "translated": "Adresse:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Address:" + } + }, + { + "translated": "Art:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type:" + } + }, + { + "translated": "Betriebszeit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uptime:" + } + }, + { + "translated": "Aktuelle Kan\u00e4le:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Channels:" + } + }, + { + "translated": "Aktuelle Benutzer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Clients:" + } + }, + { + "translated": "Aktuelle Queries:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Queries:" + } + }, + { + "translated": "Info aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update info" + } + }, + { + "translated": "Codec-Qualit\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec Quality:" + } + }, + { + "translated": "Aktuelle Benutzer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current clients:" + } + }, + { + "translated": "Abonnementstatus:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscription Status:" + } + }, + { + "translated": "Gezeichnet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribed" + } + }, + { + "translated": "Abbestellt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unsubscribed" + } + }, + { + "translated": "Sprachdatenverschl\u00fcsselung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data Encryption:" + } + }, + { + "translated": "Unverschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unencrypted" + } + }, + { + "translated": "Verschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Encrypted" + } + }, + { + "translated": "(Vom Server mit Encrypted \u00fcberschrieben)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Encrypted)" + } + }, + { + "translated": "(Vom Server mit unverschl\u00fcsselt \u00fcberschrieben)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Unencrypted)" + } + }, + { + "translated": "Beschreibung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description" + } + }, + { + "translated": "Du wurdest von ...", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked by" + } + }, + { + "translated": "[AudioController] Die Samplerate der Quelle ist nicht gleich der Samplerate der Wiedergabe! (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Source sample rate isn't equal to playback sample rate! (%o | %o)" + } + }, + { + "translated": "Json enth\u00e4lt%s nicht", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json does not contains %s" + } + }, + { + "translated": "Der Validator hat f\u00fcr%s den Wert false", + "flags": [ + "google-translate" + ], + "key": { + "message": "Validator results in false for %s" + } + }, + { + "translated": "Ung\u00fcltiger Objekttyp%s f\u00fcr Eintrag%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid object type %s for entry %s" + } + }, + { + "translated": "Ung\u00fcltiger VAD-Handler (Voice Activation Detector)! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid VAD (Voice activation detector) handler! (%o)" + } + }, + { + "translated": "[VoiceRecorder] Starten Sie die Aufnahme! (Ger\u00e4t:%o | Gruppe:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Start recording! (Device: %o | Group: %o)" + } + }, + { + "translated": "Wieder loslassen (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Release again! (%o)" + } + }, + { + "translated": "Codec konnte nicht initialisiert werden! Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!\nError: %o" + } + }, + { + "translated": "Stream hinzuf\u00fcgen (%o)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding stream (%o)!" + } + }, + { + "translated": "Remote-SDP einstellen! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set remote sdp! (%o)" + } + }, + { + "translated": "Fehler beim Anwenden der Remote-Beschreibung:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply remote description: %o" + } + }, + { + "translated": "Remote-Cache-Eis-Kandidat%s:%o konnte nicht hinzugef\u00fcgt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote cached ice candidate %s: %o" + } + }, + { + "translated": "Remote-Eis hinzuf\u00fcgen! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add remote ice! (%s | %o)" + } + }, + { + "translated": "Fehler beim Hinzuf\u00fcgen des Remote-Ice-Kandidaten%s:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote ice candidate %s: %o" + } + }, + { + "translated": "Cache-Eis fernhalten! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cache remote ice! (%s | %o)" + } + }, + { + "translated": "Sprachbr\u00fccke konnte nicht eingerichtet werden (%s). Wiederverbindung zulassen:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge (%s). Allow reconnect: %s" + } + }, + { + "translated": "Lokale Beschreibung konnte nicht angewendet werden:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply local description: %o" + } + }, + { + "translated": "Angebot senden:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Send offer: %o" + } + }, + { + "translated": "Ich habe einen neuen Datenkanal! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got new data channel! (%s)" + } + }, + { + "translated": "Stimme von einem unbekannten Kunden haben? (ClientID:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Having voice from unknown client? (ClientID: %o)" + } + }, + { + "translated": "Der Codec%o konnte nicht abgespielt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback codec %o" + } + }, + { + "translated": "Wiedergabe von Client-Audio (%o) (%o) nicht m\u00f6glich", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback client's (%o) audio (%o)" + } + }, + { + "translated": "Ge\u00e4nderte Kanaleigenschaften von Kanal%s:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed channel properties of channel %s: %o" + } + }, + { + "translated": "Kanaloptionen: '%o'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel options: '%o'" + } + }, + { + "translated": "Erhaltener Kanalname:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel name: %o" + } + }, + { + "translated": "Ausrichten:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Align: %s" + } + }, + { + "translated": "Eigenschaften (% i) von%s (% i) aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i) of %s (%i)" + } + }, + { + "translated": "Aktualisiereigenschaft%s = '%s' ->%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating property %s = '%s' -> %o" + } + }, + { + "translated": "Eigene Beschreibung in%s \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing own description to %s" + } + }, + { + "translated": "Client%o aus Kanal mit Grund%o tritt aus", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kicking client %o from channel with reason %o" + } + }, + { + "translated": "Fehler beim Aufl\u00f6sen der Kanalberechtigung f\u00fcr den Namen%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel permission for name %o" + } + }, + { + "translated": "Aktualisierte Berechtigungen%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updated permissions %o" + } + }, + { + "translated": "Erhaltene Berechtigungen:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got permissions: %o" + } + }, + { + "translated": "Genehmigung ausgel\u00f6st! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission triggered! %o" + } + }, + { + "translated": "Ung\u00fcltige Kanalverschiebung (verschiedene Eltern! (%O |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel move (different parents! (%o|%o)" + } + }, + { + "translated": "Nur Musik:%o | Containermusik:%o | Container local:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music only: %o | Container music: %o | Container local: %o" + } + }, + { + "translated": "Einen neuen Kanal erstellen. Eigenschaften:%o Berechtigungen:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creating a new channel.\nProperties: %o\nPermissions: %o" + } + }, + { + "translated": "Wiedergabeton%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "playback sound %o" + } + }, + { + "translated": "Fehlender Ton%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing sound %o" + } + }, + { + "translated": "Verwendung des zwischengespeicherten Puffers:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using cached buffer: %o" + } + }, + { + "translated": "Audiodaten f\u00fcr%o konnten nicht decodiert werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to decode audio data for %o" + } + }, + { + "translated": "Fehler beim Laden der Audiodatei (Antwortcode%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file. (Response code %o)" + } + }, + { + "translated": "Wiedergabe von%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Replaying %s" + } + }, + { + "translated": "Erhaltener Fehler: (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got error: (%s)" + } + }, + { + "translated": "Unbekannter Befehlstyp%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown command type %o" + } + }, + { + "translated": "Handlungsbefehl '%s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Handling command '%s'" + } + }, + { + "translated": "Fehlender Befehl '%s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing command '%s'" + } + }, + { + "translated": "Ung\u00fcltiger Versprechen-Ergebnistyp:%o. Ergebnis:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid promise result type: %o. Result:" + } + }, + { + "translated": "Ung\u00fcltiger R\u00fcckgabecode! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid return code! (%o)" + } + }, + { + "translated": "Ich habe% d neue Channels", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d new channels" + } + }, + { + "translated": "% D Kanall\u00f6schungen erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel deletions" + } + }, + { + "translated": "% D Kanal versteckt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel hides" + } + }, + { + "translated": "Unbekannte Begr\u00fcndung f\u00fcr%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reasonid for %o" + } + }, + { + "translated": "Unbekannte Grund-ID%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reason id %o" + } + }, + { + "translated": "Musik-Player-Info f\u00fcr unbekannten oder ung\u00fcltigen Bot erhalten! (ID:% i, Eintrag:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)" + } + }, + { + "translated": "Verwenden des Info-Managers:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using info manager: %o" + } + }, + { + "translated": "Hostbanner konnte nicht geladen werden:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load hostbanner: %o" + } + }, + { + "translated": "Eltern:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Parents: %o | %o" + } + }, + { + "translated": "Spieler:%o | oo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Player: %o | %o" + } + }, + { + "translated": "Skala:% f => \u00fcbersetzen:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Scale: %f => translate: %o | %o" + } + }, + { + "translated": "Erforderlicher Test:%o | % i | %o =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Test needed required: %o | %i | %o => %o" + } + }, + { + "translated": "Bekannte unbekannte Berechtigungs-ID (%o /%o (%o))!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got unknown permission id (%o/%o (%o))!" + } + }, + { + "translated": "% i <>%s ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "%i <> %s -> %s" + } + }, + { + "translated": "Ich habe% i Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %i permissions" + } + }, + { + "translated": "% D ben\u00f6tigte Berechtigungen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d needed permissions." + } + }, + { + "translated": "Konnte Perm f\u00fcr ID%s nicht aufl\u00f6sen (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve perm for id %s (%o|%o)" + } + }, + { + "translated": "Kanalberechtigungen f\u00fcr Kanal%o erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel permissions for channel %o" + } + }, + { + "translated": "Fehlendes Kanal-Berechtigungs-Handle f\u00fcr angeforderte Kanal-ID%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing channel permission handle for requested channel id %o" + } + }, + { + "translated": "Erteilungsberechtigung%o konnte nicht aufgel\u00f6st werden. Neues erstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve grant permission %o. Creating a new one." + } + }, + { + "translated": "Gew\u00fcnschte Berechtigung mit ung\u00fcltigem Schl\u00fcssel angefordert! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Requested needed permission with invalid key! (%o)" + } + }, + { + "translated": "Gruppenziel konnte nicht aufgel\u00f6st werden! =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve group target! => %o" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe%o /%o erhalten, aber es ist keine registrierte Gruppe!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but its not a registered group!" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe%o /%o erhalten, wurde aber nie angefordert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but it was never requested!" + } + }, + { + "translated": "Schl\u00fcssel%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got key %o" + } + }, + { + "translated": "Ger\u00e4t%s (%s):%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got device %s (%s): %s" + } + }, + { + "translated": "Ausgew\u00e4hltes Mikrofon: id:%o Gruppe:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected microphone device: id: %o group: %o" + } + }, + { + "translated": "Ausgew\u00e4hltes Lautsprecherger\u00e4t: id:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected speaker device: id: %o" + } + }, + { + "translated": "Repository-Informationen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repository info" + } + }, + { + "translated": "M\u00f6chten Sie dieses Repository wirklich l\u00f6schen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete this repository?" + } + }, + { + "translated": "\u00dcbersetzungsinfo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation info" + } + }, + { + "translated": "Repository-URL eingeben:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter repository URL:
" + } + }, + { + "translated": "Repository konnte nicht abgefragt werden.
Stellen Sie sicher, dass dieses Repository g\u00fcltig und erreichbar ist.
Error:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to query repository.
Ensure that this repository is valid and reachable.
Error: " + } + }, + { + "translated": "Verbot%o hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding ban %o" + } + }, + { + "translated": "Bearbeitungsverbot%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Editing ban %o" + } + }, + { + "translated": "Bearbeitungs\u00e4nderungen \u00fcbernehmen%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Apply edit changes %o" + } + }, + { + "translated": "Verbot l\u00f6schen%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Deleting ban %o" + } + }, + { + "translated": "Bekam Banliste:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got banlist: %o" + } + }, + { + "translated": "Fehlender Verbotseintrag mit ID% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing ban entry with id %d" + } + }, + { + "translated": "Suche nach Filter%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Search for filter %s" + } + }, + { + "translated": "Starten Sie die Verbindung zu%s:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Start connection to %s:%d" + } + }, + { + "translated": "Typ:%o Daten:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type: %o Data:" + } + }, + { + "translated": "Erstellen Sie einen neuen Dateidownload f\u00fcr%s:%s (Schl\u00fcssel:%s, erwartet% d Bytes).", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create new file download to %s:%s (Key: %s, Expect %d bytes)" + } + }, + { + "translated": "Ung\u00fcltiger Dateilisteneintrag Pfad:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry. Path: %s" + } + }, + { + "translated": "Symbol%s ->%s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download icon %s -> %s" + } + }, + { + "translated": "Fehler beim Herunterladen des Symbols! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading icon! (%s)" + } + }, + { + "translated": "Symbol hat einen Bildtyp von%o (Medium:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon has an image type of %o (media: %o)" + } + }, + { + "translated": "Symbol%o geladen :)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon %o loaded :)" + } + }, + { + "translated": "Symbol%o konnte nicht geladen werden. Grund:% p", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load icon %o. Reason: %p" + } + }, + { + "translated": "Avatar%s wird heruntergeladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Downloading avatar %s" + } + }, + { + "translated": "Avatar%o ->%s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download avatar %o -> %s" + } + }, + { + "translated": "Fehler beim Herunterladen des Avatars! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading avatar! (%s)" + } + }, + { + "translated": "Avatar hat einen Bildtyp von%o (Medien:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar hat einen Bildtyp von%o (Medien:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar konnte f\u00fcr%s nicht geladen werden. Gr\u00fcnde daf\u00fcr", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar for %s. Reason: %s" + } + }, + { + "translated": "Zu formatierende Nachricht enth\u00e4lt ung\u00fcltigen Index (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message to format contains invalid index (%o)" + } + }, + { + "translated": "Offset:% d Anzahl:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offset: %d Number: %d" + } + }, + { + "translated": "Server-Chat", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server chat" + } + }, + { + "translated": "Channel-Chat", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel chat" + } + }, + { + "translated": "Fehler beim Einrichten von Jsrender", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup jsrender" + } + }, + { + "translated": "Fehler beim Laden von Jsrender! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load jsrender! %o" + } + }, + { + "translated": "Fehler beim Einrichten der Hauptseite!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup main page!" + } + }, + { + "translated": "Fehler beim Initialisieren des \u00dcbersetzungssystems! Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialized the translation system!\nError: %o" + } + }, + { + "translated": "Ppt konnte nicht initialisiert werden! Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!\nError: %o" + } + }, + { + "translated": "PCM-Daten konnten f\u00fcr Codec nicht erneut berechnet werden. Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resample PCM data for codec. Error: %o" + } + }, + { + "translated": "PCM-Daten konnten nicht f\u00fcr Codec codiert werden. Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not encode PCM data for codec. Error: %o" + } + }, + { + "translated": "Erforderliche Zeit:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Required time: %d" + } + }, + { + "translated": "Lagerzeit der Arbeiternachricht:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Worker message stock time: %d" + } + }, + { + "translated": "[Codec] Bekannte Antwort des Arbeitnehmers: Erfolg:%o Nachricht:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Codec] Got worker init response: Success: %o Message: %o" + } + }, + { + "translated": "R\u00fcckruf f\u00fcr Kost\u00fcm! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Costume callback! (%o)" + } + }, + { + "translated": "Fehler beim Laden der \u00dcbersetzungsdatei%s. Json konnte nicht analysiert oder verarbeitet werden:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file %s. Failed to parse or process json: %o" + } + }, + { + "translated": "Json konnte nicht verarbeitet oder analysiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to process or parse json!" + } + }, + { + "translated": "Fehler beim Laden der Datei:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load file: " + } + }, + { + "translated": "\u00dcbersetzungsdatei von%s erfolgreich initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully initialized up translation file from %s" + } + }, + { + "translated": "\u00dcbersetzungsdatei konnte nicht von "%s" geladen werden. Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file from \"%s\". Error: %o" + } + }, + { + "translated": "Standard-Repository wurde erfolgreich von "%s" hinzugef\u00fcgt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully added default repository from \"%s\"." + } + }, + { + "translated": "Standard-Repository konnte nicht hinzugef\u00fcgt werden. Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add default repository. Error: %o" + } + }, + { + "translated": "\u00dcbersetzungsdatei f\u00fcr Repository%s konnte nicht geladen werden. \u00dcbersetzung:%s (%s) Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file for repository %s. Translation: %s (%s) Error: %o" + } + }, + { + "translated": "Das Repository konnte w\u00e4hrend der Iteration nicht geladen werden:%s (%s). Fehler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load repository while iteration: %s (%s). Error: %o" + } + }, + { + "translated": "\u00dcbersetzungssystem", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation System" + } + }, + { + "translated": "Laden der aktuell ausgew\u00e4hlten \u00dcbersetzungsdatei fehlgeschlagen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load current selected translation file." + } + }, + { + "translated": "Standard-Fallback-\u00dcbersetzungen verwenden.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using default fallback translations." + } + }, + { + "translated": "Servereigenschaften \u00e4ndern%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing server properties %o" + } + }, + { + "translated": "Ge\u00e4nderte Eigenschaften:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed properties: %o" + } + }, + { + "translated": "Eigenschaften aktualisieren (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i)" + } + }, + { + "translated": "Es wurde versucht, eine nicht bekannte Berechtigung zu bearbeiten! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attempted to edit a not known permission! (%s)" + } + }, + { + "translated": "Berechtigung%s mit Eigenschaften hinzugef\u00fcgt:%o%o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %s with properties: %o %o %o" + } + }, + { + "translated": "Berechtigung%s wurde entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed permission %s" + } + }, + { + "translated": "Zuschuss von%o f\u00fcr%s hinzugef\u00fcgt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added grant of %o for %s" + } + }, + { + "translated": "Berechtigungsberechtigung f\u00fcr%s entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed grant permission for %s" + } + }, + { + "translated": "Berechtigung%o mit Eigenschaften hinzugef\u00fcgt:%o%o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %o with properties: %o %o %o" + } + }, + { + "translated": "Verbinden Sie sich mit einem Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect to a server" + } + }, + { + "translated": "Trennen Sie die Verbindung zum Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disconnect from server" + } + }, + { + "translated": "Abwesenheits status ändern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toggle away status" + } + }, + { + "translated": "Mikrofon abschalten/anschalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute microphone" + } + }, + { + "translated": "Kopfh\u00f6rer abschalten/anschalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute headphones" + } + }, + { + "translated": "Tokenliste", + "flags": [ + "google-translate" + ], + "key": { + "message": "List tokens" + } + }, + { + "translated": "Berechtigungen anzeigen / bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "View/edit permissions" + } + }, + { + "translated": "Bearbeiten Sie die globalen Client-Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit global client settings" + } + }, + { + "translated": "\u00dcbersetzungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translations" + } + }, + { + "translated": "Verf\u00fcgbare \u00dcbersetzungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Available translations" + } + }, + { + "translated": "Englisch (Standard / Fallback)", + "flags": [ + "google-translate" + ], + "key": { + "message": "English (Default / Fallback)" + } + }, + { + "translated": "Repository hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add repository" + } + }, + { + "translated": "Achtung: Diese Einstellungen werden erst nach einem Neustart oder Neuladen beeinflusst!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attention: These settings get only affected after a restart or reload!" + } + }, + { + "translated": "jetzt neu laden", + "flags": [ + "google-translate" + ], + "key": { + "message": "reload now" + } + } + ] +} \ No newline at end of file diff --git a/shared/i18n/info.json b/shared/i18n/info.json new file mode 100644 index 00000000..80b5ca6f --- /dev/null +++ b/shared/i18n/info.json @@ -0,0 +1,18 @@ +{ + "translations": [ + { + "key": "de_gt", + "path": "de_google_translate.translation" + }, + { + "key": "pl_gt", + "path": "pl_google_translate.translation" + }, + { + "key": "tr_gt", + "path": "tr_google_translate.translation" + } + ], + "name": "Default TeaSpeak repository", + "contact": "i18n@teaspeak.de" +} \ No newline at end of file diff --git a/shared/i18n/pl_google_translate.translation b/shared/i18n/pl_google_translate.translation new file mode 100644 index 00000000..dee3f608 --- /dev/null +++ b/shared/i18n/pl_google_translate.translation @@ -0,0 +1,5728 @@ +{ + "info": { + "name": "Polish translation, based on Google Translate", + "contributors": [ + { + "name": "Google Translate, via script by Markus Hadenfeldt", + "email": "gtr.i18n.client@teaspeak.de" + } + ] + }, + "translations": [ + { + "translated": "Nie mo\u017cna zainicjowa\u0107 kontrolera audio!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize audio controller!" + } + }, + { + "translated": "Rozpocz\u0105\u0142 si\u0119 d\u017awi\u0119k", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sounds initialitzed" + } + }, + { + "translated": "[AudioController] Masz pusty lub niezdefiniowany bufor! Upuszczam to", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Got empty or undefined buffer! Dropping it" + } + }, + { + "translated": "[AudioController] Nie uda\u0142o si\u0119 odtworzy\u0107 d\u017awi\u0119ku. Globalny kontekst audio nie zosta\u0142 jeszcze zainicjowany!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Failed to replay audio. Global audio context not initialized yet!" + } + }, + { + "translated": "[AudioController] Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania \u017ar\u00f3d\u0142a nie jest r\u00f3wna cz\u0119stotliwo\u015bci pr\u00f3bkowania odtwarzania! (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Source sample rate isn't equal to playback sample rate! (%o | %o)" + } + }, + { + "translated": "[Audio] Rozpoczynanie nowego odtwarzania", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Starting new playback" + } + }, + { + "translated": "[D\u017awi\u0119k] Prebuffering powiod\u0142o si\u0119 (Powt\u00f3rka teraz)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Prebuffering succeeded (Replaying now)" + } + }, + { + "translated": "[Audio] Buforowanie si\u0119 powiod\u0142o (Powt\u00f3rka teraz)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering succeeded (Replaying now)" + } + }, + { + "translated": "Upuszczanie bufora, poniewa\u017c kolejka odtwarzania ro\u015bnie bardzo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Dropping buffer because playing queue grows to much" + } + }, + { + "translated": "[Audio] Wykryto niedope\u0142nienie bufora!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Detected a buffer underflow!" + } + }, + { + "translated": "[D\u017awi\u0119k] Buforowanie przekroczy\u0142o limit czasu. P\u0142ukanie i zatrzymywanie powt\u00f3rki", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering exceeded timeout. Flushing and stopping replay" + } + }, + { + "translated": "Json nie zawiera%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json does not contains %s" + } + }, + { + "translated": "Validator daje warto\u015b\u0107 false dla%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Validator results in false for %s" + } + }, + { + "translated": "Niepoprawny typ obiektu%s dla wpisu%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid object type %s for entry %s" + } + }, + { + "translated": "lat", + "flags": [ + "google-translate" + ], + "key": { + "message": "years" + } + }, + { + "translated": "dni", + "flags": [ + "google-translate" + ], + "key": { + "message": "days" + } + }, + { + "translated": "godziny", + "flags": [ + "google-translate" + ], + "key": { + "message": "hours" + } + }, + { + "translated": "minuty", + "flags": [ + "google-translate" + ], + "key": { + "message": "minutes" + } + }, + { + "translated": "sekundy", + "flags": [ + "google-translate" + ], + "key": { + "message": "seconds" + } + }, + { + "translated": "teraz", + "flags": [ + "google-translate" + ], + "key": { + "message": "now" + } + }, + { + "translated": "Otrzyma\u0142em niezdefiniowany typ!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got undefined type!" + } + }, + { + "translated": "Zmieniono VAD!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD changed!" + } + }, + { + "translated": "Wykryto klucz VAD.
Zresetuj sw\u00f3j klucz PPT!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD key detection changed.
Please reset your PPT key!" + } + }, + { + "translated": "Nieprawid\u0142owy modu\u0142 VAD (detektor aktywacji g\u0142osowej)! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid VAD (Voice activation detector) handler! (%o)" + } + }, + { + "translated": "[VoiceRecorder] Rozpocznij nagrywanie! (Urz\u0105dzenie:%o | Grupa:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Start recording! (Device: %o | Group: %o)" + } + }, + { + "translated": "Nie mo\u017cna rozwi\u0105za\u0107 mikrofonu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!" + } + }, + { + "translated": "Nie mo\u017cna rozwi\u0105za\u0107 mikrofonu!
Wiadomo\u015b\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!
Message: " + } + }, + { + "translated": "Nie mo\u017cna uzyska\u0107 mikrofonu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get microphone!" + } + }, + { + "translated": "Zatrzymaj nagrywanie!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Stop recording!" + } + }, + { + "translated": "[VoiceRecorder] Dosta\u0142em strumie\u0144 mikrofonu, ale nie mam kontekstu d\u017awi\u0119kowego. Oczekiwanie na jej inicjalizacj\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Got microphone stream, but havn't a audio context. Waiting until its initialized" + } + }, + { + "translated": "Pu\u015b\u0107 ponownie! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Release again! (%o)" + } + }, + { + "translated": "Wy\u0142\u0105czanie obs\u0142ugi kodek\u00f3w dla", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disabling codec support for " + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 sterownika kodera-dekodera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load codec driver" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 ani zainicjowa\u0107 kodeka", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load or initialize codec " + } + }, + { + "translated": "nieobs\u0142ugiwany kodek!", + "flags": [ + "google-translate" + ], + "key": { + "message": "unsupported codec!" + } + }, + { + "translated": "Nie mo\u017cna zainicjowa\u0107 kodeka! B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!\nError: %o" + } + }, + { + "translated": "Nie mo\u017cna zainicjowa\u0107 kodeka!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!" + } + }, + { + "translated": "Speex Narrowband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Narrowband" + } + }, + { + "translated": "Speex Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Wideband" + } + }, + { + "translated": "Speex Ultra Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra Wideband" + } + }, + { + "translated": "CELT Mono", + "flags": [ + "google-translate" + ], + "key": { + "message": "CELT Mono" + } + }, + { + "translated": "Opus Voice", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Voice" + } + }, + { + "translated": "Opus Music", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Music" + } + }, + { + "translated": "Inicjowanie programu obs\u0142ugi g\u0142osu po zainicjowaniu kontrolera AudioController!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initializing voice handler after AudioController has been initialized!" + } + }, + { + "translated": "Konfigurowanie natywnego strumienia g\u0142osu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up native voice stream!" + } + }, + { + "translated": "Natywny kodek nie jest obs\u0142ugiwany!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Native codec isnt supported!" + } + }, + { + "translated": "Nie mo\u017cna przenie\u015b\u0107 d\u017awi\u0119ku (brak po\u0142\u0105czenia)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not transfer audio (not connected)" + } + }, + { + "translated": "Dodawanie strumienia (%o)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding stream (%o)!" + } + }, + { + "translated": "Nie mo\u017cna utworzy\u0107 oferty lodu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not create ice offer!" + } + }, + { + "translated": "Ustaw zdalny sdp! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set remote sdp! (%o)" + } + }, + { + "translated": "Nie mo\u017cna zastosowa\u0107 zdalnego opisu:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply remote description: %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 doda\u0107 zdalnie buforowanego kandydata na lodowisko%s:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote cached ice candidate %s: %o" + } + }, + { + "translated": "Dodaj zdalny l\u00f3d! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add remote ice! (%s | %o)" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 doda\u0107 zdalnego kandydata do lodu%s:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote ice candidate %s: %o" + } + }, + { + "translated": "Cache zdalnego lodu! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cache remote ice! (%s | %o)" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 skonfigurowa\u0107 mostu g\u0142osowego ({}). Zezwalaj na ponowne po\u0142\u0105czenie: {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge ({}). Allow reconnect: {}" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 skonfigurowa\u0107 mostu g\u0142osowego (%s). Zezwalaj na ponowne po\u0142\u0105czenie:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge (%s). Allow reconnect: %s" + } + }, + { + "translated": "Dosta\u0142em kandydata na l\u00f3d! Zdarzenie:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got ice candidate! Event:" + } + }, + { + "translated": "Oferta stworzona i zaakceptowana", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offer created and accepted" + } + }, + { + "translated": "Nie mo\u017cna zastosowa\u0107 opisu lokalnego:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply local description: %o" + } + }, + { + "translated": "Wy\u015blij ofert\u0119:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Send offer: %o" + } + }, + { + "translated": "Mam nowy kana\u0142 danych! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got new data channel! (%s)" + } + }, + { + "translated": "Masz g\u0142os od nieznanego klienta? (ClientID:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Having voice from unknown client? (ClientID: %o)" + } + }, + { + "translated": "Nie mo\u017cna odtwarza\u0107 kodeku%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback codec %o" + } + }, + { + "translated": "Nie mo\u017cna odtworzy\u0107 d\u017awi\u0119ku klienta (%o) (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback client's (%o) audio (%o)" + } + }, + { + "translated": "Lokalny g\u0142os zako\u0144czy\u0142 si\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice ended" + } + }, + { + "translated": "Rozpocz\u0105\u0142 si\u0119 lokalny g\u0142os", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice started" + } + }, + { + "translated": "Prze\u0142\u0105cz na kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Switch to channel" + } + }, + { + "translated": "Edytuj kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit channel" + } + }, + { + "translated": "Zmieniono w\u0142a\u015bciwo\u015bci kana\u0142u kana\u0142u%s:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed channel properties of channel %s: %o" + } + }, + { + "translated": "Usu\u0144 kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete channel" + } + }, + { + "translated": "Utw\u00f3rz bota muzycznego", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create music bot" + } + }, + { + "translated": "Bot zosta\u0142 pomy\u015blnie utworzony", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bot successfully created" + } + }, + { + "translated": "Ale zosta\u0142 pomy\u015blnie utworzony.", + "flags": [ + "google-translate" + ], + "key": { + "message": "But has been successfully created." + } + }, + { + "translated": "Nie uda\u0142o si\u0119 utworzy\u0107 bota", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to create bot" + } + }, + { + "translated": "Utw\u00f3rz podkana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create sub channel" + } + }, + { + "translated": "Utw\u00f3rz kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create channel" + } + }, + { + "translated": "Opcje kana\u0142u: "%o"", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel options: '%o'" + } + }, + { + "translated": "Otrzymano nazw\u0119 kana\u0142u:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel name: %o" + } + }, + { + "translated": "Powtarzaj\u0105cy si\u0119 spacer wzi\u0105\u0142 za du\u017co powt\u00f3rze\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repeating spacer took too much repeats!" + } + }, + { + "translated": "Wyr\u00f3wnaj:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Align: %s" + } + }, + { + "translated": "Zaktualizuj w\u0142a\u015bciwo\u015bci (% i)%s (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i) of %s (%i)" + } + }, + { + "translated": "Aktualizacja w\u0142a\u015bciwo\u015bci%s = '%s' ->%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating property %s = '%s' -> %o" + } + }, + { + "translated": "Has\u0142o kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password" + } + }, + { + "translated": "Has\u0142o kana\u0142u:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password:" + } + }, + { + "translated": "Zmie\u0144 g\u0142o\u015bno\u015b\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change volume" + } + }, + { + "translated": "Nastawi\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reset" + } + }, + { + "translated": "Anuluj", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cancel" + } + }, + { + "translated": "dobrze", + "flags": [ + "google-translate" + ], + "key": { + "message": "OK" + } + }, + { + "translated": "Grupy serwer\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Groups" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 rozwi\u0105za\u0107 grupy docelowej!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve target group!" + } + }, + { + "translated": "Blisko", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close" + } + }, + { + "translated": "Rozpocz\u0119cie ruchu myszy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Starting mouse move" + } + }, + { + "translated": "Ustaw grup\u0119 serwer\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set server group" + } + }, + { + "translated": "Ustaw grup\u0119 kana\u0142\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set channel group" + } + }, + { + "translated": "Uprawnienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permissions" + } + }, + { + "translated": "Otw\u00f3rz czat tekstowy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open text chat" + } + }, + { + "translated": "Poke klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke client" + } + }, + { + "translated": "Wiadomo\u015b\u0107 poke:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke message:
" + } + }, + { + "translated": "Zmie\u0144 opis", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change description" + } + }, + { + "translated": "Zmie\u0144 opis klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change client description" + } + }, + { + "translated": "Nowy opis:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New description:
" + } + }, + { + "translated": "Przenie\u015b klienta na sw\u00f3j kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move client to your channel" + } + }, + { + "translated": "Wykop klienta z kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from channel" + } + }, + { + "translated": "Wyrzu\u0107 przyczyn\u0119:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick reason:
" + } + }, + { + "translated": "Kopnij klienta na serwerze", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client fom server" + } + }, + { + "translated": "Kopnij klienta z serwera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from server" + } + }, + { + "translated": "Zakaz klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client" + } + }, + { + "translated": "Zmie\u0144 g\u0142o\u015bno\u015b\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change Volume" + } + }, + { + "translated": "Zmie\u0144 nazw\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name" + } + }, + { + "translated": "Zmie\u0144 w\u0142asny opis", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change own description" + } + }, + { + "translated": "Zmiana w\u0142asnego opisu na%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing own description to %s" + } + }, + { + "translated": "Nick zmieni\u0142 si\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname successfully changed" + } + }, + { + "translated": "Nie mo\u017cna zmieni\u0107 pseudonimu ({})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not change nickname ({})" + } + }, + { + "translated": "Zmie\u0144 nazw\u0119 bota", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot name" + } + }, + { + "translated": "Zmie\u0144 nazw\u0119 bota muzyki", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots nickname" + } + }, + { + "translated": "Nowy pseudonim:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New nickname:
" + } + }, + { + "translated": "Zmie\u0144 opis bota", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot description" + } + }, + { + "translated": "Zmie\u0144 opis bot\u00f3w muzycznych", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots description" + } + }, + { + "translated": "Otw\u00f3rz panel muzyczny", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open music panel" + } + }, + { + "translated": "Szybkie powt\u00f3rzenie adresu URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quick url replay" + } + }, + { + "translated": "Wprowad\u017a adres URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the URL" + } + }, + { + "translated": "URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "URL:" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 ponownie odtworzy\u0107 adresu URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to replay url" + } + }, + { + "translated": "Kicking klienta%o z kana\u0142u z powodu%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kicking client %o from channel with reason %o" + } + }, + { + "translated": "Usu\u0144 bota", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bot" + } + }, + { + "translated": "Czy na pewno chcesz usun\u0105\u0107 {0}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete {0}" + } + }, + { + "translated": "Jeste\u015b pewny?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Are you sure?" + } + }, + { + "translated": "Dobrze", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ok" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 rozwi\u0105za\u0107 uprawnie\u0144 do kana\u0142u dla nazwy%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel permission for name %o" + } + }, + { + "translated": "Zaktualizowane uprawnienia%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updated permissions %o" + } + }, + { + "translated": "Mam uprawnienia:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got permissions: %o" + } + }, + { + "translated": "Uruchomiono uprawnienia! %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission triggered! %o" + } + }, + { + "translated": "Nieprawid\u0142owy ruch na kanale (r\u00f3\u017cni rodzice! (%O |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel move (different parents! (%o|%o)" + } + }, + { + "translated": "Multiselect kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect channel" + } + }, + { + "translated": "Multiselect klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect client" + } + }, + { + "translated": "Tylko muzyka:%o | Muzyka kontener\u00f3w:%o | Kontener lokalny:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music only: %o | Container music: %o | Container local: %o" + } + }, + { + "translated": "Poke klient\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke clients" + } + }, + { + "translated": "Przenie\u015b klient\u00f3w na sw\u00f3j kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move clients to your channel" + } + }, + { + "translated": "Kick klient\u00f3w z kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from channel" + } + }, + { + "translated": "Kopnij klient\u00f3w na serwerze", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients fom server" + } + }, + { + "translated": "Kopiuj klient\u00f3w z serwera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from server" + } + }, + { + "translated": "Zablokuj klient\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban clients" + } + }, + { + "translated": "Usu\u0144 boty", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bots" + } + }, + { + "translated": "Czy na pewno chcesz usun\u0105\u0107?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete " + } + }, + { + "translated": "Tworzenie nowego kana\u0142u. W\u0142a\u015bciwo\u015bci:%o Uprawnienia:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creating a new channel.\nProperties: %o\nPermissions: %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 rozwi\u0105za\u0107 kana\u0142u po utworzeniu. Nie mo\u017cna zastosowa\u0107 uprawnie\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel after creation. Could not apply permissions!" + } + }, + { + "translated": "Kana\u0142 {} zosta\u0142 pomy\u015blnie utworzony!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel {} successfully created!" + } + }, + { + "translated": "d\u017awi\u0119k odtwarzania%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "playback sound %o" + } + }, + { + "translated": "Brak d\u017awi\u0119ku%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing sound %o" + } + }, + { + "translated": "Korzystanie z buforowanego bufora:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using cached buffer: %o" + } + }, + { + "translated": "Dekodowanie danych", + "flags": [ + "google-translate" + ], + "key": { + "message": "Decoding data" + } + }, + { + "translated": "Mam zdekodowane dane", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got decoded data" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 zdekodowa\u0107 danych d\u017awi\u0119kowych dla%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to decode audio data for %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 pliku audio. (Kod odpowiedzi%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file. (Response code %o)" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 pliku audio", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file " + } + }, + { + "translated": "Powtarzanie%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Replaying %s" + } + }, + { + "translated": "Twoja przegl\u0105darka nie obs\u0142uguje dekodowaniaAudioData! U\u017cywanie w\u0119z\u0142a do odtwarzania! Pomija to wyj\u015bcie audio i regulacj\u0119 g\u0142o\u015bno\u015bci!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Your browser does not support decodeAudioData! Using a node to playback! This bypasses the audio output and volume regulation!" + } + }, + { + "translated": "Zosta\u0142e\u015b szturchni\u0119ty!", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked!" + } + }, + { + "translated": "Pod\u0142\u0105czone gniazdo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Socket connected" + } + }, + { + "translated": "Logowanie...", + "flags": [ + "google-translate" + ], + "key": { + "message": "Logging in..." + } + }, + { + "translated": "\u0141\u0105czenie z {0}: {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connecting to {0}:{1}" + } + }, + { + "translated": "Wywo\u0142any limit czasu po\u0142\u0105czenia!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect timeout triggered!" + } + }, + { + "translated": "Masz b\u0142\u0105d: (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got error: (%s)" + } + }, + { + "translated": "za\u017c\u0105da\u0107 roz\u0142\u0105czenia", + "flags": [ + "google-translate" + ], + "key": { + "message": "request disconnect" + } + }, + { + "translated": "Po\u0142\u0105czenie zamkni\u0119te", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection closed" + } + }, + { + "translated": "Nie mo\u017cna zanalizowa\u0107 wiadomo\u015bci json!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not parse message json!" + } + }, + { + "translated": "Brakuj\u0105cy typ danych!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing data type!" + } + }, + { + "translated": "Nieznany typ polecenia%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown command type %o" + } + }, + { + "translated": "Obs\u0142uga polecenia "%s"", + "flags": [ + "google-translate" + ], + "key": { + "message": "Handling command '%s'" + } + }, + { + "translated": "Json:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json:" + } + }, + { + "translated": "Brakuj\u0105ce polecenie "%s"", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing command '%s'" + } + }, + { + "translated": "Niewystarczaj\u0105ce uprawnienia klienta. Niepowodzenie za pozwoleniem", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission " + } + }, + { + "translated": "Niewystarczaj\u0105ce uprawnienia klienta. B\u0142\u0105d przy zezwoleniu {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission {}" + } + }, + { + "translated": "Wykonanie polecenia ko\u0144czy si\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Command execution results in " + } + }, + { + "translated": "Nieprawid\u0142owy typ wyniku obietnicy:%o. Wynik:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid promise result type: %o. Result:" + } + }, + { + "translated": "Masz b\u0142\u0105d logowania", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got login error" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 pobra\u0107 wersji:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to get version:" + } + }, + { + "translated": "Nieprawid\u0142owy kod powrotu! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid return code! (%o)" + } + }, + { + "translated": "Konfigurowanie g\u0142osu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up voice" + } + }, + { + "translated": "Po\u0142\u0105czono jako {0}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connected as {0}" + } + }, + { + "translated": "Nieprawid\u0142owy identyfikator zam\u00f3wienia kana\u0142u!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel order id!" + } + }, + { + "translated": "Nieprawid\u0142owy rodzic kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel parent" + } + }, + { + "translated": "Otrzyma\u0142em% d nowych kana\u0142\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d new channels" + } + }, + { + "translated": "Usuni\u0119to% d kana\u0142\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel deletions" + } + }, + { + "translated": "Nieprawid\u0142owy kana\u0142 onDelete (Nieznany kana\u0142)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel onDelete (Unknown channel)" + } + }, + { + "translated": "% D ukry\u0142 kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel hides" + } + }, + { + "translated": "Nieprawid\u0142owy kana\u0142 w ukryciu (Nieznany kana\u0142)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel on hide (Unknown channel)" + } + }, + { + "translated": "{0} pojawi\u0142o si\u0119 w {1} do {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}" + } + }, + { + "translated": "{0} po\u0142\u0105czone z kana\u0142em {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} connected to channel {1}" + } + }, + { + "translated": "{0} pojawi\u0142o si\u0119 z {1} na {2} przeniesione przez {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, moved by {3}" + } + }, + { + "translated": "{0} pojawi\u0142o si\u0119 w {1} do {2}, kopa\u0142o {3} {4}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, kicked by {3}{4}" + } + }, + { + "translated": "Nieznany reasonid dla%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reasonid for %o" + } + }, + { + "translated": "Nieznany klient w lewo!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left!" + } + }, + { + "translated": "{0} znikn\u0119\u0142o z {1} do {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} disappeared from {1} to {2}" + } + }, + { + "translated": "{0} opu\u015bci\u0142 serwer {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} left the server{1}" + } + }, + { + "translated": "Us\u0142uga {0} zosta\u0142a wyrzucona z serwera przez {1}. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from the server by {1}.{2}" + } + }, + { + "translated": "Twoja {0} zosta\u0142a wyrzucona z Twojego kana\u0142u przez {1}. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from your channel by {1}.{2}" + } + }, + { + "translated": "{0} zosta\u0142o zbanowane {1} przed {2}. {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was banned {1} by {2}.{3}" + } + }, + { + "translated": "Nieznany klient zostawi\u0142 pow\u00f3d!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left reason!" + } + }, + { + "translated": "Nieznany ruch klienta (Klient)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Client)!" + } + }, + { + "translated": "Nieznany ruch klienta (kana\u0142 do)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel to)!" + } + }, + { + "translated": "Nieznany ruch klienta (kana\u0142 z)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel from)!" + } + }, + { + "translated": "Zosta\u0142e\u015b przeniesiony przez {3} z kana\u0142u {1} do {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "You was moved by {3} from channel {1} to {2}" + } + }, + { + "translated": "{0} zosta\u0142o przeniesione z kana\u0142u {1} do {2} o {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was moved from channel {1} to {2} by {3}" + } + }, + { + "translated": "Zmieni\u0142e\u015b z kana\u0142u {1} na {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "You switched from channel {1} to {2}" + } + }, + { + "translated": "{0} prze\u0142\u0105czono z kana\u0142u {1} na {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} switched from channel {1} to {2}" + } + }, + { + "translated": "Wyrzucono Ci\u0119 z kana\u0142u {1} na kana\u0142 {2} o {3} {4}", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked out of the channel {1} to channel {2} by {3}{4}" + } + }, + { + "translated": "{0} zosta\u0142o wyrzucone z kana\u0142u {1} do {2} o {3} {4}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} got kicked from channel {1} to {2} by {3}{4}" + } + }, + { + "translated": "Nieznany pow\u00f3d id%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reason id %o" + } + }, + { + "translated": "Nieznany ruch kana\u0142u (Kana\u0142)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (Channel)!" + } + }, + { + "translated": "Nieznany ruch kana\u0142u (prev)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (prev)!" + } + }, + { + "translated": "Nieznany ruch kana\u0142u (nadrz\u0119dny)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (parent)!" + } + }, + { + "translated": "Nieznana edycja kana\u0142u (kana\u0142)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel edit (Channel)!" + } + }, + { + "translated": "Otrzyma\u0142em prywatn\u0105 wiadomo\u015b\u0107 od niew\u0142a\u015bciwego klienta!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got private message from invalid client!" + } + }, + { + "translated": "Pr\u00f3bowa\u0142em zaktualizowa\u0107 nieistniej\u0105cego klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tried to update an non existing client" + } + }, + { + "translated": "Otrzyma\u0142em informacj\u0119 o odtwarzaczu muzyki dla nieznanego lub nieprawid\u0142owego bota! (ID:% i, wpis:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)" + } + }, + { + "translated": "Korzystanie z mened\u017cera informacji:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using info manager: %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 hosta:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load hostbanner: %o" + } + }, + { + "translated": "Hostbanner zosta\u0142 za\u0142adowany", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hostbanner has been loaded" + } + }, + { + "translated": "\u0141aduj\u0119...", + "flags": [ + "google-translate" + ], + "key": { + "message": "loading..." + } + }, + { + "translated": "Bez tytu\u0142u lub adresu URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "No title or url" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 uruchomi\u0107 odtwarzania", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 uruchomi\u0107 odtwarzania.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play.
{}" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 wykona\u0107 pauzy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 wykona\u0107 pauzy.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause.
{}" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 wykona\u0107 zatrzymania", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 wykona\u0107 zatrzymania.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop.
{}" + } + }, + { + "translated": "Nie mo\u017cna wykona\u0107 do przodu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute forward" + } + }, + { + "translated": "Nie mo\u017cna wykona\u0107 przewijania do ty\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute rewind" + } + }, + { + "translated": "Nie zaimplementowano", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented" + } + }, + { + "translated": "Ta funkcja nie jest jeszcze zaimplementowana!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function is not implemented yet!" + } + }, + { + "translated": "Rodzice:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Parents: %o | %o" + } + }, + { + "translated": "Gracz:%o | z oo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Player: %o | %o" + } + }, + { + "translated": "Skala:% f => przet\u0142umacz:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Scale: %f => translate: %o | %o" + } + }, + { + "translated": "Niezb\u0119dny test:%o | % i | %o =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Test needed required: %o | %i | %o => %o" + } + }, + { + "translated": "Masz nieznany identyfikator uprawnienia (%o /%o (%o))!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got unknown permission id (%o/%o (%o))!" + } + }, + { + "translated": "Mapowanie uprawnie\u0144", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission mapping" + } + }, + { + "translated": "Grupa", + "flags": [ + "google-translate" + ], + "key": { + "message": "Group " + } + }, + { + "translated": "% i <>%s ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "%i <> %s -> %s" + } + }, + { + "translated": "Mam uprawnienia% i", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %i permissions" + } + }, + { + "translated": "Masz potrzebne uprawnienia, ale nie masz listy uprawnie\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got needed permissions but don't have a permission list!" + } + }, + { + "translated": "Masz% d potrzebnych uprawnie\u0144.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d needed permissions." + } + }, + { + "translated": "Nie mo\u017cna rozpozna\u0107 perm dla id%s (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve perm for id %s (%o|%o)" + } + }, + { + "translated": "Masz uprawnienia kana\u0142u dla kana\u0142u%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel permissions for channel %o" + } + }, + { + "translated": "Brakuj\u0105cy uchwyt uprawnie\u0144 kana\u0142u dla \u017c\u0105danego ID kana\u0142u%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing channel permission handle for requested channel id %o" + } + }, + { + "translated": "Nie mo\u017cna rozwi\u0105za\u0107 uprawnie\u0144 zezwalaj\u0105cych%o. Tworzenie nowego.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve grant permission %o. Creating a new one." + } + }, + { + "translated": "\u017b\u0105dano wymaganego pozwolenia z nieprawid\u0142owym kluczem! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Requested needed permission with invalid key! (%o)" + } + }, + { + "translated": "nieprawid\u0142owe zam\u00f3wienie!", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid order!" + } + }, + { + "translated": "Nie mo\u017cna rozwi\u0105za\u0107 zadania grupowego! =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve group target! => %o" + } + }, + { + "translated": "Masz uprawnienia grupowe dla grupy%o /%o, ale nie jest to zarejestrowana grupa!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but its not a registered group!" + } + }, + { + "translated": "Masz uprawnienia grupowe dla grupy%o /%o, ale nigdy nie by\u0142o wymagane!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but it was never requested!" + } + }, + { + "translated": "Nie mo\u017cna zablokowa\u0107 element\u00f3w customElements na karcie!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not defied tab customElements!" + } + }, + { + "translated": "Ustawienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Settings" + } + }, + { + "translated": "Wpisz \u017c\u0105dany klucz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type the key you wish" + } + }, + { + "translated": "Mam klucz%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got key %o" + } + }, + { + "translated": "Brak urz\u0105dzenia", + "flags": [ + "google-translate" + ], + "key": { + "message": "No device" + } + }, + { + "translated": "Mam urz\u0105dzenie%s (%s):%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got device %s (%s): %s" + } + }, + { + "translated": "Nie mo\u017cna wyliczy\u0107 na urz\u0105dzeniach!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not enumerate over devices!" + } + }, + { + "translated": "Nie mo\u017cna pobra\u0107 listy urz\u0105dze\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get device list!" + } + }, + { + "translated": "Wybrane urz\u0105dzenie mikrofonu: id:%o grupa:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected microphone device: id: %o group: %o" + } + }, + { + "translated": "Wybrane urz\u0105dzenie g\u0142o\u015bnikowe: id:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected speaker device: id: %o" + } + }, + { + "translated": "Nie mo\u017cna zmieni\u0107 urz\u0105dzenia!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to change device!" + } + }, + { + "translated": "Informacje o repozytorium", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repository info" + } + }, + { + "translated": "Czy na pewno chcesz usun\u0105\u0107 to repozytorium?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete this repository?" + } + }, + { + "translated": "Informacje o t\u0142umaczeniu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation info" + } + }, + { + "translated": "Wprowad\u017a adres URL repozytorium:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter repository URL:
" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 wys\u0142a\u0107 kwerendy do repozytorium.
Upewnij si\u0119, \u017ce to repozytorium jest prawid\u0142owe i osi\u0105galne.
B\u0142\u0105d:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to query repository.
Ensure that this repository is valid and reachable.
Error: " + } + }, + { + "translated": "Dodawanie ban%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding ban %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 doda\u0107 bana", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add ban" + } + }, + { + "translated": "Edytowanie ban%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Editing ban %o" + } + }, + { + "translated": "Zastosuj zmiany edycji%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Apply edit changes %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 edytowa\u0107 bana", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to edit ban" + } + }, + { + "translated": "Usuni\u0119cie ban%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Deleting ban %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 usun\u0105\u0107 ban", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to delete ban" + } + }, + { + "translated": "Masz banlist\u0119:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got banlist: %o" + } + }, + { + "translated": "Brak wpisu bankowego z identyfikatorem% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing ban entry with id %d" + } + }, + { + "translated": "Lista ban\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banlist" + } + }, + { + "translated": "Wyszukaj filtr%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Search for filter %s" + } + }, + { + "translated": "Odrzu\u0107 wiadomo\u015b\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set away message" + } + }, + { + "translated": "Wprowad\u017a wiadomo\u015b\u0107 o wyje\u017adzie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the away message" + } + }, + { + "translated": "Nieobs\u0142ugiwany kodek kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel codec unsupported" + } + }, + { + "translated": "Ten kana\u0142 ma nieobs\u0142ugiwany kodek.
Nie mo\u017cesz m\u00f3wi\u0107 ani s\u0142ucha\u0107 nikogo w tym kanale!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This channel has an unsupported codec.
You cant speak or listen to anybody within this channel!" + } + }, + { + "translated": "U\u017cyj tokena", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use token" + } + }, + { + "translated": "Wprowad\u017a klucz tokena / uprawnienia uprzywilejowanego", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your token/priviledge key" + } + }, + { + "translated": "Z powodzeniem u\u017cyto toke!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toke successfully used!" + } + }, + { + "translated": "Lista token\u00f3w nie jest jeszcze zaimplementowana!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Token list is not implemented yet!" + } + }, + { + "translated": "Rozpocznij po\u0142\u0105czenie z%s:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Start connection to %s:%d" + } + }, + { + "translated": "B\u0142\u0105d podczas haszowania has\u0142a", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while hashing password" + } + }, + { + "translated": "Nie powiod\u0142o si\u0119 hash has\u0142a serwera!
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to hash server password!
" + } + }, + { + "translated": "Kodowanie kodek\u00f3w nie jest obs\u0142ugiwane!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec encode type not supported!" + } + }, + { + "translated": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 ze zdalnym hostem! Wyj\u0105tek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host! Exception" + } + }, + { + "translated": "Nie mo\u017cna si\u0119 po\u0142\u0105czy\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect" + } + }, + { + "translated": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 ze zdalnym hostem (odm\u00f3wiono po\u0142\u0105czenia)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host (Connection refused)" + } + }, + { + "translated": "Utracono po\u0142\u0105czenie ze zdalnym serwerem!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote server!" + } + }, + { + "translated": "Po\u0142\u0105czenie zosta\u0142o zamkni\u0119te przez zdalny host", + "flags": [ + "google-translate" + ], + "key": { + "message": "The connection was closed by remote host" + } + }, + { + "translated": "Czas oczekiwania na po\u0142\u0105czenie ping", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection ping timeout" + } + }, + { + "translated": "Utracono po\u0142\u0105czenie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection lost" + } + }, + { + "translated": "Utracono po\u0142\u0105czenie ze zdalnym hostem (limit czasu pingowania)
Nawet mo\u017cliwe?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote host (Ping timeout)
Even possible?" + } + }, + { + "translated": "Serwer zamkni\u0119ty ({0})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed ({0})" + } + }, + { + "translated": "Serwer zamkni\u0119ty", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed" + } + }, + { + "translated": "Serwer wymaga has\u0142a", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server requires password" + } + }, + { + "translated": "Has\u0142o serwera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password" + } + }, + { + "translated": "Wprowad\u017a has\u0142o do serwera:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter server password:" + } + }, + { + "translated": "Zosta\u0142e\u015b wyrzucony z serwera przez {0} {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked from the server by {0}{1}" + } + }, + { + "translated": "Zosta\u0142e\u015b zbanowany na serwerze przez {0} {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got banned from the server by {0}{1}" + } + }, + { + "translated": "Roz\u0142\u0105czy\u0142e\u015b si\u0119!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got uncaught disconnect!" + } + }, + { + "translated": "Typ:%o Dane:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type: %o Data:" + } + }, + { + "translated": "Utw\u00f3rz nowy plik do pobrania do%s:%s (Klucz:%s, Oczekuj% d bajt\u00f3w)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create new file download to %s:%s (Key: %s, Expect %d bytes)" + } + }, + { + "translated": "Masz dane, ale gniazdo jest zamkni\u0119te?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got data, but socket closed?" + } + }, + { + "translated": "wyst\u0105pi\u0142 b\u0142\u0105d", + "flags": [ + "google-translate" + ], + "key": { + "message": "an error occurent" + } + }, + { + "translated": "nieoczekiwane zamkni\u0119cie (zdalne zamkni\u0119cie)", + "flags": [ + "google-translate" + ], + "key": { + "message": "unexpected close (remote closed)" + } + }, + { + "translated": "Nieprawid\u0142owy wpis na li\u015bcie plik\u00f3w. \u015acie\u017cka:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry. Path: %s" + } + }, + { + "translated": "Zako\u0144czono niepoprawny wpis na li\u015bcie plik\u00f3w. \u015acie\u017cka:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry finish. Path: " + } + }, + { + "translated": "Nie mo\u017cna pobra\u0107 ikony%s ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download icon %s -> %s" + } + }, + { + "translated": "Nie mo\u017cna pobra\u0107 ikony {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download icon {0}. ({1})" + } + }, + { + "translated": "B\u0142\u0105d podczas pobierania ikony! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading icon! (%s)" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 poprosi\u0107 o pobranie ikony {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request download for icon {0}. ({1})" + } + }, + { + "translated": "Ikona ma typ obrazu%o (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon has an image type of %o (media: %o)" + } + }, + { + "translated": "Ikona%o za\u0142adowana :)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon %o loaded :)" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 ikony%o. Przyczyna:% p", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load icon %o. Reason: %p" + } + }, + { + "translated": "Pobieranie awatara%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Downloading avatar %s" + } + }, + { + "translated": "Nie mo\u017cna pobra\u0107 awatara%o ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download avatar %o -> %s" + } + }, + { + "translated": "Nie mo\u017cna pobra\u0107 awatara dla {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download avatar for {0}. ({1})" + } + }, + { + "translated": "B\u0142\u0105d podczas pobierania awatara! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading avatar! (%s)" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u017c\u0105da\u0107 pobrania awatara za {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request avatar download for {0}. ({1})" + } + }, + { + "translated": "awatar ma typ obrazu%o (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar ma typ obrazu%o (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 awatara dla%s. Przyczyna:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar for %s. Reason: %s" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 awataru", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar " + } + }, + { + "translated": "Brakuj\u0105ca wymagana funkcja wasm!
Prosz\u0119 od\u015bwie\u017cy\u0107 stron\u0119!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing required wasm function!
Please reload the page!" + } + }, + { + "translated": "Przesuni\u0119cie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Shift" + } + }, + { + "translated": "wszystko", + "flags": [ + "google-translate" + ], + "key": { + "message": "Alt" + } + }, + { + "translated": "CTRL", + "flags": [ + "google-translate" + ], + "key": { + "message": "CTRL" + } + }, + { + "translated": "Zdoby\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Win" + } + }, + { + "translated": "nieoprawny", + "flags": [ + "google-translate" + ], + "key": { + "message": "unset" + } + }, + { + "translated": "Wiadomo\u015b\u0107 do formatu zawiera nieprawid\u0142owy indeks (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message to format contains invalid index (%o)" + } + }, + { + "translated": "Przesuni\u0119cie:% d Liczba:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offset: %d Number: %d" + } + }, + { + "translated": "Jasny", + "flags": [ + "google-translate" + ], + "key": { + "message": "Clear" + } + }, + { + "translated": "Zamknij wszystkie prywatne karty", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close all private tabs" + } + }, + { + "translated": "Zmie\u0144 nazw\u0119!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name!" + } + }, + { + "translated": "Zestaw zamykany:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set closeable: " + } + }, + { + "translated": "Nie mo\u017cna wys\u0142a\u0107 wiadomo\u015bci do chantowania (Brak po\u0142\u0105czenia)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not send chant message (Not connected)" + } + }, + { + "translated": "Czat na serwerze", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server chat" + } + }, + { + "translated": "Czat na kanale", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel chat" + } + }, + { + "translated": "Utw\u00f3rz nowe po\u0142\u0105czenie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create a new connection" + } + }, + { + "translated": "Nie mo\u017cna odczyta\u0107 to\u017csamo\u015bci!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity! " + } + }, + { + "translated": "Nie mo\u017cna odczyta\u0107 pliku to\u017csamo\u015bci!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity file!" + } + }, + { + "translated": "Wybierz to\u017csamo\u015b\u0107!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please select an identity!" + } + }, + { + "translated": "Aktualizacja za pomoc\u0105 pokazanego", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating via shown" + } + }, + { + "translated": "Po\u0142\u0105czy\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect" + } + }, + { + "translated": "Edytuj ban", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit ban" + } + }, + { + "translated": "Dodaj ban", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add ban" + } + }, + { + "translated": "tak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Yes" + } + }, + { + "translated": "Nie", + "flags": [ + "google-translate" + ], + "key": { + "message": "No" + } + }, + { + "translated": "Nie mo\u017cna skonfigurowa\u0107 jsrendera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup jsrender" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 jsrender! %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load jsrender! %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 ustawi\u0107 strony g\u0142\u00f3wnej!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup main page!" + } + }, + { + "translated": "Nie mo\u017cna zainicjowa\u0107 systemu translacji! B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialized the translation system!\nError: %o" + } + }, + { + "translated": "Nie mo\u017cna ustawi\u0107 parsera to\u017csamo\u015bci TeamSpeak!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not setup the TeamSpeak identity parser!" + } + }, + { + "translated": "Nie mo\u017cna zainicjowa\u0107 ppt! B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!\nError: %o" + } + }, + { + "translated": "Nie mo\u017cna zainicjowa\u0107 ppt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!" + } + }, + { + "translated": "Zainicjuj kontroler audio p\u00f3\u017aniej!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initialize audio controller later!" + } + }, + { + "translated": "Brakuj\u0105ce audio.player.initializeFromGesture", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing audio.player.initializeFromGesture" + } + }, + { + "translated": "Nie mo\u017cna ponownie przetestowa\u0107 danych PCM dla kodek\u00f3w. B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resample PCM data for codec. Error: %o" + } + }, + { + "translated": "Nie mo\u017cna zakodowa\u0107 danych PCM dla kodek\u00f3w. B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not encode PCM data for codec. Error: %o" + } + }, + { + "translated": "Wymagany czas:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Required time: %d" + } + }, + { + "translated": "Komunikat pracownika czas akcji:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Worker message stock time: %d" + } + }, + { + "translated": "Nieprawid\u0142owy token pracownika!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid worker token!" + } + }, + { + "translated": "[Kodek] Masz odpowied\u017a init pracownika: Sukces:%o Wiadomo\u015b\u0107:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Codec] Got worker init response: Success: %o Message: %o" + } + }, + { + "translated": "Odwo\u0142anie kostiumu! (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Costume callback! (%o)" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 pliku translacji%s. Nie mo\u017cna przeanalizowa\u0107 ani przetworzy\u0107 json:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file %s. Failed to parse or process json: %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 przetworzy\u0107 ani parsowa\u0107 json!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to process or parse json!" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 pliku:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load file: " + } + }, + { + "translated": "Pomy\u015blnie zainicjowano plik t\u0142umaczenia z%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully initialized up translation file from %s" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 pliku t\u0142umaczenia z "%s". B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file from \"%s\". Error: %o" + } + }, + { + "translated": "Pomy\u015blnie dodano domy\u015blne repozytorium z "%s".", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully added default repository from \"%s\"." + } + }, + { + "translated": "Nie mo\u017cna doda\u0107 domy\u015blnego repozytorium. B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add default repository. Error: %o" + } + }, + { + "translated": "Nie mo\u017cna za\u0142adowa\u0107 pliku translacji dla repozytorium%s. T\u0142umaczenie:%s (%s) B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file for repository %s. Translation: %s (%s) Error: %o" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 repozytorium podczas iteracji:%s (%s). B\u0142\u0105d:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load repository while iteration: %s (%s). Error: %o" + } + }, + { + "translated": "System t\u0142umacze\u0144", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation System" + } + }, + { + "translated": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 bie\u017c\u0105cego wybranego pliku translacji.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load current selected translation file." + } + }, + { + "translated": "Korzystanie z domy\u015blnych t\u0142umacze\u0144 zast\u0119pczych.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using default fallback translations." + } + }, + { + "translated": "Zarz\u0105dzaj wirtualnym serwerem", + "flags": [ + "google-translate" + ], + "key": { + "message": "Manager the Virtual Server" + } + }, + { + "translated": "Edytowa\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit" + } + }, + { + "translated": "Zmienianie w\u0142a\u015bciwo\u015bci serwera%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing server properties %o" + } + }, + { + "translated": "Zmieniono w\u0142a\u015bciwo\u015bci:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed properties: %o" + } + }, + { + "translated": "Zaktualizuj w\u0142a\u015bciwo\u015bci (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i)" + } + }, + { + "translated": "Uprawnienia serwera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Permissions" + } + }, + { + "translated": "Wydaj grup\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend group" + } + }, + { + "translated": "Wydaj wszystko", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend all" + } + }, + { + "translated": "Zwi\u0144 grup\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse group" + } + }, + { + "translated": "Zwin\u0105\u0107 wszystkie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse all" + } + }, + { + "translated": "Dodaj pozwolenie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add permission" + } + }, + { + "translated": "Usu\u0144 pozwolenie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove permission" + } + }, + { + "translated": "Dodaj zezwolenie na udzielenie zgody", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add grant permission" + } + }, + { + "translated": "Poka\u017c opis uprawnie\u0144", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show permission description" + } + }, + { + "translated": "Nie zaimplementowano!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented!" + } + }, + { + "translated": "Ta funkcja nie jest jeszcze zaimplementowana!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function isnt implemented yet!" + } + }, + { + "translated": "Skopiuj nazw\u0119 uprawnienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Copy permission name" + } + }, + { + "translated": "Pr\u00f3ba edycji nieznanego zezwolenia! (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attempted to edit a not known permission! (%s)" + } + }, + { + "translated": "Brakuj\u0105cy wybrany identyfikator kana\u0142u dla akcji edytora uprawnie\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected channel id for permission editor action!" + } + }, + { + "translated": "nieprawid\u0142owy kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid channel" + } + }, + { + "translated": "Dodano uprawnienia%s do w\u0142a\u015bciwo\u015bci:%o%o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %s with properties: %o %o %o" + } + }, + { + "translated": "Usuni\u0119to uprawnienia%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed permission %s" + } + }, + { + "translated": "Dodano dotacj\u0119%o dla%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added grant of %o for %s" + } + }, + { + "translated": "Usuni\u0119to uprawnienie do przyznania uprawnie\u0144 dla%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed grant permission for %s" + } + }, + { + "translated": "Dodano uprawnienia%o z w\u0142a\u015bciwo\u015bciami:%o%o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %o with properties: %o %o %o" + } + }, + { + "translated": "Brakuje wybranego identyfikatora grupy dla akcji edytora uprawnie\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor action!" + } + }, + { + "translated": "Brakuje wybranego identyfikatora grupy dla edytora uprawnie\u0144!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor!" + } + }, + { + "translated": "Docelowa cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania wykracza poza zakres [3000, 384000].", + "flags": [ + "google-translate" + ], + "key": { + "message": "The target sample rate is outside the range [3000, 384000]." + } + }, + { + "translated": "Otrzymano pusty bufor jako dane wej\u015bciowe! Zwracanie pustych danych wyj\u015bciowych!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Received empty buffer as input! Returning empty output!" + } + }, + { + "translated": "Po\u0142\u0105cz si\u0119 z serwerem", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect to a server" + } + }, + { + "translated": "Od\u0142\u0105cz od serwera", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disconnect from server" + } + }, + { + "translated": "Prze\u0142\u0105cz stan gotowo\u015bci", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toggle away status" + } + }, + { + "translated": "Wycisz / w\u0142\u0105cz mikrofon", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute microphone" + } + }, + { + "translated": "Wycisz / w\u0142\u0105cz wyciszenie s\u0142uchawek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute headphones" + } + }, + { + "translated": "Poka\u017c tokeny", + "flags": [ + "google-translate" + ], + "key": { + "message": "List tokens" + } + }, + { + "translated": "Wy\u015bwietl / edytuj uprawnienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "View/edit permissions" + } + }, + { + "translated": "Edytuj globalne ustawienia klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit global client settings" + } + }, + { + "translated": "Adres zdalny i port:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote address and port:" + } + }, + { + "translated": "Has\u0142o serwera:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password:" + } + }, + { + "translated": "Przezwisko:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname:" + } + }, + { + "translated": "Ustawienia to\u017csamo\u015bci", + "flags": [ + "google-translate" + ], + "key": { + "message": "Identity Settings" + } + }, + { + "translated": "Konto na forum", + "flags": [ + "google-translate" + ], + "key": { + "message": "Forum Account" + } + }, + { + "translated": "TeamSpeak", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeamSpeak" + } + }, + { + "translated": "Pseudonim (tylko do cel\u00f3w debugowania!)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname (Debug purposes only!)" + } + }, + { + "translated": "Wprowad\u017a eksportowany ci\u0105g to\u017csamo\u015bci TS3 poni\u017cej lub wybierz wyeksportowan\u0105 To\u017csamo\u015b\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your exported TS3 Identity string bellow or select your exported Identity" + } + }, + { + "translated": "U\u017cywasz swojego konta na forum jako weryfikacji", + "flags": [ + "google-translate" + ], + "key": { + "message": "You're using your forum account as verification" + } + }, + { + "translated": "Jest to tylko do debugowania i u\u017cywa nazwy jako unikalnego identyfikatora", + "flags": [ + "google-translate" + ], + "key": { + "message": "This is just for debug and uses the name as unique identifier" + } + }, + { + "translated": "Imi\u0119:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name:" + } + }, + { + "translated": "Has\u0142o:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Password:" + } + }, + { + "translated": "Temat:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Topic:" + } + }, + { + "translated": "Opis:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description:" + } + }, + { + "translated": "Standard", + "flags": [ + "google-translate" + ], + "key": { + "message": "Standard" + } + }, + { + "translated": "Typ kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Type" + } + }, + { + "translated": "Chwilowy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Temporary" + } + }, + { + "translated": "Semi-Permanent", + "flags": [ + "google-translate" + ], + "key": { + "message": "Semi-Permanent" + } + }, + { + "translated": "Sta\u0142y", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permanent" + } + }, + { + "translated": "Kana\u0142 domy\u015blny", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Channel" + } + }, + { + "translated": "Sortuj ten kana\u0142 po:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sort this channel after:" + } + }, + { + "translated": "Needed Talk Power:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Talk Power:" + } + }, + { + "translated": "Audio", + "flags": [ + "google-translate" + ], + "key": { + "message": "Audio" + } + }, + { + "translated": "Presets", + "flags": [ + "google-translate" + ], + "key": { + "message": "Presets" + } + }, + { + "translated": "Voice Mobile", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Mobile" + } + }, + { + "translated": "Pulpit g\u0142osowy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Desktop" + } + }, + { + "translated": "Muzyka", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music" + } + }, + { + "translated": "Zwyczaj", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom" + } + }, + { + "translated": "W\u0142asne ustawienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom Settings" + } + }, + { + "translated": "Kodek:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec:" + } + }, + { + "translated": "Speex Ultra-Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra-Wideband" + } + }, + { + "translated": "Jako\u015b\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quality:" + } + }, + { + "translated": "Regularne potrzebne moce:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular needed powers:" + } + }, + { + "translated": "Przyst\u0105pi\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Join:" + } + }, + { + "translated": "Widok:", + "flags": [ + "google-translate" + ], + "key": { + "message": "View:" + } + }, + { + "translated": "Subskrybowa\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribe:" + } + }, + { + "translated": "Desc. widok:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Desc. view:" + } + }, + { + "translated": "Modyfikowa\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Modify:" + } + }, + { + "translated": "Kasowa\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete:" + } + }, + { + "translated": "Przesy\u0142anie plik\u00f3w wymaga uprawnie\u0144:", + "flags": [ + "google-translate" + ], + "key": { + "message": "File transfer needed powers:" + } + }, + { + "translated": "zaawansowane", + "flags": [ + "google-translate" + ], + "key": { + "message": "Advanced" + } + }, + { + "translated": "Inne ustawienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Other Settings" + } + }, + { + "translated": "Nazwa fonetyczna:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Phonetic Name:" + } + }, + { + "translated": "Usu\u0144 op\u00f3\u017anienie:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay:" + } + }, + { + "translated": "Dane g\u0142osowe s\u0105 zaszyfrowane", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data encrypted" + } + }, + { + "translated": "Maks. U\u017cytkownik\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Max users" + } + }, + { + "translated": "Nieograniczony", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unlimited" + } + }, + { + "translated": "Ograniczony", + "flags": [ + "google-translate" + ], + "key": { + "message": "Limited" + } + }, + { + "translated": "U\u017cytkownicy rodziny Max", + "flags": [ + "google-translate" + ], + "key": { + "message": "Family Max users" + } + }, + { + "translated": "Dziedziczny", + "flags": [ + "google-translate" + ], + "key": { + "message": "Inherited" + } + }, + { + "translated": "sprawdzone", + "flags": [ + "google-translate" + ], + "key": { + "message": "checked" + } + }, + { + "translated": "Maksymalni klienci:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Maximum Clients:" + } + }, + { + "translated": "Zastrze\u017cone gniazda:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reserved slots:" + } + }, + { + "translated": "Wiadomo\u015b\u0107 powitalna:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Welcome Message:" + } + }, + { + "translated": "Gospodarz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host" + } + }, + { + "translated": "Wi\u0105\u017c\u0105cy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Binding" + } + }, + { + "translated": "Gospodarz:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host:" + } + }, + { + "translated": "Port:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Port:" + } + }, + { + "translated": "Uwaga: Te ustawienia wymagaj\u0105 ponownego uruchomienia serwera wirtualnego!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Note: These settings require a virtual server restart to take effect!" + } + }, + { + "translated": "Wiadomo\u015b\u0107 hosta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host message" + } + }, + { + "translated": "Wiadomo\u015b\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message:" + } + }, + { + "translated": "Tryb wiadomo\u015bci:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message Mode:" + } + }, + { + "translated": "Brak wiadomo\u015bci", + "flags": [ + "google-translate" + ], + "key": { + "message": "No message" + } + }, + { + "translated": "Poka\u017c wiadomo\u015b\u0107 w dzienniku", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message in log" + } + }, + { + "translated": "Poka\u017c wiadomo\u015b\u0107 jako modaln\u0105", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal" + } + }, + { + "translated": "Poka\u017c wiadomo\u015b\u0107 jako modaln\u0105 i od\u0142\u0105cz klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal and disconnect the client" + } + }, + { + "translated": "Host sztandar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host banner" + } + }, + { + "translated": "Adres URL Gfx banera:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banner Gfx URL:" + } + }, + { + "translated": "Gfx Interval:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Gfx Interval:" + } + }, + { + "translated": "Zmie\u0144 rozmiar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Resize:" + } + }, + { + "translated": "Nie dostosowuj", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do not adjust" + } + }, + { + "translated": "Dostosuj, ale aspekt wsp\u00f3\u0142czynnika ignorowania", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust but ignore ratio aspect" + } + }, + { + "translated": "Dostosuj i zachowaj proporcje", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust and keep ratio aspect" + } + }, + { + "translated": "Przycisk hosta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host Button" + } + }, + { + "translated": "Etykietka:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tooltip:" + } + }, + { + "translated": "URL ikony:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon URL:" + } + }, + { + "translated": "Transfery", + "flags": [ + "google-translate" + ], + "key": { + "message": "Transfers" + } + }, + { + "translated": "Przekaza\u0107 plik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload" + } + }, + { + "translated": "Limit przepustowo\u015bci:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bandwidth Limit:" + } + }, + { + "translated": "Bajty / s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bytes/s" + } + }, + { + "translated": "Prze\u015blij limit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload Quota:" + } + }, + { + "translated": "MiB", + "flags": [ + "google-translate" + ], + "key": { + "message": "MiB" + } + }, + { + "translated": "\u015aci\u0105gnij", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download" + } + }, + { + "translated": "Pobierz limit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download Quota:" + } + }, + { + "translated": "Anti-Flood", + "flags": [ + "google-translate" + ], + "key": { + "message": "Anti-Flood" + } + }, + { + "translated": "Zredukowane punkty za tick:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reduced points per tick:" + } + }, + { + "translated": "Punkty potrzebne do zablokowania polece\u0144:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block commands:" + } + }, + { + "translated": "Punkty potrzebne do zablokowania IP:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block IP:" + } + }, + { + "translated": "Bezpiecze\u0144stwo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Security" + } + }, + { + "translated": "Wymagany poziom bezpiecze\u0144stwa:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Security Level:" + } + }, + { + "translated": "Szyfrowanie danych g\u0142osowych kana\u0142u:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel voice data encryption:" + } + }, + { + "translated": "Edytuj osobno na kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit per channel individually" + } + }, + { + "translated": "Globalnie wy\u0142\u0105czone", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally disabled" + } + }, + { + "translated": "Globalnie w\u0142\u0105czone (zalecane)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally enabled (recommended)" + } + }, + { + "translated": "R\u00f3\u017cne", + "flags": [ + "google-translate" + ], + "key": { + "message": "Misc" + } + }, + { + "translated": "Grupy domy\u015blne", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default groups" + } + }, + { + "translated": "Grupa serwer\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server group" + } + }, + { + "translated": "Grupa bota muzycznego", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music bot group" + } + }, + { + "translated": "Grupa kana\u0142\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group" + } + }, + { + "translated": "Grupa administracyjna kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Admin group" + } + }, + { + "translated": "Skar\u017cy\u0107 si\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Complain" + } + }, + { + "translated": "Liczba autoban\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Count" + } + }, + { + "translated": "Autoban Time", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Time" + } + }, + { + "translated": "Usu\u0144 czas", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove Time" + } + }, + { + "translated": "Minimalna liczba klient\u00f3w to kana\u0142 przed milczeniem:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Minimum clients is channel before silence:" + } + }, + { + "translated": "Priorytetowy modyfikator przyciemniania g\u0142o\u015bnik\u00f3w:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Priority speaker dim modificator:" + } + }, + { + "translated": "Usu\u0144 op\u00f3\u017anienie dla kana\u0142\u00f3w tymczasowych", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay for temporary channels" + } + }, + { + "translated": "Lista serwer\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server list" + } + }, + { + "translated": "W\u0142\u0105cz raportowanie do listy serwer\u00f3w TeamSpeak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeamSpeak server list" + } + }, + { + "translated": " W\u0142\u0105cz raportowanie do listy serwer\u00f3w TeaSpeak (TeaSpeak nie obs\u0142uguje tego ustawienia)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeaSpeak server list (TeaSpeak does not support this setting)" + } + }, + { + "translated": "Wiadomo\u015bci", + "flags": [ + "google-translate" + ], + "key": { + "message": "Messages" + } + }, + { + "translated": "Kana\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel" + } + }, + { + "translated": "Domy\u015blny temat:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Topic:" + } + }, + { + "translated": "Domy\u015blny opis", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Description" + } + }, + { + "translated": "Klient", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client" + } + }, + { + "translated": "Genera\u0142", + "flags": [ + "google-translate" + ], + "key": { + "message": "General" + } + }, + { + "translated": "Nie skonfigurowa\u0142em jeszcze!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Didnt setuped yet!" + } + }, + { + "translated": "Mikrofon", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone" + } + }, + { + "translated": "Urz\u0105dzenie:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Device:" + } + }, + { + "translated": "Wykrywanie aktywno\u015bci g\u0142osowej", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Activity Detection" + } + }, + { + "translated": "Zawsze aktywny", + "flags": [ + "google-translate" + ], + "key": { + "message": "Always active" + } + }, + { + "translated": "Wykrywanie aktywno\u015bci g\u0142osowej", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity detection" + } + }, + { + "translated": "Naci\u015bnij i m\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk" + } + }, + { + "translated": "Nie ma wpis\u00f3w ustawie\u0144 dla zawsze online wykrywania g\u0142osu.", + "flags": [ + "google-translate" + ], + "key": { + "message": "There are no setting entries for an always online voice detection." + } + }, + { + "translated": "Klawisz "Naci\u015bnij i m\u00f3w":", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk key:" + } + }, + { + "translated": "Niezainicjowany", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uninitialised" + } + }, + { + "translated": "Pr\u00f3g aktywno\u015bci g\u0142osowej ( 20 %)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity threshold (20%)" + } + }, + { + "translated": "G\u0142o\u015bnik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speaker" + } + }, + { + "translated": "T\u0142umaczenia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translations" + } + }, + { + "translated": "Dost\u0119pne t\u0142umaczenia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Available translations" + } + }, + { + "translated": "Angielski (domy\u015blny / awaryjny)", + "flags": [ + "google-translate" + ], + "key": { + "message": "English (Default / Fallback)" + } + }, + { + "translated": "Dodaj repozytorium", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add repository" + } + }, + { + "translated": "Uwaga: te ustawienia b\u0119d\u0105 mia\u0142y wp\u0142yw tylko po ponownym uruchomieniu lub ponownym wczytaniu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attention: These settings get only affected after a restart or reload!" + } + }, + { + "translated": "prze\u0142aduj teraz", + "flags": [ + "google-translate" + ], + "key": { + "message": "reload now" + } + }, + { + "translated": "Grupy kana\u0142\u00f3w", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Groups" + } + }, + { + "translated": "Uprawnienia kana\u0142u", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel permissions" + } + }, + { + "translated": "Uprawnienia klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client permissions" + } + }, + { + "translated": "Unikalny identyfikator klienta:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client unique ID:" + } + }, + { + "translated": "Unikalny identyfikator:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unique ID:" + } + }, + { + "translated": "Identyfikator bazy danych klienta:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client database ID:" + } + }, + { + "translated": "Uprawnienia kana\u0142u klienta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client channel permissions" + } + }, + { + "translated": "Zmiana grup", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing groups of" + } + }, + { + "translated": "Filtr:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Filter:" + } + }, + { + "translated": "Poka\u017c tylko przyznane uprawnienia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show granted permissions only" + } + }, + { + "translated": "Nazwa pozwolenia", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission Name" + } + }, + { + "translated": "Warto\u015b\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Value" + } + }, + { + "translated": "Pomin\u0105\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Skip" + } + }, + { + "translated": "Negowa\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Negate" + } + }, + { + "translated": "Zgoda", + "flags": [ + "google-translate" + ], + "key": { + "message": "Granted" + } + }, + { + "translated": "Aktualizacja", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update" + } + }, + { + "translated": "Dodaj", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add" + } + }, + { + "translated": "Usun\u0105\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove" + } + }, + { + "translated": "Nazwa / IP / UID / HWID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name/IP/UID/HWID" + } + }, + { + "translated": "Pow\u00f3d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason" + } + }, + { + "translated": "Tw\u00f3rca", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creator" + } + }, + { + "translated": "Utworzono / wygasa", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created / Expires" + } + }, + { + "translated": "Prze\u0142adowa\u0107", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reload" + } + }, + { + "translated": "Poka\u017c tylko w\u0142asne zakazy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show only own bans" + } + }, + { + "translated": "Wyr\u00f3\u017cnij w\u0142asne zakazy", + "flags": [ + "google-translate" + ], + "key": { + "message": "Highlight own bans" + } + }, + { + "translated": "Pow\u00f3d:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason:" + } + }, + { + "translated": "Trwanie:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration:" + } + }, + { + "translated": "sta\u0142y", + "flags": [ + "google-translate" + ], + "key": { + "message": "permanent" + } + }, + { + "translated": "Zablokuj klienta wed\u0142ug", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client by" + } + }, + { + "translated": "Przezwisko", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname" + } + }, + { + "translated": "Zablokowanie klienta przez jego obecny pseudonim.
Obecnego pseudonimu nie mo\u017cna u\u017cywa\u0107 do momentu wyga\u015bni\u0119cia zakazu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his current nickname.
The currently nickname cant be used until the ban expired" + } + }, + { + "translated": "Identyfikator sprz\u0119tu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID" + } + }, + { + "translated": "Zablokowanie klienta przez jego identyfikator sprz\u0119towy.
Identyfikator sprz\u0119tu ma r\u00f3\u017cne znaczenia, zale\u017cy od agenta u\u017cytkownik\u00f3w
TeaClient: Identyfikator sprz\u0119tu b\u0119dzie r\u00f3wny adresowi mac
TeaWeb: Klient sieciowy TeaSpeak nie ma identyfikatora sprz\u0119towego, b\u0119dzie losowy
Klient TeamSpeak 3: Identyfikator sprz\u0119tu b\u0119dzie wynikiem niekt\u00f3rych skr\u00f3t\u00f3w z w\u0142a\u015bciwo\u015bci specyficznych dla sprz\u0119tu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his hardware id.
The hardware id has different meanings, depends on the users agent
TeaClient: The hardware id will be equal to the mac address
TeaWeb: The TeaSpeak web client hasn't a hardware id, it will be random
TeamSpeak 3 client: The hardware id will be a result of some hashes from hardware specific properties" + } + }, + { + "translated": "Adres IP", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP Address" + } + }, + { + "translated": "Stworzony:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created:" + } + }, + { + "translated": "Wygasa\u0107:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expire:" + } + }, + { + "translated": "IP:", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP:" + } + }, + { + "translated": "Interpretuj IP / Name jako:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Interpret IP/Name as:" + } + }, + { + "translated": "Wildcard IPv4", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv4" + } + }, + { + "translated": "Wildcard IPv6", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv6" + } + }, + { + "translated": "Naprawiono ci\u0105g", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fixed string" + } + }, + { + "translated": "Wyra\u017cenie regularne", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular Expression" + } + }, + { + "translated": "Identyfikator sprz\u0119tu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID:" + } + }, + { + "translated": "Trwanie", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration" + } + }, + { + "translated": "U\u017cyj tego zakazu jako globalnego bana", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use this ban as a global ban" + } + }, + { + "translated": "Globalne zakazy to zakazy, kt\u00f3re dotycz\u0105 ca\u0142ej instancji.
Oznacza to, \u017ce (je\u015bli ta zasada dotyczy ofiary) nie mo\u017cna do\u0142\u0105czy\u0107 do \u017cadnego wirtualnego serwera!
Globalne zakazy s\u0105 domy\u015blnie pokazywane ka\u017cdej grupie administrator\u00f3w serwera,
ale mo\u017ce by\u0107 utworzone tylko z prawami zapytania", + "flags": [ + "google-translate" + ], + "key": { + "message": "Global bans are bans which apply instance wide.
This means that (if this rule apply to a victim) cant join any virtual server!
Global bans are by default shown to every server admin group,
but could only be created with query rights" + } + }, + { + "translated": "Nie gra \u017cadnej muzyki", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not playing any music" + } + }, + { + "translated": "Wersja:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Version:" + } + }, + { + "translated": "Online od:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Online since:" + } + }, + { + "translated": "Tom:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Volume:" + } + }, + { + "translated": "Konto TeaSpeak:", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeaSpeak Account:" + } + }, + { + "translated": "Grupy serwer\u00f3w:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server groups:" + } + }, + { + "translated": "Grupa kana\u0142\u00f3w:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group:" + } + }, + { + "translated": "Z dala", + "flags": [ + "google-translate" + ], + "key": { + "message": "Away" + } + }, + { + "translated": "G\u0142o\u015bniki / S\u0142uchawki wy\u0142\u0105czone", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones disabled" + } + }, + { + "translated": "Mikrofon wy\u0142\u0105czony", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone disabled" + } + }, + { + "translated": "G\u0142o\u015bniki / S\u0142uchawki Wyciszone", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones Muted" + } + }, + { + "translated": "Mikrofon wyciszony", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone Muted" + } + }, + { + "translated": "Czas \u017cycia:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Livetime:" + } + }, + { + "translated": "Zdalny wolumin:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote Volume:" + } + }, + { + "translated": "Tom lokalny:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local Volume:" + } + }, + { + "translated": "Obecnie odtwarzanie:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Currently replaying:" + } + }, + { + "translated": "Adres:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Address:" + } + }, + { + "translated": "Rodzaj:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type:" + } + }, + { + "translated": "Czas pracy:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uptime:" + } + }, + { + "translated": "Aktualne kana\u0142y:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Channels:" + } + }, + { + "translated": "Obecni klienci:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Clients:" + } + }, + { + "translated": "Aktualne zapytania:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Queries:" + } + }, + { + "translated": "Zaktualizuj informacje", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update info" + } + }, + { + "translated": "Jako\u015b\u0107 kodek\u00f3w:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec Quality:" + } + }, + { + "translated": "Obecni klienci:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current clients:" + } + }, + { + "translated": "Status subskrypcji:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscription Status:" + } + }, + { + "translated": "Subskrybujesz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribed" + } + }, + { + "translated": "Anulowano subskrypcj\u0119", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unsubscribed" + } + }, + { + "translated": "Szyfrowanie danych g\u0142osowych:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data Encryption:" + } + }, + { + "translated": "Nieszyfrowane", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unencrypted" + } + }, + { + "translated": "Zaszyfrowane", + "flags": [ + "google-translate" + ], + "key": { + "message": "Encrypted" + } + }, + { + "translated": "(Zast\u0119puje serwer zaszyfrowanym)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Encrypted)" + } + }, + { + "translated": "(Nadpisane przez serwer za pomoc\u0105 Unencrypted)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Unencrypted)" + } + }, + { + "translated": "Opis", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description" + } + }, + { + "translated": "Zosta\u0142e\u015b porwany przez", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked by" + } + } + ] +} \ No newline at end of file diff --git a/shared/i18n/template.translation b/shared/i18n/template.translation new file mode 100644 index 00000000..0b133791 --- /dev/null +++ b/shared/i18n/template.translation @@ -0,0 +1,27 @@ +{ + "info": { + "contributors": [ + /* add yourself if you have done anything :) */ + { + "name": "Markus Hadenfeldt", /* this field is required */ + "email": "i18n.client@teaspeak.de" /* this field is required */ + } + ], + "name": "A template translation file" /* this field is required */ + }, + "translations": [ /* Array with all translation objects */ + { /* translation object */ + "key": { /* the key */ + "message": "Show permission description", /* necessary to identify the message */ + "line": 374, /* optional, only for specify the translation for a specific case (Not supported yet!) */ + "character": 30, /* optional, only for specify the translation for a specific case (Not supported yet!) */ + "filename": "/home/wolverindev/TeaSpeak/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPermissionEdit.ts" /* optional, only for specify the translation for a specific case (Not supported yet!) */ + }, + "translated": "Berechtigungsbeschreibung anzeigen", /* The actual translation */ + "flags": [ /* some flags for this translation */ + "google-translate", /* this translation has been made with google translator */ + "verified" /* this translation has been verified by a native speaker */ + ] + } + ] +} \ No newline at end of file diff --git a/shared/i18n/tr_google_translate.translation b/shared/i18n/tr_google_translate.translation new file mode 100644 index 00000000..906cfe0c --- /dev/null +++ b/shared/i18n/tr_google_translate.translation @@ -0,0 +1,5728 @@ +{ + "info": { + "name": "Turkey translation, based on Google Translate", + "contributors": [ + { + "name": "Google Translate, via script by Markus Hadenfeldt", + "email": "gtr.i18n.client@teaspeak.de" + } + ] + }, + "translations": [ + { + "translated": "Ses denetleyicisi ba\u015flat\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize audio controller!" + } + }, + { + "translated": "Sesler ba\u015flat\u0131ld\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sounds initialitzed" + } + }, + { + "translated": "[AudioController] Bo\u015f veya tan\u0131mlanmam\u0131\u015f tampon var! B\u0131rak\u0131yor", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Got empty or undefined buffer! Dropping it" + } + }, + { + "translated": "[AudioController] Sesi tekrar edemedi. Global ses i\u00e7eri\u011fi hen\u00fcz ba\u015flat\u0131lmam\u0131\u015f!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Failed to replay audio. Global audio context not initialized yet!" + } + }, + { + "translated": "[AudioController] Kaynak \u00f6rnekleme h\u0131z\u0131, oynatma \u00f6rnekleme oran\u0131na e\u015fit de\u011fildir! (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Source sample rate isn't equal to playback sample rate! (%o | %o)" + } + }, + { + "translated": "[Ses] Yeni oynatman\u0131n ba\u015flat\u0131lmas\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Starting new playback" + } + }, + { + "translated": "[Ses] \u00d6nbildirme ba\u015far\u0131l\u0131 oldu (\u015eimdi yeniden oynat\u0131l\u0131yor)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Prebuffering succeeded (Replaying now)" + } + }, + { + "translated": "[Ses] Arabellek ba\u015far\u0131l\u0131 oldu (\u015eimdi yeniden oynat\u0131l\u0131yor)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering succeeded (Replaying now)" + } + }, + { + "translated": "Tampon at\u0131l\u0131yor \u00e7\u00fcnk\u00fc oyun s\u0131ras\u0131 \u00e7ok b\u00fcy\u00fcyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Dropping buffer because playing queue grows to much" + } + }, + { + "translated": "[Ses] Bir arabellek ak\u0131\u015f\u0131 alg\u0131land\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Detected a buffer underflow!" + } + }, + { + "translated": "[Ses] Arabellek a\u015f\u0131ld\u0131 zaman a\u015f\u0131m\u0131. K\u0131zarma ve tekrar oynatma", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering exceeded timeout. Flushing and stopping replay" + } + }, + { + "translated": "Json%s i\u00e7ermiyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json does not contains %s" + } + }, + { + "translated": "Validator%s i\u00e7in yanl\u0131\u015f sonu\u00e7land\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Validator results in false for %s" + } + }, + { + "translated": "%S giri\u015fi i\u00e7in ge\u00e7ersiz nesne t\u00fcr\u00fc%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid object type %s for entry %s" + } + }, + { + "translated": "y\u0131l", + "flags": [ + "google-translate" + ], + "key": { + "message": "years" + } + }, + { + "translated": "g\u00fcnler", + "flags": [ + "google-translate" + ], + "key": { + "message": "days" + } + }, + { + "translated": "saatler", + "flags": [ + "google-translate" + ], + "key": { + "message": "hours" + } + }, + { + "translated": "dakika", + "flags": [ + "google-translate" + ], + "key": { + "message": "minutes" + } + }, + { + "translated": "saniye", + "flags": [ + "google-translate" + ], + "key": { + "message": "seconds" + } + }, + { + "translated": "\u015fimdi", + "flags": [ + "google-translate" + ], + "key": { + "message": "now" + } + }, + { + "translated": "Tan\u0131ms\u0131z t\u00fcr\u00fc var!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got undefined type!" + } + }, + { + "translated": "VAD de\u011fi\u015fti!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD changed!" + } + }, + { + "translated": "VAD anahtar alg\u0131lama de\u011fi\u015fti.
L\u00fctfen PPT anahtar\u0131n\u0131z\u0131 s\u0131f\u0131rlay\u0131n!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD key detection changed.
Please reset your PPT key!" + } + }, + { + "translated": "Ge\u00e7ersiz VAD (Ses aktivasyon detekt\u00f6r\u00fc) i\u015fleyici! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid VAD (Voice activation detector) handler! (%o)" + } + }, + { + "translated": "[VoiceRecorder] Kayd\u0131 ba\u015flat! (Cihaz:%o | Grup:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Start recording! (Device: %o | Group: %o)" + } + }, + { + "translated": "Mikrofon \u00e7\u00f6z\u00fclemedi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!" + } + }, + { + "translated": "Mikrofon \u00e7\u00f6z\u00fclemedi!
Mesaj:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!
Message: " + } + }, + { + "translated": "Mikrofon al\u0131namad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get microphone!" + } + }, + { + "translated": "Kaydetmeyi b\u0131rak!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Stop recording!" + } + }, + { + "translated": "[VoiceRecorder] Mikrofon ak\u0131\u015f\u0131 var, ancak ses ba\u011flam\u0131 yok. \u0130lklendirilene kadar bekle", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Got microphone stream, but havn't a audio context. Waiting until its initialized" + } + }, + { + "translated": "Tekrar serbest b\u0131rak! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Release again! (%o)" + } + }, + { + "translated": "Kodek deste\u011fini devre d\u0131\u015f\u0131 b\u0131rakma", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disabling codec support for " + } + }, + { + "translated": "Codec s\u00fcr\u00fcc\u00fcs\u00fc y\u00fcklenemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load codec driver" + } + }, + { + "translated": "Kodek y\u00fcklenemedi veya ba\u015flat\u0131lamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load or initialize codec " + } + }, + { + "translated": "desteklenmeyen kodek!", + "flags": [ + "google-translate" + ], + "key": { + "message": "unsupported codec!" + } + }, + { + "translated": "Kodek ba\u015flat\u0131lamad\u0131! Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!\nError: %o" + } + }, + { + "translated": "Kodek ba\u015flat\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!" + } + }, + { + "translated": "Speex Narrowband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Narrowband" + } + }, + { + "translated": "Speex Geni\u015f Bant", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Wideband" + } + }, + { + "translated": "Speex Ultra Geni\u015f Bant", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra Wideband" + } + }, + { + "translated": "CELT Mono", + "flags": [ + "google-translate" + ], + "key": { + "message": "CELT Mono" + } + }, + { + "translated": "Opus Sesi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Voice" + } + }, + { + "translated": "Opus M\u00fczik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Music" + } + }, + { + "translated": "AudioController ba\u015flat\u0131ld\u0131ktan sonra ses i\u015fleyicisini ba\u015flat\u0131l\u0131yor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initializing voice handler after AudioController has been initialized!" + } + }, + { + "translated": "Yerel ses ak\u0131\u015f\u0131n\u0131 ayarlama!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up native voice stream!" + } + }, + { + "translated": "Yerli kodek desteklenmiyor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Native codec isnt supported!" + } + }, + { + "translated": "Ses aktar\u0131lam\u0131yor (ba\u011fl\u0131 de\u011fil)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not transfer audio (not connected)" + } + }, + { + "translated": "Ak\u0131\u015f ekleniyor (%o)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding stream (%o)!" + } + }, + { + "translated": "Buz teklifi olu\u015fturulamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not create ice offer!" + } + }, + { + "translated": "Uzak sdp'yi ayarlay\u0131n! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set remote sdp! (%o)" + } + }, + { + "translated": "Uzak a\u00e7\u0131klama uygulanamad\u0131:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply remote description: %o" + } + }, + { + "translated": "Uzak \u00f6nbelle\u011fe al\u0131nan buz aday\u0131%s eklenemedi:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote cached ice candidate %s: %o" + } + }, + { + "translated": "Uzak buz ekle! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add remote ice! (%s | %o)" + } + }, + { + "translated": "Uzak buz aday\u0131%s eklenemedi:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote ice candidate %s: %o" + } + }, + { + "translated": "\u00d6nbellek uzak buz! (%s |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cache remote ice! (%s | %o)" + } + }, + { + "translated": "Ses k\u00f6pr\u00fcs\u00fc ({}) ayarlanamad\u0131. Yeniden ba\u011flanmaya izin ver: {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge ({}). Allow reconnect: {}" + } + }, + { + "translated": "Ses k\u00f6pr\u00fcs\u00fc kurulamad\u0131 (%s). Yeniden ba\u011flanmaya izin ver:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge (%s). Allow reconnect: %s" + } + }, + { + "translated": "Buz aday\u0131n var! Etkinlik:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got ice candidate! Event:" + } + }, + { + "translated": "Teklif olu\u015fturuldu ve kabul edildi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offer created and accepted" + } + }, + { + "translated": "Yerel a\u00e7\u0131klama uygulanamad\u0131:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply local description: %o" + } + }, + { + "translated": "Teklif g\u00f6nder:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Send offer: %o" + } + }, + { + "translated": "Yeni veri kanal\u0131 var! (% Ler)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got new data channel! (%s)" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteriden ses mi geliyor? (M\u00fc\u015fteri Kimli\u011fi:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Having voice from unknown client? (ClientID: %o)" + } + }, + { + "translated": "Codec%o oynat\u0131lamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback codec %o" + } + }, + { + "translated": "\u0130stemci (%o) sesini \u00e7ald\u0131ramad\u0131 (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback client's (%o) audio (%o)" + } + }, + { + "translated": "Yerel ses sona erdi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice ended" + } + }, + { + "translated": "Yerel ses ba\u015flad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice started" + } + }, + { + "translated": "Kanala ge\u00e7", + "flags": [ + "google-translate" + ], + "key": { + "message": "Switch to channel" + } + }, + { + "translated": "Kanal\u0131 d\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit channel" + } + }, + { + "translated": "Kanal% kanal\u0131n\u0131n de\u011fi\u015ftirilmi\u015f kanal \u00f6zellikleri:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed channel properties of channel %s: %o" + } + }, + { + "translated": "Kanal\u0131 sil", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete channel" + } + }, + { + "translated": "M\u00fczik botu olu\u015ftur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create music bot" + } + }, + { + "translated": "Bot ba\u015far\u0131yla olu\u015fturuldu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bot successfully created" + } + }, + { + "translated": "Ama ba\u015far\u0131yla olu\u015fturuldu.", + "flags": [ + "google-translate" + ], + "key": { + "message": "But has been successfully created." + } + }, + { + "translated": "Bot olu\u015fturulamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to create bot" + } + }, + { + "translated": "Alt kanal olu\u015ftur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create sub channel" + } + }, + { + "translated": "Kanal olu\u015ftur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create channel" + } + }, + { + "translated": "Kanal se\u00e7enekleri: '%o'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel options: '%o'" + } + }, + { + "translated": "Kanal ad\u0131:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel name: %o" + } + }, + { + "translated": "Yinelenen spacer \u00e7ok fazla tekrar etti!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repeating spacer took too much repeats!" + } + }, + { + "translated": "Hizala:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Align: %s" + } + }, + { + "translated": "%S \u00f6\u011fesinin \u00f6zelliklerini (% i) g\u00fcncelle (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i) of %s (%i)" + } + }, + { + "translated": "%S = '%s' \u00f6zelli\u011fi g\u00fcncelleniyor ->%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating property %s = '%s' -> %o" + } + }, + { + "translated": "Kanal \u015fifresi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password" + } + }, + { + "translated": "Kanal \u015fifresi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password:" + } + }, + { + "translated": "Sesi de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change volume" + } + }, + { + "translated": "Reset", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reset" + } + }, + { + "translated": "\u0130ptal etmek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cancel" + } + }, + { + "translated": "tamam", + "flags": [ + "google-translate" + ], + "key": { + "message": "OK" + } + }, + { + "translated": "Sunucu gruplar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Groups" + } + }, + { + "translated": "Hedef grup \u00e7\u00f6z\u00fclemedi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve target group!" + } + }, + { + "translated": "Kapat", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close" + } + }, + { + "translated": "Ba\u015flang\u0131\u00e7 fare hareketi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Starting mouse move" + } + }, + { + "translated": "Sunucu grubunu ayarla", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set server group" + } + }, + { + "translated": "Kanal grubunu ayarla", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set channel group" + } + }, + { + "translated": "\u0130zinler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permissions" + } + }, + { + "translated": "A\u00e7\u0131k metin sohbeti", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open text chat" + } + }, + { + "translated": "Poke istemcisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke client" + } + }, + { + "translated": "Kurcalama mesaj\u0131:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke message:
" + } + }, + { + "translated": "A\u00e7\u0131klamay\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change description" + } + }, + { + "translated": "\u0130stemci a\u00e7\u0131klamas\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change client description" + } + }, + { + "translated": "Yeni a\u00e7\u0131klama:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New description:
" + } + }, + { + "translated": "\u0130stemciyi kanal\u0131n\u0131za ta\u015f\u0131y\u0131n", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move client to your channel" + } + }, + { + "translated": "Kanaldan kick istemcisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from channel" + } + }, + { + "translated": "Tek nedeni:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick reason:
" + } + }, + { + "translated": "Kick client fom sunucusu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client fom server" + } + }, + { + "translated": "Sunucudan istemciyi ba\u015flat", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from server" + } + }, + { + "translated": "M\u00fc\u015fteri yasak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client" + } + }, + { + "translated": "Sesi De\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change Volume" + } + }, + { + "translated": "\u0130smini de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name" + } + }, + { + "translated": "Kendi a\u00e7\u0131klamas\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change own description" + } + }, + { + "translated": "%S i\u00e7in kendi a\u00e7\u0131klamas\u0131n\u0131 de\u011fi\u015ftirme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing own description to %s" + } + }, + { + "translated": "Kullan\u0131c\u0131 ad\u0131 ba\u015far\u0131yla de\u011fi\u015ftirildi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname successfully changed" + } + }, + { + "translated": "Takma ad de\u011fi\u015ftirilemedi ({})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not change nickname ({})" + } + }, + { + "translated": "Bot ad\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot name" + } + }, + { + "translated": "M\u00fczik botlar\u0131 takma ad\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots nickname" + } + }, + { + "translated": "Yeni takma ad:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New nickname:
" + } + }, + { + "translated": "Bot a\u00e7\u0131klamas\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot description" + } + }, + { + "translated": "M\u00fczik botlar\u0131n\u0131n a\u00e7\u0131klamas\u0131n\u0131 de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots description" + } + }, + { + "translated": "M\u00fczik panelini a\u00e7", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open music panel" + } + }, + { + "translated": "H\u0131zl\u0131 url tekrar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quick url replay" + } + }, + { + "translated": "L\u00fctfen URL'yi giriniz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the URL" + } + }, + { + "translated": "URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "URL:" + } + }, + { + "translated": "URL tekrarlanamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to replay url" + } + }, + { + "translated": "\u0130stemci%o ile kanaldan%o sebeple kicking", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kicking client %o from channel with reason %o" + } + }, + { + "translated": "Botu sil", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bot" + } + }, + { + "translated": "Ger\u00e7ekten {0} silmek istiyor musunuz?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete {0}" + } + }, + { + "translated": "Emin misiniz?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Are you sure?" + } + }, + { + "translated": "Tamam", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ok" + } + }, + { + "translated": "%O name i\u00e7in kanal iznini \u00e7\u00f6zemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel permission for name %o" + } + }, + { + "translated": "G\u00fcncelleme izinleri%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updated permissions %o" + } + }, + { + "translated": "\u0130zin var:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got permissions: %o" + } + }, + { + "translated": "\u0130zin tetiklendi! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission triggered! %o" + } + }, + { + "translated": "Ge\u00e7ersiz kanal ta\u015f\u0131 (farkl\u0131 ebeveynler! (%O |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel move (different parents! (%o|%o)" + } + }, + { + "translated": "\u00c7oklu se\u00e7im kanal\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect channel" + } + }, + { + "translated": "\u00c7oklu m\u00fc\u015fteri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect client" + } + }, + { + "translated": "Sadece m\u00fczik:%o | Kapsay\u0131c\u0131 m\u00fczik:%o | Yerel konteyner:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music only: %o | Container music: %o | Container local: %o" + } + }, + { + "translated": "Poke m\u00fc\u015fterileri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke clients" + } + }, + { + "translated": "M\u00fc\u015fterileri kanal\u0131n\u0131za ta\u015f\u0131y\u0131n", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move clients to your channel" + } + }, + { + "translated": "Kanaldan kick istemcileri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from channel" + } + }, + { + "translated": "\u0130stemcileri fom sunucusu Kick", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients fom server" + } + }, + { + "translated": "Sunucudan istemcileri vur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from server" + } + }, + { + "translated": "Ban m\u00fc\u015fterileri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban clients" + } + }, + { + "translated": "Botlar\u0131 sil", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bots" + } + }, + { + "translated": "Ger\u00e7ekten silmek istiyor musun?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete " + } + }, + { + "translated": "Yeni bir kanal olu\u015fturmak. \u00d6zellikleri:%o \u0130zinler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creating a new channel.\nProperties: %o\nPermissions: %o" + } + }, + { + "translated": "Olu\u015fturulduktan sonra kanal \u00e7\u00f6z\u00fclemedi. \u0130zinler uygulanamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel after creation. Could not apply permissions!" + } + }, + { + "translated": "Kanal {} ba\u015far\u0131yla olu\u015fturuldu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel {} successfully created!" + } + }, + { + "translated": "ses \u00e7alma sesi%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "playback sound %o" + } + }, + { + "translated": "Eksik ses%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing sound %o" + } + }, + { + "translated": "\u00d6nbelle\u011fe al\u0131nm\u0131\u015f arabellek kullan\u0131m\u0131:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using cached buffer: %o" + } + }, + { + "translated": "Veri \u00e7\u00f6zme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Decoding data" + } + }, + { + "translated": "Kodu \u00e7\u00f6z\u00fclm\u00fc\u015f veriler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got decoded data" + } + }, + { + "translated": "Ses verileri%o i\u00e7in kod \u00e7\u00f6zemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to decode audio data for %o" + } + }, + { + "translated": "Ses dosyas\u0131 y\u00fcklenemedi. (Yan\u0131t kodu%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file. (Response code %o)" + } + }, + { + "translated": "Ses dosyas\u0131 y\u00fcklenemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file " + } + }, + { + "translated": "%S yeniden oynat\u0131l\u0131yor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Replaying %s" + } + }, + { + "translated": "Taray\u0131c\u0131n\u0131z decodeAudioData'y\u0131 desteklemiyor! Oynatmak i\u00e7in bir d\u00fc\u011f\u00fcm kullanmak! Bu ses \u00e7\u0131k\u0131\u015f\u0131n\u0131 ve ses ayar\u0131n\u0131 atlar!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Your browser does not support decodeAudioData! Using a node to playback! This bypasses the audio output and volume regulation!" + } + }, + { + "translated": "Sen d\u00fcrtt\u00fcn!", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked!" + } + }, + { + "translated": "Soket ba\u011fl\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Socket connected" + } + }, + { + "translated": "Giri\u015f...", + "flags": [ + "google-translate" + ], + "key": { + "message": "Logging in..." + } + }, + { + "translated": "{0} 'a ba\u011flan\u0131yor: {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connecting to {0}:{1}" + } + }, + { + "translated": "Tetiklenen zaman a\u015f\u0131m\u0131 ba\u011flay\u0131n!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect timeout triggered!" + } + }, + { + "translated": "Hata var: (%s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got error: (%s)" + } + }, + { + "translated": "istek kes", + "flags": [ + "google-translate" + ], + "key": { + "message": "request disconnect" + } + }, + { + "translated": "Ba\u011flant\u0131 kapand\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection closed" + } + }, + { + "translated": "Mesaj json ayr\u0131\u015ft\u0131r\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not parse message json!" + } + }, + { + "translated": "Eksik veri t\u00fcr\u00fc!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing data type!" + } + }, + { + "translated": "Bilinmeyen komut t\u00fcr\u00fc%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown command type %o" + } + }, + { + "translated": "'%S' komut dosyas\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Handling command '%s'" + } + }, + { + "translated": "Json:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json:" + } + }, + { + "translated": "Eksik komut '%s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing command '%s'" + } + }, + { + "translated": "Yetersiz istemci izinleri. \u0130zin verilmedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission " + } + }, + { + "translated": "Yetersiz istemci izinleri. \u0130zin verilmedi {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission {}" + } + }, + { + "translated": "Komut y\u00fcr\u00fctme sonu\u00e7lar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Command execution results in " + } + }, + { + "translated": "Ge\u00e7ersiz s\u00f6z sonucu t\u00fcr\u00fc:%o. Sonu\u00e7:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid promise result type: %o. Result:" + } + }, + { + "translated": "Giri\u015f hatas\u0131 var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got login error" + } + }, + { + "translated": "S\u00fcr\u00fcm al\u0131namad\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to get version:" + } + }, + { + "translated": "Ge\u00e7ersiz d\u00f6n\u00fc\u015f kodu! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid return code! (%o)" + } + }, + { + "translated": "Sesin ayarlanmas\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up voice" + } + }, + { + "translated": "{0} olarak ba\u011fland\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connected as {0}" + } + }, + { + "translated": "Ge\u00e7ersiz kanal sipari\u015fi kimli\u011fi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel order id!" + } + }, + { + "translated": "Ge\u00e7ersiz kanal \u00fcst bilgisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel parent" + } + }, + { + "translated": "% D yeni kanal\u0131n\u0131z var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d new channels" + } + }, + { + "translated": "% D kanal silme var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel deletions" + } + }, + { + "translated": "Ge\u00e7ersiz kanal onDelete (Bilinmeyen kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel onDelete (Unknown channel)" + } + }, + { + "translated": "% D kanal gizlendi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel hides" + } + }, + { + "translated": "Gizlemede ge\u00e7ersiz kanal (Bilinmeyen kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel on hide (Unknown channel)" + } + }, + { + "translated": "{0}, {1} ile {2} aras\u0131nda g\u00f6r\u00fcnt\u00fclendi", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}" + } + }, + { + "translated": "{0} kanal\u0131na ba\u011fland\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} connected to channel {1}" + } + }, + { + "translated": "{0}, {2} ile {3} aras\u0131nda ta\u015f\u0131nd\u0131.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, moved by {3}" + } + }, + { + "translated": "{1} ile {2} aras\u0131nda g\u00f6r\u00fcnen {0}, {3} {4} taraf\u0131ndan ba\u015flat\u0131ld\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, kicked by {3}{4}" + } + }, + { + "translated": "%O i\u00e7in bilinmeyen bir sebep", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reasonid for %o" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteri kald\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left!" + } + }, + { + "translated": "{0}, {1} ile {2} aras\u0131nda kayboldu", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} disappeared from {1} to {2}" + } + }, + { + "translated": "{0} sunucudan ayr\u0131ld\u0131 {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} left the server{1}" + } + }, + { + "translated": "{0} sunucudan {1} taraf\u0131ndan ba\u015flat\u0131ld\u0131. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from the server by {1}.{2}" + } + }, + { + "translated": "{0}, kanal\u0131n\u0131zdan {1} taraf\u0131ndan ba\u015flat\u0131ld\u0131. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from your channel by {1}.{2}" + } + }, + { + "translated": "{0}, {1} taraf\u0131ndan {2} taraf\u0131ndan yasakland\u0131. {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was banned {1} by {2}.{3}" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteri sebepsiz kald\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left reason!" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteri ta\u015f\u0131ma (M\u00fc\u015fteri)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Client)!" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteri ta\u015f\u0131ma (Kanaldan)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel to)!" + } + }, + { + "translated": "Bilinmeyen m\u00fc\u015fteri ta\u015f\u0131ma (Kanaldan)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel from)!" + } + }, + { + "translated": "{3} ile {1} kanal\u0131ndan {2} konumuna ta\u015f\u0131nd\u0131n\u0131z", + "flags": [ + "google-translate" + ], + "key": { + "message": "You was moved by {3} from channel {1} to {2}" + } + }, + { + "translated": "{0}, {1} kanal\u0131ndan {3} ile {2} konumuna ta\u015f\u0131nd\u0131.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was moved from channel {1} to {2} by {3}" + } + }, + { + "translated": "{1} kanal\u0131ndan {2} kanal\u0131na ge\u00e7tiniz", + "flags": [ + "google-translate" + ], + "key": { + "message": "You switched from channel {1} to {2}" + } + }, + { + "translated": "{0}, {1} kanal\u0131ndan {2} kanal\u0131na ge\u00e7ti", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} switched from channel {1} to {2}" + } + }, + { + "translated": "{1} kanal\u0131ndan {2} kanal\u0131n\u0131 {3} {4} itibar\u0131yla kanallara ay\u0131rd\u0131n\u0131z", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked out of the channel {1} to channel {2} by {3}{4}" + } + }, + { + "translated": "{0} {1} kanal\u0131ndan {2} kanal\u0131na {3} {4} tarihinde ba\u015flad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} got kicked from channel {1} to {2} by {3}{4}" + } + }, + { + "translated": "Bilinmeyen bir neden kimli\u011fi%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reason id %o" + } + }, + { + "translated": "Bilinmeyen kanal hareketi (Kanal)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (Channel)!" + } + }, + { + "translated": "Bilinmeyen kanal hareketi (prev)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (prev)!" + } + }, + { + "translated": "Bilinmeyen kanal hareketi (ebeveyn)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (parent)!" + } + }, + { + "translated": "Bilinmeyen kanal d\u00fczenlemesi (Kanal)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel edit (Channel)!" + } + }, + { + "translated": "Ge\u00e7ersiz m\u00fc\u015fteriden \u00f6zel mesaj\u0131n\u0131z var!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got private message from invalid client!" + } + }, + { + "translated": "Mevcut olmayan bir m\u00fc\u015fteriyi g\u00fcncellemeye \u00e7al\u0131\u015ft\u0131m", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tried to update an non existing client" + } + }, + { + "translated": "Bilinmeyen veya ge\u00e7ersiz bot i\u00e7in m\u00fczik \u00e7alar bilgisi var! (ID:% i, Giri\u015f:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)" + } + }, + { + "translated": "Bilgi y\u00f6neticisini kullanma:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using info manager: %o" + } + }, + { + "translated": "Hostbanner y\u00fcklenemedi:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load hostbanner: %o" + } + }, + { + "translated": "Hostbanner y\u00fcklendi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hostbanner has been loaded" + } + }, + { + "translated": "Y\u00fckleniyor...", + "flags": [ + "google-translate" + ], + "key": { + "message": "loading..." + } + }, + { + "translated": "Ba\u015fl\u0131k veya URL yok", + "flags": [ + "google-translate" + ], + "key": { + "message": "No title or url" + } + }, + { + "translated": "Oyun y\u00fcr\u00fct\u00fclemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play" + } + }, + { + "translated": "Oyun y\u00fcr\u00fct\u00fclemedi.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play.
{}" + } + }, + { + "translated": "Duraklatma ger\u00e7ekle\u015ftirilemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause" + } + }, + { + "translated": "Duraklatma ger\u00e7ekle\u015ftirilemedi.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause.
{}" + } + }, + { + "translated": "Durdurma ger\u00e7ekle\u015ftirilemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop" + } + }, + { + "translated": "Durdur y\u00fcr\u00fct\u00fclemedi.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop.
{}" + } + }, + { + "translated": "\u0130leriye y\u00fcr\u00fct\u00fclemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute forward" + } + }, + { + "translated": "Geri sarmay\u0131 y\u00fcr\u00fctemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute rewind" + } + }, + { + "translated": "Uygulanmad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented" + } + }, + { + "translated": "Bu i\u015flev hen\u00fcz uygulanmad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function is not implemented yet!" + } + }, + { + "translated": "Ebeveynler:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Parents: %o | %o" + } + }, + { + "translated": "Oyuncu:%o | %", + "flags": [ + "google-translate" + ], + "key": { + "message": "Player: %o | %o" + } + }, + { + "translated": "\u00d6l\u00e7ek:% f => \u00e7eviri:%o | %o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Scale: %f => translate: %o | %o" + } + }, + { + "translated": "Gerekli test gerekli:%o | % i | %o =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Test needed required: %o | %i | %o => %o" + } + }, + { + "translated": "Bilinmeyen izin kimli\u011fi var (%o /%o (%o))!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got unknown permission id (%o/%o (%o))!" + } + }, + { + "translated": "\u0130zin haritalamas\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission mapping" + } + }, + { + "translated": "grup", + "flags": [ + "google-translate" + ], + "key": { + "message": "Group " + } + }, + { + "translated": "% i <>%s ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "%i <> %s -> %s" + } + }, + { + "translated": "% \u0130zinlerim var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %i permissions" + } + }, + { + "translated": "Gerekli izinler var, ancak bir izin listeniz yok!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got needed permissions but don't have a permission list!" + } + }, + { + "translated": "% D gerekli izinlere sahip.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d needed permissions." + } + }, + { + "translated": "%S kimli\u011fi i\u00e7in \u00e7\u00f6z\u00fclemedi (%o |%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve perm for id %s (%o|%o)" + } + }, + { + "translated": "Kanal%o i\u00e7in kanal izinleri var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel permissions for channel %o" + } + }, + { + "translated": "\u0130stenen kanal kimli\u011fi i\u00e7in eksik kanal izin kolu%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing channel permission handle for requested channel id %o" + } + }, + { + "translated": "Hibe izni%o \u00e7\u00f6z\u00fclemedi. Yeni bir tane olu\u015fturmak.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve grant permission %o. Creating a new one." + } + }, + { + "translated": "Ge\u00e7ersiz anahtarla gerekli izin istendi! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Requested needed permission with invalid key! (%o)" + } + }, + { + "translated": "ge\u00e7ersiz sipari\u015f!", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid order!" + } + }, + { + "translated": "Grup hedefi \u00e7\u00f6z\u00fclemedi! =>%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve group target! => %o" + } + }, + { + "translated": "Grup%o /%o i\u00e7in grup izinleri var, ancak kay\u0131tl\u0131 bir grup de\u011fil!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but its not a registered group!" + } + }, + { + "translated": "Grup%o /%o i\u00e7in grup izinleri ald\u0131m, ama hi\u00e7 talep edilmedi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but it was never requested!" + } + }, + { + "translated": "Sekme customElements meydan okunamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not defied tab customElements!" + } + }, + { + "translated": "Ayarlar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Settings" + } + }, + { + "translated": "\u0130stedi\u011finiz anahtar\u0131 yaz\u0131n", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type the key you wish" + } + }, + { + "translated": "% Key anahtar\u0131n\u0131z var", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got key %o" + } + }, + { + "translated": "Hi\u00e7bir ayg\u0131t", + "flags": [ + "google-translate" + ], + "key": { + "message": "No device" + } + }, + { + "translated": "%S cihaz\u0131 (%s):%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got device %s (%s): %s" + } + }, + { + "translated": "Cihazlar \u00fczerinde numaraland\u0131rma yap\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not enumerate over devices!" + } + }, + { + "translated": "Cihaz listesi al\u0131namad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get device list!" + } + }, + { + "translated": "Se\u00e7ilen mikrofon cihaz\u0131: id:%o grup:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected microphone device: id: %o group: %o" + } + }, + { + "translated": "Se\u00e7ilen hoparl\u00f6r cihaz\u0131: id:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected speaker device: id: %o" + } + }, + { + "translated": "Cihaz de\u011fi\u015ftirilemedi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to change device!" + } + }, + { + "translated": "Havuz bilgisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repository info" + } + }, + { + "translated": "Bu depoyu ger\u00e7ekten silmek istiyor musunuz?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete this repository?" + } + }, + { + "translated": "\u00c7eviri bilgisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation info" + } + }, + { + "translated": "Havuz URL'sini girin:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter repository URL:
" + } + }, + { + "translated": "Havuz sorgulamad\u0131.
Bu havuzun ge\u00e7erli ve eri\u015filebilir oldu\u011fundan emin olun.
Hata:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to query repository.
Ensure that this repository is valid and reachable.
Error: " + } + }, + { + "translated": "% Ban yasa\u011f\u0131 ekleniyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding ban %o" + } + }, + { + "translated": "Yasak eklenemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add ban" + } + }, + { + "translated": "Yasa\u011f\u0131n%o d\u00fczenlenmesi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Editing ban %o" + } + }, + { + "translated": "D\u00fczenleme de\u011fi\u015fikliklerini uygula%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Apply edit changes %o" + } + }, + { + "translated": "Yasak d\u00fczenleme yap\u0131lamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to edit ban" + } + }, + { + "translated": "%S yasa\u011f\u0131 siliniyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Deleting ban %o" + } + }, + { + "translated": "Yasa\u011f\u0131 silinemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to delete ban" + } + }, + { + "translated": "Banlist var:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got banlist: %o" + } + }, + { + "translated": "% D kimli\u011fine sahip eksik giri\u015f yasa\u011f\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing ban entry with id %d" + } + }, + { + "translated": "banlist", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banlist" + } + }, + { + "translated": "%S filtresini aray\u0131n", + "flags": [ + "google-translate" + ], + "key": { + "message": "Search for filter %s" + } + }, + { + "translated": "Uzakta mesaj b\u0131rak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set away message" + } + }, + { + "translated": "L\u00fctfen uzak mesaj\u0131 girin", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the away message" + } + }, + { + "translated": "Kanal kodek desteklenmiyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel codec unsupported" + } + }, + { + "translated": "Bu kanal\u0131n desteklenmeyen bir codec'i var.
Bu kanalda kimseyle konu\u015famaz veya dinleyemezsiniz!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This channel has an unsupported codec.
You cant speak or listen to anybody within this channel!" + } + }, + { + "translated": "Kullan\u0131m belirteci", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use token" + } + }, + { + "translated": "L\u00fctfen jeton / ayr\u0131cal\u0131k anahtar\u0131n\u0131z\u0131 girin", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your token/priviledge key" + } + }, + { + "translated": "Toke ba\u015far\u0131yla kullan\u0131ld\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toke successfully used!" + } + }, + { + "translated": "Jeton listesi hen\u00fcz uygulanmad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Token list is not implemented yet!" + } + }, + { + "translated": "Ba\u011flant\u0131y\u0131%s ile ba\u015flat:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Start connection to %s:%d" + } + }, + { + "translated": "Parolay\u0131 \u015fifrelerken hata olu\u015ftu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while hashing password" + } + }, + { + "translated": "Sunucu \u015fifresi karmalamad\u0131!
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to hash server password!
" + } + }, + { + "translated": "Codec kodlama tipi desteklenmiyor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec encode type not supported!" + } + }, + { + "translated": "Uzak ana bilgisayara ba\u011flan\u0131lamad\u0131! \u0130stisna", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host! Exception" + } + }, + { + "translated": "Ba\u011flanamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect" + } + }, + { + "translated": "Uzak ana bilgisayara ba\u011flan\u0131lamad\u0131 (Ba\u011flant\u0131 reddedildi)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host (Connection refused)" + } + }, + { + "translated": "Uzak sunucuya ba\u011flant\u0131 kesildi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote server!" + } + }, + { + "translated": "Ba\u011flant\u0131 uzak ana bilgisayar taraf\u0131ndan kapat\u0131ld\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "The connection was closed by remote host" + } + }, + { + "translated": "Ba\u011flant\u0131 ping zaman a\u015f\u0131m\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection ping timeout" + } + }, + { + "translated": "Ba\u011flant\u0131 koptu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection lost" + } + }, + { + "translated": "Uzak ana bilgisayara ba\u011flant\u0131 kesildi (Ping zaman a\u015f\u0131m\u0131)
M\u00fcmk\u00fcn m\u00fc?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote host (Ping timeout)
Even possible?" + } + }, + { + "translated": "Sunucu kapal\u0131 ({0})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed ({0})" + } + }, + { + "translated": "Sunucu kapal\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed" + } + }, + { + "translated": "Sunucu \u015fifre gerektiriyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server requires password" + } + }, + { + "translated": "Sunucu \u015fifresi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password" + } + }, + { + "translated": "Sunucu \u015fifresini girin:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter server password:" + } + }, + { + "translated": "Sunucudan {0} {1} taraf\u0131ndan ba\u015flat\u0131ld\u0131n\u0131z", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked from the server by {0}{1}" + } + }, + { + "translated": "Sunucudan {0} {1} taraf\u0131ndan yasakland\u0131n\u0131z", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got banned from the server by {0}{1}" + } + }, + { + "translated": "Yakalanmam\u0131\u015f ba\u011flant\u0131 kesildi!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got uncaught disconnect!" + } + }, + { + "translated": "T\u00fcr:%o Veri:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type: %o Data:" + } + }, + { + "translated": "%S i\u00e7in yeni dosya indirmesi olu\u015ftur:%s (Anahtar:%s,% d bayi Bekle)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create new file download to %s:%s (Key: %s, Expect %d bytes)" + } + }, + { + "translated": "Veri var, ama soket kapal\u0131 m\u0131?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got data, but socket closed?" + } + }, + { + "translated": "bir hata olu\u015fuyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "an error occurent" + } + }, + { + "translated": "beklenmeyen yak\u0131n (uzak kapal\u0131)", + "flags": [ + "google-translate" + ], + "key": { + "message": "unexpected close (remote closed)" + } + }, + { + "translated": "Ge\u00e7ersiz dosya listesi giri\u015fi. Yol:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry. Path: %s" + } + }, + { + "translated": "Ge\u00e7ersiz dosya listesi giri\u015fi tamamland\u0131. Yol:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry finish. Path: " + } + }, + { + "translated": "Simge%s indirilemedi ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download icon %s -> %s" + } + }, + { + "translated": "{0} simgesi indirilemedi. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download icon {0}. ({1})" + } + }, + { + "translated": "Simge indirilirken hata! (% Ler)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading icon! (%s)" + } + }, + { + "translated": "{0} simgesi i\u00e7in indirme istenemedi. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request download for icon {0}. ({1})" + } + }, + { + "translated": "Simge%o bir resim t\u00fcr\u00fcne sahiptir (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon has an image type of %o (media: %o)" + } + }, + { + "translated": "Simge%o y\u00fcklendi :)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon %o loaded :)" + } + }, + { + "translated": "Simge%o y\u00fcklenemedi. Sebep:% p", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load icon %o. Reason: %p" + } + }, + { + "translated": "%S avatar\u0131 indiriliyor", + "flags": [ + "google-translate" + ], + "key": { + "message": "Downloading avatar %s" + } + }, + { + "translated": "Avatar indirilemedi%o ->%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download avatar %o -> %s" + } + }, + { + "translated": "{0} i\u00e7in avatar indirilemedi. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download avatar for {0}. ({1})" + } + }, + { + "translated": "Avatar indirilirken hata olu\u015ftu! (% Ler)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading avatar! (%s)" + } + }, + { + "translated": "{0} i\u00e7in avatar indirmesi istenemedi. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request avatar download for {0}. ({1})" + } + }, + { + "translated": "avatarda%o bir resim t\u00fcr\u00fc var (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar\u0131n%o bir resim t\u00fcr\u00fc var (media:%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "%S i\u00e7in avatar y\u00fcklenemedi. Sebep:%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar for %s. Reason: %s" + } + }, + { + "translated": "Avatar y\u00fcklenemedi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar " + } + }, + { + "translated": "Gerekli wasm fonksiyonu gerekli!
L\u00fctfen sayfay\u0131 yenileyin!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing required wasm function!
Please reload the page!" + } + }, + { + "translated": "vardiya", + "flags": [ + "google-translate" + ], + "key": { + "message": "Shift" + } + }, + { + "translated": "her \u015fey", + "flags": [ + "google-translate" + ], + "key": { + "message": "Alt" + } + }, + { + "translated": "CTRL", + "flags": [ + "google-translate" + ], + "key": { + "message": "CTRL" + } + }, + { + "translated": "kazanmak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Win" + } + }, + { + "translated": "unset", + "flags": [ + "google-translate" + ], + "key": { + "message": "unset" + } + }, + { + "translated": "Bi\u00e7ime g\u00f6nderilen mesaj ge\u00e7ersiz dizin i\u00e7eriyor (%o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message to format contains invalid index (%o)" + } + }, + { + "translated": "Uzakl\u0131k:% d Say\u0131:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offset: %d Number: %d" + } + }, + { + "translated": "A\u00e7\u0131k", + "flags": [ + "google-translate" + ], + "key": { + "message": "Clear" + } + }, + { + "translated": "T\u00fcm \u00f6zel sekmeleri kapat", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close all private tabs" + } + }, + { + "translated": "\u0130smini de\u011fi\u015ftir!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name!" + } + }, + { + "translated": "Kapanabilir k\u00fcme:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set closeable: " + } + }, + { + "translated": "\u015eark\u0131 mesaj\u0131 g\u00f6nderilemedi (Ba\u011fl\u0131 de\u011fil)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not send chant message (Not connected)" + } + }, + { + "translated": "Sunucu sohbeti", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server chat" + } + }, + { + "translated": "Kanal sohbeti", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel chat" + } + }, + { + "translated": "Yeni ba\u011flant\u0131 olu\u015ftur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create a new connection" + } + }, + { + "translated": "Kimlik okunamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity! " + } + }, + { + "translated": "Kimlik dosyas\u0131 okunamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity file!" + } + }, + { + "translated": "L\u00fctfen bir kimlik se\u00e7in!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please select an identity!" + } + }, + { + "translated": "G\u00f6sterilen g\u00fcncelleme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating via shown" + } + }, + { + "translated": "ba\u011flamak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect" + } + }, + { + "translated": "Yasa\u011f\u0131 d\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit ban" + } + }, + { + "translated": "Yasak ekle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add ban" + } + }, + { + "translated": "Evet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Yes" + } + }, + { + "translated": "Yok hay\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "No" + } + }, + { + "translated": "Jsrender ayarlanamad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup jsrender" + } + }, + { + "translated": "Jsrender y\u00fcklenemedi! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load jsrender! %o" + } + }, + { + "translated": "Ana sayfa ayarlanamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup main page!" + } + }, + { + "translated": "\u00c7eviri sistemi ba\u015flat\u0131lamad\u0131! Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialized the translation system!\nError: %o" + } + }, + { + "translated": "TeamSpeak kimlik ayr\u0131\u015ft\u0131r\u0131c\u0131s\u0131 ayarlanamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not setup the TeamSpeak identity parser!" + } + }, + { + "translated": "Ppt ba\u015flat\u0131lamad\u0131! Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!\nError: %o" + } + }, + { + "translated": "Ppt ba\u015flat\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!" + } + }, + { + "translated": "Ses denetleyicisini daha sonra ba\u015flat!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initialize audio controller later!" + } + }, + { + "translated": "Eksik ses.player.initializeFromGesture", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing audio.player.initializeFromGesture" + } + }, + { + "translated": "Kodek i\u00e7in PCM verileri yeniden \u00f6rneklendirilemedi. Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resample PCM data for codec. Error: %o" + } + }, + { + "translated": "Kodek i\u00e7in PCM verileri kodlanamad\u0131. Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not encode PCM data for codec. Error: %o" + } + }, + { + "translated": "Gerekli s\u00fcre:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Required time: %d" + } + }, + { + "translated": "\u00c7al\u0131\u015fan mesaj stok zaman\u0131:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Worker message stock time: %d" + } + }, + { + "translated": "Ge\u00e7ersiz \u00e7al\u0131\u015fan belirteci!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid worker token!" + } + }, + { + "translated": "[Codec] \u00c7al\u0131\u015fan init yan\u0131t\u0131 var: Ba\u015far\u0131:%o Mesaj:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Codec] Got worker init response: Success: %o Message: %o" + } + }, + { + "translated": "Kost\u00fcm geri \u00e7a\u011f\u0131rma! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Costume callback! (%o)" + } + }, + { + "translated": "%S \u00e7eviri dosyas\u0131 y\u00fcklenemedi. Json ayr\u0131\u015ft\u0131r\u0131lamad\u0131 veya i\u015flenemedi:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file %s. Failed to parse or process json: %o" + } + }, + { + "translated": "Json i\u015flenemedi veya ayr\u0131\u015ft\u0131r\u0131lamad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to process or parse json!" + } + }, + { + "translated": "Dosya y\u00fcklenemedi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load file: " + } + }, + { + "translated": "\u00c7eviri dosyas\u0131n\u0131%s kullan\u0131c\u0131s\u0131ndan ba\u015far\u0131yla ba\u015flatt\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully initialized up translation file from %s" + } + }, + { + "translated": "\u00c7eviri dosyas\u0131 "%s" kayna\u011f\u0131ndan y\u00fcklenemedi. Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file from \"%s\". Error: %o" + } + }, + { + "translated": ""%S" adresinden varsay\u0131lan depo ba\u015far\u0131yla eklendi.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully added default repository from \"%s\"." + } + }, + { + "translated": "Varsay\u0131lan depo eklenemedi. Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add default repository. Error: %o" + } + }, + { + "translated": "%S deposu i\u00e7in \u00e7eviri dosyas\u0131 y\u00fcklenemedi. \u00c7eviri:%s (%s) Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load translation file for repository %s. Translation: %s (%s) Error: %o" + } + }, + { + "translated": "Yineleme s\u0131ras\u0131nda depo y\u00fcklenemedi:%s (%s). Hata:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load repository while iteration: %s (%s). Error: %o" + } + }, + { + "translated": "\u00c7eviri Sistemi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translation System" + } + }, + { + "translated": "Se\u00e7ili olan \u00e7eviri dosyas\u0131 y\u00fcklenemedi.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load current selected translation file." + } + }, + { + "translated": "Varsay\u0131lan geri d\u00f6n\u00fc\u015f \u00e7evirilerini kullanma.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using default fallback translations." + } + }, + { + "translated": "Sanal Sunucu Y\u00f6neticisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Manager the Virtual Server" + } + }, + { + "translated": "D\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit" + } + }, + { + "translated": "Sunucu \u00f6zelliklerini de\u011fi\u015ftirme%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing server properties %o" + } + }, + { + "translated": "De\u011fi\u015ftirilen \u00f6zellikler:%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed properties: %o" + } + }, + { + "translated": "\u00d6zellikleri g\u00fcncelle (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i)" + } + }, + { + "translated": "Sunucu \u0130zinleri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Permissions" + } + }, + { + "translated": "Harcama grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend group" + } + }, + { + "translated": "T\u00fcm\u00fcn\u00fc t\u00fcket", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend all" + } + }, + { + "translated": "Daralt grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse group" + } + }, + { + "translated": "T\u00fcm daraltmak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse all" + } + }, + { + "translated": "\u0130zin ekle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add permission" + } + }, + { + "translated": "\u0130zni kald\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove permission" + } + }, + { + "translated": "Hibe izni ekle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add grant permission" + } + }, + { + "translated": "\u0130zin a\u00e7\u0131klamas\u0131n\u0131 g\u00f6ster", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show permission description" + } + }, + { + "translated": "Uygulanmad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented!" + } + }, + { + "translated": "Bu i\u015flev hen\u00fcz uygulanmad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function isnt implemented yet!" + } + }, + { + "translated": "\u0130zin izni ad\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Copy permission name" + } + }, + { + "translated": "Bilinmeyen bir izni d\u00fczenlemeye \u00e7al\u0131\u015ft\u0131n\u0131z! (% Ler)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attempted to edit a not known permission! (%s)" + } + }, + { + "translated": "\u0130zin d\u00fczenleyici eylemi i\u00e7in se\u00e7ilen kanal kimli\u011fi eksik!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected channel id for permission editor action!" + } + }, + { + "translated": "ge\u00e7ersiz kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid channel" + } + }, + { + "translated": "%S izni ile \u00f6zellikleri eklendi:%o%o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %s with properties: %o %o %o" + } + }, + { + "translated": "Kald\u0131r\u0131lan izin%s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed permission %s" + } + }, + { + "translated": "%S i\u00e7in%o tutar\u0131nda ba\u011f\u0131\u015f eklendi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added grant of %o for %s" + } + }, + { + "translated": "%S i\u00e7in kald\u0131r\u0131lm\u0131\u015f hibe izni", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed grant permission for %s" + } + }, + { + "translated": "% 0 izin eklendi:%o%o o%o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %o with properties: %o %o %o" + } + }, + { + "translated": "\u0130zin d\u00fczenleyici eylemi i\u00e7in se\u00e7ilen grup kimli\u011fi eksik!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor action!" + } + }, + { + "translated": "\u0130zin d\u00fczenleyici i\u00e7in se\u00e7ilmi\u015f grup kimli\u011fi yok!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor!" + } + }, + { + "translated": "Hedef \u00f6rnek oran\u0131, aral\u0131\u011f\u0131n d\u0131\u015f\u0131nda [3000, 384000].", + "flags": [ + "google-translate" + ], + "key": { + "message": "The target sample rate is outside the range [3000, 384000]." + } + }, + { + "translated": "Giri\u015f olarak bo\u015f arabellek al\u0131nd\u0131! Bo\u015f \u00e7\u0131kt\u0131ya geri d\u00f6n\u00fcyor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Received empty buffer as input! Returning empty output!" + } + }, + { + "translated": "Bir sunucuya ba\u011flanma", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect to a server" + } + }, + { + "translated": "Sunucudan kes", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disconnect from server" + } + }, + { + "translated": "Durumu de\u011fi\u015ftir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toggle away status" + } + }, + { + "translated": "Mikrofonun sesini kapat / a\u00e7", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute microphone" + } + }, + { + "translated": "Kulakl\u0131klar\u0131 sessize al / sustur", + "flags": [ + "google-translate" + ], + "key": { + "message": "Mute/unmute headphones" + } + }, + { + "translated": "Liste belirte\u00e7leri", + "flags": [ + "google-translate" + ], + "key": { + "message": "List tokens" + } + }, + { + "translated": "\u0130zinleri g\u00f6r\u00fcnt\u00fcle / d\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "View/edit permissions" + } + }, + { + "translated": "Genel istemci ayarlar\u0131n\u0131 d\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit global client settings" + } + }, + { + "translated": "Uzak adres ve ba\u011flant\u0131 noktas\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote address and port:" + } + }, + { + "translated": "Sunucu \u015fifresi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password:" + } + }, + { + "translated": "Takma ad:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname:" + } + }, + { + "translated": "Kimlik Ayarlar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Identity Settings" + } + }, + { + "translated": "Forum Hesab\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Forum Account" + } + }, + { + "translated": "TeamSpeak", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeamSpeak" + } + }, + { + "translated": "Takma ad (Sadece hata ay\u0131klama ama\u00e7l\u0131d\u0131r!)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname (Debug purposes only!)" + } + }, + { + "translated": "L\u00fctfen d\u0131\u015fa aktard\u0131\u011f\u0131n\u0131z TS3 Identity string feryat\u0131n\u0131z\u0131 girin veya d\u0131\u015fa aktar\u0131lan kimli\u011finizi se\u00e7in.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your exported TS3 Identity string bellow or select your exported Identity" + } + }, + { + "translated": "Forum hesab\u0131n\u0131z\u0131 do\u011frulama olarak kullan\u0131yorsunuz", + "flags": [ + "google-translate" + ], + "key": { + "message": "You're using your forum account as verification" + } + }, + { + "translated": "Bu sadece hata ay\u0131klamak i\u00e7indir ve ad\u0131 benzersiz tan\u0131mlay\u0131c\u0131 olarak kullan\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "This is just for debug and uses the name as unique identifier" + } + }, + { + "translated": "Ad\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name:" + } + }, + { + "translated": "Parola:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Password:" + } + }, + { + "translated": "Konu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Topic:" + } + }, + { + "translated": "A\u00e7\u0131klama:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description:" + } + }, + { + "translated": "Standart", + "flags": [ + "google-translate" + ], + "key": { + "message": "Standard" + } + }, + { + "translated": "Kanal T\u00fcr\u00fc", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Type" + } + }, + { + "translated": "Ge\u00e7ici", + "flags": [ + "google-translate" + ], + "key": { + "message": "Temporary" + } + }, + { + "translated": "Yar\u0131-kal\u0131c\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Semi-Permanent" + } + }, + { + "translated": "kal\u0131c\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permanent" + } + }, + { + "translated": "Varsay\u0131lan Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Channel" + } + }, + { + "translated": "Bu kanal\u0131 sonra s\u0131rala:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sort this channel after:" + } + }, + { + "translated": "Gerekli Konu\u015fma G\u00fcc\u00fc:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Talk Power:" + } + }, + { + "translated": "Ses", + "flags": [ + "google-translate" + ], + "key": { + "message": "Audio" + } + }, + { + "translated": "Haz\u0131r ayarlar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Presets" + } + }, + { + "translated": "Sesli Mobil", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Mobile" + } + }, + { + "translated": "Sesli Masa\u00fcst\u00fc", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Desktop" + } + }, + { + "translated": "M\u00fczik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music" + } + }, + { + "translated": "g\u00f6renek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom" + } + }, + { + "translated": "\u00d6zel ayarlar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom Settings" + } + }, + { + "translated": "Codec:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec:" + } + }, + { + "translated": "Speex Ultra Geni\u015f Bant", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra-Wideband" + } + }, + { + "translated": "Kalite:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quality:" + } + }, + { + "translated": "D\u00fczenli ihtiya\u00e7 duyulan g\u00fc\u00e7ler:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular needed powers:" + } + }, + { + "translated": "Kat\u0131lmak:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Join:" + } + }, + { + "translated": "G\u00f6r\u00fcn\u00fcm:", + "flags": [ + "google-translate" + ], + "key": { + "message": "View:" + } + }, + { + "translated": "Abone ol:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribe:" + } + }, + { + "translated": "A\u00e7\u0131kl. g\u00f6r\u00fcn\u00fcm:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Desc. view:" + } + }, + { + "translated": "de\u011fi\u015ftirin:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Modify:" + } + }, + { + "translated": "Sil:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete:" + } + }, + { + "translated": "Dosya aktar\u0131m\u0131 gerekli g\u00fc\u00e7ler:", + "flags": [ + "google-translate" + ], + "key": { + "message": "File transfer needed powers:" + } + }, + { + "translated": "ileri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Advanced" + } + }, + { + "translated": "Di\u011fer ayarlar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Other Settings" + } + }, + { + "translated": "Fonetik ad\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Phonetic Name:" + } + }, + { + "translated": "Gecikmeyi sil:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay:" + } + }, + { + "translated": "Ses Verileri \u015fifreli", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data encrypted" + } + }, + { + "translated": "Maksimum kullan\u0131c\u0131lar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Max users" + } + }, + { + "translated": "S\u0131n\u0131rs\u0131z", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unlimited" + } + }, + { + "translated": "S\u0131n\u0131rl\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Limited" + } + }, + { + "translated": "Family Max kullan\u0131c\u0131lar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Family Max users" + } + }, + { + "translated": "Miras", + "flags": [ + "google-translate" + ], + "key": { + "message": "Inherited" + } + }, + { + "translated": "kontrol", + "flags": [ + "google-translate" + ], + "key": { + "message": "checked" + } + }, + { + "translated": "Maksimum M\u00fc\u015fteriler:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Maximum Clients:" + } + }, + { + "translated": "Ayr\u0131lm\u0131\u015f yuvalar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reserved slots:" + } + }, + { + "translated": "Kar\u015f\u0131lama mesaj\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Welcome Message:" + } + }, + { + "translated": "evsahibi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host" + } + }, + { + "translated": "ba\u011flay\u0131c\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Binding" + } + }, + { + "translated": "Host:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host:" + } + }, + { + "translated": "Liman:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Port:" + } + }, + { + "translated": "Not: Bu ayarlar\u0131n etkili olmas\u0131 i\u00e7in sanal sunucunun yeniden ba\u015flat\u0131lmas\u0131 gerekir!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Note: These settings require a virtual server restart to take effect!" + } + }, + { + "translated": "Ana mesaj", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host message" + } + }, + { + "translated": "Mesaj:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message:" + } + }, + { + "translated": "Mesaj modu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message Mode:" + } + }, + { + "translated": "Mesaj yok", + "flags": [ + "google-translate" + ], + "key": { + "message": "No message" + } + }, + { + "translated": "\u0130letiyi g\u00fcnl\u00fckte g\u00f6ster", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message in log" + } + }, + { + "translated": "Mesaj\u0131 modal olarak g\u00f6ster", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal" + } + }, + { + "translated": "Mesaj\u0131 modal olarak g\u00f6ster ve istemciyi ay\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal and disconnect the client" + } + }, + { + "translated": "Ana banner", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host banner" + } + }, + { + "translated": "Banner Gfx URL'si:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banner Gfx URL:" + } + }, + { + "translated": "Gfx Aral\u0131\u011f\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Gfx Interval:" + } + }, + { + "translated": "yeniden boyutland\u0131rma:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Resize:" + } + }, + { + "translated": "Ayarlama yapma", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do not adjust" + } + }, + { + "translated": "Ayarla, oran oran\u0131n\u0131 yoksay", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust but ignore ratio aspect" + } + }, + { + "translated": "Oran oran\u0131n\u0131 ayarlay\u0131n ve tutun", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust and keep ratio aspect" + } + }, + { + "translated": "Ana Bilgisayar D\u00fc\u011fmesi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host Button" + } + }, + { + "translated": "\u0130pucu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tooltip:" + } + }, + { + "translated": "Simge URL'si:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon URL:" + } + }, + { + "translated": "Transferler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Transfers" + } + }, + { + "translated": "Y\u00fckleme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload" + } + }, + { + "translated": "Bant geni\u015fli\u011fi s\u0131n\u0131r\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bandwidth Limit:" + } + }, + { + "translated": "Bayt / s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bytes/s" + } + }, + { + "translated": "Y\u00fckleme Kotas\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload Quota:" + } + }, + { + "translated": "SGA", + "flags": [ + "google-translate" + ], + "key": { + "message": "MiB" + } + }, + { + "translated": "\u0130ndir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download" + } + }, + { + "translated": "Kotay\u0131 \u0130ndir:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download Quota:" + } + }, + { + "translated": "Anti-Sel", + "flags": [ + "google-translate" + ], + "key": { + "message": "Anti-Flood" + } + }, + { + "translated": "Kene ba\u015f\u0131na azalt\u0131lm\u0131\u015f puan:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reduced points per tick:" + } + }, + { + "translated": "Komutlar\u0131 engellemek i\u00e7in gereken puanlar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block commands:" + } + }, + { + "translated": "IP'yi engellemek i\u00e7in gereken puanlar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block IP:" + } + }, + { + "translated": "G\u00fcvenlik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Security" + } + }, + { + "translated": "Gerekli G\u00fcvenlik Seviyesi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Security Level:" + } + }, + { + "translated": "Kanal ses veri \u015fifreleme:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel voice data encryption:" + } + }, + { + "translated": "Kanal ba\u015f\u0131na tek tek d\u00fczenle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit per channel individually" + } + }, + { + "translated": "K\u00fcresel engelli", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally disabled" + } + }, + { + "translated": "K\u00fcresel olarak etkinle\u015ftirildi (\u00f6nerilir)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally enabled (recommended)" + } + }, + { + "translated": "\u00c7e\u015fitli", + "flags": [ + "google-translate" + ], + "key": { + "message": "Misc" + } + }, + { + "translated": "Varsay\u0131lan gruplar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default groups" + } + }, + { + "translated": "Sunucu grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server group" + } + }, + { + "translated": "M\u00fczik bot grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music bot group" + } + }, + { + "translated": "Kanal grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group" + } + }, + { + "translated": "Kanal Y\u00f6netici grubu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Admin group" + } + }, + { + "translated": "\u015eikayet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Complain" + } + }, + { + "translated": "Autoban Say\u0131s\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Count" + } + }, + { + "translated": "Autoban Saati", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Time" + } + }, + { + "translated": "Zaman\u0131 Kald\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove Time" + } + }, + { + "translated": "Minimum istemciler sessizlikten \u00f6nce kanald\u0131r:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Minimum clients is channel before silence:" + } + }, + { + "translated": "\u00d6ncelikli hoparl\u00f6r dim de\u011fi\u015ftirici:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Priority speaker dim modificator:" + } + }, + { + "translated": "Ge\u00e7ici kanallar i\u00e7in gecikme sil", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay for temporary channels" + } + }, + { + "translated": "Sunucu listesi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server list" + } + }, + { + "translated": "TeamSpeak sunucu listesine raporlamay\u0131 etkinle\u015ftirme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeamSpeak server list" + } + }, + { + "translated": " TeaSpeak sunucu listesine raporlamay\u0131 etkinle\u015ftirme (TeaSpeak bu ayar\u0131 desteklemiyor)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeaSpeak server list (TeaSpeak does not support this setting)" + } + }, + { + "translated": "Mesajlar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Messages" + } + }, + { + "translated": "Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel" + } + }, + { + "translated": "Varsay\u0131lan Konu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Topic:" + } + }, + { + "translated": "Varsay\u0131lan A\u00e7\u0131klama", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Description" + } + }, + { + "translated": "m\u00fc\u015fteri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client" + } + }, + { + "translated": "Genel", + "flags": [ + "google-translate" + ], + "key": { + "message": "General" + } + }, + { + "translated": "Hen\u00fcz ayarlanmad\u0131!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Didnt setuped yet!" + } + }, + { + "translated": "Mikrofon", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone" + } + }, + { + "translated": "Cihaz:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Device:" + } + }, + { + "translated": "Ses Etkinli\u011fi Alg\u0131lama", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Activity Detection" + } + }, + { + "translated": "Her zaman aktif", + "flags": [ + "google-translate" + ], + "key": { + "message": "Always active" + } + }, + { + "translated": "Ses etkinli\u011fi alg\u0131lama", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity detection" + } + }, + { + "translated": "Konu\u015fmak i\u00e7in bas", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk" + } + }, + { + "translated": "Her zaman \u00e7evrimi\u00e7i ses tespiti i\u00e7in ayar giri\u015fi yoktur.", + "flags": [ + "google-translate" + ], + "key": { + "message": "There are no setting entries for an always online voice detection." + } + }, + { + "translated": "Bas-konu\u015f tu\u015fu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk key:" + } + }, + { + "translated": "uninitialised", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uninitialised" + } + }, + { + "translated": "Ses etkinli\u011fi e\u015fi\u011fi (% 20 )", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity threshold (20%)" + } + }, + { + "translated": "konu\u015fmac\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speaker" + } + }, + { + "translated": "\u00c7eviriler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Translations" + } + }, + { + "translated": "Mevcut \u00e7eviriler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Available translations" + } + }, + { + "translated": "\u0130ngilizce (Varsay\u0131lan / Yedek)", + "flags": [ + "google-translate" + ], + "key": { + "message": "English (Default / Fallback)" + } + }, + { + "translated": "Havuz ekle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add repository" + } + }, + { + "translated": "Dikkat: Bu ayarlar sadece yeniden ba\u015flat\u0131ld\u0131ktan veya yeniden y\u00fcklendikten sonra etkilenir!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attention: These settings get only affected after a restart or reload!" + } + }, + { + "translated": "\u015fimdi yeniden y\u00fckle", + "flags": [ + "google-translate" + ], + "key": { + "message": "reload now" + } + }, + { + "translated": "Kanal Gruplar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Groups" + } + }, + { + "translated": "Kanal izinleri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel permissions" + } + }, + { + "translated": "M\u00fc\u015fteri izinleri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client permissions" + } + }, + { + "translated": "M\u00fc\u015fteri benzersiz kimli\u011fi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client unique ID:" + } + }, + { + "translated": "Benzersiz kimlik:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unique ID:" + } + }, + { + "translated": "M\u00fc\u015fteri veritaban\u0131 kimli\u011fi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client database ID:" + } + }, + { + "translated": "M\u00fc\u015fteri kanal\u0131 izinleri", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client channel permissions" + } + }, + { + "translated": "De\u011fi\u015fen gruplar\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing groups of" + } + }, + { + "translated": "Filtre:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Filter:" + } + }, + { + "translated": "Sadece verilen izinleri g\u00f6ster", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show granted permissions only" + } + }, + { + "translated": "\u0130zin \u0130smi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission Name" + } + }, + { + "translated": "de\u011fer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Value" + } + }, + { + "translated": "atlamak", + "flags": [ + "google-translate" + ], + "key": { + "message": "Skip" + } + }, + { + "translated": "reddetmek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Negate" + } + }, + { + "translated": "verilen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Granted" + } + }, + { + "translated": "G\u00fcncelle\u015ftirme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update" + } + }, + { + "translated": "Eklemek", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add" + } + }, + { + "translated": "Kald\u0131r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove" + } + }, + { + "translated": "\u0130sim / IP / UID / HWID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name/IP/UID/HWID" + } + }, + { + "translated": "neden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason" + } + }, + { + "translated": "yarat\u0131c\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creator" + } + }, + { + "translated": "Olu\u015fturuldu / Sona Erdi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created / Expires" + } + }, + { + "translated": "Tekrar y\u00fckle", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reload" + } + }, + { + "translated": "Sadece kendi yasaklar\u0131n\u0131 g\u00f6ster", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show only own bans" + } + }, + { + "translated": "Kendi yasaklar\u0131n\u0131 vurgula", + "flags": [ + "google-translate" + ], + "key": { + "message": "Highlight own bans" + } + }, + { + "translated": "Sebep:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason:" + } + }, + { + "translated": "S\u00fcre:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration:" + } + }, + { + "translated": "kal\u0131c\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "permanent" + } + }, + { + "translated": "\u0130stemciyi yasakla", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client by" + } + }, + { + "translated": "Takma ad", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname" + } + }, + { + "translated": "M\u00fc\u015fteriyi mevcut takma ad\u0131yla yasaklar.
\u015eu anda takma ad\u0131n s\u00fcresi dolana kadar kullan\u0131lamaz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his current nickname.
The currently nickname cant be used until the ban expired" + } + }, + { + "translated": "Donan\u0131m kimli\u011fi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID" + } + }, + { + "translated": "\u0130stemci donan\u0131m kimli\u011fiyle yasaklan\u0131r.
Donan\u0131m kimli\u011finin farkl\u0131 anlamlar\u0131 vard\u0131r, kullan\u0131c\u0131 arac\u0131s\u0131na ba\u011fl\u0131d\u0131r
TeaClient: Donan\u0131m kimli\u011fi, mac adresine e\u015fit olacakt\u0131r
TeaWeb: TeaSpeak web istemcisi bir donan\u0131m kimli\u011fi de\u011fil, rastgele olacak
TeamSpeak 3 istemcisi: Donan\u0131m kimli\u011fi, donan\u0131m \u00f6zelliklerinden kaynaklanan baz\u0131 karmalar\u0131n bir sonucu olacakt\u0131r.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his hardware id.
The hardware id has different meanings, depends on the users agent
TeaClient: The hardware id will be equal to the mac address
TeaWeb: The TeaSpeak web client hasn't a hardware id, it will be random
TeamSpeak 3 client: The hardware id will be a result of some hashes from hardware specific properties" + } + }, + { + "translated": "IP adresi", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP Address" + } + }, + { + "translated": "olu\u015fturuldu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created:" + } + }, + { + "translated": "Ge\u00e7erlilik:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expire:" + } + }, + { + "translated": "IP:", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP:" + } + }, + { + "translated": "IP / \u0130smi \u015fu \u015fekilde yorumlay\u0131n:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Interpret IP/Name as:" + } + }, + { + "translated": "Joker IPv4", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv4" + } + }, + { + "translated": "Wildcard IPv6", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv6" + } + }, + { + "translated": "Sabit dize", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fixed string" + } + }, + { + "translated": "D\u00fczenli ifade", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular Expression" + } + }, + { + "translated": "Donan\u0131m kimli\u011fi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID:" + } + }, + { + "translated": "s\u00fcre", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration" + } + }, + { + "translated": "Bu yasa\u011f\u0131 k\u00fcresel yasaklama olarak kullan", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use this ban as a global ban" + } + }, + { + "translated": "K\u00fcresel yasaklar, \u00f6rnek geni\u015fleyen yasaklard\u0131r.
Bu demektir ki (e\u011fer bu kural bir kurban i\u00e7in ge\u00e7erliyse) herhangi bir sanal sunucuya kat\u0131lamaz!
Genel yasaklar varsay\u0131lan olarak her sunucu y\u00f6netici grubuna g\u00f6sterilir.
ancak sorgu haklar\u0131yla olu\u015fturulabilir", + "flags": [ + "google-translate" + ], + "key": { + "message": "Global bans are bans which apply instance wide.
This means that (if this rule apply to a victim) cant join any virtual server!
Global bans are by default shown to every server admin group,
but could only be created with query rights" + } + }, + { + "translated": "M\u00fczik \u00e7almama", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not playing any music" + } + }, + { + "translated": "Versiyon:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Version:" + } + }, + { + "translated": "\u015eundan beri \u00e7evrimi\u00e7i:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Online since:" + } + }, + { + "translated": "Hacim:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Volume:" + } + }, + { + "translated": "TeaSpeak Hesab\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeaSpeak Account:" + } + }, + { + "translated": "Sunucu gruplar\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server groups:" + } + }, + { + "translated": "Kanal grubu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group:" + } + }, + { + "translated": "Uzakta", + "flags": [ + "google-translate" + ], + "key": { + "message": "Away" + } + }, + { + "translated": "Konu\u015fmac\u0131lar / Kulakl\u0131k devre d\u0131\u015f\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones disabled" + } + }, + { + "translated": "Mikrofon devre d\u0131\u015f\u0131", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone disabled" + } + }, + { + "translated": "Hoparl\u00f6rler / Kulakl\u0131klar Sessiz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones Muted" + } + }, + { + "translated": "Mikrofon Sessiz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone Muted" + } + }, + { + "translated": "Ya\u015fama zaman\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Livetime:" + } + }, + { + "translated": "Uzak Ses Seviyesi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote Volume:" + } + }, + { + "translated": "Yerel Hacim:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local Volume:" + } + }, + { + "translated": "\u015eu anda yeniden oynat\u0131l\u0131yor:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Currently replaying:" + } + }, + { + "translated": "Adres:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Address:" + } + }, + { + "translated": "T\u00fcr:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type:" + } + }, + { + "translated": "\u00c7al\u0131\u015fma Zaman\u0131:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uptime:" + } + }, + { + "translated": "Mevcut Kanallar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Channels:" + } + }, + { + "translated": "Mevcut M\u00fc\u015fteriler:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Clients:" + } + }, + { + "translated": "Mevcut Sorgular:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Queries:" + } + }, + { + "translated": "G\u00fcncelleme bilgisi", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update info" + } + }, + { + "translated": "Codec Kalitesi:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec Quality:" + } + }, + { + "translated": "Mevcut m\u00fc\u015fteriler:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current clients:" + } + }, + { + "translated": "Abonelik durumu:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscription Status:" + } + }, + { + "translated": "Abone", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribed" + } + }, + { + "translated": "Abone olmayan", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unsubscribed" + } + }, + { + "translated": "Sesli Veri \u015eifreleme:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data Encryption:" + } + }, + { + "translated": "\u015fifresiz", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unencrypted" + } + }, + { + "translated": "\u015eifreli", + "flags": [ + "google-translate" + ], + "key": { + "message": "Encrypted" + } + }, + { + "translated": "(\u015eifreli sunucu taraf\u0131ndan ge\u00e7ersiz k\u0131l\u0131nd\u0131)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Encrypted)" + } + }, + { + "translated": "(\u015eifrelenmemi\u015f sunucu taraf\u0131ndan ge\u00e7ersiz k\u0131l\u0131nd\u0131)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Unencrypted)" + } + }, + { + "translated": "A\u00e7\u0131klama", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description" + } + }, + { + "translated": "Taraf\u0131ndan d\u00fcrtt\u00fcn", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked by" + } + } + ] +} \ No newline at end of file diff --git a/shared/js/chat.ts b/shared/js/chat.ts index a1c98806..3e915b98 100644 --- a/shared/js/chat.ts +++ b/shared/js/chat.ts @@ -323,6 +323,8 @@ class ChatBox { } globalClient.serverConnection.sendMessage(text, ChatType.SERVER); }; + this.serverChat().name = tr("Server chat"); + this.createChat("chat_channel", ChatType.CHANNEL).onMessageSend = (text: string) => { if(!globalClient.serverConnection) { chat.channelChat().appendError(tr("Could not send chant message (Not connected)")); @@ -331,6 +333,7 @@ class ChatBox { globalClient.serverConnection.sendMessage(text, ChatType.CHANNEL, globalClient.getClient().currentChannel()); }; + this.channelChat().name = tr("Channel chat"); globalClient.permissions.initializedListener.push(flag => { if(flag) this.activeChat0(this._activeChat); diff --git a/shared/js/client.ts b/shared/js/client.ts index 2443f00e..a292e47c 100644 --- a/shared/js/client.ts +++ b/shared/js/client.ts @@ -98,7 +98,7 @@ class TSClient { helpers.hashPassword(password.password).then(password => { this.serverConnection.startConnection({host, port}, new HandshakeHandler(identity, name, password)); }).catch(error => { - createErrorModal(tr("Error while hashing password"), tr("Failed to hash server password!
" + error).open(); + createErrorModal(tr("Error while hashing password"), tr("Failed to hash server password!
") + error).open(); }) } else this.serverConnection.startConnection({host, port}, new HandshakeHandler(identity, name, password ? password.password : undefined)); diff --git a/shared/js/i18n/localize.ts b/shared/js/i18n/localize.ts index c3eea2a3..e9231269 100644 --- a/shared/js/i18n/localize.ts +++ b/shared/js/i18n/localize.ts @@ -1,8 +1,331 @@ -namespace i18n { - export function tr(message: string, key?: string) { - console.log("Translating \"%s\". Default: \"%s\"", key, message); +/* +"key": { + "message": "Show permission description", + "line": 374, + "character": 30, + "filename": "/home/wolverindev/TeaSpeak/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPermissionEdit.ts" +}, +"translated": "Berechtigungsbeschreibung anzeigen", +"flags": [ + "google-translate", + "verified" +] + */ +function guid() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); +} - return message; +namespace i18n { + export interface TranslationKey { + message: string; + line?: number; + character?: number; + filename?: string; + } + + export interface Translation { + key: TranslationKey; + translated: string; + flags?: string[]; + } + + export interface Contributor { + name: string; + email: string; + } + + export interface FileInfo { + name: string; + contributors: Contributor[]; + } + + export interface TranslationFile { + url: string; + + info: FileInfo; + translations: Translation[]; + } + + export interface RepositoryTranslation { + key: string; + path: string; + } + + export interface TranslationRepository { + unique_id: string; + url: string; + name?: string; + contact?: string; + translations?: RepositoryTranslation[]; + load_timestamp?: number; + } + + let translations: Translation[] = []; + let fast_translate: { [key:string]:string; } = {}; + export function tr(message: string, key?: string) { + const sloppy = fast_translate[message]; + if(sloppy) return sloppy; + + log.info(LogCategory.I18N, "Translating \"%s\". Default: \"%s\"", key, message); + + let translated = message; + for(const translation of translations) { + if(translation.key.message == message) { + translated = translation.translated; + break; + } + } + + fast_translate[message] = translated; + return translated; + } + + async function load_translation_file(url: string) : Promise { + return new Promise((resolve, reject) => { + $.ajax({ + url: url, + async: true, + success: result => { + try { + const file = (typeof(result) === "string" ? JSON.parse(result) : result) as TranslationFile; + if(!file) { + reject("Invalid json"); + return; + } + + file.url = url; + //TODO validate file + resolve(file); + } catch(error) { + log.warn(LogCategory.I18N, tr("Failed to load translation file %s. Failed to parse or process json: %o"), url, error); + reject(tr("Failed to process or parse json!")); + } + }, + error: (xhr, error) => { + reject(tr("Failed to load file: ") + error); + } + }) + }); + } + + export function load_file(url: string) : Promise { + return load_translation_file(url).then(result => { + log.info(LogCategory.I18N, tr("Successfully initialized up translation file from %s"), url); + translations = result.translations; + return Promise.resolve(); + }).catch(error => { + log.warn(LogCategory.I18N, tr("Failed to load translation file from \"%s\". Error: %o"), url, error); + return Promise.reject(error); + }); + } + + async function load_repository0(repo: TranslationRepository, reload: boolean) { + if(!repo.load_timestamp || repo.load_timestamp < 1000 || reload) { + const info_json = await new Promise((resolve, reject) => { + $.ajax({ + url: repo.url + "/info.json", + async: true, + cache: !reload, + success: result => { + const file = (typeof(result) === "string" ? JSON.parse(result) : result) as TranslationFile; + if(!file) { + reject("Invalid json"); + return; + } + + resolve(file); + }, + error: (xhr, error) => { + reject(tr("Failed to load file: ") + error); + } + }) + }); + + Object.assign(repo, info_json); + } + + if(!repo.unique_id) + repo.unique_id = guid(); + + repo.translations = repo.translations || []; + repo.load_timestamp = Date.now(); + } + + export async function load_repository(url: string) : Promise { + const result = {} as TranslationRepository; + result.url = url; + await load_repository0(result, false); + return result; + } + + export namespace config { + export interface TranslationConfig { + current_repository_url?: string; + current_language?: string; + + current_translation_url: string; + } + + export interface RepositoryConfig { + repositories?: { + url?: string; + repository?: TranslationRepository; + }[]; + } + + const repository_config_key = "i18n.repository"; + let _cached_repository_config: RepositoryConfig; + export function repository_config() { + if(_cached_repository_config) + return _cached_repository_config; + + const config_string = localStorage.getItem(repository_config_key); + const config: RepositoryConfig = config_string ? JSON.parse(config_string) : {}; + config.repositories = config.repositories || []; + for(const repo of config.repositories) + (repo.repository || {load_timestamp: 0}).load_timestamp = 0; + + if(config.repositories.length == 0) { + //Add the default TeaSpeak repository + load_repository(StaticSettings.instance.static("i18n.default_repository", "i18n/")).then(repo => { + log.info(LogCategory.I18N, tr("Successfully added default repository from \"%s\"."), repo.url); + register_repository(repo); + }).catch(error => { + log.warn(LogCategory.I18N, tr("Failed to add default repository. Error: %o"), error); + }); + } + + return _cached_repository_config = config; + } + + export function save_repository_config() { + localStorage.setItem(repository_config_key, JSON.stringify(_cached_repository_config)); + } + + const translation_config_key = "i18n.translation"; + let _cached_translation_config: TranslationConfig; + + export function translation_config() : TranslationConfig { + if(_cached_translation_config) + return _cached_translation_config; + + const config_string = localStorage.getItem(translation_config_key); + _cached_translation_config = config_string ? JSON.parse(config_string) : {}; + return _cached_translation_config; + } + + export function save_translation_config() { + localStorage.setItem(translation_config_key, JSON.stringify(_cached_translation_config)); + } + } + + export function register_repository(repository: TranslationRepository) { + if(!repository) return; + + for(const repo of config.repository_config().repositories) + if(repo.url == repository.url) return; + + config.repository_config().repositories.push(repository); + config.save_repository_config(); + } + + export function registered_repositories() : TranslationRepository[] { + return config.repository_config().repositories.map(e => e.repository || {url: e.url, load_timestamp: 0} as TranslationRepository); + } + + export function delete_repository(repository: TranslationRepository) { + if(!repository) return; + + for(const repo of [...config.repository_config().repositories]) + if(repo.url == repository.url) { + config.repository_config().repositories.remove(repo); + } + config.save_repository_config(); + } + + export function iterate_translations(callback_entry: (repository: TranslationRepository, entry: TranslationFile) => any, callback_finish: () => any) { + let count = 0; + const update_finish = () => { + if(count == 0 && callback_finish) + callback_finish(); + }; + + for(const repo of registered_repositories()) { + count++; + load_repository0(repo, false).then(() => { + for(const translation of repo.translations || []) { + const translation_path = repo.url + "/" + translation.path; + count++; + + load_translation_file(translation_path).then(file => { + if(callback_entry) { + try { + callback_entry(repo, file); + } catch (error) { + console.error(error); + //TODO more error handling? + } + } + + count--; + update_finish(); + }).catch(error => { + log.warn(LogCategory.I18N, tr("Failed to load translation file for repository %s. Translation: %s (%s) Error: %o"), repo.name, translation.key, translation_path, error); + + count--; + update_finish(); + }); + } + + count--; + update_finish(); + }).catch(error => { + log.warn(LogCategory.I18N, tr("Failed to load repository while iteration: %s (%s). Error: %o"), (repo || {name: "unknown"}).name, (repo || {url: "unknown"}).url, error); + + count--; + update_finish(); + }); + } + + + update_finish(); + } + + export function select_translation(repository: TranslationRepository, entry: TranslationFile) { + const cfg = config.translation_config(); + + if(entry && repository) { + cfg.current_language = entry.info.name; + cfg.current_repository_url = repository.url; + cfg.current_translation_url = entry.url; + } else { + cfg.current_language = undefined; + cfg.current_repository_url = undefined; + cfg.current_translation_url = undefined; + } + + config.save_translation_config(); + } + + export async function initialize() { + const rcfg = config.repository_config(); /* initialize */ + const cfg = config.translation_config(); + + if(cfg.current_translation_url) { + try { + await load_file(cfg.current_translation_url); + } catch (error) { + createErrorModal(tr("Translation System"), tr("Failed to load current selected translation file.") + "
File: " + cfg.current_translation_url + "
Error: " + error + "
" + tr("Using default fallback translations.")).open(); + } + } + // await load_file("http://localhost/home/TeaSpeak/TeaSpeak/Web-Client/web/environment/development/i18n/de_DE.translation"); + // await load_file("http://localhost/home/TeaSpeak/TeaSpeak/Web-Client/web/environment/development/i18n/test.json"); } } + const tr: typeof i18n.tr = i18n.tr; \ No newline at end of file diff --git a/shared/js/load.ts b/shared/js/load.ts index b5c1bd12..48fb5fe9 100644 --- a/shared/js/load.ts +++ b/shared/js/load.ts @@ -1,5 +1,3 @@ - -//FIXME fix display critical error before load namespace app { export enum Type { UNDEFINED, @@ -55,30 +53,40 @@ namespace app { } /* define that here */ -let impl_display_critical_error: (message: string) => any; +let _critical_triggered = false; +const display_critical_load = message => { + if(_critical_triggered) return; /* only show the first error */ + _critical_triggered = true; + + let tag = document.getElementById("critical-load"); + let detail = tag.getElementsByClassName("detail")[0]; + detail.innerHTML = message; + + tag.style.display = "block"; + fadeoutLoader(); +}; + +const loader_impl_display_critical_error = message => { + if(typeof(createErrorModal) !== 'undefined') { + createErrorModal("A critical error occurred while loading the page!", message, {closeable: false}).open(); + } else { + display_critical_load(message); + } + fadeoutLoader(); +}; interface Window { impl_display_critical_error: (_: string) => any; } -if(!window.impl_display_critical_error) { /* default impl */ - impl_display_critical_error = message => { - if(typeof(createErrorModal) !== 'undefined') { - createErrorModal("A critical error occurred while loading the page!", message, {closeable: false}).open(); - } else { - let tag = document.getElementById("critical-load"); - let detail = tag.getElementsByClassName("detail")[0]; - detail.innerHTML = message; - tag.style.display = "block"; - } - fadeoutLoader(); - } +if(!window.impl_display_critical_error) { /* default impl */ + window.impl_display_critical_error = loader_impl_display_critical_error; } function displayCriticalError(message: string) { if(window.impl_display_critical_error) window.impl_display_critical_error(message); else - console.error("Could not display a critical message: " + message); /* this shall never happen! */ + loader_impl_display_critical_error(message); } @@ -280,14 +288,7 @@ function loadTemplates() { } while(tags.length > 0){ let tag = tags.item(0); - if(tag.id == "tmpl_main") { - let main_node = document.createElement("div"); - document.getElementsByTagName("body").item(0).appendChild(main_node); - main_node.outerHTML = tag.innerHTML; - tag.remove(); - } - else - root.appendChild(tag); + root.appendChild(tag); } }).catch(error => { @@ -344,11 +345,22 @@ function loadSide() { load_script("js/proto.js").then(loadDebug).catch(loadRelease); //Load the teaweb templates loadTemplates(); + }).catch(error => { + displayCriticalError("Failed to load scripts.
Lookup the console for more details."); + console.error(error); }); } //FUN: loader_ignore_age=0&loader_default_duration=1500&loader_default_age=5000 +let _fadeout_warned = false; function fadeoutLoader(duration = undefined, minAge = undefined, ignoreAge = undefined) { + if(typeof($) === "undefined") { + if(!_fadeout_warned) + console.warn("Could not fadeout loader screen. Missing jquery functions."); + _fadeout_warned = true; + return; + } + let settingsDefined = typeof(StaticSettings) !== "undefined"; if(!duration) { if(settingsDefined) @@ -371,6 +383,7 @@ function fadeoutLoader(duration = undefined, minAge = undefined, ignoreAge = und setTimeout(() => fadeoutLoader(duration, 0, true), minAge - age); return; } + $(".loader .bookshelf_wrapper").animate({top: 0, opacity: 0}, duration); $(".loader .half").animate({width: 0}, duration, () => { $(".loader").detach(); @@ -410,4 +423,9 @@ navigator.browserSpecs = (function(){ })(); console.log(navigator.browserSpecs); //Object { name: "Firefox", version: "42" } -loadSide(); \ No newline at end of file +try { + loadSide(); +} catch(error) { + displayCriticalError("Failed to invoke main loader function."); + console.error(error); +} \ No newline at end of file diff --git a/shared/js/log.ts b/shared/js/log.ts index 194b1922..3da599df 100644 --- a/shared/js/log.ts +++ b/shared/js/log.ts @@ -5,7 +5,8 @@ enum LogCategory { PERMISSIONS, GENERAL, NETWORKING, - VOICE + VOICE, + I18N } namespace log { @@ -17,7 +18,6 @@ namespace log { ERROR } - //TODO add translation let category_mapping = new Map([ [LogCategory.CHANNEL, "Channel "], [LogCategory.CLIENT, "Client "], @@ -25,7 +25,8 @@ namespace log { [LogCategory.PERMISSIONS, "Permission "], [LogCategory.GENERAL, "General "], [LogCategory.NETWORKING, "Network "], - [LogCategory.VOICE, "Voice "] + [LogCategory.VOICE, "Voice "], + [LogCategory.I18N, "I18N "] ]); function logDirect(type: LogType, message: string, ...optionalParams: any[]) { diff --git a/shared/js/main.ts b/shared/js/main.ts index a93cf9d0..719ad559 100644 --- a/shared/js/main.ts +++ b/shared/js/main.ts @@ -78,6 +78,10 @@ function setup_jsrender() : boolean { return moment(arguments[0]).format(arguments[1]); }); + js_render.views.tags("tr", (...arguments) => { + return tr(arguments[0]); + }); + $(".jsrender-template").each((idx, _entry) => { if(!js_render.templates(_entry.id, _entry.innerHTML)) { //, _entry.innerHTML console.error("Failed to cache template " + _entry.id + " for js render!"); @@ -87,16 +91,57 @@ function setup_jsrender() : boolean { return true; } -function main() { - if(!setup_jsrender()) return; +async function initialize() { + const display_load_error = message => { + if(typeof(display_critical_load) !== "undefined") + display_critical_load(message); + else + displayCriticalError(message); + }; - //http://localhost:63343/Web-Client/index.php?_ijt=omcpmt8b9hnjlfguh8ajgrgolr&default_connect_url=true&default_connect_type=teamspeak&default_connect_url=localhost%3A9987&disableUnloadDialog=1&loader_ignore_age=1 - AudioController.initializeAudioController(); - if(!TSIdentityHelper.setup()) { - console.error(tr( "Could not setup the TeamSpeak identity parser!")); + try { + await i18n.initialize(); + } catch(error) { + console.error(tr("Failed to initialized the translation system!\nError: %o"), error); + displayCriticalError("Failed to setup the translation system"); return; } + try { + if(!setup_jsrender()) + throw "invalid load"; + } catch (error) { + display_load_error(tr("Failed to setup jsrender")); + console.error(tr("Failed to load jsrender! %o"), error); + return; + } + + try { //Initialize main template + const main = $("#tmpl_main").renderTag(); + $("body").append(main); + } catch(error) { + display_load_error(tr("Failed to setup main page!")); + return; + } + + AudioController.initializeAudioController(); + if(!TSIdentityHelper.setup()) { + console.error(tr("Could not setup the TeamSpeak identity parser!")); + return; + } + + try { + await ppt.initialize(); + } catch(error) { + console.error(tr("Failed to initialize ppt!\nError: %o"), error); + displayCriticalError(tr("Failed to initialize ppt!")); + return; + } +} + +function main() { + //http://localhost:63343/Web-Client/index.php?_ijt=omcpmt8b9hnjlfguh8ajgrgolr&default_connect_url=true&default_connect_type=teamspeak&default_connect_url=localhost%3A9987&disableUnloadDialog=1&loader_ignore_age=1 + settings = new Settings(); globalClient = new TSClient(); /** Setup the XF forum identity **/ @@ -146,11 +191,6 @@ function main() { } } - ppt.initialize().catch(error => { - console.error(tr("Failed to initialize ppt!")); - //TODO error notification? - }); - /* let tag = $("#tmpl_music_frame").renderTag({ //thumbnail: "img/loading_image.svg" @@ -179,8 +219,9 @@ function main() { }); } -app.loadedListener.push(() => { +app.loadedListener.push(async () => { try { + await initialize(); main(); if(!audio.player.initialized()) { log.info(LogCategory.VOICE, tr("Initialize audio controller later!")); diff --git a/shared/js/ui/modal/ModalSettings.ts b/shared/js/ui/modal/ModalSettings.ts index de80dbf6..bd94c8f8 100644 --- a/shared/js/ui/modal/ModalSettings.ts +++ b/shared/js/ui/modal/ModalSettings.ts @@ -4,6 +4,9 @@ /// namespace Modals { + import info = log.info; + import TranslationRepository = i18n.TranslationRepository; + export function spawnSettingsModal() { let modal; modal = createModal({ @@ -12,6 +15,7 @@ namespace Modals { let template = $("#tmpl_settings").renderTag(); template = $.spawn("div").append(template); initialiseSettingListeners(modal,template = template.tabify()); + initialise_translations(template.find(".settings-translations")); return template; }, footer: () => { @@ -22,7 +26,7 @@ namespace Modals { footer.css("text-align", "right"); let buttonOk = $.spawn("button"); - buttonOk.text("Ok"); + buttonOk.text(tr("Ok")); buttonOk.click(() => modal.close()); footer.append(buttonOk); @@ -270,4 +274,173 @@ namespace Modals { //Initialise speakers } + + function initialise_translations(tag: JQuery) { + { //Initialize the list + const tag_list = tag.find(".setting-list .list"); + const tag_loading = tag.find(".setting-list .loading"); + const template = $("#settings-translations-list-entry"); + const restart_hint = tag.find(".setting-list .restart-note"); + restart_hint.hide(); + + const update_list = () => { + tag_list.empty(); + + const currently_selected = i18n.config.translation_config().current_translation_url; + { //Default translation + const tag = template.renderTag({ + type: "default", + selected: !currently_selected || currently_selected == "default" + }); + tag.on('click', () => { + i18n.select_translation(undefined, undefined); + tag_list.find(".selected").removeClass("selected"); + tag.addClass("selected"); + + restart_hint.show(); + }); + tag.appendTo(tag_list); + } + + { + const display_repository_info = (repository: TranslationRepository) => { + const info_modal = createModal({ + header: tr("Repository info"), + body: () => { + return $("#settings-translations-list-entry-info").renderTag({ + type: "repository", + name: repository.name, + url: repository.url, + contact: repository.contact, + translations: repository.translations || [] + }); + }, + footer: () => { + let footer = $.spawn("div"); + footer.addClass("modal-button-group"); + footer.css("margin-top", "5px"); + footer.css("margin-bottom", "5px"); + footer.css("text-align", "right"); + + let buttonOk = $.spawn("button"); + buttonOk.text(tr("Close")); + buttonOk.click(() => info_modal.close()); + footer.append(buttonOk); + + return footer; + } + }); + info_modal.open() + }; + + tag_loading.show(); + i18n.iterate_translations((repo, entry) => { + let repo_tag = tag_list.find("[repository=\"" + repo.unique_id + "\"]"); + if(repo_tag.length == 0) { + repo_tag = template.renderTag({ + type: "repository", + name: repo.name || repo.url, + id: repo.unique_id + }); + + repo_tag.find(".button-delete").on('click', e => { + e.preventDefault(); + + Modals.spawnYesNo(tr("Are you sure?"), tr("Do you really want to delete this repository?"), answer => { + if(answer) { + i18n.delete_repository(repo); + update_list(); + } + }); + }); + repo_tag.find(".button-info").on('click', e => { + e.preventDefault(); + + display_repository_info(repo); + }); + + tag_list.append(repo_tag); + } + + const tag = template.renderTag({ + type: "translation", + name: entry.info.name || entry.url, + id: repo.unique_id, + selected: i18n.config.translation_config().current_translation_url == entry.url + }); + tag.find(".button-info").on('click', e => { + e.preventDefault(); + + const info_modal = createModal({ + header: tr("Translation info"), + body: () => { + const tag = $("#settings-translations-list-entry-info").renderTag({ + type: "translation", + name: entry.info.name, + url: entry.url, + repository_name: repo.name, + contributors: entry.info.contributors || [] + }); + + tag.find(".button-info").on('click', () => display_repository_info(repo)); + + return tag; + }, + footer: () => { + let footer = $.spawn("div"); + footer.addClass("modal-button-group"); + footer.css("margin-top", "5px"); + footer.css("margin-bottom", "5px"); + footer.css("text-align", "right"); + + let buttonOk = $.spawn("button"); + buttonOk.text(tr("Close")); + buttonOk.click(() => info_modal.close()); + footer.append(buttonOk); + + return footer; + } + }); + info_modal.open() + }); + tag.on('click', e => { + if(e.isDefaultPrevented()) return; + i18n.select_translation(repo, entry); + tag_list.find(".selected").removeClass("selected"); + tag.addClass("selected"); + + restart_hint.show(); + }); + tag.insertAfter(repo_tag) + }, () => { + tag_loading.hide(); + }); + } + + }; + + { + tag.find(".button-add-repository").on('click', () => { + createInputModal("Enter URL", tr("Enter repository URL:
"), text => true, url => { //FIXME test valid url + if(!url) return; + + tag_loading.show(); + i18n.load_repository(url as string).then(repository => { + i18n.register_repository(repository); + update_list(); + }).catch(error => { + tag_loading.hide(); + createErrorModal("Failed to load repository", tr("Failed to query repository.
Ensure that this repository is valid and reachable.
Error: ") + error).open(); + }) + }).open(); + }); + } + + restart_hint.find(".button-reload").on('click', () => { + location.reload(); + }); + + update_list(); + } + } } \ No newline at end of file diff --git a/shared/js/utils/tab.ts b/shared/js/utils/tab.ts index 4851248b..92307a0c 100644 --- a/shared/js/utils/tab.ts +++ b/shared/js/utils/tab.ts @@ -1,3 +1,4 @@ +/// interface JQuery { asTabWidget(copy?: boolean) : JQuery; diff --git a/shared/test.json b/shared/test.json new file mode 100644 index 00000000..4b3c12fc --- /dev/null +++ b/shared/test.json @@ -0,0 +1,5413 @@ +{ + "info": { + "name": "Auto translated messages for language de", + "contributors": [ + { + "name": "Google Translate, via script by Markus Hadenfeldt", + "email": "gtr.i18n.client@teaspeak.de" + } + ] + }, + "translations": [ + { + "translated": "Fehler beim Initialisieren des Audio-Controllers!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize audio controller!" + } + }, + { + "translated": "Klingt initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sounds initialitzed" + } + }, + { + "translated": "[AudioController] Leerer oder undefinierter Puffer! Lass es fallen", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Got empty or undefined buffer! Dropping it" + } + }, + { + "translated": "[AudioController] Fehler beim Abspielen von Audio. Globaler Audiokontext noch nicht initialisiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Failed to replay audio. Global audio context not initialized yet!" + } + }, + { + "translated": "[AudioController] Die Samplerate der Quelle ist nicht gleich der Samplerate der Wiedergabe! (% o |% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[AudioController] Source sample rate isn't equal to playback sample rate! (%o | %o)" + } + }, + { + "translated": "[Audio] Starten der neuen Wiedergabe", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Starting new playback" + } + }, + { + "translated": "[Audio] Prebuffering erfolgreich abgeschlossen (jetzt abgespielt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Prebuffering succeeded (Replaying now)" + } + }, + { + "translated": "[Audio] Pufferung erfolgreich (Wiedergeben jetzt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering succeeded (Replaying now)" + } + }, + { + "translated": "Puffer l\u00f6schen, da die Wiedergabeliste zu gro\u00df wird", + "flags": [ + "google-translate" + ], + "key": { + "message": "Dropping buffer because playing queue grows to much" + } + }, + { + "translated": "[Audio] Puffer\u00fcberlauf festgestellt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Detected a buffer underflow!" + } + }, + { + "translated": "[Audio] Pufferung \u00fcberschritten. Wiedergabe sp\u00fclen und stoppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Audio] Buffering exceeded timeout. Flushing and stopping replay" + } + }, + { + "translated": "Json enth\u00e4lt% s nicht", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json does not contains %s" + } + }, + { + "translated": "Der Validator hat f\u00fcr% s den Wert false", + "flags": [ + "google-translate" + ], + "key": { + "message": "Validator results in false for %s" + } + }, + { + "translated": "Ung\u00fcltiger Objekttyp% s f\u00fcr Eintrag% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid object type %s for entry %s" + } + }, + { + "translated": "Jahre", + "flags": [ + "google-translate" + ], + "key": { + "message": "years" + } + }, + { + "translated": "Tage", + "flags": [ + "google-translate" + ], + "key": { + "message": "days" + } + }, + { + "translated": "Std", + "flags": [ + "google-translate" + ], + "key": { + "message": "hours" + } + }, + { + "translated": "Protokoll", + "flags": [ + "google-translate" + ], + "key": { + "message": "minutes" + } + }, + { + "translated": "Sekunden", + "flags": [ + "google-translate" + ], + "key": { + "message": "seconds" + } + }, + { + "translated": "jetzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "now" + } + }, + { + "translated": "Ich habe undefinierten Typ!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got undefined type!" + } + }, + { + "translated": "VAD ge\u00e4ndert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD changed!" + } + }, + { + "translated": "VAD-Schl\u00fcsselerkennung ge\u00e4ndert.
Bitte setzen Sie Ihren PPT-Schl\u00fcssel zur\u00fcck!", + "flags": [ + "google-translate" + ], + "key": { + "message": "VAD key detection changed.
Please reset your PPT key!" + } + }, + { + "translated": "Ung\u00fcltiger VAD-Handler (Voice Activation Detector)! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid VAD (Voice activation detector) handler! (%o)" + } + }, + { + "translated": "[VoiceRecorder] Starten Sie die Aufnahme! (Ger\u00e4t:% o | Gruppe:% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Start recording! (Device: %o | Group: %o)" + } + }, + { + "translated": "Mikrofon konnte nicht aufgel\u00f6st werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!" + } + }, + { + "translated": "Mikrofon konnte nicht aufgel\u00f6st werden.
Nachricht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve microphone!
Message: " + } + }, + { + "translated": "Konnte kein Mikrofon bekommen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get microphone!" + } + }, + { + "translated": "H\u00f6re auf, aufzunehmen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Stop recording!" + } + }, + { + "translated": "[VoiceRecorder] Mikrofonstrom, aber kein Audiokontext. Warten, bis es initialisiert wird", + "flags": [ + "google-translate" + ], + "key": { + "message": "[VoiceRecorder] Got microphone stream, but havn't a audio context. Waiting until its initialized" + } + }, + { + "translated": "Wieder loslassen (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Release again! (%o)" + } + }, + { + "translated": "Deaktivieren der Codec-Unterst\u00fctzung f\u00fcr", + "flags": [ + "google-translate" + ], + "key": { + "message": "Disabling codec support for " + } + }, + { + "translated": "Codec-Treiber konnte nicht geladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load codec driver" + } + }, + { + "translated": "Codec konnte nicht geladen oder initialisiert werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load or initialize codec " + } + }, + { + "translated": "nicht unterst\u00fctzter Codec", + "flags": [ + "google-translate" + ], + "key": { + "message": "unsupported codec!" + } + }, + { + "translated": "Codec konnte nicht initialisiert werden!\nFehler:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!\nError: %o" + } + }, + { + "translated": "Codec konnte nicht initialisiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not initialize codec!" + } + }, + { + "translated": "Speex Schmalband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Narrowband" + } + }, + { + "translated": "Speex Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Wideband" + } + }, + { + "translated": "Speex Ultra Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra Wideband" + } + }, + { + "translated": "CELT Mono", + "flags": [ + "google-translate" + ], + "key": { + "message": "CELT Mono" + } + }, + { + "translated": "Opus-Stimme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Voice" + } + }, + { + "translated": "Opus-Musik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Opus Music" + } + }, + { + "translated": "Sprachhandler initialisieren, nachdem AudioController initialisiert wurde!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initializing voice handler after AudioController has been initialized!" + } + }, + { + "translated": "Nativen Sprachstrom einrichten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up native voice stream!" + } + }, + { + "translated": "Nativer Codec wird nicht unterst\u00fctzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Native codec isnt supported!" + } + }, + { + "translated": "Audio konnte nicht \u00fcbertragen werden (nicht verbunden)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not transfer audio (not connected)" + } + }, + { + "translated": "Stream hinzuf\u00fcgen (% o)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding stream (%o)!" + } + }, + { + "translated": "Eisangebot konnte nicht erstellt werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not create ice offer!" + } + }, + { + "translated": "Remote-SDP einstellen! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set remote sdp! (%o)" + } + }, + { + "translated": "Fehler beim Anwenden der Remote-Beschreibung:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply remote description: %o" + } + }, + { + "translated": "Remote-Cache-Eis-Kandidat% s:% o konnte nicht hinzugef\u00fcgt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote cached ice candidate %s: %o" + } + }, + { + "translated": "Remote-Eis hinzuf\u00fcgen! (% s |% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add remote ice! (%s | %o)" + } + }, + { + "translated": "Fehler beim Hinzuf\u00fcgen des Remote-Ice-Kandidaten% s:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add remote ice candidate %s: %o" + } + }, + { + "translated": "Cache-Eis fernhalten! (% s |% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cache remote ice! (%s | %o)" + } + }, + { + "translated": "Fehler beim Einrichten der Sprachbr\u00fccke ({}). Wiederverbindung zulassen: {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge ({}). Allow reconnect: {}" + } + }, + { + "translated": "Sprachbr\u00fccke konnte nicht eingerichtet werden (% s). Wiederverbindung zulassen:% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to setup voice bridge (%s). Allow reconnect: %s" + } + }, + { + "translated": "Ich habe Eis Kandidat! Veranstaltung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got ice candidate! Event:" + } + }, + { + "translated": "Angebot erstellt und angenommen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offer created and accepted" + } + }, + { + "translated": "Lokale Beschreibung konnte nicht angewendet werden:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to apply local description: %o" + } + }, + { + "translated": "Angebot senden:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Send offer: %o" + } + }, + { + "translated": "Ich habe einen neuen Datenkanal! (% s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got new data channel! (%s)" + } + }, + { + "translated": "Stimme von einem unbekannten Kunden haben? (ClientID:% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Having voice from unknown client? (ClientID: %o)" + } + }, + { + "translated": "Der Codec% o konnte nicht abgespielt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback codec %o" + } + }, + { + "translated": "Wiedergabe von Client-Audio (% o) (% o) nicht m\u00f6glich", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not playback client's (%o) audio (%o)" + } + }, + { + "translated": "Lokale Stimme endete", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice ended" + } + }, + { + "translated": "Lokale Stimme begann", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local voice started" + } + }, + { + "translated": " Wechseln Sie zu Kanal ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Switch to channel" + } + }, + { + "translated": "Kanal bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit channel" + } + }, + { + "translated": "Ge\u00e4nderte Kanaleigenschaften von Kanal% s:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed channel properties of channel %s: %o" + } + }, + { + "translated": "Kanal l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete channel" + } + }, + { + "translated": "Erstellen Sie einen Musik-Bot", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create music bot" + } + }, + { + "translated": "Bot erfolgreich erstellt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bot successfully created" + } + }, + { + "translated": "Wurde aber erfolgreich erstellt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "But has been successfully created." + } + }, + { + "translated": "Bot konnte nicht erstellt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to create bot" + } + }, + { + "translated": "Erstellen Sie einen Unterkanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create sub channel" + } + }, + { + "translated": "Kanal erstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create channel" + } + }, + { + "translated": "Kanaloptionen: '% o'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel options: '%o'" + } + }, + { + "translated": "Erhaltener Kanalname:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel name: %o" + } + }, + { + "translated": "Das Wiederholen des Abstandhalters hat zu viele Wiederholungen ben\u00f6tigt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Repeating spacer took too much repeats!" + } + }, + { + "translated": "Ausrichten:% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Align: %s" + } + }, + { + "translated": "Eigenschaften (% i) von% s (% i) aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i) of %s (%i)" + } + }, + { + "translated": "Aktualisiereigenschaft% s = '% s' ->% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating property %s = '%s' -> %o" + } + }, + { + "translated": "Kanal-Passwort", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password" + } + }, + { + "translated": "Channel Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel password:" + } + }, + { + "translated": "Lautst\u00e4rke \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change volume" + } + }, + { + "translated": "Zur\u00fccksetzen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reset" + } + }, + { + "translated": "Stornieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Cancel" + } + }, + { + "translated": "OK", + "flags": [ + "google-translate" + ], + "key": { + "message": "OK" + } + }, + { + "translated": "Servergruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Groups" + } + }, + { + "translated": "Zielgruppe konnte nicht aufgel\u00f6st werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve target group!" + } + }, + { + "translated": "Schlie\u00dfen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close" + } + }, + { + "translated": "Start der Mausbewegung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Starting mouse move" + } + }, + { + "translated": "Server-Gruppe festlegen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set server group" + } + }, + { + "translated": "Kanalgruppe einstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set channel group" + } + }, + { + "translated": "Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permissions" + } + }, + { + "translated": " Textchat \u00f6ffnen ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open text chat" + } + }, + { + "translated": "Klopfen Sie Klienten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke client" + } + }, + { + "translated": "Poke message:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke message:
" + } + }, + { + "translated": "Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change description" + } + }, + { + "translated": "Kundenbeschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change client description" + } + }, + { + "translated": "Neue Beschreibung:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New description:
" + } + }, + { + "translated": "Bewegen Sie den Client in Ihren Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move client to your channel" + } + }, + { + "translated": "Kick Client vom Channel", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from channel" + } + }, + { + "translated": "Kickgrund:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick reason:
" + } + }, + { + "translated": "Kick client from server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client fom server" + } + }, + { + "translated": "Client vom Server aus treten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick client from server" + } + }, + { + "translated": "Kundenverbot", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client" + } + }, + { + "translated": "Lautst\u00e4rke \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change Volume" + } + }, + { + "translated": " Namen \u00e4ndern ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name" + } + }, + { + "translated": "Eigene Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change own description" + } + }, + { + "translated": "Eigene Beschreibung in% s \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing own description to %s" + } + }, + { + "translated": "Der Nickname wurde erfolgreich ge\u00e4ndert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname successfully changed" + } + }, + { + "translated": "Spitzname konnte nicht ge\u00e4ndert werden ({})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not change nickname ({})" + } + }, + { + "translated": " Botnamen \u00e4ndern ", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot name" + } + }, + { + "translated": "\u00c4ndern Sie den Musik-Bots-Spitznamen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots nickname" + } + }, + { + "translated": "Neuer Spitzname:
", + "flags": [ + "google-translate" + ], + "key": { + "message": "New nickname:
" + } + }, + { + "translated": "Bot-Beschreibung \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change bot description" + } + }, + { + "translated": "Beschreibung der Musik-Bots \u00e4ndern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change music bots description" + } + }, + { + "translated": "Musik-Panel \u00f6ffnen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Open music panel" + } + }, + { + "translated": "Schnelle URL-Wiedergabe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quick url replay" + } + }, + { + "translated": "Bitte geben Sie die URL ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the URL" + } + }, + { + "translated": "URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "URL:" + } + }, + { + "translated": "Fehler beim Wiederholen der URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to replay url" + } + }, + { + "translated": "Client% o aus Kanal mit Grund% o tritt aus", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kicking client %o from channel with reason %o" + } + }, + { + "translated": "Bot l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bot" + } + }, + { + "translated": "M\u00f6chten Sie {0} wirklich l\u00f6schen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete {0}" + } + }, + { + "translated": "Bist du sicher?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Are you sure?" + } + }, + { + "translated": "OK", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ok" + } + }, + { + "translated": "Fehler beim Aufl\u00f6sen der Kanalberechtigung f\u00fcr den Namen% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel permission for name %o" + } + }, + { + "translated": "Aktualisierte Berechtigungen% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updated permissions %o" + } + }, + { + "translated": "Erhaltene Berechtigungen:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got permissions: %o" + } + }, + { + "translated": "Genehmigung ausgel\u00f6st! %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission triggered! %o" + } + }, + { + "translated": "Ung\u00fcltige Kanalverschiebung (verschiedene Eltern! (% O |% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel move (different parents! (%o|%o)" + } + }, + { + "translated": "Multiselect-Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect channel" + } + }, + { + "translated": "Multiselect-Client", + "flags": [ + "google-translate" + ], + "key": { + "message": "Multiselect client" + } + }, + { + "translated": "Nur Musik:% o | Containermusik:% o | Container local:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music only: %o | Container music: %o | Container local: %o" + } + }, + { + "translated": "Klopfen Sie Kunden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Poke clients" + } + }, + { + "translated": "Verschiebe Kunden in deinen Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Move clients to your channel" + } + }, + { + "translated": "Treten Sie Kunden aus dem Channel", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from channel" + } + }, + { + "translated": "Kick clients fom server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients fom server" + } + }, + { + "translated": "Treten Sie die Clients vom Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Kick clients from server" + } + }, + { + "translated": "Kunden verbieten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban clients" + } + }, + { + "translated": "Bots l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete bots" + } + }, + { + "translated": "M\u00f6chten Sie wirklich l\u00f6schen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do you really want to delete " + } + }, + { + "translated": "Einen neuen Kanal erstellen.\nEigenschaften:% o\nBerechtigungen:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creating a new channel.\nProperties: %o\nPermissions: %o" + } + }, + { + "translated": "Kanal konnte nach der Erstellung nicht aufgel\u00f6st werden. Berechtigungen konnten nicht angewendet werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to resolve channel after creation. Could not apply permissions!" + } + }, + { + "translated": "Kanal {} erfolgreich erstellt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel {} successfully created!" + } + }, + { + "translated": "Wiedergabeton% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "playback sound %o" + } + }, + { + "translated": "Fehlender Ton% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing sound %o" + } + }, + { + "translated": "Verwendung des zwischengespeicherten Puffers:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using cached buffer: %o" + } + }, + { + "translated": "Daten decodieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Decoding data" + } + }, + { + "translated": "Bekam dekodierte Daten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got decoded data" + } + }, + { + "translated": "Audiodaten f\u00fcr% o konnten nicht decodiert werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to decode audio data for %o" + } + }, + { + "translated": "Fehler beim Laden der Audiodatei (Antwortcode% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file. (Response code %o)" + } + }, + { + "translated": "Fehler beim Laden der Audiodatei", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load audio file " + } + }, + { + "translated": "Wiedergabe von% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Replaying %s" + } + }, + { + "translated": "Ihr Browser unterst\u00fctzt decodeAudioData nicht! Verwenden eines Knotens f\u00fcr die Wiedergabe! Dadurch werden die Audioausgabe und die Lautst\u00e4rkeregelung umgangen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Your browser does not support decodeAudioData! Using a node to playback! This bypasses the audio output and volume regulation!" + } + }, + { + "translated": "Du wurdest gesto\u00dfen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked!" + } + }, + { + "translated": "Buchse angeschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Socket connected" + } + }, + { + "translated": "Einloggen...", + "flags": [ + "google-translate" + ], + "key": { + "message": "Logging in..." + } + }, + { + "translated": "Verbindung zu {0} herstellen: {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connecting to {0}:{1}" + } + }, + { + "translated": "Verbindungszeit\u00fcberschreitung ausgel\u00f6st!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect timeout triggered!" + } + }, + { + "translated": "Erhaltener Fehler: (% s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got error: (%s)" + } + }, + { + "translated": "Anfrage trennen", + "flags": [ + "google-translate" + ], + "key": { + "message": "request disconnect" + } + }, + { + "translated": "Verbindung geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection closed" + } + }, + { + "translated": "Nachricht json konnte nicht analysiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not parse message json!" + } + }, + { + "translated": "Fehlender Datentyp!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing data type!" + } + }, + { + "translated": "Unbekannter Befehlstyp% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown command type %o" + } + }, + { + "translated": "Handlungsbefehl '% s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Handling command '%s'" + } + }, + { + "translated": "Json:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Json:" + } + }, + { + "translated": "Fehlender Befehl '% s'", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing command '%s'" + } + }, + { + "translated": "Unzureichende Benutzerberechtigung. Bei Erlaubnis fehlgeschlagen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission " + } + }, + { + "translated": "Unzureichende Benutzerberechtigung. Fehler bei Erlaubnis {}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Insufficient client permissions. Failed on permission {}" + } + }, + { + "translated": "Befehlsausf\u00fchrung f\u00fchrt zu", + "flags": [ + "google-translate" + ], + "key": { + "message": "Command execution results in " + } + }, + { + "translated": "Ung\u00fcltiger Versprechen-Ergebnistyp:% o. Ergebnis:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid promise result type: %o. Result:" + } + }, + { + "translated": "Anmeldefehler", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got login error" + } + }, + { + "translated": "Version konnte nicht abgerufen werden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to get version:" + } + }, + { + "translated": "Ung\u00fcltiger R\u00fcckgabecode! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid return code! (%o)" + } + }, + { + "translated": "Stimme einrichten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Setting up voice" + } + }, + { + "translated": "Verbunden als {0}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connected as {0}" + } + }, + { + "translated": "Ung\u00fcltige Kanalbestellungs-ID!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel order id!" + } + }, + { + "translated": "Ung\u00fcltiger \u00fcbergeordneter Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel parent" + } + }, + { + "translated": "Ich habe% d neue Channels", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d new channels" + } + }, + { + "translated": "% D Kanall\u00f6schungen erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel deletions" + } + }, + { + "translated": "Ung\u00fcltiger Kanal onDelete (Unbekannter Kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel onDelete (Unknown channel)" + } + }, + { + "translated": "% D Kanal versteckt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d channel hides" + } + }, + { + "translated": "Ung\u00fcltiger Kanal beim Ausblenden (unbekannter Kanal)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid channel on hide (Unknown channel)" + } + }, + { + "translated": "{0} erschien von {1} bis {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}" + } + }, + { + "translated": "{0} mit Kanal {1} \u200b\u200bverbunden", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} connected to channel {1}" + } + }, + { + "translated": "{0} erschien von {1} bis {2}, verschoben um {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, moved by {3}" + } + }, + { + "translated": "{0} erschien von {1} bis {2}, getreten von {3} {4}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} appeared from {1} to {2}, kicked by {3}{4}" + } + }, + { + "translated": "Unbekannte Begr\u00fcndung f\u00fcr% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reasonid for %o" + } + }, + { + "translated": "Unbekannter Kunde \u00fcbrig!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left!" + } + }, + { + "translated": "{0} verschwand von {1} nach {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} disappeared from {1} to {2}" + } + }, + { + "translated": "{0} hat den Server verlassen {1}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} left the server{1}" + } + }, + { + "translated": "{0} wurde von {1} vom Server gekickt. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from the server by {1}.{2}" + } + }, + { + "translated": "{0} wurde von {1} aus Ihrem Kanal geworfen. {2}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was kicked from your channel by {1}.{2}" + } + }, + { + "translated": "{0} wurde {1} von {2} gesperrt. {3}", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was banned {1} by {2}.{3}" + } + }, + { + "translated": "Unbekannter Kunde hat Grund gelassen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client left reason!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Client)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Client)!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Channel to)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel to)!" + } + }, + { + "translated": "Unbekannter Client-Umzug (Channel from)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown client move (Channel from)!" + } + }, + { + "translated": "Sie wurden von {3} von Kanal {1} \u200b\u200bnach {2} verschoben.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You was moved by {3} from channel {1} to {2}" + } + }, + { + "translated": "{0} wurde um {3} von Kanal {1} \u200b\u200bnach {2} verschoben.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} was moved from channel {1} to {2} by {3}" + } + }, + { + "translated": "Sie haben von Kanal {1} \u200b\u200bzu {2} gewechselt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You switched from channel {1} to {2}" + } + }, + { + "translated": "{0} hat von Kanal {1} \u200b\u200bzu {2} gewechselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} switched from channel {1} to {2}" + } + }, + { + "translated": "Sie wurden aus dem Kanal {1} \u200b\u200bin den Kanal {2} von {3} {4} geworfen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked out of the channel {1} to channel {2} by {3}{4}" + } + }, + { + "translated": "{0} wurde von Kanal {1} \u200b\u200bin {2} von {3} {4} geworfen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "{0} got kicked from channel {1} to {2} by {3}{4}" + } + }, + { + "translated": "Unbekannte Grund-ID% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown reason id %o" + } + }, + { + "translated": "Unbekannter Kanalzug (Channel)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (Channel)!" + } + }, + { + "translated": "Unbekannter Kanalzug (prev)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (prev)!" + } + }, + { + "translated": "Unbekannter Kanalzug (Eltern)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel move (parent)!" + } + }, + { + "translated": "Unbekannter Kanal bearbeiten (Kanal)!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unknown channel edit (Channel)!" + } + }, + { + "translated": "Private Nachricht von ung\u00fcltigem Client erhalten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got private message from invalid client!" + } + }, + { + "translated": "Es wurde versucht, einen nicht vorhandenen Client zu aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tried to update an non existing client" + } + }, + { + "translated": "Musik-Player-Info f\u00fcr unbekannten oder ung\u00fcltigen Bot erhalten! (ID:% i, Eintrag:% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)" + } + }, + { + "translated": "Verwenden des Info-Managers:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Using info manager: %o" + } + }, + { + "translated": "Hostbanner konnte nicht geladen werden:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to load hostbanner: %o" + } + }, + { + "translated": "Hostbanner wurde geladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hostbanner has been loaded" + } + }, + { + "translated": "Wird geladen...", + "flags": [ + "google-translate" + ], + "key": { + "message": "loading..." + } + }, + { + "translated": "Kein Titel oder keine URL", + "flags": [ + "google-translate" + ], + "key": { + "message": "No title or url" + } + }, + { + "translated": "Spiel konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play" + } + }, + { + "translated": "Spiel konnte nicht ausgef\u00fchrt werden.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute play.
{}" + } + }, + { + "translated": "Fehler beim Ausf\u00fchren der Pause", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause" + } + }, + { + "translated": "Fehler beim Ausf\u00fchren der Pause.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute pause.
{}" + } + }, + { + "translated": "Stopp konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop" + } + }, + { + "translated": "Stopp konnte nicht ausgef\u00fchrt werden.
{}", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute stop.
{}" + } + }, + { + "translated": "Ausf\u00fchrung fehlgeschlagen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute forward" + } + }, + { + "translated": "R\u00fccklauf konnte nicht ausgef\u00fchrt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to execute rewind" + } + }, + { + "translated": "Nicht implementiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented" + } + }, + { + "translated": "Diese Funktion ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function is not implemented yet!" + } + }, + { + "translated": "Eltern:% o | % o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Parents: %o | %o" + } + }, + { + "translated": "Spieler:% o | oo", + "flags": [ + "google-translate" + ], + "key": { + "message": "Player: %o | %o" + } + }, + { + "translated": "Skala:% f => \u00fcbersetzen:% o | %O", + "flags": [ + "google-translate" + ], + "key": { + "message": "Scale: %f => translate: %o | %o" + } + }, + { + "translated": "Erforderlicher Test:% o | % i | % o =>% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Test needed required: %o | %i | %o => %o" + } + }, + { + "translated": "Bekannte unbekannte Berechtigungs-ID (% o /% o (% o))!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got unknown permission id (%o/%o (%o))!" + } + }, + { + "translated": "Berechtigungszuordnung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission mapping" + } + }, + { + "translated": "Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Group " + } + }, + { + "translated": "% i <>% s ->% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "%i <> %s -> %s" + } + }, + { + "translated": "Ich habe% i Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %i permissions" + } + }, + { + "translated": "Ich ben\u00f6tige Berechtigungen, habe aber keine Berechtigungsliste!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got needed permissions but don't have a permission list!" + } + }, + { + "translated": "% D ben\u00f6tigte Berechtigungen.", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got %d needed permissions." + } + }, + { + "translated": "Konnte Perm f\u00fcr ID% s nicht aufl\u00f6sen (% o |% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve perm for id %s (%o|%o)" + } + }, + { + "translated": "Kanalberechtigungen f\u00fcr Kanal% o erhalten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got channel permissions for channel %o" + } + }, + { + "translated": "Fehlendes Kanalberechtigungshandle f\u00fcr angeforderte Kanal-ID% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing channel permission handle for requested channel id %o" + } + }, + { + "translated": "Erteilungserlaubnis% konnte nicht aufgel\u00f6st werden. Neues erstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve grant permission %o. Creating a new one." + } + }, + { + "translated": "Gew\u00fcnschte Berechtigung mit ung\u00fcltigem Schl\u00fcssel angefordert! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Requested needed permission with invalid key! (%o)" + } + }, + { + "translated": "ung\u00fcltige Bestellung!", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid order!" + } + }, + { + "translated": "Gruppenziel konnte nicht aufgel\u00f6st werden! =>% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resolve group target! => %o" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe% o /% o erhalten, aber es ist keine registrierte Gruppe!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but its not a registered group!" + } + }, + { + "translated": "Ich habe Gruppenberechtigungen f\u00fcr Gruppe% o /% o erhalten, wurde aber nie angefordert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got group permissions for group %o/%o, but it was never requested!" + } + }, + { + "translated": "Tab customElements konnte nicht abgelehnt werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not defied tab customElements!" + } + }, + { + "translated": "die Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Settings" + } + }, + { + "translated": "Geben Sie den gew\u00fcnschten Schl\u00fcssel ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type the key you wish" + } + }, + { + "translated": "Schl\u00fcssel% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got key %o" + } + }, + { + "translated": "Kein Ger\u00e4t", + "flags": [ + "google-translate" + ], + "key": { + "message": "No device" + } + }, + { + "translated": "Ger\u00e4t% s (% s):% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got device %s (%s): %s" + } + }, + { + "translated": "Konnte nicht \u00fcber Ger\u00e4ten auflisten!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not enumerate over devices!" + } + }, + { + "translated": "Ger\u00e4teliste konnte nicht abgerufen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not get device list!" + } + }, + { + "translated": "Ausgew\u00e4hltes Mikrofon: id:% o Gruppe:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected microphone device: id: %o group: %o" + } + }, + { + "translated": "Ausgew\u00e4hltes Lautsprecherger\u00e4t: id:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Selected speaker device: id: %o" + } + }, + { + "translated": "Ger\u00e4t konnte nicht ge\u00e4ndert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to change device!" + } + }, + { + "translated": "Verbot% o hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adding ban %o" + } + }, + { + "translated": "Verbot konnte nicht hinzugef\u00fcgt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to add ban" + } + }, + { + "translated": "Bearbeiten der Anleihe% und", + "flags": [ + "google-translate" + ], + "key": { + "message": "Editing ban %o" + } + }, + { + "translated": "Bearbeitungs\u00e4nderungen \u00fcbernehmen% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Apply edit changes %o" + } + }, + { + "translated": "Verbot konnte nicht bearbeitet werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to edit ban" + } + }, + { + "translated": "Gel\u00f6schte Version%", + "flags": [ + "google-translate" + ], + "key": { + "message": "Deleting ban %o" + } + }, + { + "translated": "Verbot konnte nicht gel\u00f6scht werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to delete ban" + } + }, + { + "translated": "Bekam Banliste:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got banlist: %o" + } + }, + { + "translated": "Fehlender Verbotseintrag mit ID% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing ban entry with id %d" + } + }, + { + "translated": "banlist", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banlist" + } + }, + { + "translated": "Suche nach Filter% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Search for filter %s" + } + }, + { + "translated": "Nachricht absetzen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set away message" + } + }, + { + "translated": "Bitte geben Sie die Abwesenheitsnachricht ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter the away message" + } + }, + { + "translated": "Kanal-Codec wird nicht unterst\u00fctzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel codec unsupported" + } + }, + { + "translated": "Dieser Kanal hat einen nicht unterst\u00fctzten Codec.
Sie k\u00f6nnen niemanden innerhalb dieses Kanals sprechen oder h\u00f6ren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This channel has an unsupported codec.
You cant speak or listen to anybody within this channel!" + } + }, + { + "translated": "Token verwenden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use token" + } + }, + { + "translated": "Bitte geben Sie Ihren Token / Privilegschl\u00fcssel ein", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your token/priviledge key" + } + }, + { + "translated": "Toke erfolgreich eingesetzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Toke successfully used!" + } + }, + { + "translated": "Token-Liste ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Token list is not implemented yet!" + } + }, + { + "translated": "Starten Sie die Verbindung zu% s:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Start connection to %s:%d" + } + }, + { + "translated": "Fehler beim Hashing des Passworts", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while hashing password" + } + }, + { + "translated": "Passwort f\u00fcr Hash-Server fehlgeschlagen!
", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to hash server password!
" + } + }, + { + "translated": "Codec-Codetyp wird nicht unterst\u00fctzt!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec encode type not supported!" + } + }, + { + "translated": "Verbindung zum Remote-Host konnte nicht hergestellt werden! Ausnahme", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host! Exception" + } + }, + { + "translated": "Konnte keine Verbindung herstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect" + } + }, + { + "translated": "Verbindung zum Remote-Host konnte nicht hergestellt werden (Verbindung abgelehnt)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not connect to remote host (Connection refused)" + } + }, + { + "translated": "Verbindung zum Remote-Server verloren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote server!" + } + }, + { + "translated": "Die Verbindung wurde vom Remote-Host geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "The connection was closed by remote host" + } + }, + { + "translated": "Verbindungs-Ping-Timeout", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection ping timeout" + } + }, + { + "translated": "Verbindung unterbrochen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connection lost" + } + }, + { + "translated": "Verbindung zum Remote-Host verloren (Ping-Timeout)
Sogar m\u00f6glich?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Lost connection to remote host (Ping timeout)
Even possible?" + } + }, + { + "translated": "Server geschlossen ({0})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed ({0})" + } + }, + { + "translated": "Server geschlossen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server closed" + } + }, + { + "translated": "Server erfordert Passwort", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server requires password" + } + }, + { + "translated": "Server password", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password" + } + }, + { + "translated": "Server Passwort eingeben:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enter server password:" + } + }, + { + "translated": "Sie wurden von {0} {1} vom Server gekickt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got kicked from the server by {0}{1}" + } + }, + { + "translated": "Sie wurden von {0} {1} vom Server gebannt.", + "flags": [ + "google-translate" + ], + "key": { + "message": "You got banned from the server by {0}{1}" + } + }, + { + "translated": "Nicht abgeholte Verbindung trennen!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got uncaught disconnect!" + } + }, + { + "translated": "Typ:% o Daten:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type: %o Data:" + } + }, + { + "translated": "Erstellen Sie einen neuen Dateidownload f\u00fcr% s:% s (Schl\u00fcssel:% s, erwartet% d Bytes).", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create new file download to %s:%s (Key: %s, Expect %d bytes)" + } + }, + { + "translated": "Haben Sie Daten, aber Socket geschlossen?", + "flags": [ + "google-translate" + ], + "key": { + "message": "Got data, but socket closed?" + } + }, + { + "translated": "ein Fehler ist aufgetreten", + "flags": [ + "google-translate" + ], + "key": { + "message": "an error occurent" + } + }, + { + "translated": "unerwartetes Schlie\u00dfen (Remote geschlossen)", + "flags": [ + "google-translate" + ], + "key": { + "message": "unexpected close (remote closed)" + } + }, + { + "translated": "Ung\u00fcltiger Dateilisteneintrag Pfad:% s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry. Path: %s" + } + }, + { + "translated": "Ung\u00fcltiger Dateilisteneintrag beendet. Pfad:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid file list entry finish. Path: " + } + }, + { + "translated": "Symbol% \u200b\u200bs ->% s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download icon %s -> %s" + } + }, + { + "translated": "Download des Symbols {0} fehlgeschlagen. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download icon {0}. ({1})" + } + }, + { + "translated": "Fehler beim Herunterladen des Symbols! (% s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading icon! (%s)" + } + }, + { + "translated": "Fehler beim Anfordern des Downloads f\u00fcr das Symbol {0}. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request download for icon {0}. ({1})" + } + }, + { + "translated": "Symbol hat einen Bildtyp von% o (Medium:% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon has an image type of %o (media: %o)" + } + }, + { + "translated": "Symbol% \u200b\u200bo geladen :)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon %o loaded :)" + } + }, + { + "translated": "Symbol% \u200b\u200bo konnte nicht geladen werden. Grund:% p", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load icon %o. Reason: %p" + } + }, + { + "translated": "Avatar% s wird heruntergeladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Downloading avatar %s" + } + }, + { + "translated": "Avatar% o ->% s konnte nicht heruntergeladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not download avatar %o -> %s" + } + }, + { + "translated": "Avatar kann f\u00fcr {0} nicht heruntergeladen werden. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fail to download avatar for {0}. ({1})" + } + }, + { + "translated": "Fehler beim Herunterladen des Avatars! (% s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Error while downloading avatar! (%s)" + } + }, + { + "translated": "Avatar-Download f\u00fcr {0} konnte nicht angefordert werden. ({1})", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to request avatar download for {0}. ({1})" + } + }, + { + "translated": "avatar has an image type of %o (media: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar has an image type of %o (media: %o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Avatar has an image type of %o (media: %o)" + } + }, + { + "translated": "Avatar konnte f\u00fcr% s nicht geladen werden. Gr\u00fcnde daf\u00fcr", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar for %s. Reason: %s" + } + }, + { + "translated": "Avatar konnte nicht geladen werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not load avatar " + } + }, + { + "translated": "Fehlende erforderliche Wasm-Funktion!
Bitte laden Sie die Seite neu!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing required wasm function!
Please reload the page!" + } + }, + { + "translated": "Verschiebung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Shift" + } + }, + { + "translated": "Alt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Alt" + } + }, + { + "translated": "STRG", + "flags": [ + "google-translate" + ], + "key": { + "message": "CTRL" + } + }, + { + "translated": "Sieg", + "flags": [ + "google-translate" + ], + "key": { + "message": "Win" + } + }, + { + "translated": "unset", + "flags": [ + "google-translate" + ], + "key": { + "message": "unset" + } + }, + { + "translated": "Zu formatierende Nachricht enth\u00e4lt ung\u00fcltigen Index (% o)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message to format contains invalid index (%o)" + } + }, + { + "translated": "Offset:% d Anzahl:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Offset: %d Number: %d" + } + }, + { + "translated": "klar", + "flags": [ + "google-translate" + ], + "key": { + "message": "Clear" + } + }, + { + "translated": "Schlie\u00dfen Sie alle privaten Registerkarten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Close all private tabs" + } + }, + { + "translated": "Namen \u00e4ndern!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Change name!" + } + }, + { + "translated": "Schlie\u00dfbar:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Set closeable: " + } + }, + { + "translated": "Gesangsmeldung konnte nicht gesendet werden (nicht verbunden)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not send chant message (Not connected)" + } + }, + { + "translated": "Erstellen Sie eine neue Verbindung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Create a new connection" + } + }, + { + "translated": "Identit\u00e4t konnte nicht gelesen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity! " + } + }, + { + "translated": "Identit\u00e4tsdatei konnte nicht gelesen werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not read identity file!" + } + }, + { + "translated": "Bitte w\u00e4hlen Sie eine Identit\u00e4t aus!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please select an identity!" + } + }, + { + "translated": "Aktualisierung \u00fcber angezeigt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Updating via shown" + } + }, + { + "translated": "Verbinden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Connect" + } + }, + { + "translated": "Verbot bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit ban" + } + }, + { + "translated": "Verbot hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add ban" + } + }, + { + "translated": "Ja", + "flags": [ + "google-translate" + ], + "key": { + "message": "Yes" + } + }, + { + "translated": "Nein", + "flags": [ + "google-translate" + ], + "key": { + "message": "No" + } + }, + { + "translated": "Fehler beim Initialisieren des \u00dcbersetzungssystems!\nFehler:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialized the translation system!\nError: %o" + } + }, + { + "translated": "Der TeamSpeak-Identit\u00e4tsparser konnte nicht eingerichtet werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not setup the TeamSpeak identity parser!" + } + }, + { + "translated": "Ppt konnte nicht initialisiert werden!\nFehler:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!\nError: %o" + } + }, + { + "translated": "Ppt konnte nicht initialisiert werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Failed to initialize ppt!" + } + }, + { + "translated": "Audio-Controller sp\u00e4ter initialisieren!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Initialize audio controller later!" + } + }, + { + "translated": "Fehlender audio.player.initializeFromGesture", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing audio.player.initializeFromGesture" + } + }, + { + "translated": "PCM-Daten konnten f\u00fcr Codec nicht erneut berechnet werden. Fehler:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not resample PCM data for codec. Error: %o" + } + }, + { + "translated": "PCM-Daten konnten nicht f\u00fcr Codec codiert werden. Fehler:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Could not encode PCM data for codec. Error: %o" + } + }, + { + "translated": "Erforderliche Zeit:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Required time: %d" + } + }, + { + "translated": "Lagerzeit der Arbeiternachricht:% d", + "flags": [ + "google-translate" + ], + "key": { + "message": "Worker message stock time: %d" + } + }, + { + "translated": "Ung\u00fcltiger Arbeitstoken!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Invalid worker token!" + } + }, + { + "translated": "[Codec] Bekannte Antwort des Arbeitnehmers: Erfolg:% o Nachricht:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "[Codec] Got worker init response: Success: %o Message: %o" + } + }, + { + "translated": "R\u00fcckruf f\u00fcr Kost\u00fcm! (%O)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Costume callback! (%o)" + } + }, + { + "translated": "\u00dcbersetzungsdatei von% s erfolgreich initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Successfully initialized up translation file from %s" + } + }, + { + "translated": "Verwalten Sie den virtuellen Server", + "flags": [ + "google-translate" + ], + "key": { + "message": "Manager the Virtual Server" + } + }, + { + "translated": "Bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit" + } + }, + { + "translated": "Servereigenschaften \u00e4ndern% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing server properties %o" + } + }, + { + "translated": "Ge\u00e4nderte Eigenschaften:% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changed properties: %o" + } + }, + { + "translated": "Eigenschaften aktualisieren (% i)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update properties (%i)" + } + }, + { + "translated": "Server Permissions", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server Permissions" + } + }, + { + "translated": "Gruppe aufwenden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend group" + } + }, + { + "translated": "Alle erweitern", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expend all" + } + }, + { + "translated": "Gruppe minimieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse group" + } + }, + { + "translated": "Alles einklappen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Collapse all" + } + }, + { + "translated": "Erlaubnis hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add permission" + } + }, + { + "translated": "Berechtigung entfernen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove permission" + } + }, + { + "translated": "Erlaubnis hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add grant permission" + } + }, + { + "translated": "Berechtigungsbeschreibung anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show permission description" + } + }, + { + "translated": "Nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not implemented!" + } + }, + { + "translated": "Diese Funktion ist noch nicht implementiert!", + "flags": [ + "google-translate" + ], + "key": { + "message": "This function isnt implemented yet!" + } + }, + { + "translated": "Kopieren Sie den Berechtigungsnamen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Copy permission name" + } + }, + { + "translated": "Es wurde versucht, eine nicht bekannte Berechtigung zu bearbeiten! (% s)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Attempted to edit a not known permission! (%s)" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Kanal-ID f\u00fcr die Aktion des Berechtigungseditors!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected channel id for permission editor action!" + } + }, + { + "translated": "ung\u00fcltiger Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "invalid channel" + } + }, + { + "translated": "Berechtigung% s mit Eigenschaften hinzugef\u00fcgt:% o% o% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %s with properties: %o %o %o" + } + }, + { + "translated": "Berechtigung% s wurde entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed permission %s" + } + }, + { + "translated": "Zuschuss von% o f\u00fcr% s hinzugef\u00fcgt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added grant of %o for %s" + } + }, + { + "translated": "Berechtigungsberechtigung f\u00fcr% s entfernt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Removed grant permission for %s" + } + }, + { + "translated": "Berechtigung% o mit Eigenschaften hinzugef\u00fcgt:% o% o% o", + "flags": [ + "google-translate" + ], + "key": { + "message": "Added permission %o with properties: %o %o %o" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Gruppen-ID f\u00fcr Berechtigungseditor-Aktion!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor action!" + } + }, + { + "translated": "Fehlende ausgew\u00e4hlte Gruppen-ID f\u00fcr den Berechtigungseditor!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Missing selected group id for permission editor!" + } + }, + { + "translated": "Die Zielabtastrate liegt au\u00dferhalb des Bereichs [3000, 384000].", + "flags": [ + "google-translate" + ], + "key": { + "message": "The target sample rate is outside the range [3000, 384000]." + } + }, + { + "translated": "Leerer Puffer als Eingabe erhalten! Leere Ausgabe zur\u00fcckgeben!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Received empty buffer as input! Returning empty output!" + } + }, + { + "translated": "Remote-Adresse und Port:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote address and port:" + } + }, + { + "translated": "Server-Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server password:" + } + }, + { + "translated": "Spitzname:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname:" + } + }, + { + "translated": "Identit\u00e4tseinstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Identity Settings" + } + }, + { + "translated": "Forumkonto", + "flags": [ + "google-translate" + ], + "key": { + "message": "Forum Account" + } + }, + { + "translated": "TeamSpeak", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeamSpeak" + } + }, + { + "translated": "Spitzname (nur zu Debug-Zwecken!)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname (Debug purposes only!)" + } + }, + { + "translated": "Bitte geben Sie Ihre exportierte TS3-Identit\u00e4tszeichenfolge ein oder w\u00e4hlen Sie Ihre exportierte Identit\u00e4t aus", + "flags": [ + "google-translate" + ], + "key": { + "message": "Please enter your exported TS3 Identity string bellow or select your exported Identity" + } + }, + { + "translated": "Sie verwenden Ihr Forumkonto als Best\u00e4tigung", + "flags": [ + "google-translate" + ], + "key": { + "message": "You're using your forum account as verification" + } + }, + { + "translated": "Dies ist nur zum Debuggen und verwendet den Namen als eindeutige Kennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "This is just for debug and uses the name as unique identifier" + } + }, + { + "translated": "Name:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name:" + } + }, + { + "translated": "Passwort:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Password:" + } + }, + { + "translated": "Thema:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Topic:" + } + }, + { + "translated": "Beschreibung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description:" + } + }, + { + "translated": "Standard", + "flags": [ + "google-translate" + ], + "key": { + "message": "Standard" + } + }, + { + "translated": "Kanaltyp", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Type" + } + }, + { + "translated": "Tempor\u00e4r", + "flags": [ + "google-translate" + ], + "key": { + "message": "Temporary" + } + }, + { + "translated": "Semi-Permanent", + "flags": [ + "google-translate" + ], + "key": { + "message": "Semi-Permanent" + } + }, + { + "translated": "Dauerhaft", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permanent" + } + }, + { + "translated": "Standardkanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Channel" + } + }, + { + "translated": "Diesen Kanal sortieren nach:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Sort this channel after:" + } + }, + { + "translated": "Ben\u00f6tigte Gespr\u00e4chskraft:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Talk Power:" + } + }, + { + "translated": "Audio", + "flags": [ + "google-translate" + ], + "key": { + "message": "Audio" + } + }, + { + "translated": "Voreinstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Presets" + } + }, + { + "translated": "Voice Mobile", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Mobile" + } + }, + { + "translated": "Voice Desktop", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Desktop" + } + }, + { + "translated": "Musik", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music" + } + }, + { + "translated": "Brauch", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom" + } + }, + { + "translated": "Benutzerdefinierte Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Custom Settings" + } + }, + { + "translated": "Codec:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec:" + } + }, + { + "translated": "Speex Ultra-Wideband", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speex Ultra-Wideband" + } + }, + { + "translated": "Qualit\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Quality:" + } + }, + { + "translated": "Regelm\u00e4\u00dfig ben\u00f6tigte Kr\u00e4fte:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular needed powers:" + } + }, + { + "translated": "Beitreten:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Join:" + } + }, + { + "translated": "Aussicht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "View:" + } + }, + { + "translated": "Abonnieren:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribe:" + } + }, + { + "translated": "Desc. Aussicht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Desc. view:" + } + }, + { + "translated": "\u00c4ndern:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Modify:" + } + }, + { + "translated": "L\u00f6schen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete:" + } + }, + { + "translated": "Erforderliche Befugnisse f\u00fcr die Datei\u00fcbertragung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "File transfer needed powers:" + } + }, + { + "translated": "Erweitert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Advanced" + } + }, + { + "translated": "Andere Einstellungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Other Settings" + } + }, + { + "translated": "Phonetischer Name:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Phonetic Name:" + } + }, + { + "translated": "Verz\u00f6gerung l\u00f6schen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay:" + } + }, + { + "translated": "Sprachdaten verschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data encrypted" + } + }, + { + "translated": "Max Benutzer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Max users" + } + }, + { + "translated": "Unbegrenzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unlimited" + } + }, + { + "translated": "Begrenzt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Limited" + } + }, + { + "translated": "Family Max Benutzer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Family Max users" + } + }, + { + "translated": "Vererbt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Inherited" + } + }, + { + "translated": "gepr\u00fcft", + "flags": [ + "google-translate" + ], + "key": { + "message": "checked" + } + }, + { + "translated": "Maximale Anzahl Kunden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Maximum Clients:" + } + }, + { + "translated": "Reservierte Slots:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reserved slots:" + } + }, + { + "translated": "Willkommensnachricht:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Welcome Message:" + } + }, + { + "translated": "Wirt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host" + } + }, + { + "translated": "Bindung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Binding" + } + }, + { + "translated": "Wirt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host:" + } + }, + { + "translated": "Hafen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Port:" + } + }, + { + "translated": "Hinweis: Diese Einstellungen erfordern einen Neustart des virtuellen Servers, um wirksam zu werden!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Note: These settings require a virtual server restart to take effect!" + } + }, + { + "translated": "Host-Nachricht", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host message" + } + }, + { + "translated": "Botschaft:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message:" + } + }, + { + "translated": "Nachrichtenmodus:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Message Mode:" + } + }, + { + "translated": "Keine Nachricht", + "flags": [ + "google-translate" + ], + "key": { + "message": "No message" + } + }, + { + "translated": "Nachricht im Protokoll anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message in log" + } + }, + { + "translated": "Nachricht als modal anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal" + } + }, + { + "translated": "Nachricht als modal anzeigen und Verbindung mit dem Client trennen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show message as modal and disconnect the client" + } + }, + { + "translated": "Host-Banner", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host banner" + } + }, + { + "translated": "Banner-Gfx-URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Banner Gfx URL:" + } + }, + { + "translated": "Gfx-Intervall:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Gfx Interval:" + } + }, + { + "translated": "Gr\u00f6\u00dfe \u00e4ndern:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Resize:" + } + }, + { + "translated": "Nicht einstellen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Do not adjust" + } + }, + { + "translated": "Passen Sie das Seitenverh\u00e4ltnis an, aber ignorieren Sie es", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust but ignore ratio aspect" + } + }, + { + "translated": "Passen Sie das Seitenverh\u00e4ltnis an und halten Sie es", + "flags": [ + "google-translate" + ], + "key": { + "message": "Adjust and keep ratio aspect" + } + }, + { + "translated": "Host-Schaltfl\u00e4che", + "flags": [ + "google-translate" + ], + "key": { + "message": "Host Button" + } + }, + { + "translated": "Tooltip:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Tooltip:" + } + }, + { + "translated": "Icon-URL:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Icon URL:" + } + }, + { + "translated": "Transfers", + "flags": [ + "google-translate" + ], + "key": { + "message": "Transfers" + } + }, + { + "translated": "Hochladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload" + } + }, + { + "translated": "Bandbreitenlimit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bandwidth Limit:" + } + }, + { + "translated": "Bytes / s", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bytes/s" + } + }, + { + "translated": "Upload-Quote:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Upload Quota:" + } + }, + { + "translated": "MiB", + "flags": [ + "google-translate" + ], + "key": { + "message": "MiB" + } + }, + { + "translated": "Herunterladen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download" + } + }, + { + "translated": "Download-Quote:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Download Quota:" + } + }, + { + "translated": "Anti-Flood", + "flags": [ + "google-translate" + ], + "key": { + "message": "Anti-Flood" + } + }, + { + "translated": "Reduzierte Punkte pro Tick:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reduced points per tick:" + } + }, + { + "translated": "Erforderliche Punkte zum Blockieren von Befehlen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block commands:" + } + }, + { + "translated": "F\u00fcr das Blockieren der IP ben\u00f6tigte Punkte:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Points needed to block IP:" + } + }, + { + "translated": "Sicherheit", + "flags": [ + "google-translate" + ], + "key": { + "message": "Security" + } + }, + { + "translated": "Ben\u00f6tigte Sicherheitsstufe:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Needed Security Level:" + } + }, + { + "translated": "Kanalsprachdatenverschl\u00fcsselung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel voice data encryption:" + } + }, + { + "translated": "Pro Kanal einzeln bearbeiten", + "flags": [ + "google-translate" + ], + "key": { + "message": "Edit per channel individually" + } + }, + { + "translated": "Weltweit deaktiviert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally disabled" + } + }, + { + "translated": "Weltweit aktiviert (empfohlen)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Globally enabled (recommended)" + } + }, + { + "translated": "Sonstiges", + "flags": [ + "google-translate" + ], + "key": { + "message": "Misc" + } + }, + { + "translated": "Standardgruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default groups" + } + }, + { + "translated": "Server-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server group" + } + }, + { + "translated": "Musik-Bot-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Music bot group" + } + }, + { + "translated": "Kanalgruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group" + } + }, + { + "translated": "Channel Admin-Gruppe", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Admin group" + } + }, + { + "translated": "Beschweren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Complain" + } + }, + { + "translated": "Autoban Graf", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Count" + } + }, + { + "translated": "Autoban Zeit", + "flags": [ + "google-translate" + ], + "key": { + "message": "Autoban Time" + } + }, + { + "translated": "Zeit entfernen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove Time" + } + }, + { + "translated": "Minimum Clients ist Kanal vor der Stille:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Minimum clients is channel before silence:" + } + }, + { + "translated": "Lautst\u00e4rkeregler f\u00fcr Priorit\u00e4tslautsprecher:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Priority speaker dim modificator:" + } + }, + { + "translated": "Verz\u00f6gerung f\u00fcr tempor\u00e4re Kan\u00e4le l\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Delete delay for temporary channels" + } + }, + { + "translated": "Serverliste", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server list" + } + }, + { + "translated": "Aktivieren Sie die Berichterstellung f\u00fcr die TeamSpeak-Serverliste", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeamSpeak server list" + } + }, + { + "translated": " Aktivieren Sie das Reporting f\u00fcr die TeaSpeak-Serverliste (TeaSpeak unterst\u00fctzt diese Einstellung nicht)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Enable reporting to the TeaSpeak server list (TeaSpeak does not support this setting)" + } + }, + { + "translated": "Mitteilungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Messages" + } + }, + { + "translated": "Kanal", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel" + } + }, + { + "translated": "Standardthema:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Topic:" + } + }, + { + "translated": "Standardbeschreibung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Default Description" + } + }, + { + "translated": "Klient", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client" + } + }, + { + "translated": "Allgemeines", + "flags": [ + "google-translate" + ], + "key": { + "message": "General" + } + }, + { + "translated": "Noch nicht eingerichtet!", + "flags": [ + "google-translate" + ], + "key": { + "message": "Didnt setuped yet!" + } + }, + { + "translated": "Mikrofon", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone" + } + }, + { + "translated": "Ger\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Device:" + } + }, + { + "translated": "Sprachaktivit\u00e4tserkennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Activity Detection" + } + }, + { + "translated": "Immer aktiv", + "flags": [ + "google-translate" + ], + "key": { + "message": "Always active" + } + }, + { + "translated": "Sprachaktivit\u00e4tserkennung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity detection" + } + }, + { + "translated": "Dr\u00fccken, um zu sprechen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk" + } + }, + { + "translated": "Es gibt keine Einstellungen f\u00fcr eine immer Online-Spracherkennung.", + "flags": [ + "google-translate" + ], + "key": { + "message": "There are no setting entries for an always online voice detection." + } + }, + { + "translated": "Taste zum Sprechen dr\u00fccken:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Push to talk key:" + } + }, + { + "translated": "Nicht initialisiert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uninitialised" + } + }, + { + "translated": "Sprachaktivit\u00e4tsschwelle ( 20 %)", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice activity threshold (20%)" + } + }, + { + "translated": "Redner", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speaker" + } + }, + { + "translated": "Kanalgruppen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel Groups" + } + }, + { + "translated": "Kanalberechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel permissions" + } + }, + { + "translated": "Client-Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client permissions" + } + }, + { + "translated": "Kundennummer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client unique ID:" + } + }, + { + "translated": "Eindeutige ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unique ID:" + } + }, + { + "translated": "Kundendatenbank-ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client database ID:" + } + }, + { + "translated": "Client-Channel-Berechtigungen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Client channel permissions" + } + }, + { + "translated": "\u00c4ndern von Gruppen von", + "flags": [ + "google-translate" + ], + "key": { + "message": "Changing groups of" + } + }, + { + "translated": "Filter:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Filter:" + } + }, + { + "translated": "Nur erteilte Berechtigungen anzeigen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show granted permissions only" + } + }, + { + "translated": "Berechtigungsname", + "flags": [ + "google-translate" + ], + "key": { + "message": "Permission Name" + } + }, + { + "translated": "Wert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Value" + } + }, + { + "translated": "\u00dcberspringen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Skip" + } + }, + { + "translated": "Negieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Negate" + } + }, + { + "translated": "Gew\u00e4hrt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Granted" + } + }, + { + "translated": "Aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update" + } + }, + { + "translated": "Hinzuf\u00fcgen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Add" + } + }, + { + "translated": "L\u00f6schen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remove" + } + }, + { + "translated": "Name / IP / UID / HWID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Name/IP/UID/HWID" + } + }, + { + "translated": "Grund", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason" + } + }, + { + "translated": "Sch\u00f6pfer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Creator" + } + }, + { + "translated": "Erstellt / l\u00e4uft ab", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created / Expires" + } + }, + { + "translated": "Neu laden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reload" + } + }, + { + "translated": "Zeige nur eigene Verbote", + "flags": [ + "google-translate" + ], + "key": { + "message": "Show only own bans" + } + }, + { + "translated": "Eigene Verbote hervorheben", + "flags": [ + "google-translate" + ], + "key": { + "message": "Highlight own bans" + } + }, + { + "translated": "Grund:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Reason:" + } + }, + { + "translated": "Dauer:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration:" + } + }, + { + "translated": "permanent", + "flags": [ + "google-translate" + ], + "key": { + "message": "permanent" + } + }, + { + "translated": "Verbot des Kunden durch", + "flags": [ + "google-translate" + ], + "key": { + "message": "Ban client by" + } + }, + { + "translated": "Spitzname", + "flags": [ + "google-translate" + ], + "key": { + "message": "Nickname" + } + }, + { + "translated": "Verbietet den Client nach seinem aktuellen Spitznamen.
Der derzeitige Spitzname kann nicht verwendet werden, bis das Verbot abgelaufen ist", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his current nickname.
The currently nickname cant be used until the ban expired" + } + }, + { + "translated": "Hardware ID", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID" + } + }, + { + "translated": "Verbietet den Client anhand seiner Hardware-ID.
Die Hardware-ID hat unterschiedliche Bedeutungen, abh\u00e4ngig vom Benutzeragenten
TeaClient: Die Hardware-ID entspricht der MAC-Adresse
TeaWeb: Der TeaSpeak-Webclient hat keine Hardware-ID. Dies ist zuf\u00e4llig
TeamSpeak 3-Client: Die Hardware-ID ist das Ergebnis einiger Hashes von hardwarespezifischen Eigenschaften", + "flags": [ + "google-translate" + ], + "key": { + "message": "Bans the client by his hardware id.
The hardware id has different meanings, depends on the users agent
TeaClient: The hardware id will be equal to the mac address
TeaWeb: The TeaSpeak web client hasn't a hardware id, it will be random
TeamSpeak 3 client: The hardware id will be a result of some hashes from hardware specific properties" + } + }, + { + "translated": "IP Adresse", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP Address" + } + }, + { + "translated": "Erstellt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Created:" + } + }, + { + "translated": "Verfallen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Expire:" + } + }, + { + "translated": "IP:", + "flags": [ + "google-translate" + ], + "key": { + "message": "IP:" + } + }, + { + "translated": "Interpretiere IP / Name als:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Interpret IP/Name as:" + } + }, + { + "translated": "Platzhalter IPv4", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv4" + } + }, + { + "translated": "Wildcard IPv6", + "flags": [ + "google-translate" + ], + "key": { + "message": "Wildcard IPv6" + } + }, + { + "translated": "Feste Zeichenfolge", + "flags": [ + "google-translate" + ], + "key": { + "message": "Fixed string" + } + }, + { + "translated": "Regul\u00e4ren Ausdruck", + "flags": [ + "google-translate" + ], + "key": { + "message": "Regular Expression" + } + }, + { + "translated": "Hardware ID:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Hardware ID:" + } + }, + { + "translated": "Dauer", + "flags": [ + "google-translate" + ], + "key": { + "message": "Duration" + } + }, + { + "translated": "Verwenden Sie dieses Verbot als globales Verbot", + "flags": [ + "google-translate" + ], + "key": { + "message": "Use this ban as a global ban" + } + }, + { + "translated": "Globale Verbote sind Verbote, die sich auf alle Instanzen beziehen.
Dies bedeutet, dass (falls diese Regel auf ein Opfer zutrifft) kein virtueller Server beitreten kann !
Globale Verbote werden standardm\u00e4\u00dfig jeder Server-Admin-Gruppe angezeigt.
konnte aber nur mit Abfragerechten erstellt werden", + "flags": [ + "google-translate" + ], + "key": { + "message": "Global bans are bans which apply instance wide.
This means that (if this rule apply to a victim) cant join any virtual server!
Global bans are by default shown to every server admin group,
but could only be created with query rights" + } + }, + { + "translated": "Keine Musik zu spielen", + "flags": [ + "google-translate" + ], + "key": { + "message": "Not playing any music" + } + }, + { + "translated": "Ausf\u00fchrung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Version:" + } + }, + { + "translated": "Online seit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Online since:" + } + }, + { + "translated": "Volumen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Volume:" + } + }, + { + "translated": "TeaSpeak-Konto:", + "flags": [ + "google-translate" + ], + "key": { + "message": "TeaSpeak Account:" + } + }, + { + "translated": "Servergruppen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Server groups:" + } + }, + { + "translated": "Kanalgruppe:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Channel group:" + } + }, + { + "translated": "Weg", + "flags": [ + "google-translate" + ], + "key": { + "message": "Away" + } + }, + { + "translated": "Lautsprecher / Kopfh\u00f6rer deaktiviert", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones disabled" + } + }, + { + "translated": "Mikrofon ausgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone disabled" + } + }, + { + "translated": "Lautsprecher / Kopfh\u00f6rer stummgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Speakers/Headphones Muted" + } + }, + { + "translated": "Mikrofon stummgeschaltet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Microphone Muted" + } + }, + { + "translated": "Lebenszeit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Livetime:" + } + }, + { + "translated": "Remote Volume:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Remote Volume:" + } + }, + { + "translated": "Lokales Volumen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Local Volume:" + } + }, + { + "translated": "Momentan abgespielt:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Currently replaying:" + } + }, + { + "translated": "Adresse:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Address:" + } + }, + { + "translated": "Art:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Type:" + } + }, + { + "translated": "Betriebszeit:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Uptime:" + } + }, + { + "translated": "Aktuelle Kan\u00e4le:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Channels:" + } + }, + { + "translated": "Aktuelle Kunden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Clients:" + } + }, + { + "translated": "Aktuelle Anfragen:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current Queries:" + } + }, + { + "translated": "Info aktualisieren", + "flags": [ + "google-translate" + ], + "key": { + "message": "Update info" + } + }, + { + "translated": "Codec-Qualit\u00e4t:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Codec Quality:" + } + }, + { + "translated": "Aktuelle Kunden:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Current clients:" + } + }, + { + "translated": "Abonnementstatus:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscription Status:" + } + }, + { + "translated": "Gezeichnet", + "flags": [ + "google-translate" + ], + "key": { + "message": "Subscribed" + } + }, + { + "translated": "Abbestellt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unsubscribed" + } + }, + { + "translated": "Sprachdatenverschl\u00fcsselung:", + "flags": [ + "google-translate" + ], + "key": { + "message": "Voice Data Encryption:" + } + }, + { + "translated": "Unverschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Unencrypted" + } + }, + { + "translated": "Verschl\u00fcsselt", + "flags": [ + "google-translate" + ], + "key": { + "message": "Encrypted" + } + }, + { + "translated": "(Vom Server mit Encrypted \u00fcberschrieben)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Encrypted)" + } + }, + { + "translated": "(Vom Server mit unverschl\u00fcsselt \u00fcberschrieben)", + "flags": [ + "google-translate" + ], + "key": { + "message": "(Overridden by the server with Unencrypted)" + } + }, + { + "translated": "Beschreibung", + "flags": [ + "google-translate" + ], + "key": { + "message": "Description" + } + }, + { + "translated": "Du wurdest von ...", + "flags": [ + "google-translate" + ], + "key": { + "message": "You have been poked by" + } + } + ] +} \ No newline at end of file diff --git a/shared/tsconfig/tsconfig.json b/shared/tsconfig/tsconfig.json index 9b16043b..e4f422ad 100644 --- a/shared/tsconfig/tsconfig.json +++ b/shared/tsconfig/tsconfig.json @@ -3,7 +3,15 @@ "compilerOptions": { "target": "es6", "module": "commonjs", - "sourceMap": true + "sourceMap": true, + "plugins": [ /* ttypescript */ + { + "transform": "../../tools/trgen/ttsc_transformer.js", + "type": "program", + "target_file": "../generated/messages_script.json", + "verbose": true + } + ] }, "exclude": [ "../js/workers" diff --git a/shared/tsconfig/tsconfig_packed.json b/shared/tsconfig/tsconfig_packed.json index 91abde47..75d915dd 100644 --- a/shared/tsconfig/tsconfig_packed.json +++ b/shared/tsconfig/tsconfig_packed.json @@ -6,7 +6,15 @@ "extends": "./tsconfig.json", "compilerOptions": { "module": "none", - "outFile": "../generated/shared.js" + "outFile": "../generated/shared.js", + "plugins": [ /* ttypescript */ + { + "transform": "../../tools/trgen/ttsc_transformer.js", + "type": "program", + "target_file": "../generated/messages_script.json", + "verbose": true + } + ] }, "exclude": [ "../js/workers", diff --git a/build/dtsgen/declarator.ts b/tools/dtsgen/declarator.ts similarity index 96% rename from build/dtsgen/declarator.ts rename to tools/dtsgen/declarator.ts index c44b2ff9..9f381814 100644 --- a/build/dtsgen/declarator.ts +++ b/tools/dtsgen/declarator.ts @@ -252,7 +252,13 @@ generators[SyntaxKind.Constructor] = (settings, stack, node: ts.ConstructorDecla generators[SyntaxKind.FunctionDeclaration] = (settings, stack, node: ts.FunctionDeclaration) => { if(stack.flag_namespace && !has_modifier(node.modifiers, SyntaxKind.ExportKeyword)) return; - return ts.createFunctionDeclaration(node.decorators, append_declare(node.modifiers, !stack.flag_declare), node.asteriskToken, node.name, node.typeParameters, _generate_param_declare(settings, stack, node.parameters), node.type, undefined); + let return_type = node.type; + if(has_modifier(node.modifiers, SyntaxKind.AsyncKeyword)) { + if(!return_type) + return_type = ts.createTypeReferenceNode("Promise", [ts.createIdentifier("any") as any]); + } + + return ts.createFunctionDeclaration(node.decorators, remove_modifier(append_declare(node.modifiers, !stack.flag_declare), SyntaxKind.AsyncKeyword), node.asteriskToken, node.name, node.typeParameters, _generate_param_declare(settings, stack, node.parameters), return_type, undefined); }; diff --git a/build/dtsgen/index.ts b/tools/dtsgen/index.ts similarity index 94% rename from build/dtsgen/index.ts rename to tools/dtsgen/index.ts index 8147d1a7..325c38dd 100644 --- a/build/dtsgen/index.ts +++ b/tools/dtsgen/index.ts @@ -31,6 +31,10 @@ while(args.length > 0) { config_file = args[1]; base_path = path.normalize(path.dirname(config_file)); args = args.slice(2); + } else if(args[0] == "-b" || args[0] == "--base") { + base_path = args[1]; + base_path = path.normalize(base_path); + args = args.slice(2); } else { console.error("Invalid command line option %s", args[0]); process.exit(1); diff --git a/build/dtsgen/test/test_01.ts b/tools/dtsgen/test/test_01.ts similarity index 50% rename from build/dtsgen/test/test_01.ts rename to tools/dtsgen/test/test_01.ts index 3c073af4..2caafd2f 100644 --- a/build/dtsgen/test/test_01.ts +++ b/tools/dtsgen/test/test_01.ts @@ -31,4 +31,17 @@ namespace T { export function Y() {} } +} + +namespace T { + export async function async_void() {} + export async function async_any() : Promise { + return "" as any; + } + export async function async_number() : Promise { + return 0; + } + export async function async_number_string() : Promise { + return 0; + } } \ No newline at end of file diff --git a/build/dtsgen/test/test_02.ts b/tools/dtsgen/test/test_02.ts similarity index 100% rename from build/dtsgen/test/test_02.ts rename to tools/dtsgen/test/test_02.ts diff --git a/build/dtsgen/tsconfig.json b/tools/dtsgen/tsconfig.json similarity index 100% rename from build/dtsgen/tsconfig.json rename to tools/dtsgen/tsconfig.json diff --git a/tools/trgen/bin/tsc.sh b/tools/trgen/bin/tsc.sh new file mode 100755 index 00000000..64142f3c --- /dev/null +++ b/tools/trgen/bin/tsc.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +BASEDIR=$(dirname "$0") +FILE="${BASEDIR}/../compiler.ts" + +npm run dtsgen -- $@ \ No newline at end of file diff --git a/tools/trgen/compiler.ts b/tools/trgen/compiler.ts new file mode 100644 index 00000000..efafcc82 --- /dev/null +++ b/tools/trgen/compiler.ts @@ -0,0 +1,84 @@ +import * as ts from "typescript"; +import * as generator from "./ts_generator"; + +import {readFileSync} from "fs"; +import * as glob from "glob"; +import * as path from "path"; + +const transformer = (context: ts.TransformationContext) => (rootNode: T) => { + return generator.transform({ + use_window: false, + replace_cache: true, + verbose: true + }, context, rootNode as any).node; +}; + + +function compile(fileNames: string[], options: ts.CompilerOptions): void { + const program: ts.Program = ts.createProgram(fileNames, options); + + //(context: TransformationContext) => Transformer; + let emitResult = program.emit(undefined, undefined, undefined, undefined, { + before: [ transformer ] + }); + + let allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); + + allDiagnostics.forEach(diagnostic => { + if (diagnostic.file) { + let { line, character } = diagnostic.file.getLineAndCharacterOfPosition( + diagnostic.start! + ); + let message = ts.flattenDiagnosticMessageText( + diagnostic.messageText, + "\n" + ); + console.log( + `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}` + ); + } else { + console.log( + `${ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}` + ); + } + }); + + let exitCode = emitResult.emitSkipped ? 1 : 0; + console.log(`Process exiting with code '${exitCode}'.`); + process.exit(exitCode); +} + +const config = ts.parseCommandLine(process.argv.slice(2), file => readFileSync(file).toString()); +console.dir(config); +if(config.errors && config.errors.length > 0) { + for(const error of config.errors) + console.log(error.messageText); + process.exit(1); +} + +if(config.options.project) { + const project = ts.readConfigFile(config.options.project, file => readFileSync(file).toString()).config; + const base_path = path.dirname(config.options.project) + "/"; + console.dir(project); + + + const negate_files: string[] = [].concat.apply([], (project.exclude || []).map(file => glob.sync(base_path + file))).map(file => path.normalize(file)); + project.include.forEach(file => { + glob.sync(base_path + file).forEach(_file => { + _file = path.normalize(_file); + for(const n_file of negate_files) { + if(n_file == _file) { + console.log("Skipping %s", _file); + return; + } + } + + config.fileNames.push(_file); + }); + }); + + Object.assign(config.options, project.compilerOptions); + console.log(config.options); +} + +compile(config.fileNames, config.options); \ No newline at end of file diff --git a/tools/trgen/generator.ts b/tools/trgen/generator.ts new file mode 100644 index 00000000..99408f2a --- /dev/null +++ b/tools/trgen/generator.ts @@ -0,0 +1,8 @@ + +export interface TranslationEntry { + filename: string; + line: number; + character: number; + + message: string; +} \ No newline at end of file diff --git a/tools/trgen/index.ts b/tools/trgen/index.ts new file mode 100644 index 00000000..22dd2784 --- /dev/null +++ b/tools/trgen/index.ts @@ -0,0 +1,161 @@ +import * as ts from "typescript"; +import * as ts_generator from "./ts_generator"; +import * as jsrender_generator from "./jsrender_generator"; +import {readFileSync, writeFileSync} from "fs"; +import * as path from "path"; +import * as glob from "glob"; +import {isArray} from "util"; +import * as mkdirp from "mkdirp"; +import {TranslationEntry} from "./generator"; + +console.log("TR GEN!"); + +/* +const files = ["/home/wolverindev/TeaSpeak/TeaSpeak/Web-Client/build/trgen/test/test_01.ts"]; +files.forEach(file => { + let source = ts.createSourceFile( + file, + readFileSync(file).toString(), + ts.ScriptTarget.ES2016, + true + ); + + generator.generate(source); +}); +*/ + +interface Config { + source_files?: string[]; + excluded_files?: string[]; + target_file?: string; + verbose?: boolean; + + base_bath?: string; + file_config?: string; +} + +let config: Config = {}; + +let args = process.argv.slice(2); +while(args.length > 0) { + if(args[0] == "-f" || args[0] == "--file") { + (config.source_files || (config.source_files = [])).push(args[1]); + args = args.slice(2); + } else if(args[0] == "-e" || args[0] == "--exclude") { + (config.excluded_files || (config.excluded_files = [])).push(args[1]); + args = args.slice(2); + } else if(args[0] == "-d" || args[0] == "--destination") { + config.target_file = args[1]; + args = args.slice(2); + } else if(args[0] == "-v" || args[0] == "--verbose") { + config.verbose = true; + args = args.slice(1); + } else if(args[0] == "-c" || args[0] == "--config") { + config.file_config = args[1]; + config.base_bath = path.normalize(path.dirname(config.file_config)) + "/"; + args = args.slice(2); + } else { + console.error("Invalid command line option \"%s\"", args[0]); + process.exit(1); + } +} + +config.base_bath = config.base_bath || ""; + + +if(config.verbose) { + console.log("Base path: " + config.base_bath); + console.log("Input files:"); + for(const file of config.source_files) + console.log(" - " + file); + console.log("Target file: " + config.target_file); +} + +const negate_files: string[] = [].concat.apply([], (config.excluded_files || []).map(file => glob.sync(config.base_bath + file))).map(file => path.normalize(file)); + +let result = ""; + +function print(nodes: ts.Node[] | ts.SourceFile) : string { + if(!isArray(nodes) && nodes.kind == ts.SyntaxKind.SourceFile) + nodes = (nodes).getChildren(); + const dummy_file = ts.createSourceFile( + "dummy_file", + "", + ts.ScriptTarget.ES2016, + false, + ts.ScriptKind.TS + ); + + const printer = ts.createPrinter({ + newLine: ts.NewLineKind.LineFeed + }); + + return printer.printList( + ts.ListFormat.SpaceBetweenBraces | ts.ListFormat.MultiLine | ts.ListFormat.PreferNewLine, + nodes as any, + dummy_file + ); +} + +const translations: TranslationEntry[] = []; +config.source_files.forEach(file => { + if(config.verbose) + console.log("iterating over %s (%s)", file, path.resolve(path.normalize(config.base_bath + file))); + glob.sync(config.base_bath + file).forEach(_file => { + _file = path.normalize(_file); + for(const n_file of negate_files) { + if(n_file == _file) { + console.log("Skipping %s", _file); + return; + } + } + + const file_type = path.extname(_file); + if(file_type == ".ts") { + let source = ts.createSourceFile( + _file, + readFileSync(_file).toString(), + ts.ScriptTarget.ES2016, + true + ); + console.log(print(source)); + + console.log("Compile " + _file); + + const messages = ts_generator.generate(source, {}); + translations.push(...messages); + + /* + messages.forEach(message => { + console.log(message); + }); + + console.log("PRINT!"); + console.log(print(source)); + */ + } else if(file_type == ".html") { + const messages = jsrender_generator.generate({}, { + content: readFileSync(_file).toString(), + name: _file + }); + translations.push(...messages); + /* + messages.forEach(message => { + console.log(message); + }); + */ + } else { + console.log("Unknown file type \"%s\". Skipping file %s", file_type, _file); + } + }); +}); + +if(config.target_file) { + mkdirp(path.normalize(path.dirname(config.base_bath + config.target_file)), error => { + if(error) + throw error; + writeFileSync(config.base_bath + config.target_file, JSON.stringify(translations, null, 2)); + }); +} else { + console.log(JSON.stringify(translations, null, 2)); +} \ No newline at end of file diff --git a/tools/trgen/jsrender_generator.ts b/tools/trgen/jsrender_generator.ts new file mode 100644 index 00000000..6397b0d9 --- /dev/null +++ b/tools/trgen/jsrender_generator.ts @@ -0,0 +1,53 @@ +import {TranslationEntry} from "./generator"; + +export interface Configuration { + +} +export interface File { + content: string; + name: string; +} + +/* Well my IDE hates me and does not support groups. By default with ES6 groups are supported... nvm */ +//const regex = /{{ *tr *(?(("([^"]|\\")*")|('([^']|\\')*')|(`([^`]|\\`)+`)|( *\+ *)?)+) *\/ *}}/; +const regex = /{{ *tr *((("([^"]|\\")*")|('([^']|\\')*')|(`([^`]|\\`)+`)|([\n ]*\+[\n ]*)?)+) *\/ *}}/; +export function generate(config: Configuration, file: File) : TranslationEntry[] { + let result: TranslationEntry[] = []; + + const lines = file.content.split('\n'); + let match: RegExpExecArray; + let base_index = 0; + + while(match = regex.exec(file.content.substr(base_index))) { + let expression = ((match).groups || {})["message_expression"] || match[1]; + //expression = expression.replace(/\n/g, "\\n"); + + let message; + try { + message = eval(expression); + } catch (error) { + console.error("Failed to evaluate expression:\n%s", expression); + base_index += match.index + match[0].length; + continue; + } + + let character = base_index + match.index; + let line; + + for(line = 0; line < lines.length; line++) { + const length = lines[line].length + 1; + if(length > character) break; + character -= length; + } + + result.push({ + filename: file.name, + character: character + 1, + line: line + 1, + message: message + }); + + base_index += match.index + match[0].length; + } + return result; +} \ No newline at end of file diff --git a/tools/trgen/test/test_01.ts b/tools/trgen/test/test_01.ts new file mode 100644 index 00000000..731465d3 --- /dev/null +++ b/tools/trgen/test/test_01.ts @@ -0,0 +1,27 @@ +function tr(message: string) : string { + console.log("Message: " + message); + return message; +} + +const x = tr("yyy"); +function y() { + const y = tr(tr("yyy")); +} + +console.log("XXX: " + tr("XXX")); +console.log("YYY: " + tr("YYY")); + +var z = 1 + 2 + 3; + +debugger; +debugger; +debugger; +debugger; +const zzz = true ? "yyy" : "bbb"; + +const y = ""; +debugger; +debugger; +debugger; +debugger; +const { a } = {a : ""}; \ No newline at end of file diff --git a/tools/trgen/test/test_02.html b/tools/trgen/test/test_02.html new file mode 100644 index 00000000..5f91ace4 --- /dev/null +++ b/tools/trgen/test/test_02.html @@ -0,0 +1,66 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/tools/trgen/ts_generator.ts b/tools/trgen/ts_generator.ts new file mode 100644 index 00000000..02097924 --- /dev/null +++ b/tools/trgen/ts_generator.ts @@ -0,0 +1,296 @@ +import * as ts from "typescript"; +import * as sha256 from "sha256"; +import {SyntaxKind} from "typescript"; +import {TranslationEntry} from "./generator"; + +export function generate(file: ts.SourceFile, config: Configuration) : TranslationEntry[] { + let result: TranslationEntry[] = []; + + file.forEachChild(n => _generate(config, n, result)); + + return result; +} + +function report(node: ts.Node, message: string) { + const sf = node.getSourceFile(); + let { line, character } = sf ? sf.getLineAndCharacterOfPosition(node.getStart()) : {line: -1, character: -1}; + console.log(`${(sf || {fileName: "unknown"}).fileName} (${line + 1},${character + 1}): ${message}`); +} + +function _generate(config: Configuration, node: ts.Node, result: TranslationEntry[]) { + //console.log("Node: %s", SyntaxKind[node.kind]); + + call_analize: + if(ts.isCallExpression(node)) { + const call = node; + const call_name = call.expression["escapedText"] as string; + if(call_name != "tr") break call_analize; + + console.dir(call_name); + + console.log("Parameters: %o", call.arguments.length); + if(call.arguments.length > 1) { + report(call, "Invalid argument count"); + node.forEachChild(n => _generate(config, n, result)); + return; + } + + const object = call.arguments[0]; + if(object.kind != SyntaxKind.StringLiteral) { + report(call, "Invalid argument: " + SyntaxKind[object.kind]); + node.forEachChild(n => _generate(config, n, result)); + return; + } + + console.log("Message: %o", object.text); + + //FIXME + if(config.replace_cache) { + console.log("Update!"); + ts.updateCall(call, call.expression, call.typeArguments, [ts.createLiteral("PENIS!")]); + } + + const { line, character } = node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); + result.push({ + filename: node.getSourceFile().fileName, + line: line, + character: character, + message: object.text + }); + } + + node.forEachChild(n => _generate(config, n, result)); +} +function create_unique_check(source_file: ts.SourceFile, variable: ts.Expression, variables: { name: string, node: ts.Node }[]) : ts.Node[] { + const nodes: ts.Node[] = [], blocked_nodes: ts.Statement[] = []; + + const node_path = (node: ts.Node) => { + const sf = node.getSourceFile(); + let { line, character } = sf ? sf.getLineAndCharacterOfPosition(node.getStart()) : {line: -1, character: -1}; + return `${(sf || {fileName: "unknown"}).fileName} (${line + 1},${character + 1})`; + }; + + const create_error = (variable_name: ts.Expression, variable_path: ts.Expression, other_path: ts.Expression) => { + return [ + ts.createLiteral("Translation with generated name \""), + variable_name, + ts.createLiteral("\" already exists!\nIt has been already defined here: "), + other_path, + ts.createLiteral("\nAttempted to redefine here: "), + variable_path, + ts.createLiteral("\nRegenerate and/or fix your program!") + ].reduce((a, b) => ts.createBinary(a, SyntaxKind.PlusToken, b)); + }; + + let declarations_file: ts.Expression; + const unique_check_label_name = "unique_translation_check"; + + /* initialization */ + { + const declarations = ts.createElementAccess(variable, ts.createLiteral("declared")); + nodes.push(ts.createAssignment(declarations, ts.createBinary(declarations, SyntaxKind.BarBarToken, ts.createAssignment(declarations, ts.createObjectLiteral())))); + + declarations_file = ts.createElementAccess(variable, ts.createLiteral("declared_files")); + nodes.push(ts.createAssignment(declarations_file, ts.createBinary(declarations_file, SyntaxKind.BarBarToken, ts.createAssignment(declarations_file, ts.createObjectLiteral())))); + + variable = declarations; + } + + /* test file already loaded */ + { + const unique_id = sha256(source_file.fileName + " | " + (Date.now() / 1000)); + const property = ts.createElementAccess(declarations_file, ts.createLiteral(unique_id)); + + const if_condition = ts.createBinary(property, SyntaxKind.ExclamationEqualsEqualsToken, ts.createIdentifier("undefined")); + // + let if_then: ts.Block; + { + const elements: ts.Statement[] = []; + + const console = ts.createIdentifier("console.warn"); + elements.push(ts.createCall(console, [], [ts.createLiteral("This file has already been loaded!\nAre you executing scripts twice?") as any]) as any); + elements.push(ts.createBreak(unique_check_label_name)); + + if_then = ts.createBlock(elements); + } + + const if_else = ts.createAssignment(property, ts.createLiteral(unique_id)); + blocked_nodes.push(ts.createIf(if_condition, if_then, if_else as any)); + } + + /* test if variable has been defined somewhere else */ + { + const for_variable_name = ts.createLoopVariable(); + const for_variable_path = ts.createLoopVariable(); + const for_declaration = ts.createVariableDeclarationList([ts.createVariableDeclaration(ts.createObjectBindingPattern([ + ts.createBindingElement(undefined, "name", for_variable_name, undefined), + ts.createBindingElement(undefined, "path", for_variable_path, undefined)]) + , undefined, undefined)]); + + let for_block: ts.Statement; + { //Create the for block + const elements: ts.Statement[] = []; + + + const property = ts.createElementAccess(variable, for_variable_name); + const if_condition = ts.createBinary(property, SyntaxKind.ExclamationEqualsEqualsToken, ts.createIdentifier("undefined")); + + // + const if_then = ts.createThrow(create_error(for_variable_name, for_variable_path, property)); + const if_else = ts.createAssignment(property, for_variable_path); + const if_valid = ts.createIf(if_condition, if_then, if_else as any); + + elements.push(if_valid); + + for_block = ts.createBlock(elements); + } + + let block = ts.createForOf(undefined, + for_declaration, ts.createArrayLiteral( + [...variables.map(e => ts.createObjectLiteral([ + ts.createPropertyAssignment("name", ts.createLiteral(e.name)), + ts.createPropertyAssignment("path", ts.createLiteral(node_path(e.node))) + ])) + ]) + , for_block); + block = ts.addSyntheticLeadingComment(block, SyntaxKind.MultiLineCommentTrivia, "Auto generated helper for testing if the translation keys are unique", true); + blocked_nodes.push(block); + } + return [...nodes, ts.createLabel(unique_check_label_name, ts.createBlock(blocked_nodes))]; +} + +export function transform(config: Configuration, context: ts.TransformationContext, node: ts.SourceFile) : TransformResult { + const cache: VolatileTransformConfig = {} as any; + cache.translations = []; + + //Initialize nodes + const extra_nodes: ts.Node[] = []; + { + cache.nodes = {} as any; + if(config.use_window) { + const window = ts.createIdentifier("window"); + let translation_map = ts.createPropertyAccess(window, ts.createIdentifier("_translations")); + const new_translations = ts.createAssignment(translation_map, ts.createObjectLiteral()); + + let translation_map_init: ts.Expression = ts.createBinary(translation_map, ts.SyntaxKind.BarBarToken, new_translations); + translation_map_init = ts.createParen(translation_map_init); + + cache.nodes = { + translation_map: translation_map, + translation_map_init: translation_map_init + }; + } else { + const variable_name = "_translations"; + const variable_map = ts.createIdentifier(variable_name); + + const inline_if = ts.createBinary(ts.createBinary(ts.createTypeOf(variable_map), SyntaxKind.ExclamationEqualsEqualsToken, ts.createLiteral("undefined")), ts.SyntaxKind.BarBarToken, ts.createAssignment(variable_map, ts.createObjectLiteral())); + + cache.nodes = { + translation_map: variable_map, + translation_map_init: variable_map + }; + + //ts.createVariableDeclarationList([ts.createVariableDeclaration(variable_name)], ts.NodeFlags.Let) + extra_nodes.push(inline_if); + } + } + + const generated_names: { name: string, node: ts.Node }[] = []; + cache.name_generator = (config, node, message) => { + const characters = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + let name = ""; + while(name.length < 8) { + const char = characters[Math.floor(Math.random() * characters.length)]; + name = name + char; + if(name[0] >= '0' && name[0] <= '9') + name = name.substr(1) || ""; + } + + //FIXME + //if(generated_names.indexOf(name) != -1) + // return cache.name_generator(config, node, message); + generated_names.push({name: name, node: node}); + return name; + }; + + function visit(node: ts.Node): ts.Node { + node = ts.visitEachChild(node, visit, context); + return replace_processor(config, cache, node); + } + node = ts.visitNode(node, visit); + extra_nodes.push(...create_unique_check(node, cache.nodes.translation_map_init, generated_names)); + + node = ts.updateSourceFileNode(node, [...(extra_nodes as any[]), ...node.statements], node.isDeclarationFile, node.referencedFiles, node.typeReferenceDirectives, node.hasNoDefaultLib, node.referencedFiles); + + const result: TransformResult = {} as any; + result.node = node; + result.translations = cache.translations; + return result; +} + +export function replace_processor(config: Configuration, cache: VolatileTransformConfig, node: ts.Node) : ts.Node { + if(config.verbose) + console.log("Process %s", SyntaxKind[node.kind]); + if(ts.isCallExpression(node)) { + const call = node; + const call_name = call.expression["escapedText"] as string; + if(call_name != "tr") return node; + + if(config.verbose) { + console.dir(call_name); + console.log("Parameters: %o", call.arguments.length); + } + if(call.arguments.length > 1) { + report(call, "Invalid argument count"); + return node; + } + + const object = call.arguments[0]; + if(object.kind != SyntaxKind.StringLiteral) { + report(call, "Invalid argument: " + SyntaxKind[object.kind]); + return node; + } + + if(config.verbose) + console.log("Message: %o", object.text || object.getText()); + + const variable_name = ts.createIdentifier(cache.name_generator(config, node, object.text || object.getText())); + const variable_init = ts.createPropertyAccess(cache.nodes.translation_map_init, variable_name); + + const variable = ts.createPropertyAccess(cache.nodes.translation_map, variable_name); + const new_variable = ts.createAssignment(variable, call); + + const source_file = node.getSourceFile(); + let { line, character } = source_file ? source_file.getLineAndCharacterOfPosition(node.getStart()) : {line: -1, character: -1}; + + cache.translations.push({ + message: object.text || object.getText(), + line: line, + character: character, + filename: (source_file || {fileName: "unknown"}).fileName + }); + + return ts.createBinary(variable_init, ts.SyntaxKind.BarBarToken, new_variable); + } + return node; +} +export interface Configuration { + use_window?: boolean; + replace_cache?: boolean; + verbose?: boolean; +} + +export interface TransformResult { + node: ts.SourceFile; + translations: TranslationEntry[]; +} + +interface VolatileTransformConfig { + nodes: { + translation_map: ts.Expression; + translation_map_init: ts.Expression; + }; + + name_generator: (config: Configuration, node: ts.Node, message: string) => string; + translations: TranslationEntry[]; +} \ No newline at end of file diff --git a/tools/trgen/tsconfig.json b/tools/trgen/tsconfig.json new file mode 100644 index 00000000..35468e62 --- /dev/null +++ b/tools/trgen/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "moduleResolution": "node", + "module": "commonjs", + "lib": ["es6"], + + "typeRoots": [], + "types": [] + }, + "files": [ + "generator.ts", + "index.ts" + ] +} \ No newline at end of file diff --git a/tools/trgen/ttsc_transformer.ts b/tools/trgen/ttsc_transformer.ts new file mode 100644 index 00000000..7bc58503 --- /dev/null +++ b/tools/trgen/ttsc_transformer.ts @@ -0,0 +1,67 @@ +import * as ts from "typescript"; +import * as ts_generator from "./ts_generator"; +import * as path from "path"; +import * as mkdirp from "mkdirp"; + +import {PluginConfig} from "ttypescript/lib/PluginCreator"; +import {writeFileSync} from "fs"; +import {TranslationEntry} from "./generator"; + +interface Config { + target_file?: string; + verbose?: boolean; +} + +//(program: ts.Program, config?: PluginConfig) => ts.TransformerFactory +let process_config: Config; +export default function(program: ts.Program, config?: PluginConfig) : (context: ts.TransformationContext) => (sourceFile: ts.SourceFile) => ts.SourceFile { + process_config = config as any || {}; + + const base_path = path.dirname(program.getCompilerOptions().project || program.getCurrentDirectory()); + if(process_config.verbose) { + console.log("TRGen transformer called"); + console.log("Base path: %s", base_path); + } + + process.on('exit', function () { + const target = path.isAbsolute(process_config.target_file) ? process_config.target_file : path.join(base_path, process_config.target_file); + if(process_config.target_file) { + if(process_config.verbose) + console.log("Writing translation file to " + target); + + mkdirp.sync(path.dirname(target)); + writeFileSync(target, JSON.stringify(translations, null, 2)); + } + }); + + return ctx => transformer(ctx) as any; +} + +const translations: TranslationEntry[] = []; +const transformer = (context: ts.TransformationContext) => +(rootNode: ts.Node) => { + const handler = (rootNode: ts.Node) => { + if(rootNode.kind == ts.SyntaxKind.Bundle) { + const bundle = rootNode as ts.Bundle; + const result = []; + for(const file of bundle.sourceFiles) + result.push(handler(file)); + return ts.updateBundle(bundle, result as any, bundle.prepends as any); + + } else if(rootNode.kind == ts.SyntaxKind.SourceFile) { + const file = rootNode as ts.SourceFile; + + console.log("Processing " + file.fileName); + const result = ts_generator.transform({ + use_window: false, + replace_cache: true + }, context, file); + translations.push(...result.translations); + return result.node; + } else { + console.warn("Invalid transform input: %s", ts.SyntaxKind[rootNode.kind]); + } + }; + + return handler(rootNode); +}; \ No newline at end of file diff --git a/tools/trmanager/index.html b/tools/trmanager/index.html new file mode 100644 index 00000000..ebc0c722 --- /dev/null +++ b/tools/trmanager/index.html @@ -0,0 +1,10 @@ + + + + + Translation Manager + + +
This needs some improvements
+ + \ No newline at end of file diff --git a/vendor/bbcode b/vendor/bbcode index fafda400..7b931ed6 160000 --- a/vendor/bbcode +++ b/vendor/bbcode @@ -1 +1 @@ -Subproject commit fafda400bc654848531f8aa163b6cac7cc7abebe +Subproject commit 7b931ed61cf265937dc742579f9070e7c4e50775