CI / build (push) Failing after 6m2s
Introduce a Node build system for minified CSS/JS with content hashes, add PWA support, i18n helpers, accessibility improvements, and more translatable strings. Move theme configuration from bookmarks to localStorage, add Playwright tests, and set up CI workflows.
191 lines
7.8 KiB
JavaScript
191 lines
7.8 KiB
JavaScript
// Minimal internationalisation helper for Shaarli Pro theme JS.
|
|
// Strings are kept in English so the file acts as a fallback when a translation
|
|
// key is missing from Shaarli's language files.
|
|
(function (root) {
|
|
'use strict';
|
|
|
|
var translations = {
|
|
'Dark Mode': 'Dark Mode',
|
|
'Light Mode': 'Light Mode',
|
|
'Search in tags...': 'Search in tags...',
|
|
'Search in notes...': 'Search in notes...',
|
|
'Search in bookmarks and notes...': 'Search in bookmarks and notes...',
|
|
'Nothing found.': 'Nothing found.',
|
|
'result': 'result',
|
|
'results': 'results',
|
|
'with status': 'with status',
|
|
'Clear filters': 'Clear filters',
|
|
'Clear': 'Clear',
|
|
'The following links will be irretrievably deleted:': 'The following links will be irretrievably deleted:',
|
|
'The following links will be set as public:': 'The following links will be set as public:',
|
|
'The following links will be set as private:': 'The following links will be set as private:',
|
|
'Are you sure to delete {count} link{plural}?': 'Are you sure to delete {count} link{plural}?',
|
|
'Are you sure to set {count} link{plural} public?': 'Are you sure to set {count} link{plural} public?',
|
|
'Are you sure to set {count} link{plural} private?': 'Are you sure to set {count} link{plural} private?',
|
|
'DELETE {count} LINK{plural}': 'DELETE {count} LINK{plural}',
|
|
'SET {count} LINK{plural} PUBLIC': 'SET {count} LINK{plural} PUBLIC',
|
|
'SET {count} LINK{plural} PRIVATE': 'SET {count} LINK{plural} PRIVATE',
|
|
'Untitled link': 'Untitled link',
|
|
'Missing security token. Please refresh the page and try again.': 'Missing security token. Please refresh the page and try again.',
|
|
'Processing...': 'Processing...',
|
|
'Current thumbnail': 'Current thumbnail',
|
|
'Thumbnail update done!': 'Thumbnail update done!',
|
|
'Error updating thumbnail #{index}': 'Error updating thumbnail #{index}',
|
|
'No description available.': 'No description available.',
|
|
'Generating QR Code...': 'Generating QR Code...',
|
|
'Failed to generate QR Code': 'Failed to generate QR Code',
|
|
'QR Code': 'QR Code',
|
|
'Unable to load bookmark edit form.': 'Unable to load bookmark edit form.',
|
|
'Bookmark edit form not found.': 'Bookmark edit form not found.',
|
|
'Unable to save bookmark tags.': 'Unable to save bookmark tags.',
|
|
'Delete tag {tag}': 'Delete tag {tag}',
|
|
'Delete': 'Delete',
|
|
'Read Later': 'Read Later',
|
|
'Remove from Read It Later': 'Remove from Read It Later',
|
|
'Add to Read It Later': 'Add to Read It Later',
|
|
'Failed to toggle readitlater tag.': 'Failed to toggle readitlater tag.',
|
|
'Play media': 'Play media',
|
|
'Open Link': 'Open Link',
|
|
'LIVE': 'LIVE',
|
|
'Error loading media': 'Error loading media',
|
|
'No media': 'No media',
|
|
'Stop & Close': 'Stop & Close',
|
|
'Play/Pause': 'Play/Pause',
|
|
'Mute/Unmute': 'Mute/Unmute',
|
|
// custom_views.js
|
|
'Default': 'Default',
|
|
'Red': 'Red',
|
|
'Orange': 'Orange',
|
|
'Yellow': 'Yellow',
|
|
'Green': 'Green',
|
|
'Mint': 'Mint',
|
|
'Light blue': 'Light blue',
|
|
'Blue': 'Blue',
|
|
'Purple': 'Purple',
|
|
'Pink': 'Pink',
|
|
'Beige': 'Beige',
|
|
'Gray': 'Gray',
|
|
'Custom': 'Custom',
|
|
'None': 'None',
|
|
'Glass': 'Glass',
|
|
'Vignette': 'Vignette',
|
|
'Lined': 'Lined',
|
|
'Grid': 'Grid',
|
|
'Noise': 'Noise',
|
|
'Dots': 'Dots',
|
|
'Stripes': 'Stripes',
|
|
'Auto': 'Auto',
|
|
'Light': 'Light',
|
|
'Dark': 'Dark',
|
|
'White': 'White',
|
|
'Black': 'Black',
|
|
'My images & colors': 'My images & colors',
|
|
'Solid color': 'Solid color',
|
|
'Custom color': 'Custom color',
|
|
'Custom font color': 'Custom font color',
|
|
'Close': 'Close',
|
|
'Reset': 'Reset',
|
|
'Search my images… (filter by color or filter)': 'Search my images… (filter by color or filter)',
|
|
'Clear search': 'Clear search',
|
|
'Color': 'Color',
|
|
'Edit': 'Edit',
|
|
'Create a list': 'Create a list',
|
|
'List title': 'List title',
|
|
'Mark as completed': 'Mark as completed',
|
|
'List item': 'List item',
|
|
'Create a note': 'Create a note',
|
|
'Title': 'Title',
|
|
'Heading 1': 'Heading 1',
|
|
'Heading 2': 'Heading 2',
|
|
'Heading 3': 'Heading 3',
|
|
'Text': 'Text',
|
|
'Bold': 'Bold',
|
|
'Italic': 'Italic',
|
|
'Underline': 'Underline',
|
|
'Strikethrough': 'Strikethrough',
|
|
'Inline code': 'Inline code',
|
|
'Bulleted list': 'Bulleted list',
|
|
'Numbered list': 'Numbered list',
|
|
'Checklist': 'Checklist',
|
|
'Quote': 'Quote',
|
|
'Link': 'Link',
|
|
'Image': 'Image',
|
|
'Code block': 'Code block',
|
|
'Clear formatting': 'Clear formatting',
|
|
'Formatting options': 'Formatting options',
|
|
'Reminder': 'Reminder',
|
|
'Collaborator': 'Collaborator',
|
|
'Archive': 'Archive',
|
|
'Unarchive': 'Unarchive',
|
|
'Pin': 'Pin',
|
|
'Unpin': 'Unpin',
|
|
'Untitled': 'Untitled',
|
|
'Delete this task?': 'Delete this task?',
|
|
'Delete this note?': 'Delete this note?',
|
|
'Write your note in Markdown...': 'Write your note in Markdown...',
|
|
'Click to edit': 'Click to edit',
|
|
'Move': 'Move',
|
|
'Error initializing view.': 'Error initializing view.',
|
|
'Error loading backgrounds.': 'Error loading backgrounds.',
|
|
'Could not find edit form.': 'Could not find edit form.',
|
|
'Failed to update tags.': 'Failed to update tags.',
|
|
'Delete request failed.': 'Delete request failed.',
|
|
'Invalid delete URL.': 'Invalid delete URL.',
|
|
'Error removing tag.': 'Error removing tag.',
|
|
'Error creating todo.': 'Error creating todo.',
|
|
'Error deleting.': 'Error deleting.',
|
|
'Error saving todo.': 'Error saving todo.',
|
|
'Error creating checklist note.': 'Error creating checklist note.',
|
|
'Error creating note.': 'Error creating note.',
|
|
'Error saving note.': 'Error saving note.',
|
|
'Error archiving note.': 'Error archiving note.',
|
|
'Error unarchiving note.': 'Error unarchiving note.',
|
|
'Failed to save color.': 'Failed to save color.',
|
|
'Failed to save filter.': 'Failed to save filter.',
|
|
'Failed to save background.': 'Failed to save background.',
|
|
'Failed to save font color.': 'Failed to save font color.',
|
|
'Failed to save custom color.': 'Failed to save custom color.',
|
|
'Please refresh the page.': 'Please refresh the page.',
|
|
'Create a task...': 'Create a task...',
|
|
'Add list item': 'Add list item',
|
|
'Create a note...': 'Create a note...',
|
|
'Archived notes': 'Archived notes',
|
|
'Unpin': 'Unpin',
|
|
'Coffee': 'Coffee',
|
|
'Forest': 'Forest',
|
|
'Vegetables': 'Vegetables',
|
|
'Ocean': 'Ocean',
|
|
'January': 'January',
|
|
'February': 'February',
|
|
'March': 'March',
|
|
'April': 'April',
|
|
'May': 'May',
|
|
'June': 'June',
|
|
'July': 'July',
|
|
'August': 'August',
|
|
'September': 'September',
|
|
'October': 'October',
|
|
'November': 'November',
|
|
'December': 'December',
|
|
'Mon': 'Mon',
|
|
'Tue': 'Tue',
|
|
'Wed': 'Wed',
|
|
'Thu': 'Thu',
|
|
'Fri': 'Fri',
|
|
'Sat': 'Sat',
|
|
'Sun': 'Sun'
|
|
};
|
|
|
|
function t(key, vars) {
|
|
var str = translations[key] || key;
|
|
if (vars) {
|
|
Object.keys(vars).forEach(function (name) {
|
|
str = str.split('{' + name + '}').join(String(vars[name]));
|
|
});
|
|
}
|
|
return str;
|
|
}
|
|
|
|
root.ShaarliProI18n = { t: t, translations: translations };
|
|
}(window));
|