- {(localStorage.getItem('view') === 'true' && backgroundEnabled) ?
: null}
- {(localStorage.getItem('favouriteEnabled') === 'true' && backgroundEnabled) ?
: null}
-
- {(localStorage.getItem('notesEnabled') === 'true') ?
-
-
-
-
- : null}
+
+
+ {localStorage.getItem('view') === 'true' && backgroundEnabled ? (
+
+ ) : null}
+ {localStorage.getItem('notesEnabled') === 'true' ? (
+
+ ) : null}
+ {localStorage.getItem('todo') === 'true' ? (
+
+ ) : null}
- {(this.refreshValue !== 'false') ?
-
- this.refresh()}/>
+ {this.refreshEnabled !== 'false' ? (
+
+
+
+ ) : null}
+
+
- : null}
-
-
- this.props.openModal('mainModal')}/>
-
+
);
- if (localStorage.getItem('navbarHover') === 'true') {
- return
{navbar}
;
- } else {
- return navbar;
- }
+ return localStorage.getItem('navbarHover') === 'true' ? (
+
{navbar}
+ ) : (
+ navbar
+ );
}
}
diff --git a/src/components/widgets/navbar/Notes.jsx b/src/components/widgets/navbar/Notes.jsx
index 95b50921..d216d868 100644
--- a/src/components/widgets/navbar/Notes.jsx
+++ b/src/components/widgets/navbar/Notes.jsx
@@ -1,62 +1,164 @@
import variables from 'modules/variables';
-import { PureComponent } from 'react';
-import { MdFileCopy, MdAssignment, MdPushPin } from 'react-icons/md';
+import { PureComponent, memo } from 'react';
+import { MdContentCopy, MdAssignment, MdPushPin, MdDownload } from 'react-icons/md';
+import { useFloating, shift } from '@floating-ui/react-dom';
import TextareaAutosize from '@mui/material/TextareaAutosize';
import { toast } from 'react-toastify';
-//import Hotkeys from 'react-hot-keys';
+import Tooltip from '../../helpers/tooltip/Tooltip';
+import { saveFile } from 'modules/helpers/settings/modals';
+import EventBus from 'modules/helpers/eventbus';
-export default class Notes extends PureComponent {
+class Notes extends PureComponent {
constructor() {
super();
this.state = {
notes: localStorage.getItem('notes') || '',
- visibility: (localStorage.getItem('notesPinned') === 'true') ? 'visible' : 'hidden',
- marginLeft: (localStorage.getItem('refresh') === 'false') ? '-200px' : '-150px'
+ visibility: localStorage.getItem('notesPinned') === 'true' ? 'visible' : 'hidden',
+ showNotes: localStorage.getItem('notesPinned') === 'true' ? true : false,
};
}
+ setZoom() {
+ this.setState({
+ zoomFontSize: Number(((localStorage.getItem('zoomNavbar') || 100) / 100) * 1.2) + 'rem',
+ });
+ }
+
+ componentDidMount() {
+ EventBus.on('refresh', (data) => {
+ if (data === 'navbar') {
+ this.forceUpdate();
+ try {
+ this.setZoom();
+ } catch (e) {}
+ }
+ });
+
+ this.setZoom();
+ }
+
+ componentWillUnmount() {
+ EventBus.off('refresh');
+ }
+
setNotes = (e) => {
localStorage.setItem('notes', e.target.value);
this.setState({
- notes: e.target.value
+ notes: e.target.value,
});
};
+ showNotes() {
+ this.setState({
+ showNotes: true,
+ });
+ }
+
+ hideNotes() {
+ this.setState({
+ showNotes: localStorage.getItem('notesPinned') === 'true',
+ });
+ }
+
pin() {
variables.stats.postEvent('feature', 'Notes pin');
-
- if (localStorage.getItem('notesPinned') === 'true') {
- localStorage.setItem('notesPinned', false);
- this.setState({
- visibility: 'hidden'
- });
- } else {
- localStorage.setItem('notesPinned', true);
- this.setState({
- visibility: 'visible'
- });
- }
+ const notesPinned = localStorage.getItem('notesPinned') === 'true';
+ localStorage.setItem('notesPinned', !notesPinned);
+ this.setState({
+ showNotes: !notesPinned,
+ });
}
copy() {
variables.stats.postEvent('feature', 'Notes copied');
navigator.clipboard.writeText(this.state.notes);
- toast(variables.language.getMessage(variables.languagecode, 'toasts.notes'));
+ toast(variables.getMessage('toasts.notes'));
+ }
+
+ download() {
+ const notes = localStorage.getItem('notes');
+ if (!notes || notes === '') {
+ return;
+ }
+
+ variables.stats.postEvent('feature', 'Notes download');
+ saveFile(this.state.notes, 'mue-notes.txt', 'text/plain');
}
render() {
return (
-
-
-
-
{variables.language.getMessage(variables.languagecode, 'widgets.navbar.notes.title')}
-
-
-
-
- {/*variables.keybinds.pinNotes && variables.keybinds.pinNotes !== '' ? this.pin()}/> : null*/}
- {/*variables.keybinds.copyNotes && variables.keybinds.copyNotes !== '' ? this.copy()}/> : null*/}
-
+
this.hideNotes()} onFocus={() => this.showNotes()}>
+
+ {this.state.showNotes && (
+
+
+
+
+ {variables.getMessage('widgets.navbar.notes.title')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
);
}
}
+
+function NotesWrapper() {
+ const { x, y, reference, floating, strategy } = useFloating({
+ placement: 'bottom',
+ middleware: [shift()],
+ });
+
+ return (
+
+ );
+}
+
+export default memo(NotesWrapper);
diff --git a/src/components/widgets/navbar/Todo.jsx b/src/components/widgets/navbar/Todo.jsx
new file mode 100644
index 00000000..9fe1b206
--- /dev/null
+++ b/src/components/widgets/navbar/Todo.jsx
@@ -0,0 +1,225 @@
+import variables from 'modules/variables';
+import { PureComponent, memo } from 'react';
+import {
+ MdChecklist,
+ MdPushPin,
+ MdDelete,
+ MdPlaylistAdd,
+ MdOutlineDragIndicator,
+} from 'react-icons/md';
+import TextareaAutosize from '@mui/material/TextareaAutosize';
+import Tooltip from '../../helpers/tooltip/Tooltip';
+import Checkbox from '@mui/material/Checkbox';
+import { shift, useFloating } from '@floating-ui/react-dom';
+import { sortableContainer, sortableElement } from 'react-sortable-hoc';
+import EventBus from 'modules/helpers/eventbus';
+
+const SortableItem = sortableElement(({ value }) =>
{value}
);
+const SortableContainer = sortableContainer(({ children }) =>
{children}
);
+
+class Todo extends PureComponent {
+ constructor() {
+ super();
+ this.state = {
+ todo: JSON.parse(localStorage.getItem('todoContent')) || [
+ {
+ value: '',
+ done: false,
+ },
+ ],
+ visibility: localStorage.getItem('todoPinned') === 'true' ? 'visible' : 'hidden',
+ marginLeft: localStorage.getItem('refresh') === 'false' ? '-200px' : '-130px',
+ showTodo: localStorage.getItem('todoPinned') === 'true',
+ };
+ }
+
+ setZoom() {
+ this.setState({
+ zoomFontSize: Number(((localStorage.getItem('zoomNavbar') || 100) / 100) * 1.2) + 'rem',
+ });
+ }
+
+ componentDidMount() {
+ EventBus.on('refresh', (data) => {
+ if (data === 'navbar') {
+ this.forceUpdate();
+ try {
+ this.setZoom();
+ } catch (e) {}
+ }
+ });
+
+ this.setZoom();
+ }
+
+ componentWillUnmount() {
+ EventBus.off('refresh');
+ }
+
+ arrayMove(array, oldIndex, newIndex) {
+ const result = Array.from(array);
+ const [removed] = result.splice(oldIndex, 1);
+ result.splice(newIndex, 0, removed);
+
+ return result;
+ }
+
+ onSortEnd = ({ oldIndex, newIndex }) => {
+ this.setState({
+ todo: this.arrayMove(this.state.todo, oldIndex, newIndex),
+ });
+ };
+
+ showTodo() {
+ this.setState({
+ showTodo: true,
+ });
+ }
+
+ hideTodo() {
+ this.setState({
+ showTodo: localStorage.getItem('todoPinned') === 'true',
+ });
+ }
+
+ updateTodo(action, index, data) {
+ let todo = this.state.todo;
+ switch (action) {
+ case 'add':
+ todo.push({
+ value: '',
+ done: false,
+ });
+ break;
+ case 'remove':
+ todo.splice(index, 1);
+ if (todo.length === 0) {
+ todo.push({
+ value: '',
+ done: false,
+ });
+ }
+ break;
+ case 'set':
+ todo[index] = {
+ value: data.target.value,
+ done: todo[index].done,
+ };
+ break;
+ case 'done':
+ todo[index].done = !todo[index].done;
+ break;
+ default:
+ break;
+ }
+
+ localStorage.setItem('todo', JSON.stringify(todo));
+ this.setState({
+ todo,
+ });
+ this.forceUpdate();
+ }
+
+ pin() {
+ variables.stats.postEvent('feature', 'Todo pin');
+ const todoPinned = localStorage.getItem('todoPinned') === 'true';
+ localStorage.setItem('todoPinned', !todoPinned);
+ this.setState({
+ showTodo: !todoPinned,
+ });
+ }
+
+ render() {
+ return (
+
this.hideTodo()} onFocus={() => this.showTodo()}>
+
+ {this.state.showTodo && (
+
+
+
+
+ {variables.getMessage('widgets.navbar.todo.title')}
+
+
+
+
+
+
+
+
+
+
+
+ {this.state.todo.map((_value, index) => (
+
+ this.updateTodo('done', index)}
+ />
+ this.updateTodo('set', index, data)}
+ readOnly={this.state.todo[index].done}
+ />
+ this.updateTodo('remove', index)} />
+
+
+ }
+ />
+ ))}
+
+
+
+
+ )}
+
+ );
+ }
+}
+
+function TodoWrapper() {
+ const { x, y, reference, floating, strategy } = useFloating({
+ placement: 'bottom',
+ middleware: [shift()],
+ });
+
+ return (
+
- {this.state.items.map((item) => (
- quickLink(item)
- ))}
-
-
-
-
{this.getMessage('widgets.quicklinks.new')}
-
this.setState({ name: e.target.value })} />
-
- this.setState({ url: e.target.value })} />
- {this.state.urlError}
- this.setState({ icon: e.target.value })} />
-
-
-
-
- {/*variables.keybinds.toggleQuicklinks && variables.keybinds.toggleQuicklinks !== '' ?
: null*/}
+
+ {this.state.items.map((item) => quickLink(item))}
);
}
diff --git a/src/components/widgets/quicklinks/quicklinks.scss b/src/components/widgets/quicklinks/quicklinks.scss
index 5d17e5f4..04bbede7 100644
--- a/src/components/widgets/quicklinks/quicklinks.scss
+++ b/src/components/widgets/quicklinks/quicklinks.scss
@@ -1,32 +1,33 @@
-.quicklinks {
- position: relative;
- user-select: none;
- border: none;
- color: #fff;
- font-size: 42px;
- background: none;
- cursor: pointer;
- text-shadow: 0 0 10px rgb(0 0 0 / 60%);
+@import 'scss/variables';
- h3 {
- text-shadow: none;
- margin: 0;
- }
+.quicklinks {
+ @include basicIconButton(10px, 14px, ui);
+ outline: none;
+ border: none;
+ box-shadow: 0 0 0 1px #484848;
+ border-radius: 12px;
+ color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+ font-size: 0.5em;
+ padding: 10px 40px 10px 40px;
+ gap: 15px;
}
.quicklinkscontainer {
- padding: 15px;
- background-color: var(--background);
- color: var(--modal-text);
- text-align: center;
border-radius: 12px;
- position: absolute;
- margin-left: -140px;
- margin-top: 50px;
z-index: 1;
+ display: flex;
+ align-content: center;
+ justify-content: center;
+ gap: 12px;
- svg {
- float: left;
+ textarea {
+ @extend %basic;
+ border: none;
+ padding: 15px;
+ border-radius: 12px;
}
::placeholder {
@@ -35,14 +36,6 @@
}
}
-textarea {
- border: none;
- width: 200px;
- resize: none;
- height: 100px;
- margin: 10px;
-}
-
.topbarquicklinks {
svg {
font-size: 46px;
@@ -64,13 +57,8 @@ textarea {
}
}
-.dark textarea {
- background-color: #2f3542;
- color: white;
-}
-
-.quicklinks-container>a,
-.quicklinks-container>.quicklinks>button {
+.quicklinks-container > a,
+.quicklinks-container > .quicklinks > button {
display: inline;
}
@@ -94,9 +82,128 @@ textarea {
.quicklinkstext {
text-decoration: none;
color: white;
- font-size: smaller;
+ font-size: 0.8em;
&:hover {
text-decoration: underline;
}
}
+
+/* background-color: var(--background);
+ color: var(--modal-text);*/
+
+.quicklinksdropdown {
+ @extend %basic;
+ position: absolute;
+ z-index: 99;
+ display: none;
+ flex-flow: column;
+ padding: 15px;
+ box-shadow: 0 0 0 1px #484848;
+ gap: 5px;
+
+ &:hover {
+ .quicklinksdropdown {
+ display: block;
+ }
+ }
+
+ .dropdown-title {
+ font-size: 0.9em;
+ }
+
+ .dropdown-subtitle {
+ font-size: 0.4em;
+
+ @include themed() {
+ color: t($subColor);
+ }
+ }
+
+ button {
+ @include basicIconButton(10px, 0.9rem, ui);
+ border-radius: 12px;
+ border: none;
+ outline: none;
+ color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 20px;
+ }
+}
+
+.dropdown-error {
+ font-size: 0.4em;
+}
+
+button.quicklinks {
+ cursor: pointer;
+}
+
+.outOfScreen {
+ bottom: 515px;
+}
+
+.quicklinkModalTextbox {
+ display: flex;
+ flex-flow: column;
+ gap: 5px;
+ button {
+ display: flex;
+ flex-flow: row;
+ gap: 20px;
+ justify-content: center;
+ }
+ .dropdown-error {
+ font-size: 13px;
+ padding-left: 5px;
+ color: #e74c3c;
+ }
+ @include themed() {
+ textarea {
+ background: t($modal-sidebar);
+ border: 3px solid t($modal-sidebarActive);
+ color: t($color);
+ border-radius: t($borderRadius);
+ width: 270px;
+ padding: 10px 20px;
+
+ &:hover {
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:active {
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:focus {
+ box-shadow: 0 0 0 1px t($color);
+ }
+ }
+ }
+}
+
+.quickLinksMetro {
+ @extend %basic;
+ text-decoration: none;
+ gap: 10px;
+ display: flex;
+ flex-flow: column;
+ align-items: center;
+ min-width: 100px;
+ background-image: linear-gradient(to left, rgb(0, 0, 0), transparent, rgb(0, 0, 0)),
+ url('https://media.cntraveller.com/photos/615ee85…/16:9/w_2580,c_limit/Best%20Cities%20in%20the%20World%20-%20Grid.jpg');
+ transition: 0.8s;
+ text-align: left;
+ padding: 20px 40px;
+ @include themed() {
+ &:hover {
+ background: t($btn-backgroundHover);
+ }
+ }
+ img {
+ width: auto;
+ align-self: center;
+ }
+}
diff --git a/src/components/widgets/quote/Quote.jsx b/src/components/widgets/quote/Quote.jsx
index 11451b3f..0429d1bc 100644
--- a/src/components/widgets/quote/Quote.jsx
+++ b/src/components/widgets/quote/Quote.jsx
@@ -1,33 +1,70 @@
import variables from 'modules/variables';
import { PureComponent, createRef } from 'react';
-import { MdContentCopy, MdStarBorder, MdStar } from 'react-icons/md';
-import { FaTwitter } from 'react-icons/fa';
-import { toast } from 'react-toastify';
-//import Hotkeys from 'react-hot-keys';
+import {
+ MdContentCopy,
+ MdStarBorder,
+ MdStar,
+ MdPerson,
+ MdOpenInNew,
+ MdIosShare,
+} from 'react-icons/md';
+
+import { toast } from 'react-toastify';
+
+import Tooltip from '../../helpers/tooltip/Tooltip';
+import Modal from 'react-modal';
+import ShareModal from '../../helpers/sharemodal/ShareModal';
+
+import offline_quotes from './offline_quotes.json';
-import Interval from 'modules/helpers/interval';
import EventBus from 'modules/helpers/eventbus';
import './quote.scss';
export default class Quote extends PureComponent {
buttons = {
- tweet:
this.tweetQuote()} />,
- copy: this.copyQuote()} />,
- unfavourited: this.favourite()} />,
- favourited: this.favourite()} />
- }
+ share: (
+
+
+
+ ),
+ copy: (
+
+
+
+ ),
+ unfavourited: (
+
+
+
+ ),
+ favourited: (
+
+
+
+ ),
+ };
constructor() {
super();
this.state = {
quote: '',
author: '',
+ authorOccupation: '',
favourited: this.useFavourite(),
- tweet: (localStorage.getItem('tweetButton') === 'false') ? null : this.buttons.tweet,
- copy: (localStorage.getItem('copyButton') === 'false') ? null : this.buttons.copy,
+ share: localStorage.getItem('quoteShareButton') === 'false' ? null : this.buttons.share,
+ copy: localStorage.getItem('copyButton') === 'false' ? null : this.buttons.copy,
quoteLanguage: '',
- type: localStorage.getItem('quoteType') || 'api'
+ type: localStorage.getItem('quoteType') || 'api',
+ shareModal: false,
};
this.quote = createRef();
this.quotediv = createRef();
@@ -35,44 +72,112 @@ export default class Quote extends PureComponent {
}
useFavourite() {
- let favouriteQuote = null;
if (localStorage.getItem('favouriteQuoteEnabled') === 'true') {
- favouriteQuote = localStorage.getItem('favouriteQuote') ? this.buttons.favourited : this.buttons.unfavourited;
+ return localStorage.getItem('favouriteQuote')
+ ? this.buttons.favourited
+ : this.buttons.unfavourited;
+ } else {
+ return null;
}
- return favouriteQuote;
}
doOffline() {
- const quotes = require('./offline_quotes.json');
-
- // Get a random quote from our local package
- const quote = quotes[Math.floor(Math.random() * quotes.length)];
+ // Get a random quote from our local JSON
+ const quote = offline_quotes[Math.floor(Math.random() * offline_quotes.length)];
this.setState({
quote: '"' + quote.quote + '"',
author: quote.author,
- authorlink: this.getAuthorLink(quote.author)
+ authorlink: this.getAuthorLink(quote.author),
+ authorimg: '',
});
}
getAuthorLink(author) {
- let authorlink = `https://${variables.languagecode.split('_')[0]}.wikipedia.org/wiki/${author.split(' ').join('_')}`;
- if (localStorage.getItem('authorLink') === 'false' || author === 'Unknown') {
- authorlink = null;
+ return localStorage.getItem('authorLink') === 'false' || author === 'Unknown'
+ ? null
+ : `https://${variables.languagecode.split('_')[0]}.wikipedia.org/wiki/${author
+ .split(' ')
+ .join('_')}`;
+ }
+
+ async getAuthorImg(author) {
+ if (localStorage.getItem('authorImg') === 'false') {
+ return {
+ authorimg: null,
+ authorimglicense: null,
+ };
}
- return authorlink;
+ const authorimgdata = await (
+ await fetch(
+ `https://${
+ variables.languagecode.split('_')[0]
+ }.wikipedia.org/w/api.php?action=query&titles=${author}&origin=*&prop=pageimages&format=json&pithumbsize=100`,
+ )
+ ).json();
+
+ let authorimg, authorimglicense;
+ try {
+ authorimg =
+ authorimgdata.query.pages[Object.keys(authorimgdata.query.pages)[0]].thumbnail.source;
+
+ const authorimglicensedata = await (
+ await fetch(
+ `https://${
+ variables.languagecode.split('_')[0]
+ }.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File:${
+ authorimgdata.query.pages[Object.keys(authorimgdata.query.pages)[0]].pageimage
+ }&origin=*&format=json`,
+ )
+ ).json();
+
+ const metadata =
+ authorimglicensedata.query.pages[Object.keys(authorimglicensedata.query.pages)[0]]
+ .imageinfo[0].extmetadata;
+ const license = metadata.LicenseShortName;
+ const photographer =
+ metadata.Attribution.value ||
+ metadata.Artist?.value.match(/(?.+)<\/a>/i)?.groups.name ||
+ 'Unknown';
+ authorimglicense = `© ${photographer}. ${license.value}`;
+ authorimglicense = authorimglicense.replace(/copyright\s/i, '').replace(/©\s©\s/, '© ');
+
+ if (license.value === 'Public domain') {
+ authorimglicense = null;
+ } else if (photographer.value === 'Unknown' || !photographer) {
+ authorimglicense = null;
+ authorimg = null;
+ }
+ } catch (e) {
+ authorimg = null;
+ authorimglicense = null;
+ }
+
+ if (author === 'Unknown') {
+ authorimg = null;
+ authorimglicense = null;
+ }
+
+ return {
+ authorimg,
+ authorimglicense,
+ };
}
async getQuote() {
- const offline = (localStorage.getItem('offlineMode') === 'true');
+ const offline = localStorage.getItem('offlineMode') === 'true';
const favouriteQuote = localStorage.getItem('favouriteQuote');
if (favouriteQuote) {
+ let author = favouriteQuote.split(' - ')[1];
+ const authorimgdata = await this.getAuthorImg(author);
return this.setState({
quote: favouriteQuote.split(' - ')[0],
- author: favouriteQuote.split(' - ')[1],
- authorlink: this.getAuthorLink(favouriteQuote.split(' - ')[1])
+ author,
+ authorlink: this.getAuthorLink(author),
+ authorimg: authorimgdata.authorimg,
+ authorimglicense: authorimgdata.authorimglicense,
});
}
@@ -83,21 +188,31 @@ export default class Quote extends PureComponent {
customQuote = JSON.parse(localStorage.getItem('customQuote'));
} catch (e) {
// move to new format
- customQuote = [{
- quote: localStorage.getItem('customQuote'),
- author: localStorage.getItem('customQuoteAuthor')
- }];
+ customQuote = [
+ {
+ quote: localStorage.getItem('customQuote'),
+ author: localStorage.getItem('customQuoteAuthor'),
+ },
+ ];
localStorage.setItem('customQuote', JSON.stringify(customQuote));
}
// pick random
- customQuote = customQuote ? customQuote[Math.floor(Math.random() * customQuote.length)] : null;
+ customQuote = customQuote
+ ? customQuote[Math.floor(Math.random() * customQuote.length)]
+ : null;
- if (customQuote && customQuote !== '' && customQuote !== 'undefined' && customQuote !== ['']) {
+ if (customQuote !== undefined) {
return this.setState({
quote: '"' + customQuote.quote + '"',
author: customQuote.author,
- authorlink: this.getAuthorLink(customQuote.author)
+ authorlink: this.getAuthorLink(customQuote.author),
+ authorimg: await this.getAuthorImg(customQuote.author),
+ noQuote: false,
+ });
+ } else {
+ this.setState({
+ noQuote: true,
});
}
break;
@@ -106,65 +221,68 @@ export default class Quote extends PureComponent {
return this.doOffline();
}
- const quotePackAPI = JSON.parse(localStorage.getItem('quoteAPI'));
- if (quotePackAPI) {
- try {
- const data = await (await fetch(quotePackAPI.url)).json();
- const author = data[quotePackAPI.author] || quotePackAPI.author;
+ const quotePack = [];
+ const installed = JSON.parse(localStorage.getItem('installed'));
+ installed.forEach((item) => {
+ if (item.type === 'quotes') {
+ const quotes = item.quotes.map((quote) => ({
+ ...quote,
+ fallbackauthorimg: item.icon_url,
+ }));
+ quotePack.push(...quotes);
+ }
+ });
- return this.setState({
- quote: '"' + data[quotePackAPI.quote] + '"',
- author: author,
- authorlink: this.getAuthorLink(author)
- });
- } catch (e) {
- return this.doOffline();
- }
+ if (quotePack) {
+ const data = quotePack[Math.floor(Math.random() * quotePack.length)];
+ return this.setState({
+ quote: '"' + data.quote + '"',
+ author: data.author,
+ authorlink: this.getAuthorLink(data.author),
+ authorimg: data.fallbackauthorimg,
+ });
+ } else {
+ return this.doOffline();
}
-
- let quotePack = localStorage.getItem('quote_packs');
-
- if (quotePack !== null) {
- quotePack = JSON.parse(quotePack);
-
- if (quotePack) {
- const data = quotePack[Math.floor(Math.random() * quotePack.length)];
- return this.setState({
- quote: '"' + data.quote + '"',
- author: data.author,
- authorlink: this.getAuthorLink(data.author)
- });
- } else {
- return this.doOffline();
- }
- }
- break;
case 'api':
if (offline) {
return this.doOffline();
}
- // First we try and get a quote from the API...
- try {
- const quotelanguage = localStorage.getItem('quotelanguage');
- const data = await (await fetch(variables.constants.API_URL + '/quotes/random?language=' + quotelanguage)).json();
-
- // If we hit the ratelimit, we fallback to local quotes
+ const getAPIQuoteData = async () => {
+ const quoteLanguage = localStorage.getItem('quoteLanguage');
+ const data = await (
+ await fetch(variables.constants.API_URL + '/quotes/random?language=' + quoteLanguage)
+ ).json();
+ // If we hit the ratelimit, we fall back to local quotes
if (data.statusCode === 429) {
- return this.doOffline();
+ return null;
}
-
- const object = {
- quote: '"' + data.quote + '"',
+ const authorimgdata = await this.getAuthorImg(data.author);
+ return {
+ quote: '"' + data.quote.replace(/\s+$/g, '') + '"',
author: data.author,
authorlink: this.getAuthorLink(data.author),
- quoteLanguage: quotelanguage
+ authorimg: authorimgdata.authorimg,
+ authorimglicense: authorimgdata.authorimglicense,
+ quoteLanguage: quoteLanguage,
+ authorOccupation: data.author_occupation,
};
+ };
- this.setState(object);
- localStorage.setItem('currentQuote', JSON.stringify(object));
+ // First we try and get a quote from the API...
+ try {
+ let data = JSON.parse(localStorage.getItem('nextQuote')) || (await getAPIQuoteData());
+ localStorage.setItem('nextQuote', null);
+ if (data) {
+ this.setState(data);
+ localStorage.setItem('currentQuote', JSON.stringify(data));
+ localStorage.setItem('nextQuote', JSON.stringify(await getAPIQuoteData())); // pre-fetch data about the next quote
+ } else {
+ this.doOffline();
+ }
} catch (e) {
- // ..and if that fails we load one locally
+ // ...and if that fails we load one locally
this.doOffline();
}
break;
@@ -176,24 +294,19 @@ export default class Quote extends PureComponent {
copyQuote() {
variables.stats.postEvent('feature', 'Quote copied');
navigator.clipboard.writeText(`${this.state.quote} - ${this.state.author}`);
- toast(variables.language.getMessage(variables.languagecode, 'toasts.quote'));
- }
-
- tweetQuote() {
- variables.stats.postEvent('feature', 'Quote tweet');
- window.open(`https://twitter.com/intent/tweet?text=${this.state.quote} - ${this.state.author} on @getmue`, '_blank').focus();
+ toast(variables.getMessage('toasts.quote'));
}
favourite() {
if (localStorage.getItem('favouriteQuote')) {
localStorage.removeItem('favouriteQuote');
this.setState({
- favourited: this.buttons.unfavourited
+ favourited: this.buttons.unfavourited,
});
} else {
localStorage.setItem('favouriteQuote', this.state.quote + ' - ' + this.state.author);
this.setState({
- favourited: this.buttons.favourited
+ favourited: this.buttons.favourited,
});
}
@@ -205,8 +318,12 @@ export default class Quote extends PureComponent {
const quoteType = localStorage.getItem('quoteType');
- if (this.state.type !== quoteType || localStorage.getItem('quotelanguage') !== this.state.quoteLanguage || (quoteType === 'custom' && this.state.quote !== localStorage.getItem('customQuote'))
- || (quoteType === 'custom' && this.state.author !== localStorage.getItem('customQuoteAuthor'))) {
+ if (
+ this.state.type !== quoteType ||
+ localStorage.getItem('quoteLanguage') !== this.state.quoteLanguage ||
+ (quoteType === 'custom' && this.state.quote !== localStorage.getItem('customQuote')) ||
+ (quoteType === 'custom' && this.state.author !== localStorage.getItem('customQuoteAuthor'))
+ ) {
this.getQuote();
}
}
@@ -218,10 +335,36 @@ export default class Quote extends PureComponent {
}
componentDidMount() {
+ // const test = localStorage.getItem('quotechange');
+
+ // this.interval = setInterval(() => {
+ // if (test !== null) {
+ // const targetTime = Number(
+ // Number(localStorage.getItem('quoteStartTime')) +
+ // Number(localStorage.getItem('quotechange')),
+ // );
+ // const currentTime = Number(Date.now());
+ // if (currentTime >= targetTime) {
+ // this.setZoom();
+ // this.getQuote();
+ // localStorage.setItem('quoteStartTime', Date.now());
+ // } else {
+ // try {
+ // this.setState(JSON.parse(localStorage.getItem('currentQuote')));
+ // } catch (e) {
+ // this.setZoom();
+ // this.getQuote();
+ // }
+ // }
+ // }
+ // });
+
+ this.setZoom();
+
EventBus.on('refresh', (data) => {
if (data === 'quote') {
if (localStorage.getItem('quote') === 'false') {
- return this.quotediv.current.style.display = 'none';
+ return (this.quotediv.current.style.display = 'none');
}
this.quotediv.current.style.display = 'block';
@@ -230,8 +373,8 @@ export default class Quote extends PureComponent {
// buttons hot reload
this.setState({
favourited: this.useFavourite(),
- tweet: (localStorage.getItem('tweetButton') === 'false') ? null : this.buttons.tweet,
- copy: (localStorage.getItem('copyButton') === 'false') ? null : this.buttons.copy
+ share: localStorage.getItem('quoteShareButton') === 'false' ? null : this.buttons.share,
+ copy: localStorage.getItem('copyButton') === 'false' ? null : this.buttons.copy,
});
}
@@ -245,42 +388,109 @@ export default class Quote extends PureComponent {
}
});
- const interval = localStorage.getItem('quotechange');
- if (interval && interval !== 'refresh' && localStorage.getItem('quoteType') === 'api') {
- Interval(() => {
- this.setZoom();
- this.getQuote();
- }, Number(interval), 'quote');
-
- try {
- this.setState(JSON.parse(localStorage.getItem('currentQuote')));
- } catch (e) {
- this.setZoom();
- this.getQuote();
- }
- } else {
- // don't bother with the checks if we're loading for the first time
+ if (
+ localStorage.getItem('quotechange') === 'refresh' ||
+ localStorage.getItem('quotechange') === null
+ ) {
this.setZoom();
this.getQuote();
+ localStorage.setItem('quoteStartTime', Date.now());
}
}
componentWillUnmount() {
EventBus.off('refresh');
+ clearInterval(this.interval);
}
render() {
+ if (this.state.noQuote === true) {
+ return <>>;
+ }
+
return (
-
-
{this.state.quote}
-
- {this.state.author}
-
- {this.state.copy} {this.state.tweet} {this.state.favourited}
-
- {/*variables.keybinds.favouriteQuote && variables.keybinds.favouriteQuote !== '' ?
this.favourite()} /> : null*/}
- {/*variables.keybinds.tweetQuote && variables.keybinds.tweetQuote !== '' ? this.tweetQuote()} /> : null*/}
- {/*variables.keybinds.copyQuote && variables.keybinds.copyQuote !== '' ? this.copyQuote()} /> : null*/}
+
+
this.setState({ shareModal: false })}
+ >
+ this.setState({ shareModal: false })}
+ />
+
+
+ {this.state.quote}
+
+
+ {localStorage.getItem('widgetStyle') === 'legacy' ? (
+ <>
+
+
+ {this.state.copy} {this.state.share} {this.state.favourited}
+
+ >
+ ) : (
+
+
+
+ {this.state.authorimg === undefined || this.state.authorimg ? '' : }
+
+ {this.state.author !== '' ? (
+
+ {this.state.author}
+ {this.state.authorOccupation !== 'Unknown' ? (
+ {this.state.authorOccupation}
+ ) : null}
+
+ {this.state.authorimglicense
+ ? this.state.authorimglicense.replace(' undefined. ', ' ')
+ : null}
+
+
+ ) : (
+
+ {/* these are placeholders for skeleton and as such don't need translating */}
+ loading
+ loading
+
+ )}
+
+ {this.state.authorOccupation !== 'Unknown' && this.state.authorlink !== '' ? (
+
+
+
+ {' '}
+
+ ) : null}
+ {this.state.copy} {this.state.share} {this.state.favourited}
+
+
+
+ )}
);
}
diff --git a/src/components/widgets/quote/quote.scss b/src/components/widgets/quote/quote.scss
index 0834b5ed..b6ed2a68 100644
--- a/src/components/widgets/quote/quote.scss
+++ b/src/components/widgets/quote/quote.scss
@@ -1,19 +1,14 @@
-@import '../../../scss/variables';
+@import 'scss/variables';
.quote {
font-size: 0.8em;
text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
cursor: initial;
user-select: none;
-
--shadow-shift: 0.125rem;
-}
-
-@media screen and (min-width: 600px) {
- .quote {
- margin-left: 30%;
- margin-right: 30%;
- }
+ color: #fff;
+ font-weight: 600;
+ width: 40vw;
}
.quoteauthor {
@@ -29,23 +24,132 @@
}
}
-.copyButton {
- cursor: pointer;
- vertical-align: middle;
- transition: ease 0.2s !important;
-
- &:hover {
- transform: scale(1.1);
- }
-}
-
i.material-icons,
h1.quoteauthor {
display: inline;
}
-.quoteauthorlink {
+.quoteAuthorLink {
text-decoration: none;
color: white;
user-select: none;
}
+
+.author {
+ @extend %basic;
+ display: flex;
+ flex-flow: row;
+ height: 70px;
+ font-weight: 300;
+ margin: 10px;
+}
+
+.author-name {
+ font-size: clamp(15px, 2.5vw, 0.6em);
+}
+
+.author-knownfor {
+ font-size: clamp(13px, 2.5vw, 0.4em);
+ @include themed() {
+ color: t($subColor);
+ }
+}
+
+.author-license {
+ font-size: clamp(8px, 2.5vw, 0.1em);
+ @include themed() {
+ color: t($subColor);
+ }
+}
+
+.author img {
+ height: 100%;
+ width: auto;
+ border-radius: 12px 0 0 12px;
+}
+
+.author-img {
+ @extend %basic;
+ height: 100%;
+ width: 70px;
+ border-radius: 12px 0 0 12px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-size: cover !important;
+ background-repeat: no-repeat !important;
+ background-position: initial;
+}
+
+.author-content {
+ display: flex;
+ flex-flow: column;
+ justify-content: center;
+ align-items: flex-start;
+ padding: 20px;
+ text-align: left;
+}
+
+.author-holder {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-flow: column;
+ animation: fadeIn 1s;
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+.quote-buttons {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 20px 20px 20px 0;
+
+ a {
+ display: flex;
+ }
+ a {
+ @include basicIconButton(11px, 1.3rem, ui);
+ }
+}
+
+.quotediv {
+ animation: fadeIn 1s;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ align-items: center;
+ button {
+ @include basicIconButton(11px, 1.3rem, ui);
+ }
+}
+
+.deleteButton {
+ height: auto !important;
+ @include basicIconButton(11px, 1.3rem, modal);
+ padding: 10px 20px;
+}
+
+.author-content.whileLoading {
+ @include themed() {
+ gap: 5px;
+ .title {
+ color: transparent;
+ width: 100px;
+ background: t($modal-sidebar);
+ }
+ .subtitle {
+ color: transparent;
+ width: 50px;
+ background: t($modal-sidebarActive);
+ }
+ }
+}
diff --git a/src/components/widgets/search/Search.jsx b/src/components/widgets/search/Search.jsx
index 12854d23..d82b6b49 100644
--- a/src/components/widgets/search/Search.jsx
+++ b/src/components/widgets/search/Search.jsx
@@ -1,7 +1,7 @@
import variables from 'modules/variables';
-import { PureComponent } from 'react';
-import { MdSearch, MdMic } from 'react-icons/md';
-//import Hotkeys from 'react-hot-keys';
+import { PureComponent, createRef } from 'react';
+import { MdSearch, MdMic, MdScreenSearchDesktop } from 'react-icons/md';
+import Tooltip from 'components/helpers/tooltip/Tooltip';
import AutocompleteInput from 'components/helpers/autocomplete/Autocomplete';
@@ -9,8 +9,7 @@ import EventBus from 'modules/helpers/eventbus';
import './search.scss';
-const searchEngines = require('./search_engines.json');
-const autocompleteProviders = require('./autocomplete_providers.json');
+import searchEngines from 'components/widgets/search/search_engines.json';
export default class Search extends PureComponent {
constructor() {
@@ -18,19 +17,21 @@ export default class Search extends PureComponent {
this.state = {
url: '',
query: '',
- autocompleteURL: '',
- autocompleteQuery: '',
- autocompleteCallback: '',
microphone: null,
suggestions: [],
- searchDropdown: 'hidden'
+ searchDropdown: false,
+ classList:
+ localStorage.getItem('widgetStyle') === 'legacy' ? 'searchIcons old' : 'searchIcons',
};
+ this.micIcon = createRef();
}
startSpeechRecognition = () => {
const voiceSearch = new window.webkitSpeechRecognition();
voiceSearch.start();
+ this.micIcon.current.classList.add('micActive');
+
const searchText = document.getElementById('searchtext');
voiceSearch.onresult = (event) => {
@@ -38,6 +39,7 @@ export default class Search extends PureComponent {
};
voiceSearch.onend = () => {
+ this.micIcon.current.classList.remove('micActive');
if (searchText.value === '') {
return;
}
@@ -47,33 +49,29 @@ export default class Search extends PureComponent {
window.location.href = this.state.url + `?${this.state.query}=` + searchText.value;
}, 1000);
};
- }
+ };
searchButton = (e) => {
e.preventDefault();
const value = e.target.value || document.getElementById('searchtext').value || 'mue fast';
variables.stats.postEvent('feature', 'Search');
window.location.href = this.state.url + `?${this.state.query}=` + value;
- }
+ };
async getSuggestions(input) {
- window.setResults = (results) => {
+ window.setResults = (results) => {
window.searchResults = results;
};
- const script = document.createElement('script');
- script.src = `${this.state.autocompleteURL + this.state.autocompleteQuery + input}&${this.state.autocompleteCallback}=window.setResults`;
- document.head.appendChild(script);
+ const results = await (await fetch(`https://ac.ecosia.org/?q=${input}`)).json();
try {
this.setState({
- suggestions: window.searchResults[1].splice(0, 3)
+ suggestions: results.suggestions.splice(0, 3),
});
} catch (e) {
// ignore error if empty
}
-
- document.head.removeChild(script);
}
init() {
@@ -95,41 +93,21 @@ export default class Search extends PureComponent {
}
if (localStorage.getItem('voiceSearch') === 'true') {
- microphone = ;
- }
-
- let autocompleteURL, autocompleteQuery, autocompleteCallback;
-
- if (localStorage.getItem('autocomplete') === 'true') {
- const info = autocompleteProviders.find((i) => i.value === localStorage.getItem('autocompleteProvider'));
- autocompleteURL = info.url;
- autocompleteQuery = info.query;
- autocompleteCallback = info.callback;
+ microphone = (
+
+ );
}
this.setState({
url,
query,
- autocompleteURL,
- autocompleteQuery,
- autocompleteCallback,
microphone,
- currentSearch: info ? info.name : 'Custom'
+ currentSearch: info ? info.name : 'Custom',
});
}
- toggleDropdown() {
- if (this.state.searchDropdown === 'hidden') {
- this.setState({
- searchDropdown: 'visible'
- });
- } else {
- this.setState({
- searchDropdown: 'hidden'
- });
- }
- }
-
setSearch(name, custom) {
let url;
let query = 'q';
@@ -150,7 +128,7 @@ export default class Search extends PureComponent {
url,
query,
currentSearch: name,
- searchDropdown: 'hidden'
+ searchDropdown: false,
});
}
@@ -160,8 +138,15 @@ export default class Search extends PureComponent {
this.init();
}
});
-
+
this.init();
+
+ if (localStorage.getItem('searchFocus') === 'true') {
+ const element = document.getElementById('searchtext');
+ if (element) {
+ element.focus();
+ }
+ }
}
componentWillUnmount() {
@@ -169,33 +154,77 @@ export default class Search extends PureComponent {
}
render() {
- const customText = variables.language.getMessage(variables.languagecode, 'modals.main.settings.sections.search.custom').split(' ')[0];
+ const customText = variables
+ .getMessage('modals.main.settings.sections.search.custom')
+ .split(' ')[0];
return (
- <>
-
- {localStorage.getItem('searchDropdown') === 'true' ?
-
- {searchEngines.map(({ name }) => {
- if (name === this.state.currentSearch) {
- return null;
- }
-
- return (
- this.setSearch(name)}>{name}
- );
- })}
- {this.state.currentSearch !== customText ? this.setSearch(customText, 'custom')}>{customText} : null}
-
: null}
+
+
+
+ {localStorage.getItem('searchDropdown') === 'true' ? (
+
+
+
+ ) : (
+ ''
+ )}
+
+ {this.state.microphone}
+
+
+
-
- >
+
+ {localStorage.getItem('searchDropdown') === 'true' &&
+ this.state.searchDropdown === true ? (
+
+ {searchEngines.map(({ name }, key) => {
+ if (name === this.state.currentSearch) {
+ return null;
+ }
+
+ return (
+ this.setSearch(name)}
+ key={key}
+ >
+ {name}
+
+ );
+ })}
+ {this.state.currentSearch !== customText ? (
+ this.setSearch(customText, 'custom')}
+ >
+ {customText}
+
+ ) : null}
+
+ ) : null}
+
+
);
}
}
diff --git a/src/components/widgets/search/autocomplete_providers.json b/src/components/widgets/search/autocomplete_providers.json
deleted file mode 100644
index 292d5521..00000000
--- a/src/components/widgets/search/autocomplete_providers.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
- {
- "name": "Google",
- "value": "google",
- "url": "https://www.google.com/complete/search?client=chrome",
- "callback": "callback",
- "query": "&q="
- },
- {
- "name": "Bing",
- "value": "bing",
- "url": "https://api.bing.com/osjson.aspx?JsonType=callback",
- "callback": "JsonCallback",
- "query": "&query="
- }
-]
-
\ No newline at end of file
diff --git a/src/components/widgets/search/search.scss b/src/components/widgets/search/search.scss
index 4d081cb5..52a4b7ff 100644
--- a/src/components/widgets/search/search.scss
+++ b/src/components/widgets/search/search.scss
@@ -1,115 +1,74 @@
-@import '../../../scss/variables';
+@import 'scss/variables';
.searchBar {
- position: absolute;
- left: 20px;
- top: 20px;
- color: map-get($theme-colours, 'main-text-color');
+ display: flex;
+ border-radius: 12px;
+ justify-content: flex-start;
+ flex-direction: row;
- input[type=text] {
- width: 140px;
- margin-left: 40px;
- border-radius: 24px;
- font-size: calc(5px + 1.2vmin);
+ input[type='text'] {
+ @extend %basic;
+ outline: none;
border: none;
- position: absolute;
- background-color: rgba(255, 255, 255, 0.7);
- -webkit-transition: width 0.5s ease-in-out;
- transition: width 0.5s ease-in-out;
- color: black;
- padding: 0.5rem 1rem;
- user-select: none;
+ font-size: 1.2rem;
+ padding: 10px 0 10px 20px;
- &:focus {
- width: 400px;
- background-color: rgba(255, 255, 255, 0.8);
- user-select: text;
- }
-
- &::-webkit-input-placeholder {
- color: black;
- }
-
- &::-moz-placeholder {
- color: black;
+ &::placeholder {
+ @include themed() {
+ color: t($color);
+ }
}
}
+}
- svg {
- position: absolute;
- margin-top: 6px;
- font-size: 30px;
- filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.3));
- cursor: pointer;
- transition: all 0.5s ease 0s;
+.searchIcons {
+ display: flex;
+ gap: 10px;
+ margin-top: 1px;
+ margin-right: 10px;
- &:hover {
- transform: scale(1.1);
- }
+ .tooltip {
+ max-height: 44px;
+ }
+}
+
+.searchComponents {
+ position: absolute;
+ top: 1rem;
+ left: 1rem;
+ display: flex;
+ flex-flow: column;
+
+ button {
+ @include basicIconButton(12px, 1.2rem, ui);
}
}
.searchDropdown {
- display: block;
- margin-top: 10px;
- font-size: calc(5px + 1.2vmin);
- user-select: none;
- position: absolute;
- top: 2.5em;
- left: 1em;
+ @extend %basic;
+ margin-top: 5px;
+ display: flex;
+ flex-flow: column;
+ align-content: flex-start;
text-align: left;
- background-color: rgba(0, 0, 0, 0.5);
- border-radius: 20px;
- padding: 10px;
- width: 250px;
+ font-size: 0.6em;
+ width: 200px;
+ transition: 0.5s;
span {
- display: block;
- }
-
- .searchDropdownList, .searchSelected {
+ padding: 0.5rem;
cursor: pointer;
+ border-radius: 12px;
&:hover {
- color: rgb(214, 214, 214);
+ @include themed() {
+ background: t($btn-backgroundHover);
+ }
}
}
}
-.micIcon {
- margin-right: 10px;
- position: relative !important;
-}
-
-.dark .searchBar {
- input[type=text] {
- background-color: rgba(0, 0, 0, 0.3);
- color: white;
-
- &:focus {
- background-color: rgba(0, 0, 0, 0.5);
- }
-
- &::-webkit-input-placeholder {
- color: white;
- }
-
- &::-moz-placeholder {
- color: white;
- }
- }
-}
-
-.dropdown-span {
- font-size: calc(5px + 1.2vmin);
- display: inline-block;
- padding-top: 8px;
- vertical-align: top;
- margin-right: 30px;
- cursor: pointer;
- user-select: none;
-
- &:hover {
- color: rgb(214, 214, 214);
- }
+.searchMain {
+ display: flex;
+ flex-flow: row;
}
diff --git a/src/components/widgets/search/search_engines.json b/src/components/widgets/search/search_engines.json
index aef6f2b2..ee651da8 100644
--- a/src/components/widgets/search/search_engines.json
+++ b/src/components/widgets/search/search_engines.json
@@ -54,6 +54,7 @@
{
"name": "百度",
"settingsName": "baidu",
- "url": "https://www.baidu.com/s?wd="
+ "url": "https://www.baidu.com/s",
+ "query": "wd"
}
]
diff --git a/src/components/widgets/time/Clock.jsx b/src/components/widgets/time/Clock.jsx
index 09abd866..23942455 100644
--- a/src/components/widgets/time/Clock.jsx
+++ b/src/components/widgets/time/Clock.jsx
@@ -6,7 +6,6 @@ import EventBus from 'modules/helpers/eventbus';
import './clock.scss';
const Analog = lazy(() => import('react-clock'));
-const renderLoader = () => <>>;
export default class Clock extends PureComponent {
constructor() {
@@ -15,11 +14,22 @@ export default class Clock extends PureComponent {
this.timer = undefined;
this.state = {
time: '',
- ampm: ''
+ finalHour: '',
+ finalMinute: '',
+ finalSeconds: '',
+ ampm: '',
+ nowGlobal: new Date(),
+ minuteColour: localStorage.getItem('minuteColour'),
+ hourColour: localStorage.getItem('hourColour'),
};
}
- startTime(time = localStorage.getItem('seconds') === 'true' || localStorage.getItem('timeType') === 'analogue' ? (1000 - Date.now() % 1000) : (60000 - Date.now() % 60000)) {
+ startTime(
+ time = localStorage.getItem('seconds') === 'true' ||
+ localStorage.getItem('timeType') === 'analogue'
+ ? 1000 - (Date.now() % 1000)
+ : 60000 - (Date.now() % 60000),
+ ) {
this.timer = setTimeout(() => {
let now = new Date();
const timezone = localStorage.getItem('timezone');
@@ -31,36 +41,48 @@ export default class Clock extends PureComponent {
case 'percentageComplete':
this.setState({
time: (now.getHours() / 24).toFixed(2).replace('0.', '') + '%',
- ampm: ''
+ ampm: '',
});
- break;
+ break;
case 'analogue':
// load analog clock css
- require('react-clock/dist/Clock.css');
+ import('react-clock/dist/Clock.css');
this.setState({
- time: now
+ time: now,
});
break;
default:
// Default clock
- let time, sec = '';
+ let time,
+ sec = '';
const zero = localStorage.getItem('zero');
if (localStorage.getItem('seconds') === 'true') {
sec = `:${('00' + now.getSeconds()).slice(-2)}`;
+ this.setState({ finalSeconds: `:${('00' + now.getSeconds()).slice(-2)}` });
}
if (localStorage.getItem('timeformat') === 'twentyfourhour') {
if (zero === 'false') {
time = `${now.getHours()}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
+ this.setState({
+ finalHour: `${now.getHours()}`,
+ finalMinute: `${('00' + now.getMinutes()).slice(-2)}`,
+ });
} else {
- time = `${('00' + now.getHours()).slice(-2)}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
+ time = `${('00' + now.getHours()).slice(-2)}:${('00' + now.getMinutes()).slice(
+ -2,
+ )}${sec}`;
+ this.setState({
+ finalHour: `${('00' + now.getHours()).slice(-2)}`,
+ finalMinute: `${('00' + now.getMinutes()).slice(-2)}`,
+ });
}
this.setState({
time,
- ampm: ''
+ ampm: '',
});
} else {
// 12 hour
@@ -74,13 +96,21 @@ export default class Clock extends PureComponent {
if (zero === 'false') {
time = `${hours}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
+ this.setState({
+ finalHour: `${hours}`,
+ finalMinute: `${('00' + now.getMinutes()).slice(-2)}`,
+ });
} else {
time = `${('00' + hours).slice(-2)}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
+ this.setState({
+ finalHour: `${('00' + hours).slice(-2)}`,
+ finalMinute: `${('00' + now.getMinutes()).slice(-2)}`,
+ });
}
this.setState({
time,
- ampm: now.getHours() > 11 ? 'PM' : 'AM'
+ ampm: now.getHours() > 11 ? 'PM' : 'AM',
});
}
break;
@@ -96,19 +126,23 @@ export default class Clock extends PureComponent {
const element = document.querySelector('.clock-container');
if (localStorage.getItem('time') === 'false') {
- return element.style.display = 'none';
+ return (element.style.display = 'none');
}
this.timer = null;
this.startTime(0);
element.style.display = 'block';
- element.style.fontSize = `${4 * Number((localStorage.getItem('zoomClock') || 100) / 100)}em`;
+ element.style.fontSize = `${
+ 4 * Number((localStorage.getItem('zoomClock') || 100) / 100)
+ }em`;
}
});
if (localStorage.getItem('timeType') !== 'analogue') {
- document.querySelector('.clock-container').style.fontSize = `${4 * Number((localStorage.getItem('zoomClock') || 100) / 100)}em`;
+ document.querySelector('.clock-container').style.fontSize = `${
+ 4 * Number((localStorage.getItem('zoomClock') || 100) / 100)
+ }em`;
}
this.startTime(0);
@@ -119,28 +153,49 @@ export default class Clock extends PureComponent {
}
render() {
- let clockHTML =
{this.state.time}{this.state.ampm}
;
-
const enabled = (setting) => {
- return (localStorage.getItem(setting) === 'true');
+ return localStorage.getItem(setting) === 'true';
};
if (localStorage.getItem('timeType') === 'analogue') {
- clockHTML = (
-
-
+ return (
+ >}>
+
);
}
- return clockHTML;
+ if (localStorage.getItem('timeType') === 'verticalClock') {
+ return (
+
+ {' '}
+
+ {this.state.finalHour}
+
{' '}
+
+ {this.state.finalMinute}
+
{' '}
+ {this.state.finalSeconds}
{' '}
+
+ );
+ }
+
+ return (
+
+ {this.state.time}
+ {this.state.ampm}
+
+ );
}
}
diff --git a/src/components/widgets/time/Date.jsx b/src/components/widgets/time/Date.jsx
index 59dbb744..b248cf49 100644
--- a/src/components/widgets/time/Date.jsx
+++ b/src/components/widgets/time/Date.jsx
@@ -11,7 +11,7 @@ export default class DateWidget extends PureComponent {
super();
this.state = {
date: '',
- weekNumber: null
+ weekNumber: null,
};
this.date = createRef();
}
@@ -25,11 +25,13 @@ export default class DateWidget extends PureComponent {
dateToday.setMonth(0, 1);
if (dateToday.getDay() !== 4) {
- dateToday.setMonth(0, 1 + ((4 - dateToday.getDay()) + 7) % 7);
+ dateToday.setMonth(0, 1 + ((4 - dateToday.getDay() + 7) % 7));
}
this.setState({
- weekNumber: `${variables.language.getMessage(variables.languagecode, 'widgets.date.week')} ${1 + Math.ceil((firstThursday - dateToday) / 604800000)}`
+ weekNumber: `${variables.getMessage('widgets.date.week')} ${
+ 1 + Math.ceil((firstThursday - dateToday) / 604800000)
+ }`,
});
}
@@ -44,7 +46,7 @@ export default class DateWidget extends PureComponent {
this.getWeekNumber(date);
} else if (this.state.weekNumber !== null) {
this.setState({
- weekNumber: null
+ weekNumber: null,
});
}
@@ -53,7 +55,7 @@ export default class DateWidget extends PureComponent {
const dateMonth = date.getMonth() + 1;
const dateYear = date.getFullYear();
- const zero = (localStorage.getItem('datezero') === 'true');
+ const zero = localStorage.getItem('datezero') === 'true';
let day = zero ? ('00' + dateDay).slice(-2) : dateDay;
let month = zero ? ('00' + dateMonth).slice(-2) : dateMonth;
@@ -69,7 +71,7 @@ export default class DateWidget extends PureComponent {
year = dateDay;
break;
// DMY
- default:
+ default:
break;
}
@@ -87,24 +89,46 @@ export default class DateWidget extends PureComponent {
case 'slashes':
format = `${day}/${month}/${year}`;
break;
- default:
+ default:
break;
}
this.setState({
- date: format
+ date: format,
});
} else {
// Long date
const lang = variables.languagecode.split('_')[0];
- const datenth = (localStorage.getItem('datenth') === 'true') ? nth(date.getDate()) : date.getDate();
+ const datenth =
+ localStorage.getItem('datenth') === 'true' ? nth(date.getDate()) : date.getDate();
- const day = (localStorage.getItem('dayofweek') === 'true') ? date.toLocaleDateString(lang, { weekday: 'long' }) : '';
- const month = date.toLocaleDateString(lang, { month: 'long' });
+ const dateDay =
+ localStorage.getItem('dayofweek') === 'true'
+ ? date.toLocaleDateString(lang, { weekday: 'long' })
+ : '';
+ const dateMonth = date.toLocaleDateString(lang, { month: 'long' });
+ const dateYear = date.getFullYear();
+
+ let day = dateDay + ' ' + datenth;
+ let month = dateMonth;
+ let year = dateYear;
+ switch (localStorage.getItem('longFormat')) {
+ case 'MDY':
+ day = dateMonth;
+ month = dateDay + ' ' + datenth;
+ break;
+ case 'YMD':
+ day = dateYear;
+ year = dateDay + ' ' + datenth;
+ break;
+ // DMY
+ default:
+ break;
+ }
this.setState({
- date: `${day} ${datenth} ${month} ${date.getFullYear()}`
+ date: `${day} ${month} ${year}`,
});
}
}
@@ -113,16 +137,20 @@ export default class DateWidget extends PureComponent {
EventBus.on('refresh', (data) => {
if (data === 'date' || data === 'timezone') {
if (localStorage.getItem('date') === 'false') {
- return this.date.current.style.display = 'none';
+ return (this.date.current.style.display = 'none');
}
this.date.current.style.display = 'block';
- this.date.current.style.fontSize = `${Number((localStorage.getItem('zoomDate') || 100) / 100)}em`;
+ this.date.current.style.fontSize = `${Number(
+ (localStorage.getItem('zoomDate') || 100) / 100,
+ )}em`;
this.getDate();
}
});
- this.date.current.style.fontSize = `${Number((localStorage.getItem('zoomDate') || 100) / 100)}em`;
+ this.date.current.style.fontSize = `${Number(
+ (localStorage.getItem('zoomDate') || 100) / 100,
+ )}em`;
this.getDate();
}
@@ -132,9 +160,9 @@ export default class DateWidget extends PureComponent {
render() {
return (
-
+
{this.state.date}
-
+
{this.state.weekNumber}
);
diff --git a/src/components/widgets/time/clock.scss b/src/components/widgets/time/clock.scss
index 7c8e9234..01fcf959 100644
--- a/src/components/widgets/time/clock.scss
+++ b/src/components/widgets/time/clock.scss
@@ -1,11 +1,11 @@
-@import '../../../scss/variables';
+@import 'scss/variables';
.clock {
font-size: 4em;
margin: 0;
cursor: initial;
user-select: none;
-
+ font-weight: 600;
--shadow-shift: 0.4rem;
}
@@ -17,19 +17,34 @@
.react-clock__face {
margin: 0 auto;
border-radius: 100%;
- box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.3);
+ /*box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.3);*/
border: none !important;
- border: 1px solid map-get($theme-colours, 'main') !important;
+
+ @include themed() {
+ border: 1px solid t($color) !important;
+ }
+
cursor: initial;
user-select: none;
}
.react-clock__hand__body,
.react-clock__mark__body {
- background: map-get($theme-colours, 'main') !important;
- box-shadow: 0 0 25px rgba(0, 0, 0, 0.3);
+ @include themed() {
+ background: t($color) !important;
+ }
+ /*box-shadow: 0 0 25px rgba(0, 0, 0, 0.3);*/
}
-.clock-container {
- margin-top: 13px;
+.clockBackground {
+ @extend %basic;
+ padding: 1rem;
+}
+
+.new-clock {
+ line-height: 100%;
+ .seconds {
+ font-size: 0.2em;
+ line-height: 0%;
+ }
}
diff --git a/src/components/widgets/weather/Expanded.jsx b/src/components/widgets/weather/Expanded.jsx
new file mode 100644
index 00000000..109bdea0
--- /dev/null
+++ b/src/components/widgets/weather/Expanded.jsx
@@ -0,0 +1,110 @@
+import { memo } from 'react';
+
+import { WiHumidity, WiWindy, WiBarometer, WiCloud } from 'react-icons/wi';
+import { MdDisabledVisible } from 'react-icons/md';
+
+import WeatherIcon from './WeatherIcon';
+import WindDirectionIcon from './WindDirectionIcon';
+
+import Tooltip from '../../helpers/tooltip/Tooltip';
+
+function Expanded({ state, weatherType, variables }) {
+ const enabled = (setting) => {
+ return (localStorage.getItem(setting) === 'true' && weatherType >= 3) || weatherType === '3';
+ };
+
+ return (
+
+ {weatherType >= 3 && (
+
+ {variables.getMessage('widgets.weather.extra_information')}
+
+ )}
+ {enabled('cloudiness') ? (
+
+
+
+ {state.weather.cloudiness}%
+
+
+ ) : null}
+ {enabled('windspeed') ? (
+
+
+
+ {state.weather.wind_speed}
+ m/s{' '}
+ {enabled('windDirection') ? (
+
+ ) : null}
+
+
+ ) : null}
+ {enabled('atmosphericpressure') ? (
+
+
+
+ {state.weather.pressure}
+ hPa
+
+
+ ) : null}
+ {enabled('weatherdescription') ? (
+
+
+
+ {state.weather.description}
+
+
+ ) : null}
+ {enabled('visibility') ? (
+
+
+
+ {variables.getMessage('widgets.weather.meters', {
+ amount: state.weather.visibility,
+ })}
+
+
+ ) : null}
+ {enabled('humidity') ? (
+
+
+
+ {state.weather.humidity}
+
+
+ ) : null}
+
+ );
+}
+
+export default memo(Expanded);
diff --git a/src/components/widgets/weather/Weather.jsx b/src/components/widgets/weather/Weather.jsx
index 37d53f84..3a2db309 100644
--- a/src/components/widgets/weather/Weather.jsx
+++ b/src/components/widgets/weather/Weather.jsx
@@ -1,9 +1,8 @@
import variables from 'modules/variables';
import { PureComponent } from 'react';
-import { WiHumidity, WiWindy, WiBarometer, WiCloud } from 'react-icons/wi';
import WeatherIcon from './WeatherIcon';
-import WindDirectionIcon from './WindDirectionIcon';
+import Expanded from './Expanded';
import EventBus from 'modules/helpers/eventbus';
@@ -14,20 +13,7 @@ export default class Weather extends PureComponent {
super();
this.state = {
location: localStorage.getItem('location') || 'London',
- icon: '',
- temp_text: '',
- weather: {
- temp: '',
- description: '',
- temp_min: '',
- temp_max: '',
- humidity: '',
- wind_speed: '',
- wind_degrees: '',
- cloudiness: '',
- visibility: '',
- pressure: ''
- }
+ done: false,
};
}
@@ -35,61 +21,41 @@ export default class Weather extends PureComponent {
const zoomWeather = `${Number((localStorage.getItem('zoomWeather') || 100) / 100)}em`;
document.querySelector('.weather').style.fontSize = zoomWeather;
- let data = {
- weather: [
- {
- description: this.state.weather.description,
- icon: this.state.icon
- }
- ],
- main: {
- temp: this.state.weather.original_temp,
- temp_min: this.state.weather.original_temp_min,
- temp_max: this.state.weather.original_temp_max,
- humidity: this.state.weather.humidity,
- pressure: this.state.weather.pressure
- },
- visibility: this.state.weather.visibility,
- wind: {
- speed: this.state.weather.wind_speed,
- deg: this.state.weather.wind_degrees
- },
- clouds: {
- all: this.state.weather.cloudiness
- }
- };
-
- if (!this.state.weather.temp) {
- data = await (await fetch(variables.constants.PROXY_URL + `/weather/current?city=${this.state.location}&lang=${variables.languagecode}`)).json();
+ if (this.state.done === true) {
+ return;
}
- if (data.cod === '404') {
+ const data = await (
+ await fetch(
+ variables.constants.API_URL +
+ `/weather?city=${this.state.location}&language=${variables.languagecode}`,
+ )
+ ).json();
+
+ if (data.status === 404) {
return this.setState({
- location: variables.language.getMessage(variables.languagecode, 'widgets.weather.not_found')
+ location: variables.getMessage('widgets.weather.not_found'),
});
}
let temp = data.main.temp;
- let temp_min = data.main.temp_min;
+ let temp_min = data.main.temp_min;
let temp_max = data.main.temp_max;
+ let feels_like = data.main.feels_like;
let temp_text = 'K';
- switch (localStorage.getItem('tempformat')) {
- case 'celsius':
- temp = temp - 273.15;
- temp_min = temp_min - 273.15;
- temp_max = temp_max - 273.15;
- temp_text = '°C';
- break;
- case 'fahrenheit':
- temp = ((temp - 273.15) * 1.8) + 32;
- temp_min = ((temp_min - 273.15) * 1.8) + 32;
- temp_max = ((temp_max - 273.15) * 1.8) + 32;
- temp_text = '°F';
- break;
- // kelvin
- default:
- break;
+ if (localStorage.getItem('tempformat') === 'celsius') {
+ temp -= 273.15;
+ temp_min -= 273.15;
+ temp_max -= 273.15;
+ feels_like -= 273.15;
+ temp_text = '°C';
+ } else {
+ temp = (temp - 273.15) * 1.8 + 32;
+ temp_min = (temp_min - 273.15) * 1.8 + 32;
+ temp_max = (temp_max - 273.15) * 1.8 + 32;
+ feels_like = (feels_like - 273.15) * 1.8 + 32;
+ temp_text = '°F';
}
this.setState({
@@ -100,21 +66,20 @@ export default class Weather extends PureComponent {
description: data.weather[0].description,
temp_min: Math.round(temp_min),
temp_max: Math.round(temp_max),
+ feels_like: Math.round(feels_like),
humidity: data.main.humidity,
wind_speed: data.wind.speed,
wind_degrees: data.wind.deg,
cloudiness: data.clouds.all,
visibility: data.visibility,
pressure: data.main.pressure,
- original_temp: data.main.temp,
- original_temp_min: data.main.temp_min,
- original_temp_max: data.main.temp_max
- }
+ },
+ done: true,
});
- document.querySelector('.weather svg').style.fontSize = zoomWeather;
+ document.querySelector('.top-weather svg').style.fontSize = zoomWeather;
}
-
+
componentDidMount() {
EventBus.on('refresh', (data) => {
if (data === 'weather') {
@@ -130,44 +95,49 @@ export default class Weather extends PureComponent {
}
render() {
- const enabled = (setting) => {
- return (localStorage.getItem(setting) === 'true');
- };
-
- if (this.state.location === variables.language.getMessage(variables.languagecode, 'weather.not_found')) {
- return (
- {this.state.location}
-
);
+ if (this.state.done === false) {
+ return ;
}
- const minmax = () => {
- const mintemp = enabled('mintemp');
- const maxtemp = enabled('maxtemp');
-
- if (!mintemp && !maxtemp) {
- return null;
- } else if (mintemp && !maxtemp) {
- return <>
{this.state.weather.temp_min + this.state.temp_text}>;
- } else if (maxtemp && !mintemp) {
- return <>
{this.state.weather.temp_max + this.state.temp_text}>;
- } else {
- return <>
{this.state.weather.temp_min + this.state.temp_text} {this.state.weather.temp_max + this.state.temp_text}>;
- }
- };
+ const weatherType = localStorage.getItem('weatherType') || 1;
+
+ if (this.state.location === variables.getMessage('weather.not_found')) {
+ return (
+
+ {this.state.location}
+
+ );
+ }
return (
-
-
- {this.state.weather.temp + this.state.temp_text}
- {enabled('weatherdescription') ?
{this.state.weather.description} : null}
- {minmax()}
- {enabled('humidity') ?
{this.state.weather.humidity}% : null}
- {enabled('windspeed') ?
{this.state.weather.wind_speed} m/s {enabled('windDirection') ? : null} : null}
- {enabled('cloudiness') ?
{this.state.weather.cloudiness}% : null}
- {enabled('visibility') ?
{variables.language.getMessage(variables.languagecode, 'widgets.weather.meters', { amount: this.state.weather.visibility })} : null}
- {enabled('atmosphericpressure') ?
{this.state.weather.pressure} hPa : null}
-
- {enabled('showlocation') ? {this.state.location} : null}
+
+
+ {weatherType >= 1 && (
+
+
+ {this.state.weather.temp + this.state.temp_text}
+
+ )}
+ {weatherType >= 2 && (
+
+ {this.state.weather.temp_min + this.state.temp_text}
+ {this.state.weather.temp_max + this.state.temp_text}
+
+ )}
+
+ {weatherType >= 2 && (
+
+
+ {variables.getMessage('widgets.weather.feels_like', {
+ amount: this.state.weather.feels_like + this.state.temp_text,
+ })}
+
+ {this.state.location}
+
+ )}
+ {weatherType >= 3 ? (
+
+ ) : null}
);
}
diff --git a/src/components/widgets/weather/WeatherIcon.jsx b/src/components/widgets/weather/WeatherIcon.jsx
index 5df3db5c..51bcf303 100644
--- a/src/components/widgets/weather/WeatherIcon.jsx
+++ b/src/components/widgets/weather/WeatherIcon.jsx
@@ -1,3 +1,5 @@
+import { memo } from 'react';
+
import {
WiDaySunny,
WiNightClear,
@@ -10,28 +12,45 @@ import {
WiRain,
WiThunderstorm,
WiSnow,
- WiFog
+ WiFog,
} from 'react-icons/wi';
-export default function WeatherIcon({ name }) {
- let icon;
-
+function WeatherIcon({ name }) {
// name is the openweathermap icon name, see https://openweathermap.org/weather-conditions
switch (name) {
- case '01d': icon = ; break;
- case '01n': icon = ; break;
- case '02d': icon = ; break;
- case '02n': icon = ; break;
- case '03d': case '03n': icon = ; break;
- case '04d': case '04n': icon = ; break;
- case '09d': icon = ; break;
- case '09n': icon = ; break;
- case '10d': case '10n': icon = ; break;
- case '11d': case '11n': icon = ; break;
- case '13d': case '13n': icon = ; break;
- case '50d': case '50n': icon = ; break;
- default: icon = null; break;
+ case '01d':
+ return ;
+ case '01n':
+ return ;
+ case '02d':
+ return ;
+ case '02n':
+ return ;
+ case '03d':
+ case '03n':
+ return ;
+ case '04d':
+ case '04n':
+ return ;
+ case '09d':
+ return ;
+ case '09n':
+ return ;
+ case '10d':
+ case '10n':
+ return ;
+ case '11d':
+ case '11n':
+ return ;
+ case '13d':
+ case '13n':
+ return ;
+ case '50d':
+ case '50n':
+ return ;
+ default:
+ return null;
}
+}
- return icon;
-}
\ No newline at end of file
+export default memo(WeatherIcon);
diff --git a/src/components/widgets/weather/WindDirectionIcon.jsx b/src/components/widgets/weather/WindDirectionIcon.jsx
index 2df8a9e8..6758f643 100644
--- a/src/components/widgets/weather/WindDirectionIcon.jsx
+++ b/src/components/widgets/weather/WindDirectionIcon.jsx
@@ -1,3 +1,5 @@
+import { memo } from 'react';
+
import {
WiDirectionDownLeft,
WiDirectionDownRight,
@@ -6,28 +8,45 @@ import {
WiDirectionRight,
WiDirectionUpLeft,
WiDirectionUpRight,
- WiDirectionUp
+ WiDirectionUp,
} from 'react-icons/wi';
-// degrees is imported because of a potential bug, idk what causes it but now it is fixed
-export default function WindDirectionIcon({ degrees }) {
- let icon;
-
- // convert the number openweathermap gives us to closest direction or something
- const directions = ['North', 'North-West', 'West', 'South-West', 'South', 'South-East', 'East', 'North-East'];
- const direction = directions[Math.round(((degrees %= 360) < 0 ? degrees + 360 : degrees) / 45) % 8];
+// degrees are imported because of a potential bug, IDK what causes it, but now it is fixed
+function WindDirectionIcon({ degrees }) {
+ // convert the number OpenWeatherMap gives us to the closest direction or something
+ const directions = [
+ 'North',
+ 'North-West',
+ 'West',
+ 'South-West',
+ 'South',
+ 'South-East',
+ 'East',
+ 'North-East',
+ ];
+ const direction =
+ directions[Math.round(((degrees %= 360) < 0 ? degrees + 360 : degrees) / 45) % 8];
switch (direction) {
- case 'North': icon = ; break;
- case 'North-West': icon = ; break;
- case 'West': icon = ; break;
- case 'South-West': icon = ; break;
- case 'South': icon = ; break;
- case 'South-East': icon = ; break;
- case 'East': icon = ; break;
- case 'North-East': icon = ; break;
- default: icon = null; break;
+ case 'North':
+ return ;
+ case 'North-West':
+ return ;
+ case 'West':
+ return ;
+ case 'South-West':
+ return ;
+ case 'South':
+ return ;
+ case 'South-East':
+ return ;
+ case 'East':
+ return ;
+ case 'North-East':
+ return ;
+ default:
+ return null;
}
+}
- return icon;
-}
\ No newline at end of file
+export default memo(WindDirectionIcon);
diff --git a/src/components/widgets/weather/weather.scss b/src/components/widgets/weather/weather.scss
index a7f689e8..6c333ee0 100644
--- a/src/components/widgets/weather/weather.scss
+++ b/src/components/widgets/weather/weather.scss
@@ -1,51 +1,151 @@
+@import 'scss/variables';
+
.weather {
+ @extend %basic;
position: absolute;
bottom: 1rem;
right: 1rem;
cursor: initial;
user-select: none;
padding: 20px;
- background-color: rgba(255, 255, 255, 0.8);
- color: black;
- border-radius: 20px;
+ transition: 0.8s cubic-bezier(0.075, 0.82, 0.165, 1);
+ width: auto;
+ display: grid;
+ place-items: center;
+ justify-items: start;
+ padding: 25px;
- span {
- text-shadow: 0 0 10px rgb(255 255 255 / 50%);
+ &:hover {
+ height: auto;
+ transition: 0.8s cubic-bezier(0.075, 0.82, 0.165, 1);
}
- svg {
- filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.1));
- vertical-align: middle;
- font-size: 35px;
+ .expanded-info {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ .tooltip {
+ width: 100%;
+ }
+ .tooltipTitle {
+ max-height: 12px;
+ }
}
- .loc {
- font-size: 0.7em;
- margin: 0;
- padding: 0;
- text-transform: capitalize;
+ .extra-info {
+ width: 100%;
+ font-size: 18px;
+ gap: 40px;
+
+ @include themed() {
+ color: t($weather);
+ }
+ }
+
+ .visibility {
+ text-transform: none !important;
+ }
+
+ .extra-info {
+ display: flex;
+ flex-flow: row;
+ justify-content: space-evenly;
+
+ span {
+ display: flex;
+ align-items: center;
+ }
+ }
+}
+
+.top-weather {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ gap: 25px;
+
+ div {
+ align-items: center;
+ display: flex;
+
+ svg {
+ font-size: 2em !important;
+ }
+
+ span {
+ font-size: 34px;
+ }
}
.minmax {
- font-size: 0.5em;
- }
-
- .visibility {
- text-transform: none !important;
+ display: flex;
+ flex-flow: column;
+ justify-content: space-evenly;
}
}
-.dark .weather {
- background-color: rgba(0, 0, 0, 0.5);
- color: white;
+.expanded-info {
+ display: none;
+ font-size: 18px;
+ text-transform: capitalize;
+ gap: 10px;
+ margin-top: 15px;
span {
- text-shadow: 0 0 10px rgb(0 0 0 / 50%);
+ display: flex;
+ align-items: center;
+ gap: 20px;
}
- svg {
- filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.1));
- vertical-align: middle;
- font-size: 35px;
+ @include themed() {
+ svg {
+ color: t($subColor);
+ }
+
+ .weatherIcon {
+ font-size: 21px !important;
+ display: grid;
+ align-items: center;
+ }
+ .materialWeatherIcon {
+ font-size: 18px !important;
+ padding: 2px;
+ }
+ }
+}
+
+.upcomingForecast {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ gap: 10px;
+
+ div {
+ @include themed() {
+ border-radius: t($borderRadius);
+ border: 1px solid t($btn-backgroundHover);
+ padding: 5px;
+ flex: 1;
+
+ svg {
+ font-size: 36px;
+ }
+
+ span {
+ justify-content: center;
+ }
+
+ .period {
+ color: t($color);
+ font-size: 15px;
+ }
+
+ .minmax {
+ margin-top: 5px;
+ flex-flow: column;
+ gap: 0 !important;
+ }
+ }
}
}
diff --git a/src/index.js b/src/index.jsx
similarity index 50%
rename from src/index.js
rename to src/index.jsx
index 88f3ce8b..c4cbafca 100644
--- a/src/index.js
+++ b/src/index.jsx
@@ -1,54 +1,62 @@
-import { render } from 'react-dom';
-
-import App from './App';
-import variables from 'modules/variables';
-
-import './scss/index.scss';
-// the toast css is based on default so we need to import it
-import 'react-toastify/dist/ReactToastify.min.css';
-
-// local stats
-import Stats from 'modules/helpers/stats';
-
-// language
-import I18n from '@eartharoid/i18n';
-const languagecode = localStorage.getItem('language') || 'en_GB';
-
-// we set things to window. so we avoid passing the translation strings as props to each component
-variables.languagecode = languagecode.replace('-', '_');
-
-if (languagecode === 'en') {
- variables.languagecode = 'en_GB';
-}
-
-variables.language = new I18n(variables.languagecode, {
- de_DE: require('./translations/de_DE.json'),
- en_GB: require('./translations/en_GB.json'),
- en_US: require('./translations/en_US.json'),
- es: require('./translations/es.json'),
- fr: require('./translations/fr.json'),
- nl: require('./translations/nl.json'),
- no: require('./translations/no.json'),
- ru: require('./translations/ru.json'),
- zh_CN: require('./translations/zh_CN.json'),
- id_ID: require('./translations/id_ID.json'),
- tr_TR: require('./translations/tr_TR.json')
-});
-
-// set html language tag
-if (variables.languagecode !== 'en_GB' || variables.languagecode !== 'en_US') {
- document.documentElement.lang = variables.languagecode.split('_')[0];
-}
-
-if (localStorage.getItem('stats') === 'true') {
- variables.stats = Stats;
-}
-
-/*if (localStorage.getItem('keybindsEnabled') === 'true') {
- variables.keybinds = JSON.parse(localStorage.getItem('keybinds') || '{}');
-}*/
-
-render(
- ,
- document.getElementById('root')
-);
+import { render } from 'react-dom';
+import * as Sentry from '@sentry/react';
+
+import App from './App';
+import variables from 'modules/variables';
+
+import './scss/index.scss';
+// the toast css is based on default so we need to import it
+import 'react-toastify/dist/ReactToastify.min.css';
+
+// local stats
+import Stats from 'modules/helpers/stats';
+
+// language
+import I18n from '@eartharoid/i18n';
+
+// this is because of vite
+import translations from 'modules/translations';
+
+const languagecode = localStorage.getItem('language') || 'en_GB';
+
+// we set things to variables. so we avoid passing the translation strings etc as props to each component
+variables.languagecode = languagecode.replace('-', '_');
+
+if (languagecode === 'en') {
+ variables.languagecode = 'en_GB';
+}
+
+variables.language = new I18n(variables.languagecode, {
+ de_DE: translations.de_DE,
+ en_GB: translations.en_GB,
+ en_US: translations.en_US,
+ es: translations.es,
+ es_419: translations.es_419,
+ fr: translations.fr,
+ nl: translations.nl,
+ no: translations.no,
+ ru: translations.ru,
+ zh_CN: translations.zh_CN,
+ id_ID: translations.id_ID,
+ tr_TR: translations.tr_TR,
+});
+
+variables.getMessage = (text, optional) =>
+ variables.language.getMessage(variables.languagecode, text, optional || {});
+
+// set html language tag
+if (variables.languagecode !== 'en_GB' || variables.languagecode !== 'en_US') {
+ document.documentElement.lang = variables.languagecode.split('_')[0];
+}
+
+if (localStorage.getItem('stats') === 'true') {
+ variables.stats = Stats;
+}
+
+Sentry.init({
+ dsn: variables.constants.SENTRY_DSN,
+ defaultIntegrations: false,
+ autoSessionTracking: false,
+});
+
+render(, document.getElementById('root'));
diff --git a/src/modules/constants.js b/src/modules/constants.js
index 6d78b6d6..c988b6da 100644
--- a/src/modules/constants.js
+++ b/src/modules/constants.js
@@ -1,18 +1,24 @@
// API URLs
-export const API_URL = 'https://api.muetab.com';
-export const PROXY_URL = 'https://proxy.muetab.com';
+export const API_URL = 'https://api.muetab.com/v2';
export const MARKETPLACE_URL = 'https://marketplace.muetab.com';
export const SPONSORS_URL = 'https://sponsors.muetab.com';
export const GITHUB_URL = 'https://api.github.com';
export const DDG_IMAGE_PROXY = 'https://external-content.duckduckgo.com/iu/?u=';
-export const MAPBOX_URL = 'https://api.mapbox.com';
export const OPENSTREETMAP_URL = 'https://www.openstreetmap.org';
// Mue URLs
export const WEBSITE_URL = 'https://muetab.com';
export const PRIVACY_URL = 'https://muetab.com/privacy';
-export const BLOG_POST = 'https://blog.muetab.com/posts/version-6-0';
+export const BLOG_POST = 'https://blog.muetab.com/posts/version-7-0';
export const TRANSLATIONS_URL = 'https://docs.muetab.com/translations/';
+export const REPORT_ITEM =
+ 'https://github.com/mue/marketplace/issues/new?assignees=&labels=item+report&template=item-report.md&title=%5BItem+Report%5D+';
+export const BUG_REPORT =
+ 'https://github.com/mue/mue/issues/new?assignees=&labels=issue+report&template=bug-report.md&title=%5BBug%5D+';
+export const DONATE_LINK = 'https://muetab.com/donate';
+export const SENTRY_DSN =
+ 'https://430352fd4b174d688ebd82fc85c22c58@o1217438.ingest.sentry.io/6359480';
+export const KNOWLEDGEBASE = 'https://support.muetab.com';
// Mue Info
export const ORG_NAME = 'mue';
@@ -23,11 +29,8 @@ export const DISCORD_SERVER = 'zv8C9F8';
export const COPYRIGHT_NAME = 'The Mue Authors';
export const COPYRIGHT_YEAR = '2018';
export const COPYRIGHT_LICENSE = 'BSD-3-Clause License';
-export const SPONSORS_USERNAME = 'davidcralph';
-export const LIBERAPAY_USERNAME = 'mue';
-export const KOFI_USERNAME = 'davidcralph';
-export const PATREON_USERNAME = 'davidcralph';
+export const OPENCOLLECTIVE_USERNAME = 'mue';
export const OFFLINE_IMAGES = 20;
-export const VERSION = '6.0.6';
+export const VERSION = '7.0.0';
diff --git a/src/modules/default_settings.json b/src/modules/default_settings.json
index 33febce9..7d259350 100644
--- a/src/modules/default_settings.json
+++ b/src/modules/default_settings.json
@@ -80,7 +80,7 @@
"value": true
},
{
- "name": "tweetButton",
+ "name": "quoteShareButton",
"value": false
},
{
@@ -92,8 +92,8 @@
"value": true
},
{
- "name": "quotelanguage",
- "value": "English"
+ "name": "quoteLanguage",
+ "value": "en"
},
{
"name": "date",
@@ -222,7 +222,7 @@
{
"name": "photoInformation",
"value": true
- },
+ },
{
"name": "quicklinksddgProxy",
"value": true
@@ -246,5 +246,21 @@
{
"name": "animations",
"value": true
+ },
+ {
+ "name": "textBorder",
+ "value": "new"
+ },
+ {
+ "name": "widgetStyle",
+ "value": "new"
+ },
+ {
+ "name": "backgroundExclude",
+ "value": "[]"
+ },
+ {
+ "name": "photoMap",
+ "value": true
}
]
diff --git a/src/modules/helpers/background/avif.js b/src/modules/helpers/background/avif.js
new file mode 100644
index 00000000..c936815a
--- /dev/null
+++ b/src/modules/helpers/background/avif.js
@@ -0,0 +1,11 @@
+const testImage =
+ 'AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAFCbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAFBETmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAACRgAAABgAAgAAAAEAAAFqAAAA3AAAAEFpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAZaW5mZQIAAAEAAgAARXhpZkV4aWYAAAAAGmlyZWYAAAAAAAAADmNkc2MAAgABAAEAAAB5aXBycAAAAFlpcGNvAAAAFGlzcGUAAAAAAAAAAQAAAAEAAAAQcGFzcAAAAAEAAAABAAAADGF2MUOBABwAAAAADnBpeGkAAAAAAQgAAAATY29scm5jbHgAAQANAAGAAAAAGGlwbWEAAAAAAAAAAQABBQECg4SFAAAA/G1kYXQAAAAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAADEBAgARAAAAZgAAAGmHBAABAAAAeAAAAAAAAAABAAAAAQAAAAEAAAABAAAAcGFpbnQubmV0IDQuMy4xMgAABQAAkAcABAAAADAyMzABoAMAAQAAAAEAAAACoAQAAQAAAAEAAAADoAQAAQAAAAEAAAAFoAQAAQAAALoAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAAAAAAEgAKBxgABpgIaA0yCxJABBEAEADG1FkX';
+
+export const supportsAVIF = () => {
+ new Promise((resolve) => {
+ const image = new Image();
+ image.src = `data:image/avif;base64,${testImage}`;
+ image.onload = () => resolve(true);
+ image.onerror = () => resolve(false);
+ });
+}
diff --git a/src/modules/helpers/background/rgbToHsv.js b/src/modules/helpers/background/rgbToHsv.js
index b85e8a30..0bc0febb 100644
--- a/src/modules/helpers/background/rgbToHsv.js
+++ b/src/modules/helpers/background/rgbToHsv.js
@@ -21,9 +21,9 @@ export default function rgbToHSv({ red, green, blue }) {
if (rabs === v) {
h = bb - gg;
} else if (gabs === v) {
- h = (1 / 3) + rr - bb;
+ h = 1 / 3 + rr - bb;
} else if (babs === v) {
- h = (2 / 3) + gg - rr;
+ h = 2 / 3 + gg - rr;
}
if (h < 0) {
diff --git a/src/modules/helpers/background/setRgba.js b/src/modules/helpers/background/setRgba.js
index 34e9b47f..2a2b73b3 100644
--- a/src/modules/helpers/background/setRgba.js
+++ b/src/modules/helpers/background/setRgba.js
@@ -1,5 +1,5 @@
const isValidRGBValue = (value) => {
- return (typeof (value) === 'number' && Number.isNaN(value) === false && value >= 0 && value <= 255);
+ return typeof value === 'number' && Number.isNaN(value) === false && value >= 0 && value <= 255;
};
export default function setRGBA(red, green, blue, alpha) {
diff --git a/src/modules/helpers/background/widget.js b/src/modules/helpers/background/widget.js
index 9f34b98c..fd6e1b9b 100644
--- a/src/modules/helpers/background/widget.js
+++ b/src/modules/helpers/background/widget.js
@@ -1,25 +1,32 @@
// since there is so much code in the component, we have moved it to a separate file
+import offlineImages from './offlineImages.json';
+
export function videoCheck(url) {
- return url.startsWith('data:video/') || url.endsWith('.mp4') || url.endsWith('.webm') || url.endsWith('.ogg');
+ return (
+ url.startsWith('data:video/') ||
+ url.endsWith('.mp4') ||
+ url.endsWith('.webm') ||
+ url.endsWith('.ogg')
+ );
}
-export function offlineBackground() {
- const offlineImages = require('./offlineImages.json');
-
+export function offlineBackground(type) {
// Get all photographers from the keys in offlineImages.json
const photographers = Object.keys(offlineImages);
const photographer = photographers[Math.floor(Math.random() * photographers.length)];
- const randomImage = offlineImages[photographer].photo[
- Math.floor(Math.random() * offlineImages[photographer].photo.length)
- ];
+ const randomImage =
+ offlineImages[photographer].photo[
+ Math.floor(Math.random() * offlineImages[photographer].photo.length)
+ ];
const object = {
url: `./offline-images/${randomImage}.webp`,
+ type,
photoInfo: {
offline: true,
- credit: photographer
- }
+ credit: photographer,
+ },
};
localStorage.setItem('currentBackground', JSON.stringify(object));
@@ -33,12 +40,16 @@ function gradientStyleBuilder({ type, angle, gradient }) {
return {
type: 'colour',
- style: `background:${gradient[0]?.colour};${grad}`
+ style: `background:${gradient[0]?.colour};${grad}`,
};
}
export function getGradient() {
- const customBackgroundColour = localStorage.getItem('customBackgroundColour') || {'angle':'180','gradient':[{'colour':'#ffb032','stop':0}],'type':'linear'};
+ const customBackgroundColour = localStorage.getItem('customBackgroundColour') || {
+ angle: '180',
+ gradient: [{ colour: '#ffb032', stop: 0 }],
+ type: 'linear',
+ };
let gradientSettings = '';
try {
@@ -47,7 +58,11 @@ export function getGradient() {
const hexColorRegex = /#[0-9a-fA-F]{6}/s;
if (hexColorRegex.exec(customBackgroundColour)) {
// Colour used to be simply a hex colour or a NULL value before it was a JSON object. This automatically upgrades the hex colour value to the new standard. (NULL would not trigger an exception)
- gradientSettings = { 'type': 'linear', 'angle': '180', 'gradient': [{ 'colour': customBackgroundColour, 'stop': 0 }] };
+ gradientSettings = {
+ type: 'linear',
+ angle: '180',
+ gradient: [{ colour: customBackgroundColour, stop: 0 }],
+ };
localStorage.setItem('customBackgroundColour', JSON.stringify(gradientSettings));
}
}
@@ -59,16 +74,30 @@ export function getGradient() {
export function randomColourStyleBuilder(type) {
// randomColour based on https://stackoverflow.com/a/5092872
- const randomColour = () => '#000000'.replace(/0/g, () => {return (~~(Math.random()*16)).toString(16)});
+ const randomColour = () =>
+ '#000000'.replace(/0/g, () => {
+ return (~~(Math.random() * 16)).toString(16);
+ });
let style = `background:${randomColour()};`;
if (type === 'random_gradient') {
- const directions = ['to right', 'to left', 'to bottom', 'to top', 'to bottom right', 'to bottom left', 'to top right', 'to top left'];
- style = `background:linear-gradient(${directions[Math.floor(Math.random() * directions.length)]}, ${randomColour()}, ${randomColour()});`;
+ const directions = [
+ 'to right',
+ 'to left',
+ 'to bottom',
+ 'to top',
+ 'to bottom right',
+ 'to bottom left',
+ 'to top right',
+ 'to top left',
+ ];
+ style = `background:linear-gradient(${
+ directions[Math.floor(Math.random() * directions.length)]
+ }, ${randomColour()}, ${randomColour()});`;
}
return {
type: 'colour',
- style
- }
+ style,
+ };
}
diff --git a/src/modules/helpers/date.js b/src/modules/helpers/date.js
index 62e7ee65..30b97381 100644
--- a/src/modules/helpers/date.js
+++ b/src/modules/helpers/date.js
@@ -16,5 +16,9 @@ export function nth(d) {
}
export function convertTimezone(date, tz) {
- return new Date((typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', { timeZone: tz }));
+ return new Date(
+ (typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', {
+ timeZone: tz,
+ }),
+ );
}
diff --git a/src/modules/helpers/eventbus.js b/src/modules/helpers/eventbus.js
index 49e25b0f..1d402f4e 100644
--- a/src/modules/helpers/eventbus.js
+++ b/src/modules/helpers/eventbus.js
@@ -1,3 +1,5 @@
+// one day it might be a good idea to replace all this with redux, but it'd take
+// a lot of rewriting
export default class EventBus {
static on(event, callback) {
document.addEventListener(event, (e) => {
@@ -6,9 +8,11 @@ export default class EventBus {
}
static dispatch(event, data) {
- document.dispatchEvent(new CustomEvent(event, {
- detail: data
- }));
+ document.dispatchEvent(
+ new CustomEvent(event, {
+ detail: data,
+ }),
+ );
}
static off(event, callback) {
diff --git a/src/modules/helpers/experimental.js b/src/modules/helpers/experimental.js
index 38195aa3..3755d952 100644
--- a/src/modules/helpers/experimental.js
+++ b/src/modules/helpers/experimental.js
@@ -1,4 +1,4 @@
-// todo: add more
+// mainly this is just to make life easier when debugging stuff like hover
export default function ExperimentalInit() {
if (localStorage.getItem('debug') === 'true') {
document.onkeydown = (e) => {
@@ -22,7 +22,8 @@ export default function ExperimentalInit() {
debugger;
}
break;
- default: break;
+ default:
+ break;
}
};
}
diff --git a/src/modules/helpers/interval.js b/src/modules/helpers/interval.js
deleted file mode 100644
index ac0bf8c2..00000000
--- a/src/modules/helpers/interval.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// based on https://stackoverflow.com/a/47009962
-export default function interval(callback, interval, name) {
- const key = name + 'interval';
- const ms = localStorage.getItem(key);
- const now = Date.now();
-
- const executeCallback = () => {
- localStorage.setItem(key, Date.now());
- callback();
- };
-
- if (ms) {
- const delta = now - parseInt(ms);
- if (delta > interval) {
- setInterval(executeCallback, interval);
- } else {
- setTimeout(() => {
- setInterval(executeCallback, interval);
- executeCallback();
- }, interval - delta);
- }
- } else {
- setInterval(executeCallback, interval);
- }
-
- localStorage.setItem(key, now);
-}
diff --git a/src/modules/helpers/marketplace.js b/src/modules/helpers/marketplace.js
index 0eb763dd..cb79029a 100644
--- a/src/modules/helpers/marketplace.js
+++ b/src/modules/helpers/marketplace.js
@@ -1,14 +1,15 @@
import EventBus from './eventbus';
function showReminder() {
- document.querySelector('.reminder-info').style.display = 'block';
+ document.querySelector('.reminder-info').style.display = 'flex';
localStorage.setItem('showReminder', true);
}
// based on https://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links
export function urlParser(input) {
- const urlPattern = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_+.~#?&//=]*)/;
- return input.replace(urlPattern, '$&');
+ const urlPattern =
+ /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_+.~#?&//=]*)/;
+ return input.replace(urlPattern, '
$&');
}
export function install(type, input, sideload) {
@@ -20,7 +21,7 @@ export function install(type, input, sideload) {
Object.keys(localStorage).forEach((key) => {
oldSettings.push({
name: key,
- value: localStorage.getItem(key)
+ value: localStorage.getItem(key),
});
});
@@ -32,20 +33,32 @@ export function install(type, input, sideload) {
break;
case 'photos':
- localStorage.setItem('photo_packs', JSON.stringify(input.photos));
- localStorage.setItem('oldBackgroundType', localStorage.getItem('backgroundType'));
+ const currentPhotos = JSON.parse(localStorage.getItem('photo_packs')) || [];
+ input.photos.forEach((photo) => {
+ currentPhotos.push(photo);
+ });
+ localStorage.setItem('photo_packs', JSON.stringify(currentPhotos));
+
+ if (localStorage.getItem('backgroundType') !== 'photo_pack') {
+ localStorage.setItem('oldBackgroundType', localStorage.getItem('backgroundType'));
+ }
localStorage.setItem('backgroundType', 'photo_pack');
+ localStorage.removeItem('backgroundchange');
EventBus.dispatch('refresh', 'background');
break;
case 'quotes':
- if (input.quote_api) {
- localStorage.setItem('quoteAPI', JSON.stringify(input.quote_api));
- }
+ const currentQuotes = JSON.parse(localStorage.getItem('quote_packs')) || [];
+ input.quotes.forEach((quote) => {
+ currentQuotes.push(quote);
+ });
+ localStorage.setItem('quote_packs', JSON.stringify(currentQuotes));
- localStorage.setItem('quote_packs', JSON.stringify(input.quotes));
- localStorage.setItem('oldQuoteType', localStorage.getItem('quoteType'));
+ if (localStorage.getItem('quoteType') !== 'quote_pack') {
+ localStorage.setItem('oldQuoteType', localStorage.getItem('quoteType'));
+ }
localStorage.setItem('quoteType', 'quote_pack');
+ localStorage.removeItem('quotechange');
EventBus.dispatch('refresh', 'quote');
break;
@@ -59,8 +72,8 @@ export function install(type, input, sideload) {
installed.push({
content: {
updated: 'Unpublished',
- data: input
- }
+ data: input,
+ },
});
} else {
installed.push(input);
@@ -70,6 +83,7 @@ export function install(type, input, sideload) {
}
export function uninstall(type, name) {
+ let installedContents, packContents;
switch (type) {
case 'settings':
const oldSettings = JSON.parse(localStorage.getItem('backup_settings'));
@@ -81,17 +95,46 @@ export function uninstall(type, name) {
break;
case 'quotes':
- localStorage.removeItem('quote_packs');
- localStorage.removeItem('quoteAPI');
- localStorage.setItem('quoteType', localStorage.getItem('oldQuoteType'));
- localStorage.removeItem('oldQuoteType');
+ installedContents = JSON.parse(localStorage.getItem('quote_packs'));
+ packContents = JSON.parse(localStorage.getItem('installed')).find(
+ (content) => content.name === name,
+ );
+ installedContents.forEach((item, index) => {
+ const exists = packContents.quotes.find(
+ (content) => content.quote === item.quote || content.author === item.author,
+ );
+ if (exists !== undefined) {
+ installedContents.splice(index, 1);
+ }
+ });
+ localStorage.setItem('quote_packs', JSON.stringify(installedContents));
+ if (installedContents.length === 0) {
+ localStorage.setItem('quoteType', localStorage.getItem('oldQuoteType') || 'api');
+ localStorage.removeItem('oldQuoteType');
+ localStorage.removeItem('quote_packs');
+ }
+ localStorage.removeItem('quotechange');
EventBus.dispatch('refresh', 'marketplacequoteuninstall');
break;
case 'photos':
- localStorage.removeItem('photo_packs');
- localStorage.setItem('backgroundType', localStorage.getItem('oldBackgroundType'));
- localStorage.removeItem('oldBackgroundType');
+ installedContents = JSON.parse(localStorage.getItem('photo_packs'));
+ packContents = JSON.parse(localStorage.getItem('installed')).find(
+ (content) => content.name === name,
+ );
+ installedContents.forEach((item, index) => {
+ const exists = packContents.photos.find((content) => content.photo === item.photo);
+ if (exists !== undefined) {
+ installedContents.splice(index, 1);
+ }
+ });
+ localStorage.setItem('photo_packs', JSON.stringify(installedContents));
+ if (installedContents.length === 0) {
+ localStorage.setItem('backgroundType', localStorage.getItem('oldBackgroundType') || 'api');
+ localStorage.removeItem('oldBackgroundType');
+ localStorage.removeItem('photo_packs');
+ }
+ localStorage.removeItem('backgroundchange');
EventBus.dispatch('refresh', 'marketplacebackgrounduninstall');
break;
@@ -108,4 +151,4 @@ export function uninstall(type, name) {
}
localStorage.setItem('installed', JSON.stringify(installed));
-};
+}
diff --git a/src/modules/helpers/settings/achievement_translations/de_DE.json b/src/modules/helpers/settings/achievement_translations/de_DE.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/de_DE.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/en_GB.json b/src/modules/helpers/settings/achievement_translations/en_GB.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/en_GB.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/en_US.json b/src/modules/helpers/settings/achievement_translations/en_US.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/en_US.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/es.json b/src/modules/helpers/settings/achievement_translations/es.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/es.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/fr.json b/src/modules/helpers/settings/achievement_translations/fr.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/fr.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/id_ID.json b/src/modules/helpers/settings/achievement_translations/id_ID.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/id_ID.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/index.js b/src/modules/helpers/settings/achievement_translations/index.js
new file mode 100644
index 00000000..a505a619
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/index.js
@@ -0,0 +1,27 @@
+import de_DE from './de_DE.json';
+import en_GB from './en_GB.json';
+import en_US from './en_US.json';
+import es from './es.json';
+import fr from './fr.json';
+import nl from './nl.json';
+import no from './no.json';
+import ru from './ru.json';
+import zh_CN from './zh_CN.json';
+import id_ID from './id_ID.json';
+import tr_TR from './tr_TR.json';
+
+const translations = {
+ de_DE,
+ en_GB,
+ en_US,
+ es,
+ fr,
+ nl,
+ no,
+ ru,
+ zh_CN,
+ id_ID,
+ tr_TR,
+};
+
+export default translations;
diff --git a/src/modules/helpers/settings/achievement_translations/nl.json b/src/modules/helpers/settings/achievement_translations/nl.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/nl.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/no.json b/src/modules/helpers/settings/achievement_translations/no.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/no.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/ru.json b/src/modules/helpers/settings/achievement_translations/ru.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/ru.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/tr_TR.json b/src/modules/helpers/settings/achievement_translations/tr_TR.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/tr_TR.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievement_translations/zh_CN.json b/src/modules/helpers/settings/achievement_translations/zh_CN.json
new file mode 100644
index 00000000..8dcc1526
--- /dev/null
+++ b/src/modules/helpers/settings/achievement_translations/zh_CN.json
@@ -0,0 +1,8 @@
+[
+ "Opened 10 tabs",
+ "Opened 39 tabs",
+ "Opened 100 tabs",
+ "Opened 305 tabs",
+ "Installed an add-on",
+ "Installed 5 add-ons"
+]
diff --git a/src/modules/helpers/settings/achievements.json b/src/modules/helpers/settings/achievements.json
new file mode 100644
index 00000000..ddd6b44d
--- /dev/null
+++ b/src/modules/helpers/settings/achievements.json
@@ -0,0 +1,52 @@
+{
+ "achievements": [
+ {
+ "name": "10/10 IGN",
+ "description": "Opened 10 tabs",
+ "condition": {
+ "type": "tabsOpened",
+ "amount": 10
+ }
+ },
+ {
+ "name": "Thank you",
+ "description": "Opened 39 tabs",
+ "condition": {
+ "type": "tabsOpened",
+ "amount": 39
+ }
+ },
+ {
+ "name": "Seasoning",
+ "description": "Opened 100 tabs",
+ "condition": {
+ "type": "tabsOpened",
+ "amount": 100
+ }
+ },
+ {
+ "name": "Mr Worldwide",
+ "description": "Opened 305 tabs",
+ "condition": {
+ "type": "tabsOpened",
+ "amount": 305
+ }
+ },
+ {
+ "name": "Average Linux user",
+ "description": "Installed an add-on",
+ "condition": {
+ "type": "addonInstall",
+ "amount": 1
+ }
+ },
+ {
+ "name": "Fully riced",
+ "description": "Installed 5 add-ons",
+ "condition": {
+ "type": "addonInstall",
+ "amount": 5
+ }
+ }
+ ]
+}
diff --git a/src/modules/helpers/settings/index.js b/src/modules/helpers/settings/index.js
index 97ed53c0..ef475078 100644
--- a/src/modules/helpers/settings/index.js
+++ b/src/modules/helpers/settings/index.js
@@ -1,10 +1,8 @@
import variables from 'modules/variables';
import experimentalInit from '../experimental';
-const defaultSettings = require('modules/default_settings.json');
-const languages = require('modules/languages.json');
-
-const getMessage = (text) => variables.language.getMessage(variables.languagecode, text);
+import defaultSettings from 'modules/default_settings.json';
+import languages from 'modules/languages.json';
export function setDefaultSettings(reset) {
localStorage.clear();
@@ -12,7 +10,10 @@ export function setDefaultSettings(reset) {
// Languages
const languageCodes = languages.map(({ value }) => value);
- const browserLanguage = (navigator.languages && navigator.languages.find((lang) => lang.replace('-', '_') && languageCodes.includes(lang))) || navigator.language.replace('-', '_');
+ const browserLanguage =
+ (navigator.languages &&
+ navigator.languages.find((lang) => lang.replace('-', '_') && languageCodes.includes(lang))) ||
+ navigator.language.replace('-', '_');
if (languageCodes.includes(browserLanguage)) {
localStorage.setItem('language', browserLanguage);
@@ -20,13 +21,13 @@ export function setDefaultSettings(reset) {
localStorage.setItem('language', 'en_GB');
}
- localStorage.setItem('tabName', getMessage('tabname'));
+ localStorage.setItem('tabName', variables.getMessage('tabname'));
if (reset) {
localStorage.setItem('showWelcome', false);
}
- // Finally we set this to true so it doesn't run the function on every load
+ // finally we set this to true so it doesn't run the function on every load
localStorage.setItem('firstRun', true);
}
@@ -34,19 +35,22 @@ export function loadSettings(hotreload) {
switch (localStorage.getItem('theme')) {
case 'dark':
document.body.classList.add('dark');
+ document.body.classList.remove('light');
break;
case 'auto':
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
} else {
document.body.classList.remove('dark');
+ document.body.classList.add('light');
}
break;
default:
+ document.body.classList.add('light');
document.body.classList.remove('dark');
}
- document.title = localStorage.getItem('tabName') || getMessage('tabname');
+ document.title = localStorage.getItem('tabName') || variables.getMessage('tabname');
if (hotreload === true) {
// remove old custom stuff and add new
@@ -60,19 +64,23 @@ export function loadSettings(hotreload) {
});
}
- if (localStorage.getItem('animations') === 'false') {
+ if (localStorage.getItem('animations') === 'false') {
document.body.classList.add('no-animations');
} else {
document.body.classList.remove('no-animations');
}
- if (localStorage.getItem('textBorder') === 'true') {
+ // technically, this is text SHADOW, and not BORDER
+ // however it's a mess and we'll just leave it at this for now
+ const textBorder = localStorage.getItem('textBorder');
+ // enable/disable old text border from before redesign
+ if (textBorder === 'true') {
const elements = ['greeting', 'clock', 'quote', 'quoteauthor', 'date'];
elements.forEach((element) => {
try {
document.querySelector('.' + element).classList.add('textBorder');
} catch (e) {
- // Disregard exception
+ // Disregard exception
}
});
} else {
@@ -81,11 +89,18 @@ export function loadSettings(hotreload) {
try {
document.querySelector('.' + element).classList.remove('textBorder');
} catch (e) {
- // Disregard exception
+ // Disregard exception
}
});
}
+ // remove actual default shadow
+ if (textBorder === 'none') {
+ document.getElementById('center').classList.add('no-textBorder');
+ } else {
+ document.getElementById('center').classList.remove('no-textBorder');
+ }
+
const css = localStorage.getItem('customcss');
if (css) {
document.head.insertAdjacentHTML('beforeend', '');
@@ -98,7 +113,9 @@ export function loadSettings(hotreload) {
url = `@import url('https://fonts.googleapis.com/css2?family=${font}&display=swap');`;
}
- document.head.insertAdjacentHTML('beforeend', `
+ document.head.insertAdjacentHTML(
+ 'beforeend',
+ `
- `);
+ `,
+ );
}
// everything below this shouldn't run on a hot reload event
@@ -139,7 +157,7 @@ export function loadSettings(hotreload) {
`);
}
-// in a nutshell, this function saves all of the current settings, resets them, sets the defaults and then overrides
+// in a nutshell, this function saves all of the current settings, resets them, sets the defaults and then overrides
// the new settings with the old saved messages where they exist
export function moveSettings() {
const currentSettings = Object.keys(localStorage);
diff --git a/src/modules/helpers/settings/modals.js b/src/modules/helpers/settings/modals.js
index 7cfe89cb..3bfdba11 100644
--- a/src/modules/helpers/settings/modals.js
+++ b/src/modules/helpers/settings/modals.js
@@ -1,82 +1,101 @@
import variables from 'modules/variables';
import { toast } from 'react-toastify';
-const getMessage = (text) => variables.language.getMessage(variables.languagecode, text);
-
export function saveFile(data, filename = 'file', type = 'text/json') {
if (typeof data === 'object') {
data = JSON.stringify(data, undefined, 4);
}
-
+
const blob = new Blob([data], { type });
const event = document.createEvent('MouseEvents');
const a = document.createElement('a');
-
+
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.dataset.downloadurl = [type, a.download, a.href].join(':');
-
- event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+
+ // i need to see what all this actually does, i think wessel wrote this function
+ event.initMouseEvent(
+ 'click',
+ true,
+ false,
+ window,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ false,
+ false,
+ false,
+ false,
+ 0,
+ null,
+ );
a.dispatchEvent(event);
}
export function exportSettings() {
const settings = {};
+
Object.keys(localStorage).forEach((key) => {
settings[key] = localStorage.getItem(key);
});
+
+ // i think a good improvement would be to make the file names more descriptive, or allow for saving as custom
+ // otherwise you'll end up with mue-settings (6000).json and have absolutely no idea what any of them are for
saveFile(settings, 'mue-settings.json');
variables.stats.postEvent('tab', 'Settings exported');
}
export function importSettings(e) {
- const content = JSON.parse(e.target.result);
+ const content = JSON.parse(e);
Object.keys(content).forEach((key) => {
localStorage.setItem(key, content[key]);
});
- toast(getMessage('toasts.imported'));
+ toast(variables.getMessage('toasts.imported'));
variables.stats.postEvent('tab', 'Settings imported');
}
export function values(type) {
const marks = {
zoom: [
- { value: 10, label: '0.1x' },
- { value: 100, label: '1x' },
- { value: 200, label: '2x' },
- { value: 400, label: '4x' }
+ { value: 10, label: '0.1x' },
+ { value: 100, label: '1x' },
+ { value: 200, label: '2x' },
+ { value: 400, label: '4x' },
],
toast: [
- { value: 500, label: '0.5s' },
- { value: 1000, label: '1s' },
- { value: 1500, label: '1.5s' },
- { value: 2000, label: '2s' },
- { value: 2500, label: '2.5s' },
- { value: 3000, label: '3s' },
- { value: 4000, label: '4s' },
- { value: 5000, label: '5s'}
+ { value: 500, label: '0.5s' },
+ { value: 1000, label: '1s' },
+ { value: 1500, label: '1.5s' },
+ { value: 2000, label: '2s' },
+ { value: 2500, label: '2.5s' },
+ { value: 3000, label: '3s' },
+ { value: 4000, label: '4s' },
+ { value: 5000, label: '5s' },
],
background: [
- { value: 0, label: '0%'},
- { value: 25, label: '25%' },
- { value: 50, label: '50%' },
- { value: 75, label: '75%' },
- { value: 100, label: '100%' }
+ { value: 0, label: '0%' },
+ { value: 25, label: '25%' },
+ { value: 50, label: '50%' },
+ { value: 75, label: '75%' },
+ { value: 100, label: '100%' },
],
experimental: [
{ value: 0, label: '0s' },
- { value: 500, label: '0.5s' },
- { value: 1000, label: '1s' },
- { value: 1500, label: '1.5s' },
- { value: 2000, label: '2s' },
- { value: 2500, label: '2.5s' },
- { value: 3000, label: '3s' },
- { value: 4000, label: '4s' },
- { value: 5000, label: '5s'}
- ]
+ { value: 500, label: '0.5s' },
+ { value: 1000, label: '1s' },
+ { value: 1500, label: '1.5s' },
+ { value: 2000, label: '2s' },
+ { value: 2500, label: '2.5s' },
+ { value: 3000, label: '3s' },
+ { value: 4000, label: '4s' },
+ { value: 5000, label: '5s' },
+ ],
};
return marks[type];
diff --git a/src/modules/helpers/stats.js b/src/modules/helpers/stats.js
index f402de4a..813ef567 100644
--- a/src/modules/helpers/stats.js
+++ b/src/modules/helpers/stats.js
@@ -21,7 +21,7 @@ export default class Stats {
static async tabLoad() {
const data = JSON.parse(localStorage.getItem('statsData'));
- data['tabs-opened'] = data['tabs-opened'] + 1 || 1;
+ data['tabs-opened'] = data['tabs-opened'] + 1 || 1;
localStorage.setItem('statsData', JSON.stringify(data));
}
}
diff --git a/src/modules/languages.json b/src/modules/languages.json
index d93c1f96..71557ad0 100644
--- a/src/modules/languages.json
+++ b/src/modules/languages.json
@@ -15,6 +15,10 @@
"name": "Español",
"value": "es"
},
+ {
+ "name": "Español (Latinoamérica)",
+ "value": "es_419"
+ },
{
"name": "Français",
"value": "fr"
@@ -31,16 +35,12 @@
"name": "Pусский",
"value": "ru"
},
- {
- "name": "中文 (简体)",
- "value": "zh_CN"
- },
- {
- "name": "Bahasa Indonesia",
- "value": "id_ID"
- },
{
"name": "Türkçe",
"value": "tr_TR"
+ },
+ {
+ "name": "中文 (简体)",
+ "value": "zh_CN"
}
]
diff --git a/src/modules/translations.js b/src/modules/translations.js
new file mode 100644
index 00000000..e336465f
--- /dev/null
+++ b/src/modules/translations.js
@@ -0,0 +1,29 @@
+import * as de_DE from '../translations/de_DE.json';
+import * as en_GB from '../translations/en_GB.json';
+import * as en_US from '../translations/en_US.json';
+import * as es from '../translations/es.json';
+import * as es_419 from '../translations/es_419.json';
+import * as fr from '../translations/fr.json';
+import * as nl from '../translations/nl.json';
+import * as no from '../translations/no.json';
+import * as ru from '../translations/ru.json';
+import * as zh_CN from '../translations/zh_CN.json';
+import * as id_ID from '../translations/id_ID.json';
+import * as tr_TR from '../translations/tr_TR.json';
+
+const translations = {
+ de_DE,
+ en_GB,
+ en_US,
+ es,
+ es_419,
+ fr,
+ nl,
+ no,
+ ru,
+ zh_CN,
+ id_ID,
+ tr_TR,
+};
+
+export default translations;
diff --git a/src/modules/variables.js b/src/modules/variables.js
index e6fe6ca0..a5c5a3c8 100644
--- a/src/modules/variables.js
+++ b/src/modules/variables.js
@@ -1,14 +1,13 @@
-import * as Constants from 'modules/constants';
+import * as constants from 'modules/constants';
const variables = {
language: {},
languagecode: '',
stats: {
tabLoad: () => '',
- postEvent: () => ''
+ postEvent: () => '',
},
- //keybinds: {},
- constants: Constants
+ constants,
};
export default variables;
diff --git a/src/scss/_mixins.scss b/src/scss/_mixins.scss
index e7829bd4..98e9993d 100644
--- a/src/scss/_mixins.scss
+++ b/src/scss/_mixins.scss
@@ -29,3 +29,26 @@
@content;
}
}
+
+@mixin themed() {
+ @each $theme, $map in $themes {
+ .#{$theme} & {
+ $theme-map: () !global;
+ @each $key, $submap in $map {
+ $value: map-get(map-get($themes, $theme), '#{$key}');
+ $theme-map: map-merge(
+ $theme-map,
+ (
+ $key: $value,
+ )
+ ) !global;
+ }
+ @content;
+ $theme-map: null !global;
+ }
+ }
+}
+
+@function t($key) {
+ @return map-get($theme-map, $key);
+}
diff --git a/src/scss/_themes.scss b/src/scss/_themes.scss
deleted file mode 100644
index 042b7874..00000000
--- a/src/scss/_themes.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-@import 'variables';
-
-$main-text: map-get($theme-colours, 'main');
-$modal-text: map-get($modal, 'text');
-$background: map-get($modal, 'background');
-$sidebar: map-get($modal, 'sidebar');
-$tab-active: map-get($modal, 'tab-active');
-$photo-info: map-get($theme-colours, 'photo-info');
-$modal-link: map-get($modal, 'modal-link');
-
-$main-text-dark: map-get($theme-colours, 'secondary');
-$modal-text-dark: map-get($theme-colours, 'main');
-$background-dark: map-get($modal, 'background-dark');
-$sidebar-dark: map-get($modal, 'sidebar-dark');
-$tab-active-dark: map-get($modal, 'tab-active-dark');
-$photo-info-dark: map-get($theme-colours, 'photo-info-dark');
-$modal-link-dark: map-get($modal, 'modal-link-dark');
-
-:root {
- --main-text: #{$main-text};
- --modal-text: #{$modal-text};
- --background: #{$background};
- --sidebar: #{$sidebar};
- --tab-active: #{$tab-active};
- --photo-info: #{$photo-info};
- --modal-link: #{$modal-link};
-}
-
-.dark {
- --main-text: #{$main-text-dark};
- --modal-text: #{$modal-text-dark};
- --background: #{$background-dark};
- --sidebar: #{$sidebar-dark};
- --tab-active: #{$tab-active-dark};
- --photo-info: #{$photo-info-dark};
- --modal-link: #{$modal-link-dark};
-}
diff --git a/src/scss/modules/_toast.scss b/src/scss/_toast.scss
similarity index 69%
rename from src/scss/modules/_toast.scss
rename to src/scss/_toast.scss
index 7e2eb6f2..ef7af1b1 100644
--- a/src/scss/modules/_toast.scss
+++ b/src/scss/_toast.scss
@@ -1,8 +1,8 @@
+@import 'variables';
+
.Toastify__toast-body {
- color: var(--modal-text) !important;
font-size: 16px !important;
padding: 15px 20px !important;
- background: var(--background) !important;
}
.Toastify__toast {
@@ -11,13 +11,11 @@
height: auto !important;
width: auto !important;
min-width: auto !important;
- padding: 0px !important;
+ padding: 10px !important;
}
.Toastify__close-button {
- margin-top: 10px;
- margin-right: 10px;
- color: var(--modal-text) !important;
+ align-self: center !important;
}
.Toastify__progress-bar--default {
@@ -31,5 +29,5 @@
}
.Toastify__toast--default {
- background: var(--background) !important;
+ @extend %basic;
}
diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss
index 7c0877c8..ba19dde2 100644
--- a/src/scss/_variables.scss
+++ b/src/scss/_variables.scss
@@ -1,4 +1,22 @@
+// since alex will no doubtedly be looking at this file often
+// here's a reminder: please add a new line when doing nested scss, otherwise it is messy!
@use 'sass:map';
+@import 'mixins';
+
+$background: 'background';
+$boxShadow: 'boxShadow';
+$borderRadius: 'borderRadius';
+$color: 'color';
+$btn-background: 'btn-background';
+$btn-backgroundHover: 'btn-backgroundHover';
+$subColor: 'subColor';
+$modal-background: 'modal-background';
+$modal-text: 'modal-text';
+$modal-sidebar: 'modal-sidebar';
+$modal-sidebarActive: 'modal-sidebarActive';
+$link: 'link';
+$weather: 'weather';
+$modal-secondaryColour: 'modal-secondaryColour';
$theme-colours: (
'gradient': linear-gradient(90deg, #ffb032 0%, #dd3b67 100%),
@@ -6,7 +24,7 @@ $theme-colours: (
'secondary': rgba(0, 0, 0, 1),
'main-text-color': rgba(242, 243, 244, 1),
'photo-info': #2d3436,
- 'photo-info-dark': #ffff
+ 'photo-info-dark': #ffff,
);
$modal: (
@@ -21,15 +39,281 @@ $modal: (
'sidebar-dark': rgb(53, 59, 72),
'tab-active-dark': rgba(65, 71, 84, 0.9),
'modal-link': #5352ed,
- 'modal-link-dark': #3498db
+ 'modal-link-dark': #3498db,
);
$button-colours: (
'confirm': rgba(46, 213, 115, 1),
'reset': rgba(255, 71, 87, 1),
- 'other': rgba(83, 82, 237, 1)
+ 'other': rgba(83, 82, 237, 1),
);
-$main-parts: (
- 'shadow': 0 0 1rem 0 rgba(0, 0, 0, 0.2)
+$ui-elements: (
+ 'background': rgba(0, 0, 0, 0.7),
+ 'backgroundBlur': 15px,
+ 'color': rgb(255, 255, 255),
+ 'borderRadius': 12px,
+ 'boxShadow': 0 0 0 1px #484848,
);
+
+$themes: (
+ light: (
+ 'weather': #333333,
+ 'background': rgba(255, 255, 255, 0.7),
+ 'backgroundBlur': 15px,
+ 'color': rgb(0, 0, 0),
+ 'subColor': #333333,
+ 'borderRadius': 12px,
+ 'boxShadow': 0 0 0 1px #e7e3e9,
+ 'btn-background': #fff,
+ 'btn-backgroundHover': rgba(247, 250, 252, 0.9),
+ 'modal-background': #fff,
+ 'modal-sidebar': rgba(240, 240, 240, 1),
+ 'modal-sidebarActive': rgba(219, 219, 219, 0.72),
+ 'modal-secondaryColour': #fafafa,
+ 'link': rgba(83, 82, 237, 1),
+ ),
+ dark: (
+ 'weather': #e7e7e7,
+ 'background': rgba(0, 0, 0, 0.7),
+ 'backgroundBlur': 15px,
+ 'color': rgb(255, 255, 255),
+ 'subColor': #c2c2c2,
+ 'borderRadius': 12px,
+ 'boxShadow': 0 0 0 1px #484848,
+ 'btn-background': #222,
+ 'btn-backgroundHover': #565656,
+ 'modal-background': #0a0a0a,
+ 'modal-sidebar': #0e1013,
+ 'modal-sidebarActive': #333,
+ 'modal-secondaryColour': #111,
+ 'link': rgb(115, 115, 255),
+ ),
+);
+
+%basic {
+ @include themed() {
+ background: t($background);
+ border-radius: t($borderRadius);
+ color: t($color);
+ box-shadow: t($boxShadow);
+ }
+
+ backdrop-filter: blur(map.get($ui-elements, 'backgroundBlur'));
+
+ .title {
+ font-size: 18px;
+
+ @include themed() {
+ color: t($color);
+ }
+ }
+
+ .subtitle {
+ font-size: 14px;
+
+ @include themed() {
+ color: t($subColor);
+ }
+ }
+}
+
+%tabText {
+ .mainTitle {
+ display: flex;
+ align-items: center;
+ font-size: 38px;
+ font-weight: 600;
+ margin-bottom: 15px;
+
+ @include themed() {
+ color: t($color);
+ }
+
+ .backTitle {
+ cursor: pointer;
+ @include themed() {
+ color: t($subColor);
+ &:hover {
+ color: t($color);
+ }
+ }
+ }
+ }
+
+ .title {
+ font-size: 24px;
+ font-weight: 600;
+
+ @include themed() {
+ color: t($color);
+ }
+ }
+
+ .subtitle {
+ font-size: 16px;
+
+ @include themed() {
+ color: t($subColor);
+ }
+ }
+
+ .link {
+ font-size: 16px;
+ text-decoration: none;
+ cursor: pointer;
+
+ @include themed() {
+ color: t($link);
+ }
+
+ &:hover {
+ opacity: 0.8;
+ }
+ }
+}
+
+@mixin modal-button($type) {
+ @include themed() {
+ @if $type == 'standard' {
+ background: t($modal-sidebar);
+ box-shadow: t($boxShadow);
+ border: 0;
+ color: t($color);
+
+ &:hover {
+ background: t($modal-sidebarActive);
+ }
+ }
+
+ border-radius: 12px;
+ height: 40px;
+ font-size: 1rem;
+ display: flex;
+ align-items: center;
+ flex-flow: row-reverse;
+ justify-content: center;
+ gap: 20px;
+ transition: 0.5s;
+ cursor: pointer;
+
+ &:hover {
+ background: t($modal-sidebarActive);
+ }
+
+ &:active {
+ background: t($modal-sidebarActive);
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:focus {
+ background: t($modal-sidebarActive);
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:disabled {
+ background: t($modal-sidebarActive);
+ cursor: not-allowed;
+ }
+ }
+}
+
+@mixin basicIconButton($padding, $font-size, $type) {
+ @include themed() {
+ @if $type == 'ui' {
+ background: t($btn-background);
+ color: t($color);
+ box-shadow: t($boxShadow);
+ border-radius: t($borderRadius);
+
+ &:hover {
+ background: t($btn-backgroundHover);
+ }
+
+ &:active {
+ background: t($btn-backgroundHover);
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:focus {
+ background: t($btn-backgroundHover);
+ box-shadow: 0 0 0 1px t($color);
+ }
+ }
+
+ @if $type == 'modal-text' {
+ color: t($color);
+ background: none;
+ border-radius: t($borderRadius);
+
+ &:hover {
+ background: t($modal-sidebarActive);
+ box-shadow: 3px solid t($modal-sidebarActive);
+ }
+ }
+
+ @if $type == 'modal' {
+ background: t($modal-sidebar);
+ border: 3px solid t($modal-sidebarActive);
+ color: t($color);
+ border-radius: t($borderRadius);
+
+ &:hover {
+ background: t($modal-sidebarActive);
+ }
+
+ &:active {
+ background: t($modal-sidebarActive);
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:focus {
+ background: t($modal-sidebarActive);
+ box-shadow: 0 0 0 1px t($color);
+ }
+ }
+
+ @if $type == 'legacy' {
+ background: none;
+ color: #fff;
+ border-radius: t($borderRadius);
+ box-shadow: 0 0 0 0 !important;
+
+ &:hover {
+ background-color: rgb(66 66 66 / 23%);
+ }
+
+ &:active {
+ background-color: rgb(66 66 66 / 23%);
+ box-shadow: 0 0 0 1px t($color);
+ }
+
+ &:focus {
+ background-color: rgb(66 66 66 / 23%);
+ box-shadow: 0 0 0 1px t($color);
+ }
+ }
+ }
+
+ // this needs to be moved up!
+ padding: $padding;
+ font-size: $font-size;
+ cursor: pointer;
+ border: none;
+ outline: none;
+ transition: 0.5s;
+ display: grid;
+ place-items: center;
+}
+
+@mixin legacyIconButton($padding, $font-size) {
+ @include themed() {
+ color: t($color);
+ }
+
+ &:hover {
+ @include themed() {
+ background: t($btn-background);
+ }
+ }
+}
diff --git a/src/scss/index.scss b/src/scss/index.scss
index a5b23d3c..bdc6a805 100644
--- a/src/scss/index.scss
+++ b/src/scss/index.scss
@@ -1,95 +1,120 @@
-@import 'variables';
-@import 'themes';
-
-@import 'modules/toast';
-@import 'modules/buttons';
-
-body {
- background: #000;
- margin: 0;
- overflow: hidden;
-}
-
-* {
- font-family: 'Lexend Deca', 'Montserrat', sans-serif !important;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- outline: none;
-}
-
-#center {
- margin-left: 2vw;
- margin-right: 2vw;
- display: flex;
- flex-direction: column;
- justify-content: center;
- font-size: calc(10px + 2vmin);
- text-align: center;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- margin: auto;
- text-shadow: 0 0 25px rgba(0, 0, 0, 0.3);
-}
-
-::placeholder {
- color: map-get($theme-colours, 'main');
- opacity: 1;
-}
-
-::selection {
- background-color: #c2c2c2;
-}
-
-#root {
- min-height: 100vh;
- display: grid;
- color: map-get($theme-colours, 'main-text-color');
-}
-
-/* accessibility */
-.textBorder {
- filter: drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 #111c);
-}
-
-.no-animations {
- .ReactModal__Content,
- button,
- svg,
- input[type=text],
- .MuiSwitch-switchBase,
- .tooltipTitle,
- .quicklinks-container img {
- transition: none !important;
- }
-}
-
-/* fonts (imported from fontsource) */
-@font-face {
- font-family: 'Lexend Deca';
- font-style: normal;
- font-display: swap;
- font-weight: 400;
- src: url('../../node_modules/@fontsource/lexend-deca/files/lexend-deca-latin-400-normal.woff2') format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Lexend Deca';
- font-style: normal;
- font-display: swap;
- font-weight: 400;
- src: url('../../node_modules/@fontsource/lexend-deca/files/lexend-deca-latin-ext-400-normal.woff2') format('woff2');
- unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-display: swap;
- font-weight: 400;
- src: url('../../node_modules/@fontsource/montserrat/files/montserrat-cyrillic-400-normal.woff2') format('woff2');
- unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
+@import 'variables';
+@import 'toast';
+
+body {
+ background: #000;
+ margin: 0;
+ overflow: hidden;
+}
+
+* {
+ font-family: 'Lexend Deca', 'Montserrat', sans-serif !important;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ outline: none;
+}
+
+#center {
+ font-size: calc(10px + 2vmin);
+ text-align: center;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ text-shadow: 0 0 25px rgba(0, 0, 0, 0.3);
+ display: grid;
+ place-items: center;
+ margin: 0;
+
+ #widgets {
+ color: #fff;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ }
+
+ &.no-textBorder {
+ text-shadow: none !important;
+
+ .quote {
+ text-shadow: none !important;
+ }
+ }
+}
+
+::placeholder {
+ @include themed() {
+ color: t($color);
+ }
+ opacity: 1;
+}
+
+::selection {
+ background-color: #c2c2c2;
+}
+
+#root {
+ @include themed() {
+ color: t($color);
+ }
+}
+
+/* accessibility */
+.textBorder {
+ filter: drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 #111c);
+}
+
+.no-animations {
+ .ReactModal__Content,
+ button,
+ svg,
+ input[type='text'],
+ .MuiSwitch-switchBase,
+ .tooltipTitle,
+ .quicklinks-container img {
+ transition: none !important;
+ }
+}
+
+.frame {
+ width: 100%;
+ height: 100%;
+}
+
+/* fonts (imported from fontsource) */
+// i don't even know what the unicode-range is for, but we're keeping it so that nothing breaks
+// same reason as why fontsource is never updated, it broke font loading last time so it flashed
+@font-face {
+ font-family: 'Lexend Deca';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url('../../node_modules/@fontsource/lexend-deca/files/lexend-deca-latin-400-normal.woff2')
+ format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
+ U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@font-face {
+ font-family: 'Lexend Deca';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url('../../node_modules/@fontsource/lexend-deca/files/lexend-deca-latin-ext-400-normal.woff2')
+ format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
+ U+2C60-2C7F, U+A720-A7FF;
+}
+
+@font-face {
+ font-family: 'Montserrat';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url('../../node_modules/@fontsource/montserrat/files/montserrat-cyrillic-400-normal.woff2')
+ format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
diff --git a/src/scss/modules/_buttons.scss b/src/scss/modules/_buttons.scss
deleted file mode 100644
index 28594b45..00000000
--- a/src/scss/modules/_buttons.scss
+++ /dev/null
@@ -1,112 +0,0 @@
-%settingsButton {
- transition: ease 0.33s;
- color: map-get($theme-colours, 'main');
- cursor: pointer;
- padding: 10px 30px;
- font-size: 20px;
- border-radius: 24px;
- box-shadow: 0 5px 15px rgba(128, 161, 144, 0.4);
-
- &:hover,
- &:active {
- outline: none;
- background: none;
- }
-
- &:disabled {
- cursor: not-allowed;
- color: grey !important;
- background: none;
- border: 2px solid grey !important;
- }
-}
-
-.dark %settingsButton {
- box-shadow: none;
-}
-
-.pinNote {
- @extend %settingsButton;
-
- background-color: map-get($button-colours, 'confirm');
- border: 2px solid map-get($button-colours, 'confirm');
- color: map-get($theme-colours, 'main');
- transition: 0s;
-
- &:hover {
- color: map-get($button-colours, 'confirm');
- }
-
- svg {
- fill: currentColor;
- width: 1em;
- height: 1em;
- display: inline-block;
- font-size: 1.5rem;
- transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
- flex-shrink: 0;
- user-select: none;
- }
-}
-
-.copyNote {
- @extend %settingsButton;
-
- background-color: map-get($button-colours, 'other');
- border: 2px solid map-get($button-colours, 'other');
- color: map-get($theme-colours, 'main');
- transition: 0s;
- display: inline;
- margin: 5px;
-
- &:hover {
- color: map-get($button-colours, 'other');
- }
-}
-
-.upload {
- width: 100%;
- height: 100%;
- border-radius: 20px;
- border: none;
- outline: none;
- padding: 50px;
- background: var(--sidebar);
- color: var(--modal-text);
- cursor: pointer;
-
- &:hover {
- background: var(--tab-active);
- }
-
- svg {
- font-size: 4em;
- }
-
- span {
- font-size: 2em;
- }
-}
-
-.cleanButton {
- background: none;
- border: none;
- vertical-align: middle;
-
- svg {
- fill: #ff4757;
- border-radius: 100%;
- background-color: var(--background);
- height: 1.2em;
- width: 1.2em;
- cursor: pointer;
- transition: ease 0.5s;
-
- &:hover {
- border-radius: 100%;
- background: #ff4757;
- fill: var(--background);
- transition: ease 0.5s;
- }
- }
-}
diff --git a/src/translations/de_DE.json b/src/translations/de_DE.json
index ec309bbc..70e1d483 100644
--- a/src/translations/de_DE.json
+++ b/src/translations/de_DE.json
@@ -1,554 +1,721 @@
{
+ "tabname": "Neuer Tab",
+ "widgets": {
+ "greeting": {
+ "morning": "Guten Morgen",
+ "afternoon": "Guten Tag",
+ "evening": "Guten Abend",
+ "christmas": "Fröhliche Weihnachten",
+ "newyear": "Frohes neues Jahr",
+ "halloween": "Happy Halloween",
+ "birthday": "Glückwunsch zum Geburtstag"
+ },
+ "background": {
+ "credit": "Foto von",
+ "unsplash": "unsplash.com",
+ "pexels": "pexels.com",
+ "information": "Informationen",
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
+ },
+ "search": "Suche",
+ "quicklinks": {
+ "new": "Neuer Link",
+ "name": "Name",
+ "url": "URL",
+ "icon": "Icon (optional)",
+ "add": "Hinzufügen",
+ "name_error": "Muss einen Namen angeben",
+ "url_error": "Muss eine URL angeben"
+ },
+ "date": {
+ "week": "Kalenderwoche"
+ },
+ "weather": {
+ "not_found": "Nicht gefunden",
+ "meters": "{amount} Meter",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Neuladen"
+ },
+ "notes": {
+ "title": "Notizen",
+ "placeholder": "Hier eingeben"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
+ }
+ }
+ },
"modals": {
"main": {
+ "title": "Einstellungen",
+ "loading": "Läd...",
+ "file_upload_error": "Datei ist größer als 2MB",
+ "navbar": {
+ "settings": "Einstellungen",
+ "addons": "Meine Addons",
+ "marketplace": "Marktplatz"
+ },
+ "error_boundary": {
+ "title": "Fehler",
+ "message": "Diese Komponente von Mue konnte nicht geladen werden",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
+ "refresh": "Neuladen"
+ },
+ "settings": {
+ "enabled": "Aktivieren",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
+ "reminder": {
+ "title": "HINWEIS",
+ "message": "Damit alle Änderungen vorgenommen werden können, muss die Seite aktualisiert werden."
+ },
+ "sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
+ "time": {
+ "title": "Uhrzeit",
+ "format": "Format",
+ "type": "Typ",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
+ "digital": {
+ "title": "Digital",
+ "subtitle": "Change how the digital clock looks",
+ "seconds": "Sekunden",
+ "twentyfourhour": "24 Stunden",
+ "twelvehour": "12 Stunden",
+ "zero": "Mit nullen füllen"
+ },
+ "analogue": {
+ "title": "Analog",
+ "subtitle": "Change how the analogue clock looks",
+ "second_hand": "Sekundenzeiger",
+ "minute_hand": "Minutenzeiger",
+ "hour_hand": "Stundenzeiger",
+ "hour_marks": "Stunden-Markierungen",
+ "minute_marks": "Minuten-Markierungen"
+ },
+ "percentage_complete": "Denn Tages fotschritt in Prozent anzeigen",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
+ },
+ "date": {
+ "title": "Datum",
+ "week_number": "Kalenderwoche",
+ "day_of_week": "Wochentag",
+ "datenth": "Mit nullen füllen",
+ "type": {
+ "short": "Kurz",
+ "long": "Lang",
+ "subtitle": "Whether to display the date in long form or short form"
+ },
+ "type_settings": "Display settings and format for the selected date type",
+ "short_date": "Kurzes Datum",
+ "short_format": "Kurzes Format",
+ "long_format": "Long format",
+ "short_separator": {
+ "title": "Kurzer Trenner",
+ "dots": "Punkte",
+ "dash": "Bindestrich",
+ "gaps": "Lücke",
+ "slashes": "Schrägstriche"
+ }
+ },
+ "quote": {
+ "title": "Zitat",
+ "additional": "Other settings to customise the style of the quote widget",
+ "author_link": "Autor Link",
+ "custom": "Benutzerdefiniertes Zitat",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
+ "custom_author": "Benutzerdefinierter Autor",
+ "author_img": "Show author image",
+ "add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
+ "buttons": {
+ "title": "Schaltflächen",
+ "subtitle": "Choose which buttons to show on the quote",
+ "copy": "Kopieren",
+ "tweet": "Twitter",
+ "favourite": "Favorit"
+ }
+ },
+ "greeting": {
+ "title": "Begrüßung",
+ "events": "Veranstaltungen",
+ "default": "Standard-Begrüßungsnachricht",
+ "name": "Name zur Begrüßung",
+ "birthday": "Geburtstag",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
+ "birthday_age": "Alter",
+ "birthday_date": "Datum",
+ "additional": "Settings for the greeting display"
+ },
+ "background": {
+ "title": "Hintergrund",
+ "ddg_image_proxy": "DuckDuckGo Bilder Proxy verwenden",
+ "transition": "Weicher übergang",
+ "photo_information": "Foto-Informationen anzeigen",
+ "show_map": "Show location map on photo information if available",
+ "categories": "Categories",
+ "buttons": {
+ "title": "Schaltflächen",
+ "view": "Vollbild",
+ "favourite": "Favorit",
+ "download": "Download"
+ },
+ "effects": {
+ "title": "Effekte",
+ "subtitle": "Add effects to the background images",
+ "blur": "Unschärfe anpassen",
+ "brightness": "Helligkeit anpassen",
+ "filters": {
+ "title": "Background filter",
+ "amount": "Filtermenge",
+ "grayscale": "Graustufen",
+ "sepia": "Sepia",
+ "invert": "Invertieren",
+ "saturate": "Sättigen",
+ "contrast": "Kontrast"
+ }
+ },
+ "type": {
+ "title": "Type",
+ "api": "API",
+ "custom_image": "Benutzerdefiniertes Bild",
+ "custom_colour": "Benutzerdefinierte Farbe/Farbverlauf",
+ "random_colour": "Random colour",
+ "random_gradient": "Random gradient"
+ },
+ "source": {
+ "title": "Quelle",
+ "subtitle": "Select where to get background images from",
+ "api": "Hintergrund API",
+ "custom_background": "Benutzerdefinierter Hintergrund",
+ "custom_colour": "Benutzerdefinierter Hintergrundfarbe",
+ "upload": "Hochladen",
+ "add_colour": "Farbe hinzufügen",
+ "add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
+ "add_url": "Add URL",
+ "disabled": "Deaktiviert",
+ "loop_video": "Video schleife",
+ "mute_video": "Video stumm",
+ "quality": {
+ "title": "Qualität",
+ "original": "Original",
+ "high": "Hohe Qualität",
+ "normal": "Normale Qualität",
+ "datasaver": "Datensparer"
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
+ },
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
+ "interval": {
+ "title": "Ändern Sie alle",
+ "subtitle": "Change how often the background is updated",
+ "minute": "Minute",
+ "half_hour": "Halbe Stunde",
+ "hour": "Stunde",
+ "day": "Tag",
+ "month": "Monat"
+ },
+ "category": "Kategorie"
+ },
+ "search": {
+ "title": "Suche",
+ "additional": "Additional options for search widget display and functionality",
+ "search_engine": "Suchmaschine",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
+ "custom": "Abfrage-URL",
+ "autocomplete": "Autovervollständigen",
+ "autocomplete_provider": "Anbieter von Autovervollständigung",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
+ "voice_search": "Sprachsuche",
+ "dropdown": "Auswahlmenü Suche",
+ "focus": "Focus on tab open"
+ },
+ "weather": {
+ "title": "Wetter",
+ "location": "Standort",
+ "auto": "Auto",
+ "widget_type": "Widget Type",
+ "temp_format": {
+ "title": "Temperatur Format",
+ "celsius": "Celsius",
+ "fahrenheit": "Fahrenheit",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Zusätzliche informationen",
+ "show_location": "Standort anzeigen",
+ "show_description": "Beschreibung anzeigen",
+ "cloudiness": "Bewölkungsgrad",
+ "humidity": "Luftfeuchtigkeit",
+ "visibility": "Sichtbarkeit",
+ "wind_speed": "Windgeschwindigkeit",
+ "wind_direction": "Windrichtung",
+ "min_temp": "Mindesttemperatur",
+ "max_temp": "Höchsttemperatur",
+ "atmospheric_pressure": "Atmosphärischer Druck"
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
+ },
+ "quicklinks": {
+ "title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
+ "open_new": "In neuen Tab öffnen",
+ "tooltip": "Tooltip",
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
+ },
+ "message": {
+ "title": "Message",
+ "add": "Add message",
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
+ },
+ "appearance": {
+ "title": "Erscheinungsbild",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
+ "theme": {
+ "title": "Design",
+ "description": "Change the theme of the Mue widgets and modals",
+ "auto": "Auto",
+ "light": "Hell",
+ "dark": "Dunkel"
+ },
+ "navbar": {
+ "title": "Navigationsleiste",
+ "notes": "Notizen",
+ "refresh": "Aktualisieren",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
+ "hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
+ "refresh_options": {
+ "none": "Keine",
+ "page": "Seite"
+ }
+ },
+ "font": {
+ "title": "Schriftart",
+ "description": "Change the font used in Mue",
+ "custom": "Eigene Schriftart",
+ "google": "Importieren von Google Fonts",
+ "weight": {
+ "title": "Schriftgröße",
+ "thin": "Dünn",
+ "extra_light": "Extra hell",
+ "light": "Hell",
+ "normal": "Normal",
+ "medium": "Mittel",
+ "semi_bold": "Semi-Bold",
+ "bold": "Bold",
+ "extra_bold": "Extra-Bold"
+ },
+ "style": {
+ "title": "Schriftart",
+ "normal": "Normal",
+ "italic": "Italic",
+ "oblique": "Oblique"
+ }
+ },
+ "accessibility": {
+ "title": "Barrierefreiheit",
+ "description": "Accessibility settings for Mue",
+ "animations": "Animations",
+ "text_shadow": "Widget-Textschatten",
+ "widget_zoom": "Widget größe",
+ "toast_duration": "Toast Dauer",
+ "milliseconds": "ms"
+ },
+ "animations": "Animationen"
+ },
+ "order": {
+ "title": "Widget Sortieren"
+ },
+ "advanced": {
+ "title": "Erweitert",
+ "offline_mode": "Offline Modus",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
+ "data": "Daten",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
+ "reset_modal": {
+ "title": "ACHTUNG",
+ "question": "Möchten Sie Mue zurücksetzen?",
+ "information": "Dadurch werden alle Daten gelöscht. Wenn Sie Ihre Daten und Einstellungen behalten möchten, exportieren Sie sie bitte zuerst.",
+ "cancel": "Abbrechen"
+ },
+ "customisation": "Anpassung",
+ "custom_css": "Benutzerdefiniertes CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
+ "custom_js": "Benutzerdefiniertes JS",
+ "tab_name": "Tab Name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
+ "timezone": {
+ "title": "Zeitzone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
+ "automatic": "Automatisch"
+ },
+ "experimental_warning": "Bitte beachten Sie, dass das Mue Team keinen Support leisten kann, wenn Sie den experimentellen Modus aktiviert haben. Bitte deaktivieren Sie ihn zuerst und schauen Sie, ob das Problem weiterhin auftritt, bevor Sie den Support kontaktieren."
+ },
+ "stats": {
+ "title": "Statistiken",
+ "warning": "Sie müssen die Nutzungsdaten aktivieren, um diese Funktion nutzen zu können. Diese Daten werden nur lokal gespeichert.",
+ "sections": {
+ "tabs_opened": "Geöffnete Tabs",
+ "backgrounds_favourited": "Bevorzugte Hintergründe",
+ "backgrounds_downloaded": "Hintergründe heruntergeladen",
+ "quotes_favourited": "Bevorzugte Zitate",
+ "quicklinks_added": "Quicklinks hinzugefügt",
+ "settings_changed": "Einstellungen geändert",
+ "addons_installed": "Installierte Add-ons"
+ },
+ "usage": "Nutzungsstatistiken",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
+ },
+ "experimental": {
+ "title": "Experimentell",
+ "warning": "Diese Einstellungen sind nicht vollständig getestet/implementiert und funktionieren möglicherweise nicht korrekt!",
+ "developer": "Entwickler"
+ },
+ "language": {
+ "title": "Sprache",
+ "quote": "Zitat-Sprache"
+ },
+ "changelog": {
+ "title": "Änderungshinweise",
+ "by": "By {author}"
+ },
+ "about": {
+ "title": "Über",
+ "copyright": "Urheberrechte",
+ "version": {
+ "title": "Version",
+ "checking_update": "Auf Update prüfen",
+ "update_available": "Update verfügbar",
+ "no_update": "Kein Update verfügbar",
+ "offline_mode": "Im Offline Modus kann nicht nach Updates gesucht werden",
+ "error": {
+ "title": "Update-Informationen konnten nicht abgerufen werden",
+ "description": "Es ist ein Fehler aufgetreten"
+ }
+ },
+ "contact_us": "Kontaktieren Sie uns",
+ "support_mue": "Mue unterstützen",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
+ "resources_used": {
+ "title": "Verwendete Ressourcen",
+ "bg_images": "Offline Hintergrundbilder"
+ },
+ "contributors": "Mitwirkende",
+ "supporters": "Unterstützer",
+ "no_supporters": "There are currently no Mue supporters",
+ "photographers": "Photographers"
+ }
+ },
+ "buttons": {
+ "reset": "Zurücksetzen",
+ "import": "Importieren",
+ "export": "Exportieren"
+ }
+ },
+ "marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
+ "photo_packs": "Fotopakete",
+ "quote_packs": "Zitat-Pakete",
+ "preset_settings": "Voreingestellte Einstellungen",
+ "no_items": "Keine Einträge in dieser Kategorie",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
+ "product": {
+ "overview": "Übersicht",
+ "information": "Information",
+ "last_updated": "Letzte Aktualisierung",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
+ "version": "Version",
+ "author": "Autor",
+ "part_of": "Part of",
+ "explore": "Explore",
+ "buttons": {
+ "addtomue": "Zu Mue hinzufügen",
+ "remove": "Entfernen",
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
+ },
+ "setting": "Setting",
+ "value": "Value"
+ },
+ "offline": {
+ "title": "Sieht aus, als ob Sie offline sind",
+ "description": "Bitte stellen Sie eine Verbindung zum Internet her"
+ }
+ },
"addons": {
"added": "Hinzugefügt",
"check_updates": "Check for updates",
+ "no_updates": "No updates available",
+ "updates_available": "Updates available {amount}",
+ "empty": {
+ "title": "Hier ist es leer",
+ "description": "Gehen Sie zum Marktplatz, um einige hinzuzufügen"
+ },
+ "sideload": {
+ "title": "Hochladen",
+ "description": "Install a Mue addon not on the marketplace from your computer",
+ "failed": "Failed to sideload addon",
+ "errors": {
+ "no_name": "No name provided",
+ "no_author": "No author provided",
+ "no_type": "No type provided",
+ "invalid_photos": "Invalid photos object",
+ "invalid_quotes": "Invalid quotes object"
+ }
+ },
+ "sort": {
+ "title": "Sortieren",
+ "newest": "Installiert (Neueste)",
+ "oldest": "Installiert (Älteste)",
+ "a_z": "Alphabetisch (A-Z)",
+ "z_a": "Alphabetisch (Z-A)"
+ },
"create": {
- "finish": {
- "download": "Add-on herunterladen",
- "title": "Fertig"
+ "title": "Erstellen",
+ "example": "Example",
+ "other_title": "Add-on erstellen",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
},
"metadata": {
- "description": "Beschreibung",
- "icon_url": "Icon URL",
"name": "Name",
- "screenshot_url": "Screenshot URL"
+ "icon_url": "Icon URL",
+ "screenshot_url": "Screenshot URL",
+ "description": "Beschreibung",
+ "example": "Download example"
},
- "other_title": "Add-on erstellen",
- "photos": {
- "title": "Fotos hinzufügen"
- },
- "quotes": {
- "api": {
- "author": "JSON quote author (or override)",
- "name": "JSON quote name",
- "title": "API",
- "url": "Quote URL"
- },
- "local": {
- "title": "Local"
- },
- "title": "Zitate hinzufügen"
+ "finish": {
+ "title": "Fertig",
+ "download": "Add-on herunterladen"
},
"settings": {
"current": "Aktuelle Einstellungen importieren",
"json": "Upload JSON"
},
- "title": "Erstellen"
- },
- "empty": {
- "description": "Gehen Sie zum Marktplatz, um einige hinzuzufügen",
- "title": "Hier ist es leer"
- },
- "no_updates": "No updates available",
- "sideload": {
- "errors": {
- "invalid_photos": "Invalid photos object",
- "invalid_quotes": "Invalid quotes object",
- "no_author": "No author provided",
- "no_name": "No name provided",
- "no_type": "No type provided"
+ "photos": {
+ "title": "Fotos hinzufügen"
},
- "failed": "Failed to sideload addon",
- "title": "Hochladen"
- },
- "sort": {
- "a_z": "Alphabetisch (A-Z)",
- "newest": "Installiert (Neueste)",
- "oldest": "Installiert (Älteste)",
- "title": "Sortieren",
- "z_a": "Alphabetisch (Z-A)"
- },
- "updates_available": "Updates available {amount}"
- },
- "error_boundary": {
- "message": "Diese Komponente von Mue konnte nicht geladen werden",
- "refresh": "Neuladen",
- "title": "Fehler"
- },
- "file_upload_error": "Datei ist größer als 2 MB",
- "loading": "Wird geladen …",
- "marketplace": {
- "no_items": "Keine Einträge in dieser Kategorie",
- "offline": {
- "description": "Bitte stellen Sie eine Verbindung zum Internet her",
- "title": "Sieht aus, als ob Sie offline sind"
- },
- "photo_packs": "Fotopakete",
- "preset_settings": "Voreingestellte Einstellungen",
- "product": {
- "author": "Autor",
- "buttons": {
- "addtomue": "Zu Mue hinzufügen",
- "remove": "Entfernen",
- "update_addon": "Update Add-on"
- },
- "information": "Information",
- "last_updated": "Letzte Aktualisierung",
- "overview": "Übersicht",
- "quote_warning": {
- "description": "Dieses Zitatpaket stellt Anfragen an externe Server, die Sie möglicherweise tracken!",
- "title": "Warnung"
- },
- "version": "Version"
- },
- "quote_packs": "Zitat-Pakete"
- },
- "navbar": {
- "addons": "Meine Addons",
- "marketplace": "Marktplatz",
- "settings": "Einstellungen"
- },
- "settings": {
- "buttons": {
- "export": "Exportieren",
- "import": "Importieren",
- "reset": "Zurücksetzen"
- },
- "enabled": "Aktivieren",
- "reminder": {
- "message": "Damit alle Änderungen vorgenommen werden können, muss die Seite aktualisiert werden.",
- "title": "HINWEIS"
- },
- "sections": {
- "about": {
- "contact_us": "Kontaktieren Sie uns",
- "contributors": "Mitwirkende",
- "copyright": "Urheberrechte",
- "no_supporters": "There are currently no Mue supporters",
- "photographers": "Photographers",
- "resources_used": {
- "bg_images": "Offline Hintergrundbilder",
- "title": "Verwendete Ressourcen"
+ "quotes": {
+ "title": "Zitate hinzufügen",
+ "api": {
+ "title": "API",
+ "url": "Quote URL",
+ "name": "JSON quote name",
+ "author": "JSON quote author (or override)"
},
- "support_mue": "Mue unterstützen",
- "supporters": "Unterstützer",
- "title": "Über",
- "version": {
- "checking_update": "Auf Update prüfen",
- "error": {
- "description": "Es ist ein Fehler aufgetreten",
- "title": "Update-Informationen konnten nicht abgerufen werden"
- },
- "no_update": "Kein Update verfügbar",
- "offline_mode": "Im Offline Modus kann nicht nach Updates gesucht werden",
- "title": "Version",
- "update_available": "Update verfügbar"
+ "local": {
+ "title": "Local"
}
- },
- "advanced": {
- "custom_css": "Benutzerdefiniertes CSS",
- "custom_js": "Benutzerdefiniertes JS",
- "customisation": "Anpassung",
- "data": "Daten",
- "experimental_warning": "Bitte beachten Sie, dass das Mue Team keinen Support leisten kann, wenn Sie den experimentellen Modus aktiviert haben. Bitte deaktivieren Sie ihn zuerst und schauen Sie, ob das Problem weiterhin auftritt, bevor Sie den Support kontaktieren.",
- "offline_mode": "Offline Modus",
- "reset_modal": {
- "cancel": "Abbrechen",
- "information": "Dadurch werden alle Daten gelöscht. Wenn Sie Ihre Daten und Einstellungen behalten möchten, exportieren Sie sie bitte zuerst.",
- "question": "Möchten Sie Mue zurücksetzen?",
- "title": "ACHTUNG"
- },
- "tab_name": "Tab Name",
- "timezone": {
- "automatic": "Automatisch",
- "title": "Zeitzone"
- },
- "title": "Erweitert"
- },
- "appearance": {
- "accessibility": {
- "animations": "Animations",
- "milliseconds": "ms",
- "text_shadow": "Widget-Textschatten",
- "title": "Barrierefreiheit",
- "toast_duration": "Toast Dauer",
- "widget_zoom": "Widget größe"
- },
- "font": {
- "custom": "Eigene Schriftart",
- "google": "Importieren von Google Fonts",
- "style": {
- "italic": "Italic",
- "normal": "Normal",
- "oblique": "Oblique",
- "title": "Schriftart"
- },
- "title": "Schriftart",
- "weight": {
- "bold": "Bold",
- "extra_bold": "Extra-Bold",
- "extra_light": "Extra hell",
- "light": "Hell",
- "medium": "Mittel",
- "normal": "Normal",
- "semi_bold": "Semi-Bold",
- "thin": "Dünn",
- "title": "Schriftgröße"
- }
- },
- "navbar": {
- "hover": "Only display on hover",
- "notes": "Notizen",
- "refresh": "Aktualisieren",
- "refresh_options": {
- "none": "Keine",
- "page": "Seite"
- },
- "title": "Navigationsleiste"
- },
- "theme": {
- "auto": "Auto",
- "dark": "Dunkel",
- "light": "Hell",
- "title": "Design"
- },
- "title": "Erscheinungsbild"
- },
- "background": {
- "buttons": {
- "download": "Download",
- "favourite": "Favorit",
- "title": "Schaltflächen",
- "view": "Vollbild"
- },
- "category": "Kategorie",
- "ddg_image_proxy": "DuckDuckGo Bilder Proxy verwenden",
- "effects": {
- "blur": "Unschärfe anpassen",
- "brightness": "Helligkeit anpassen",
- "filters": {
- "amount": "Filtermenge",
- "contrast": "Kontrast",
- "grayscale": "Graustufen",
- "invert": "Invertieren",
- "saturate": "Sättigen",
- "sepia": "Sepia",
- "title": "Background filter"
- },
- "title": "Effekte"
- },
- "interval": {
- "day": "Tag",
- "half_hour": "Halbe Stunde",
- "hour": "Stunde",
- "minute": "Minute",
- "month": "Monat",
- "title": "Ändern Sie alle"
- },
- "photo_information": "Foto-Informationen anzeigen",
- "show_map": "Show location map on photo information if available",
- "source": {
- "add_background": "Add background",
- "add_colour": "Farbe hinzufügen",
- "add_url": "Add URL",
- "api": "Hintergrund API",
- "custom_background": "Benutzerdefinierter Hintergrund",
- "custom_colour": "Benutzerdefinierter Hintergrundfarbe",
- "disabled": "Deaktiviert",
- "loop_video": "Video schleife",
- "mute_video": "Video stumm",
- "quality": {
- "datasaver": "Datensparer",
- "high": "Hohe Qualität",
- "normal": "Normale Qualität",
- "original": "Original",
- "title": "Qualität"
- },
- "title": "Quelle",
- "upload": "Hochladen"
- },
- "title": "Hintergrund",
- "transition": "Weicher übergang",
- "type": {
- "api": "API",
- "custom_colour": "Benutzerdefinierte Farbe/Farbverlauf",
- "custom_image": "Benutzerdefiniertes Bild",
- "random_colour": "Random colour",
- "random_gradient": "Random gradient",
- "title": "Type"
- }
- },
- "changelog": {
- "by": "By {author}",
- "title": "Änderungshinweise"
- },
- "date": {
- "datenth": "Mit nullen füllen",
- "day_of_week": "Wochentag",
- "short_date": "Kurzes Datum",
- "short_format": "Kurzes Format",
- "short_separator": {
- "dash": "Bindestrich",
- "dots": "Punkte",
- "gaps": "Lücke",
- "slashes": "Schrägstriche",
- "title": "Kurzer Trenner"
- },
- "title": "Datum",
- "type": {
- "long": "Lang",
- "short": "Kurz"
- },
- "week_number": "Kalenderwoche"
- },
- "experimental": {
- "developer": "Entwickler",
- "title": "Experimentell",
- "warning": "Diese Einstellungen sind nicht vollständig getestet/implementiert und funktionieren möglicherweise nicht korrekt!"
- },
- "greeting": {
- "birthday": "Geburtstag",
- "birthday_age": "Alter",
- "birthday_date": "Datum",
- "default": "Standard-Begrüßungsnachricht",
- "events": "Veranstaltungen",
- "name": "Name zur Begrüßung",
- "title": "Begrüßung"
- },
- "keybinds": {
- "background": {
- "download": "Hintergrund herunterladen",
- "favourite": "Bevorzugter Hintergrund",
- "maximise": "Hintergrund maximieren",
- "show_info": "Hintergrundinformationen anzeigen"
- },
- "click_to_record": "Klicken Sie zum Aufzeichnen",
- "modal": "Modal umschalten",
- "notes": {
- "copy": "Notizen kopieren",
- "pin": "Notizen Anheften"
- },
- "quicklinks": "Umschalten auf Quicklink hinzufügen",
- "quote": {
- "copy": "Zitat kopieren",
- "favourite": "Lieblings Zitate",
- "tweet": "Zitat twittern"
- },
- "recording": "Aufnahme...",
- "search": "Fokus Suche",
- "title": "Tastenbindungen"
- },
- "language": {
- "quote": "Zitat-Sprache",
- "title": "Sprache"
- },
- "message": {
- "add": "Add message",
- "text": "Text",
- "title": "Message"
- },
- "order": {
- "title": "Widget Sortieren"
- },
- "quicklinks": {
- "open_new": "In neuen Tab öffnen",
- "text_only": "Show text only",
- "title": "Quick Links",
- "tooltip": "Tooltip"
- },
- "quote": {
- "add": "Add quote",
- "author_link": "Autor Link",
- "buttons": {
- "copy": "Kopieren",
- "favourite": "Favorit",
- "title": "Schaltflächen",
- "tweet": "Twitter"
- },
- "custom": "Benutzerdefiniertes Zitat",
- "custom_author": "Benutzerdefinierter Autor",
- "title": "Zitat"
- },
- "search": {
- "autocomplete": "Autovervollständigen",
- "autocomplete_provider": "Anbieter von Autovervollständigung",
- "custom": "Abfrage-URL",
- "dropdown": "Auswahlmenü Suche",
- "search_engine": "Suchmaschine",
- "title": "Suche",
- "voice_search": "Sprachsuche"
- },
- "stats": {
- "sections": {
- "addons_installed": "Installierte Add-ons",
- "backgrounds_downloaded": "Hintergründe heruntergeladen",
- "backgrounds_favourited": "Bevorzugte Hintergründe",
- "quicklinks_added": "Quicklinks hinzugefügt",
- "quotes_favourited": "Bevorzugte Zitate",
- "settings_changed": "Einstellungen geändert",
- "tabs_opened": "Geöffnete Tabs"
- },
- "title": "Statistiken",
- "usage": "Nutzungsstatistiken",
- "warning": "Sie müssen die Nutzungsdaten aktivieren, um diese Funktion nutzen zu können. Diese Daten werden nur lokal gespeichert."
- },
- "time": {
- "analogue": {
- "hour_hand": "Stundenzeiger",
- "hour_marks": "Stunden-Markierungen",
- "minute_hand": "Minutenzeiger",
- "minute_marks": "Minuten-Markierungen",
- "second_hand": "Sekundenzeiger",
- "title": "Analog"
- },
- "digital": {
- "seconds": "Sekunden",
- "title": "Digital",
- "twelvehour": "12 Stunden",
- "twentyfourhour": "24 Stunden",
- "zero": "Mit nullen füllen"
- },
- "format": "Format",
- "percentage_complete": "Denn Tages fotschritt in Prozent anzeigen",
- "title": "Uhrzeit",
- "type": "Typ"
- },
- "weather": {
- "auto": "Auto",
- "extra_info": {
- "atmospheric_pressure": "Atmosphärischer Druck",
- "cloudiness": "Bewölkungsgrad",
- "humidity": "Luftfeuchtigkeit",
- "max_temp": "Höchsttemperatur",
- "min_temp": "Mindesttemperatur",
- "show_description": "Beschreibung anzeigen",
- "show_location": "Standort anzeigen",
- "title": "Zusätzliche informationen",
- "visibility": "Sichtbarkeit",
- "wind_direction": "Windrichtung",
- "wind_speed": "Windgeschwindigkeit"
- },
- "location": "Standort",
- "temp_format": {
- "celsius": "Celsius",
- "fahrenheit": "Fahrenheit",
- "kelvin": "Kelvin",
- "title": "Temperatur Format"
- },
- "title": "Wetter"
}
}
- },
- "title": "Einstellungen"
- },
- "update": {
- "error": {
- "description": "Konnte keine Verbindung zum Server herstellen",
- "title": "Fehler"
- },
- "offline": {
- "description": "Update-Protokolle können im Offline-Modus nicht abgerufen werden",
- "title": "Offline"
- },
- "title": "Update"
- },
- "welcome": {
- "buttons": {
- "close": "Schließen",
- "next": "Weiter",
- "preview": "Preview",
- "previous": "Zurück"
- },
- "preview": {
- "continue": "Continue setup",
- "description": "You are currently in preview mode. Settings will be reset on closing this tab."
- },
- "sections": {
- "final": {
- "changes": "Änderungen",
- "changes_description": "Um die Einstellungen später zu ändern, klicken Sie auf das Einstellungssymbol in der oberen rechten Ecke Ihrer Registerkarte.",
- "description": "Ihr Mue Tab Erlebnis kann beginnen.",
- "imported": "Importiert {amount} Einstellung",
- "title": "Letzter Abschnitt"
- },
- "intro": {
- "description": "Vielen Dank für die Installation, wir wünschen Ihnen viel Spaß mit unserer Erweiterung.",
- "title": "Willkommen bei Mue Tab"
- },
- "language": {
- "description": "Mue kann in den unten aufgeführten Sprachen angezeigt werden. Sie können auch neue Übersetzungen auf GitHub hinzufügen!",
- "title": "Wählen Sie Ihre Sprache"
- },
- "privacy": {
- "ddg_proxy_description": "Sie können Bildanfragen über DuckDuckGo laufen lassen, wenn Sie dies wünschen. Standardmäßig laufen API-Anfragen über unsere Open-Source-Server und Bildanfragen über den ursprünglichen Server. Wenn Sie dies für Quicklinks deaktivieren, werden die Symbole von Google statt von DuckDuckGo abgerufen. Der DuckDuckGo-Proxy ist für den Marketplace immer aktiviert.",
- "description": "Aktivieren Sie die Einstellungen, um Ihre Privatsphäre mit Mue weiter zu schützen.",
- "links": {
- "privacy_policy": "Datenschutzerklärung",
- "source_code": "Quellcode",
- "title": "Links"
- },
- "offline_mode_description": "Wenn Sie den Offline-Modus aktivieren, werden alle Anfragen an jeden Dienst deaktiviert. Dies hat zur Folge, dass Online-Hintergründe, Online-Zitate, Marktplatz, Wetter, Quicklinks, Änderungshinweise und einige Informationen über die Registerkarte deaktiviert werden.",
- "title": "Datenschutz Optionen"
- },
- "settings": {
- "description": "Installieren Sie Mue auf einem neuen Gerät? So können Sie Ihre alten Einstellungen importieren!",
- "tip": "Sie können Ihre alten Einstellungen exportieren, indem Sie in Ihrem alten Mue-Einstellungen zur Registerkarte Erweitert navigieren. Klicken Sie dann auf die Schaltfläche Exportieren, um die JSON-Datei herunterzuladen. Sie können diese Datei hier hochladen, um Ihre Einstellungen und Präferenzen von Ihrer vorherigen Mue-Installation zu übernehmen.",
- "title": "Einstellungen importieren"
- },
- "theme": {
- "description": "Mue ist sowohl mit einem hellen als auch mit einem dunklen Erscheinungsbild erhältlich, das je nach dem Erscheinungsbild Ihres Systems automatisch eingestellt werden kann.",
- "tip": "Bei der Einstellung Automatisch wird das Design auf Ihrem System verwendet. Diese Einstellung wirkt sich auf die Modalitäten und einige der Widgets aus, die auf dem Bildschirm angezeigt werden, z. B. Wetter und Notizen.",
- "title": "Wählen Sie Ihr Erscheinungsbild"
- }
- },
- "tip": "Quick Tip"
- }
- },
- "tabname": "Neuer Tab",
- "toasts": {
- "error": "Etwas ist schief gelaufen",
- "imported": "Erfolgreich importiert",
- "installed": "Erfolgreich installiert",
- "notes": "Kopierte notizen",
- "quote": "Kopierte zitate",
- "reset": "Reset successfully",
- "uninstalled": "Erfolgreich entfernt",
- "updated": "Successfully updated"
- },
- "widgets": {
- "background": {
- "credit": "Foto von",
- "download": "Download",
- "information": "Informationen",
- "pexels": "pexels.com",
- "unsplash": "unsplash.com"
- },
- "date": {
- "week": "Kalenderwoche"
- },
- "greeting": {
- "afternoon": "Guten Tag",
- "birthday": "Glückwunsch zum Geburtstag",
- "christmas": "Fröhliche Weihnachten",
- "evening": "Guten Abend",
- "halloween": "Happy Halloween",
- "morning": "Guten Morgen",
- "newyear": "Frohes neues Jahr"
- },
- "navbar": {
- "notes": {
- "placeholder": "Hier eingeben",
- "title": "Notizen"
- },
- "tooltips": {
- "refresh": "Neuladen"
}
},
- "quicklinks": {
- "add": "Hinzufügen",
- "icon": "Icon (optional)",
- "name": "Name",
- "name_error": "Muss einen Namen angeben",
- "new": "Neuer Link",
- "url": "URL",
- "url_error": "Muss eine URL angeben"
+ "update": {
+ "title": "Update",
+ "offline": {
+ "title": "Offline",
+ "description": "Update-Protokolle können im Offline-Modus nicht abgerufen werden"
+ },
+ "error": {
+ "title": "Fehler",
+ "description": "Konnte keine Verbindung zum Server herstellen"
+ }
},
- "search": "Suche",
- "weather": {
- "meters": "{amount} Meter",
- "not_found": "Nicht gefunden"
+ "welcome": {
+ "tip": "Quick Tip",
+ "sections": {
+ "intro": {
+ "title": "Willkommen bei Mue Tab",
+ "description": "Vielen Dank für die Installation, wir wünschen Ihnen viel Spaß mit unserer Erweiterung.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
+ },
+ "language": {
+ "title": "Wählen Sie Ihre Sprache",
+ "description": "Mue kann in den unten aufgeführten Sprachen angezeigt werden. Sie können auch neue Übersetzungen auf GitHub hinzufügen!"
+ },
+ "theme": {
+ "title": "Wählen Sie Ihr Erscheinungsbild",
+ "description": "Mue ist sowohl mit einem hellen als auch mit einem dunklen Erscheinungsbild erhältlich, das je nach dem Erscheinungsbild Ihres Systems automatisch eingestellt werden kann.",
+ "tip": "Bei der Einstellung Automatisch wird das Design auf Ihrem System verwendet. Diese Einstellung wirkt sich auf die Modalitäten und einige der Widgets aus, die auf dem Bildschirm angezeigt werden, z. B. Wetter und Notizen."
+ },
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
+ "settings": {
+ "title": "Einstellungen importieren",
+ "description": "Installieren Sie Mue auf einem neuen Gerät? So können Sie Ihre alten Einstellungen importieren!",
+ "tip": "Sie können Ihre alten Einstellungen exportieren, indem Sie in Ihrem alten Mue-Einstellungen zur Registerkarte Erweitert navigieren. Klicken Sie dann auf die Schaltfläche Exportieren, um die JSON-Datei herunterzuladen. Sie können diese Datei hier hochladen, um Ihre Einstellungen und Präferenzen von Ihrer vorherigen Mue-Installation zu übernehmen."
+ },
+ "privacy": {
+ "title": "Datenschutz Optionen",
+ "description": "Aktivieren Sie die Einstellungen, um Ihre Privatsphäre mit Mue weiter zu schützen.",
+ "offline_mode_description": "Wenn Sie den Offline-Modus aktivieren, werden alle Anfragen an jeden Dienst deaktiviert. Dies hat zur Folge, dass Online-Hintergründe, Online-Zitate, Marktplatz, Wetter, Quicklinks, Änderungshinweise und einige Informationen über die Registerkarte deaktiviert werden.",
+ "ddg_proxy_description": "Sie können Bildanfragen über DuckDuckGo laufen lassen, wenn Sie dies wünschen. Standardmäßig laufen API-Anfragen über unsere Open-Source-Server und Bildanfragen über den ursprünglichen Server. Wenn Sie dies für Quicklinks deaktivieren, werden die Symbole von Google statt von DuckDuckGo abgerufen. Der DuckDuckGo-Proxy ist für den Marketplace immer aktiviert.",
+ "links": {
+ "title": "Links",
+ "privacy_policy": "Datenschutzerklärung",
+ "source_code": "Quellcode"
+ }
+ },
+ "final": {
+ "title": "Letzter Abschnitt",
+ "description": "Ihr Mue Tab Erlebnis kann beginnen.",
+ "changes": "Änderungen",
+ "changes_description": "Um die Einstellungen später zu ändern, klicken Sie auf das Einstellungssymbol in der oberen rechten Ecke Ihrer Registerkarte.",
+ "imported": "Importiert {amount} Einstellung"
+ }
+ },
+ "buttons": {
+ "next": "Weiter",
+ "preview": "Preview",
+ "previous": "Zurück",
+ "close": "Schließen"
+ },
+ "preview": {
+ "description": "You are currently in preview mode. Settings will be reset on closing this tab.",
+ "continue": "Continue setup"
+ }
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
+ },
+ "toasts": {
+ "quote": "Kopierte zitate",
+ "notes": "Kopierte notizen",
+ "reset": "Reset successfully",
+ "installed": "Erfolgreich installiert",
+ "uninstalled": "Erfolgreich entfernt",
+ "updated": "Successfully updated",
+ "error": "Etwas ist schief gelaufen",
+ "imported": "Erfolgreich importiert",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/en_GB.json b/src/translations/en_GB.json
index 86d51601..6812299f 100644
--- a/src/translations/en_GB.json
+++ b/src/translations/en_GB.json
@@ -15,7 +15,17 @@
"unsplash": "on Unsplash",
"pexels": "on Pexels",
"information": "Information",
- "download": "Download"
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings."
},
"search": "Search",
"quicklinks": {
@@ -32,7 +42,16 @@
},
"weather": {
"not_found": "Not Found",
- "meters": "{amount} metres"
+ "meters": "{amount} metres",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}"
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +60,11 @@
"notes": {
"title": "Notes",
"placeholder": "Type here"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -51,27 +75,39 @@
"file_upload_error": "File is over 2MB",
"navbar": {
"settings": "Settings",
- "addons": "My Add-ons",
+ "addons": "Add-ons",
"marketplace": "Marketplace"
},
"error_boundary": {
"title": "Error",
"message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Refresh"
},
"settings": {
"enabled": "Enabled",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "NOTICE",
"message": "In order for all of the changes to take place, the page must be refreshed."
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Time",
"format": "Format",
"type": "Type",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Seconds",
"twentyfourhour": "24 Hour",
"twelvehour": "12 hour",
@@ -79,13 +115,19 @@
},
"analogue": {
"title": "Analogue",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Seconds hand",
"minute_hand": "Minutes hand",
"hour_hand": "Hours hand",
"hour_marks": "Hour marks",
"minute_marks": "Minute marks"
},
- "percentage_complete": "Percentage complete"
+ "percentage_complete": "Percentage complete",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Date",
@@ -94,10 +136,13 @@
"datenth": "Date nth",
"type": {
"short": "Short",
- "long": "Long"
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Short date",
"short_format": "Short format",
+ "long_format": "Long format",
"short_separator": {
"title": "Short separator",
"dots": "Dots",
@@ -108,12 +153,20 @@
},
"quote": {
"title": "Quote",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Author link",
"custom": "Custom quote",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Custom author",
+ "author_img": "Show author image",
"add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Buttons",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Copy",
"tweet": "Tweet",
"favourite": "Favourite"
@@ -125,8 +178,10 @@
"default": "Default greeting message",
"name": "Name for greeting",
"birthday": "Birthday",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Birthday age",
- "birthday_date": "Birthday date"
+ "birthday_date": "Birthday date",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Background",
@@ -134,7 +189,7 @@
"transition": "Fade-in transition",
"photo_information": "Show photo information",
"show_map": "Show location map on photo information if available",
- "category": "Category",
+ "categories": "Categories",
"buttons": {
"title": "Buttons",
"view": "Maximise",
@@ -143,6 +198,7 @@
},
"effects": {
"title": "Effects",
+ "subtitle": "Add effects to the background images",
"blur": "Adjust blur",
"brightness": "Adjust brightness",
"filters": {
@@ -165,12 +221,16 @@
},
"source": {
"title": "Source",
+ "subtitle": "Select where to get background images from",
"api": "Background API",
"custom_background": "Custom background",
"custom_colour": "Custom background colour",
"upload": "Upload",
"add_colour": "Add colour",
"add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Add URL",
"disabled": "Disabled",
"loop_video": "Loop video",
@@ -181,10 +241,18 @@
"high": "High Quality",
"normal": "Normal Quality",
"datasaver": "Data Saver"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Change every",
+ "subtitle": "Change how often the background is updated",
"minute": "Minute",
"half_hour": "Half hour",
"hour": "Hour",
@@ -194,17 +262,22 @@
},
"search": {
"title": "Search",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Search engine",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "Custom search URL",
"autocomplete": "Autocomplete",
"autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Voice search",
- "dropdown": "Search dropdown"
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Weather",
"location": "Location",
"auto": "Auto",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Temperature format",
"celsius": "Celsius",
@@ -223,23 +296,53 @@
"min_temp": "Minimum temperature",
"max_temp": "Maximum temperature",
"atmospheric_pressure": "Atmospheric pressure"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Open in new tab",
"tooltip": "Tooltip",
- "text_only": "Show text only"
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Message",
"add": "Add message",
- "text": "Text"
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Appearance",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Theme",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Auto",
"light": "Light",
"dark": "Dark"
@@ -248,7 +351,9 @@
"title": "Navbar",
"notes": "Notes",
"refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "None",
"page": "Page"
@@ -256,6 +361,7 @@
},
"font": {
"title": "Font",
+ "description": "Change the font used in Mue",
"custom": "Custom font",
"google": "Import from Google Fonts",
"weight": {
@@ -278,8 +384,14 @@
},
"accessibility": {
"title": "Accessibility",
+ "description": "Accessibility settings for Mue",
"animations": "Animations",
- "text_shadow": "Widget text shadow",
+ "text_shadow": {
+ "title": "Widget text shadow",
+ "new": "New",
+ "old": "Old",
+ "none": "None"
+ },
"widget_zoom": "Widget zoom",
"toast_duration": "Toast duration",
"milliseconds": "milliseconds"
@@ -291,7 +403,9 @@
"advanced": {
"title": "Advanced",
"offline_mode": "Offline mode",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "WARNING",
"question": "Do you want to reset Mue?",
@@ -300,10 +414,13 @@
},
"customisation": "Customisation",
"custom_css": "Custom CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "Custom JS",
"tab_name": "Tab name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Automatic"
},
"experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support."
@@ -320,30 +437,9 @@
"settings_changed": "Settings changed",
"addons_installed": "Add-ons installed"
},
- "usage": "Usage Stats"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Experimental",
@@ -374,6 +470,8 @@
},
"contact_us": "Contact Us",
"support_mue": "Support Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Resources used",
"bg_images": "Offline background images"
@@ -391,25 +489,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Photo Packs",
"quote_packs": "Quote Packs",
"preset_settings": "Preset Settings",
"no_items": "No items in this category",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Overview",
"information": "Information",
"last_updated": "Last Updated",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Version",
"author": "Author",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Add To Mue",
"remove": "Remove",
- "update_addon": "Update Add-on"
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Warning",
- "description": "This quote pack requests to external servers that may track you!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Looks like you're offline",
@@ -427,6 +544,7 @@
},
"sideload": {
"title": "Sideload",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +563,33 @@
},
"create": {
"title": "Create",
+ "example": "Example",
"other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings",
+ "photos": "Photo Pack",
+ "quotes": "Quote Pack"
+ },
+ "descriptions": {
+ "settings": "Collection of settings to customise Mue.",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic."
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Name",
"icon_url": "Icon URL",
"screenshot_url": "Screenshot URL",
- "description": "Description"
+ "description": "Description",
+ "example": "Download example"
},
"finish": {
"title": "Finish",
@@ -494,7 +633,15 @@
"sections": {
"intro": {
"title": "Welcome to Mue Tab",
- "description": "Thank you for installing Mue, we hope you enjoy your time with our extension."
+ "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Choose your language",
@@ -505,6 +652,12 @@
"description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
"tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Import Settings",
"description": "Installing Mue on a new device? Feel free to import your old settings!",
@@ -539,6 +692,10 @@
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
"continue": "Continue setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +706,8 @@
"uninstalled": "Successfully removed",
"updated": "Successfully updated",
"error": "Something went wrong",
- "imported": "Successfully imported"
+ "imported": "Successfully imported",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
-}
+}
\ No newline at end of file
diff --git a/src/translations/en_US.json b/src/translations/en_US.json
index 7a136303..ef071697 100644
--- a/src/translations/en_US.json
+++ b/src/translations/en_US.json
@@ -15,7 +15,20 @@
"unsplash": "on Unsplash",
"pexels": "on Pexels",
"information": "Information",
- "download": "Download"
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "Search",
"quicklinks": {
@@ -32,15 +45,35 @@
},
"weather": {
"not_found": "Not Found",
- "meters": "{amount} meters"
+ "meters": "{amount} meters",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
- "refresh": "Refresh Page"
+ "refresh": "Refresh"
},
"notes": {
"title": "Notes",
"placeholder": "Type here"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "Error",
"message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Refresh"
},
"settings": {
"enabled": "Enabled",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "NOTICE",
"message": "In order for all of the changes to take place, the page must be refreshed."
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Time",
"format": "Format",
"type": "Type",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Seconds",
"twentyfourhour": "24 Hour",
"twelvehour": "12 hour",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "Analog",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Seconds hand",
"minute_hand": "Minutes hand",
"hour_hand": "Hours hand",
"hour_marks": "Hour marks",
"minute_marks": "Minute marks"
},
- "percentage_complete": "Percentage complete"
+ "percentage_complete": "Percentage complete",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Date",
@@ -94,10 +145,13 @@
"datenth": "Date nth",
"type": {
"short": "Short",
- "long": "Long"
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Short date",
"short_format": "Short format",
+ "long_format": "Long format",
"short_separator": {
"title": "Short separator",
"dots": "Dots",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "Quote",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Author link",
"custom": "Custom quote",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Custom author",
+ "author_img": "Show author image",
"add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Buttons",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Copy",
"tweet": "Tweet",
"favourite": "Favorite"
@@ -125,8 +187,10 @@
"default": "Default greeting message",
"name": "Name for greeting",
"birthday": "Birthday",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Birthday age",
- "birthday_date": "Birthday date"
+ "birthday_date": "Birthday date",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Background",
@@ -134,7 +198,7 @@
"transition": "Fade-in transition",
"photo_information": "Show photo information",
"show_map": "Show location map on photo information if available",
- "category": "Category",
+ "categories": "Categories",
"buttons": {
"title": "Buttons",
"view": "Maximize",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "Effects",
+ "subtitle": "Add effects to the background images",
"blur": "Adjust blur",
"brightness": "Adjust brightness",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "Source",
+ "subtitle": "Select where to get background images from",
"api": "Background API",
"custom_background": "Custom background",
"custom_colour": "Custom background color",
"upload": "Upload",
"add_colour": "Add color",
"add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Add URL",
"disabled": "Disabled",
"loop_video": "Loop video",
@@ -181,30 +250,44 @@
"high": "High Quality",
"normal": "Normal Quality",
"datasaver": "Data Saver"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Change every",
+ "subtitle": "Change how often the background is updated",
"minute": "Minute",
"half_hour": "Half hour",
"hour": "Hour",
"day": "Day",
"month": "Month"
- }
+ },
+ "category": "Category"
},
"search": {
"title": "Search",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Search engine",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "Custom search URL",
"autocomplete": "Autocomplete",
"autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Voice search",
- "dropdown": "Search dropdown"
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Weather",
"location": "Location",
"auto": "Auto",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Temperature format",
"celsius": "Celsius",
@@ -223,23 +306,53 @@
"min_temp": "Minimum temperature",
"max_temp": "Maximum temperature",
"atmospheric_pressure": "Atmospheric pressure"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Open in new tab",
"tooltip": "Tooltip",
- "text_only": "Show text only"
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Message",
"add": "Add message",
- "text": "Text"
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Appearance",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Theme",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Auto",
"light": "Light",
"dark": "Dark"
@@ -248,7 +361,9 @@
"title": "Navbar",
"notes": "Notes",
"refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "None",
"page": "Page"
@@ -256,6 +371,7 @@
},
"font": {
"title": "Font",
+ "description": "Change the font used in Mue",
"custom": "Custom font",
"google": "Import from Google Fonts",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "Accessibility",
+ "description": "Accessibility settings for Mue",
"animations": "Animations",
"text_shadow": "Widget text shadow",
"widget_zoom": "Widget zoom",
@@ -291,7 +408,9 @@
"advanced": {
"title": "Advanced",
"offline_mode": "Offline mode",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "WARNING",
"question": "Do you want to reset Mue?",
@@ -300,10 +419,13 @@
},
"customisation": "Customization",
"custom_css": "Custom CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "Custom JS",
"tab_name": "Tab name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Automatic"
},
"experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support."
@@ -320,30 +442,9 @@
"settings_changed": "Settings changed",
"addons_installed": "Add-ons installed"
},
- "usage": "Usage Stats"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Experimental",
@@ -374,6 +475,8 @@
},
"contact_us": "Contact Us",
"support_mue": "Support Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Resources used",
"bg_images": "Offline background images"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Photo Packs",
"quote_packs": "Quote Packs",
"preset_settings": "Preset Settings",
"no_items": "No items in this category",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Overview",
"information": "Information",
"last_updated": "Last Updated",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Version",
"author": "Author",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Add To Mue",
"remove": "Remove",
- "update_addon": "Update Add-on"
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Warning",
- "description": "This quote pack requests to external servers that may track you!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Looks like you're offline",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "Sideload",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +568,35 @@
},
"create": {
"title": "Create",
+ "example": "Example",
"other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Name",
"icon_url": "Icon URL",
"screenshot_url": "Screenshot URL",
- "description": "Description"
+ "description": "Description",
+ "example": "Download example"
},
"finish": {
"title": "Finish",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "Welcome to Mue Tab",
- "description": "Thank you for installing Mue, we hope you enjoy your time with our extension."
+ "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Choose your language",
@@ -505,6 +659,12 @@
"description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
"tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Import Settings",
"description": "Installing Mue on a new device? Feel free to import your old settings!",
@@ -539,6 +699,10 @@
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
"continue": "Continue setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "Successfully removed",
"updated": "Successfully updated",
"error": "Something went wrong",
- "imported": "Successfully imported"
+ "imported": "Successfully imported",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/es.json b/src/translations/es.json
index 70942b77..438d31ea 100644
--- a/src/translations/es.json
+++ b/src/translations/es.json
@@ -15,7 +15,20 @@
"unsplash": "en Unsplash",
"pexels": "en Pexels",
"information": "Información",
- "download": "Descargar"
+ "download": "Descargar",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "Buscar",
"quicklinks": {
@@ -32,7 +45,22 @@
},
"weather": {
"not_found": "No encontrado",
- "meters": "{amount} metros"
+ "meters": "{amount} metros",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +69,11 @@
"notes": {
"title": "Notas",
"placeholder": "Escribe aquí"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "Error",
"message": "No se ha podido cargar este componente de Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Recargar"
},
"settings": {
"enabled": "Activado",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "AVISO",
"message": "Para que se produzcan todos los cambios hay que recargar la página."
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Tiempo",
"format": "Formato",
"type": "Tipo",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Segundos",
"twentyfourhour": "24 Horas",
"twelvehour": "12 Horas",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "Analógico",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Manecilla de los segundos",
"minute_hand": "Manecilla de los minutos",
"hour_hand": "Manecilla de las horas",
"hour_marks": "Marcas de las horas",
"minute_marks": "Marcas de los minutos"
},
- "percentage_complete": "Porcentaje completado"
+ "percentage_complete": "Porcentaje completado",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Fecha",
@@ -94,10 +145,13 @@
"datenth": "Fecha nth",
"type": {
"short": "Corto",
- "long": "Largo"
+ "long": "Largo",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Fecha corta",
"short_format": "Formato corto",
+ "long_format": "Long format",
"short_separator": {
"title": "Separador corto",
"dots": "Puntos",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "Cita",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Enlace del autor",
"custom": "Cita personalizada",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Autor personalizado",
+ "author_img": "Show author image",
"add": "Añadir cita",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Botones",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Botón de copiar",
"tweet": "Botón de Tweet",
"favourite": "Botón de favoritos"
@@ -125,8 +187,10 @@
"default": "Mensaje del saludo por defecto",
"name": "Nombre para el saludo",
"birthday": "Cumpleaños",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Edad de cumpleaños",
- "birthday_date": "Fecha de cumpleaños"
+ "birthday_date": "Fecha de cumpleaños",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Fondo",
@@ -134,7 +198,7 @@
"transition": "Transición fade-in",
"photo_information": "Ver información de la foto",
"show_map": "Mostrar el mapa de la ubicación en la información de la foto si está disponible",
- "category": "Categoría",
+ "categories": "Categories",
"buttons": {
"title": "Botones",
"view": "Ver",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "Efectos",
+ "subtitle": "Add effects to the background images",
"blur": "Ajustar difuminado",
"brightness": "Ajustar brillo",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "Fuente",
+ "subtitle": "Select where to get background images from",
"api": "API de fondos",
"custom_background": "Fondo personalizado",
"custom_colour": "Color del fondo personalizado",
"upload": "Subir",
"add_colour": "Añadir color",
"add_background": "Añadir fondo",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Añadir URL",
"disabled": "Desactivado",
"loop_video": "Vídeo en bucle",
@@ -181,30 +250,44 @@
"high": "Calidad alta",
"normal": "Calidad normal",
"datasaver": "Ahorro de datos"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Cambiar cada",
+ "subtitle": "Change how often the background is updated",
"minute": "Minuto",
"half_hour": "Media hora",
"hour": "Hora",
"day": "Día",
"month": "Mes"
- }
+ },
+ "category": "Categoría"
},
"search": {
"title": "Búsqueda",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Motor de búsqueda",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "URL de búsqueda personalizada",
"autocomplete": "Autocompletado",
"autocomplete_provider": "Proveedor del autocompletado",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Búsqueda por voz",
- "dropdown": "Search dropdown"
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Clima",
"location": "Ubicación",
"auto": "Auto",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Formato de la temperatura",
"celsius": "Celsius",
@@ -223,23 +306,53 @@
"min_temp": "Temperatura mínima",
"max_temp": "Temperatura máxima",
"atmospheric_pressure": "Presión atmosférica"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Enlaces rápidos",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Abrir en una nueva pestaña",
"tooltip": "Descripción emergente",
- "text_only": "Mostrar solo texto"
+ "text_only": "Mostrar solo texto",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Mensaje",
"add": "Añadir mensaje",
- "text": "Texto"
+ "messages": "Messages",
+ "text": "Texto",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Apariencia",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Tema",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Auto",
"light": "Claro",
"dark": "Oscuro"
@@ -248,7 +361,9 @@
"title": "Barra de búsqueda",
"notes": "Notas",
"refresh": "Botón de recargar",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Solo mostrar al pasar el cursor",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "Ninguno",
"page": "Página"
@@ -256,6 +371,7 @@
},
"font": {
"title": "Fuente",
+ "description": "Change the font used in Mue",
"custom": "Fuente personalizada",
"google": "Importar desde Google Fonts",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "Accesibilidad",
+ "description": "Accessibility settings for Mue",
"animations": "Animaciones",
"text_shadow": "Sombra de texto del widget",
"widget_zoom": "Zoom del widget",
@@ -291,7 +408,9 @@
"advanced": {
"title": "Avanzado",
"offline_mode": "Modo sin conexión",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Datos",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "ADVERTENCIA",
"question": "¿Quieres reiniciar Mue?",
@@ -300,10 +419,13 @@
},
"customisation": "Personalización",
"custom_css": "CSS personalizado",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "JS personalizado",
"tab_name": "Nombre de la pestaña",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Zona horaria",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Automático"
},
"experimental_warning": "Por favor, ten en cuenta que el equipo de Mue no puede dar soporte si tienes el modo experimental activado. Por favor, desactívalo primero y comprueba si el problema sigue ocurriendo antes de contactar con el equipo de soporte."
@@ -320,30 +442,9 @@
"settings_changed": "Ajustes cambiados",
"addons_installed": "Complementos instalados"
},
- "usage": "Estadísticas de uso"
- },
- "keybinds": {
- "title": "Asignación de teclas",
- "recording": "Grabando...",
- "click_to_record": "Click para grabar",
- "background": {
- "favourite": "Fondo favorito",
- "maximise": "Maximizar fondo",
- "download": "Descargar fondo",
- "show_info": "Mostrar información del fondo"
- },
- "quote": {
- "favourite": "Marcar la cita como favorita",
- "copy": "Copiar cita",
- "tweet": "Tuitear la cita"
- },
- "notes": {
- "pin": "Fijar notas",
- "copy": "Copiar notas"
- },
- "search": "Enfocar búsqueda",
- "quicklinks": "Alternar añadir enlace rápido",
- "modal": "Alternal modal"
+ "usage": "Estadísticas de uso",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Experimental",
@@ -374,6 +475,8 @@
},
"contact_us": "Contacto",
"support_mue": "Apoya Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Recursos usados",
"bg_images": "Imágenes de fondo sin conexión"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Paquetes de fotos",
"quote_packs": "Paquetes de citas",
"preset_settings": "Ajustes preestablecidos",
"no_items": "No hay artículos en esta categoría",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Vista general",
"information": "Información",
"last_updated": "Última actualización",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Versión",
"author": "Autor",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Añadir a Mue",
"remove": "Desinstalar",
- "update_addon": "Actualizar complemento"
+ "update_addon": "Actualizar complemento",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Advertencia",
- "description": "¡Este paquete de citas solicita a servidores externos que pueden rastrearte!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Parece que estás desconectado",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "Cargar localmente",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Fallo en la carga lateral del complemento",
"errors": {
"no_name": "No se ha indicado el nombre",
@@ -445,12 +568,35 @@
},
"create": {
"title": "Crear",
+ "example": "Example",
"other_title": "Crear complemento",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Nombre",
"icon_url": "URL del icono",
"screenshot_url": "URL de la captura de pantalla",
- "description": "Descripción"
+ "description": "Descripción",
+ "example": "Download example"
},
"finish": {
"title": "Acabar",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "Bienvenido a Mue Tab",
- "description": "Gracias por instalar Mue, esperamos que disfrute de su tiempo con nuestra extensión."
+ "description": "Gracias por instalar Mue, esperamos que disfrute de su tiempo con nuestra extensión.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Elige el idioma",
@@ -505,6 +659,12 @@
"description": "Mue está disponible tanto en el tema claro como en el oscuro, también se puede configurar automáticamente en función del tema de su sistema.",
"tip": "Si utiliza la configuración automática, utilizará el tema de su ordenador. Esta configuración afectará a los modales y a algunos de los widgets que aparecen en la pantalla, como el tiempo y las notas."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Importa los ajustes",
"description": "¿Instalando Mue en un nuevo dispositivo? No dudes en importar tu antigua configuración.",
@@ -539,6 +699,10 @@
"description": "Actualmente se encuentra en el modo de vista previa. La configuración se restablecerá al cerrar esta pestaña.",
"continue": "Continuar con la configuración"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "Desinstalado correctamente",
"updated": "Actualizado correctamente",
"error": "Algo salió mal",
- "imported": "Importado correctamente"
+ "imported": "Importado correctamente",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/es_419.json b/src/translations/es_419.json
new file mode 100644
index 00000000..6602bb31
--- /dev/null
+++ b/src/translations/es_419.json
@@ -0,0 +1,739 @@
+{
+ "tabname": "Nueva pestaña",
+ "widgets": {
+ "greeting": {
+ "morning": "Buenos días",
+ "afternoon": "Buenas tardes",
+ "evening": "Buenas noches",
+ "christmas": "Feliz Navidad",
+ "newyear": "Feliz año nuevo",
+ "halloween": "Feliz Halloween",
+ "birthday": "Feliz cumpleaños"
+ },
+ "background": {
+ "credit": "Foto por",
+ "unsplash": "en Unsplash",
+ "pexels": "en Pexels",
+ "information": "Información",
+ "download": "Descargar",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
+ },
+ "search": "Buscar",
+ "quicklinks": {
+ "new": "Nuevo enlace",
+ "name": "Nombre",
+ "url": "URL",
+ "icon": "Icono (opcional)",
+ "add": "Añadir",
+ "name_error": "Debe indicar el nombre",
+ "url_error": "Debe indicar la URL"
+ },
+ "date": {
+ "week": "Semana"
+ },
+ "weather": {
+ "not_found": "No encontrado",
+ "meters": "{amount} metros",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}"
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Recargar"
+ },
+ "notes": {
+ "title": "Notas",
+ "placeholder": "Escribe aquí"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
+ }
+ }
+ },
+ "modals": {
+ "main": {
+ "title": "Opciones",
+ "loading": "Cargando...",
+ "file_upload_error": "El archivo pesa más de 2MB",
+ "navbar": {
+ "settings": "Ajustes",
+ "addons": "Mis complementos",
+ "marketplace": "Tienda"
+ },
+ "error_boundary": {
+ "title": "Error",
+ "message": "No se ha podido cargar este componente de Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
+ "refresh": "Recargar"
+ },
+ "settings": {
+ "enabled": "Activado",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
+ "reminder": {
+ "title": "AVISO",
+ "message": "Para que todos los cambios surjan efecto, recarga la pestaña."
+ },
+ "sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
+ "time": {
+ "title": "Tiempo",
+ "format": "Formato",
+ "type": "Tipo",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
+ "digital": {
+ "title": "Digital",
+ "subtitle": "Change how the digital clock looks",
+ "seconds": "Segundos",
+ "twentyfourhour": "24 Horas",
+ "twelvehour": "12 Horas",
+ "zero": "Sin ceros"
+ },
+ "analogue": {
+ "title": "Analógico",
+ "subtitle": "Change how the analogue clock looks",
+ "second_hand": "Manecilla de los segundos",
+ "minute_hand": "Manecilla de los minutos",
+ "hour_hand": "Manecilla de las horas",
+ "hour_marks": "Marcas de las horas",
+ "minute_marks": "Marcas de los minutos"
+ },
+ "percentage_complete": "Porcentaje completado",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
+ },
+ "date": {
+ "title": "Fecha",
+ "week_number": "Número de la semana",
+ "day_of_week": "Día de la semana",
+ "datenth": "Fecha nth",
+ "type": {
+ "short": "Corto",
+ "long": "Largo",
+ "subtitle": "Whether to display the date in long form or short form"
+ },
+ "type_settings": "Display settings and format for the selected date type",
+ "short_date": "Fecha corta",
+ "short_format": "Formato corto",
+ "long_format": "Long format",
+ "short_separator": {
+ "title": "Separador corto",
+ "dots": "Puntos",
+ "dash": "Guiones",
+ "gaps": "Guiones con espacios",
+ "slashes": "Barras"
+ }
+ },
+ "quote": {
+ "title": "Citación",
+ "additional": "Other settings to customise the style of the quote widget",
+ "author_link": "Enlace del autor",
+ "custom": "Citación personalizada",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
+ "custom_author": "Autor personalizado",
+ "author_img": "Show author image",
+ "add": "Añadir cita",
+ "source_subtitle": "Choose where to get quotes from",
+ "buttons": {
+ "title": "Botones",
+ "subtitle": "Choose which buttons to show on the quote",
+ "copy": "Botón de copiar",
+ "tweet": "Botón de Tweet",
+ "favourite": "Botón de favoritos"
+ }
+ },
+ "greeting": {
+ "title": "Saludo",
+ "events": "Eventos",
+ "default": "Mensaje del saludo por defecto",
+ "name": "Nombre para el saludo",
+ "birthday": "Cumpleaños",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
+ "birthday_age": "Edad de cumpleaños",
+ "birthday_date": "Fecha de cumpleaños",
+ "additional": "Settings for the greeting display"
+ },
+ "background": {
+ "title": "Fondo",
+ "ddg_image_proxy": "Utilizar el proxy de imágenes de DuckDuckGo",
+ "transition": "Transición fade-in",
+ "photo_information": "Ver información de la foto",
+ "show_map": "Mostrar el mapa de la ubicación en la información de la foto si está disponible",
+ "categories": "Categories",
+ "buttons": {
+ "title": "Botones",
+ "view": "Ver",
+ "favourite": "Favorito",
+ "download": "Descargar"
+ },
+ "effects": {
+ "title": "Efectos",
+ "subtitle": "Add effects to the background images",
+ "blur": "Ajustar difuminado",
+ "brightness": "Ajustar brillo",
+ "filters": {
+ "title": "Filtros del fondo",
+ "amount": "Cantidad del filtro",
+ "grayscale": "Escala de grises",
+ "sepia": "Sepia",
+ "invert": "Invertir",
+ "saturate": "Saturar",
+ "contrast": "Contraste"
+ }
+ },
+ "type": {
+ "title": "Tipo",
+ "api": "API",
+ "custom_image": "Imagen personalizada",
+ "custom_colour": "Color/degradado personalizado",
+ "random_colour": "Color aleatorio",
+ "random_gradient": "Degradado aleatorio"
+ },
+ "source": {
+ "title": "Fuente",
+ "subtitle": "Select where to get background images from",
+ "api": "API de fondos",
+ "custom_background": "Fondo personalizado",
+ "custom_colour": "Color del fondo personalizado",
+ "upload": "Subir",
+ "add_colour": "Añadir color",
+ "add_background": "Añadir fondo",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
+ "add_url": "Añadir URL",
+ "disabled": "Desactivado",
+ "loop_video": "Vídeo en bucle",
+ "mute_video": "Silenciar video",
+ "quality": {
+ "title": "Calidad",
+ "original": "Original",
+ "high": "Calidad alta",
+ "normal": "Calidad normal",
+ "datasaver": "Ahorro de datos"
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
+ },
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
+ "interval": {
+ "title": "Cambiar cada",
+ "subtitle": "Change how often the background is updated",
+ "minute": "Minuto",
+ "half_hour": "Media hora",
+ "hour": "Hora",
+ "day": "Día",
+ "month": "Mes"
+ },
+ "category": "Categoría"
+ },
+ "search": {
+ "title": "Búsqueda",
+ "additional": "Additional options for search widget display and functionality",
+ "search_engine": "Motor de búsqueda",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
+ "custom": "URL de búsqueda personalizada",
+ "autocomplete": "Autocompletado",
+ "autocomplete_provider": "Proveedor del autocompletado",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
+ "voice_search": "Búsqueda por voz",
+ "dropdown": "Listado de búsqueda",
+ "focus": "Focus on tab open"
+ },
+ "weather": {
+ "title": "Clima",
+ "location": "Ubicación",
+ "auto": "Auto",
+ "widget_type": "Widget Type",
+ "temp_format": {
+ "title": "Formato de la temperatura",
+ "celsius": "Celsius",
+ "fahrenheit": "Fahrenheit",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Información extra",
+ "show_location": "Mostrar ubicación",
+ "show_description": "Mostrar descripción",
+ "cloudiness": "Nubosidad",
+ "humidity": "Humedad",
+ "visibility": "Visibilidad",
+ "wind_speed": "Velocidad del viento",
+ "wind_direction": "Dirección del viento",
+ "min_temp": "Temperatura mínima",
+ "max_temp": "Temperatura máxima",
+ "atmospheric_pressure": "Presión atmosférica"
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
+ },
+ "quicklinks": {
+ "title": "Enlaces rápidos",
+ "additional": "Additional settings for quick links display and functions",
+ "open_new": "Abrir en una nueva pestaña",
+ "tooltip": "Descripción emergente",
+ "text_only": "Mostrar solo texto",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
+ },
+ "message": {
+ "title": "Mensaje",
+ "add": "Añadir mensaje",
+ "messages": "Messages",
+ "text": "Texto",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
+ },
+ "appearance": {
+ "title": "Apariencia",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
+ "theme": {
+ "title": "Tema",
+ "description": "Change the theme of the Mue widgets and modals",
+ "auto": "Automática",
+ "light": "Claro",
+ "dark": "Oscuro"
+ },
+ "navbar": {
+ "title": "Barra de búsqueda",
+ "notes": "Notas",
+ "refresh": "Botón de recargar",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
+ "hover": "Solo mostrar al pasar el cursor",
+ "additional": "Modify navbar style and which buttons you want to display",
+ "refresh_options": {
+ "none": "Ninguno",
+ "page": "Página"
+ }
+ },
+ "font": {
+ "title": "Fuente",
+ "description": "Change the font used in Mue",
+ "custom": "Fuente personalizada",
+ "google": "Importar desde Google Fonts",
+ "weight": {
+ "title": "Tipo de la fuente",
+ "thin": "Delgado",
+ "extra_light": "Extra fino",
+ "light": "Fino",
+ "normal": "Normal",
+ "medium": "Mediano",
+ "semi_bold": "Semi negrita",
+ "bold": "Negrita",
+ "extra_bold": "Extra negrita"
+ },
+ "style": {
+ "title": "Estilo de la fuente",
+ "normal": "Normal",
+ "italic": "Cursiva",
+ "oblique": "Oblicua"
+ }
+ },
+ "accessibility": {
+ "title": "Accesibilidad",
+ "description": "Accessibility settings for Mue",
+ "animations": "Animaciones",
+ "text_shadow": "Sombra del texto del widget",
+ "widget_zoom": "Zoom del widget",
+ "toast_duration": "Duración de la notificación",
+ "milliseconds": "milisegundos"
+ }
+ },
+ "order": {
+ "title": "Orden de los widgets"
+ },
+ "advanced": {
+ "title": "Avanzado",
+ "offline_mode": "Modo sin conexión",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
+ "data": "Datos",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
+ "reset_modal": {
+ "title": "ADVERTENCIA",
+ "question": "¿Quieres reiniciar Mue?",
+ "information": "Esto borrará todos los datos. Si desea mantener sus datos y preferencias, por favor, expórtelos primero.",
+ "cancel": "Cancelar"
+ },
+ "customisation": "Personalización",
+ "custom_css": "CSS personalizado",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
+ "custom_js": "JS personalizado",
+ "tab_name": "Nombre de la pestaña",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
+ "timezone": {
+ "title": "Zona horaria",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
+ "automatic": "Automático"
+ },
+ "experimental_warning": "Por favor, ten en cuenta que el equipo de Mue no puede dar soporte si tienes el modo experimental activado. Por favor, desactívalo primero y comprueba si el problema sigue ocurriendo antes de contactar al equipo de soporte."
+ },
+ "stats": {
+ "title": "Estadísticas",
+ "warning": "Tienes que activar las estadísticas de uso para poder utilizar esta función. Estos datos se almacenarán localmente en su computadora.",
+ "sections": {
+ "tabs_opened": "Pestañas abiertas",
+ "backgrounds_favourited": "Fondos en tus favoritos",
+ "backgrounds_downloaded": "Fondos descargados",
+ "quotes_favourited": "Citaciones en favoritos ",
+ "quicklinks_added": "Enlaces rápidos agregados",
+ "settings_changed": "Ajustes cambiados",
+ "addons_installed": "Complementos instalados"
+ },
+ "usage": "Estadísticas de uso",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
+ },
+ "experimental": {
+ "title": "Experimental",
+ "warning": "Estos ajustes no han sido totalmente probados/implementados y pueden no funcionar correctamente.",
+ "developer": "Desarrollador"
+ },
+ "language": {
+ "title": "Idioma",
+ "quote": "Idioma de las citaciones"
+ },
+ "changelog": {
+ "title": "Registro de cambios",
+ "by": "Por {author}"
+ },
+ "about": {
+ "title": "Acerca de",
+ "copyright": "Copyright",
+ "version": {
+ "title": "Versión",
+ "checking_update": "Comprobando actualizaciones",
+ "update_available": "Actualización disponible",
+ "no_update": "No hay actualizaciones disponibles",
+ "offline_mode": "No se puede comprobar la actualización en modo sin conexión",
+ "error": {
+ "title": "Error al obtener la información de la actualización",
+ "description": "Ha ocurrido un error"
+ }
+ },
+ "contact_us": "Contáctanos",
+ "support_mue": "Apoya Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
+ "resources_used": {
+ "title": "Recursos usados",
+ "bg_images": "Fondos sin conexión"
+ },
+ "contributors": "Contribuidores",
+ "supporters": "",
+ "no_supporters": "Actualmente no hay partidarios de Mue",
+ "photographers": "Fotógrafos"
+ },
+ "keybinds": {
+ "title": "Asignación de teclas",
+ "recording": "Grabando...",
+ "click_to_record": "Click para grabar",
+ "background": {
+ "favourite": "Fondo favorito",
+ "maximise": "Maximizar fondo",
+ "download": "Descargar fondo",
+ "show_info": "Mostrar información del fondo"
+ },
+ "quote": {
+ "favourite": "Agregar citación a tus favoritos",
+ "copy": "Copiar citación",
+ "tweet": "Tuitear citación"
+ },
+ "notes": {
+ "pin": "Fijar notas",
+ "copy": "Copiar notas"
+ },
+ "search": "Enfocar búsqueda",
+ "quicklinks": "Alternar o añadir un enlace rápido",
+ "modal": "Alternal modal"
+ }
+ },
+ "buttons": {
+ "reset": "Reiniciar",
+ "import": "Importar",
+ "export": "Exportar"
+ }
+ },
+ "marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
+ "photo_packs": "Paquetes de fotos",
+ "quote_packs": "Paquetes de citas",
+ "preset_settings": "Ajustes preestablecidos",
+ "no_items": "No hay artículos en esta categoría",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
+ "product": {
+ "overview": "Vista general",
+ "information": "Información",
+ "last_updated": "Última actualización",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
+ "version": "Versión",
+ "author": "Autor",
+ "part_of": "Part of",
+ "explore": "Explore",
+ "buttons": {
+ "addtomue": "Añadir a Mue",
+ "remove": "Desinstalar",
+ "update_addon": "Actualizar complemento",
+ "back": "Back",
+ "report": "Report"
+ },
+ "setting": "Setting",
+ "value": "Value",
+ "quote_warning": {
+ "title": "Advertencia",
+ "description": "¡Este paquete de citaciones solicita a servidores externos que pueden rastrearte!"
+ }
+ },
+ "offline": {
+ "title": "Parece que estás desconectado",
+ "description": "Por favor conéctate a Internet"
+ }
+ },
+ "addons": {
+ "added": "Añadidos",
+ "check_updates": "Comprobar actualizaciones",
+ "no_updates": "No hay actualizaciones disponibles",
+ "updates_available": "Actualizaciones disponibles {amount}",
+ "empty": {
+ "title": "Vacío",
+ "description": "Ve a la tienda para agregar algunos."
+ },
+ "sideload": {
+ "title": "Cargar localmente",
+ "description": "Install a Mue addon not on the marketplace from your computer",
+ "failed": "Fallo en la carga lateral del complemento",
+ "errors": {
+ "no_name": "No se ha indicado el nombre",
+ "no_author": "No se ha indicado el autor",
+ "no_type": "No se ha indicado el tipo",
+ "invalid_photos": "Objeto de fotos inválido",
+ "invalid_quotes": "Objeto de citaciones inválido"
+ }
+ },
+ "sort": {
+ "title": "Ordenar",
+ "newest": "Instalados (Nuevos)",
+ "oldest": "Instalados (Antiguos)",
+ "a_z": "Alfabético (A-Z)",
+ "z_a": "Alfabético (Z-A)"
+ },
+ "create": {
+ "title": "Crear",
+ "example": "Example",
+ "other_title": "Crear complemento",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "Collection of settings to customise Mue.",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic."
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
+ "metadata": {
+ "name": "Nombre",
+ "icon_url": "URL del icono",
+ "screenshot_url": "URL de la captura de pantalla",
+ "description": "Descripción",
+ "example": "Download example"
+ },
+ "finish": {
+ "title": "Terminar",
+ "download": "Descargar complemento"
+ },
+ "settings": {
+ "current": "Importar la configuración actual",
+ "json": "Subir JSON"
+ },
+ "photos": {
+ "title": "Añadir fotos"
+ },
+ "quotes": {
+ "title": "Añadir citación",
+ "api": {
+ "title": "API",
+ "url": "Quote URL",
+ "name": "JSON quote name",
+ "author": "JSON quote author (or override)"
+ },
+ "local": {
+ "title": "Local"
+ }
+ }
+ }
+ }
+ },
+ "update": {
+ "title": "Actualizar",
+ "offline": {
+ "title": "Sin conexión",
+ "description": "No se pueden obtener actualizaciones en modo sin conexión"
+ },
+ "error": {
+ "title": "Error",
+ "description": "No se pudo conectar con el servidor"
+ }
+ },
+ "welcome": {
+ "tip": "Consejo",
+ "sections": {
+ "intro": {
+ "title": "Bienvenido a Mue Tab",
+ "description": "Gracias por instalar Mue, esperamos que disfrute de su tiempo con nuestra extensión.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
+ },
+ "language": {
+ "title": "Elige el idioma",
+ "description": "Mue puede mostrarse en los idiomas que se indican debajo. ¡También puedes contribuir con traducciones en nuestro"
+ },
+ "theme": {
+ "title": "Selecciona un tema",
+ "description": "Mue está disponible tanto en el tema claro como en el oscuro, también se puede configurar automáticamente en función del tema de su sistema.",
+ "tip": "Si utiliza la configuración automática, se utilizará el tema de tu computadora. Esta configuración afectará a los modales y a algunos de los widgets que aparecen en la pantalla, como la hora y las notas."
+ },
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
+ "settings": {
+ "title": "Importa los ajustes",
+ "description": "¿Instalando Mue en un nuevo dispositivo? No dudes en importar tu configuración anterior.",
+ "tip": "Puedes exportar tu configuración yendo a la pestaña Avanzado en tu configuración de Mue. Luego debes hacer clic en el botón de exportación que descargará el archivo JSON. Puedes subir este archivo aquí para mantener tus ajustes y preferencias de tu instalación anterior de Mue."
+ },
+ "privacy": {
+ "title": "Opciones de privacidad",
+ "description": "Activa estos ajustes para proteger aún más tu privacidad con Mue.",
+ "offline_mode_description": "Al activar el modo sin conexión se deshabilitarán todas las peticiones a cualquier servicio. Esto hará que se desactiven los fondos en línea, las citaciones en línea, la tienda, el tiempo, los enlaces rápidos, el registro de cambios, y alguna información de la pestaña Acerca de.",
+ "ddg_proxy_description": "Puedes hacer que las solicitudes de imágenes pasen por DuckDuckGo si lo deseas. Por defecto, las solicitudes a la API van a tráves de nuestros servidores de código abierto, y las solicitudes de imágenes van a través del servidor original. Si desactivas esta opción para los enlaces rápidos y los iconos de obtendrán de Google en lugar de DuckDuckGo, el proxy de DuckDuckGo está siempre activado para la tienda.",
+ "links": {
+ "title": "Enlaces",
+ "privacy_policy": "Política de privacidad",
+ "source_code": "Código fuente"
+ }
+ },
+ "final": {
+ "title": "Último paso",
+ "description": "Tu experiencia con Mue Tab está a punto de comenzar",
+ "changes": "Cambios",
+ "changes_description": "Para cambiar la configuración más tarde, haga clic en el icono de configuración en la esquina superior derecha de su pestaña.",
+ "imported": "Importados {amount} ajustes"
+ }
+ },
+ "buttons": {
+ "next": "Siguiente",
+ "preview": "Vista previa",
+ "previous": "Anterior",
+ "close": "Cerrar"
+ },
+ "preview": {
+ "description": "Actualmente se encuentra en el modo de vista previa. La configuración se restablecerá al cerrar esta pestaña.",
+ "continue": "Continuar con la configuración"
+ }
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
+ }
+ },
+ "toasts": {
+ "quote": "Citación copiada",
+ "notes": "Notas copiadas",
+ "reset": "Restablecido correctamente",
+ "installed": "Instalado correctamente",
+ "uninstalled": "Desinstalado correctamente",
+ "updated": "Actualizado correctamente",
+ "error": "Algo salió mal",
+ "imported": "Importado correctamente",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
+ }
+}
diff --git a/src/translations/fr.json b/src/translations/fr.json
index 91e35da9..958c5687 100644
--- a/src/translations/fr.json
+++ b/src/translations/fr.json
@@ -1,554 +1,720 @@
{
+ "tabname": "Nouvel Onglet",
+ "widgets": {
+ "greeting": {
+ "morning": "Bonjour",
+ "afternoon": "Bon après-midi",
+ "evening": "Bonsoir",
+ "christmas": "Joyeux Noël",
+ "newyear": "Bonne année",
+ "halloween": "Joyeux Halloween",
+ "birthday": "Bon anniversaire"
+ },
+ "background": {
+ "credit": "Photo par",
+ "unsplash": "sur Unsplash",
+ "pexels": "sur Pexels",
+ "information": "Information",
+ "download": "Téléchargement",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
+ },
+ "search": "Rechercher",
+ "quicklinks": {
+ "new": "Nouveau lien",
+ "name": "Nom",
+ "url": "URL",
+ "icon": "Icon (optional)",
+ "add": "Ajouter",
+ "name_error": "Doit fournir le nom",
+ "url_error": "Doit fournir une URL"
+ },
+ "date": {
+ "week": "Semaine"
+ },
+ "weather": {
+ "not_found": "Pas trouvé",
+ "meters": "{amount} mètres",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Refresh"
+ },
+ "notes": {
+ "title": "Remarques",
+ "placeholder": "Écrivez ici"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
+ }
+ }
+ },
"modals": {
"main": {
+ "title": "Options",
+ "loading": "Chargement...",
+ "file_upload_error": "File is over 2MB",
+ "navbar": {
+ "settings": "Paramètres",
+ "addons": "Mes Options",
+ "marketplace": "Marché"
+ },
+ "error_boundary": {
+ "title": "Erreur",
+ "message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
+ "refresh": "Rafraîchir"
+ },
+ "settings": {
+ "enabled": "Activé",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
+ "reminder": {
+ "title": "REMARQUER",
+ "message": "Pour que toutes les modifications aient lieu, la page doit être actualisée."
+ },
+ "sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
+ "time": {
+ "title": "Heure",
+ "format": "Format",
+ "type": "Genre",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
+ "digital": {
+ "title": "Affichage numériquel",
+ "subtitle": "Change how the digital clock looks",
+ "seconds": "Secondes",
+ "twentyfourhour": "24 heures",
+ "twelvehour": "12 heures",
+ "zero": "Complétion de zéros"
+ },
+ "analogue": {
+ "title": "Analogique",
+ "subtitle": "Change how the analogue clock looks",
+ "second_hand": "Aiguille des secondes",
+ "minute_hand": "Aiguille des minutes",
+ "hour_hand": "Aiguille de heure",
+ "hour_marks": "Marques d'heure",
+ "minute_marks": "Marques des minutes"
+ },
+ "percentage_complete": "Pourcentage achevé",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
+ },
+ "date": {
+ "title": "Date",
+ "week_number": "Numéro de semaine",
+ "day_of_week": "Jour de la semaine",
+ "datenth": "Date nth",
+ "type": {
+ "short": "Courtt",
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
+ },
+ "type_settings": "Display settings and format for the selected date type",
+ "short_date": "Date courte",
+ "short_format": "Format court",
+ "long_format": "Long format",
+ "short_separator": {
+ "title": "Séparateur court",
+ "dots": "Points",
+ "dash": "Tiret",
+ "gaps": "Blancs",
+ "slashes": "Barres"
+ }
+ },
+ "quote": {
+ "title": "Citation",
+ "additional": "Other settings to customise the style of the quote widget",
+ "author_link": "Lien auteur",
+ "custom": "Citation personnalisé",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
+ "custom_author": "Auteur de devis personnalisé",
+ "author_img": "Show author image",
+ "add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
+ "buttons": {
+ "title": "Boutons",
+ "subtitle": "Choose which buttons to show on the quote",
+ "copy": "Copier",
+ "tweet": "Twitter",
+ "favourite": "Ajouter aux favoris"
+ }
+ },
+ "greeting": {
+ "title": "Salutation",
+ "events": "Événements",
+ "default": "Salutation par défaut",
+ "name": "Nom pour salutation",
+ "birthday": "Anniversaire",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
+ "birthday_age": "âge d'anniversaire",
+ "birthday_date": "date d'anniversaire",
+ "additional": "Settings for the greeting display"
+ },
+ "background": {
+ "title": "Fond",
+ "ddg_image_proxy": "Utiliser le proxy d'image DuckDuckGo",
+ "transition": "Transition en fondu",
+ "photo_information": "Show photo information",
+ "show_map": "Show location map on photo information if available",
+ "categories": "Categories",
+ "buttons": {
+ "title": "Boutons",
+ "view": "Mode vue",
+ "favourite": "Ajouter aux favoris",
+ "download": "Télécharger"
+ },
+ "effects": {
+ "title": "Effets",
+ "subtitle": "Add effects to the background images",
+ "blur": "Ajuster le flou",
+ "brightness": "Ajuster la luminosité",
+ "filters": {
+ "title": "Background filter",
+ "amount": "Filter amount",
+ "grayscale": "Grayscale",
+ "sepia": "Sepia",
+ "invert": "Invert",
+ "saturate": "Saturate",
+ "contrast": "Contrast"
+ }
+ },
+ "type": {
+ "title": "Type",
+ "api": "API",
+ "custom_image": "Image personnalisée",
+ "custom_colour": "Couleur / dégradé personnalisé",
+ "random_colour": "Random colour",
+ "random_gradient": "Random gradient"
+ },
+ "source": {
+ "title": "Source",
+ "subtitle": "Select where to get background images from",
+ "api": "Source",
+ "custom_background": "Arrière-plan personnalisé",
+ "custom_colour": "Couleur d'arrière-plan personnalisée",
+ "upload": "Ajouter",
+ "add_colour": "Ajouter une couleur",
+ "add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
+ "add_url": "Add URL",
+ "disabled": "Disabled",
+ "loop_video": "Boucle vidéo",
+ "mute_video": "Mettre la vidéo en sourdine",
+ "quality": {
+ "title": "Quality",
+ "original": "Original",
+ "high": "High Quality",
+ "normal": "Normal Quality",
+ "datasaver": "Data Saver"
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
+ },
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
+ "interval": {
+ "title": "Change every",
+ "subtitle": "Change how often the background is updated",
+ "minute": "Minute",
+ "half_hour": "Half hour",
+ "hour": "Hour",
+ "day": "Day",
+ "month": "Month"
+ },
+ "category": "Catégorie"
+ },
+ "search": {
+ "title": "Barre de Recherche",
+ "additional": "Additional options for search widget display and functionality",
+ "search_engine": "Moteur de recherche",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
+ "custom": "URL de recherche personnalisée",
+ "autocomplete": "Autocomplete",
+ "autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
+ "voice_search": "Recherche vocale",
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
+ },
+ "weather": {
+ "title": "Météo",
+ "location": "Emplacement",
+ "auto": "Auto",
+ "widget_type": "Widget Type",
+ "temp_format": {
+ "title": "Format de température",
+ "celsius": "Celsius",
+ "fahrenheit": "Fahrenheit",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Informations supplémentaires",
+ "show_location": "Afficher l'emplacement",
+ "show_description": "Show description",
+ "cloudiness": "Cloudiness",
+ "humidity": "Humidité",
+ "visibility": "Visibility",
+ "wind_speed": "Vitesse du vent",
+ "wind_direction": "Wind direction",
+ "min_temp": "Température minimale",
+ "max_temp": "Température maximale",
+ "atmospheric_pressure": "Pression atmosphérique"
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
+ },
+ "quicklinks": {
+ "title": "Liens rapides",
+ "additional": "Additional settings for quick links display and functions",
+ "open_new": "Ouvrir dans un nouvel onglet",
+ "tooltip": "Info-bulle",
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
+ },
+ "message": {
+ "title": "Message",
+ "add": "Add message",
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
+ },
+ "appearance": {
+ "title": "Apparence",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
+ "theme": {
+ "title": "Thème",
+ "description": "Change the theme of the Mue widgets and modals",
+ "auto": "Auto",
+ "light": "Clair",
+ "dark": "Sombre"
+ },
+ "navbar": {
+ "title": "Navbar",
+ "notes": "Notes",
+ "refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
+ "hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
+ "refresh_options": {
+ "none": "None",
+ "page": "Page"
+ }
+ },
+ "font": {
+ "title": "Font",
+ "description": "Change the font used in Mue",
+ "custom": "Custom font",
+ "google": "Import from Google Fonts",
+ "weight": {
+ "title": "Font weight",
+ "thin": "Thin",
+ "extra_light": "Extra Light",
+ "light": "Light",
+ "normal": "Normal",
+ "medium": "Medium",
+ "semi_bold": "Semi-Bold",
+ "bold": "Bold",
+ "extra_bold": "Extra-Bold"
+ },
+ "style": {
+ "title": "Font style",
+ "normal": "Normal",
+ "italic": "Italic",
+ "oblique": "Oblique"
+ }
+ },
+ "accessibility": {
+ "title": "Accessibilité",
+ "description": "Accessibility settings for Mue",
+ "animations": "Animations",
+ "text_shadow": "Widget text shadow",
+ "widget_zoom": "Zoom du widget",
+ "toast_duration": "Durée du toast",
+ "milliseconds": "millisecondes"
+ }
+ },
+ "order": {
+ "title": "Ordre des widgets"
+ },
+ "advanced": {
+ "title": "Avancée",
+ "offline_mode": "Mode hors-ligne",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
+ "data": "Donnés",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
+ "reset_modal": {
+ "title": "ATTENTION",
+ "question": "Voulez-vous réinitialiser Mue?",
+ "information": "Cela supprimera toutes les données. Si vous souhaitez conserver vos données et préférences, veuillez d'abord les exporter.",
+ "cancel": "Annuler"
+ },
+ "customisation": "Personnalisation",
+ "custom_css": "CSS personnalisé",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
+ "custom_js": "JS personnalisé",
+ "tab_name": "Nom de l'onglet",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
+ "timezone": {
+ "title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
+ "automatic": "Automatic"
+ },
+ "experimental_warning": "Veuillez noter que l'équipe Mue ne peut pas fournir d'assistance si vous avez activé le mode expérimental. Veuillez d'abord le désactiver et voir si le problème persiste avant de contacter le support."
+ },
+ "stats": {
+ "title": "Stats",
+ "warning": "You need to enable usage data in order to use this feature. This data is only stored locally.",
+ "sections": {
+ "tabs_opened": "Tabs opened",
+ "backgrounds_favourited": "Backgrounds favourited",
+ "backgrounds_downloaded": "Backgrounds downloaded",
+ "quotes_favourited": "Quotes favourited",
+ "quicklinks_added": "Quicklinks added",
+ "settings_changed": "Settings changed",
+ "addons_installed": "Add-ons installed"
+ },
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
+ },
+ "experimental": {
+ "title": "Expérimental",
+ "warning": "These settings have not been fully tested/implemented and may not work correctly!",
+ "developer": "Developer"
+ },
+ "language": {
+ "title": "Langue",
+ "quote": "Citation langue"
+ },
+ "changelog": {
+ "title": "Journal des modifications",
+ "by": "By {author}"
+ },
+ "about": {
+ "title": "à propos de",
+ "copyright": "Droits d'auteur",
+ "version": {
+ "title": "Version",
+ "checking_update": "Vérification de la mise à jour",
+ "update_available": "Mise à jour disponible",
+ "no_update": "Pas de mise a jour disponible",
+ "offline_mode": "Impossible de vérifier la mise à jour en mode hors ligne",
+ "error": {
+ "title": "Failed to get update information",
+ "description": "An error occured"
+ }
+ },
+ "contact_us": "Nous contacter",
+ "support_mue": "Soutenir Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
+ "resources_used": {
+ "title": "Ressources utilisées",
+ "bg_images": "Images d'arrière-plan hors ligne"
+ },
+ "contributors": "Collaborateurs",
+ "supporters": "Partisans",
+ "no_supporters": "There are currently no Mue supporters",
+ "photographers": "Photographes"
+ }
+ },
+ "buttons": {
+ "reset": "Réinitialiser",
+ "import": "Importer",
+ "export": "Exporter"
+ }
+ },
+ "marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
+ "photo_packs": "Packs Photos",
+ "quote_packs": "Packs Citations",
+ "preset_settings": "Paramètres prédéfinis",
+ "no_items": "Aucun article dans cette catégorie",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
+ "product": {
+ "overview": "Aperçu",
+ "information": "Information",
+ "last_updated": "Dernière mise à jour",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
+ "version": "Version",
+ "author": "Auteur",
+ "part_of": "Part of",
+ "explore": "Explore",
+ "buttons": {
+ "addtomue": "Ajouter à Mue",
+ "remove": "Enlever",
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
+ },
+ "setting": "Setting",
+ "value": "Value"
+ },
+ "offline": {
+ "title": "Hors ligne",
+ "description": "Veuillez vous connecter à Internet."
+ }
+ },
"addons": {
"added": "Ajoutées",
"check_updates": "Check for updates",
+ "no_updates": "No updates available",
+ "updates_available": "Updates available {amount}",
+ "empty": {
+ "title": "C'est vide par ici",
+ "description": "Dirigez vous vers le marché pour ajouter des options"
+ },
+ "sideload": {
+ "title": "Charger",
+ "description": "Install a Mue addon not on the marketplace from your computer",
+ "failed": "Failed to sideload addon",
+ "errors": {
+ "no_name": "No name provided",
+ "no_author": "No author provided",
+ "no_type": "No type provided",
+ "invalid_photos": "Invalid photos object",
+ "invalid_quotes": "Invalid quotes object"
+ }
+ },
+ "sort": {
+ "title": "Sort",
+ "newest": "Installed (Newest)",
+ "oldest": "Installed (Oldest)",
+ "a_z": "Alphabetical (A-Z)",
+ "z_a": "Alphabetical (Z-A)"
+ },
"create": {
- "finish": {
- "download": "Download Add-on",
- "title": "Finish"
+ "title": "Create",
+ "example": "Example",
+ "other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
},
"metadata": {
- "description": "Description",
- "icon_url": "Icon URL",
"name": "Name",
- "screenshot_url": "Screenshot URL"
+ "icon_url": "Icon URL",
+ "screenshot_url": "Screenshot URL",
+ "description": "Description",
+ "example": "Download example"
},
- "other_title": "Create Add-on",
- "photos": {
- "title": "Add Photos"
- },
- "quotes": {
- "api": {
- "author": "JSON quote author (or override)",
- "name": "JSON quote name",
- "title": "API",
- "url": "Quote URL"
- },
- "local": {
- "title": "Local"
- },
- "title": "Add Quotes"
+ "finish": {
+ "title": "Finish",
+ "download": "Download Add-on"
},
"settings": {
"current": "Import current setup",
"json": "Upload JSON"
},
- "title": "Create"
- },
- "empty": {
- "description": "Dirigez vous vers le marché pour ajouter des options",
- "title": "C'est vide par ici"
- },
- "no_updates": "No updates available",
- "sideload": {
- "errors": {
- "invalid_photos": "Invalid photos object",
- "invalid_quotes": "Invalid quotes object",
- "no_author": "No author provided",
- "no_name": "No name provided",
- "no_type": "No type provided"
+ "photos": {
+ "title": "Add Photos"
},
- "failed": "Failed to sideload addon",
- "title": "Charger"
- },
- "sort": {
- "a_z": "Alphabetical (A-Z)",
- "newest": "Installed (Newest)",
- "oldest": "Installed (Oldest)",
- "title": "Sort",
- "z_a": "Alphabetical (Z-A)"
- },
- "updates_available": "Updates available {amount}"
- },
- "error_boundary": {
- "message": "Échec du chargement de ce composant de Mue",
- "refresh": "Rafraîchir",
- "title": "Erreur"
- },
- "file_upload_error": "Le fichier dépasse 2 Mo",
- "loading": "Chargement…",
- "marketplace": {
- "no_items": "Aucun article dans cette catégorie",
- "offline": {
- "description": "Veuillez vous connecter à Internet.",
- "title": "Hors ligne"
- },
- "photo_packs": "Packs Photos",
- "preset_settings": "Paramètres prédéfinis",
- "product": {
- "author": "Auteur",
- "buttons": {
- "addtomue": "Ajouter à Mue",
- "remove": "Enlever",
- "update_addon": "Update Add-on"
- },
- "information": "Information",
- "last_updated": "Dernière mise à jour",
- "overview": "Aperçu",
- "quote_warning": {
- "description": "This quote pack requests to external servers that may track you!",
- "title": "Warning"
- },
- "version": "Version"
- },
- "quote_packs": "Packs Citations"
- },
- "navbar": {
- "addons": "Mes Options",
- "marketplace": "Marché",
- "settings": "Paramètres"
- },
- "settings": {
- "buttons": {
- "export": "Exporter",
- "import": "Importer",
- "reset": "Réinitialiser"
- },
- "enabled": "Activé",
- "reminder": {
- "message": "Pour que toutes les modifications aient lieu, la page doit être actualisée.",
- "title": "REMARQUER"
- },
- "sections": {
- "about": {
- "contact_us": "Nous contacter",
- "contributors": "Collaborateurs",
- "copyright": "Droits d'auteur",
- "no_supporters": "There are currently no Mue supporters",
- "photographers": "Photographes",
- "resources_used": {
- "bg_images": "Images d'arrière-plan hors ligne",
- "title": "Ressources utilisées"
+ "quotes": {
+ "title": "Add Quotes",
+ "api": {
+ "title": "API",
+ "url": "Quote URL",
+ "name": "JSON quote name",
+ "author": "JSON quote author (or override)"
},
- "support_mue": "Soutenir Mue",
- "supporters": "Partisans",
- "title": "à propos de",
- "version": {
- "checking_update": "Vérification de la mise à jour",
- "error": {
- "description": "An error occured",
- "title": "Failed to get update information"
- },
- "no_update": "Pas de mise a jour disponible",
- "offline_mode": "Impossible de vérifier la mise à jour en mode hors ligne",
- "title": "Version",
- "update_available": "Mise à jour disponible"
+ "local": {
+ "title": "Local"
}
- },
- "advanced": {
- "custom_css": "CSS personnalisé",
- "custom_js": "JS personnalisé",
- "customisation": "Personnalisation",
- "data": "Donnés",
- "experimental_warning": "Veuillez noter que l'équipe Mue ne peut pas fournir d'assistance si vous avez activé le mode expérimental. Veuillez d'abord le désactiver et voir si le problème persiste avant de contacter le support.",
- "offline_mode": "Mode hors-ligne",
- "reset_modal": {
- "cancel": "Annuler",
- "information": "Cela supprimera toutes les données. Si vous souhaitez conserver vos données et préférences, veuillez d'abord les exporter.",
- "question": "Voulez-vous réinitialiser Mue?",
- "title": "ATTENTION"
- },
- "tab_name": "Nom de l'onglet",
- "timezone": {
- "automatic": "Automatic",
- "title": "Time Zone"
- },
- "title": "Avancée"
- },
- "appearance": {
- "accessibility": {
- "animations": "Animations",
- "milliseconds": "millisecondes",
- "text_shadow": "Widget text shadow",
- "title": "Accessibilité",
- "toast_duration": "Durée du toast",
- "widget_zoom": "Zoom du widget"
- },
- "font": {
- "custom": "Custom font",
- "google": "Import from Google Fonts",
- "style": {
- "italic": "Italic",
- "normal": "Normal",
- "oblique": "Oblique",
- "title": "Font style"
- },
- "title": "Font",
- "weight": {
- "bold": "Bold",
- "extra_bold": "Extra-Bold",
- "extra_light": "Extra Light",
- "light": "Light",
- "medium": "Medium",
- "normal": "Normal",
- "semi_bold": "Semi-Bold",
- "thin": "Thin",
- "title": "Font weight"
- }
- },
- "navbar": {
- "hover": "Only display on hover",
- "notes": "Notes",
- "refresh": "Refresh button",
- "refresh_options": {
- "none": "None",
- "page": "Page"
- },
- "title": "Navbar"
- },
- "theme": {
- "auto": "Auto",
- "dark": "Sombre",
- "light": "Clair",
- "title": "Thème"
- },
- "title": "Apparence"
- },
- "background": {
- "buttons": {
- "download": "Télécharger",
- "favourite": "Ajouter aux favoris",
- "title": "Boutons",
- "view": "Mode vue"
- },
- "category": "Catégorie",
- "ddg_image_proxy": "Utiliser le proxy d'image DuckDuckGo",
- "effects": {
- "blur": "Ajuster le flou",
- "brightness": "Ajuster la luminosité",
- "filters": {
- "amount": "Filter amount",
- "contrast": "Contrast",
- "grayscale": "Grayscale",
- "invert": "Invert",
- "saturate": "Saturate",
- "sepia": "Sepia",
- "title": "Background filter"
- },
- "title": "Effets"
- },
- "interval": {
- "day": "Day",
- "half_hour": "Half hour",
- "hour": "Hour",
- "minute": "Minute",
- "month": "Month",
- "title": "Changer"
- },
- "photo_information": "Show photo information",
- "show_map": "Show location map on photo information if available",
- "source": {
- "add_background": "Add background",
- "add_colour": "Ajouter une couleur",
- "add_url": "Add URL",
- "api": "Source",
- "custom_background": "Arrière-plan personnalisé",
- "custom_colour": "Couleur d'arrière-plan personnalisée",
- "disabled": "Disabled",
- "loop_video": "Boucle vidéo",
- "mute_video": "Mettre la vidéo en sourdine",
- "quality": {
- "datasaver": "Data Saver",
- "high": "Haute qualité",
- "normal": "Qualité normale",
- "original": "Original",
- "title": "Qualité"
- },
- "title": "Source",
- "upload": "Ajouter"
- },
- "title": "Fond",
- "transition": "Transition en fondu",
- "type": {
- "api": "API",
- "custom_colour": "Couleur / dégradé personnalisé",
- "custom_image": "Image personnalisée",
- "random_colour": "Random colour",
- "random_gradient": "Random gradient",
- "title": "Type"
- }
- },
- "changelog": {
- "by": "By {author}",
- "title": "Journal des modifications"
- },
- "date": {
- "datenth": "Date nth",
- "day_of_week": "Jour de la semaine",
- "short_date": "Date courte",
- "short_format": "Format court",
- "short_separator": {
- "dash": "Tiret",
- "dots": "Points",
- "gaps": "Blancs",
- "slashes": "Barres",
- "title": "Séparateur court"
- },
- "title": "Date",
- "type": {
- "long": "Long",
- "short": "Courtt"
- },
- "week_number": "Numéro de semaine"
- },
- "experimental": {
- "developer": "Developer",
- "title": "Expérimental",
- "warning": "These settings have not been fully tested/implemented and may not work correctly!"
- },
- "greeting": {
- "birthday": "Anniversaire",
- "birthday_age": "âge d'anniversaire",
- "birthday_date": "date d'anniversaire",
- "default": "Salutation par défaut",
- "events": "Événements",
- "name": "Nom pour salutation",
- "title": "Salutation"
- },
- "keybinds": {
- "background": {
- "download": "Download background",
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "show_info": "Show background information"
- },
- "click_to_record": "Click to record",
- "modal": "Toggle modal",
- "notes": {
- "copy": "Copy notes",
- "pin": "Pin notes"
- },
- "quicklinks": "Toggle add quick link",
- "quote": {
- "copy": "Copy quote",
- "favourite": "Favourite quote",
- "tweet": "Tweet quote"
- },
- "recording": "Recording...",
- "search": "Focus search",
- "title": "Keybinds"
- },
- "language": {
- "quote": "Citation langue",
- "title": "Langue"
- },
- "message": {
- "add": "Add message",
- "text": "Text",
- "title": "Message"
- },
- "order": {
- "title": "Ordre des widgets"
- },
- "quicklinks": {
- "open_new": "Ouvrir dans un nouvel onglet",
- "text_only": "Show text only",
- "title": "Liens rapides",
- "tooltip": "Info-bulle"
- },
- "quote": {
- "add": "Add quote",
- "author_link": "Lien auteur",
- "buttons": {
- "copy": "Copier",
- "favourite": "Ajouter aux favoris",
- "title": "Boutons",
- "tweet": "Twitter"
- },
- "custom": "Citation personnalisé",
- "custom_author": "Auteur de devis personnalisé",
- "title": "Citation"
- },
- "search": {
- "autocomplete": "Autocomplete",
- "autocomplete_provider": "Autocomplete Provider",
- "custom": "URL de recherche personnalisée",
- "dropdown": "Search dropdown",
- "search_engine": "Moteur de recherche",
- "title": "Barre de Recherche",
- "voice_search": "Recherche vocale"
- },
- "stats": {
- "sections": {
- "addons_installed": "Add-ons installed",
- "backgrounds_downloaded": "Backgrounds downloaded",
- "backgrounds_favourited": "Backgrounds favourited",
- "quicklinks_added": "Quicklinks added",
- "quotes_favourited": "Quotes favourited",
- "settings_changed": "Settings changed",
- "tabs_opened": "Tabs opened"
- },
- "title": "Stats",
- "usage": "Usage Stats",
- "warning": "You need to enable usage data in order to use this feature. This data is only stored locally."
- },
- "time": {
- "analogue": {
- "hour_hand": "Aiguille de heure",
- "hour_marks": "Marques d'heure",
- "minute_hand": "Aiguille des minutes",
- "minute_marks": "Marques des minutes",
- "second_hand": "Aiguille des secondes",
- "title": "Analogique"
- },
- "digital": {
- "seconds": "Secondes",
- "title": "Affichage numériquel",
- "twelvehour": "12 heures",
- "twentyfourhour": "24 heures",
- "zero": "Complétion de zéros"
- },
- "format": "Format",
- "percentage_complete": "Pourcentage achevé",
- "title": "Heure",
- "type": "Genre"
- },
- "weather": {
- "auto": "Auto",
- "extra_info": {
- "atmospheric_pressure": "Pression atmosphérique",
- "cloudiness": "Cloudiness",
- "humidity": "Humidité",
- "max_temp": "Température maximale",
- "min_temp": "Température minimale",
- "show_description": "Show description",
- "show_location": "Afficher l'emplacement",
- "title": "Informations supplémentaires",
- "visibility": "Visibility",
- "wind_direction": "Wind direction",
- "wind_speed": "Vitesse du vent"
- },
- "location": "Emplacement",
- "temp_format": {
- "celsius": "Celsius",
- "fahrenheit": "Fahrenheit",
- "kelvin": "Kelvin",
- "title": "Format de température"
- },
- "title": "Météo"
}
}
- },
- "title": "Options"
- },
- "update": {
- "error": {
- "description": "Impossible de se connecter au serveur",
- "title": "Erreur"
- },
- "offline": {
- "description": "Vous ne pouvez pas obtenir de mise à jour si vous êtes hors ligne",
- "title": "Hors"
- },
- "title": "Mettre à jour"
- },
- "welcome": {
- "buttons": {
- "close": "Fermer",
- "next": "Next",
- "preview": "Preview",
- "previous": "Previous"
- },
- "preview": {
- "continue": "Continue setup",
- "description": "You are currently in preview mode. Settings will be reset on closing this tab."
- },
- "sections": {
- "final": {
- "changes": "Changes",
- "changes_description": "To change settings later click on the settings icon in the top right corner of your tab.",
- "description": "Your Mue Tab experience is about to begin.",
- "imported": "Imported {amount} settings",
- "title": "Final step"
- },
- "intro": {
- "description": "Merci d'avoir installé Mue, nous espérons que vous apprécierez votre temps avec notre extension.",
- "title": "Bienvenue en Mue Tab"
- },
- "language": {
- "description": "Mue can be displayed the languages listed below. You can also add new translations on our",
- "title": "Choose your language"
- },
- "privacy": {
- "ddg_proxy_description": "You can make image requests go through DuckDuckGo if you wish. By default, API requests go through our open source servers and image requests go through the original server. Turning this off for quick links will get the icons from Google instead of DuckDuckGo. DuckDuckGo proxy is always enabled for the Marketplace.",
- "description": "Enable settings to further protect your privacy with Mue.",
- "links": {
- "privacy_policy": "Privacy Policy",
- "source_code": "Source Code",
- "title": "Links"
- },
- "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.",
- "title": "Privacy Options"
- },
- "settings": {
- "description": "Installing Mue on a new device? Feel free to import your old settings!",
- "tip": "You can export your old settings by navigating to the Advanced tab in your old Mue setup. Then you need to click the export button which will download the JSON file. You can upload this file here to carry across your settings and preferences from your previous Mue installation.",
- "title": "Import Settings"
- },
- "theme": {
- "description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
- "tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes.",
- "title": "Select a theme"
- }
- },
- "tip": "Quick Tip"
- }
- },
- "tabname": "Nouvel Onglet",
- "toasts": {
- "error": "Quelque chose s'est mal passé",
- "imported": "Importé avec succès",
- "installed": "Installé avec succès",
- "notes": "Remarques copiée",
- "quote": "Citation copiée",
- "reset": "Réinitialisé avec succès",
- "uninstalled": "Enlevé avec succès",
- "updated": "Successfully updated"
- },
- "widgets": {
- "background": {
- "credit": "Photo par",
- "download": "Téléchargement",
- "information": "Information",
- "pexels": "sur Pexels",
- "unsplash": "sur Unsplash"
- },
- "date": {
- "week": "Semaine"
- },
- "greeting": {
- "afternoon": "Bon après-midi",
- "birthday": "Bon anniversaire",
- "christmas": "Joyeux Noël",
- "evening": "Bonsoir",
- "halloween": "Joyeux Halloween",
- "morning": "Bonjour",
- "newyear": "Bonne année"
- },
- "navbar": {
- "notes": {
- "placeholder": "Écrivez ici",
- "title": "Remarques"
- },
- "tooltips": {
- "refresh": "Actualiser"
}
},
- "quicklinks": {
- "add": "Ajouter",
- "icon": "Icône (facultatif)",
- "name": "Nom",
- "name_error": "Doit fournir le nom",
- "new": "Nouveau lien",
- "url": "URL",
- "url_error": "Doit fournir une URL"
+ "update": {
+ "title": "Mettre à jour",
+ "offline": {
+ "title": "Hors",
+ "description": "Vous ne pouvez pas obtenir de mise à jour si vous êtes hors ligne"
+ },
+ "error": {
+ "title": "Erreur",
+ "description": "Impossible de se connecter au serveur"
+ }
},
- "search": "Rechercher",
- "weather": {
- "meters": "{amount} mètres",
- "not_found": "Pas trouvé"
+ "welcome": {
+ "tip": "Quick Tip",
+ "sections": {
+ "intro": {
+ "title": "Bienvenue en Mue Tab",
+ "description": "Merci d'avoir installé Mue, nous espérons que vous apprécierez votre temps avec notre extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
+ },
+ "language": {
+ "title": "Choose your language",
+ "description": "Mue can be displayed the languages listed below. You can also add new translations on our"
+ },
+ "theme": {
+ "title": "Select a theme",
+ "description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
+ "tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
+ },
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
+ "settings": {
+ "title": "Import Settings",
+ "description": "Installing Mue on a new device? Feel free to import your old settings!",
+ "tip": "You can export your old settings by navigating to the Advanced tab in your old Mue setup. Then you need to click the export button which will download the JSON file. You can upload this file here to carry across your settings and preferences from your previous Mue installation."
+ },
+ "privacy": {
+ "title": "Privacy Options",
+ "description": "Enable settings to further protect your privacy with Mue.",
+ "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.",
+ "ddg_proxy_description": "You can make image requests go through DuckDuckGo if you wish. By default, API requests go through our open source servers and image requests go through the original server. Turning this off for quick links will get the icons from Google instead of DuckDuckGo. DuckDuckGo proxy is always enabled for the Marketplace.",
+ "links": {
+ "title": "Links",
+ "privacy_policy": "Privacy Policy",
+ "source_code": "Source Code"
+ }
+ },
+ "final": {
+ "title": "Final step",
+ "description": "Your Mue Tab experience is about to begin.",
+ "changes": "Changes",
+ "changes_description": "To change settings later click on the settings icon in the top right corner of your tab.",
+ "imported": "Imported {amount} settings"
+ }
+ },
+ "buttons": {
+ "next": "Next",
+ "preview": "Preview",
+ "previous": "Previous",
+ "close": "Fermer"
+ },
+ "preview": {
+ "description": "You are currently in preview mode. Settings will be reset on closing this tab.",
+ "continue": "Continue setup"
+ }
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
+ },
+ "toasts": {
+ "quote": "Citation copiée",
+ "notes": "Remarques copiée",
+ "reset": "Réinitialisé avec succès",
+ "installed": "Installé avec succès",
+ "uninstalled": "Enlevé avec succès",
+ "updated": "Successfully updated",
+ "error": "Quelque chose s'est mal passé",
+ "imported": "Importé avec succès",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/id_ID.json b/src/translations/id_ID.json
index 40b05616..2e602c5c 100644
--- a/src/translations/id_ID.json
+++ b/src/translations/id_ID.json
@@ -15,7 +15,20 @@
"unsplash": "di Unsplash",
"pexels": "di Pexels",
"information": "Informasi",
- "download": "Unduh"
+ "download": "Unduh",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "Cari",
"quicklinks": {
@@ -32,7 +45,22 @@
},
"weather": {
"not_found": "Tidak Ditemukan",
- "meters": "{amount} meter"
+ "meters": "{amount} meter",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +69,11 @@
"notes": {
"title": "Catatan",
"placeholder": "Ketik di sini"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "Galat",
"message": "Gagal memuat komponen Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Muat Ulang"
},
"settings": {
"enabled": "Aktif",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "PERHATIAN",
"message": "Agar semua perubahan dapat diterapkan, harap muat ulang halaman ini"
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Waktu",
"format": "Format",
"type": "Tipe",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Detik",
"twentyfourhour": "24",
"twelvehour": "12 (AM/PM)",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "Analog",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Jarum Detik",
"minute_hand": "Jarum Menit",
"hour_hand": "Jarum Jam",
"hour_marks": "Penanda Jam",
"minute_marks": "Penanda Menit"
},
- "percentage_complete": "Persentase"
+ "percentage_complete": "Persentase",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Tanggal",
@@ -94,10 +145,13 @@
"datenth": "Imbuhan nth",
"type": {
"short": "Ringkas",
- "long": "Lengkap"
+ "long": "Lengkap",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Tanggal Ringkas",
"short_format": "Format Ringkas",
+ "long_format": "Long format",
"short_separator": {
"title": "Pemisah",
"dots": "Titik",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "Kutipan",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Pranala penulis",
"custom": "Kutipan kustom",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Penulis kustom",
+ "author_img": "Show author image",
"add": "Tambahkan kutipan",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Aksi",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Salin",
"tweet": "Tweet",
"favourite": "Favorit"
@@ -125,8 +187,10 @@
"default": "Sapaan bawaan",
"name": "Nama",
"birthday": "Hari Ulang Tahun",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Usia",
- "birthday_date": "Tanggal Ulang Tahun"
+ "birthday_date": "Tanggal Ulang Tahun",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Background",
@@ -134,7 +198,7 @@
"transition": "Transisi Fade-in",
"photo_information": "Tampilkan informasi foto",
"show_map": "Tampilkan informasi lokasi foto jika ada",
- "category": "Kategori",
+ "categories": "Categories",
"buttons": {
"title": "Aksi",
"view": "Layar Penuh",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "Efek",
+ "subtitle": "Add effects to the background images",
"blur": "Sesuaikan blur",
"brightness": "Sesuaikan kecerahan",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "Sumber",
+ "subtitle": "Select where to get background images from",
"api": "Background API",
"custom_background": "Background kustom",
"custom_colour": "Background warna kustom",
"upload": "Unggah",
"add_colour": "Tambah warna",
"add_background": "Tambah background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Tambah URL",
"disabled": "Nonaktif",
"loop_video": "Ulang video",
@@ -181,30 +250,44 @@
"high": "High Quality",
"normal": "Normal Quality",
"datasaver": "Data Saver"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Ubah setiap",
+ "subtitle": "Change how often the background is updated",
"minute": "Menit",
"half_hour": "Setengah jam",
"hour": "Jam",
"day": "Hari",
"month": "Bulan"
- }
+ },
+ "category": "Kategori"
},
"search": {
"title": "Cari",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Mesin pencari",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "URL kustom",
"autocomplete": "Autocomplete",
"autocomplete_provider": "Provider Autocomplete",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Pencarian suara",
- "dropdown": "Dropdown pencarian"
+ "dropdown": "Dropdown pencarian",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Cuaca",
"location": "Lokasi",
"auto": "Otomatis",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Format suhu",
"celsius": "Celsius",
@@ -223,23 +306,53 @@
"min_temp": "Temperatur minimal",
"max_temp": "Temperatur maksimal",
"atmospheric_pressure": "Tekanan atmosfer"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Pranala cepat",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Buka di tab baru",
"tooltip": "Tooltip",
- "text_only": "Hanya teks"
+ "text_only": "Hanya teks",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Pesan",
"add": "Tambahkan pesan",
- "text": "Teks"
+ "messages": "Messages",
+ "text": "Teks",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Antarmuka",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Tema",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Otomatis",
"light": "Light",
"dark": "Dark"
@@ -248,7 +361,9 @@
"title": "Navbar",
"notes": "Catatan",
"refresh": "Muat ulang",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Tampilkan ketika hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "Nonaktif",
"page": "Halaman"
@@ -256,6 +371,7 @@
},
"font": {
"title": "Font",
+ "description": "Change the font used in Mue",
"custom": "Font kustom",
"google": "Impor dari Google Fonts",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "Aksesibilitas",
+ "description": "Accessibility settings for Mue",
"animations": "Animasi",
"text_shadow": "Widget text shadow",
"widget_zoom": "Widget zoom",
@@ -291,7 +408,9 @@
"advanced": {
"title": "Lanjutan",
"offline_mode": "Mode Luring",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "PERINGATAN",
"question": "Apakah Anda ingin me-reset Mue?",
@@ -300,10 +419,13 @@
},
"customisation": "Kustomisasi",
"custom_css": "CSS Kustom",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "JS Kustom",
"tab_name": "Nama tab",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Zona Waktu",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Otomatis"
},
"experimental_warning": "Harap diperhatikan bahwa tim Mue tidak menyediakan dukungan jika Anda mengaktifkan mode experimental. Harap nonaktifkan terlebih dahulu dan lihat apabila kendala Anda masih terjadi sebelum menghubungi kami."
@@ -320,30 +442,9 @@
"settings_changed": "Perubahan pengaturan",
"addons_installed": "Add-ons ditambahkan"
},
- "usage": "Statistik Penggunaan"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
+ "usage": "Statistik Penggunaan",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Experimental",
@@ -374,6 +475,8 @@
},
"contact_us": "Hubungi Kami",
"support_mue": "Dukung Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Resources yang kami gunakan",
"bg_images": "Offline background images"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Photo Packs",
"quote_packs": "Quote Packs",
"preset_settings": "Preset Settings",
"no_items": "Tidak ada item pada kategori ini",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Ikhtisar",
"information": "Informasi",
"last_updated": "Pembaruan Terakhir",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Versi",
"author": "Kreator",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Tambahkan ke Mue",
"remove": "Hapus",
- "update_addon": "Perbarui Add-on"
+ "update_addon": "Perbarui Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Peringatan",
- "description": "Quote pack ini membutuhkan peladen eksternal yang mungkin melacak Anda!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Sepertinya Anda sedang dalam mode luring",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "Sideload",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +568,35 @@
},
"create": {
"title": "Buat",
+ "example": "Example",
"other_title": "Buat Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Nama",
"icon_url": "URL Ikon",
"screenshot_url": "URL Screenshot",
- "description": "Deskripsi"
+ "description": "Deskripsi",
+ "example": "Download example"
},
"finish": {
"title": "Selesai",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "Selamat datang di Mue Tab",
- "description": "Terima kasih sudah menginstal Mue, kami harap Anda dapat menikmati pengalaman bersama Mue"
+ "description": "Terima kasih sudah menginstal Mue, kami harap Anda dapat menikmati pengalaman bersama Mue",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Pilih bahasa",
@@ -505,6 +659,12 @@
"description": "Mue tersedia dalam tema terang dan gelap, atau kami juga bisa mengaturnya secara otomatis sesuai dengan preferensi sistem Anda.",
"tip": "Pengaturan otomatis akan menyesuaikan dengan tema komputer Anda. Pengaturan ini akan mengubah tampilan modal dan beberapa widget, seperti Cuaca dan Catatan."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Impor Pengaturan",
"description": "Sudah pernah menginstal Mue? Yuk coba impor pengaturan lama kamu tanpa perlu mengatur ulang dari awal!",
@@ -539,6 +699,10 @@
"description": "Kamu dalam mode Pratinjau. Pengaturan akan direset ketika tab ini ditutup.",
"continue": "Lanjutkan setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "Berhasil menghapus",
"updated": "Berhasil diperbarui",
"error": "Terdapat kesalahan",
- "imported": "Berhasil mengimpor"
+ "imported": "Berhasil mengimpor",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/nl.json b/src/translations/nl.json
index fb94565a..d8e12065 100644
--- a/src/translations/nl.json
+++ b/src/translations/nl.json
@@ -15,7 +15,20 @@
"unsplash": "on Unsplash",
"pexels": "on Pexels",
"information": "Information",
- "download": "Download"
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "Zoeken",
"quicklinks": {
@@ -32,7 +45,22 @@
},
"weather": {
"not_found": "Not Found",
- "meters": "{amount} meter"
+ "meters": "{amount} meter",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +69,11 @@
"notes": {
"title": "Notes",
"placeholder": "Type here"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "Foutmelding",
"message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Refresh"
},
"settings": {
"enabled": "Enabled",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "NOTICE",
"message": "In order for all of the changes to take place, the page must be refreshed."
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Tijd",
"format": "Format",
"type": "Type",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Seconden tonen",
"twentyfourhour": "24-uursklok gebruiken",
"twelvehour": "12-uursklok gebruiken",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "Analogue",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Seconds hand",
"minute_hand": "Minutes hand",
"hour_hand": "Hours hand",
"hour_marks": "Hour marks",
"minute_marks": "Minute marks"
},
- "percentage_complete": "Percentage complete"
+ "percentage_complete": "Percentage complete",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Date",
@@ -94,10 +145,13 @@
"datenth": "Date nth",
"type": {
"short": "Short",
- "long": "Long"
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Short date",
"short_format": "Short format",
+ "long_format": "Long format",
"short_separator": {
"title": "Short separator",
"dots": "Dots",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "Citaat",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Author link",
"custom": "Custom quote",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Custom author",
+ "author_img": "Show author image",
"add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Buttons",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Kopieerknop",
"tweet": "Tweetknop",
"favourite": "Knop 'Toevoegen aan favorieten'"
@@ -125,8 +187,10 @@
"default": "Standaard begroetingsnaam",
"name": "Naam van begroeting",
"birthday": "Birthday",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Birthday age",
- "birthday_date": "Birthday date"
+ "birthday_date": "Birthday date",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Achtergrond",
@@ -134,7 +198,7 @@
"transition": "Fade-in transition",
"photo_information": "Show photo information",
"show_map": "Show location map on photo information if available",
- "category": "Category",
+ "categories": "Categories",
"buttons": {
"title": "Buttons",
"view": "Weergave",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "Effects",
+ "subtitle": "Add effects to the background images",
"blur": "Vervaging instellen",
"brightness": "Adjust brightness",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "Source",
+ "subtitle": "Select where to get background images from",
"api": "Achtergrond-api",
"custom_background": "Aangepaste achtergrond",
"custom_colour": "Aangepaste achtergrondkleur",
"upload": "Uploaden",
"add_colour": "Kleur toevoegen",
"add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Add URL",
"disabled": "Uitgeschakeld",
"loop_video": "Loop video",
@@ -181,30 +250,44 @@
"high": "High Quality",
"normal": "Normal Quality",
"datasaver": "Data Saver"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Change every",
+ "subtitle": "Change how often the background is updated",
"minute": "Minute",
"half_hour": "Half hour",
"hour": "Hour",
"day": "Day",
"month": "Month"
- }
+ },
+ "category": "Category"
},
"search": {
"title": "Zoekbalk",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Zoekmachine",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "Aangepaste zoekmachine-url",
"autocomplete": "Autocomplete",
"autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Spraakgestuurd zoeken gebruiken",
- "dropdown": "Search dropdown"
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Weather",
"location": "Location",
"auto": "Auto",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Temperature format",
"celsius": "Celsius",
@@ -223,23 +306,53 @@
"min_temp": "Minimum temperature",
"max_temp": "Maximum temperature",
"atmospheric_pressure": "Atmospheric pressure"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Open in new tab",
"tooltip": "Tooltip",
- "text_only": "Show text only"
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Message",
"add": "Add message",
- "text": "Text"
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Appearance",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Theme",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Auto",
"light": "Light",
"dark": "Dark"
@@ -248,7 +361,9 @@
"title": "Navbar",
"notes": "Notes",
"refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "None",
"page": "Page"
@@ -256,6 +371,7 @@
},
"font": {
"title": "Font",
+ "description": "Change the font used in Mue",
"custom": "Custom font",
"google": "Import from Google Fonts",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "Accessibility",
+ "description": "Accessibility settings for Mue",
"animations": "Animations",
"text_shadow": "Widget text shadow",
"widget_zoom": "Widget zoom",
@@ -291,7 +408,9 @@
"advanced": {
"title": "Advanced",
"offline_mode": "Offline-modus",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "WARNING",
"question": "Do you want to reset Mue?",
@@ -300,10 +419,13 @@
},
"customisation": "Customisation",
"custom_css": "Custom CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "Custom JS",
"tab_name": "Tab name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Automatic"
},
"experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support."
@@ -320,30 +442,9 @@
"settings_changed": "Settings changed",
"addons_installed": "Add-ons installed"
},
- "usage": "Usage Stats"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Experimenteel",
@@ -374,6 +475,8 @@
},
"contact_us": "Contact Us",
"support_mue": "Support Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Resources used",
"bg_images": "Offline background images"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Fotoverzamelingen",
"quote_packs": "Citaatverzamelingen",
"preset_settings": "Voorinstellingen",
"no_items": "No items in this category",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Overzicht",
"information": "Informatie",
"last_updated": "Laatst geüpdatet",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Versie",
"author": "Maker",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Toevoegen aan Mue",
"remove": "Verwijderen",
- "update_addon": "Update Add-on"
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Waarschuwing",
- "description": "Deze citaatverzameling maakt verbinding met externe servers die kunnen worden gebruikt om je te internetverkeer te tracken!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Het lijkt er op dat je niet verbonden bent het internet",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "Sideloaden",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +568,35 @@
},
"create": {
"title": "Create",
+ "example": "Example",
"other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Name",
"icon_url": "Icon URL",
"screenshot_url": "Screenshot URL",
- "description": "Description"
+ "description": "Description",
+ "example": "Download example"
},
"finish": {
"title": "Finish",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "Welcome to Mue Tab",
- "description": "Thank you for installing Mue, we hope you enjoy your time with our extension."
+ "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Choose your language",
@@ -505,6 +659,12 @@
"description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
"tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Import Settings",
"description": "Installing Mue on a new device? Feel free to import your old settings!",
@@ -539,6 +699,10 @@
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
"continue": "Continue setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "Het verwijderen is voltooid",
"updated": "Successfully updated",
"error": "Er is iets misgegaan",
- "imported": "Het importeren is voltooid"
+ "imported": "Het importeren is voltooid",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/no.json b/src/translations/no.json
index fa6c01eb..c6d473db 100644
--- a/src/translations/no.json
+++ b/src/translations/no.json
@@ -15,7 +15,20 @@
"unsplash": "on Unsplash",
"pexels": "on Pexels",
"information": "Information",
- "download": "Download"
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "Søk",
"quicklinks": {
@@ -32,7 +45,22 @@
},
"weather": {
"not_found": "Not Found",
- "meters": "{amount} meter"
+ "meters": "{amount} meter",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +69,11 @@
"notes": {
"title": "Notes",
"placeholder": "Type here"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "Error",
"message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "Refresh"
},
"settings": {
"enabled": "Enabled",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "NOTICE",
"message": "In order for all of the changes to take place, the page must be refreshed."
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "Tid",
"format": "Format",
"type": "Type",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "Digital",
+ "subtitle": "Change how the digital clock looks",
"seconds": "Sekunder",
"twentyfourhour": "24 Timer",
"twelvehour": "12 hour",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "Analogue",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "Seconds hand",
"minute_hand": "Minutes hand",
"hour_hand": "Hours hand",
"hour_marks": "Hour marks",
"minute_marks": "Minute marks"
},
- "percentage_complete": "Percentage complete"
+ "percentage_complete": "Percentage complete",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "Date",
@@ -94,10 +145,13 @@
"datenth": "Date nth",
"type": {
"short": "Short",
- "long": "Long"
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "Short date",
"short_format": "Short format",
+ "long_format": "Long format",
"short_separator": {
"title": "Short separator",
"dots": "Dots",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "Sitat",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "Author link",
"custom": "Custom quote",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "Custom author",
+ "author_img": "Show author image",
"add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "Buttons",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "Kopier knapp",
"tweet": "Tweet",
"favourite": "Favourite"
@@ -125,8 +187,10 @@
"default": "Standard Hallo Melding",
"name": "Navn for Hallo",
"birthday": "Birthday",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "Birthday age",
- "birthday_date": "Birthday date"
+ "birthday_date": "Birthday date",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "Bakgrunn",
@@ -134,7 +198,7 @@
"transition": "Fade-in transition",
"photo_information": "Show photo information",
"show_map": "Show location map on photo information if available",
- "category": "Category",
+ "categories": "Categories",
"buttons": {
"title": "Buttons",
"view": "Maximise",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "Effects",
+ "subtitle": "Add effects to the background images",
"blur": "Juster Blur",
"brightness": "Adjust brightness",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "Source",
+ "subtitle": "Select where to get background images from",
"api": "Bakgrunn API",
"custom_background": "Personlig bakgrunn",
"custom_colour": "Personlig Bakgrunn Farge",
"upload": "Upload",
"add_colour": "Legg til farge",
"add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Add URL",
"disabled": "Disabled",
"loop_video": "Loop video",
@@ -181,30 +250,44 @@
"high": "High Quality",
"normal": "Normal Quality",
"datasaver": "Data Saver"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "Change every",
+ "subtitle": "Change how often the background is updated",
"minute": "Minute",
"half_hour": "Half hour",
"hour": "Hour",
"day": "Day",
"month": "Month"
- }
+ },
+ "category": "Category"
},
"search": {
"title": "Søkebar",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "Søkemotor",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "Custom search URL",
"autocomplete": "Autocomplete",
"autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "Voice search",
- "dropdown": "Search dropdown"
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "Weather",
"location": "Location",
"auto": "Auto",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "Temperature format",
"celsius": "Celsius",
@@ -223,23 +306,53 @@
"min_temp": "Minimum temperature",
"max_temp": "Maximum temperature",
"atmospheric_pressure": "Atmospheric pressure"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "Open in new tab",
"tooltip": "Tooltip",
- "text_only": "Show text only"
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "Message",
"add": "Add message",
- "text": "Text"
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "Appearance",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "Theme",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "Auto",
"light": "Light",
"dark": "Dark"
@@ -248,7 +361,9 @@
"title": "Navbar",
"notes": "Notes",
"refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "None",
"page": "Page"
@@ -256,6 +371,7 @@
},
"font": {
"title": "Font",
+ "description": "Change the font used in Mue",
"custom": "Custom font",
"google": "Import from Google Fonts",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "Accessibility",
+ "description": "Accessibility settings for Mue",
"animations": "Animasjoner",
"text_shadow": "Widget text shadow",
"widget_zoom": "Widget zoom",
@@ -291,7 +408,9 @@
"advanced": {
"title": "Advanced",
"offline_mode": "Frakoblet Modus",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "WARNING",
"question": "Do you want to reset Mue?",
@@ -300,10 +419,13 @@
},
"customisation": "Customisation",
"custom_css": "Custom CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "Custom JS",
"tab_name": "Tab name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "Automatic"
},
"experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support."
@@ -320,30 +442,9 @@
"settings_changed": "Settings changed",
"addons_installed": "Add-ons installed"
},
- "usage": "Usage Stats"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "Eksperimental",
@@ -374,6 +475,8 @@
},
"contact_us": "Contact Us",
"support_mue": "Support Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "Resources used",
"bg_images": "Offline background images"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "Bilde pakker",
"quote_packs": "Sitat pakker",
"preset_settings": "Preset instillinger",
"no_items": "No items in this category",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "Oversikt",
"information": "Informasjon",
"last_updated": "Sist oppdatert",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "Versjon",
"author": "Forfatter",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "Legg Til Mue",
"remove": "Fjern",
- "update_addon": "Update Add-on"
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "Warning",
- "description": "This quote pack requests to external servers that may track you!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "Ser ut som at du er offiline",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "Sideload",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +568,35 @@
},
"create": {
"title": "Create",
+ "example": "Example",
"other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "Name",
"icon_url": "Icon URL",
"screenshot_url": "Screenshot URL",
- "description": "Description"
+ "description": "Description",
+ "example": "Download example"
},
"finish": {
"title": "Finish",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "Welcome to Mue Tab",
- "description": "Thank you for installing Mue, we hope you enjoy your time with our extension."
+ "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "Choose your language",
@@ -505,6 +659,12 @@
"description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
"tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "Import Settings",
"description": "Installing Mue on a new device? Feel free to import your old settings!",
@@ -539,6 +699,10 @@
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
"continue": "Continue setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "Fjernet",
"updated": "Successfully updated",
"error": "Noe gikk galt",
- "imported": "Successfully imported"
+ "imported": "Successfully imported",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/ru.json b/src/translations/ru.json
index 8e89327d..3f5b14d4 100644
--- a/src/translations/ru.json
+++ b/src/translations/ru.json
@@ -1,554 +1,721 @@
{
+ "tabname": "New Tab",
+ "widgets": {
+ "greeting": {
+ "morning": "Доброе утро",
+ "afternoon": "Добрый день",
+ "evening": "Добрый вечер",
+ "christmas": "С Рождеством",
+ "newyear": "С Новым Годом",
+ "halloween": "Счастливого Хэллоуина",
+ "birthday": "Happy Birthday"
+ },
+ "background": {
+ "credit": "Фото",
+ "unsplash": "on Unsplash",
+ "pexels": "on Pexels",
+ "information": "Information",
+ "download": "Download",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
+ },
+ "search": "Поиск",
+ "quicklinks": {
+ "new": "New Link",
+ "name": "Name",
+ "url": "URL",
+ "icon": "Icon (optional)",
+ "add": "Add",
+ "name_error": "Must provide name",
+ "url_error": "Must provide URL"
+ },
+ "date": {
+ "week": "Week"
+ },
+ "weather": {
+ "not_found": "Not Found",
+ "meters": "{amount} метры",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Refresh"
+ },
+ "notes": {
+ "title": "Notes",
+ "placeholder": "Type here"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
+ }
+ }
+ },
"modals": {
"main": {
+ "title": "Options",
+ "loading": "Загрузка...",
+ "file_upload_error": "File is over 2MB",
+ "navbar": {
+ "settings": "Settings",
+ "addons": "My Add-ons",
+ "marketplace": "Marketplace"
+ },
+ "error_boundary": {
+ "title": "Ошибка",
+ "message": "Failed to load this component of Mue",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
+ "refresh": "Обновить"
+ },
+ "settings": {
+ "enabled": "Enabled",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
+ "reminder": {
+ "title": "NOTICE",
+ "message": "In order for all of the changes to take place, the page must be refreshed."
+ },
+ "sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
+ "time": {
+ "title": "Время",
+ "format": "Format",
+ "type": "Type",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
+ "digital": {
+ "title": "Digital",
+ "subtitle": "Change how the digital clock looks",
+ "seconds": "Секунды",
+ "twentyfourhour": "24 Часа",
+ "twelvehour": "12 часов",
+ "zero": "Дополнительный ноль"
+ },
+ "analogue": {
+ "title": "Analogue",
+ "subtitle": "Change how the analogue clock looks",
+ "second_hand": "Seconds hand",
+ "minute_hand": "Minutes hand",
+ "hour_hand": "Hours hand",
+ "hour_marks": "Hour marks",
+ "minute_marks": "Minute marks"
+ },
+ "percentage_complete": "Percentage complete",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
+ },
+ "date": {
+ "title": "Date",
+ "week_number": "Week number",
+ "day_of_week": "Day of week",
+ "datenth": "Date nth",
+ "type": {
+ "short": "Short",
+ "long": "Long",
+ "subtitle": "Whether to display the date in long form or short form"
+ },
+ "type_settings": "Display settings and format for the selected date type",
+ "short_date": "Short date",
+ "short_format": "Short format",
+ "long_format": "Long format",
+ "short_separator": {
+ "title": "Short separator",
+ "dots": "Dots",
+ "dash": "Dash",
+ "gaps": "Gaps",
+ "slashes": "Slashes"
+ }
+ },
+ "quote": {
+ "title": "Цитата",
+ "additional": "Other settings to customise the style of the quote widget",
+ "author_link": "Author link",
+ "custom": "Custom quote",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
+ "custom_author": "Custom author",
+ "author_img": "Show author image",
+ "add": "Add quote",
+ "source_subtitle": "Choose where to get quotes from",
+ "buttons": {
+ "title": "Buttons",
+ "subtitle": "Choose which buttons to show on the quote",
+ "copy": "Кнопка копирования",
+ "tweet": "Кнопка твита",
+ "favourite": "Кнопка для оценки"
+ }
+ },
+ "greeting": {
+ "title": "Приветствие",
+ "events": "События",
+ "default": "Сообщение с приветствием по-умолчанию",
+ "name": "Имя для приветствия",
+ "birthday": "Birthday",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
+ "birthday_age": "Birthday age",
+ "birthday_date": "Birthday date",
+ "additional": "Settings for the greeting display"
+ },
+ "background": {
+ "title": "Фон",
+ "ddg_image_proxy": "Use DuckDuckGo image proxy",
+ "transition": "Fade-in transition",
+ "photo_information": "Show photo information",
+ "show_map": "Show location map on photo information if available",
+ "categories": "Categories",
+ "buttons": {
+ "title": "Buttons",
+ "view": "Просмотр",
+ "favourite": "Любимые",
+ "download": "Download"
+ },
+ "effects": {
+ "title": "Effects",
+ "subtitle": "Add effects to the background images",
+ "blur": "Размытие",
+ "brightness": "Яркость",
+ "filters": {
+ "title": "Background filter",
+ "amount": "Filter amount",
+ "grayscale": "Grayscale",
+ "sepia": "Sepia",
+ "invert": "Invert",
+ "saturate": "Saturate",
+ "contrast": "Contrast"
+ }
+ },
+ "type": {
+ "title": "Type",
+ "api": "API",
+ "custom_image": "Custom image",
+ "custom_colour": "Custom colour/gradient",
+ "random_colour": "Random colour",
+ "random_gradient": "Random gradient"
+ },
+ "source": {
+ "title": "Source",
+ "subtitle": "Select where to get background images from",
+ "api": "API для фона",
+ "custom_background": "Пользовательский фон",
+ "custom_colour": "Пользовательский цвет фон",
+ "upload": "Загрузить",
+ "add_colour": "Добавить цвет",
+ "add_background": "Add background",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
+ "add_url": "Add URL",
+ "disabled": "Выключен",
+ "loop_video": "Loop video",
+ "mute_video": "Mute video",
+ "quality": {
+ "title": "Quality",
+ "original": "Original",
+ "high": "High Quality",
+ "normal": "Normal Quality",
+ "datasaver": "Data Saver"
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
+ },
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
+ "interval": {
+ "title": "Change every",
+ "subtitle": "Change how often the background is updated",
+ "minute": "Minute",
+ "half_hour": "Half hour",
+ "hour": "Hour",
+ "day": "Day",
+ "month": "Month"
+ },
+ "category": "Category"
+ },
+ "search": {
+ "title": "Панель поиска",
+ "additional": "Additional options for search widget display and functionality",
+ "search_engine": "Поисковый движок",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
+ "custom": "Пользовательский поисковый движок",
+ "autocomplete": "Autocomplete",
+ "autocomplete_provider": "Autocomplete Provider",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
+ "voice_search": "Поиск голосом",
+ "dropdown": "Search dropdown",
+ "focus": "Focus on tab open"
+ },
+ "weather": {
+ "title": "Weather",
+ "location": "Location",
+ "auto": "Auto",
+ "widget_type": "Widget Type",
+ "temp_format": {
+ "title": "Temperature format",
+ "celsius": "Celsius",
+ "fahrenheit": "Fahrenheit",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Extra information",
+ "show_location": "Show location",
+ "show_description": "Show description",
+ "cloudiness": "Cloudiness",
+ "humidity": "Humidity",
+ "visibility": "Visibility",
+ "wind_speed": "Wind speed",
+ "wind_direction": "Wind direction",
+ "min_temp": "Minimum temperature",
+ "max_temp": "Maximum temperature",
+ "atmospheric_pressure": "Atmospheric pressure"
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
+ },
+ "quicklinks": {
+ "title": "Quick Links",
+ "additional": "Additional settings for quick links display and functions",
+ "open_new": "Open in new tab",
+ "tooltip": "Tooltip",
+ "text_only": "Show text only",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
+ },
+ "message": {
+ "title": "Message",
+ "add": "Add message",
+ "messages": "Messages",
+ "text": "Text",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
+ },
+ "appearance": {
+ "title": "Appearance",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
+ "theme": {
+ "title": "Theme",
+ "description": "Change the theme of the Mue widgets and modals",
+ "auto": "Auto",
+ "light": "Light",
+ "dark": "Dark"
+ },
+ "navbar": {
+ "title": "Navbar",
+ "notes": "Notes",
+ "refresh": "Refresh button",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
+ "hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
+ "refresh_options": {
+ "none": "None",
+ "page": "Page"
+ }
+ },
+ "font": {
+ "title": "Font",
+ "description": "Change the font used in Mue",
+ "custom": "Custom font",
+ "google": "Import from Google Fonts",
+ "weight": {
+ "title": "Font weight",
+ "thin": "Thin",
+ "extra_light": "Extra Light",
+ "light": "Light",
+ "normal": "Normal",
+ "medium": "Medium",
+ "semi_bold": "Semi-Bold",
+ "bold": "Bold",
+ "extra_bold": "Extra-Bold"
+ },
+ "style": {
+ "title": "Font style",
+ "normal": "Normal",
+ "italic": "Italic",
+ "oblique": "Oblique"
+ }
+ },
+ "accessibility": {
+ "title": "Accessibility",
+ "description": "Accessibility settings for Mue",
+ "animations": "Анимации",
+ "text_shadow": "Widget text shadow",
+ "widget_zoom": "Widget zoom",
+ "toast_duration": "Toast duration",
+ "milliseconds": "milliseconds"
+ }
+ },
+ "order": {
+ "title": "Widget Order"
+ },
+ "advanced": {
+ "title": "Advanced",
+ "offline_mode": "Офлайн режим",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
+ "data": "Data",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
+ "reset_modal": {
+ "title": "WARNING",
+ "question": "Do you want to reset Mue?",
+ "information": "This will delete all data. If you wish to keep your data and preferences, please export them first.",
+ "cancel": "Cancel"
+ },
+ "customisation": "Customisation",
+ "custom_css": "Custom CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
+ "custom_js": "Custom JS",
+ "tab_name": "Tab name",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
+ "timezone": {
+ "title": "Time Zone",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
+ "automatic": "Automatic"
+ },
+ "experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support."
+ },
+ "stats": {
+ "title": "Stats",
+ "warning": "You need to enable usage data in order to use this feature. This data is only stored locally.",
+ "sections": {
+ "tabs_opened": "Tabs opened",
+ "backgrounds_favourited": "Backgrounds favourited",
+ "backgrounds_downloaded": "Backgrounds downloaded",
+ "quotes_favourited": "Quotes favourited",
+ "quicklinks_added": "Quicklinks added",
+ "settings_changed": "Settings changed",
+ "addons_installed": "Add-ons installed"
+ },
+ "usage": "Usage Stats",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
+ },
+ "experimental": {
+ "title": "Экспериментальные настройки",
+ "warning": "These settings have not been fully tested/implemented and may not work correctly!",
+ "developer": "Developer"
+ },
+ "language": {
+ "title": "Язык",
+ "quote": "Quote language"
+ },
+ "changelog": {
+ "title": "Change Log",
+ "by": "By {author}"
+ },
+ "about": {
+ "title": "About",
+ "copyright": "Copyright",
+ "version": {
+ "title": "Version",
+ "checking_update": "Checking for update",
+ "update_available": "Update available",
+ "no_update": "No update available",
+ "offline_mode": "Cannot check for update in offline mode",
+ "error": {
+ "title": "Failed to get update information",
+ "description": "An error occured"
+ }
+ },
+ "contact_us": "Contact Us",
+ "support_mue": "Support Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
+ "resources_used": {
+ "title": "Resources used",
+ "bg_images": "Offline background images"
+ },
+ "contributors": "Contributors",
+ "supporters": "Supporters",
+ "no_supporters": "There are currently no Mue supporters",
+ "photographers": "Photographers"
+ }
+ },
+ "buttons": {
+ "reset": "Сбросить",
+ "import": "Импорт",
+ "export": "Экспорт"
+ }
+ },
+ "marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
+ "photo_packs": "Наборы фото",
+ "quote_packs": "Наборы цитат",
+ "preset_settings": "Пресеты настроек",
+ "no_items": "No items in this category",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
+ "product": {
+ "overview": "Обзор",
+ "information": "Информация",
+ "last_updated": "Последнее обновление",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
+ "version": "Версия",
+ "author": "Автор",
+ "part_of": "Part of",
+ "explore": "Explore",
+ "buttons": {
+ "addtomue": "Добавить в Mue",
+ "remove": "Удалить",
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
+ },
+ "setting": "Setting",
+ "value": "Value"
+ },
+ "offline": {
+ "title": "Похоже, что вы офлайн",
+ "description": "Пожалуйста, подключитесь к интернету"
+ }
+ },
"addons": {
"added": "Добавлен",
"check_updates": "Check for updates",
+ "no_updates": "No updates available",
+ "updates_available": "Updates available {amount}",
+ "empty": {
+ "title": "Здесь пусто",
+ "description": "Зайдите в магазин, чтобы найти что-то интересное"
+ },
+ "sideload": {
+ "title": "Загрузить",
+ "description": "Install a Mue addon not on the marketplace from your computer",
+ "failed": "Failed to sideload addon",
+ "errors": {
+ "no_name": "No name provided",
+ "no_author": "No author provided",
+ "no_type": "No type provided",
+ "invalid_photos": "Invalid photos object",
+ "invalid_quotes": "Invalid quotes object"
+ }
+ },
+ "sort": {
+ "title": "Sort",
+ "newest": "Installed (Newest)",
+ "oldest": "Installed (Oldest)",
+ "a_z": "Alphabetical (A-Z)",
+ "z_a": "Alphabetical (Z-A)"
+ },
"create": {
- "finish": {
- "download": "Download Add-on",
- "title": "Finish"
+ "title": "Create",
+ "example": "Example",
+ "other_title": "Create Add-on",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
},
"metadata": {
- "description": "Description",
- "icon_url": "Icon URL",
"name": "Name",
- "screenshot_url": "Screenshot URL"
+ "icon_url": "Icon URL",
+ "screenshot_url": "Screenshot URL",
+ "description": "Description",
+ "example": "Download example"
},
- "other_title": "Create Add-on",
- "photos": {
- "title": "Add Photos"
- },
- "quotes": {
- "api": {
- "author": "JSON quote author (or override)",
- "name": "JSON quote name",
- "title": "API",
- "url": "Quote URL"
- },
- "local": {
- "title": "Local"
- },
- "title": "Add Quotes"
+ "finish": {
+ "title": "Finish",
+ "download": "Download Add-on"
},
"settings": {
"current": "Import current setup",
"json": "Upload JSON"
},
- "title": "Create"
- },
- "empty": {
- "description": "Зайдите в магазин, чтобы найти что-то интересное",
- "title": "Здесь пусто"
- },
- "no_updates": "No updates available",
- "sideload": {
- "errors": {
- "invalid_photos": "Invalid photos object",
- "invalid_quotes": "Invalid quotes object",
- "no_author": "No author provided",
- "no_name": "No name provided",
- "no_type": "No type provided"
+ "photos": {
+ "title": "Add Photos"
},
- "failed": "Failed to sideload addon",
- "title": "Загрузить"
- },
- "sort": {
- "a_z": "Alphabetical (A-Z)",
- "newest": "Installed (Newest)",
- "oldest": "Installed (Oldest)",
- "title": "Sort",
- "z_a": "Alphabetical (Z-A)"
- },
- "updates_available": "Updates available {amount}"
- },
- "error_boundary": {
- "message": "Failed to load this component of Mue",
- "refresh": "Обновить",
- "title": "Ошибка"
- },
- "file_upload_error": "File is over 2MB",
- "loading": "Загрузка...",
- "marketplace": {
- "no_items": "No items in this category",
- "offline": {
- "description": "Пожалуйста, подключитесь к интернету",
- "title": "Похоже, что вы офлайн"
- },
- "photo_packs": "Наборы фото",
- "preset_settings": "Пресеты настроек",
- "product": {
- "author": "Автор",
- "buttons": {
- "addtomue": "Добавить в Mue",
- "remove": "Удалить",
- "update_addon": "Update Add-on"
- },
- "information": "Информация",
- "last_updated": "Последнее обновление",
- "overview": "Обзор",
- "quote_warning": {
- "description": "Этот пакет цитат обращается к внешнему серверу и может отслеживать вас!",
- "title": "Предупреждение"
- },
- "version": "Версия"
- },
- "quote_packs": "Наборы цитат"
- },
- "navbar": {
- "addons": "My Add-ons",
- "marketplace": "Marketplace",
- "settings": "Settings"
- },
- "settings": {
- "buttons": {
- "export": "Экспорт",
- "import": "Импорт",
- "reset": "Сбросить"
- },
- "enabled": "Enabled",
- "reminder": {
- "message": "In order for all of the changes to take place, the page must be refreshed.",
- "title": "NOTICE"
- },
- "sections": {
- "about": {
- "contact_us": "Contact Us",
- "contributors": "Contributors",
- "copyright": "Copyright",
- "no_supporters": "There are currently no Mue supporters",
- "photographers": "Photographers",
- "resources_used": {
- "bg_images": "Offline background images",
- "title": "Resources used"
+ "quotes": {
+ "title": "Add Quotes",
+ "api": {
+ "title": "API",
+ "url": "Quote URL",
+ "name": "JSON quote name",
+ "author": "JSON quote author (or override)"
},
- "support_mue": "Support Mue",
- "supporters": "Supporters",
- "title": "About",
- "version": {
- "checking_update": "Checking for update",
- "error": {
- "description": "An error occured",
- "title": "Failed to get update information"
- },
- "no_update": "No update available",
- "offline_mode": "Cannot check for update in offline mode",
- "title": "Version",
- "update_available": "Update available"
+ "local": {
+ "title": "Local"
}
- },
- "advanced": {
- "custom_css": "Custom CSS",
- "custom_js": "Custom JS",
- "customisation": "Customisation",
- "data": "Data",
- "experimental_warning": "Please note that the Mue team cannot provide support if you have experimental mode on. Please disable it first and see if the issue continues to occur before contacting support.",
- "offline_mode": "Офлайн режим",
- "reset_modal": {
- "cancel": "Cancel",
- "information": "This will delete all data. If you wish to keep your data and preferences, please export them first.",
- "question": "Do you want to reset Mue?",
- "title": "WARNING"
- },
- "tab_name": "Tab name",
- "timezone": {
- "automatic": "Automatic",
- "title": "Time Zone"
- },
- "title": "Advanced"
- },
- "appearance": {
- "accessibility": {
- "animations": "Анимации",
- "milliseconds": "milliseconds",
- "text_shadow": "Widget text shadow",
- "title": "Accessibility",
- "toast_duration": "Toast duration",
- "widget_zoom": "Widget zoom"
- },
- "font": {
- "custom": "Custom font",
- "google": "Import from Google Fonts",
- "style": {
- "italic": "Italic",
- "normal": "Normal",
- "oblique": "Oblique",
- "title": "Font style"
- },
- "title": "Font",
- "weight": {
- "bold": "Bold",
- "extra_bold": "Extra-Bold",
- "extra_light": "Extra Light",
- "light": "Light",
- "medium": "Medium",
- "normal": "Normal",
- "semi_bold": "Semi-Bold",
- "thin": "Thin",
- "title": "Font weight"
- }
- },
- "navbar": {
- "hover": "Only display on hover",
- "notes": "Notes",
- "refresh": "Refresh button",
- "refresh_options": {
- "none": "None",
- "page": "Page"
- },
- "title": "Navbar"
- },
- "theme": {
- "auto": "Auto",
- "dark": "Dark",
- "light": "Light",
- "title": "Theme"
- },
- "title": "Appearance"
- },
- "background": {
- "buttons": {
- "download": "Download",
- "favourite": "Любимые",
- "title": "Buttons",
- "view": "Просмотр"
- },
- "category": "Category",
- "ddg_image_proxy": "Use DuckDuckGo image proxy",
- "effects": {
- "blur": "Размытие",
- "brightness": "Яркость",
- "filters": {
- "amount": "Filter amount",
- "contrast": "Contrast",
- "grayscale": "Grayscale",
- "invert": "Invert",
- "saturate": "Saturate",
- "sepia": "Sepia",
- "title": "Background filter"
- },
- "title": "Effects"
- },
- "interval": {
- "day": "Day",
- "half_hour": "Half hour",
- "hour": "Hour",
- "minute": "Minute",
- "month": "Month",
- "title": "Change every"
- },
- "photo_information": "Show photo information",
- "show_map": "Show location map on photo information if available",
- "source": {
- "add_background": "Add background",
- "add_colour": "Добавить цвет",
- "add_url": "Add URL",
- "api": "API для фона",
- "custom_background": "Пользовательский фон",
- "custom_colour": "Пользовательский цвет фон",
- "disabled": "Выключен",
- "loop_video": "Loop video",
- "mute_video": "Mute video",
- "quality": {
- "datasaver": "Data Saver",
- "high": "High Quality",
- "normal": "Normal Quality",
- "original": "Original",
- "title": "Quality"
- },
- "title": "Source",
- "upload": "Загрузить"
- },
- "title": "Фон",
- "transition": "Fade-in transition",
- "type": {
- "api": "API",
- "custom_colour": "Custom colour/gradient",
- "custom_image": "Custom image",
- "random_colour": "Random colour",
- "random_gradient": "Random gradient",
- "title": "Type"
- }
- },
- "changelog": {
- "by": "By {author}",
- "title": "Change Log"
- },
- "date": {
- "datenth": "Date nth",
- "day_of_week": "Day of week",
- "short_date": "Short date",
- "short_format": "Short format",
- "short_separator": {
- "dash": "Dash",
- "dots": "Dots",
- "gaps": "Gaps",
- "slashes": "Slashes",
- "title": "Short separator"
- },
- "title": "Date",
- "type": {
- "long": "Long",
- "short": "Short"
- },
- "week_number": "Week number"
- },
- "experimental": {
- "developer": "Developer",
- "title": "Экспериментальные настройки",
- "warning": "These settings have not been fully tested/implemented and may not work correctly!"
- },
- "greeting": {
- "birthday": "Birthday",
- "birthday_age": "Birthday age",
- "birthday_date": "Birthday date",
- "default": "Сообщение с приветствием по-умолчанию",
- "events": "События",
- "name": "Имя для приветствия",
- "title": "Приветствие"
- },
- "keybinds": {
- "background": {
- "download": "Download background",
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "show_info": "Show background information"
- },
- "click_to_record": "Click to record",
- "modal": "Toggle modal",
- "notes": {
- "copy": "Copy notes",
- "pin": "Pin notes"
- },
- "quicklinks": "Toggle add quick link",
- "quote": {
- "copy": "Copy quote",
- "favourite": "Favourite quote",
- "tweet": "Tweet quote"
- },
- "recording": "Recording...",
- "search": "Focus search",
- "title": "Keybinds"
- },
- "language": {
- "quote": "Quote language",
- "title": "Язык"
- },
- "message": {
- "add": "Add message",
- "text": "Text",
- "title": "Message"
- },
- "order": {
- "title": "Widget Order"
- },
- "quicklinks": {
- "open_new": "Open in new tab",
- "text_only": "Show text only",
- "title": "Quick Links",
- "tooltip": "Tooltip"
- },
- "quote": {
- "add": "Add quote",
- "author_link": "Author link",
- "buttons": {
- "copy": "Кнопка копирования",
- "favourite": "Кнопка для оценки",
- "title": "Buttons",
- "tweet": "Кнопка твита"
- },
- "custom": "Custom quote",
- "custom_author": "Custom author",
- "title": "Цитата"
- },
- "search": {
- "autocomplete": "Autocomplete",
- "autocomplete_provider": "Autocomplete Provider",
- "custom": "Пользовательский поисковый движок",
- "dropdown": "Search dropdown",
- "search_engine": "Поисковый движок",
- "title": "Панель поиска",
- "voice_search": "Поиск голосом"
- },
- "stats": {
- "sections": {
- "addons_installed": "Add-ons installed",
- "backgrounds_downloaded": "Backgrounds downloaded",
- "backgrounds_favourited": "Backgrounds favourited",
- "quicklinks_added": "Quicklinks added",
- "quotes_favourited": "Quotes favourited",
- "settings_changed": "Settings changed",
- "tabs_opened": "Tabs opened"
- },
- "title": "Stats",
- "usage": "Usage Stats",
- "warning": "You need to enable usage data in order to use this feature. This data is only stored locally."
- },
- "time": {
- "analogue": {
- "hour_hand": "Hours hand",
- "hour_marks": "Hour marks",
- "minute_hand": "Minutes hand",
- "minute_marks": "Minute marks",
- "second_hand": "Seconds hand",
- "title": "Analogue"
- },
- "digital": {
- "seconds": "Секунды",
- "title": "Digital",
- "twelvehour": "12 часов",
- "twentyfourhour": "24 Часа",
- "zero": "Дополнительный ноль"
- },
- "format": "Format",
- "percentage_complete": "Percentage complete",
- "title": "Время",
- "type": "Type"
- },
- "weather": {
- "auto": "Auto",
- "extra_info": {
- "atmospheric_pressure": "Atmospheric pressure",
- "cloudiness": "Cloudiness",
- "humidity": "Humidity",
- "max_temp": "Maximum temperature",
- "min_temp": "Minimum temperature",
- "show_description": "Show description",
- "show_location": "Show location",
- "title": "Extra information",
- "visibility": "Visibility",
- "wind_direction": "Wind direction",
- "wind_speed": "Wind speed"
- },
- "location": "Location",
- "temp_format": {
- "celsius": "Celsius",
- "fahrenheit": "Fahrenheit",
- "kelvin": "Kelvin",
- "title": "Temperature format"
- },
- "title": "Weather"
}
}
- },
- "title": "Options"
- },
- "update": {
- "error": {
- "description": "Could not connect to the server",
- "title": "Ошибка"
- },
- "offline": {
- "description": "Не удалось получить журнал обновления в офлайн режиме",
- "title": "Офлайн"
- },
- "title": "Обновление"
- },
- "welcome": {
- "buttons": {
- "close": "Close",
- "next": "Next",
- "preview": "Preview",
- "previous": "Previous"
- },
- "preview": {
- "continue": "Continue setup",
- "description": "You are currently in preview mode. Settings will be reset on closing this tab."
- },
- "sections": {
- "final": {
- "changes": "Changes",
- "changes_description": "To change settings later click on the settings icon in the top right corner of your tab.",
- "description": "Your Mue Tab experience is about to begin.",
- "imported": "Imported {amount} settings",
- "title": "Final step"
- },
- "intro": {
- "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
- "title": "Welcome to Mue Tab"
- },
- "language": {
- "description": "Mue can be displayed the languages listed below. You can also add new translations on our",
- "title": "Choose your language"
- },
- "privacy": {
- "ddg_proxy_description": "You can make image requests go through DuckDuckGo if you wish. By default, API requests go through our open source servers and image requests go through the original server. Turning this off for quick links will get the icons from Google instead of DuckDuckGo. DuckDuckGo proxy is always enabled for the Marketplace.",
- "description": "Enable settings to further protect your privacy with Mue.",
- "links": {
- "privacy_policy": "Privacy Policy",
- "source_code": "Source Code",
- "title": "Links"
- },
- "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.",
- "title": "Privacy Options"
- },
- "settings": {
- "description": "Installing Mue on a new device? Feel free to import your old settings!",
- "tip": "You can export your old settings by navigating to the Advanced tab in your old Mue setup. Then you need to click the export button which will download the JSON file. You can upload this file here to carry across your settings and preferences from your previous Mue installation.",
- "title": "Import Settings"
- },
- "theme": {
- "description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
- "tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes.",
- "title": "Select a theme"
- }
- },
- "tip": "Quick Tip"
- }
- },
- "tabname": "New Tab",
- "toasts": {
- "error": "Что-то пошло не так",
- "imported": "Успешно импортировано",
- "installed": "Успешно установлено",
- "notes": "Notes copied",
- "quote": "Цитата скопирована",
- "reset": "Сброшено",
- "uninstalled": "Успешно удалено",
- "updated": "Successfully updated"
- },
- "widgets": {
- "background": {
- "credit": "Фото",
- "download": "Download",
- "information": "Information",
- "pexels": "on Pexels",
- "unsplash": "on Unsplash"
- },
- "date": {
- "week": "Week"
- },
- "greeting": {
- "afternoon": "Добрый день",
- "birthday": "Happy Birthday",
- "christmas": "С Рождеством",
- "evening": "Добрый вечер",
- "halloween": "Счастливого Хэллоуина",
- "morning": "Доброе утро",
- "newyear": "С Новым Годом"
- },
- "navbar": {
- "notes": {
- "placeholder": "Type here",
- "title": "Notes"
- },
- "tooltips": {
- "refresh": "Refresh"
}
},
- "quicklinks": {
- "add": "Add",
- "icon": "Icon (optional)",
- "name": "Name",
- "name_error": "Must provide name",
- "new": "New Link",
- "url": "URL",
- "url_error": "Must provide URL"
+ "update": {
+ "title": "Обновление",
+ "offline": {
+ "title": "Офлайн",
+ "description": "Не удалось получить журнал обновления в офлайн режиме"
+ },
+ "error": {
+ "title": "Ошибка",
+ "description": "Could not connect to the server",
+ "content": "Не удалось подключиться к серверу"
+ }
},
- "search": "Поиск",
- "weather": {
- "meters": "{amount} метры",
- "not_found": "Not Found"
+ "welcome": {
+ "tip": "Quick Tip",
+ "sections": {
+ "intro": {
+ "title": "Welcome to Mue Tab",
+ "description": "Thank you for installing Mue, we hope you enjoy your time with our extension.",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
+ },
+ "language": {
+ "title": "Choose your language",
+ "description": "Mue can be displayed the languages listed below. You can also add new translations on our"
+ },
+ "theme": {
+ "title": "Select a theme",
+ "description": "Mue is available in both light and dark theme, or this can be automatically set depending on your system theme.",
+ "tip": "Using the Auto settings will use the theme on your computer. This setting will impact the modals and some of the widgets displayed on the screen, such as weather and notes."
+ },
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
+ "settings": {
+ "title": "Import Settings",
+ "description": "Installing Mue on a new device? Feel free to import your old settings!",
+ "tip": "You can export your old settings by navigating to the Advanced tab in your old Mue setup. Then you need to click the export button which will download the JSON file. You can upload this file here to carry across your settings and preferences from your previous Mue installation."
+ },
+ "privacy": {
+ "title": "Privacy Options",
+ "description": "Enable settings to further protect your privacy with Mue.",
+ "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.",
+ "ddg_proxy_description": "You can make image requests go through DuckDuckGo if you wish. By default, API requests go through our open source servers and image requests go through the original server. Turning this off for quick links will get the icons from Google instead of DuckDuckGo. DuckDuckGo proxy is always enabled for the Marketplace.",
+ "links": {
+ "title": "Links",
+ "privacy_policy": "Privacy Policy",
+ "source_code": "Source Code"
+ }
+ },
+ "final": {
+ "title": "Final step",
+ "description": "Your Mue Tab experience is about to begin.",
+ "changes": "Changes",
+ "changes_description": "To change settings later click on the settings icon in the top right corner of your tab.",
+ "imported": "Imported {amount} settings"
+ }
+ },
+ "buttons": {
+ "next": "Next",
+ "preview": "Preview",
+ "previous": "Previous",
+ "close": "Close"
+ },
+ "preview": {
+ "description": "You are currently in preview mode. Settings will be reset on closing this tab.",
+ "continue": "Continue setup"
+ }
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
+ },
+ "toasts": {
+ "quote": "Цитата скопирована",
+ "notes": "Notes copied",
+ "reset": "Сброшено",
+ "installed": "Успешно установлено",
+ "uninstalled": "Успешно удалено",
+ "updated": "Successfully updated",
+ "error": "Что-то пошло не так",
+ "imported": "Успешно импортировано",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/src/translations/tr_TR.json b/src/translations/tr_TR.json
index 5a3d14de..e87bfd43 100644
--- a/src/translations/tr_TR.json
+++ b/src/translations/tr_TR.json
@@ -1,554 +1,713 @@
{
- "tabname": "Yeni Sekme",
- "widgets": {
- "greeting": {
- "morning": "Günaydın",
- "afternoon": "Tünaydın",
- "evening": "İyi akşamlar",
- "christmas": "Mutlu Noeller",
- "newyear": "Yeni Yılın Kutlu Olsun",
- "halloween": "Cadılar Bayramın kutlu olsun",
- "birthday": "Doğum günün kutlu olsun"
- },
- "background": {
- "credit": "Fotoğrafı çeken",
- "unsplash": "Unsplash",
- "pexels": "Pexels",
- "information": "Bilgi",
- "download": "İndir"
- },
- "search": "Ara",
- "quicklinks": {
- "new": "Yeni Link",
- "name": "İsim",
- "url": "URL",
- "icon": "İkon (opsiyonel)",
- "add": "Ekle",
- "name_error": "Bir isim eklemelisiniz",
- "url_error": "Bir URL eklemelisiniz"
- },
- "date": {
- "week": "Hafta"
- },
- "weather": {
- "not_found": "Bulunamadı",
- "meters": "{amount} metre"
- },
- "navbar": {
- "tooltips": {
- "refresh": "Sayfayı Yenile"
- },
- "notes": {
- "title": "Notlar",
- "placeholder": "Buraya yazın"
- }
- }
+ "tabname": "Yeni Sekme",
+ "widgets": {
+ "greeting": {
+ "morning": "Günaydın",
+ "afternoon": "Tünaydın",
+ "evening": "İyi Akşamlar",
+ "christmas": "Mutlu Noeller",
+ "newyear": "Yeni Yılınız Kutlu Olsun",
+ "halloween": "Cadılar Bayramınız Kutlu Olsun",
+ "birthday": "Doğum Gününüz Kutlu Olsun"
},
- "modals": {
- "main": {
- "title": "Seçenekler",
- "loading": "Yükleniyor...",
- "file_upload_error": "Dosya 2MB'ı geçmemeli",
- "navbar": {
- "settings": "Ayarlar",
- "addons": "Eklentiler",
- "marketplace": "Mağaza"
- },
- "error_boundary": {
- "title": "Hata",
- "message": "Mue'nin bileşenleri yüklenirken hata oluştu",
- "refresh": "Yenile"
- },
- "settings": {
- "enabled": "Etkin",
- "reminder": {
- "title": "Not",
- "message": "Tüm değişikliklerin gerçekleşmesi için sayfanın yenilenmesi gerekir"
- },
- "sections": {
- "time": {
- "title": "Zaman",
- "format": "Format",
- "type": "Tip",
- "digital": {
- "title": "Dijital",
- "seconds": "Saniye",
- "twentyfourhour": "24 Saat",
- "twelvehour": "12 Saat",
- "zero": "Sıfır dolgulu"
- },
- "analogue": {
- "title": "Analog",
- "second_hand": "Saniye ibresi",
- "minute_hand": "Dakika ibresi",
- "hour_hand": "Saat ibresi",
- "hour_marks": "Saat işareti",
- "minute_marks": "Dakika işareti"
- },
- "percentage_complete": "Oranında tamamlandı"
- },
- "date": {
- "title": "Tarih",
- "week_number": "Hafta sayısını göster",
- "day_of_week": "Gün ismini göster",
- "datenth": "Gün sayısının yanına th ekle",
- "type": {
- "short": "Kısa",
- "long": "Uzun"
- },
- "short_date": "Kısa tarih",
- "short_format": "Kısa biçim",
- "short_separator": {
- "title": "Kısa ayırıcı",
- "dots": "Nokta",
- "dash": "Kısa çizgi(-)",
- "gaps": "Boşluk",
- "slashes": "Eğik çizgi"
- }
- },
- "quote": {
- "title": "Alıntı sözler",
- "author_link": "Yazar linki",
- "custom": "Özel alıntı söz",
- "custom_author": "Özel yazar",
- "add": "Alıntı söz ekle",
- "buttons": {
- "title": "Butonlar",
- "copy": "Kopyala",
- "tweet": "Tweet",
- "favourite": "Favori"
- }
- },
- "greeting": {
- "title": "Karşılama",
- "events": "Etkinlikler",
- "default": "Varsayılan karşılama mesajı",
- "name": "Karşılanacak kişi ismi",
- "birthday": "Doğum günü",
- "birthday_age": "Yaş",
- "birthday_date": "Doğum Tarihi"
- },
- "background": {
- "title": "Arkaplan",
- "ddg_image_proxy": "DuckDuckGo resim proxysini kullan",
- "transition": "Animasyonlu açılışı etkinleştir",
- "photo_information": "Fotoğraf bilgilerini göster",
- "show_map": "Fotoğraf bilgilerinde konum haritası varsa göster",
- "category": "Kategori",
- "buttons": {
- "title": "Butonlar",
- "view": "Arkaplanı göster",
- "favourite": "Favorilere ekle",
- "download": "İndir"
- },
- "effects": {
- "title": "Efektler",
- "blur": "Bulanıklık",
- "brightness": "Parlaklık",
- "filters": {
- "title": "Arkaplan filtresi",
- "amount": "Filtre miktarı",
- "grayscale": "Gri tonlamalı",
- "sepia": "Sepya",
- "invert": "Renkleri Ters Çevir",
- "saturate": "Canlılık",
- "contrast": "Kontrast"
- }
- },
- "type": {
- "title": "Tür",
- "api": "API",
- "custom_image": "Custom image",
- "custom_colour": "Özel renk/gradyan",
- "random_colour": "Rastgele renk",
- "random_gradient": "Rastgele gradyan"
- },
- "source": {
- "title": "Kaynak",
- "api": "Arkaplan API",
- "custom_background": "Özel arkaplan",
- "custom_colour": "Özel arkaplan rengi",
- "upload": "Yükle",
- "add_colour": "Renk Ekle",
- "add_background": "Arkaplan Ekle",
- "add_url": "Link Ekle",
- "disabled": "Devre Dışı",
- "loop_video": "Videoyu Döngüye Al",
- "mute_video": "Videoyu sustur",
- "quality": {
- "title": "Kalite",
- "original": "Orjinal",
- "high": "Yüksek Kalite",
- "normal": "Normal Kalite",
- "datasaver": "Veri Tasarrufu"
- }
- },
- "interval": {
- "title": "Arkaplan değişme zamanı",
- "minute": "Dakika",
- "half_hour": "Yarım saat",
- "hour": "Saat",
- "day": "Gün",
- "month": "Ay"
- }
- },
- "search": {
- "title": "Ara",
- "search_engine": "Arama motoru",
- "custom": "Özel arama motoru",
- "autocomplete": "Otomatik Tamamlama",
- "autocomplete_provider": "Otomatik Tamamlama Sağlayıcısı",
- "voice_search": "Sesli Arama",
- "dropdown": "Arama sağlayıcılarını göster"
- },
- "weather": {
- "title": "Hava durumu",
- "location": "Konum",
- "auto": "Otomatik",
- "temp_format": {
- "title": "Sıcaklık formatı",
- "celsius": "Santigrat",
- "fahrenheit": "Fahrenhayt",
- "kelvin": "Kelvin"
- },
- "extra_info": {
- "title": "Ek bilgiler",
- "show_location": "Konumu göster",
- "show_description": "Açıklamayı göster",
- "cloudiness": "Bulut oranı",
- "humidity": "Nem oranı",
- "visibility": "Görünebilirlik oranı",
- "wind_speed": "Rüzgar hızı",
- "wind_direction": "Rüzgar yönü",
- "min_temp": "Minimum sıcaklık",
- "max_temp": "Maksimum sıcaklık",
- "atmospheric_pressure": "Atmosferik basınç"
- }
- },
- "quicklinks": {
- "title": "Hızlı ulaşım linkleri",
- "open_new": "Yeni sekmede aç",
- "tooltip": "İpucu",
- "text_only": "Yalnızca metni göster"
- },
- "message": {
- "title": "Mesaj",
- "add": "Mesaj ekle",
- "text": "Mesaj içeriği"
- },
- "appearance": {
- "title": "Görünüm",
- "theme": {
- "title": "Tema",
- "auto": "Otomatik",
- "light": "Açık",
- "dark": "Koyu"
- },
- "navbar": {
- "title": "Gezinme çubuğu",
- "notes": "Notlar",
- "refresh": "Sayfayı Yenile",
- "hover": "Yalnızca fareyle üzerine gelindiğinde göster",
- "refresh_options": {
- "none": "Hiçbiri",
- "page": "Sayfa"
- }
- },
- "font": {
- "title": "Font",
- "custom": "Özel font",
- "google": "Google Fontlardan içeri aktar",
- "weight": {
- "title": "Font kalınlığı",
- "thin": "İnce",
- "extra_light": "Ekstra açık",
- "light": "Açık",
- "normal": "Normal",
- "medium": "Orta",
- "semi_bold": "Yarı Kalın",
- "bold": "Kalın",
- "extra_bold": "Ekstra Kalın"
- },
- "style": {
- "title": "Font stili",
- "normal": "Normal",
- "italic": "İtalik",
- "oblique": "Eğik"
- }
- },
- "accessibility": {
- "title": "Erişilebilirlik",
- "animations": "Animasyonlar",
- "text_shadow": "Widget metinlerinin gölgesi",
- "widget_zoom": "Widget büyüklüğü",
- "toast_duration": "Widget yüklenme süresi",
- "milliseconds": "Milisaniye"
- }
- },
- "order": {
- "title": "Widget Sıralaması"
- },
- "advanced": {
- "title": "Gelişmiş",
- "offline_mode": "Çevrimdışı mod",
- "data": "Veri",
- "reset_modal": {
- "title": "Uyarı",
- "question": "Mue'yu sıfırlamak istediğinizden emin misiniz?",
- "information": "Bu işlem, tüm verilerinizi silecektir. Verilerinizi ve tercihlerinizi saklamak istiyorsanız, lütfen önce bunları dışa aktarın.",
- "cancel": "İptal"
- },
- "customisation": "Özelleştirmek",
- "custom_css": "Özel CSS",
- "custom_js": "Özel JS",
- "tab_name": "Sekme ismi",
- "timezone": {
- "title": "Saat dilimi",
- "automatic": "Otomatik"
- },
- "experimental_warning": "Deneysel mod açıksa Mue ekibinin destek sağlayamadığını lütfen unutmayın. Lütfen önce deneysel modu devre dışı bırakın ve desteğe başvurmadan önce sorunun devam edip etmediğini görün."
- },
- "stats": {
- "title": "İstatistikler",
- "warning": "Bu özelliği kullanmak için kullanım verilerini etkinleştirmeniz gerekir. Bu veriler yalnızca yerel olarak depolanır.",
- "sections": {
- "tabs_opened": "Açılan sekme sayısı",
- "backgrounds_favourited": "Favorilere eklenen arkaplan sayısı",
- "backgrounds_downloaded": "İndirilen arkaplan sayısı",
- "quotes_favourited": "Favorilere eklenen alıntı söz sayısı",
- "quicklinks_added": "Eklenen Hızlı ulaşım linki sayısı",
- "settings_changed": "Değiştirilen ayar sayısı",
- "addons_installed": "Kurulan eklenti sayısı"
- },
- "usage": "Kullanım İstatistikleri"
- },
- "keybinds": {
- "title": "Tuş kombinasyonları",
- "recording": "Kaydediliyor...",
- "click_to_record": "Kaydetmek için tıklayın",
- "background": {
- "favourite": "Arkaplanı favorilere ekle",
- "maximise": "Arkaplanı büyüt",
- "download": "Arkaplanı indir",
- "show_info": "Arkaplan bilgilerini göster"
- },
- "quote": {
- "favourite": "Favori alıntı söz",
- "copy": "Alıntı sözü kopyala",
- "tweet": "Alıntı sözü Tweetle"
- },
- "notes": {
- "pin": "Notları sabitle",
- "copy": "Notu kopyala"
- },
- "search": "Aramaya odaklan",
- "quicklinks": "Hızlı bağlantı eklemeyi aç/kapat",
- "modal": "Modalı aç/kapat"
- },
- "experimental": {
- "title": "Deneysel",
- "warning": "Bu özellikler tam olarak test edilmedi ve düzgün çalışmayabilir!",
- "developer": "Geliştirici"
- },
- "language": {
- "title": "Dil",
- "quote": "Alıntı söz dili"
- },
- "changelog": {
- "title": "Yenilikler",
- "by": "{author} tarafından"
- },
- "about": {
- "title": "Hakkında",
- "copyright": "Telif Hakkı",
- "version": {
- "title": "Version",
- "checking_update": "Güncellemeler kontrol ediliyor",
- "update_available": "Güncelleme mevcut",
- "no_update": "Yeni bir güncelleme mevcut değil",
- "offline_mode": "Çevrimdışı modda güncelleme kontrol edilemez",
- "error": {
- "title": "Güncelleme bilgisi alınırken bir hata oluştu",
- "description": "Bir hata oluştu"
- }
- },
- "contact_us": "İletişime geç",
- "support_mue": "Mue'ye destekde bulun",
- "resources_used": {
- "title": "Kullanılan kaynaklar",
- "bg_images": "Çevrimdışı arkaplan resimleri"
- },
- "contributors": "Katkıda Bulunanlar",
- "supporters": "Destekçiler",
- "no_supporters": "Şu anda Mue destekçisi yok",
- "photographers": "Fotoğrafçılar"
- }
- },
- "buttons": {
- "reset": "Reset",
- "import": "İçe Aktar",
- "export": "Dışa Aktar"
- }
- },
- "marketplace": {
- "photo_packs": "Fotoğraf Paketleri",
- "quote_packs": "Alıntı söz Paketleri",
- "preset_settings": "Ön Ayar Ayarları",
- "no_items": "Bu kategoride öğe mevcut değil",
- "product": {
- "overview": "Genel Bakış",
- "information": "Bilgilendirme",
- "last_updated": "Son güncelleme",
- "version": "Version",
- "author": "Yapımcı",
- "buttons": {
- "addtomue": "Mue'ye Ekle",
- "remove": "Kaldır",
- "update_addon": "Eklentiyi Güncelle"
- },
- "quote_warning": {
- "title": "Uyarı",
- "description": "Bu alıntı söz paketi, sizi izleyebilecek harici sunuculara istekte bulunabilir!"
- }
- },
- "offline": {
- "title": "Çevrimdışı görünüyorsun",
- "description": "Lütfen internete bağlanın"
- }
- },
- "addons": {
- "added": "Eklendi",
- "check_updates": "Güncellemeleri kontrol et",
- "no_updates": "Güncelleme mevcut değil",
- "updates_available": "{amount} güncelleme mevcut",
- "empty": {
- "title": "Boş",
- "description": "Hiç eklenti kurulmamış"
- },
- "sideload": {
- "title": "Manuel Eklenti Ekle",
- "failed": "Sideload eklenti eklenirken bir hata oluştu",
- "errors": {
- "no_name": "İsim belirtilmedi",
- "no_author": "Yazar belirtilmedi",
- "no_type": "Tür belirtilmedi",
- "invalid_photos": "Geçersiz fotoğraf nesnesi",
- "invalid_quotes": "Geçersiz alıntı söz nesnesi"
- }
- },
- "sort": {
- "title": "Sırala",
- "newest": "Yüklenenler (Önce Yeni)",
- "oldest": "Yüklenenler (Önce Eski)",
- "a_z": "Alfabetik (A-Z)",
- "z_a": "Alfabetik (Z-A)"
- },
- "create": {
- "title": "Oluştur",
- "other_title": "Eklenti Oluştur",
- "metadata": {
- "name": "İsim",
- "icon_url": "İkon Linki",
- "screenshot_url": "Ekran Görüntüsü Linki",
- "description": "Açıklama"
- },
- "finish": {
- "title": "Bitir",
- "download": "Eklentiyi İndir"
- },
- "settings": {
- "current": "Mevcut kurulumu içe aktar",
- "json": "JSON Dosyasını Yükle"
- },
- "photos": {
- "title": "Fotoğraf Ekle"
- },
- "quotes": {
- "title": "Alıntı Söz Ekle",
- "api": {
- "title": "API",
- "url": "Alıntı Söz Linki",
- "name": "JSON alıntı sözü ismi",
- "author": "JSON alıntı söz Yazarı"
- },
- "local": {
- "title": "Yerel"
- }
- }
- }
- }
- },
- "update": {
- "title": "Güncelle",
- "offline": {
- "title": "Çevrimdışı",
- "description": "Çevrimdışı moddayken güncelleme günlükleri alınamaz"
- },
- "error": {
- "title": "Hata",
- "description": "Sunucuya bağlanılamadı"
- }
- },
- "welcome": {
- "tip": "Hızlı ipucu",
- "sections": {
- "intro": {
- "title": "Muetab'e Hoş Geldiniz",
- "description": "Mue'yi yüklediğiniz için teşekkür ederiz, umarız Mue ile iyi vakit geçirirsiniz"
- },
- "language": {
- "title": "Dilinizi seçin",
- "description": "Mue, aşağıda listelenen dillerde görüntülenebilir. Ayrıca sayfamıza yeni çeviriler de ekleyebilirsiniz"
- },
- "theme": {
- "title": "Tema seçin",
- "description": "Mue hem açık hem de koyu tema desteği sunar, veya sistem temanıza bağlı olarak otomatik olarak ayarlanabilir",
- "tip": "Otomatik tema ayarını kullanmak, bilgisayarınızda kullanılan temayı kullanır. Bu ayar, modları ve ekranda görüntülenen hava durumu ve notlar gibi bazı widgetların görünümünü etkiler"
- },
- "settings": {
- "title": "Ayarları İçe Aktar",
- "description": "Mue'yi yeni bir cihaza mı yüklüyorsunuz? Eski ayarlarınızı geri getirmekten çekinmeyin",
- "tip": "Eski Mue kurulumunuzda Gelişmiş sekmesine giderek eski ayarlarınızı dışa aktarabilirsiniz. Ardından, ayarlarınızın bulunduğu JSON dosyasını indirip yeni cihazınızda dışa aktar düğmesine tıklamanız ve JSON dosyasını yüklemeniz gerekir"
- },
- "privacy": {
- "title": "Gizlilik ayarları",
- "description": "Mue ile gizliliğinizi daha iyi korumak için bazı ek ayarları etkinleştirebilirsiniz",
- "offline_mode_description": "Çevrimdışı modu etkinleştirmek, herhangi bir hizmete yönelik tüm istekleri devre dışı bırakır. Bu, çevrimiçi arka planlar, çevrimiçi alıntı sözler, uygulama mağazası, hava durumu, hızlı bağlantılar, yenilikler ve bazı sekme bilgilerinin devre dışı bırakılmasına sebep olacaktır",
- "ddg_proxy_description": "Dilerseniz resim isteklerini DuckDuckGo üzerinden gerçekleştirebilirsiniz. Varsayılan olarak, API istekleri sunucularımızdan ve görüntü istekleri orijinal sunucudan geçer. Hızlı bağlantılar için bunu kapatmak, simgeleri DuckDuckGo yerine Google'dan alır. DuckDuckGo proxy, Mağaza için her zaman etkindir",
- "links": {
- "title": "Yararlı Bağlantılar",
- "privacy_policy": "Gizlilik Politikası",
- "source_code": "Mue Kaynak Kodu"
- }
- },
- "final": {
- "title": "Son adım",
- "description": "Mue Tab deneyiminiz başlamak üzere.",
- "changes": "Değişiklikler",
- "changes_description": "Ayarları daha sonra değiştirmek için sekmenizin sağ üst köşesindeki ayarlar simgesine tıklayabilirsiniz.",
- "imported": "{amount} ayar içe aktarıldı"
- }
- },
- "buttons": {
- "next": "İleri",
- "preview": "Önizleme",
- "previous": "Geri",
- "close": "Kapat"
- },
- "preview": {
- "description": "Şu anda önizleme modundasınız. Bu sekme kapatıldığında ayarlar sıfırlanacak.",
- "continue": "Kuruluma devam et"
- }
- }
+ "background": {
+ "credit": "Fotoğraf Sahibi ",
+ "unsplash": ", Unsplash",
+ "pexels": ", Pexels",
+ "information": "Bilgilendirme",
+ "download": "İndir",
+ "downloads": "İndirilenler",
+ "views": "Görüntülenme",
+ "likes": "Beğeni",
+ "location": "Konum",
+ "camera": "Kamera",
+ "resolution": "Çözünürlük",
+ "source": "Kaynak",
+ "category": "Kategori",
+ "exclude": "Tekrar Gösterme",
+ "exclude_confirm": "Bu görseli tekrar görmek istemediğinize emin misiniz?\nNot: Eğer bu kategoriye ait \"{category}\" resimleri beğenmiyorsanız, arka plan kaynak ayarları kısmından kategorinin seçimini kaldırabilirsiniz."
},
- "toasts": {
- "quote": "Alıntı söz kopyalandı",
- "notes": "Notlar kopyalandı",
- "reset": "Sıfırlama işlemi başarılı",
- "installed": "Başarıyla yüklendi",
- "uninstalled": "Başarıyla kaldırıldı",
- "updated": "Başarıyla güncellendi",
- "error": "Bir hata oluştu",
- "imported": "Başarıyla içe aktarıldı"
+ "search": "Arama",
+ "quicklinks": {
+ "new": "Yeni Bağlantı",
+ "name": "İsim",
+ "url": "URL",
+ "icon": "İkon (İsteğe Bağlı)",
+ "add": "Ekle",
+ "name_error": "İsim gerekli",
+ "url_error": "URL gerekli"
+ },
+ "date": {
+ "week": "Haftada Bir"
+ },
+ "weather": {
+ "not_found": "Bulunamadı.",
+ "meters": "{amount} metre",
+ "extra_information": "Ek Bilgilendirme",
+ "feels_like": "{amount} gibi hissettiriyor."
+ },
+ "quote": {
+ "link_tooltip": "Wikipedia'da Aç",
+ "share": "Paylaş",
+ "copy": "Kopyala",
+ "favourite": "Favorilere Ekle",
+ "unfavourite": "Favorilerden Çıkar"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Sayfayı Yenile"
+ },
+ "notes": {
+ "title": "Notlar",
+ "placeholder": "Buraya Yaz!"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Tuttur",
+ "add": "Ekle"
+ }
}
+ },
+ "modals": {
+ "main": {
+ "title": "Seçenekler",
+ "loading": "Yükleniyor...",
+ "file_upload_error": "Dosya 2 MB'ın üzerinde",
+ "navbar": {
+ "settings": "Ayarlar",
+ "addons": "Eklentilerim",
+ "marketplace": "Market"
+ },
+ "error_boundary": {
+ "title": "Hata",
+ "message": "Mue'nin bu bileşeni yüklenemedi.",
+ "report_error": "Hata Raporunu Gönder.",
+ "sent": "Gönder!",
+ "refresh": "Yenile"
+ },
+ "settings": {
+ "enabled": "Etkinleştir",
+ "open_knowledgebase": "Bilgilendirme Sayfasını Aç.",
+ "additional_settings": "Ek Ayarlar",
+ "reminder": {
+ "title": "UYARI",
+ "message": "Tüm değişikliklerin gerçekleşmesi için sayfanın yenilenmesi gerekir."
+ },
+ "sections": {
+ "header": {
+ "more_info": "Daha fazla bilgi",
+ "report_issue": "Hata Bildir",
+ "enabled": "Bu widget'ınızın gösterilip gösterilmeyeceğini seçin.",
+ "size": "Widget'ınızın büyüklüğünü kontrol etmek için kaydırın."
+ },
+ "time": {
+ "title": "Zaman",
+ "format": "Biçim Formatı",
+ "type": "Tür",
+ "type_subtitle": "Saat formatınızın dijital, analog veya günün tamamlanma yüzdesi olmak üzere nasıl görüntüleneceğini belirleyin.",
+ "digital": {
+ "title": "Dijital",
+ "subtitle": "Dijital saatin görünümünü değiştirin.",
+ "seconds": "Saniye",
+ "twentyfourhour": "24 Saat",
+ "twelvehour": "12 Saat",
+ "zero": "Sıfır Eklenmiş"
+ },
+ "analogue": {
+ "title": "Analog",
+ "subtitle": "Analog saatin nasıl görüntüleneceğini belirleyin.",
+ "second_hand": "Saniye ibresi",
+ "minute_hand": " Yelkovan (dakika) ibresi",
+ "hour_hand": "Akrep (saat) ibresi",
+ "hour_marks": "Saat çizgileri",
+ "minute_marks": "Dakika çizgileri"
+ },
+ "percentage_complete": "Yüzdelik Gösterim",
+ "vertical_clock": {
+ "title": "Dikey Saat",
+ "change_hour_colour": "Saat kısmının metin rengini değiştir.",
+ "change_minute_colour": "Dakika kısmının metin rengini değiştir."
+ }
+ },
+ "date": {
+ "title": "Gün",
+ "week_number": "Hafta Sayısı",
+ "day_of_week": "Haftanın Günü",
+ "datenth": "Gün Vurgusu",
+ "type": {
+ "short": "Kısa",
+ "long": "Uzun",
+ "subtitle": "Tarih formatınızın uzun veya kısa olmak üzere hangi formda görüntüleneceğini seçin."
+ },
+ "type_settings": "Seçilen tarih türü için ekran ayarları ve biçimi belirten özellikleri belirleyin.",
+ "short_date": "Kısa Tarih",
+ "short_format": "Kısa Tarih Formatı",
+ "long_format": "Long format",
+ "short_separator": {
+ "title": "Kısa Tarih Ayracı",
+ "dots": "Nokta",
+ "dash": "Kısa çizgi",
+ "gaps": "Boşluk",
+ "slashes": "Eğik çizgi"
+ }
+ },
+ "quote": {
+ "title": "Alıntı",
+ "additional": "Alıntı widget'ının stilini özelleştirmek için diğer ayarlar.",
+ "author_link": "Yazara Dair",
+ "custom": "Notu Özelleştir",
+ "custom_subtitle": "Kendi özel alıntınızı belirleyin, ekleyin.",
+ "no_quotes": "Alıntı yok!",
+ "author": "Yazar",
+ "custom_buttons": "Butonlar",
+ "custom_author": "Özel yazar",
+ "author_img": "Yazar resmini göster.",
+ "add": "Alıntı Ekle",
+ "source_subtitle": "Alıntıyı nereden alacağınızı seçin.",
+ "buttons": {
+ "title": "Butonlar",
+ "subtitle": "Alıntı kısmı için hangi butonların gösterileceğini seçin.",
+ "copy": "Kopyala",
+ "tweet": "Tweet'le",
+ "favourite": "Favorilere Ekle"
+ }
+ },
+ "greeting": {
+ "title": "Karşılama Ekranı",
+ "events": "Olaylar",
+ "default": "Karşılama mesajları görünsün.",
+ "name": "İsminiz",
+ "birthday": "Doğum Günü",
+ "birthday_subtitle": "Doğum günüm olduğunda bir 'Mutlu Yıllar' mesajı göster.",
+ "birthday_age": "Doğum günümde yaş bilgisi gözüksün.",
+ "birthday_date": "Doğum günü tarihim",
+ "additional": "Karşılama ekranı için ek ayarlarızı belirleyin."
+ },
+ "background": {
+ "title": "Arka Plan",
+ "ddg_image_proxy": "DuckDuckGo görüntü proxy'sini kullan.",
+ "transition": "Geçiş sırasında solma efekti uygula.",
+ "photo_information": "Fotoğraf bilgilerini göster.",
+ "show_map": "Varsa fotoğraf bilgilerinde konum bilgisini göster.",
+ "categories": "Kategoriler",
+ "buttons": {
+ "title": "Butonlar",
+ "view": "Arka Planı Görüntüle",
+ "favourite": "Favorilere Ekle",
+ "download": "İndir"
+ },
+ "effects": {
+ "title": "Görsel Efektler",
+ "subtitle": "Arka plan görseli için efektleri düzenleyin.",
+ "blur": "Bulanıklığı ayarla",
+ "brightness": "Parlaklığı ayarla",
+ "filters": {
+ "title": "Arka plan filtresi",
+ "amount": "Filtre miktarı",
+ "grayscale": "Gri tonlama",
+ "sepia": "Sepya",
+ "invert": "Ters çevir",
+ "saturate": "Doygunluk",
+ "contrast": "Kontrast"
+ }
+ },
+ "type": {
+ "title": "Tip",
+ "api": "API",
+ "custom_image": "Özel resim",
+ "custom_colour": "Özel renk/gradyan",
+ "random_colour": "Özel renk",
+ "random_gradient": "Özel gradyan"
+ },
+ "source": {
+ "title": "Kaynak",
+ "subtitle": "Arka plan resimlerinin nereden alınacağını seçin.",
+ "api": "Arka plan API",
+ "custom_background": "Özel arka plan resmi",
+ "custom_colour": "Özel arka plan rengi",
+ "upload": "Yükle",
+ "add_colour": "Renk ekle",
+ "add_background": "Arka plan ekle",
+ "drop_to_upload": "Yüklemek için bırakın",
+ "formats": "Kullanılabilir biçimler: {list}",
+ "select": "Veya Seç",
+ "add_url": "URL/Uzantı ekle",
+ "disabled": "Kullanılamaz",
+ "loop_video": "Tekrarlayan video",
+ "mute_video": "Videonun sesini kapat",
+ "quality": {
+ "title": "Kalite",
+ "original": "Orjinal",
+ "high": "Yüksek Kalite",
+ "normal": "Normal Kalite",
+ "datasaver": "Veri Tasarrufu"
+ },
+ "custom_title": "Özel Arka Plan",
+ "custom_description": "Bilgisayarınızdan görseli seçin",
+ "remove": "Resmi Kaldır"
+ },
+ "display": "Görüntüleme",
+ "display_subtitle": "Arka plan ve fotoğraf bilgilerinin nasıl yüklendiğini değiştirin.",
+ "api": "API Ayarları",
+ "api_subtitle": "Harici bir hizmetten (API) görüntü alma seçenekleri",
+ "interval": {
+ "title": "Değiştirme Sıklığı",
+ "subtitle": "Arka planın ne sıklıkla güncelleneceğini değiştirin.",
+ "minute": "Dakikada Bir",
+ "half_hour": "Yarım Saatte Bir",
+ "hour": "Saatte Bir",
+ "day": "Günde Bir",
+ "month": "Ayda Bir"
+ }
+ },
+ "search": {
+ "title": "Arama",
+ "additional": "Arama widget'ı ekranı ve işlevselliği için ek seçenekler.",
+ "search_engine": "Arama Motoru",
+ "search_engine_subtitle": "Arama çubuğunda kullanmak için arama motorunu seçin.",
+ "custom": "Özel URL/bağlantı",
+ "autocomplete": "Otomatik Tamamlama",
+ "autocomplete_provider": "Otomatik Tamamlama Sağlayıcısı",
+ "autocomplete_provider_subtitle": "Otomatik tamamlama açılır sonuçları için kullanılacak arama motorunu belirleyin.",
+ "voice_search": "Sesli Arama",
+ "dropdown": "Arama Motorları Açılır Menüsü",
+ "focus": "Açık Sekmeye Odaklan"
+ },
+ "weather": {
+ "title": "Hava Durumu",
+ "location": "Konum",
+ "auto": "Otomatik",
+ "widget_type": "Widget Türü",
+ "temp_format": {
+ "title": "Sıcaklık formatı",
+ "celsius": "Santigrat",
+ "fahrenheit": "Fahrenhayt",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Ekstra Bilgilendirme",
+ "show_location": "Lokasyonu Göster",
+ "show_description": "Açıklama Göster",
+ "cloudiness": "Bulutlu",
+ "humidity": "Nem",
+ "visibility": "Görüş Mesafesi",
+ "wind_speed": "Rüzgar Hızı",
+ "wind_direction": "Rüzgar Yönü",
+ "min_temp": "Minimum Sıcaklık",
+ "max_temp": "Maksimum Sıcaklık",
+ "atmospheric_pressure": "Atmosferik Basınç"
+ },
+ "options": {
+ "basic": "Temel",
+ "standard": "Standart",
+ "expanded": "Genişletilmiş",
+ "custom": "Özelleştirilmiş"
+ },
+ "custom_settings": "Özel Ayarlar"
+ },
+ "quicklinks": {
+ "title": "Hızlı Linkler",
+ "additional": "Hızlı bağlantılar ekranı ve işlevleri için ek ayarlarınızı belirleyin.",
+ "open_new": "Yeni Sekmede Aç",
+ "tooltip": "İpucu",
+ "text_only": "Yalnızca Metni Göster",
+ "add_link": "Link Ekle",
+ "no_quicklinks": "Hızlı bağlantı yok.",
+ "edit": "Düzenleme",
+ "style": "Stil",
+ "options": {
+ "icon": "İkon",
+ "text_only": "Sadece Metin",
+ "metro": "Metro"
+ },
+ "styling": "Hızlı Bağlantı Görünümü",
+ "styling_description": "Hızlı Bağlantılar görünümünü özelleştirin"
+ },
+ "message": {
+ "title": "Mesaj",
+ "add": "Mesaj Ekle!",
+ "messages": "Mesajlar",
+ "text": "Metin",
+ "no_messages": "Mesaj yok",
+ "add_some": "Devam et ve biraz ekle.",
+ "content": "Mesaj İçeriği"
+ },
+ "appearance": {
+ "title": "Görünüm",
+ "style": {
+ "title": "Widget Stili",
+ "description": "Eski (7.0 öncesi kullanıcılar için etkin) ve şık modern stilimiz olmak üzere iki stil arasından seçim yapın.",
+ "legacy": "Eski",
+ "new": "Yeni"
+ },
+ "theme": {
+ "title": "Tema",
+ "description": "Mue widget'larının ve modellerinin temasını değiştirin.",
+ "auto": "Otomatik",
+ "light": "Açık",
+ "dark": "Koyu"
+ },
+ "navbar": {
+ "title": "Gezinme Çubuğu",
+ "notes": "Notlar",
+ "refresh": "Yenile Butonu",
+ "refresh_subtitle": "Yenile düğmesine tıkladığınızda neyin yenileneceğini seçin.",
+ "hover": "Yalnızca fareyle üzerine gelindiğinde göster.",
+ "additional": "Gezinme çubuğu stilini ve hangi butonları görüntülemek istediğinizi değiştirin.",
+ "refresh_options": {
+ "none": "Hiçbiri",
+ "page": "Sayfa"
+ }
+ },
+ "font": {
+ "title": "Yazı tipi",
+ "description": "Mue'da kullanılan yazı tipini değiştirin.",
+ "custom": "Özel yazı tipi",
+ "google": "Google Fonts'tan içeri aktar.",
+ "weight": {
+ "title": "Yazı tipi genişliği",
+ "thin": "Ekstra İnce",
+ "extra_light": "İnce",
+ "light": "Hafif İnce",
+ "normal": "Normal",
+ "medium": "Orta",
+ "semi_bold": "Hafif Kalın",
+ "bold": "Kalın",
+ "extra_bold": "Ekstra Kalın"
+ },
+ "style": {
+ "title": "Yazı stili",
+ "normal": "Normal",
+ "italic": "İtalik",
+ "oblique": "Eğik"
+ }
+ },
+ "accessibility": {
+ "title": "Erişebilirlik",
+ "description": "Mue Erişebilirlik ayarlarını değiştirin",
+ "animations": "Animasyonlar",
+ "text_shadow": {
+ "title": "Widget metin gölgesi",
+ "new": "Yeni",
+ "old": "Eski",
+ "none": "Hiçbiri"
+ },
+ "widget_zoom": "Widget Ölçeği",
+ "toast_duration": "Bildirim süresi",
+ "milliseconds": "Milisaniye"
+ }
+ },
+ "order": {
+ "title": "Widget Sıralaması"
+ },
+ "advanced": {
+ "title": "Gelişmiş",
+ "offline_mode": "Çevrimdışı Mod",
+ "offline_subtitle": "Etkinleştirildiğinde, çevrimiçi hizmetlere yönelik tüm istekler devre dışı bırakılır.",
+ "data": "Veri",
+ "data_subtitle": "Mue Tab ayarlarınızı bilgisayarınıza kaydetmenize, mevcut ayarlarınızı başka bir bilgisayara aktarmanıza veya ayarlarınızı varsayılan değerlerine sıfırlamınıza olanak sağlar. İstediğiniz işlemi seçin.",
+ "reset_modal": {
+ "title": "UYARI",
+ "question": "Mue'yu sıfırlamak istiyor musunuz?",
+ "information": "Bu, tüm verileri silecektir. Verilerinizi ve tercihlerinizi saklamak istiyorsanız, lütfen önce bunları dışa aktarın.",
+ "cancel": "İptal"
+ },
+ "customisation": "Özelleştirme",
+ "custom_css": "Özel CSS",
+ "custom_css_subtitle": "Mue'nin stilini 'Cascading Style Sheets (CSS)' ile özelleştirin.",
+ "custom_js": "Özel JS",
+ "tab_name": "Sekme Adı",
+ "tab_name_subtitle": "Tarayıcınızda görünen sekmenin adını değiştirin.",
+ "timezone": {
+ "title": "Saat Dilimi",
+ "subtitle": "Bilgisayarınızdan otomatik varsayılan yerine listeden bir saat dilimi seçin.",
+ "automatic": "Otomatik"
+ },
+ "experimental_warning": "Deneysel modunuz açıksa Mue ekibinin destek sağlayamadığını lütfen unutmayın. Lütfen önce devre dışı bırakın ve desteğe başvurmadan önce sorunun devam edip etmediğini görün."
+ },
+ "stats": {
+ "title": "İstatistikler",
+ "warning": "Bu özelliği kullanmak için kullanım verilerini etkinleştirmeniz gerekir. Bu veriler yalnızca yerel olarak depolanır.",
+ "sections": {
+ "tabs_opened": "Sekme açıldı.",
+ "backgrounds_favourited": "Arka plan favorilere eklendi.",
+ "backgrounds_downloaded": "Arka plan indirildi.",
+ "quotes_favourited": "Alıntı favorilere eklendi.",
+ "quicklinks_added": "Hızlı bağlantılar eklendi.",
+ "settings_changed": "Ayarlar değişti.",
+ "addons_installed": "Eklentiler yüklendi."
+ },
+ "usage": "Kullanım İstatistikleri",
+ "achievements": "Başarılar",
+ "unlocked": "{count} Kilidi Açıldı"
+ },
+ "experimental": {
+ "title": "Deneysel Özellikler",
+ "warning": "Bu ayarlar tam olarak test edilmedi/uygulanmadı ve düzgün çalışmayabilir!",
+ "developer": "Geliştirici"
+ },
+ "language": {
+ "title": "Dil",
+ "quote": "Alıntı dili"
+ },
+ "changelog": {
+ "title": "Güncelleme Notları",
+ "by": "Yayınlayan: {author}"
+ },
+ "about": {
+ "title": "Hakkında",
+ "copyright": "Telif Hakkı",
+ "version": {
+ "title": "Versiyon",
+ "checking_update": "Güncellemeleri Kontrol Et",
+ "update_available": "Güncelleme Mevcut!",
+ "no_update": "En Güncel Sürümdesiniz",
+ "offline_mode": "Çevrimdışı modda güncelleme kontrol edilemiyor.",
+ "error": {
+ "title": "Güncelleme bilgisi alınamadı.",
+ "description": "Bir hata oluştu."
+ }
+ },
+ "contact_us": "Bize Ulaşın!",
+ "support_mue": "Mue Destek",
+ "support_subtitle": "Mue tamamen ücretsiz olduğu için, sunucu faturalarını karşılamak ve geliştirme masraflarını finanse etmek için bağışları kullanıyoruz.",
+ "support_donate": "Bağış Yap",
+ "resources_used": {
+ "title": "Kullanılan kaynaklar",
+ "bg_images": "Çevrimdışı Arka Plan Resim İçerikleri"
+ },
+ "contributors": "Katkıda Bulunanlar",
+ "supporters": "Destekleyenler",
+ "no_supporters": "Şu anda Mue destekçisi yok",
+ "photographers": "Fotoğrafçılar"
+ }
+ },
+ "buttons": {
+ "reset": "Yenile",
+ "import": "İçeri Aktar",
+ "export": "Dışarı Aktar"
+ }
+ },
+ "marketplace": {
+ "by": "by {author}",
+ "all": "Tümü",
+ "learn_more": "Daha Fazla Bilgi Edin",
+ "photo_packs": "Fotoğraf Paketleri",
+ "quote_packs": "Alıntı Paketleri",
+ "preset_settings": "Ön Ayar Paketleri",
+ "no_items": "Bu kategoride öğe yok",
+ "collection": "Koleksiyon",
+ "explore_collection": "Koleksiyonu Keşfedin",
+ "collections": "Koleksiyonlar",
+ "cant_find": "Aradığınızı bulamıyor musunuz?",
+ "knowledgebase_one": "Kendiniz oluşturmak için ",
+ "knowledgebase_two": "bilgilendirme sayfamızı ",
+ "knowledgebase_three": "ziyaret edin.",
+ "product": {
+ "overview": "Genel Bakış",
+ "information": "Bilgi",
+ "last_updated": "Son Güncelleme",
+ "description": "Açıklama/Tanım",
+ "show_more": "Daha Fazla Göster",
+ "show_less": "Daha Az Göster",
+ "show_all": "Hepsini Göster ↓",
+ "showing": "Gösteriliyor",
+ "no_images": "Fotoğraf bulunamadı",
+ "no_quotes": "Alıntı bulunamadı",
+ "version": "Versiyon",
+ "author": "Yazar",
+ "part_of": "Parçası",
+ "explore": "Keşfet",
+ "buttons": {
+ "addtomue": "Mue Tab'ıma Ekle",
+ "remove": "Kaldır",
+ "update_addon": "Eklentiyi Güncelle",
+ "back": "Geri",
+ "report": "Bildir/Raporla"
+ },
+ "setting": "Setting",
+ "value": "Value"
+ },
+ "offline": {
+ "title": "Çevrimdışı görünüyorsun.",
+ "description": "Lütfen internete bağlanın."
+ }
+ },
+ "addons": {
+ "added": "Eklentiler",
+ "check_updates": "Güncellemeleri kontrol et.",
+ "no_updates": "Güncelleme mevcut değil.",
+ "updates_available": "Güncellemeler mevcut {amount} !",
+ "empty": {
+ "title": "Boş",
+ "description": "Hiçbir eklenti yüklü değil."
+ },
+ "sideload": {
+ "title": "Diğer Eklentiler",
+ "description": "Bilgisayarınızdan piyasada olmayan bir Mue eklentisi yükleyin.",
+ "failed": "Eklenti yüklenemedi.",
+ "errors": {
+ "no_name": "İsim belirtilmedi.",
+ "no_author": "Yazar belirtilmedi.",
+ "no_type": "Tür sağlanmadı.",
+ "invalid_photos": "Geçersiz fotoğraf nesnesi",
+ "invalid_quotes": "Geçersiz alıntı nesnesi"
+ }
+ },
+ "sort": {
+ "title": "Sırala",
+ "newest": "Kurulanlar (En yeni)",
+ "oldest": "Kurulanlar (En Eski)",
+ "a_z": "Alfabetik (A-Z)",
+ "z_a": "Alfabetik (Z-A)"
+ },
+ "create": {
+ "title": "Oluştur",
+ "example": "Örnek",
+ "other_title": "Eklenti Oluştur",
+ "create_type": "{type} Paketi Oluştur",
+ "types": {
+ "settings": "Önceden Ayarlanmış Ayarlar Paketi",
+ "photos": "Fatoğraf Paketi",
+ "quotes": "Alıntı Paketi"
+ },
+ "descriptions": {
+ "settings": "Mue'yu özelleştirmek için hazır ayarların kullanılması.",
+ "photos": "Bir konuyla ilgili fotoğraf koleksiyonu.",
+ "quotes": "Bir konuyla ilgili alıntı koleksiyonu."
+ },
+ "information": "Bilgilendirme",
+ "information_subtitle": "Örneğin: 1.2.3 (büyük güncelleme, küçük güncelleme, yama güncellemesi)",
+ "import_custom": "Özel ayarlardan içeri aktarın.",
+ "publishing": {
+ "title": "Sonraki adım, Yayınla...",
+ "subtitle": "Yeni oluşturduğunuz eklentiyi nasıl yayınlayacağınızla ilgili bilgiler için Mue Bilgi Bankası'nı ziyaret edin.",
+ "button": "Daha fazla bilgi edin."
+ },
+ "metadata": {
+ "name": "İsmi",
+ "icon_url": "İkon URL'si ",
+ "screenshot_url": "Arka plan URL'si",
+ "description": "Açıklama",
+ "example": "Örneği İndir"
+ },
+ "finish": {
+ "title": "Kurulumu Bitir",
+ "download": "Eklentiyi İndir"
+ },
+ "settings": {
+ "current": "Mevcut kurulumu içe aktar",
+ "json": "JSON'u yükleyin"
+ },
+ "photos": {
+ "title": "Fotoğraf Ekle"
+ },
+ "quotes": {
+ "title": "Alıntı Ekle",
+ "api": {
+ "title": "API",
+ "url": "Alıntı URL'si",
+ "name": "JSON alıntı adı",
+ "author": "JSON alıntı yazarı (veya geçersiz kılma)"
+ },
+ "local": {
+ "title": "Yerel"
+ }
+ }
+ }
+ }
+ },
+ "update": {
+ "title": "Güncelleme",
+ "offline": {
+ "title": "Çevrimdışı",
+ "description": "Çevrimdışı moddayken güncelleme günlükleri alınamıyor"
+ },
+ "error": {
+ "title": "Hata",
+ "description": "Sunucuya bağlanılamadı"
+ }
+ },
+ "welcome": {
+ "tip": "İpuçları",
+ "sections": {
+ "intro": {
+ "title": "Mue Tab'a Hoş Geldiniz!",
+ "description": "Mue Tab'ı yüklediğiniz için teşekkür ederiz, umarız uzantımızla iyi vakit geçirirsiniz.",
+ "notices": {
+ "discord_title": "Dicord Kanalımıza Katılın",
+ "discord_description": "Mue topluluğu ve geliştiricileri ile konuşun.",
+ "discord_join": "Katıl",
+ "github_title": "GitHub Üzerinden Katkıda Bulunun",
+ "github_description": "Hataları bildirin, özellikler ekleyin veya bağış yapın.",
+ "github_open": "Aç"
+ }
+ },
+ "language": {
+ "title": "Dilinizi Seçin",
+ "description": "Mue, aşağıda listelenen dillerde görüntülenebilir. Ayrıca sayfamıza yeni çeviriler de ekleyebilirsiniz."
+ },
+ "theme": {
+ "title": "Bir Tema Seçin",
+ "description": "Mue için hem açık hem de koyu tema mevcuttur. İsterseniz sistem temanıza bağlı olarak otomatik olarak da ayarlanabilir.",
+ "tip": "Otomatik ayarları kullanmak, bilgisayarınızdaki varsayılan temayı kullanır. Bu ayar, modları ve ekranda görüntülenen hava durumu ve notlar gibi bazı widget'ları etkiler."
+ },
+ "style": {
+ "title": "Bir Stil Seçin",
+ "description": "Mue şu anda eski stil ile yeni çıkan modern stil arasında seçim yapma olanağı sunuyor.",
+ "legacy": "Eski",
+ "modern": "Modern"
+ },
+ "settings": {
+ "title": "Ayarları İçe Aktar",
+ "description": "Mue'yi yeni bir cihaza mı yüklüyorsunuz? Eski ayarlarınızı almaktan çekinmeyin!",
+ "tip": "Eski Mue kurulumunuzdaki 'Gelişmiş' sekmesine giderek ayarlarınızı dışarıya aktarabilirsiniz. Bunun için JSON dosyasını indirecek olan 'Dışarı Aktar' butonuna tıklamanız gerekir. Önceki Mue kurulumunuzdan ayarlarınızı ve tercihlerinizi taşımak için bu dosyayı buraya yükleyebilirsiniz."
+ },
+ "privacy": {
+ "title": "Gizlilik Seçenekleri",
+ "description": "Mue ile gizliliğinizi daha da korumak için ayarları etkinleştirin.",
+ "offline_mode_description": "Çevrimdışı modu etkinleştirmek, herhangi bir hizmete yönelik tüm istekleri devre dışı bırakır. Bu durum çevrimiçi arka planlar, çevrimiçi alıntılar, market, hava durumu, hızlı bağlantılar, değişiklik günlüğü ve bazı sekme bilgilerinin devre dışı bırakılmasıyla sonuçlanacaktır.",
+ "ddg_proxy_description": "Dilerseniz resim isteklerini DuckDuckGo üzerinden gerçekleştirebilirsiniz. Varsayılan olarak, API istekleri açık kaynak sunucularımızdan ve görüntü istekleri orijinal sunucudan geçer. Hızlı bağlantılar için bunu kapatmak, simgeleri DuckDuckGo yerine Google'dan alır. DuckDuckGo proxy, Market için her zaman etkindir.",
+ "links": {
+ "title": "Bağlantılar",
+ "privacy_policy": "Gizlilik Politikası",
+ "source_code": "Kaynak Kodu"
+ }
+ },
+ "final": {
+ "title": "Son Adım",
+ "description": "Mue Tab deneyiminiz başlamak üzere.",
+ "changes": "Değişiklikler",
+ "changes_description": "Ayarları daha sonra değiştirmek için sekmenizin sağ üst köşesindeki ayarlar simgesine tıklayın.",
+ "imported": "Ayarlar {amount} eklendi"
+ }
+ },
+ "buttons": {
+ "next": "Sonraki",
+ "preview": "Ön İzleme",
+ "previous": "Öncesi",
+ "close": "Kapat"
+ },
+ "preview": {
+ "description": "Şu anda önizleme modundasınız. Bu sekme kapatıldığında ayarlar sıfırlanacak.",
+ "continue": "Kuruluma devam et."
+ }
+ },
+ "share": {
+ "copy_link": "Bağlantıyı kopyala",
+ "email": "E-posta"
+ }
+ },
+ "toasts": {
+ "quote": "Alıntı kopyalandı.",
+ "notes": "Not kopyalandı.",
+ "reset": "Başarıyla resetlendi.",
+ "installed": "Başarıyla yüklendi.",
+ "uninstalled": "Başarıyla kaldırıldı.",
+ "updated": "Başarıyla güncellendi.",
+ "error": "Bir şeyler yanlış gitti.",
+ "imported": "Başarıyla içe aktarıldı.",
+ "no_storage": "Yeteri kadar yer yok.",
+ "link_copied": "Bağlantı kopyalandı."
+ }
}
diff --git a/src/translations/zh_CN.json b/src/translations/zh_CN.json
index 536ac011..d5d9395a 100644
--- a/src/translations/zh_CN.json
+++ b/src/translations/zh_CN.json
@@ -15,7 +15,20 @@
"unsplash": "@ Unsplash",
"pexels": "@ Pexels",
"information": "信息",
- "download": "下载"
+ "download": "下载",
+ "downloads": "Downloads",
+ "views": "Views",
+ "likes": "Likes",
+ "location": "Location",
+ "camera": "Camera",
+ "resolution": "Resolution",
+ "source": "Source",
+ "category": "Category",
+ "exclude": "Don't show again",
+ "exclude_confirm": "Are you sure you don't want to see this image again?\nNote: if you don't like \"{category}\" images, you can deselect the category in the background source settings.",
+ "categories": "Categories",
+ "photo": "Photo",
+ "on": "on"
},
"search": "搜索",
"quicklinks": {
@@ -32,7 +45,22 @@
},
"weather": {
"not_found": "未找到",
- "meters": "{amount}米"
+ "meters": "{amount}米",
+ "extra_information": "Extra Information",
+ "feels_like": "Feels like {amount}",
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ }
+ },
+ "quote": {
+ "link_tooltip": "Open on Wikipedia",
+ "share": "Share",
+ "copy": "Copy",
+ "favourite": "Favourite",
+ "unfavourite": "Unfavourite"
},
"navbar": {
"tooltips": {
@@ -41,6 +69,11 @@
"notes": {
"title": "便签",
"placeholder": "请键入内容"
+ },
+ "todo": {
+ "title": "Todo",
+ "pin": "Pin",
+ "add": "Add"
}
}
},
@@ -57,21 +90,33 @@
"error_boundary": {
"title": "错误",
"message": "无法载入该Mue组件",
+ "report_error": "Send Error Report",
+ "sent": "Sent!",
"refresh": "刷新"
},
"settings": {
"enabled": "已启用",
+ "open_knowledgebase": "Open Knowledgebase",
+ "additional_settings": "Additional Settings",
"reminder": {
"title": "注意",
"message": "刷新页面后设置才会生效"
},
"sections": {
+ "header": {
+ "more_info": "More info",
+ "report_issue": "Report Issue",
+ "enabled": "Choose whether or not to show this widget",
+ "size": "Slider to control how large the widget is"
+ },
"time": {
"title": "时间",
"format": "格式",
"type": "类型",
+ "type_subtitle": "Choose whether to display the time in digital or analogue format, or a percentage completion of the day",
"digital": {
"title": "数字时钟",
+ "subtitle": "Change how the digital clock looks",
"seconds": "显示秒",
"twentyfourhour": "使用 24 小时制",
"twelvehour": "使用 12 小时制",
@@ -79,13 +124,19 @@
},
"analogue": {
"title": "模拟时钟",
+ "subtitle": "Change how the analogue clock looks",
"second_hand": "秒针",
"minute_hand": "分针",
"hour_hand": "时针",
"hour_marks": "时钟刻度",
"minute_marks": "分钟刻度"
},
- "percentage_complete": "今天过去了%几"
+ "percentage_complete": "今天过去了%几",
+ "vertical_clock": {
+ "title": "Vertical Clock",
+ "change_hour_colour": "Change hour text colour",
+ "change_minute_colour": "Change minute text colour"
+ }
},
"date": {
"title": "显示日期",
@@ -94,10 +145,13 @@
"datenth": "添加th后缀",
"type": {
"short": "显示简写",
- "long": "显示全部"
+ "long": "显示全部",
+ "subtitle": "Whether to display the date in long form or short form"
},
+ "type_settings": "Display settings and format for the selected date type",
"short_date": "简写日期",
"short_format": "简写格式",
+ "long_format": "Long format",
"short_separator": {
"title": "简写分隔",
"dots": "点",
@@ -108,12 +162,20 @@
},
"quote": {
"title": "名言警句",
+ "additional": "Other settings to customise the style of the quote widget",
"author_link": "出处链接",
"custom": "自定义名言",
+ "custom_subtitle": "Set your own custom quotes",
+ "no_quotes": "No quotes",
+ "author": "Author",
+ "custom_buttons": "Buttons",
"custom_author": "自定义出处",
+ "author_img": "Show author image",
"add": "继续添加名言",
+ "source_subtitle": "Choose where to get quotes from",
"buttons": {
"title": "下方按钮",
+ "subtitle": "Choose which buttons to show on the quote",
"copy": "显示复制按钮",
"tweet": "显示发推按钮",
"favourite": "显示收藏按钮"
@@ -125,8 +187,10 @@
"default": "常规问候",
"name": "您在问候中的名字",
"birthday": "生日",
+ "birthday_subtitle": "Show a Happy Birthday message when it is your birthday",
"birthday_age": "显示年龄",
- "birthday_date": "生日日期"
+ "birthday_date": "生日日期",
+ "additional": "Settings for the greeting display"
},
"background": {
"title": "背景",
@@ -134,7 +198,7 @@
"transition": "过渡动画",
"photo_information": "显示图片信息",
"show_map": "在图片信息内显示位置信息 (如果可用)",
- "category": "分类",
+ "categories": "Categories",
"buttons": {
"title": "显示顶部按钮",
"view": "仅显示背景",
@@ -143,6 +207,7 @@
},
"effects": {
"title": "背景特效",
+ "subtitle": "Add effects to the background images",
"blur": "模糊程度",
"brightness": "更改亮度",
"filters": {
@@ -165,12 +230,16 @@
},
"source": {
"title": "来源",
+ "subtitle": "Select where to get background images from",
"api": "背景来源",
"custom_background": "自定义背景 (支持图片/视频)",
"custom_colour": "自定义背景颜色",
"upload": "选择",
"add_colour": "添加颜色",
"add_background": "继续添加背景",
+ "drop_to_upload": "Drop to upload",
+ "formats": "Available formats: {list}",
+ "select": "Or Select",
"add_url": "Add URL",
"disabled": "已禁用",
"loop_video": "循环播放",
@@ -181,30 +250,44 @@
"high": "高画质",
"normal": "普通画质",
"datasaver": "省流模式"
- }
+ },
+ "custom_title": "Custom Images",
+ "custom_description": "Select images from your local computer",
+ "remove": "Remove Image"
},
+ "display": "Display",
+ "display_subtitle": "Change how background and photo information are loaded",
+ "api": "API Settings",
+ "api_subtitle": "Options for getting an image from an external service (API)",
"interval": {
"title": "更改频率",
+ "subtitle": "Change how often the background is updated",
"minute": "每分钟",
"half_hour": "每半小时",
"hour": "每小时",
"day": "每天",
"month": "每月"
- }
+ },
+ "category": "分类"
},
"search": {
"title": "搜索栏",
+ "additional": "Additional options for search widget display and functionality",
"search_engine": "搜索引擎",
+ "search_engine_subtitle": "Choose search engine to use in the search bar",
"custom": "自定义搜索链接",
"autocomplete": "搜索联想",
"autocomplete_provider": "联想功能提供引擎",
+ "autocomplete_provider_subtitle": "Search engine to use for autocomplete dropdown results",
"voice_search": "语音搜索",
- "dropdown": "搜索框左侧显示搜索引擎选择框"
+ "dropdown": "搜索框左侧显示搜索引擎选择框",
+ "focus": "Focus on tab open"
},
"weather": {
"title": "天气",
"location": "位置",
"auto": "自动定位",
+ "widget_type": "Widget Type",
"temp_format": {
"title": "温度单位",
"celsius": "摄氏度",
@@ -223,23 +306,53 @@
"min_temp": "最低温度",
"max_temp": "最高温度",
"atmospheric_pressure": "大气压"
- }
+ },
+ "options": {
+ "basic": "Basic",
+ "standard": "Standard",
+ "expanded": "Expanded",
+ "custom": "Custom"
+ },
+ "custom_settings": "Custom Settings"
},
"quicklinks": {
"title": "快捷方式",
+ "additional": "Additional settings for quick links display and functions",
"open_new": "在新标签页打开",
"tooltip": "光标停留时下方显示标题",
- "text_only": "仅显示标题"
+ "text_only": "仅显示标题",
+ "add_link": "Add Link",
+ "no_quicklinks": "No quicklinks",
+ "edit": "Edit",
+ "style": "Style",
+ "options": {
+ "icon": "Icon",
+ "text_only": "Text Only",
+ "metro": "Metro"
+ },
+ "styling": "Quick Links Styling",
+ "styling_description": "Customise Quick Links appearance"
},
"message": {
"title": "消息",
"add": "继续添加消息",
- "text": "文本"
+ "messages": "Messages",
+ "text": "文本",
+ "no_messages": "No messages",
+ "add_some": "Go ahead and add some.",
+ "content": "Message Content"
},
"appearance": {
"title": "外观",
+ "style": {
+ "title": "Widget Style",
+ "description": "Choose between the two styles, legacy (enabled for pre 7.0 users) and our slick modern styling.",
+ "legacy": "Legacy",
+ "new": "New"
+ },
"theme": {
"title": "主题",
+ "description": "Change the theme of the Mue widgets and modals",
"auto": "自动选择",
"light": "日间主题",
"dark": "夜间主题"
@@ -248,7 +361,9 @@
"title": "右上方功能键",
"notes": "便签",
"refresh": "刷新键",
+ "refresh_subtitle": "Choose what is refreshed when you click the refresh button",
"hover": "Only display on hover",
+ "additional": "Modify navbar style and which buttons you want to display",
"refresh_options": {
"none": "不显示",
"page": "页面"
@@ -256,6 +371,7 @@
},
"font": {
"title": "字体",
+ "description": "Change the font used in Mue",
"custom": "自定义字体",
"google": "从 Google Fonts 导入",
"weight": {
@@ -278,6 +394,7 @@
},
"accessibility": {
"title": "无障碍设定",
+ "description": "Accessibility settings for Mue",
"animations": "动画效果",
"text_shadow": "加深字体阴影",
"widget_zoom": "小部件缩放",
@@ -291,7 +408,9 @@
"advanced": {
"title": "高级",
"offline_mode": "启用离线模式",
+ "offline_subtitle": "When enabled, all requests to online services will be disabled.",
"data": "数据和设置",
+ "data_subtitle": "Choose whether to export your Mue settings to your computer, import an existing settings file, or reset your settings to their default values",
"reset_modal": {
"title": "警告",
"question": "您想要重置 Mue 的所有设置吗?",
@@ -300,10 +419,13 @@
},
"customisation": "自定义",
"custom_css": "自定义 CSS",
+ "custom_css_subtitle": "Make Mue's styling customised to you with Cascading Style Sheets (CSS).",
"custom_js": "自定义 JS",
"tab_name": "新标签页名称",
+ "tab_name_subtitle": "Change the name of the tab that appears in your browser",
"timezone": {
"title": "时区",
+ "subtitle": "Choose a timezone from the list instead of the automatic default from your computer",
"automatic": "自动"
},
"experimental_warning": "请注意 Mue 团队无法提供实验性功能的支持。若您遇到问题,请先关闭实验性功能,再寻求帮助。"
@@ -320,30 +442,9 @@
"settings_changed": "更改的设置",
"addons_installed": "添加的插件"
},
- "usage": "启用统计"
- },
- "keybinds": {
- "title": "快捷键",
- "recording": "等待按下快捷键...",
- "click_to_record": "点击后输入快捷键",
- "background": {
- "favourite": "收藏背景",
- "maximise": "仅显示背景",
- "download": "下载背景",
- "show_info": "显示背景图片信息"
- },
- "quote": {
- "favourite": "收藏名言",
- "copy": "复制名言",
- "tweet": "发推名言"
- },
- "notes": {
- "pin": "贴住便签",
- "copy": "复制便签"
- },
- "search": "移动光标到搜索框",
- "quicklinks": "显示添加快捷方式对话框",
- "modal": "显示设置"
+ "usage": "启用统计",
+ "achievements": "Achievements",
+ "unlocked": "{count} Unlocked"
},
"experimental": {
"title": "实验性功能",
@@ -374,6 +475,8 @@
},
"contact_us": "联系我们",
"support_mue": "支持 Mue",
+ "support_subtitle": "As Mue is entirely free, we rely on donations to cover the server bills and fund development",
+ "support_donate": "Donate",
"resources_used": {
"title": "使用资源",
"bg_images": "离线背景"
@@ -391,25 +494,44 @@
}
},
"marketplace": {
+ "by": "by {author}",
+ "all": "All",
+ "learn_more": "Learn More",
"photo_packs": "图片包",
"quote_packs": "名言包",
"preset_settings": "预设设定",
"no_items": "本类别为空",
+ "collection": "Collection",
+ "explore_collection": "Explore Collection",
+ "collections": "Collections",
+ "cant_find": "Can't find what you're looking for?",
+ "knowledgebase_one": "Visit the",
+ "knowledgebase_two": "knowledgebase",
+ "knowledgebase_three": "to create your own.",
"product": {
"overview": "总览",
"information": "信息",
"last_updated": "更新日期",
+ "description": "Description",
+ "show_more": "Show More",
+ "show_less": "Show Less",
+ "show_all": "Show All",
+ "showing": "Showing",
+ "no_images": "No. Images",
+ "no_quotes": "No. Quotes",
"version": "版本",
"author": "作者",
+ "part_of": "Part of",
+ "explore": "Explore",
"buttons": {
"addtomue": "添加至 Mue",
"remove": "卸载",
- "update_addon": "Update Add-on"
+ "update_addon": "Update Add-on",
+ "back": "Back",
+ "report": "Report"
},
- "quote_warning": {
- "title": "注意",
- "description": "本名言包会连接到可能会跟踪您的外部服务器!"
- }
+ "setting": "Setting",
+ "value": "Value"
},
"offline": {
"title": "您目前似乎离线",
@@ -427,6 +549,7 @@
},
"sideload": {
"title": "上传插件",
+ "description": "Install a Mue addon not on the marketplace from your computer",
"failed": "Failed to sideload addon",
"errors": {
"no_name": "No name provided",
@@ -445,12 +568,35 @@
},
"create": {
"title": "创建",
+ "example": "Example",
"other_title": "创建插件",
+ "create_type": "Create {type} Pack",
+ "types": {
+ "settings": "Preset Settings Pack",
+ "photos": "Photo Pack",
+ "quotes": "Quotes Pack"
+ },
+ "descriptions": {
+ "settings": "",
+ "photos": "Collection of photos relating to a topic.",
+ "quotes": "Collection of quotes relating to a topic.",
+ "photo_pack": "",
+ "quote_pack": ""
+ },
+ "information": "Information",
+ "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
+ "import_custom": "Import from custom settings.",
+ "publishing": {
+ "title": "Next step, Publishing...",
+ "subtitle": "Visit the Mue Knowledgebase on information on how to publish your newly created addon.",
+ "button": "Learn more"
+ },
"metadata": {
"name": "名称",
"icon_url": "图标URL",
"screenshot_url": "示例图片URL",
- "description": "描述"
+ "description": "描述",
+ "example": "Download example"
},
"finish": {
"title": "完成",
@@ -494,7 +640,15 @@
"sections": {
"intro": {
"title": "欢迎使用 Mue 新标签插件",
- "description": "感谢您的安装。祝您使用愉快。"
+ "description": "感谢您的安装。祝您使用愉快。",
+ "notices": {
+ "discord_title": "Join our Discord",
+ "discord_description": "Talk with the Mue community and developers",
+ "discord_join": "Join",
+ "github_title": "Contribute on GitHub",
+ "github_description": "Report bugs, add features or donate",
+ "github_open": "Open"
+ }
},
"language": {
"title": "更改语言",
@@ -505,6 +659,12 @@
"description": "Mue 支持日间和夜间主题,或者设置为自动选择,主题将跟随系统主题自动切换",
"tip": "使用自动选择将使用您的电脑的主题。这个设置也会影响设置界面和一些小组件的主题,比如天气和便签。"
},
+ "style": {
+ "title": "Choose a style",
+ "description": "Mue currently offers the choice between the legacy styling and the newly released modern styling.",
+ "legacy": "Legacy",
+ "modern": "Modern"
+ },
"settings": {
"title": "导入设置",
"description": "在新设备上安装 Mue? 可以直接导入之前的设置!",
@@ -539,6 +699,10 @@
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
"continue": "Continue setup"
}
+ },
+ "share": {
+ "copy_link": "Copy link",
+ "email": "Email"
}
},
"toasts": {
@@ -549,6 +713,8 @@
"uninstalled": "卸载成功",
"updated": "Successfully updated",
"error": "发生错误",
- "imported": "导入成功"
+ "imported": "导入成功",
+ "no_storage": "Not enough storage",
+ "link_copied": "Link copied"
}
}
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 00000000..2bf7c712
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,27 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import path from 'path';
+
+const isProd = process.env.NODE_ENV === 'production';
+
+export default defineConfig({
+ plugins: [react()],
+ server: {
+ hmr: {
+ protocol: 'ws',
+ host: 'localhost',
+ },
+ },
+ build: {
+ minify: isProd,
+ },
+ resolve: {
+ extensions: ['.js', '.jsx'],
+ alias: {
+ components: path.resolve(__dirname, './src/components'),
+ modules: path.resolve(__dirname, './src/modules'),
+ translations: path.resolve(__dirname, './src/translations'),
+ scss: path.resolve(__dirname, './src/scss'),
+ },
+ },
+});
diff --git a/webpack.config.js b/webpack.config.js
deleted file mode 100644
index 40ad280a..00000000
--- a/webpack.config.js
+++ /dev/null
@@ -1,84 +0,0 @@
-const path = require('path');
-const HtmlWebpackPlugin = require('html-webpack-plugin');
-const CopyPlugin = require('copy-webpack-plugin');
-const MiniCssExtractPlugin = require('mini-css-extract-plugin');
-
-module.exports = {
- entry: path.resolve(__dirname, './src/index.js'),
- mode: 'development',
- performance: {
- hints: false
- },
- module: {
- rules: [{
- test: /\.(js|jsx)$/,
- exclude: /node_modules/,
- use: ['babel-loader']
- },
- {
- test: /\.(|sc|c)ss$/,
- use: [
- {
- loader: MiniCssExtractPlugin.loader,
- options: {
- publicPath: ''
- },
- },
- 'css-loader',
- 'sass-loader'
- ],
- },
- {
- test: /\.(woff|woff2|svg)$/,
- type: 'asset/resource'
- },
- {
- test: /\.js$/,
- enforce: 'pre',
- use: ['source-map-loader']
- }]
- },
- resolve: {
- extensions: ['.js', '.jsx'],
- alias: {
- components: path.resolve(__dirname, './src/components'),
- modules: path.resolve(__dirname, './src/modules'),
- translations: path.resolve(__dirname, './src/translations')
- }
- },
- output: {
- path: path.resolve(__dirname, './build'),
- filename: '[name].[chunkhash].js',
- chunkFilename: '[id].[chunkhash].chunk.js',
- clean: true
- },
- devServer: {
- static: path.resolve(__dirname, './build'),
- open: true,
- port: 3000
- },
- plugins: [
- new HtmlWebpackPlugin({
- template: path.resolve(__dirname, './public/index.html')
- }),
- new CopyPlugin({
- patterns: [{
- from: 'public/icons',
- to: 'icons'
- },
- {
- from: 'public/offline-images',
- to: 'offline-images'
- },
- {
- from: 'public/welcome-images',
- to: 'welcome-images'
- }
- ]
- }),
- new MiniCssExtractPlugin({
- filename: '[name].[chunkhash].css',
- chunkFilename: '[id].[chunkhash].chunk.css'
- }),
- ]
-};