Files
bruno f753b27542
CI / build (push) Failing after 6m2s
Add asset pipeline and professionalize theme
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.
2026-08-09 09:25:03 -04:00

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));