mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-11 10:23:54 +00:00
feat: add user defined translations (#1756)
* feat: add user defined translations * add refetch key for translation (#1757) --------- Co-authored-by: Alex Christoffer Rasmussen <ac@omnivox.dk>
This commit is contained in:
@@ -33,4 +33,8 @@ export const config = {
|
||||
},
|
||||
uploads: 'uploads',
|
||||
logo: 'logo',
|
||||
translations: {
|
||||
directory: 'translations',
|
||||
filename: 'translations.json',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -81,12 +81,16 @@ export const srcFiles = {
|
||||
clientIndexHtml: join(srcDir.clientDir, 'index.html'),
|
||||
/** Path to bundled CSS */
|
||||
cssOverride: join(srcDir.root, config.user, config.styles.directory, config.styles.filename),
|
||||
/** Path to bundled translation */
|
||||
translationsFile: join(srcDir.root, config.user, config.translations.directory, config.translations.filename),
|
||||
/** Path to bundled external readme */
|
||||
externalReadme: join(srcDir.root, config.external, 'README.md'),
|
||||
/** Path to bundled user readme */
|
||||
userReadme: join(srcDir.root, config.user, 'README.md'),
|
||||
/** Path to bundled CSS readme */
|
||||
cssReadme: join(srcDir.root, config.user, config.styles.directory, 'README.md'),
|
||||
/** Path to bundled translation readme */
|
||||
translationReadme: join(srcDir.root, config.user, config.translations.directory, 'README.md'),
|
||||
/** Path to login */
|
||||
login: join(srcDir.root, 'html/login.html'),
|
||||
};
|
||||
@@ -136,6 +140,8 @@ export const publicDir = {
|
||||
/** path to external styles override */
|
||||
stylesDir: join(resolvePublicDirectory, config.user, config.styles.directory),
|
||||
logoDir: join(resolvePublicDirectory, config.user, config.logo),
|
||||
/** path to translations folder */
|
||||
translationsDir: join(resolvePublicDirectory, config.user, config.translations.directory),
|
||||
} as const;
|
||||
|
||||
/**
|
||||
@@ -148,10 +154,14 @@ export const publicFiles = {
|
||||
restoreFile: join(publicDir.root, config.restoreFile),
|
||||
/** path to CSS override file */
|
||||
cssOverride: join(publicDir.stylesDir, config.styles.filename),
|
||||
/** path to custom translation file */
|
||||
translationsFile: join(publicDir.translationsDir, config.translations.filename),
|
||||
/** path to external readme file */
|
||||
externalReadme: join(publicDir.externalDir, 'README.md'),
|
||||
/** path to user readme file */
|
||||
userReadme: join(publicDir.userDir, 'README.md'),
|
||||
/** path to CSS readme file */
|
||||
cssReadme: join(publicDir.stylesDir, 'README.md'),
|
||||
/** path to translation readme file */
|
||||
translationReadme: join(publicDir.translationsDir, 'README.md'),
|
||||
} as const;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import { copyFileSync, existsSync, writeFileSync } from 'fs';
|
||||
|
||||
import { ensureDirectory } from '../utils/fileManagement.js';
|
||||
import { defaultTranslation } from '../user/translations/bundledTranslations.js';
|
||||
|
||||
import { publicDir, publicFiles, srcFiles } from './index.js';
|
||||
|
||||
/**
|
||||
* ensures directories exist and populates translation
|
||||
*/
|
||||
export const populateTranslation = () => {
|
||||
ensureDirectory(publicDir.translationsDir);
|
||||
// if translations doesn't exist we want to use startup translation
|
||||
try {
|
||||
copyFileSync(srcFiles.translationReadme, publicFiles.translationReadme);
|
||||
if (!existsSync(publicFiles.translationsFile)) {
|
||||
// copy the startup translation only if user doesnt have one
|
||||
writeFileSync(publicFiles.translationsFile, defaultTranslation, { encoding: 'utf-8' });
|
||||
}
|
||||
} catch (_) {
|
||||
/* we do not handle this */
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user