1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2025-01-12 04:23:09 +02:00

shrinking release package, by removing unused runtime translations

This commit is contained in:
Patrik J. Braun 2019-12-31 17:27:38 +01:00
parent f6a472d9a6
commit 500253148a
8 changed files with 381 additions and 174 deletions

View File

@ -1,12 +1,17 @@
import * as gulp from 'gulp';
import * as fs from 'fs';
import {promises as fsp} from 'fs';
import * as path from 'path';
import * as util from 'util';
import * as zip from 'gulp-zip';
import * as ts from 'gulp-typescript';
import * as xml2js from 'xml2js';
import * as child_process from 'child_process';
// @ts-ignore
import * as jeditor from 'gulp-json-editor';
import {XLIFF} from 'xlf-google-translate';
const exec = require('child_process').exec;
const execPr = util.promisify(child_process.exec);
const translationFolder = 'translate';
const tsBackendProject = ts.createProject('tsconfig.json');
@ -45,10 +50,79 @@ const handleError = (cb: (err: any) => void) => {
cb(err);
};
};
const createDynamicTranslationFile = async (language: string) => {
// load
const folder = './src/frontend/' + translationFolder;
const data: string = await fsp.readFile(path.join(folder, `messages.${language}.xlf`), 'utf-8');
const translationXml: XLIFF.Root = await xml2js.parseStringPromise(data);
const createFrontendTask = (type: string, script: string) => {
gulp.task(type, (cb) => {
exec(script, handleError(cb));
// clean translations, keep only .ts transaltions
const hasTsTranslation = (cg: XLIFF.ContextGroup) =>
cg.context.findIndex((c: any) => c.$['context-type'] === 'sourcefile' && c._.endsWith('.ts')) !== -1;
const translations = translationXml.xliff.file[0].body[0]['trans-unit'];
const filtered = translations.filter(tr => tr['context-group'].findIndex(hasTsTranslation) !== -1);
filtered.forEach(tr => delete tr['context-group']);
translationXml.xliff.file[0].body[0]['trans-unit'] = filtered;
// save
const builder = new xml2js.Builder({trim: true, normalize: true});
const xml = builder.buildObject(translationXml);
await fsp.writeFile(path.join(folder, `ts-only-msg.${language}.xlf`), xml);
};
const removeDynamicTranslationFile = async (language: string) => {
const translationFile = path.join('./src/frontend/', translationFolder, `ts-only-msg.${language}.xlf`);
fsp.unlink(translationFile);
};
const setDynTransFileAtAppModule = async (language: string) => {
const file = './src/frontend/app/app.module.ts';
let data: string = await fsp.readFile(file, 'utf-8');
const from = 'messages.${locale}.xlf';
const to = `ts-only-msg.${language}.xlf`;
data = data.replace(from, to);
await fsp.writeFile(file, data);
};
const resetAppModule = async (language: string) => {
const file = './src/frontend/app/app.module.ts';
let data: string = await fsp.readFile(file, 'utf-8');
const from = 'messages.${locale}.xlf';
const to = `ts-only-msg.${language}.xlf`;
data = data.replace(to, from);
await fsp.writeFile(file, data);
};
const createFrontendTask = (type: string, language: string, script: string) => {
gulp.task(type, async (cb) => {
let error;
try {
// TODO: remove this once i18n-pollify is removed from the project
// Adding filtered translation as webpack would pack all translations into the created release
await createDynamicTranslationFile(language);
await setDynTransFileAtAppModule(language);
const {stdout, stderr} = await execPr(script);
console.log(stdout);
console.error(stderr);
} catch (e) {
console.error(e);
error = e;
} finally {
try {
await resetAppModule(language);
} catch (e) {
}
try {
await removeDynamicTranslationFile(language);
} catch (e) {
}
cb(error);
}
});
};
@ -85,13 +159,13 @@ gulp.task('build-frontend', (() => {
return l !== 'en';
});
const tasks = [];
createFrontendTask('build-frontend-release default',
createFrontendTask('build-frontend-release default', 'en',
'ng build --aot --prod --output-path=./release/dist --no-progress --i18n-locale=en' +
' --i18n-format xlf --i18n-file src/frontend/' + translationFolder + '/messages.en.xlf' +
' --i18n-missing-translation warning');
tasks.push('build-frontend-release default');
for (let i = 0; i < languages.length; i++) {
createFrontendTask('build-frontend-release ' + languages[i],
createFrontendTask('build-frontend-release ' + languages[i], languages[i],
'ng build --aot --prod --output-path=./release/dist/' + languages[i] +
' --no-progress --i18n-locale=' + languages[i] +
' --i18n-format xlf --i18n-file src/frontend/' + translationFolder + '/messages.' + languages[i] + '.xlf' +
@ -105,7 +179,7 @@ gulp.task('copy-static', function () {
return gulp.src([
'src/backend/model/diagnostics/blank.jpg',
'README.md',
// 'package-lock.json', should not add, it keeps optional packages optional even with --force-opt-packages.
// 'package-lock.json', should not add, it keeps optional packages optional even with --force-opt-packages.
'LICENSE'], {base: '.'})
.pipe(gulp.dest('./release'));
});
@ -172,12 +246,12 @@ const simpleBuild = (isProd: boolean) => {
if (isProd) {
cmd += ' --prod --no-extract-licenses ';
}
createFrontendTask('build-frontend default', cmd + '--output-path=./dist --no-progress --no-progress --i18n-locale en' +
createFrontendTask('build-frontend default', 'en', cmd + '--output-path=./dist --no-progress --no-progress --i18n-locale en' +
' --i18n-format=xlf --i18n-file=src/frontend/' + translationFolder + '/messages.en.xlf' + ' --i18n-missing-translation warning');
tasks.push('build-frontend default');
if (!process.env.CI) { // don't build languages if running in CI
for (let i = 0; i < languages.length; i++) {
createFrontendTask('build-frontend ' + languages[i], cmd +
createFrontendTask('build-frontend ' + languages[i], languages[i], cmd +
'--output-path=./dist/' + languages[i] +
' --no-progress --i18n-locale ' + languages[i] +
' --i18n-format=xlf --i18n-file=src/frontend/' + translationFolder +
@ -188,31 +262,59 @@ const simpleBuild = (isProd: boolean) => {
return gulp.series(...tasks);
};
gulp.task('extract-locale', (cb) => {
gulp.task('extract-locale', async (cb) => {
console.log('creating source translation file: locale.source.xlf');
exec('ng xi18n --out-file=./../../locale.source.xlf --i18n-format=xlf --i18n-locale=en',
{maxBuffer: 1024 * 1024}, (error: any, stdOut: string, stdErr: string) => {
console.log(stdOut);
console.log(stdErr);
if (error) {
return cb(error);
}
exec('ngx-extractor -i src/frontend/**/*.ts -f xlf --out-file locale.source.xlf',
handleError(cb));
});
try {
{
const {stdout, stderr} = await execPr('ng xi18n --out-file=./../../locale.source.xlf --i18n-format=xlf --i18n-locale=en',
{maxBuffer: 1024 * 1024});
console.log(stdout);
console.error(stderr);
}
{
const {stdout, stderr} = await execPr('ngx-extractor -i src/frontend/**/*.ts -f xlf --out-file locale.source.xlf');
console.log(stdout);
console.error(stderr);
}
cb();
} catch (e) {
console.error(e);
return cb(e);
}
});
const translate = (list: any[], cb: (err: any) => void) => {
const localsStr = '"[\\"' + list.join('\\",\\"') + '\\"]"';
exec('xlf-google-translate --source-lang="en" --source-file="./locale.source.xlf" --destination-folder="./src/frontend/"' +
translationFolder + ' --destination-languages=' + localsStr,
handleError(cb));
const translate = async (list: any[], cb: (err?: any) => void) => {
try {
const localsStr = '"[\\"' + list.join('\\",\\"') + '\\"]"';
const {stdout, stderr} = await execPr('xlf-google-translate ' +
'--source-lang="en" ' +
'--source-file="./locale.source.xlf" ' +
'--destination-filename="messages" ' +
'--destination-folder="./src/frontend/"' + translationFolder + ' --destination-languages=' + localsStr);
console.log(stdout);
console.error(stderr);
cb();
} catch (e) {
console.error(e);
return cb(e);
}
};
const merge = (list: any[], cb: (err: any) => void) => {
const localsStr = '"[\\"' + list.join('\\",\\"') + '\\"]"';
exec('xlf-google-translate --method="extend-only" --source-lang="en" --source-file="./locale.source.xlf" --destination-folder="./src/frontend/"' +
translationFolder + ' --destination-languages=' + localsStr,
handleError(cb));
const merge = async (list: any[], cb: (err?: any) => void) => {
try {
const localsStr = '"[\\"' + list.join('\\",\\"') + '\\"]"';
const {stdout, stderr} = await execPr('xlf-google-translate ' +
'--method="extend-only" ' +
'--source-lang="en" ' +
'--source-file="./locale.source.xlf" ' +
'--destination-filename="messages" ' +
'--destination-folder="./src/frontend/"' + translationFolder + ' --destination-languages=' + localsStr);
console.log(stdout);
console.error(stderr);
cb();
} catch (e) {
console.error(e);
return cb(e);
}
};
gulp.task('update-translation-only', function (cb) {

51
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "pigallery2",
"version": "1.7.9",
"version": "1.8.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -4106,6 +4106,15 @@
"winston": "*"
}
},
"@types/xml2js": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.5.tgz",
"integrity": "sha512-yohU3zMn0fkhlape1nxXG2bLEGZRc1FeqF80RoHaYXJN7uibaauXfhzhOJr1Xh36sn+/tx21QAOf07b/xYVk1w==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@webassemblyjs/ast": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
@ -7293,9 +7302,9 @@
"dev": true
},
"defer-to-connect": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.1.tgz",
"integrity": "sha512-2e0FJesseUqQj671gvZWfUyxpnFx/5n4xleamlpCD3U6Fm5dh5qzmmLNxNhtmHF06+SYVHH8QU6FACffYTnj0Q==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz",
"integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==",
"dev": true
},
"define-properties": {
@ -13671,9 +13680,9 @@
"dev": true
},
"normalize-url": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz",
"integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==",
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
"integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
"dev": true
},
"now-and-later": {
@ -14087,9 +14096,9 @@
}
},
"p-cancelable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.0.0.tgz",
"integrity": "sha512-USgPoaC6tkTGlS831CxsVdmZmyb8tR1D+hStI84MyckLOzfJlYQUweomrwE3D8T7u5u5GVuW064LT501wHTYYA==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
"dev": true
},
"p-defer": {
@ -20145,14 +20154,14 @@
}
},
"xlf-google-translate": {
"version": "1.0.0-beta.15",
"resolved": "https://registry.npmjs.org/xlf-google-translate/-/xlf-google-translate-1.0.0-beta.15.tgz",
"integrity": "sha512-2JbIyS6rjBU5aJ7hhlWSLxNk8JC9BCwjjVhZu5Sm66c0NMukgn4RRnu9Z8d41NnDfPFrrkONYxkJm57lzRysUw==",
"version": "1.0.0-beta.18",
"resolved": "https://registry.npmjs.org/xlf-google-translate/-/xlf-google-translate-1.0.0-beta.18.tgz",
"integrity": "sha512-BDsJm+i6rNNuFqm3EYXhojTb9V/PYdgt3zt0X56kIrWqJKrI08iDOdhIXcujqdYwiPxnS4nVPW4DKbXy8UA1gw==",
"dev": true,
"requires": {
"@k3rn31p4nic/google-translate-api": "1.0.6",
"typeconfig": "1.0.7",
"xml2js": "0.4.19"
"xml2js": "0.4.23"
},
"dependencies": {
"typeconfig": {
@ -20172,18 +20181,18 @@
"integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig="
},
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~9.0.1"
"xmlbuilder": "~11.0.0"
}
},
"xmlbuilder": {
"version": "9.0.7",
"resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
},
"xmldom": {
"version": "0.1.27",

View File

@ -79,6 +79,7 @@
"@types/rimraf": "2.0.3",
"@types/sharp": "0.23.1",
"@types/winston": "2.4.4",
"@types/xml2js": "0.4.5",
"@yaga/leaflet-ng2": "1.0.0",
"bootstrap": "4.4.1",
"chai": "4.2.0",
@ -118,7 +119,8 @@
"ts-node": "8.5.4",
"tslint": "5.20.1",
"typescript": "3.5.3",
"xlf-google-translate": "1.0.0-beta.15",
"xlf-google-translate": "1.0.0-beta.19",
"xml2js": "0.4.23",
"zone.js": "0.10.2"
},
"//": [
@ -138,5 +140,10 @@
},
"engines": {
"node": ">=10.17 <13.0"
}
},
"browserslist": [
"> 5%",
"Firefox ESR",
"not dead"
]
}

View File

@ -588,7 +588,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">237</context>
<context context-type="linenumber">260</context>
</context-group>
<target>Close</target>
</trans-unit>
@ -710,7 +710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">219</context>
</context-group>
<target>Save</target>
</trans-unit>
@ -767,7 +767,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">200</context>
<context context-type="linenumber">223</context>
</context-group>
<target>Reset</target>
</trans-unit>
@ -1685,7 +1685,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">132</context>
</context-group>
<target>Statistic:</target>
</trans-unit>
@ -1693,7 +1693,7 @@
<source>Folders</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">136</context>
</context-group>
<target>Folders</target>
</trans-unit>
@ -1701,7 +1701,7 @@
<source>Photos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">140</context>
</context-group>
<target>Photos</target>
</trans-unit>
@ -1709,7 +1709,7 @@
<source>Videos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">142</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Videos</target>
</trans-unit>
@ -1717,7 +1717,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">149</context>
</context-group>
<target>Size</target>
</trans-unit>
@ -1821,7 +1821,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">118</context>
</context-group>
<target>every</target>
</trans-unit>
@ -1845,7 +1845,7 @@
<source>Job:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">52</context>
</context-group>
<target>Job:</target>
</trans-unit>
@ -1853,7 +1853,7 @@
<source>Periodicity:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">66</context>
</context-group>
<target>Periodicity:</target>
</trans-unit>
@ -1862,7 +1862,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">72</context>
<context context-type="linenumber">76</context>
</context-group>
<target>Set the time to run the job.</target>
</trans-unit>
@ -1870,7 +1870,7 @@
<source>After:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">78</context>
<context context-type="linenumber">82</context>
</context-group>
<target>After:</target>
</trans-unit>
@ -1879,7 +1879,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
<target>The job will run after that job finishes.</target>
</trans-unit>
@ -1887,20 +1887,38 @@
<source>At:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">100</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">110</context>
</context-group>
<target>At:</target>
</trans-unit>
<trans-unit id="a86e51ae77acea0fd2a18ba02699494038f7fcae" datatype="html">
<source>Allow parallel run</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target>Allow parallel run</target>
</trans-unit>
<trans-unit id="5230ebf1e8c837caa3871f3807c5390b4fc156c8" datatype="html">
<source>Enables the job to start even if an other job is already running.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Enables the job to start even if an other job is already running.
</target>
</trans-unit>
<trans-unit id="06a2d1d53517fb6ae65f61bc4acfdc1bfe7f0fc8" datatype="html">
<source>';' separated integers.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">198</context>
</context-group>
<target>';' separated integers.</target>
</trans-unit>
@ -1909,7 +1927,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">226</context>
</context-group>
<target>+ Add Job</target>
</trans-unit>
@ -1917,7 +1935,7 @@
<source>Add new job</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">241</context>
</context-group>
<target>Add new job</target>
</trans-unit>
@ -1926,7 +1944,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">232</context>
<context context-type="linenumber">255</context>
</context-group>
<target>Select a job to schedule.</target>
</trans-unit>
@ -1935,7 +1953,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">240</context>
<context context-type="linenumber">263</context>
</context-group>
<target>Add Job</target>
</trans-unit>
@ -2374,13 +2392,13 @@
</context-group>
<target>Job started</target>
</trans-unit>
<trans-unit id="37a8a7f4290d2e007dc452c7b5d5682d9d2ef164" datatype="html">
<source>Job stopped</source>
<trans-unit id="b8d05f3701688493a899c9c05d588e8c6b2909ef" datatype="html">
<source>Stopping job</source>
<context-group purpose="location">
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/button/job-button.settings.component.ts</context>
<context context-type="linenumber">1</context>
</context-group>
<target>Job stopped</target>
<target>Stopping job</target>
</trans-unit>
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
<source>Jobs</source>

View File

@ -588,7 +588,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">237</context>
<context context-type="linenumber">260</context>
</context-group>
<target>Fermer</target>
</trans-unit>
@ -710,7 +710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">219</context>
</context-group>
<target>Enregistrer</target>
</trans-unit>
@ -767,7 +767,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">200</context>
<context context-type="linenumber">223</context>
</context-group>
<target>Réinitialiser</target>
</trans-unit>
@ -1685,7 +1685,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">132</context>
</context-group>
<target>Statistique :</target>
</trans-unit>
@ -1693,7 +1693,7 @@
<source>Folders</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">136</context>
</context-group>
<target>Dossiers</target>
</trans-unit>
@ -1701,7 +1701,7 @@
<source>Photos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">140</context>
</context-group>
<target>Photos</target>
</trans-unit>
@ -1709,7 +1709,7 @@
<source>Videos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">142</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Vidéos</target>
</trans-unit>
@ -1717,7 +1717,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">149</context>
</context-group>
<target>Taille</target>
</trans-unit>
@ -1821,7 +1821,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">118</context>
</context-group>
<target>every</target>
</trans-unit>
@ -1845,7 +1845,7 @@
<source>Job:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">52</context>
</context-group>
<target>Job:</target>
</trans-unit>
@ -1853,7 +1853,7 @@
<source>Periodicity:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">66</context>
</context-group>
<target>Periodicity:</target>
</trans-unit>
@ -1862,7 +1862,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">72</context>
<context context-type="linenumber">76</context>
</context-group>
<target>Set the time to run the job.</target>
</trans-unit>
@ -1870,7 +1870,7 @@
<source>After:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">78</context>
<context context-type="linenumber">82</context>
</context-group>
<target>After:</target>
</trans-unit>
@ -1879,7 +1879,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
<target>The job will run after that job finishes.</target>
</trans-unit>
@ -1887,20 +1887,38 @@
<source>At:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">100</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">110</context>
</context-group>
<target>At:</target>
</trans-unit>
<trans-unit id="a86e51ae77acea0fd2a18ba02699494038f7fcae" datatype="html">
<source>Allow parallel run</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target>Allow parallel run</target>
</trans-unit>
<trans-unit id="5230ebf1e8c837caa3871f3807c5390b4fc156c8" datatype="html">
<source>Enables the job to start even if an other job is already running.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Enables the job to start even if an other job is already running.
</target>
</trans-unit>
<trans-unit id="06a2d1d53517fb6ae65f61bc4acfdc1bfe7f0fc8" datatype="html">
<source>';' separated integers.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">198</context>
</context-group>
<target>';' separated integers.</target>
</trans-unit>
@ -1909,7 +1927,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">226</context>
</context-group>
<target>+ Add Job</target>
</trans-unit>
@ -1917,7 +1935,7 @@
<source>Add new job</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">241</context>
</context-group>
<target>Add new job</target>
</trans-unit>
@ -1926,7 +1944,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">232</context>
<context context-type="linenumber">255</context>
</context-group>
<target>Select a job to schedule.</target>
</trans-unit>
@ -1935,7 +1953,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">240</context>
<context context-type="linenumber">263</context>
</context-group>
<target>Add Job</target>
</trans-unit>
@ -2374,13 +2392,13 @@
</context-group>
<target>Job started</target>
</trans-unit>
<trans-unit id="37a8a7f4290d2e007dc452c7b5d5682d9d2ef164" datatype="html">
<source>Job stopped</source>
<trans-unit id="b8d05f3701688493a899c9c05d588e8c6b2909ef" datatype="html">
<source>Stopping job</source>
<context-group purpose="location">
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/button/job-button.settings.component.ts</context>
<context context-type="linenumber">1</context>
</context-group>
<target>Job stopped</target>
<target>Stopping job</target>
</trans-unit>
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
<source>Jobs</source>

View File

@ -588,7 +588,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">237</context>
<context context-type="linenumber">260</context>
</context-group>
<target>Bezárás</target>
</trans-unit>
@ -710,7 +710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">219</context>
</context-group>
<target>Mentés</target>
</trans-unit>
@ -767,7 +767,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">200</context>
<context context-type="linenumber">223</context>
</context-group>
<target>Visszaállítás</target>
</trans-unit>
@ -1685,7 +1685,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">132</context>
</context-group>
<target>Statisztika:</target>
</trans-unit>
@ -1693,7 +1693,7 @@
<source>Folders</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">136</context>
</context-group>
<target>Mappák</target>
</trans-unit>
@ -1701,7 +1701,7 @@
<source>Photos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">140</context>
</context-group>
<target>Fotók</target>
</trans-unit>
@ -1709,7 +1709,7 @@
<source>Videos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">142</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Videók</target>
</trans-unit>
@ -1717,7 +1717,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">149</context>
</context-group>
<target>Méret</target>
</trans-unit>
@ -1821,7 +1821,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">118</context>
</context-group>
<target>minden</target>
</trans-unit>
@ -1845,7 +1845,7 @@
<source>Job:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">52</context>
</context-group>
<target>Feladat:</target>
</trans-unit>
@ -1853,7 +1853,7 @@
<source>Periodicity:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">66</context>
</context-group>
<target>Gyakoriság:</target>
</trans-unit>
@ -1862,7 +1862,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">72</context>
<context context-type="linenumber">76</context>
</context-group>
<target>Állítsd be, hogy mikos fusson a feladat.</target>
</trans-unit>
@ -1870,7 +1870,7 @@
<source>After:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">78</context>
<context context-type="linenumber">82</context>
</context-group>
<target>Ez után:</target>
</trans-unit>
@ -1879,7 +1879,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
<target>Ez a feladat a beállított feladat után fog futni.</target>
</trans-unit>
@ -1887,20 +1887,37 @@
<source>At:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">100</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">110</context>
</context-group>
<target>Ekkor:</target>
</trans-unit>
<trans-unit id="a86e51ae77acea0fd2a18ba02699494038f7fcae" datatype="html">
<source>Allow parallel run</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target>Párhuzamos futtatás</target>
</trans-unit>
<trans-unit id="5230ebf1e8c837caa3871f3807c5390b4fc156c8" datatype="html">
<source>Enables the job to start even if an other job is already running.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Akkor is elundul a feladat, ha egy másik már fut.</target>
</trans-unit>
<trans-unit id="06a2d1d53517fb6ae65f61bc4acfdc1bfe7f0fc8" datatype="html">
<source>';' separated integers.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">198</context>
</context-group>
<target>';'-vel elválaszott egész számok.</target>
</trans-unit>
@ -1909,7 +1926,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">226</context>
</context-group>
<target>+ Új feladat</target>
</trans-unit>
@ -1917,7 +1934,7 @@
<source>Add new job</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">241</context>
</context-group>
<target>Új feladat</target>
</trans-unit>
@ -1926,7 +1943,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">232</context>
<context context-type="linenumber">255</context>
</context-group>
<target>Válaszd ki az ütemezendő feladatot.</target>
</trans-unit>
@ -1935,7 +1952,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">240</context>
<context context-type="linenumber">263</context>
</context-group>
<target>Feladat hozzáadása</target>
</trans-unit>
@ -2374,13 +2391,13 @@
</context-group>
<target>Feladat elindult</target>
</trans-unit>
<trans-unit id="37a8a7f4290d2e007dc452c7b5d5682d9d2ef164" datatype="html">
<source>Job stopped</source>
<trans-unit id="b8d05f3701688493a899c9c05d588e8c6b2909ef" datatype="html">
<source>Stopping job</source>
<context-group purpose="location">
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/button/job-button.settings.component.ts</context>
<context context-type="linenumber">1</context>
</context-group>
<target>Feladat leállt</target>
<target>Stopping job</target>
</trans-unit>
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
<source>Jobs</source>

View File

@ -588,7 +588,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">237</context>
<context context-type="linenumber">260</context>
</context-group>
<target>Închide</target>
</trans-unit>
@ -710,7 +710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">219</context>
</context-group>
<target>Salvare</target>
</trans-unit>
@ -767,7 +767,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">200</context>
<context context-type="linenumber">223</context>
</context-group>
<target>Restabilire</target>
</trans-unit>
@ -1685,7 +1685,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">132</context>
</context-group>
<target>Statistici:</target>
</trans-unit>
@ -1693,7 +1693,7 @@
<source>Folders</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">136</context>
</context-group>
<target>Dosare</target>
</trans-unit>
@ -1701,7 +1701,7 @@
<source>Photos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">140</context>
</context-group>
<target>Fotografii</target>
</trans-unit>
@ -1709,7 +1709,7 @@
<source>Videos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">142</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Videoclipuri</target>
</trans-unit>
@ -1717,7 +1717,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">149</context>
</context-group>
<target>Dimensiuni</target>
</trans-unit>
@ -1821,7 +1821,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">118</context>
</context-group>
<target>every</target>
</trans-unit>
@ -1845,7 +1845,7 @@
<source>Job:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">52</context>
</context-group>
<target>Job:</target>
</trans-unit>
@ -1853,7 +1853,7 @@
<source>Periodicity:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">66</context>
</context-group>
<target>Periodicity:</target>
</trans-unit>
@ -1862,7 +1862,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">72</context>
<context context-type="linenumber">76</context>
</context-group>
<target>Set the time to run the job.</target>
</trans-unit>
@ -1870,7 +1870,7 @@
<source>After:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">78</context>
<context context-type="linenumber">82</context>
</context-group>
<target>After:</target>
</trans-unit>
@ -1879,7 +1879,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
<target>The job will run after that job finishes.</target>
</trans-unit>
@ -1887,20 +1887,38 @@
<source>At:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">100</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">110</context>
</context-group>
<target>At:</target>
</trans-unit>
<trans-unit id="a86e51ae77acea0fd2a18ba02699494038f7fcae" datatype="html">
<source>Allow parallel run</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target>Allow parallel run</target>
</trans-unit>
<trans-unit id="5230ebf1e8c837caa3871f3807c5390b4fc156c8" datatype="html">
<source>Enables the job to start even if an other job is already running.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Enables the job to start even if an other job is already running.
</target>
</trans-unit>
<trans-unit id="06a2d1d53517fb6ae65f61bc4acfdc1bfe7f0fc8" datatype="html">
<source>';' separated integers.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">198</context>
</context-group>
<target>';' separated integers.</target>
</trans-unit>
@ -1909,7 +1927,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">226</context>
</context-group>
<target>+ Add Job</target>
</trans-unit>
@ -1917,7 +1935,7 @@
<source>Add new job</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">241</context>
</context-group>
<target>Add new job</target>
</trans-unit>
@ -1926,7 +1944,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">232</context>
<context context-type="linenumber">255</context>
</context-group>
<target>Select a job to schedule.</target>
</trans-unit>
@ -1935,7 +1953,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">240</context>
<context context-type="linenumber">263</context>
</context-group>
<target>Add Job</target>
</trans-unit>
@ -2374,13 +2392,13 @@
</context-group>
<target>Job started</target>
</trans-unit>
<trans-unit id="37a8a7f4290d2e007dc452c7b5d5682d9d2ef164" datatype="html">
<source>Job stopped</source>
<trans-unit id="b8d05f3701688493a899c9c05d588e8c6b2909ef" datatype="html">
<source>Stopping job</source>
<context-group purpose="location">
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/button/job-button.settings.component.ts</context>
<context context-type="linenumber">1</context>
</context-group>
<target>Job stopped</target>
<target>Stopping job</target>
</trans-unit>
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
<source>Jobs</source>

View File

@ -588,7 +588,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">237</context>
<context context-type="linenumber">260</context>
</context-group>
<target>Закрыть</target>
</trans-unit>
@ -710,7 +710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">219</context>
</context-group>
<target>Сохранить</target>
</trans-unit>
@ -767,7 +767,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">200</context>
<context context-type="linenumber">223</context>
</context-group>
<target>Сбросить</target>
</trans-unit>
@ -1685,7 +1685,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">132</context>
</context-group>
<target>Статистика:</target>
</trans-unit>
@ -1693,7 +1693,7 @@
<source>Folders</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">136</context>
</context-group>
<target>Папки</target>
</trans-unit>
@ -1701,7 +1701,7 @@
<source>Photos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">140</context>
</context-group>
<target>Фото</target>
</trans-unit>
@ -1709,7 +1709,7 @@
<source>Videos</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">142</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Видео</target>
</trans-unit>
@ -1717,7 +1717,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">149</context>
</context-group>
<target>Размер</target>
</trans-unit>
@ -1821,7 +1821,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">118</context>
</context-group>
<target>every</target>
</trans-unit>
@ -1845,7 +1845,7 @@
<source>Job:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">52</context>
</context-group>
<target>Job:</target>
</trans-unit>
@ -1853,7 +1853,7 @@
<source>Periodicity:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">66</context>
</context-group>
<target>Periodicity:</target>
</trans-unit>
@ -1862,7 +1862,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">72</context>
<context context-type="linenumber">76</context>
</context-group>
<target>Set the time to run the job.</target>
</trans-unit>
@ -1870,7 +1870,7 @@
<source>After:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">78</context>
<context context-type="linenumber">82</context>
</context-group>
<target>After:</target>
</trans-unit>
@ -1879,7 +1879,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
<target>The job will run after that job finishes.</target>
</trans-unit>
@ -1887,20 +1887,38 @@
<source>At:</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">100</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">110</context>
</context-group>
<target>At:</target>
</trans-unit>
<trans-unit id="a86e51ae77acea0fd2a18ba02699494038f7fcae" datatype="html">
<source>Allow parallel run</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target>Allow parallel run</target>
</trans-unit>
<trans-unit id="5230ebf1e8c837caa3871f3807c5390b4fc156c8" datatype="html">
<source>Enables the job to start even if an other job is already running.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target>Enables the job to start even if an other job is already running.
</target>
</trans-unit>
<trans-unit id="06a2d1d53517fb6ae65f61bc4acfdc1bfe7f0fc8" datatype="html">
<source>';' separated integers.
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">198</context>
</context-group>
<target>';' separated integers.</target>
</trans-unit>
@ -1909,7 +1927,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">226</context>
</context-group>
<target>+ Add Job</target>
</trans-unit>
@ -1917,7 +1935,7 @@
<source>Add new job</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">241</context>
</context-group>
<target>Add new job</target>
</trans-unit>
@ -1926,7 +1944,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">232</context>
<context context-type="linenumber">255</context>
</context-group>
<target>Select a job to schedule.</target>
</trans-unit>
@ -1935,7 +1953,7 @@
</source>
<context-group purpose="location">
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
<context context-type="linenumber">240</context>
<context context-type="linenumber">263</context>
</context-group>
<target>Add Job</target>
</trans-unit>
@ -2374,13 +2392,13 @@
</context-group>
<target>Job started</target>
</trans-unit>
<trans-unit id="37a8a7f4290d2e007dc452c7b5d5682d9d2ef164" datatype="html">
<source>Job stopped</source>
<trans-unit id="b8d05f3701688493a899c9c05d588e8c6b2909ef" datatype="html">
<source>Stopping job</source>
<context-group purpose="location">
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/button/job-button.settings.component.ts</context>
<context context-type="linenumber">1</context>
</context-group>
<target>Job stopped</target>
<target>Stopping job</target>
</trans-unit>
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
<source>Jobs</source>