diff --git a/.eslintignore b/.eslintignore index 8e747f5b..a710e413 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,2 @@ vendor/ -vendor-overwrites/* -!vendor-overwrites/colorpicker -!vendor-overwrites/csslint +vendor-overwrites/ diff --git a/.eslintrc.yml b/.eslintrc.yml index 0871bcad..ffcbf8ce 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -8,6 +8,9 @@ env: es6: true webextensions: true +globals: + require: readonly # in polyfill.js + rules: accessor-pairs: [2] array-bracket-spacing: [2, never] @@ -19,7 +22,7 @@ rules: brace-style: [2, 1tbs, {allowSingleLine: false}] camelcase: [2, {properties: never}] class-methods-use-this: [2] - comma-dangle: [0] + comma-dangle: [2, {arrays: always-multiline, objects: always-multiline}] comma-spacing: [2, {before: false, after: true}] comma-style: [2, last] complexity: [0] @@ -42,7 +45,15 @@ rules: id-blacklist: [0] id-length: [0] id-match: [0] - indent-legacy: [2, 2, {VariableDeclarator: 0, SwitchCase: 1}] + indent: [2, 2, { + SwitchCase: 1, + ignoreComments: true, + ignoredNodes: [ + "TemplateLiteral > *", + "ConditionalExpression", + "ForStatement" + ] + }] jsx-quotes: [0] key-spacing: [0] keyword-spacing: [2] @@ -86,7 +97,7 @@ rules: no-empty: [2, {allowEmptyCatch: true}] no-eq-null: [0] no-eval: [2] - no-ex-assign: [2] + no-ex-assign: [0] no-extend-native: [2] no-extra-bind: [2] no-extra-boolean-cast: [2] @@ -136,6 +147,9 @@ rules: no-proto: [2] no-redeclare: [2] no-regex-spaces: [2] + no-restricted-globals: [2, name, event] + # `name` and `event` (in Chrome) are built-in globals + # but we don't use these globals so it's most likely a mistake/typo no-restricted-imports: [0] no-restricted-modules: [2, domain, freelist, smalloc, sys] no-restricted-syntax: [2, WithStatement] @@ -163,7 +177,7 @@ rules: no-unreachable: [2] no-unsafe-finally: [2] no-unsafe-negation: [2] - no-unused-expressions: [1] + no-unused-expressions: [2] no-unused-labels: [0] no-unused-vars: [2, {args: after-used}] no-use-before-define: [2, nofunc] @@ -189,7 +203,7 @@ rules: prefer-const: [1, {destructuring: all, ignoreReadBeforeAssign: true}] quote-props: [0] quotes: [1, single, avoid-escape] - radix: [2, as-needed] + radix: [2, always] require-jsdoc: [0] require-yield: [2] semi-spacing: [2, {before: false, after: true}] @@ -220,3 +234,7 @@ overrides: webextensions: false parserOptions: ecmaVersion: 2017 + + - files: ["**/*worker*.js"] + env: + worker: true diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 462d3f18..00000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -* **Browser**: -* **Operating System**: -* **Stylus Version**: -* **Screenshot**: - - diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..07ddd820 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,48 @@ +--- +name: Bug Report +about: Create a report about a bug you experienced while using Stylus. +title: "[Bug] Replace with title" +assignees: '' +--- + + + + + +# Bug Report + +### Bug Description + + +### Screenshots + + +### CSS Code + + +### System Information + + +- OS: +- Browser: +- Stylus Version: + +### Additional Context + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7714d1c..1dddcfb6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,18 +3,12 @@ on: [push, pull_request] jobs: test: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - node: ['10', '12', '14'] - - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v2 with: - node-version: ${{ matrix.node }} + node-version: '14' - run: npm install - run: npm test diff --git a/README.md b/README.md index 16d56267..62538abd 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,9 @@ Stylus is a fork of Stylish for Chrome, also compatible with Firefox as a WebExt ## Screenshots -![Style manager](https://user-images.githubusercontent.com/1310400/34453460-214eaa5c-ed67-11e7-843b-d8960b71db6e.png) -![Style editor](https://user-images.githubusercontent.com/1310400/34459585-3932cd94-ee05-11e7-9a1b-679522dddfb3.png) -![Popup config for usercss](https://user-images.githubusercontent.com/1310400/34453462-218a589a-ed67-11e7-9040-7d0469eeadc3.png) -![Popup inline search](https://user-images.githubusercontent.com/1310400/34453463-21a44368-ed67-11e7-93b2-e1c8f5aac868.png) -![Style manager config for usercss](https://user-images.githubusercontent.com/1310400/34453464-21bdaf9c-ed67-11e7-8517-62d2f02e1918.png) -![Options](https://user-images.githubusercontent.com/1310400/34453461-216aee4c-ed67-11e7-92db-ea21c1da5826.png) +Manager | Editor | Popup search | Popup config | Manager config | Options +-|-|-|-|-|- +![Style manager](https://user-images.githubusercontent.com/1310400/34453460-214eaa5c-ed67-11e7-843b-d8960b71db6e.png) | ![Style editor](https://user-images.githubusercontent.com/1310400/34459585-3932cd94-ee05-11e7-9a1b-679522dddfb3.png) | ![Popup inline search](https://user-images.githubusercontent.com/1310400/34453463-21a44368-ed67-11e7-93b2-e1c8f5aac868.png) | ![Popup config for usercss](https://user-images.githubusercontent.com/1310400/34453462-218a589a-ed67-11e7-9040-7d0469eeadc3.png) | ![Style manager config for usercss](https://user-images.githubusercontent.com/1310400/34453464-21bdaf9c-ed67-11e7-8517-62d2f02e1918.png) | ![Options](https://user-images.githubusercontent.com/1310400/34453461-216aee4c-ed67-11e7-92db-ea21c1da5826.png) ## Help @@ -47,15 +44,15 @@ See our [contributing](./.github/CONTRIBUTING.md) page for more details. ## License -Inherited code from the original [Stylish](https://github.com/stylish-userstyles/stylish/): +Inherited code from the original [Stylish](https://github.com/stylish-userstyles/stylish/): Copyright © 2005-2014 [Jason Barnabe](jason.barnabe@gmail.com) -Current Stylus: +Current Stylus: Copyright © 2017-2019 [Stylus Team](https://github.com/openstyles/stylus/graphs/contributors) -**[GNU GPLv3](./LICENSE)** +**[GNU GPLv3](./LICENSE)** This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/_locales/ar/messages.json b/_locales/ar/messages.json index f35f7fca..96d320b4 100644 --- a/_locales/ar/messages.json +++ b/_locales/ar/messages.json @@ -1,19 +1,18 @@ { + "InaccessibleFileHint": { + "message": "Stylus لا يستطيع الوصول الى بعض انواع الملفات ( ملفات pdf و json )" + }, "addStyleLabel": { - "message": "كتابة نمط جديد", - "description": "Label for the button to go to the add style page" + "message": "كتابة نمط جديد" }, "addStyleTitle": { - "message": "إضافة نمط", - "description": "Title of the page for adding styles" + "message": "إضافة نمط" }, "appliesAdd": { - "message": "إضافة", - "description": "Label for the button to add an 'applies' entry" + "message": "إضافة" }, "appliesDisplay": { "message": "ينطبق على: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,84 +20,64 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "والمزيد", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "و المزيد" }, "appliesDomainOption": { - "message": "عناوين URL في النطاق", - "description": "Option to make the style apply to the entered string as a domain" + "message": "عناوين URL في النطاق" }, "appliesHelp": { - "message": "استخدم عناصر تحكم 'ينطبق على' لتقييد عناوين URL التي ينطبق عليها الرمز في هذا القسم.", - "description": "Help text for 'applies to' section" + "message": "استخدم عناصر تحكم 'ينطبق على' لتقييد عناوين URL التي ينطبق عليها الرمز في هذا القسم." }, "appliesLabel": { - "message": "ينطبق على", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "ينطبق على" }, "appliesRegexpOption": { - "message": "عناوين URL التي تطابق regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "عناوين URL التي تطابق regexp" }, "appliesRemove": { - "message": "إزالة", - "description": "Label for the button to remove an 'applies' entry" + "message": "إزالة" }, "appliesSpecify": { - "message": "تحديد", - "description": "Label for the button to make a style apply only to specific sites" + "message": "تحديد" }, "appliesToEverything": { - "message": "كل شيء", - "description": "Text displayed for styles that apply to all sites" + "message": "كل شيء" }, "appliesUrlOption": { - "message": "عنوان URL", - "description": "Option to make the style apply to the entered string as a URL" + "message": "عنوان URL" }, "appliesUrlPrefixOption": { - "message": "عناوين URL البادئة بـ", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "عناوين URL البادئة بـ" }, "checkAllUpdates": { - "message": "البحث عن تحديثات لكل الأنماط", - "description": "Label for the button to check all styles for updates" + "message": "البحث عن تحديثات لكل الأنماط" }, "checkForUpdate": { - "message": "البحث عن تحديث", - "description": "Label for the button to check a single style for an update" + "message": "البحث عن تحديث" }, "checkingForUpdate": { - "message": "جارٍ البحث...", - "description": "Text to display when checking a style for an update" + "message": "جارٍ البحث..." }, "deleteStyleConfirm": { - "message": "هل تريد بالتأكيد حذف هذا النمط؟", - "description": "Confirmation before deleting a style" + "message": "هل تريد بالتأكيد حذف هذا النمط؟" }, "deleteStyleLabel": { - "message": "حذف", - "description": "Label for the button to delete a style" + "message": "حذف" }, "description": { - "message": "يمكنك تغيير نمط الويب باستخدام Stylus، وهي أداة لإدارة أنماط المستخدم. وتتيح Stylus لك بسهولة تثبيت المظاهر والأشكال الخارجية لكل من Google، وFacebook وYouTube وOrkut فضلاً عن الكثير جدًا من مواقع الويب الأخرى.", - "description": "Extension description" + "message": "يمكنك تغيير نمط الويب باستخدام Stylus، وهي أداة لإدارة أنماط المستخدم. وتتيح Stylus لك بسهولة تثبيت المظاهر والأشكال الخارجية لكل من Google، وFacebook وYouTube وOrkut فضلاً عن الكثير جدًا من مواقع الويب الأخرى." }, "disableStyleLabel": { - "message": "تعطيل", - "description": "Label for the button to disable a style" + "message": "تعطيل" }, "editStyleHeading": { - "message": "تعديل النمط", - "description": "Title of the page for editing styles" + "message": "تعديل النمط" }, "editStyleLabel": { - "message": "تعديل", - "description": "Label for the button to go to the edit style page" + "message": "تعديل" }, "editStyleTitle": { "message": "تعديل النمط $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -106,60 +85,46 @@ } }, "enableStyleLabel": { - "message": "تمكين", - "description": "Label for the button to enable a style" + "message": "تمكين" }, "findStylesForSite": { - "message": "البحث عن المزيد من الأنماط لموقع الويب هذا", - "description": "Text for a link that gets a list of styles for the current site" + "message": "البحث عن المزيد من الأنماط لموقع الويب هذا" }, "helpAlt": { - "message": "مساعدة", - "description": "Alternate text for help buttons" + "message": "مساعدة" }, "installUpdate": { - "message": "تثبيت التحديث", - "description": "Label for the button to install an update for a single style" + "message": "تثبيت التحديث" }, "manageHeading": { - "message": "الأنماط المثبتة", - "description": "Heading for the manage page" + "message": "الأنماط المثبتة" }, "noStylesForSite": { - "message": "لم يتم تثبيت أي أنماط لموقع الويب هذا.", - "description": "Text displayed when no styles are installed for the current site" + "message": "لم يتم تثبيت أي أنماط لموقع الويب هذا." }, "openManage": { - "message": "إدارة الأنماط المثبتة", - "description": "Link to open the manage page." + "message": "إدارة الأنماط المثبتة" }, "sectionAdd": { - "message": "إضافة قسم آخر", - "description": "Label for the button to add a section" + "message": "إضافة قسم آخر" }, "sectionCode": { - "message": "الرمز", - "description": "Label for the code for a section" + "message": "الرمز" }, "sectionRemove": { - "message": "إزالة القسم", - "description": "Label for the button to remove a section" + "message": "إزالة القسم" }, "styleCancelEditLabel": { - "message": "رجوع للإدارة", - "description": "Label for cancel button for style editing" + "message": "رجوع للإدارة" }, "styleChangesNotSaved": { - "message": "لقد أجريت تغييرات على هذا النمط بدون حفظها.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "لقد أجريت تغييرات على هذا النمط بدون حفظها." }, "styleEnabledLabel": { - "message": "ممكّن", - "description": "Label for the enabled state of styles" + "message": "ممكّن" }, "styleInstall": { "message": "هل تريد تثبيت '$stylename$' في Stylus؟", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -167,20 +132,16 @@ } }, "styleMissingName": { - "message": "أدخل اسمًا", - "description": "Error displayed when user saves without providing a name" + "message": "أدخل اسمًا" }, "styleSaveLabel": { - "message": "حفظ", - "description": "Label for save button for style editing" + "message": "حفظ" }, "styleToMozillaFormatHelp": { - "message": "يمكن استخدام تنسيق موزيلا للرمز باستخدام Stylus للمتصفح فايرفوكس ويمكن إرساله إلى userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "يمكن استخدام تنسيق موزيلا للرمز باستخدام Stylus للمتصفح فايرفوكس ويمكن إرساله إلى userstyles.org." }, "updateCheckFailBadResponseCode": { "message": "أخفق التحديث - استجاب الخادم بالرمز $code$", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -188,15 +149,12 @@ } }, "updateCheckFailServerUnreachable": { - "message": "أخفق التحديث - الخادم يتعذر الوصول إليه.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "أخفق التحديث - الخادم يتعذر الوصول إليه." }, "updateCheckSucceededNoUpdate": { - "message": "النمط محدّث.", - "description": "Text that displays when an update check completed and no update is available" + "message": "النمط محدّث." }, "updateCompleted": { - "message": "اكتمل التحديث.", - "description": "Text that displays when an update completed" + "message": "اكتمل التحديث." } -} \ No newline at end of file +} diff --git a/_locales/bg/messages.json b/_locales/bg/messages.json index fce7dc43..0c1ca1b6 100644 --- a/_locales/bg/messages.json +++ b/_locales/bg/messages.json @@ -1,19 +1,15 @@ { "addStyleLabel": { - "message": "Писане на нов стил", - "description": "Label for the button to go to the add style page" + "message": "Писане на нов стил" }, "addStyleTitle": { - "message": "Добавяне на стил", - "description": "Title of the page for adding styles" + "message": "Добавяне на стил" }, "appliesAdd": { - "message": "Добавяне", - "description": "Label for the button to add an 'applies' entry" + "message": "Добавяне" }, "appliesDisplay": { "message": "Приложимо за: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,196 +17,148 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "и още", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "и още" }, "appliesDomainOption": { - "message": "Адреси на домейна", - "description": "Option to make the style apply to the entered string as a domain" + "message": "Адреси на домейна" }, "appliesHelp": { - "message": "Използвайте 'Приложимо за', за да ограничите адресите, за които се отнася кода в отдела.", - "description": "Help text for 'applies to' section" + "message": "Използвайте 'Приложимо за', за да ограничите адресите, за които се отнася кода в отдела." }, "appliesLabel": { - "message": "Приложимо за", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Приложимо за" }, "appliesRegexpOption": { - "message": "Адреси, съвпадащи с регулярен израз", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Адреси, съвпадащи с регулярен израз" }, "appliesRemove": { - "message": "Премахване", - "description": "Label for the button to remove an 'applies' entry" + "message": "Премахване" }, "appliesSpecify": { - "message": "Уточняване", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Уточняване" }, "appliesToEverything": { - "message": "Всичко", - "description": "Text displayed for styles that apply to all sites" + "message": "Всичко" }, "appliesUrlOption": { - "message": "Адрес", - "description": "Option to make the style apply to the entered string as a URL" + "message": "Адрес" }, "appliesUrlPrefixOption": { - "message": "Адреси, започващи с", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "Адреси, започващи с" }, "applyAllUpdates": { - "message": "Прилагане на всички обновления", - "description": "Label for the button to apply all detected updates" + "message": "Прилагане на всички обновления" }, "backupButtons": { - "message": "Резервни копия", - "description": "Heading for backup" + "message": "Резервни копия" }, "backupMessage": { - "message": "Изберете файл или го влачете до страницата.", - "description": "Message for backup" + "message": "Изберете файл или го влачете до страницата." }, "bckpInstStyles": { - "message": "Изнасяне на стилове", - "description": "" + "message": "Изнасяне на стилове" }, "checkAllUpdates": { - "message": "Проверка на всички стилове за обновления", - "description": "Label for the button to check all styles for updates" + "message": "Проверка на всички стилове за обновления" }, "checkAllUpdatesForce": { - "message": "Повторна проверка", - "description": "Label for the button to apply all detected updates" + "message": "Повторна проверка" }, "checkForUpdate": { - "message": "Проверка за обновления", - "description": "Label for the button to check a single style for an update" + "message": "Проверка за обновления" }, "checkingForUpdate": { - "message": "Проверяване...", - "description": "Text to display when checking a style for an update" + "message": "Проверяване..." }, "cm_autocompleteOnTyping": { - "message": "Автоматично завършване при въвеждане", - "description": "Label for the checkbox in the style editor." + "message": "Автоматично завършване при въвеждане" }, "cm_indentWithTabs": { - "message": "Подпрозорци с умен отстъп", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Подпрозорци с умен отстъп" }, "cm_keyMap": { - "message": "Клавиши", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Клавиши" }, "cm_lineWrapping": { - "message": "Пренасяне", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Пренасяне" }, "cm_matchHighlight": { - "message": "Осветяване", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Осветяване" }, "cm_matchHighlightSelection": { - "message": "Само избраното", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Само избраното" }, "cm_matchHighlightToken": { - "message": "Низа под показалеца", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Низа под показалеца" }, "cm_resizeGripHint": { - "message": "Щракнете два пъти за възстановяване/увеличаване на височината", - "description": "Tooltip for the resize grip in style editor" + "message": "Щракнете два пъти за възстановяване/увеличаване на височината" }, "cm_smartIndent": { - "message": "Умен отстъп", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Умен отстъп" }, "cm_tabSize": { - "message": "Табулация", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Табулация" }, "cm_theme": { - "message": "Тема", - "description": "Label for the style editor's CSS theme." + "message": "Тема" }, "confirmCancel": { - "message": "Отказ", - "description": "" + "message": "Отказ" }, "confirmDelete": { - "message": "Изтриване", - "description": "" + "message": "Изтриване" }, "confirmNo": { - "message": "Не", - "description": "'No' button in a confirm dialog" + "message": "Не" }, "confirmOK": { - "message": "Добре", - "description": "" + "message": "Добре" }, "confirmStop": { - "message": "Спиране", - "description": "'Stop' button in a confirm dialog" + "message": "Спиране" }, "confirmYes": { - "message": "Да", - "description": "'Yes' button in a confirm dialog" + "message": "Да" }, "dbError": { - "message": "Възникна грешка с базата от данни. Искате ли да посетите страницата с възможни решения?", - "description": "Prompt when a DB error is encountered" + "message": "Възникна грешка с базата от данни. Искате ли да посетите страницата с възможни решения?" }, "defaultTheme": { - "message": "по подразбиране", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "по подразбиране" }, "deleteStyleConfirm": { - "message": "Сигурни ли сте, че искате да изтриете стила?", - "description": "Confirmation before deleting a style" + "message": "Сигурни ли сте, че искате да изтриете стила?" }, "deleteStyleLabel": { - "message": "Изтриване", - "description": "Label for the button to delete a style" + "message": "Изтриване" }, "description": { - "message": "Пресъздайте стила на Мрежата със Стайлус, разширението за стилове. То ви позволява лесно да инсталиране теми за много сайтове.", - "description": "Extension description" + "message": "Пресъздайте стила на Мрежата със Стайлус, разширението за стилове. То ви позволява лесно да инсталиране теми за много сайтове." }, "disableAllStyles": { - "message": "Изключване на всички стилове", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Изключване на всички стилове" }, "disableStyleLabel": { - "message": "Изключване", - "description": "Label for the button to disable a style" + "message": "Изключване" }, "dragDropMessage": { - "message": "Пуснете резервното копие където и да е по страницата, за да го внесете.", - "description": "Drag'n'drop message" + "message": "Пуснете резервното копие където и да е по страницата, за да го внесете." }, "editDeleteText": { - "message": "Изтриване", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Изтриване" }, "editGotoLine": { - "message": "Отиване на ред", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Отиване на ред" }, "editStyleHeading": { - "message": "Редактиране на стила", - "description": "Title of the page for editing styles" + "message": "Редактиране на стила" }, "editStyleLabel": { - "message": "Редактиране", - "description": "Label for the button to go to the edit style page" + "message": "Редактиране" }, "editStyleTitle": { "message": "Редактиране на стила $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -218,116 +166,88 @@ } }, "enableStyleLabel": { - "message": "Включване", - "description": "Label for the button to enable a style" + "message": "Включване" }, "exportLabel": { - "message": "Изнасяне", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Изнасяне" }, "findStylesForSite": { - "message": "Още стилове за този сайт", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Още стилове за този сайт" }, "genericDisabledLabel": { - "message": "Изключено", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Изключено" }, "genericHistoryLabel": { - "message": "Хронология", - "description": "Used in various places to show a history log of something" + "message": "Хронология" }, "helpAlt": { - "message": "Помощ", - "description": "Alternate text for help buttons" + "message": "Помощ" }, "helpKeyMapCommand": { - "message": "Въведете име", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Въведете име" }, "helpKeyMapHotkey": { - "message": "Натиснете клавиш", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Натиснете клавиш" }, "importAppendLabel": { - "message": "Прибавяне към стила", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Прибавяне към стила" }, "importAppendTooltip": { - "message": "Прибавяне на внесения стил към текущия", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Прибавяне на внесения стил към текущия" }, "importLabel": { - "message": "Внасяне", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Внасяне" }, "importReplaceLabel": { - "message": "Презаписване на стила", - "description": "Label for the button to import and overwrite current style" + "message": "Презаписване на стила" }, "importReplaceTooltip": { - "message": "Презаписване на съдържанието на текщия стил с това от внесения", - "description": "Label for the button to import and overwrite current style" + "message": "Презаписване на съдържанието на текщия стил с това от внесения" }, "importReportLegendAdded": { - "message": "добавени", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "добавени" }, "importReportLegendIdentical": { - "message": "пропуснати еднакви", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "пропуснати еднакви" }, "importReportLegendInvalid": { - "message": "пропуснати невалидни", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "пропуснати невалидни" }, "importReportLegendUpdatedBoth": { - "message": "с обновени код и метаданни", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "с обновени код и метаданни" }, "importReportLegendUpdatedCode": { - "message": "с обновен код", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "с обновен код" }, "importReportLegendUpdatedMeta": { - "message": "с обновени метаданни", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "с обновени метаданни" }, "importReportTitle": { - "message": "Внасянето на стилове завърши", - "description": "Title of the report shown after importing styles" + "message": "Внасянето на стилове завърши" }, "importReportUnchanged": { - "message": "Нищо не беше променено.", - "description": "Message in the report shown after importing styles" + "message": "Нищо не беше променено." }, "importReportUndone": { - "message": "върнати стила", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "върнати стила" }, "importReportUndoneTitle": { - "message": "Внасянето беше отменено", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Внасянето беше отменено" }, "installUpdate": { - "message": "Инсталиране на обновлението", - "description": "Label for the button to install an update for a single style" + "message": "Инсталиране на обновлението" }, "linkGetHelp": { - "message": "Помощ", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Помощ" }, "linkGetStyles": { - "message": "Вземете стилове", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Вземете стилове" }, "linterIssues": { - "message": "Проблеми", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Проблеми" }, "linterIssuesHelp": { "message": "Проблеми, намерени от $link$ при следните правила:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -335,244 +255,181 @@ } }, "manageFavicons": { - "message": "Иконки на приложимите сайтовете", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Иконки на приложимите сайтовете" }, "manageFaviconsGray": { - "message": "Сиви", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Сиви" }, "manageFaviconsHelp": { - "message": "Разширението използва външна услуга https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Разширението използва външна услуга https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Филтри", - "description": "Label for filters container" + "message": "Филтри" }, "manageHeading": { - "message": "Инсталирани стилове", - "description": "Heading for the manage page" + "message": "Инсталирани стилове" }, "manageMaxTargets": { - "message": "Брой на видимите приложими адреси", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Брой на видимите приложими адреси" }, "manageNewUI": { - "message": "Нов интерфейс за управление", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Нов интерфейс за управление" }, "manageOnlyEnabled": { - "message": "Само включените стилове", - "description": "Checkbox to show only enabled styles" + "message": "Само включените стилове" }, "manageOnlyLocal": { - "message": "Само местно създадените стилове", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Само местно създадените стилове" }, "manageOnlyLocalTooltip": { - "message": "(стиловете, които не са инсталирани през userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(стиловете, които не са инсталирани през userstyles.org)" }, "manageOnlyUpdates": { - "message": "Само стилове с обновления или проблеми", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Само стилове с обновления или проблеми" }, "manageTitle": { - "message": "Стилове", - "description": "Title for the manage page" + "message": "Стилове" }, "menuShowBadge": { - "message": "Брой на активните стилове", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Брой на активните стилове" }, "noStylesForSite": { - "message": "Няма инсталирани стилове за сайта.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Няма инсталирани стилове за сайта." }, "openManage": { - "message": "Управление", - "description": "Link to open the manage page." + "message": "Управление" }, "openStylesManager": { - "message": "Управление на стиловете", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Управление на стиловете" }, "optionsActions": { - "message": "Действия", - "description": "" + "message": "Действия" }, "optionsAdvanced": { - "message": "Разширени", - "description": "" + "message": "Разширени" }, "optionsAdvancedContextDelete": { - "message": "Добавяне на 'Изтриване' в контекстното меню на редактора", - "description": "" + "message": "Добавяне на 'Изтриване' в контекстното меню на редактора" }, "optionsAdvancedExposeIframes": { - "message": "Разкриване на 'iframes' чрез HTML[stylus-iframe]", - "description": "" + "message": "Разкриване на 'iframes' чрез HTML[stylus-iframe]" }, "optionsBadgeDisabled": { - "message": "Цвят на фона, когато е изключено", - "description": "" + "message": "Цвят на фона, когато е изключено" }, "optionsBadgeNormal": { - "message": "Цвят на фона", - "description": "" + "message": "Цвят на фона" }, "optionsCheck": { - "message": "Обновяване на стиловете", - "description": "" + "message": "Обновяване на стиловете" }, "optionsCheckUpdate": { - "message": "Проверка и инсталиране на наличните обновления", - "description": "" + "message": "Проверка и инсталиране на наличните обновления" }, "optionsCustomizeBadge": { - "message": "Значка на иконката на лентата", - "description": "" + "message": "Значка на иконката на лентата" }, "optionsCustomizeIcon": { - "message": "Иконка на лентата със сечива", - "description": "" + "message": "Иконка на лентата със сечива" }, "optionsCustomizePopup": { - "message": "Падащ прозорец", - "description": "" + "message": "Падащ прозорец" }, "optionsCustomizeUpdate": { - "message": "Обновления", - "description": "" + "message": "Обновления" }, "optionsHeading": { - "message": "Настройки", - "description": "Heading for options section on manage page." + "message": "Настройки" }, "optionsIconDark": { - "message": "Тъмни теми", - "description": "" + "message": "Тъмни теми" }, "optionsIconLight": { - "message": "Светли теми", - "description": "" + "message": "Светли теми" }, "optionsOpen": { - "message": "Отваряне", - "description": "" + "message": "Отваряне" }, "optionsOpenManager": { - "message": "Управление на стиловете", - "description": "" + "message": "Управление на стиловете" }, "optionsPopupWidth": { - "message": "Ширина на падащия прозорец (в пиксели)", - "description": "" + "message": "Ширина на падащия прозорец (в пиксели)" }, "optionsReset": { - "message": "Зануляване на настройки на първоначалните стойности", - "description": "" + "message": "Зануляване на настройки на първоначалните стойности" }, "optionsResetButton": { - "message": "Зануляване на настройките", - "description": "" + "message": "Зануляване на настройките" }, "optionsSubheading": { - "message": "Още настройки", - "description": "Subheading for options section on manage page." + "message": "Още настройки" }, "optionsUpdateImportNote": { - "message": "При внасянето на резервни копия от стари версии или от Стайлиш направете ръчна проверка за обновления, за да сте сигурни, че стиловете са актуални.", - "description": "" + "message": "При внасянето на резервни копия от стари версии или от Стайлиш направете ръчна проверка за обновления, за да сте сигурни, че стиловете са актуални." }, "popupStylesFirst": { - "message": "Стилове преди командите", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Стилове преди командите" }, "prefShowBadge": { - "message": "Брой на активните стилове за текущия сайт", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Брой на активните стилове за текущия сайт" }, "replace": { - "message": "Заместване", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Заместване" }, "replaceAll": { - "message": "Заместване на всички", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Заместване на всички" }, "replaceWith": { - "message": "Заместване с", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Заместване с" }, "retrieveBckp": { - "message": "Внасяне на стилове", - "description": "" + "message": "Внасяне на стилове" }, "search": { - "message": "Търсене", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Търсене" }, "searchRegexp": { - "message": "Използвайте синтаксиса /re/ за търсене с регулярни изрази", - "description": "Label after the search input field in the editor shown on Ctrl-F" - }, - "searchStyles": { - "message": "Търсене на съдържанието", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "Използвайте синтаксиса /re/ за търсене с регулярни изрази" }, "sectionAdd": { - "message": "Добавяне на друг отдел", - "description": "Label for the button to add a section" + "message": "Добавяне на друг отдел" }, "sectionCode": { - "message": "Код", - "description": "Label for the code for a section" + "message": "Код" }, "sectionRemove": { - "message": "Премахване на отдела", - "description": "Label for the button to remove a section" + "message": "Премахване на отдела" }, "shortcuts": { - "message": "Клавишни комбинации", - "description": "Go to shortcut configuration" + "message": "Клавишни комбинации" }, "shortcutsNote": { - "message": "Задаване на клавишни комбинации", - "description": "" + "message": "Задаване на клавишни комбинации" }, "styleBadRegexp": { - "message": "Регулярният израз не е правилен.", - "description": "Validation message for a bad regexp in a style" + "message": "Регулярният израз не е правилен." }, "styleBeautify": { - "message": "Разкрасяване", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Разкрасяване" }, "styleBeautifyIndentConditional": { - "message": "Отстъп на @media, @supports", - "description": "CSS-beautifier option" + "message": "Отстъп на @media, @supports" }, "styleCancelEditLabel": { - "message": "Назад към стиловете", - "description": "Label for cancel button for style editing" + "message": "Назад към стиловете" }, "styleChangesNotSaved": { - "message": "Направили сте промени по стила без да ги запазите.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Направили сте промени по стила без да ги запазите." }, "styleEnabledLabel": { - "message": "Включено", - "description": "Label for the enabled state of styles" + "message": "Включено" }, "styleFromMozillaFormatPrompt": { - "message": "Поставете кода във формат на Мозила", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Поставете кода във формат на Мозила" }, "styleInstall": { "message": "Да се инсталира ли '$stylename$'?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -580,68 +437,52 @@ } }, "styleMissingName": { - "message": "Въведете име", - "description": "Error displayed when user saves without providing a name" + "message": "Въведете име" }, "styleMozillaFormatHeading": { - "message": "Формат на Мозила", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Формат на Мозила" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Стилът не е приложен поради неправилно използване на регулярни изрази", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Стилът не е приложен поради неправилно използване на регулярни изрази" }, "styleRegexpInvalidExplanation": { - "message": "Има правила на регулярни изрази, които не могат да бъдат компилирани.", - "description": "" + "message": "Има правила на регулярни изрази, които не могат да бъдат компилирани." }, "styleRegexpPartialExplanation": { - "message": "Стилът използва частично съвпадащи регулярни изрази и нарушава Спецификацията @document, която изисква пълно съвпадение на адреса. Засегнатите отдели не са приложени. Стилът вероятно е създаден в Stylish-for-Chrome, което неправилно проверява правилата на 'regexp()' още от първата версия (познат дефект).", - "description": "" + "message": "Стилът използва частично съвпадащи регулярни изрази и нарушава Спецификацията @document, която изисква пълно съвпадение на адреса. Засегнатите отдели не са приложени. Стилът вероятно е създаден в Stylish-for-Chrome, което неправилно проверява правилата на 'regexp()' още от първата версия (познат дефект)." }, "styleRegexpProblemTooltip": { - "message": "Брой на неприложените отдели поради неправилно използване на регулярни изрази", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Брой на неприложените отдели поради неправилно използване на регулярни изрази" }, "styleRegexpTestButton": { - "message": "Тест на регулярния израз", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Тест на регулярния израз" }, "styleRegexpTestFull": { - "message": "Съвпадащи подпрозорци", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Съвпадащи подпрозорци" }, "styleRegexpTestInvalid": { - "message": "Неправилните регулярни изрази са пропуснати", - "description": "RegExp test report: label for the invalid expressions" + "message": "Неправилните регулярни изрази са пропуснати" }, "styleRegexpTestNone": { - "message": "Няма съвпадащи подпрозорци", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Няма съвпадащи подпрозорци" }, "styleRegexpTestPartial": { - "message": "Не съвпада напълно, затова е пропуснато", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Не съвпада напълно, затова е пропуснато" }, "styleRegexpTestTitle": { - "message": "Списък със съвпадащи отворени подпрозорци (щракнете на адреса, за да се фокусира на подпрозореца)", - "description": "RegExp test report: title of the report" + "message": "Списък със съвпадащи отворени подпрозорци (щракнете на адреса, за да се фокусира на подпрозореца)" }, "styleSaveLabel": { - "message": "Запазване", - "description": "Label for save button for style editing" + "message": "Запазване" }, "styleToMozillaFormatHelp": { - "message": "Форматът на Мозила може да се подаде в userstyles.org и да се използва със Стайлиш (Stylish)", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Форматът на Мозила може да се подаде в userstyles.org и да се използва със Стайлиш (Stylish)" }, "styleToMozillaFormatTitle": { - "message": "Стил във формат на Мозила", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Стил във формат на Мозила" }, "styleUpdate": { "message": "Сигурни ли сте, че искате да обновите '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -649,44 +490,34 @@ } }, "stylusUnavailableForURL": { - "message": "Разширението не работи на такива страници.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Разширението не работи на такива страници." }, "stylusUnavailableForURLdetails": { - "message": "Като предпазна мярка, четецът забранява на разширенията да влияят на вградените страници (например chrome://version, about:addons, стандартната страница от Хром 61 и други), както и на страниците на други разширения. Достъпът до магазина с добавки на всеки четец също е ограничен.", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Като предпазна мярка, четецът забранява на разширенията да влияят на вградените страници (например chrome://version, about:addons, стандартната страница от Хром 61 и други), както и на страниците на други разширения. Достъпът до магазина с добавки на всеки четец също е ограничен." }, "toggleStyle": { - "message": "Превключване на стила", - "description": "Label for the checkbox to enable/disable a style" + "message": "Превключване на стила" }, "undo": { - "message": "Отмяна", - "description": "Button label" + "message": "Отмяна" }, "undoGlobal": { - "message": "Отмяна във всички отдели", - "description": "CSS-beautify global Undo button label" + "message": "Отмяна във всички отдели" }, "unreachableContentScript": { - "message": "Няма връзка със страницата. Презаредете подпрозореца.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Няма връзка със страницата. Презаредете подпрозореца." }, "unreachableFileHint": { - "message": "Разширението ще има достъп до адреси от типа file:// само ако включите съответната отметка на страницата chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Разширението ще има достъп до адреси от типа file:// само ако включите съответната отметка на страницата chrome://extensions." }, "updateAllCheckSucceededNoUpdate": { - "message": "Няма намерени обновления.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Няма намерени обновления." }, "updateAllCheckSucceededSomeEdited": { - "message": "Някои от стиловете не са проверени, за да не се загубят местните редакции. Обновленията могат да бъдат принудени с индивидуална проверка или с пускането на още една проверка за всички (местните промени ще бъдат презаписани).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Някои от стиловете не са проверени, за да не се загубят местните редакции. Обновленията могат да бъдат принудени с индивидуална проверка или с пускането на още една проверка за всички (местните промени ще бъдат презаписани)." }, "updateCheckFailBadResponseCode": { "message": "Неуспешно обновяване: сървърът отговори с код $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -694,47 +525,36 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Неуспешно обновяване: няма връзка със сървъра.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Неуспешно обновяване: няма връзка със сървъра." }, "updateCheckHistory": { - "message": "Хронология на проверките", - "description": "" + "message": "Хронология на проверките" }, "updateCheckManualUpdateForce": { - "message": "Инсталиране на обновлението (местните редакции ще бъдат презаписани)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Инсталиране на обновлението (местните редакции ще бъдат презаписани)" }, "updateCheckManualUpdateHint": { - "message": "Принудителното обновяване ще презапише местните редакции.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Принудителното обновяване ще презапише местните редакции." }, "updateCheckSkippedLocallyEdited": { - "message": "Стилът е бил местно редактиран.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Стилът е бил местно редактиран." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Стилът може да е бил местно редактиран.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Стилът може да е бил местно редактиран." }, "updateCheckSucceededNoUpdate": { - "message": "Стилът е обновен.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Стилът е обновен." }, "updateCompleted": { - "message": "Обновяването е завършено.", - "description": "Text that displays when an update completed" + "message": "Обновяването е завършено." }, "updatesCurrentlyInstalled": { - "message": "Инсталирани обновления:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." + "message": "Инсталирани обновления:" }, "writeStyleFor": { - "message": "Писане на стил за: ", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Писане на стил за: " }, "writeStyleForURL": { - "message": "този адрес", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "този адрес" } } diff --git a/_locales/bg_BG/messages.json b/_locales/bg_BG/messages.json index a52e967d..9e6a100f 100644 --- a/_locales/bg_BG/messages.json +++ b/_locales/bg_BG/messages.json @@ -1,19 +1,15 @@ { "addStyleLabel": { - "message": "Напиши нов стил", - "description": "Label for the button to go to the add style page" + "message": "Напиши нов стил" }, "addStyleTitle": { - "message": "Добави стил", - "description": "Title of the page for adding styles" + "message": "Добави стил" }, "appliesAdd": { - "message": "Добави", - "description": "Label for the button to add an 'applies' entry" + "message": "Добави" }, "appliesDisplay": { "message": "Прилага се към: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,136 +17,103 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "и още", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "и още" }, "appliesDomainOption": { - "message": "URLи на домейна", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLи на домейна" }, "appliesHelp": { - "message": "Използвайте \"Прилага се към\", за да ограничете адресите, за които ще работи кодът в тази секция.", - "description": "Help text for 'applies to' section" + "message": "Използвайте \"Прилага се към\", за да ограничете адресите, за които ще работи кодът в тази секция." }, "appliesLabel": { - "message": "Прилага се към", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Прилага се към" }, "appliesRegexpOption": { - "message": "Адреси, съвпадащи с regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Адреси, съвпадащи с regexp" }, "appliesRemove": { - "message": "Премахни", - "description": "Label for the button to remove an 'applies' entry" + "message": "Премахни" }, "appliesSpecify": { - "message": "Уточни", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Уточни" }, "appliesToEverything": { - "message": "Всички", - "description": "Text displayed for styles that apply to all sites" + "message": "Всички" }, "appliesUrlPrefixOption": { - "message": "URL започващи с", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL започващи с" }, "applyAllUpdates": { - "message": "Приложи всички промени", - "description": "Label for the button to apply all detected updates" + "message": "Приложи всички промени" }, "checkAllUpdates": { - "message": "Провери всички стилове за обновления", - "description": "Label for the button to check all styles for updates" + "message": "Провери всички стилове за обновления" }, "checkForUpdate": { - "message": "Провери за обновление", - "description": "Label for the button to check a single style for an update" + "message": "Провери за обновление" }, "checkingForUpdate": { - "message": "Проверявам...", - "description": "Text to display when checking a style for an update" + "message": "Проверявам..." }, "cm_indentWithTabs": { - "message": "Използвай табулация с умно отместване", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Използвай табулация с умно отместване" }, "cm_keyMap": { - "message": "Клавишни комбинации", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Клавишни комбинации" }, "cm_lineWrapping": { - "message": "Автоматично пренасяне", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Автоматично пренасяне" }, "cm_smartIndent": { - "message": "Използвай умно отместване", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Използвай умно отместване" }, "cm_tabSize": { - "message": "Размер на табулацията", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Размер на табулацията" }, "cm_theme": { - "message": "Тема", - "description": "Label for the style editor's CSS theme." + "message": "Тема" }, "confirmNo": { - "message": "Не", - "description": "'No' button in a confirm dialog" + "message": "Не" }, "confirmStop": { - "message": "Спри", - "description": "'Stop' button in a confirm dialog" + "message": "Спри" }, "confirmYes": { - "message": "Да", - "description": "'Yes' button in a confirm dialog" + "message": "Да" }, "dbError": { - "message": "Грешка в базата данни на Stylus. Желаеш ли да посетиш уебстраницата с възможни решения?", - "description": "Prompt when a DB error is encountered" + "message": "Грешка в базата данни на Stylus. Желаеш ли да посетиш уебстраницата с възможни решения?" }, "defaultTheme": { - "message": "по подразбиране", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "по подразбиране" }, "deleteStyleConfirm": { - "message": "Наистина ли искаш да изтриеш този стил?", - "description": "Confirmation before deleting a style" + "message": "Наистина ли искаш да изтриеш този стил?" }, "deleteStyleLabel": { - "message": "Изтрий", - "description": "Label for the button to delete a style" + "message": "Изтрий" }, "description": { - "message": "Промени уеба със Stylus, мениджър на потребителски стилове. Stylus ти позволява лесно да инсталираш теми и скинове за много популярни сайтове.", - "description": "Extension description" + "message": "Промени уеба със Stylus, мениджър на потребителски стилове. Stylus ти позволява лесно да инсталираш теми и скинове за много популярни сайтове." }, "disableAllStyles": { - "message": "Изключи всички стилове", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Изключи всички стилове" }, "disableStyleLabel": { - "message": "Забрани", - "description": "Label for the button to disable a style" + "message": "Забрани" }, "editGotoLine": { - "message": "Иди на ред (или ред:кол)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Иди на ред (или ред:кол)" }, "editStyleHeading": { - "message": "Промени стила", - "description": "Title of the page for editing styles" + "message": "Промени стила" }, "editStyleLabel": { - "message": "Редактирай", - "description": "Label for the button to go to the edit style page" + "message": "Редактирай" }, "editStyleTitle": { "message": "Редактирай стил $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -158,68 +121,52 @@ } }, "enableStyleLabel": { - "message": "Разреши", - "description": "Label for the button to enable a style" + "message": "Разреши" }, "exportLabel": { - "message": "Експорт", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Експорт" }, "helpAlt": { - "message": "Помощ", - "description": "Alternate text for help buttons" + "message": "Помощ" }, "helpKeyMapCommand": { - "message": "Напиши име на команда", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Напиши име на команда" }, "helpKeyMapHotkey": { - "message": "Натисни клавишна комбинация", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Натисни клавишна комбинация" }, "importAppendLabel": { - "message": "Добави към стил", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Добави към стил" }, "importAppendTooltip": { - "message": "Добави импортирания стил към текущия", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Добави импортирания стил към текущия" }, "importLabel": { - "message": "Импорт", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Импорт" }, "importReplaceLabel": { - "message": "Презапиши стила", - "description": "Label for the button to import and overwrite current style" + "message": "Презапиши стила" }, "importReplaceTooltip": { - "message": "Презапишете съдържанието на текущия стил с импортирания", - "description": "Label for the button to import and overwrite current style" + "message": "Презапишете съдържанието на текущия стил с импортирания" }, "installButton": { - "message": "Инсталирай стил", - "description": "Label for install button" + "message": "Инсталирай стил" }, "installButtonInstalled": { - "message": "Стилът е инсталиран", - "description": "Text displayed when the style is successfully installed" + "message": "Стилът е инсталиран" }, "installButtonReinstall": { - "message": "Преинсталирай стила", - "description": "Label for reinstall button" + "message": "Преинсталирай стила" }, "installButtonUpdate": { - "message": "Обнови стила", - "description": "Label for update button" + "message": "Обнови стила" }, "installUpdate": { - "message": "Инсталирай обновление", - "description": "Label for the button to install an update for a single style" + "message": "Инсталирай обновление" }, "installUpdateFrom": { "message": "В момента стилът се обновява от $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -227,28 +174,22 @@ } }, "installUpdateFromLabel": { - "message": "Провери за обновления", - "description": "Label for the checkbox to save current URL for update check" + "message": "Провери за обновления" }, "license": { - "message": "Лиценз", - "description": "Label for the license" + "message": "Лиценз" }, "linkGetHelp": { - "message": "Получете помощ", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Получете помощ" }, "linkGetStyles": { - "message": "Вземете стилове", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Вземете стилове" }, "linkTranslate": { - "message": "Преведете", - "description": "Transifex link text on the manage page" + "message": "Преведете" }, "linterCSSLintIncompatible": { "message": "CSSLint не поддържа $preprocessorname$ preprocessor", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -256,12 +197,10 @@ } }, "linterCSSLintSettings": { - "message": "(Укажете правилата: 0 = забранен; 1 = предупреждения; 2 = грешки)", - "description": "CSSLint rule config values" + "message": "(Укажете правилата: 0 = забранен; 1 = предупреждения; 2 = грешки)" }, "linterConfigPopupTitle": { "message": "Настройте конфигурация за $linter$ правила", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -269,20 +208,16 @@ } }, "linterConfigTooltip": { - "message": "Щракнете, за да конфигурирате този linter", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Щракнете, за да конфигурирате този linter" }, "linterInvalidConfigError": { - "message": "Не е записано заради тези неправилни настройки", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Не е записано заради тези неправилни настройки" }, "linterIssues": { - "message": "Проблеми", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Проблеми" }, "linterIssuesHelp": { "message": "Тези проблеми бяха намерени от $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -290,71 +225,54 @@ } }, "linterJSONError": { - "message": "Невалиден JSON формат", - "description": "Setting linter config with invalid JSON" + "message": "Невалиден JSON формат" }, "linterResetMessage": { - "message": "За да върнете погрешно нулиране, натиснете Ctrl-Z (или Cmd-Z) в текстовия прозорец", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "За да върнете погрешно нулиране, натиснете Ctrl-Z (или Cmd-Z) в текстовия прозорец" }, "linterRulesLink": { - "message": "Вижте пълния списък с правила", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Вижте пълния списък с правила" }, "liveReloadError": { - "message": "Получи се грешка докато наблюдавахме файла", - "description": "The label of live-reload error" + "message": "Получи се грешка докато наблюдавахме файла" }, "liveReloadLabel": { - "message": "Преглед на живо", - "description": "The label of live-reload feature" + "message": "Преглед на живо" }, "manageFilters": { - "message": "Филтри", - "description": "Label for filters container" + "message": "Филтри" }, "manageHeading": { - "message": "Инсталирани стилове", - "description": "Heading for the manage page" + "message": "Инсталирани стилове" }, "manageNewStyleAsUsercss": { - "message": "като Потребителскиcss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "като Потребителскиcss" }, "manageNewUI": { - "message": "Нова подредба на UI", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Нова подредба на UI" }, "manageOnlyDisabled": { - "message": "Само забранените стилове", - "description": "Checkbox to show only disabled styles" + "message": "Само забранените стилове" }, "manageOnlyEnabled": { - "message": "Само разрешените стилове", - "description": "Checkbox to show only enabled styles" + "message": "Само разрешените стилове" }, "manageOnlyExternal": { - "message": "Само външните стилове", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Само външните стилове" }, "manageOnlyLocal": { - "message": "Само локалните стилове", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Само локалните стилове" }, "manageOnlyLocalTooltip": { - "message": "(стиловете не инсталирани чрез страницата на userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(стиловете не инсталирани чрез страницата на userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Само не-Потребителскитеcss стилове", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Само не-Потребителскитеcss стилове" }, "manageOnlyUpdates": { - "message": "Само с обновления или проблеми", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Само с обновления или проблеми" }, "manageOnlyUsercss": { - "message": "Само Потребителскиcss стилове", - "description": "Checkbox to show only Usercss styles" + "message": "Само Потребителскиcss стилове" } -} \ No newline at end of file +} diff --git a/_locales/ca/messages.json b/_locales/ca/messages.json deleted file mode 100644 index 9e26dfee..00000000 --- a/_locales/ca/messages.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json index 4bd340b5..0bdcc8aa 100644 --- a/_locales/cs/messages.json +++ b/_locales/cs/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Napsat nový styl", - "description": "Label for the button to go to the add style page" + "message": "Napsat nový styl" }, "addStyleTitle": { - "message": "Přidat styl", - "description": "Title of the page for adding styles" + "message": "Přidat styl" }, "alphaChannel": { - "message": "Neprůhlednost", - "description": "Label of color's opacity" + "message": "Neprůhlednost" }, "appliesAdd": { - "message": "Přidat", - "description": "Label for the button to add an 'applies' entry" + "message": "Přidat" }, "appliesDisplay": { "message": "Platí pro: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,280 +20,214 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "a další", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "a další" }, "appliesDomainOption": { - "message": "URL adresy na doméně", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL adresy na doméně" }, "appliesHelp": { - "message": "Nastavte „Platí pro“, pokud chcete omezit působnost kódu v této sekci na určité URL adresy.", - "description": "Help text for 'applies to' section" + "message": "Nastavte „Platí pro“, pokud chcete omezit působnost kódu v této sekci na určité URL adresy." }, "appliesLabel": { - "message": "Platí pro", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Platí pro" }, "appliesLineWidgetLabel": { - "message": "Zobrazit část „platí pro“", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Zobrazit část „platí pro“" }, "appliesLineWidgetWarning": { - "message": "Nefunguje s minimalizovaným CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Nefunguje s minimalizovaným CSS" }, "appliesRegexpOption": { - "message": "URL adresy odpovídající reg. výrazu", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL adresy odpovídající reg. výrazu" }, "appliesRemove": { - "message": "Odstranit", - "description": "Label for the button to remove an 'applies' entry" + "message": "Odstranit" }, "appliesRemoveError": { - "message": "Poslední záznam „platí pro“ nelze odebrat.", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Poslední záznam „platí pro“ nelze odebrat." }, "appliesSpecify": { - "message": "Specifikovat", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specifikovat" }, "appliesToEverything": { - "message": "Vše", - "description": "Text displayed for styles that apply to all sites" + "message": "Vše" }, "appliesUrlOption": { - "message": "URL adresa", - "description": "Option to make the style apply to the entered string as a URL" + "message": "URL adresa" }, "appliesUrlPrefixOption": { - "message": "URL adresy začínající", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL adresy začínající" }, "applyAllUpdates": { - "message": "Použít všechny aktualizace", - "description": "Label for the button to apply all detected updates" + "message": "Použít všechny aktualizace" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Zálohovat", - "description": "Heading for backup" + "message": "Zálohovat" }, "backupMessage": { - "message": "Vyberte soubor nebo ho přetáhněte na tuto stránku.", - "description": "Message for backup" + "message": "Vyberte soubor nebo ho přetáhněte na tuto stránku." }, "bckpInstStyles": { - "message": "Exportovat styly", - "description": "" + "message": "Exportovat styly" }, "checkAllUpdates": { - "message": "Aktualizovat všechny styly", - "description": "Label for the button to check all styles for updates" + "message": "Aktualizovat všechny styly" }, "checkAllUpdatesForce": { - "message": "Vynutit aktualizaci (neprovedeny žádné změny stylů)", - "description": "Label for the button to apply all detected updates" + "message": "Vynutit aktualizaci (neprovedeny žádné změny stylů)" }, "checkForUpdate": { - "message": "Zkontrolovat aktualizace", - "description": "Label for the button to check a single style for an update" + "message": "Zkontrolovat aktualizace" }, "checkingForUpdate": { - "message": "Kontrola…", - "description": "Text to display when checking a style for an update" + "message": "Kontrola…" }, "clickToUninstall": { - "message": "Klepnutím odinstalovat", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Klepnutím odinstalovat" }, "cm_autoCloseBrackets": { - "message": "Automaticky uzavírat závorky a uvozovky", - "description": "Label for the checkbox in the style editor." + "message": "Automaticky uzavírat závorky a uvozovky" }, "cm_autoCloseBracketsTooltip": { - "message": "Automaticky přidat uzavírací párový znak po napsání otevíracího znaku ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Automaticky přidat uzavírací párový znak po napsání otevíracího znaku ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Automatické dokončování během psaní", - "description": "Label for the checkbox in the style editor." + "message": "Automatické dokončování během psaní" }, "cm_colorpicker": { - "message": "Paleta pro CSS barvy", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Paleta pro CSS barvy" }, "cm_indentWithTabs": { - "message": "Použít tabulátory s chytrým odsazením", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Použít tabulátory s chytrým odsazením" }, "cm_keyMap": { - "message": "Přiřazení kláves", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Přiřazení kláves" }, "cm_lineWrapping": { - "message": "Zalamování slov", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Zalamování slov" }, "cm_matchHighlight": { - "message": "Zvýraznění", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Zvýraznění" }, "cm_matchHighlightSelection": { - "message": "Pouze výběr", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Pouze výběr" }, "cm_matchHighlightToken": { - "message": "Stopa pod kurzorem", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Stopa pod kurzorem" }, "cm_resizeGripHint": { - "message": "Dvojklikem maximalizujete/obnovíte výšku", - "description": "Tooltip for the resize grip in style editor" + "message": "Dvojklikem maximalizujete/obnovíte výšku" }, "cm_selectByTokens": { - "message": "Poklepáním vybírat tokeny", - "description": "Label for the checkbox in the editor." + "message": "Poklepáním vybírat tokeny" }, "cm_selectByTokensTooltip": { - "message": "Příklad tokenů: .foo-bar-2 #aabbcc 0.32 !important\nJe-li vypnuto, jsou vybírána slova oddělená interpunkcí.", - "description": "" + "message": "Příklad tokenů: .foo-bar-2 #aabbcc 0.32 !important\nJe-li vypnuto, jsou vybírána slova oddělená interpunkcí." }, "cm_smartIndent": { - "message": "Použít chytré odsazení", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Použít chytré odsazení" }, "cm_tabSize": { - "message": "Velikost tabulátorů", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Velikost tabulátorů" }, "cm_theme": { - "message": "Schéma", - "description": "Label for the style editor's CSS theme." + "message": "Schéma" }, "colorpickerSwitchFormatTooltip": { - "message": "Přepínání formátů: HEX → RGB → HSL\nShift + klik pro obrácené pořadí.\nLze použít i klávesy PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Přepínání formátů: HEX → RGB → HSL\nShift + klik pro obrácené pořadí.\nLze použít i klávesy PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Otevřít paletu barev", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Otevřít paletu barev" }, "configOnChange": { - "message": "při změně", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "při změně" }, "configOnChangeTooltip": { - "message": "Automaticky uložit a použít změny", - "description": "" + "message": "Automaticky uložit a použít změny" }, "configureStyle": { - "message": "Konfigurovat", - "description": "Label for the button to configure usercss userstyle" + "message": "Konfigurovat" }, "configureStyleOnHomepage": { - "message": "Konfigurovat na stránce stylu", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Konfigurovat na stránce stylu" }, "confirmCancel": { - "message": "Storno", - "description": "" + "message": "Storno" }, "confirmClose": { - "message": "Zavřít", - "description": "'Close' button in a confirm dialog" + "message": "Zavřít" }, "confirmDefault": { - "message": "Použít výchozí", - "description": "'Set to default' button in a confirm dialog" + "message": "Použít výchozí" }, "confirmDelete": { - "message": "Smazat", - "description": "" + "message": "Smazat" }, "confirmDiscardChanges": { - "message": "Zahodit změny?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Zahodit změny?" }, "confirmNo": { - "message": "Ne", - "description": "'No' button in a confirm dialog" + "message": "Ne" }, "confirmSave": { - "message": "Uložit", - "description": "'Save' button in a confirm dialog" + "message": "Uložit" }, "confirmStop": { - "message": "Zastavit", - "description": "'Stop' button in a confirm dialog" + "message": "Zastavit" }, "confirmYes": { - "message": "Ano", - "description": "'Yes' button in a confirm dialog" + "message": "Ano" + }, + "connectingDropbox": { + "message": "Připojování k Dropboxu…" }, "dateInstalled": { - "message": "Datum instalace", - "description": "Option text for the user to sort the style by install date" + "message": "Datum instalace" }, "dateUpdated": { - "message": "Datum aktualizace", - "description": "Option text for the user to sort the style by last update date" + "message": "Datum aktualizace" }, "dbError": { - "message": "Nastala chyba při používání Stylus databáze. Chcete navštívit webovou stránku s možnými řešeními?", - "description": "Prompt when a DB error is encountered" + "message": "Nastala chyba při používání Stylus databáze. Chcete navštívit webovou stránku s možnými řešeními?" }, "defaultTheme": { - "message": "výchozí", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "výchozí" }, "deleteStyleConfirm": { - "message": "Opravdu chcete tento styl smazat?", - "description": "Confirmation before deleting a style" + "message": "Opravdu chcete tento styl smazat?" }, "deleteStyleLabel": { - "message": "Smazat", - "description": "Label for the button to delete a style" + "message": "Smazat" }, "description": { - "message": "Změňte vzhled webů pomocí správce uživatelských stylů. Stylus umožňuje snadnou instalaci vzhledů a modifikací pro spoustu webů.", - "description": "Extension description" + "message": "Změňte vzhled webů pomocí správce uživatelských stylů. Stylus umožňuje snadnou instalaci vzhledů a modifikací pro spoustu webů." }, "disableAllStyles": { - "message": "Vypnout všechny styly", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Vypnout všechny styly" }, "disableStyleLabel": { - "message": "Zakázat", - "description": "Label for the button to disable a style" + "message": "Zakázat" }, "dragDropMessage": { - "message": "Pro import upusťte soubor zálohy kdekoliv na této stránce.", - "description": "Drag'n'drop message" + "message": "Pro import upusťte soubor zálohy kdekoliv na této stránce." }, "editDeleteText": { - "message": "Smazat", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Smazat" }, "editGotoLine": { - "message": "Přejít na řádek (nebo na line:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Přejít na řádek (nebo na line:col)" }, "editStyleHeading": { - "message": "Upravit styl", - "description": "Title of the page for editing styles" + "message": "Upravit styl" }, "editStyleLabel": { - "message": "Upravit", - "description": "Label for the button to go to the edit style page" + "message": "Upravit" }, "editStyleTitle": { "message": "Upravit styl $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -306,208 +235,165 @@ } }, "enableStyleLabel": { - "message": "Povolit", - "description": "Label for the button to enable a style" + "message": "Povolit" }, "exportLabel": { - "message": "Exportovat", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportovat" + }, + "exportSavedSuccess": { + "message": "Soubor úspěšně uložen" }, "externalFeedback": { - "message": "Zpětná vazba", - "description": "Label for the external link to send feedback for the style" + "message": "Zpětná vazba" }, "externalHomepage": { - "message": "Domovská stránka", - "description": "Label for the external link to style's homepage" + "message": "Domovská stránka" }, "externalLink": { - "message": "Externí odkaz", - "description": "Label for external links" + "message": "Externí odkaz" }, "externalSupport": { - "message": "Podpora", - "description": "Label for the external link to style's support site" + "message": "Podpora" }, "externalUsercssDocument": { - "message": "Dokumentace pro Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Dokumentace pro Usercss" }, "filteredStyles": { "message": "zobrazeno $numShown$ z $numTotal$", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Použitému filtru nevyhovují žádné styly", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Použitému filtru nevyhovují žádné styly" }, "findStyles": { - "message": "Najít styly", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Najít styly" }, "findStylesForSite": { - "message": "Najít styly pro tento web", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Najít styly pro tento web" }, "findStylesInline": { - "message": "Zobrazit zde", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Zobrazit zde" }, "findStylesInlineTooltip": { - "message": "Zobrazit výsledky vyhledávání v tomto okně.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Zobrazit výsledky vyhledávání v tomto okně." }, "genericAdd": { - "message": "Přidat", - "description": "Used in various places for an action that adds something" + "message": "Přidat" }, "genericClone": { - "message": "Duplikovat", - "description": "Used in various places for an action that clones something" + "message": "Duplikovat" }, "genericDisabledLabel": { - "message": "Zakázáno", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Zakázáno" }, "genericEnabledLabel": { - "message": "Povoleno", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Povoleno" }, "genericError": { - "message": "Chyba", - "description": "Used in various places to indicate some error occurred." + "message": "Chyba" }, "genericHistoryLabel": { - "message": "Historie", - "description": "Used in various places to show a history log of something" + "message": "Historie" }, "genericNext": { - "message": "Další", - "description": "Used in various places to select/perform the next step/action" + "message": "Další" }, "genericPrevious": { - "message": "Předchozí", - "description": "Used in various places to select/perform the previous step/action" + "message": "Předchozí" }, "genericResetLabel": { - "message": "Resetovat", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Resetovat" }, "genericSavedMessage": { - "message": "Uloženo", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Uloženo" }, "genericTitle": { - "message": "Název", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Název" }, "genericUnknown": { - "message": "Neznámé", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Neznámé" + }, + "gettingStyles": { + "message": "Získávání všech stylů…" }, "helpAlt": { - "message": "Nápověda", - "description": "Alternate text for help buttons" + "message": "Nápověda" }, "helpKeyMapCommand": { - "message": "Napište název příkazu", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Napište název příkazu" }, "helpKeyMapHotkey": { - "message": "Stiskněte kláves. zkratku", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Stiskněte kláves. zkratku" }, "importAppendLabel": { - "message": "Připojit ke stylu", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Připojit ke stylu" }, "importAppendTooltip": { - "message": "Připojit importovaný styl k současnému stylu", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Připojit importovaný styl k současnému stylu" }, "importLabel": { - "message": "Importovat", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importovat" }, "importReplaceLabel": { - "message": "Přepsat styl", - "description": "Label for the button to import and overwrite current style" + "message": "Přepsat styl" }, "importReplaceTooltip": { - "message": "Zahodit obsah současného stylu a přepsat ho importovaným stylem", - "description": "Label for the button to import and overwrite current style" + "message": "Zahodit obsah současného stylu a přepsat ho importovaným stylem" }, "importReportLegendAdded": { - "message": "přidáno", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "přidáno" }, "importReportLegendIdentical": { - "message": "identické přeskočeny", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identické přeskočeny" }, "importReportLegendInvalid": { - "message": "neplatné přeskočeny", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "neplatné přeskočeny" }, "importReportLegendUpdatedBoth": { - "message": "meta informace a kód aktualizován", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "meta informace a kód aktualizován" }, "importReportLegendUpdatedCode": { - "message": "kód aktualizován", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "kód aktualizován" }, "importReportLegendUpdatedMeta": { - "message": "meta informace aktualizována", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "meta informace aktualizována" }, "importReportTitle": { - "message": "Import stylů dokončen", - "description": "Title of the report shown after importing styles" + "message": "Import stylů dokončen" }, "importReportUnchanged": { - "message": "Žádné změny.", - "description": "Message in the report shown after importing styles" + "message": "Žádné změny." }, "importReportUndone": { - "message": "styly navráceny zpět", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "styly navráceny zpět" }, "importReportUndoneTitle": { - "message": "Import byl přerušen", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Import byl přerušen" }, "installButton": { - "message": "Instalovat styl", - "description": "Label for install button" + "message": "Instalovat styl" }, "installButtonInstalled": { - "message": "Styl instalován", - "description": "Text displayed when the style is successfully installed" + "message": "Styl instalován" }, "installButtonReinstall": { - "message": "Reinstalovat styl", - "description": "Label for reinstall button" + "message": "Reinstalovat styl" }, "installButtonUpdate": { - "message": "Aktualizovat styl", - "description": "Label for update button" + "message": "Aktualizovat styl" }, "installUpdate": { - "message": "Nainstalovat aktualizaci", - "description": "Label for the button to install an update for a single style" + "message": "Nainstalovat aktualizaci" }, "installUpdateFrom": { "message": "Styl je aktuálně aktualizován z $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -515,28 +401,22 @@ } }, "installUpdateFromLabel": { - "message": "Vyhledat aktualizace", - "description": "Label for the checkbox to save current URL for update check" + "message": "Vyhledat aktualizace" }, "license": { - "message": "Licence", - "description": "Label for the license" + "message": "Licence" }, "linkGetHelp": { - "message": "Nápověda", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Nápověda" }, "linkGetStyles": { - "message": "Získat styly", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Získat styly" }, "linkTranslate": { - "message": "Pomoci s překladem", - "description": "Transifex link text on the manage page" + "message": "Pomoci s překladem" }, "linterCSSLintIncompatible": { "message": "CSSLint nepodporuje předprocesor $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -544,12 +424,10 @@ } }, "linterCSSLintSettings": { - "message": "(Nastavení pravidel: 0 = vypnuto; 1 = upozornění; 2 = chyba)", - "description": "CSSLint rule config values" + "message": "(Nastavení pravidel: 0 = vypnuto; 1 = upozornění; 2 = chyba)" }, "linterConfigPopupTitle": { "message": "Nastavení $linter$ pravidel", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -557,20 +435,16 @@ } }, "linterConfigTooltip": { - "message": "Upravit nastavení tohoto linteru", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Upravit nastavení tohoto linteru" }, "linterInvalidConfigError": { - "message": "Neuloženo z důvodu těchto neplatných nastavení:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Neuloženo z důvodu těchto neplatných nastavení:" }, "linterIssues": { - "message": "Problémy", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problémy" }, "linterIssuesHelp": { "message": "Problémy nalezené aplikací $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -578,108 +452,82 @@ } }, "linterJSONError": { - "message": "Neplatný JSON formát", - "description": "Setting linter config with invalid JSON" + "message": "Neplatný JSON formát" }, "linterResetMessage": { - "message": "Chcete-li vrátit změny náhodného resetu, stiskněte v textovém poli Ctrl + Z (resp. Cmd + Z)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Chcete-li vrátit změny náhodného resetu, stiskněte v textovém poli Ctrl + Z (resp. Cmd + Z)" }, "linterRulesLink": { - "message": "Zobrazit celý seznam pravidel", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Zobrazit celý seznam pravidel" }, "liveReloadError": { - "message": "Při sledování souboru došlo k chybě", - "description": "The label of live-reload error" + "message": "Při sledování souboru došlo k chybě" }, "liveReloadLabel": { - "message": "Živá aktualizace", - "description": "The label of live-reload feature" + "message": "Živá aktualizace" }, "manageFavicons": { - "message": "Favicony v části „Platí pro“ ", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicony v části „Platí pro“ " }, "manageFaviconsGray": { - "message": "Zešednutí", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Zešednutí" }, "manageFaviconsHelp": { - "message": "Stylus používá externí službu https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus používá externí službu https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtry", - "description": "Label for filters container" + "message": "Filtry" }, "manageHeading": { - "message": "Nainstalované styly", - "description": "Heading for the manage page" + "message": "Nainstalované styly" }, "manageMaxTargets": { - "message": "Počet položek v části „Platí pro“", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Počet položek v části „Platí pro“" }, "manageNewStyleAsUsercss": { - "message": "jako Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "jako Usercss" }, "manageNewUI": { - "message": "Nové rozložení správy rozhraní", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nové rozložení správy rozhraní" }, "manageOnlyDisabled": { - "message": "Pouze vypnuté styly", - "description": "Checkbox to show only disabled styles" + "message": "Pouze vypnuté styly" }, "manageOnlyEnabled": { - "message": "Pouze povolené styly", - "description": "Checkbox to show only enabled styles" + "message": "Pouze povolené styly" }, "manageOnlyExternal": { - "message": "Pouze externí styly", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Pouze externí styly" }, "manageOnlyLocal": { - "message": "Pouze lokální styly", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Pouze lokální styly" }, "manageOnlyLocalTooltip": { - "message": "(styly nenainstalované prostřednictvím webu userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(styly nenainstalované prostřednictvím webu userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Pouze non-Usercss styly", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Pouze non-Usercss styly" }, "manageOnlyUpdates": { - "message": "Pouze s aktualizacemi nebo chybami", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Pouze s aktualizacemi nebo chybami" }, "manageOnlyUsercss": { - "message": "Pouze Usercss styly", - "description": "Checkbox to show only Usercss styles" + "message": "Pouze Usercss styly" }, "menuShowBadge": { - "message": "Zobrazit počet aktivních stylů", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Zobrazit počet aktivních stylů" }, "meta_invalidNumber": { - "message": "Očekáváno číslo", - "description": "Error displayed when the value is expected to be a number" + "message": "Očekáváno číslo" }, "meta_invalidString": { - "message": "Očekáván řetězec v uvozovkách", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Očekáván řetězec v uvozovkách" }, "meta_invalidWord": { - "message": "Očekáván text", - "description": "Error displayed when the value is expected to be a word" + "message": "Očekáván text" }, "meta_missingChar": { "message": "Očekávané znaky: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -688,7 +536,6 @@ }, "meta_unknownMeta": { "message": "Neznámá metadata: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" @@ -697,7 +544,6 @@ }, "meta_unknownVarType": { "message": "Neznámý typ @$varkey$: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -707,325 +553,251 @@ } } }, + "noFileToImport": { + "message": "Před importem stylů byste je měli nejprve exportovat." + }, "noStylesForSite": { - "message": "Pro tento web není nainstalován žádný styl.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Pro tento web není nainstalován žádný styl." }, "openManage": { - "message": "Spravovat", - "description": "Link to open the manage page." + "message": "Spravovat" }, "openStylesManager": { - "message": "Otevřít správce stylů", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Otevřít správce stylů" }, "optionsActions": { - "message": "Akce", - "description": "" + "message": "Akce" }, "optionsAdvanced": { - "message": "Pokročilé", - "description": "" + "message": "Pokročilé" }, "optionsAdvancedContextDelete": { - "message": "Přidat tlačítko Smazat do kontextové nabídky v editoru", - "description": "" + "message": "Přidat tlačítko Smazat do kontextové nabídky v editoru" }, "optionsAdvancedExposeIframes": { - "message": "Obnažit iframe prvky pomocí HTML[stylus-iframe]", - "description": "" + "message": "Obnažit iframe prvky pomocí HTML[stylus-iframe]" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Napsat nový styl jako usercss", - "description": "" + "message": "Napsat nový styl jako usercss" }, "optionsBadgeDisabled": { - "message": "Barva pozadí při zakázání", - "description": "" + "message": "Barva pozadí při zakázání" }, "optionsBadgeNormal": { - "message": "Barva pozadí", - "description": "" + "message": "Barva pozadí" }, "optionsCheck": { - "message": "Aktualizovat styly", - "description": "" + "message": "Aktualizovat styly" }, "optionsCheckUpdate": { - "message": "Vyhledávat a instalovat všechny aktualizace", - "description": "" + "message": "Vyhledávat a instalovat všechny aktualizace" }, "optionsCustomizeBadge": { - "message": "Ikona tlačítka na panelu", - "description": "" + "message": "Ikona tlačítka na panelu" }, "optionsCustomizeIcon": { - "message": "Ikona na panelu nástrojů", - "description": "" + "message": "Ikona na panelu nástrojů" }, "optionsCustomizePopup": { - "message": "Vyskakovací okno", - "description": "" + "message": "Vyskakovací okno" }, "optionsCustomizeUpdate": { - "message": "Aktualizace", - "description": "" + "message": "Aktualizace" }, "optionsHeading": { - "message": "Možnosti", - "description": "Heading for options section on manage page." + "message": "Možnosti" }, "optionsIconDark": { - "message": "Tmavé vzhledy", - "description": "" + "message": "Tmavé vzhledy" }, "optionsIconLight": { - "message": "Světlé vzhledy", - "description": "" + "message": "Světlé vzhledy" }, "optionsOpen": { - "message": "Otevřít", - "description": "" + "message": "Otevřít" }, "optionsOpenManager": { - "message": "Spravovat styly", - "description": "" + "message": "Spravovat styly" }, "optionsPopupWidth": { - "message": "Šířka vyskakovacího okna [px]", - "description": "" + "message": "Šířka vyskakovacího okna [px]" }, "optionsReset": { - "message": "Obnovit výchozí nastavení", - "description": "" + "message": "Obnovit výchozí nastavení" }, "optionsResetButton": { - "message": "Obnovit nastavení", - "description": "" + "message": "Obnovit nastavení" }, "optionsSubheading": { - "message": "Další možnosti", - "description": "Subheading for options section on manage page." + "message": "Další možnosti" }, "optionsUpdateImportNote": { - "message": "Importujete-li zálohy stylů ze starší verze nebo z rozšíření Stylish, proveďte jednorázovou ruční kontrolu aktualizací ve správci stylů, aby byly všechny styly aktuální.", - "description": "" + "message": "Importujete-li zálohy stylů ze starší verze nebo z rozšíření Stylish, proveďte jednorázovou ruční kontrolu aktualizací ve správci stylů, aby byly všechny styly aktuální." }, "optionsUpdateInterval": { - "message": "Interval automatické aktualizace stylů v hodinách (0 = vypnuto)", - "description": "" + "message": "Interval automatické aktualizace stylů v hodinách (0 = vypnuto)" + }, + "overwriteFileExport": { + "message": "Chcete přepsat stávající soubor?" }, "paginationCurrent": { - "message": "Aktuální stránka", - "description": "Tooltip for the current page index in search results" + "message": "Aktuální stránka" }, "paginationEstimated": { - "message": "Odhadovaný počet stránek", - "description": "Tooltip for the total page count in search results" + "message": "Odhadovaný počet stránek" }, "paginationNext": { - "message": "Další stránka", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Další stránka" }, "paginationPrevious": { - "message": "Předchozí stránka", - "description": "Tooltip for the '<-' button in search results" + "message": "Předchozí stránka" }, "paginationTotal": { - "message": "Celkový počet stránek", - "description": "" + "message": "Celkový počet stránek" }, "parseUsercssError": { - "message": "Usercss nelze zpracovat:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Usercss nelze zpracovat:" }, "popupBorders": { - "message": "Přidat postranní bílé okraje", - "description": "" + "message": "Přidat postranní bílé okraje" }, "popupBordersTooltip": { - "message": "Užitečné pro tmavé motivy v novém Chromu, který již nevykresluje obrysové čáry", - "description": "" + "message": "Užitečné pro tmavé motivy v novém Chromu, který již nevykresluje obrysové čáry" }, "popupHotkeysTooltip": { - "message": "Kliknutím zobrazíte dostupné klávesové zkratky", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Kliknutím zobrazíte dostupné klávesové zkratky" }, "popupManageTooltip": { - "message": "Shift + kliknutím nebo pravým kliknutím otevřít správce se styly použitými na této stránce", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift + kliknutím nebo pravým kliknutím otevřít správce se styly použitými na této stránce" }, "popupOpenEditInWindow": { - "message": "Otevírat editor v novém okně", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Otevírat editor v novém okně" }, "popupOpenEditInWindowTooltip": { - "message": "K povolení dojde také při odepnutí listu editoru z okna prohlížeče,\na k vypnutí při připnutí samotného listu editoru do dalšího okna.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "K povolení dojde také při odepnutí listu editoru z okna prohlížeče,\na k vypnutí při připnutí samotného listu editoru do dalšího okna." }, "popupStylesFirst": { - "message": "Styly před příkazy", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Styly před příkazy" }, "prefShowBadge": { - "message": "Počet aktivních stylů pro současnou stránku", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Počet aktivních stylů pro současnou stránku" }, "previewLabel": { - "message": "Živý náhled", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Živý náhled" }, "previewTooltip": { - "message": "Dočasně použije změny bez uložení.\nUložte styl pro trvalé zachování změn.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Dočasně použije změny bez uložení.\nUložte styl pro trvalé zachování změn." + }, + "readingStyles": { + "message": "Čtení stylů…" }, "replace": { - "message": "Nahradit", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Nahradit" }, "replaceAll": { - "message": "Nahradit vše", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Nahradit vše" }, "replaceWith": { - "message": "Nahradit s", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Nahradit s" }, "retrieveBckp": { - "message": "Importovat styly", - "description": "" + "message": "Importovat styly" }, "search": { - "message": "Vyhledat", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Vyhledat" }, "searchCaseSensitive": { - "message": "Rozeznávat VELKÁ a malá písmena", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Rozeznávat VELKÁ a malá písmena" }, "searchNumberOfResults": { - "message": "Počet shod", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Počet shod" }, "searchNumberOfResults2": { - "message": "Počet shod v kódu a hodnotách „platí pro“", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Počet shod v kódu a hodnotách „platí pro“" }, "searchRegexp": { - "message": "Použijte /re/ syntaxi pro vyhledávání s regulérními výrazy", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Použijte /re/ syntaxi pro vyhledávání s regulérními výrazy" }, "searchResultInstallCount": { - "message": "Celkový počet instalací", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Celkový počet instalací" }, "searchResultNoneFound": { - "message": "Nenalezeny žádné styly pro tento web.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nenalezeny žádné styly pro tento web." }, "searchResultRating": { - "message": "Hodnocení", - "description": "Text for label that shows the search result's rating" + "message": "Hodnocení" }, "searchResultUpdated": { - "message": "Aktualizováno", - "description": "Text for label that shows the search result's last update date" + "message": "Aktualizováno" }, "searchResultWeeklyCount": { - "message": "Týdenní počet instalací", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Prohledat obsah", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "Týdenní počet instalací" }, "sectionAdd": { - "message": "Přidat další sekci", - "description": "Label for the button to add a section" + "message": "Přidat další sekci" }, "sectionCode": { - "message": "Kód", - "description": "Label for the code for a section" + "message": "Kód" }, "sectionRemove": { - "message": "Odstranit sekci", - "description": "Label for the button to remove a section" + "message": "Odstranit sekci" }, "sectionRestore": { - "message": "Obnovit odstraněnou sekci", - "description": "Label for the button to restore a removed section" + "message": "Obnovit odstraněnou sekci" }, "shortcuts": { - "message": "Zkratky", - "description": "Go to shortcut configuration" + "message": "Zkratky" }, "shortcutsNote": { - "message": "Nastavit klávesové zkratky", - "description": "" + "message": "Nastavit klávesové zkratky" }, "sortDateNewestFirst": { - "message": "nejdříve novější", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "nejdříve novější" }, "sortDateOldestFirst": { - "message": "starší nejdříve", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "starší nejdříve" }, "sortLabel": { - "message": "Zvolte způsob řazení instalovaných stylů", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Zvolte způsob řazení instalovaných stylů" }, "sortLabelTitleAsc": { - "message": "Název (vzestupně)", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Název (vzestupně)" }, "sortLabelTitleDesc": { - "message": "Název (sestupně)", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Název (sestupně)" }, "sortStylesHelpTitle": { - "message": "Seřadit obsah", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Seřadit obsah" }, "styleBadRegexp": { - "message": "Tento regulérní výraz je neplatný.", - "description": "Validation message for a bad regexp in a style" + "message": "Tento regulérní výraz je neplatný." }, "styleBeautify": { - "message": "Zkrášlit", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Zkrášlit" }, "styleBeautifyIndentConditional": { - "message": "Odsadit @media, @supports", - "description": "CSS-beautifier option" + "message": "Odsadit @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Zachovat nové řádky", - "description": "CSS-beautifier option" + "message": "Zachovat nové řádky" }, "styleCancelEditLabel": { - "message": "Zpět ke správě", - "description": "Label for cancel button for style editing" + "message": "Zpět ke správě" }, "styleChangesNotSaved": { - "message": "Provedli jste změny tohoto stylu bez uložení.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Provedli jste změny tohoto stylu bez uložení." }, "styleEnabledLabel": { - "message": "Povolen", - "description": "Label for the enabled state of styles" + "message": "Povolen" }, "styleFromMozillaFormatError": { - "message": "Import z Mozilla formátu se nezdařil", - "description": "Label for the import error" + "message": "Import z Mozilla formátu se nezdařil" }, "styleFromMozillaFormatPrompt": { - "message": "Vložte kód v Mozilla formátu", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Vložte kód v Mozilla formátu" }, "styleInstall": { "message": "Nainstalovat „$stylename$“ do Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1034,7 +806,6 @@ }, "styleInstallFailed": { "message": "Styl nelze nainstalovat.\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1043,86 +814,68 @@ }, "styleInstallOverwrite": { "message": "Styl „$stylename$“ je již nainstalován. Přepsat?\nVerze: $oldVersion$ → $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Zadejte název", - "description": "Error displayed when user saves without providing a name" + "message": "Zadejte název" }, "styleMozillaFormatHeading": { - "message": "Mozilla formát", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla formát" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Styl nebyl použit kvůli nesprávnému použití „regexp()“", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Styl nebyl použit kvůli nesprávnému použití „regexp()“" }, "styleRegexpInvalidExplanation": { - "message": "Některá „regexp()“ pravidla nelze vůbec sestavit.", - "description": "" + "message": "Některá „regexp()“ pravidla nelze vůbec sestavit." }, "styleRegexpPartialExplanation": { - "message": "Tento styl obsahuje částečnou regexp shodu, která je však v rozporu s CSS4 @document specifikací, která vyžaduje přesnou shodu URL adresy. Dotčené CSS části nebyly na stránku použity. Tento styl byl pravděpodobně vytvořen v rozšíření Stylish pro Chrome, které nesprávně kontroluje regexp() pravidla již od své první verze (známá chyba).", - "description": "" + "message": "Tento styl obsahuje částečnou regexp shodu, která je však v rozporu s CSS4 @document specifikací, která vyžaduje přesnou shodu URL adresy. Dotčené CSS části nebyly na stránku použity. Tento styl byl pravděpodobně vytvořen v rozšíření Stylish pro Chrome, které nesprávně kontroluje regexp() pravidla již od své první verze (známá chyba)." }, "styleRegexpProblemTooltip": { - "message": "Počet sekcí nepoužitých kvůli nesprávnému použití „regexp()“", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Počet sekcí nepoužitých kvůli nesprávnému použití „regexp()“" }, "styleRegexpTestButton": { - "message": "Otestovat RegExp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Otestovat RegExp" }, "styleRegexpTestFull": { - "message": "Odpovídající listy", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Odpovídající listy" }, "styleRegexpTestInvalid": { - "message": "Neplatné regexp přeskočeny", - "description": "RegExp test report: label for the invalid expressions" + "message": "Neplatné regexp přeskočeny" }, "styleRegexpTestNone": { - "message": "Žádné odpovídající listy", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Žádné odpovídající listy" }, "styleRegexpTestNote": { - "message": "Poznámka: Používejte jen jedno zpětné lomítko „\\“ ve vstupním regexp poli – v editoru bude automaticky převedeno na „\\\\“, v souladu s normou citovaných řetězců v CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Poznámka: Používejte jen jedno zpětné lomítko „\\“ ve vstupním regexp poli – v editoru bude automaticky převedeno na „\\\\“, v souladu s normou citovaných řetězců v CSS." }, "styleRegexpTestPartial": { - "message": "Shoda je nepřesná, proto přeskočeno", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Shoda je nepřesná, proto přeskočeno" }, "styleRegexpTestTitle": { - "message": "Seznam shod otevřených listů (klepnutím na URL zaměříte daný list)", - "description": "RegExp test report: title of the report" + "message": "Seznam shod otevřených listů (klepnutím na URL zaměříte daný list)" }, "styleSaveLabel": { - "message": "Uložit", - "description": "Label for save button for style editing" + "message": "Uložit" }, "styleToMozillaFormatHelp": { - "message": "Kód v Mozilla formátu může být odeslán na userstyles.org a použit v aplikaci Stylish pro Firefox", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Kód v Mozilla formátu může být odeslán na userstyles.org a použit v aplikaci Stylish pro Firefox" }, "styleToMozillaFormatTitle": { - "message": "Styl v Mozilla formátu", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Styl v Mozilla formátu" }, "styleUpdate": { "message": "Určitě chcete aktualizovat „$stylename$“?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1130,64 +883,49 @@ } }, "styleUpdateDiscardChanges": { - "message": "Styl byl změněn mimo editor. Chcete styl znovu načíst?", - "description": "Confirmation to update the style in the editor" + "message": "Styl byl změněn mimo editor. Chcete styl znovu načíst?" }, "stylusUnavailableForURL": { - "message": "Stylus nepracuje se stránkami jako je tato.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus nepracuje se stránkami jako je tato." }, "stylusUnavailableForURLdetails": { - "message": "Jako bezpečností opatření, prohlížeč brání rozšířením v ovlivnění vestavěných stránek (např. chrome://version, nová úvodní stránka Chromu 61, about:addons, vivaldi://extensions atp.) a stránek dalších rozšíření. Každý prohlížeč také omezuje přístup do vlastního obchodu s rozšířeními (např. Chrome Web Store nebo AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Jako bezpečností opatření, prohlížeč brání rozšířením v ovlivnění vestavěných stránek (např. chrome://version, nová úvodní stránka Chromu 61, about:addons, vivaldi://extensions atp.) a stránek dalších rozšíření. Každý prohlížeč také omezuje přístup do vlastního obchodu s rozšířeními (např. Chrome Web Store nebo AMO)." }, "syncStorageErrorSaving": { - "message": "Hodnotu nelze uložit. Zkuste text zkrátit.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Hodnotu nelze uložit. Zkuste text zkrátit." }, "toggleStyle": { - "message": "Přepnout styl", - "description": "Label for the checkbox to enable/disable a style" + "message": "Přepnout styl" }, "undo": { - "message": "Zpět", - "description": "Button label" + "message": "Zpět" }, "undoGlobal": { - "message": "Zpět ve všech sekcích", - "description": "CSS-beautify global Undo button label" + "message": "Zpět ve všech sekcích" }, "unreachableAMO": { - "message": "Firefox znemožňuje přístup ke stránce.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox znemožňuje přístup ke stránce." }, "unreachableAMOHint": { - "message": "Povolení přístupu: přejděte na , pravým myšidlem zvolte „Nový“, dále „Boolean“, zadejte kód a potvrďte, , OK, načtěte stránku .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Pouze Firefox 59 a novější může být nakonfigurován tak, aby rozšíření typu WebExtensions mohla přidávat styly na stránky chráněné CSP (Content Security Policy) – jako je tato.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Povolení přístupu: přejděte na , pravým myšidlem zvolte „Nový“, dále „Boolean“, zadejte kód a potvrďte, , OK, načtěte stránku ." }, "unreachableContentScript": { - "message": "Se stránkou nelze komunikovat. Zkuste znovu načíst list.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Se stránkou nelze komunikovat. Zkuste znovu načíst list." }, "unreachableFileHint": { - "message": "Stylus může přistupovat k file:// URL pouze při povolení odpovídající možnosti pro rozšíření Stylus ve správci chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus může přistupovat k file:// URL pouze při povolení odpovídající možnosti pro rozšíření Stylus ve správci chrome://extensions." + }, + "unzipStyles": { + "message": "Rozbalování stylů…" }, "updateAllCheckSucceededNoUpdate": { - "message": "Aktualizace nenalezeny.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Aktualizace nenalezeny." }, "updateAllCheckSucceededSomeEdited": { - "message": "Některé aktualizovatelné styly nebyly aktualizovány kvůli zabránění ztrátám možných lokálních změn. Aktualizace může být vynucena individuálně nebo spuštěním další aktualizace všech stylů (lokální změny mohou být přepsány).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Některé aktualizovatelné styly nebyly aktualizovány kvůli zabránění ztrátám možných lokálních změn. Aktualizace může být vynucena individuálně nebo spuštěním další aktualizace všech stylů (lokální změny mohou být přepsány)." }, "updateCheckFailBadResponseCode": { "message": "Aktualizace se nezdařila: server odpověděl kódem $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1195,111 +933,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Aktualizace se nezdařila: server je nedosažitelný.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Aktualizace se nezdařila: server je nedosažitelný." }, "updateCheckHistory": { - "message": "Historie aktualizací", - "description": "" + "message": "Historie aktualizací" }, "updateCheckManualUpdateForce": { - "message": "Instalovat aktualizaci (lokální změny budou přepsány)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Instalovat aktualizaci (lokální změny budou přepsány)" }, "updateCheckManualUpdateHint": { - "message": "Vynucení aktualizace přepíše všechny lokální úpravy.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Vynucení aktualizace přepíše všechny lokální úpravy." }, "updateCheckSkippedLocallyEdited": { - "message": "Tento styl byl upraven lokálně.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Tento styl byl upraven lokálně." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Tento styl mohl být upraven lokálně.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Tento styl mohl být upraven lokálně." }, "updateCheckSucceededNoUpdate": { - "message": "Styl je aktuální.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Styl je aktuální." }, "updateCompleted": { - "message": "Aktalizace dokončena.", - "description": "Text that displays when an update completed" + "message": "Aktalizace dokončena." }, "updatesCurrentlyInstalled": { - "message": "Instalované aktualizace:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Prosím, změňte hodnotu @name nebo @namespace ať nedojde k přepsání existujícího stylu.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Styl byl aktualizován nebo smazán po zobrazení dialogu konfigurace. Tyto proměnné nebyly uloženy aby se předešlo poškození metadat stylu.", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Definujte @name v kódu", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Nahradit výchozí šablonu pro nové Usercss styly aktuálním kódem?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Prázdné @name nahrazuje výchozí šablonu", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Sem vložte kód…", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Tato verze je starší než verze nainstalovaného stylu.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Napsat nový styl pro:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "tuto URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "overwriteFileExport": { - "message": "Chcete přepsat stávající soubor?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Soubor úspěšně uložen", - "description": "" - }, - "noFileToImport": { - "message": "Před importem stylů byste je měli nejprve exportovat.", - "description": "" - }, - "connectingDropbox": { - "message": "Připojování k Dropboxu…", - "description": "" - }, - "gettingStyles": { - "message": "Získávání všech stylů…", - "description": "" - }, - "zipStyles": { - "message": "Balení stylů…", - "description": "" - }, - "unzipStyles": { - "message": "Rozbalování stylů…", - "description": "" - }, - "readingStyles": { - "message": "Čtení stylů…", - "description": "" + "message": "Instalované aktualizace:" }, "uploadingFile": { - "message": "Nahrávání souboru…", - "description": "" + "message": "Nahrávání souboru…" + }, + "usercssAvoidOverwriting": { + "message": "Prosím, změňte hodnotu @name nebo @namespace ať nedojde k přepsání existujícího stylu." + }, + "usercssConfigIncomplete": { + "message": "Styl byl aktualizován nebo smazán po zobrazení dialogu konfigurace. Tyto proměnné nebyly uloženy aby se předešlo poškození metadat stylu." + }, + "usercssEditorNamePlaceholder": { + "message": "Definujte @name v kódu" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Nahradit výchozí šablonu pro nové Usercss styly aktuálním kódem?" + }, + "usercssReplaceTemplateName": { + "message": "Prázdné @name nahrazuje výchozí šablonu" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Sem vložte kód…" + }, + "versionInvalidOlder": { + "message": "Tato verze je starší než verze nainstalovaného stylu." + }, + "writeStyleFor": { + "message": "Napsat nový styl pro:" + }, + "writeStyleForURL": { + "message": "tuto URL" + }, + "zipStyles": { + "message": "Balení stylů…" } } diff --git a/_locales/da/messages.json b/_locales/da/messages.json index 3e202611..97d344b2 100644 --- a/_locales/da/messages.json +++ b/_locales/da/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Skriv ny stil", - "description": "Label for the button to go to the add style page" + "message": "Skriv ny stil" }, "addStyleTitle": { - "message": "Tilføj stil", - "description": "Title of the page for adding styles" + "message": "Tilføj stil" }, "alphaChannel": { - "message": "Gennemsigtighed", - "description": "Label of color's opacity" + "message": "Gennemsigtighed" }, "appliesAdd": { - "message": "Tilføj", - "description": "Label for the button to add an 'applies' entry" + "message": "Tilføj" }, "appliesDisplay": { "message": "Anvendes på: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,107 +20,81 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "og mere", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "og mere" }, "appliesDomainOption": { - "message": "URL'er på domænet", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL'er på domænet" }, "appliesHelp": { - "message": "Brug 'Anvendt på'-styring til at begrænse hvilke URL'er koden i denne sektion anvendes på.", - "description": "Help text for 'applies to' section" + "message": "Brug 'Anvendt på'-styring til at begrænse hvilke URL'er koden i denne sektion anvendes på." }, "appliesLabel": { - "message": "Anvendes på", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Anvendes på" }, "appliesLineWidgetLabel": { - "message": "Vis 'Anvendes på'-info", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Vis 'Anvendes på'-info" }, "appliesRegexpOption": { - "message": "URL'er der matcher regexp'en", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL'er der matcher regexp'en" }, "appliesRemove": { - "message": "Fjern", - "description": "Label for the button to remove an 'applies' entry" + "message": "Fjern" }, "appliesRemoveError": { - "message": "Kan ikke fjerne sidste 'Anvendes på'-optegnelse", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Kan ikke fjerne sidste 'Anvendes på'-optegnelse" }, "appliesSpecify": { - "message": "Specificér", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specificér" }, "appliesToEverything": { - "message": "Alt", - "description": "Text displayed for styles that apply to all sites" + "message": "Alt" }, "appliesUrlPrefixOption": { - "message": "URL'er der starter med", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL'er der starter med" }, "applyAllUpdates": { - "message": "Anvend alle opdateringer", - "description": "Label for the button to apply all detected updates" + "message": "Anvend alle opdateringer" }, "author": { - "message": "Forfatter", - "description": "Label for the style author" + "message": "Forfatter" }, "backupMessage": { - "message": "Vælg en fil eller træk og slip til denne side.", - "description": "Message for backup" + "message": "Vælg en fil eller træk og slip til denne side." }, "bckpInstStyles": { - "message": "Eksportér stil", - "description": "" + "message": "Eksportér stil" }, "checkAllUpdates": { - "message": "Tjek alle stiler for opdateringer", - "description": "Label for the button to check all styles for updates" + "message": "Tjek alle stiler for opdateringer" }, "checkAllUpdatesForce": { - "message": "Tjek igen, jeg redigerede ikke nogen stil!", - "description": "Label for the button to apply all detected updates" + "message": "Tjek igen, jeg redigerede ikke nogen stil!" }, "checkForUpdate": { - "message": "Tjek efter opdatering", - "description": "Label for the button to check a single style for an update" + "message": "Tjek efter opdatering" }, "checkingForUpdate": { - "message": "Tjekker...", - "description": "Text to display when checking a style for an update" + "message": "Tjekker..." }, "clickToUninstall": { - "message": "Klik for at afinstallere", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Klik for at afinstallere" }, "cm_autoCloseBrackets": { - "message": "Luk automatisk paranteser og citationstegn", - "description": "Label for the checkbox in the style editor." + "message": "Luk automatisk paranteser og citationstegn" }, "cm_autoCloseBracketsTooltip": { - "message": "Tilføj automatisk et lukket par når man åbner en af ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Tilføj automatisk et lukket par når man åbner en af ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Autoudfyld på indtastning", - "description": "Label for the checkbox in the style editor." + "message": "Autoudfyld på indtastning" }, "cm_colorpicker": { - "message": "Farvevælgere for CSS-farver", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Farvevælgere for CSS-farver" }, "cm_indentWithTabs": { - "message": "Brug tabs med smart indrykning", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Brug tabs med smart indrykning" }, "cm_keyMap": { - "message": "Tastegenveje", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Tastegenveje" } -} \ No newline at end of file +} diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 32253e1b..c25761ac 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus kann auf einige Dateitypen nicht zugreifen (z.B. pdf oder json)" + }, "addStyleLabel": { - "message": "Neuen Style erstellen", - "description": "Label for the button to go to the add style page" + "message": "Neuen Style erstellen" }, "addStyleTitle": { - "message": "Style hinzufügen", - "description": "Title of the page for adding styles" + "message": "Style hinzufügen" }, "alphaChannel": { - "message": "Deckkraft", - "description": "Label of color's opacity" + "message": "Deckkraft" }, "appliesAdd": { - "message": "Hinzufügen", - "description": "Label for the button to add an 'applies' entry" + "message": "Hinzufügen" }, "appliesDisplay": { "message": "Gilt für: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,284 +23,229 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "und weitere", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "und weitere" }, "appliesDomainOption": { - "message": "URLs auf der Domain", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs auf der Domain" }, "appliesHelp": { - "message": "Lege mit den Einstellungen von \"Gilt für\" fest, für welche URLs der Code in diesem Bereich gelten soll.", - "description": "Help text for 'applies to' section" + "message": "Lege mit den Einstellungen von \"Gilt für\" fest, für welche URLs der Code in diesem Bereich gelten soll." }, "appliesLabel": { - "message": "Gilt für", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Gilt für" }, "appliesLineWidgetLabel": { - "message": "Zeige \"Gilt für\" Info", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Zeige \"Gilt für\" Info" }, "appliesLineWidgetWarning": { - "message": "Funktioniert nicht mit minified CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Funktioniert nicht mit minified CSS" }, "appliesRegexpOption": { - "message": "URLs, die mit der RegExp übereinstimmen", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs, die mit der RegExp übereinstimmen" }, "appliesRemove": { - "message": "Löschen", - "description": "Label for the button to remove an 'applies' entry" + "message": "Löschen" }, "appliesRemoveError": { - "message": "Kann letzten \"Gilt für\" Eintrag nicht entfernen", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Kann letzten \"Gilt für\" Eintrag nicht entfernen" }, "appliesSpecify": { - "message": "Angeben", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Angeben" }, "appliesToEverything": { - "message": "Alles", - "description": "Text displayed for styles that apply to all sites" + "message": "Alles" }, "appliesUrlPrefixOption": { - "message": "URLs beginnend mit", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLs beginnend mit" }, "applyAllUpdates": { - "message": "Alle Updates übernehmen ", - "description": "Label for the button to apply all detected updates" + "message": "Alle Updates übernehmen " }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Datensicherung", - "description": "Heading for backup" + "message": "Datensicherung" }, "backupMessage": { - "message": "Wähle eine Datei aus oder ziehe die Datei auf diese Seite. (Drag and Drop)", - "description": "Message for backup" + "message": "Wähle eine Datei aus oder ziehe die Datei auf diese Seite. (Drag and Drop)" }, "bckpInstStyles": { - "message": "Styles exportieren", - "description": "" + "message": "Styles exportieren" }, "checkAllUpdates": { - "message": "Nach Updates suchen", - "description": "Label for the button to check all styles for updates" + "message": "Nach Updates suchen" }, "checkAllUpdatesForce": { - "message": "Nochmal prüfen, ich habe keine Styles bearbeitet!", - "description": "Label for the button to apply all detected updates" + "message": "Nochmal prüfen, ich habe keine Styles bearbeitet!" }, "checkForUpdate": { - "message": "Nach Update suchen", - "description": "Label for the button to check a single style for an update" + "message": "Nach Update suchen" }, "checkingForUpdate": { - "message": "Suche nach Updates...", - "description": "Text to display when checking a style for an update" + "message": "Suche nach Updates..." }, "clickToUninstall": { - "message": "Klicken zum Deinstallieren", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Klicken zum Deinstallieren" }, "cm_autoCloseBrackets": { - "message": "Klammern automatisch schließen", - "description": "Label for the checkbox in the style editor." + "message": "Klammern automatisch schließen" }, "cm_autoCloseBracketsTooltip": { - "message": "Wenn ( [ { ' \" geschrieben werden, automatisch schließende ) ] } ' \" setzen", - "description": "Label for the checkbox in the style editor." + "message": "Wenn ( [ { ' \" geschrieben werden, automatisch schließende ) ] } ' \" setzen" }, "cm_autocompleteOnTyping": { - "message": "Autovervollständigen bei Eingabe", - "description": "Label for the checkbox in the style editor." + "message": "Autovervollständigen bei Eingabe" }, "cm_colorpicker": { - "message": "Farbwähler für CSS-Farben", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Farbwähler für CSS-Farben" }, "cm_indentWithTabs": { - "message": "Tabs mit intelligentem Einzug", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Tabs mit intelligentem Einzug" }, "cm_keyMap": { - "message": "Tastaturbelegung", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Tastaturbelegung" }, "cm_lineWrapping": { - "message": "Automatischer Zeilenumbruch", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Automatischer Zeilenumbruch" }, "cm_matchHighlight": { - "message": "Hervorheben", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Hervorheben" }, "cm_matchHighlightSelection": { - "message": "Nur die Auswahl", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Nur die Auswahl" }, "cm_matchHighlightToken": { - "message": "Unter dem Textzeiger", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Unter dem Textzeiger" }, "cm_resizeGripHint": { - "message": "Doppelklick, um Höhe zu maximieren / wiederherzustellen", - "description": "Tooltip for the resize grip in style editor" + "message": "Doppelklick, um Höhe zu maximieren / wiederherzustellen" }, "cm_selectByTokens": { - "message": "Doppelklick markiert Zeichenkette", - "description": "Label for the checkbox in the editor." + "message": "Doppelklick markiert Zeichenkette" }, "cm_selectByTokensTooltip": { - "message": "Beispiele von Zeichenketten: .foo-bar-2 #aabbcc 0.32 !important\nWenn deaktiviert, werden Wörter je nach Interpunktion ausgewählt.", - "description": "" + "message": "Beispiele von Zeichenketten: .foo-bar-2 #aabbcc 0.32 !important\nWenn deaktiviert, werden Wörter je nach Interpunktion ausgewählt." }, "cm_smartIndent": { - "message": "Intelligenter Einzug", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Intelligenter Einzug" }, "cm_tabSize": { - "message": "Tab-Größe", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tab-Größe" + }, + "colorpickerPaletteHint": { + "message": "Rechtsklicke auf ein Farbmuster, um durch die entsprechenden Codezeilen zu springen" }, "colorpickerSwitchFormatTooltip": { - "message": "Formate wechseln: HEX -> RGB ->HSL.\nShift-Klick, um Richtung umzukehren.\nKürzel: Bild auf- und Bild ab-Tasten.", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Formate wechseln: HEX -> RGB ->HSL.\nShift-Klick, um Richtung umzukehren.\nKürzel: Bild auf- und Bild ab-Tasten." }, "colorpickerTooltip": { - "message": "Farbwähler öffnen", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Farbwähler öffnen" }, "configOnChange": { - "message": "bei Änderung", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "bei Änderung" }, "configOnChangeTooltip": { - "message": "Änderungen automatisch speichern und übernehmen", - "description": "" + "message": "Änderungen automatisch speichern und übernehmen" }, "configureStyle": { - "message": "Konfigurieren", - "description": "Label for the button to configure usercss userstyle" + "message": "Konfigurieren" }, "configureStyleOnHomepage": { - "message": "Auf Homepage konfigurieren", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Auf Homepage konfigurieren" }, "confirmCancel": { - "message": "Abbrechen", - "description": "" + "message": "Abbrechen" }, "confirmClose": { - "message": "Schließen", - "description": "'Close' button in a confirm dialog" + "message": "Schließen" }, "confirmDefault": { - "message": "Voreinstellung verwenden", - "description": "'Set to default' button in a confirm dialog" + "message": "Voreinstellung verwenden" }, "confirmDelete": { - "message": "Löschen", - "description": "" + "message": "Löschen" }, "confirmDiscardChanges": { - "message": "Änderungen verwerfen?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Änderungen verwerfen?" }, "confirmNo": { - "message": "Nein", - "description": "'No' button in a confirm dialog" + "message": "Nein" }, "confirmSave": { - "message": "Speichern", - "description": "'Save' button in a confirm dialog" + "message": "Speichern" }, "confirmStop": { - "message": "Stopp", - "description": "'Stop' button in a confirm dialog" + "message": "Stopp" }, "confirmYes": { - "message": "Ja", - "description": "'Yes' button in a confirm dialog" + "message": "Ja" + }, + "connectingDropbox": { + "message": "Verbinde mit Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Verbindung zur Dropbox ist nur in Apps verfügbar, die direkt vom Webstore installiert wurden" }, "copied": { - "message": "In die Zwischenablage kopiert", - "description": "Message shown when content has been copied to the clipboard" + "message": "In die Zwischenablage kopiert" }, "copy": { - "message": "In die Zwischenablage kopieren", - "description": "Tooltip for elements which can be copied" + "message": "In die Zwischenablage kopieren" + }, + "customNameHint": { + "message": "Neuen Anzeigenamen des Styles hier eingeben, um trotzdem weiterhin Updates zu erhalten" + }, + "customNameResetHint": { + "message": "Eigenen Anzeigenamen nicht mehr benutzen, wechsle wieder zum Standardnamen des Styles" }, "dateInstalled": { - "message": "Installationsdatum", - "description": "Option text for the user to sort the style by install date" + "message": "Installationsdatum" }, "dateUpdated": { - "message": "Updatedatum", - "description": "Option text for the user to sort the style by last update date" + "message": "Updatedatum" }, "dbError": { - "message": "Ein Fehler ist beim Verwenden der Stylus-Datenbank aufgetreten. Willst Du eine Webseite mit möglichen Lösungen besuchen?", - "description": "Prompt when a DB error is encountered" + "message": "Ein Fehler ist beim Verwenden der Stylus-Datenbank aufgetreten. Willst Du eine Webseite mit möglichen Lösungen besuchen?" }, "defaultTheme": { - "message": "Standard", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "Standard" }, "deleteStyleConfirm": { - "message": "Möchtest Du diesen Style wirklich löschen?", - "description": "Confirmation before deleting a style" + "message": "Möchtest Du diesen Style wirklich löschen?" }, "deleteStyleLabel": { - "message": "Löschen", - "description": "Label for the button to delete a style" + "message": "Löschen" }, "description": { - "message": "Gestalte das Web neu mit Stylus, dem Style Manager. Stylus ermöglicht dir ganz einfach Themes und Designs für viele beliebte Webseiten zu installieren.", - "description": "Extension description" + "message": "Gestalte das Web neu mit Stylus, dem Style Manager. Stylus ermöglicht dir ganz einfach Themes und Designs für viele beliebte Webseiten zu installieren." }, "disableAllStyles": { - "message": "Alle Styles deaktivieren", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Alle Styles deaktivieren" }, "disableStyleLabel": { - "message": "Deaktivieren", - "description": "Label for the button to disable a style" + "message": "Deaktivieren" }, "dragDropMessage": { - "message": "Ziehe die Backup Datei zum importieren an irgendeinen Ort auf dieser Seite.", - "description": "Drag'n'drop message" + "message": "Ziehe die Backup Datei zum importieren an irgendeinen Ort auf dieser Seite." }, "dragDropUsercssTabstrip": { - "message": "Ziehe die Datei auf die Tableiste, um sie zu installieren.", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Ziehe die Datei auf die Tableiste, um sie zu installieren." }, "editDeleteText": { - "message": "Löschen", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Löschen" }, "editGotoLine": { - "message": "Gehe zu Zeile (oder Zeile:Zeichen)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Gehe zu Zeile (oder Zeile:Zeichen)" }, "editStyleHeading": { - "message": "Style bearbeiten", - "description": "Title of the page for editing styles" + "message": "Style bearbeiten" }, "editStyleLabel": { - "message": "Bearbeiten", - "description": "Label for the button to go to the edit style page" + "message": "Bearbeiten" }, "editStyleTitle": { "message": "Style $stylename$ bearbeiten", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -310,212 +253,177 @@ } }, "enableStyleLabel": { - "message": "Aktivieren", - "description": "Label for the button to enable a style" + "message": "Aktivieren" }, "excludeStyleByDomainLabel": { - "message": "Aktuelle Domain ausschließen", - "description": "" + "message": "Aktuelle Domain ausschließen" }, "excludeStyleByUrlLabel": { - "message": "Aktuelle URL ausschließen", - "description": "" + "message": "Aktuelle URL ausschließen" }, "exportLabel": { - "message": "Exportieren", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportieren" + }, + "exportSavedSuccess": { + "message": "Datei erfolgreich gespeichert" }, "externalLink": { - "message": "Externer Link", - "description": "Label for external links" + "message": "Externer Link" }, "externalSupport": { - "message": "zur Supportseite", - "description": "Label for the external link to style's support site" + "message": "zur Supportseite" }, "externalUsercssDocument": { - "message": "Dokumentation für UserCSS", - "description": "Label for the external link to usercss documentation" + "message": "Dokumentation für UserCSS" }, "filteredStyles": { "message": "$numShown$ von $numTotal$ gesamt", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Aktuell angewandte Filter treffen auf keinen Style zu", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Aktuell angewandte Filter treffen auf keinen Style zu" }, "findStyles": { - "message": "Styles finden", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Styles finden" }, "findStylesForSite": { - "message": "Weitere Styles für diese Seite finden", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Weitere Styles für diese Seite finden" }, "findStylesInline": { - "message": "Ergebnisse hier anzeigen", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Ergebnisse hier anzeigen" }, "findStylesInlineTooltip": { - "message": "Suchergebnisse in diesem Fenster anzeigen.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Suchergebnisse in diesem Fenster anzeigen." }, "genericAdd": { - "message": "Hinzufügen", - "description": "Used in various places for an action that adds something" + "message": "Hinzufügen" }, "genericClone": { - "message": "Kopieren", - "description": "Used in various places for an action that clones something" + "message": "Kopieren" + }, + "genericDescription": { + "message": "Beschreibung" }, "genericDisabledLabel": { - "message": "Deaktiviert", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Deaktiviert" }, "genericEnabledLabel": { - "message": "Aktiviert", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Aktiviert" }, "genericError": { - "message": "Fehler", - "description": "Used in various places to indicate some error occurred." + "message": "Fehler" }, "genericHistoryLabel": { - "message": "Verlauf", - "description": "Used in various places to show a history log of something" + "message": "Verlauf" }, "genericNext": { - "message": "Weiter", - "description": "Used in various places to select/perform the next step/action" + "message": "Weiter" }, "genericPrevious": { - "message": "Zurück", - "description": "Used in various places to select/perform the previous step/action" + "message": "Zurück" }, "genericResetLabel": { - "message": "Zurücksetzen", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Zurücksetzen" }, "genericSavedMessage": { - "message": "Gespeichert", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Gespeichert" }, "genericTitle": { - "message": "Name", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Name" }, "genericUnknown": { - "message": "Unbekannt", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Unbekannt" + }, + "gettingStyles": { + "message": "Empfange alle Styles..." }, "helpAlt": { - "message": "Hilfe", - "description": "Alternate text for help buttons" + "message": "Hilfe" }, "helpKeyMapCommand": { - "message": "Befehlsnamen eingeben", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Befehlsnamen eingeben" }, "helpKeyMapHotkey": { - "message": "Hotkey drücken", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Hotkey drücken" }, "hostDisabled": { - "message": "Dieser Host wurde deaktiviert, weil die aktuell genutzte Version deines Browsers einen Fehler enthält.", - "description": "Tooltip for cloud host disabled" + "message": "Dieser Host wurde deaktiviert, weil die aktuell genutzte Version deines Browsers einen Fehler enthält." }, "importAppendLabel": { - "message": "Zum Style anfügen", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Zum Style anfügen" }, "importAppendTooltip": { - "message": "Füge den importierten Style an den aktuellen", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Füge den importierten Style an den aktuellen" }, "importLabel": { - "message": "Importieren", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importieren" + }, + "importPreprocessor": { + "message": "Ein Style mit einem @preprocessorfunktioniert nicht im klassischen Modus. Du kannst den Editor auf UserCSS umstellen: 1) Öffne den Style-Manager, 2) Aktiviere das Kästchen \"Als UserCSS\", 3) Klicke auf \"Neuen Style erstellen\"\n\nTrotzdem jetzt importieren?" + }, + "importPreprocessorTitle": { + "message": "Mögliches Problem wegen @preprocessor" }, "importReplaceLabel": { - "message": "Style überschreiben", - "description": "Label for the button to import and overwrite current style" + "message": "Style überschreiben" }, "importReplaceTooltip": { - "message": "Verwerfe den aktuellen Style-Inhalt und überschreibe ihn mit dem importierten", - "description": "Label for the button to import and overwrite current style" + "message": "Verwerfe den aktuellen Style-Inhalt und überschreibe ihn mit dem importierten" }, "importReportLegendAdded": { - "message": "Hinzugefügt", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "Hinzugefügt" }, "importReportLegendIdentical": { - "message": "Identische übersprungen", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "Identische übersprungen" }, "importReportLegendInvalid": { - "message": "Ungültige übersprungen", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "Ungültige übersprungen" }, "importReportLegendUpdatedBoth": { - "message": "Aktualisierte Codes und Metadaten", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "Aktualisierte Codes und Metadaten" }, "importReportLegendUpdatedCode": { - "message": "Aktualisierter Code", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "Aktualisierter Code" }, "importReportLegendUpdatedMeta": { - "message": "Aktualisierte Metadaten", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "Aktualisierte Metadaten" }, "importReportTitle": { - "message": "Importieren der Styles abgeschlossen.", - "description": "Title of the report shown after importing styles" + "message": "Importieren der Styles abgeschlossen." }, "importReportUnchanged": { - "message": "Nichts wurde geändert.", - "description": "Message in the report shown after importing styles" + "message": "Nichts wurde geändert." }, "importReportUndone": { - "message": "Styles wiederherstellt", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "Styles wiederherstellt" }, "importReportUndoneTitle": { - "message": "Importierung wurde rückgängig gemacht.", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importierung wurde rückgängig gemacht." }, "installButton": { - "message": "Style installieren", - "description": "Label for install button" + "message": "Style installieren" }, "installButtonInstalled": { - "message": "Style installiert", - "description": "Text displayed when the style is successfully installed" + "message": "Style erfolgreich installiert" }, "installButtonReinstall": { - "message": "Style neu installieren", - "description": "Label for reinstall button" + "message": "Style neu installieren" }, "installButtonUpdate": { - "message": "Style updaten", - "description": "Label for update button" + "message": "Style updaten" }, "installUpdate": { - "message": "Update installieren", - "description": "Label for the button to install an update for a single style" + "message": "Update installieren" }, "installUpdateFrom": { "message": "Style erhält momentan Updates von $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -523,28 +431,31 @@ } }, "installUpdateFromLabel": { - "message": "Nach Updates suchen", - "description": "Label for the checkbox to save current URL for update check" + "message": "Nach Updates suchen" }, "license": { - "message": "Lizenz", - "description": "Label for the license" + "message": "Lizenz" }, "linkGetHelp": { - "message": "Hilfeseite anzeigen", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Hilfeseite anzeigen" + }, + "linkGetShareStyles": { + "message": "Styles finden und teilen" + }, + "linkGetShareStylesInfo": { + "message": "Die neue, von der Community betriebene Website userstyles.world wurde von Userstyle-Autoren erstellt, um userstyles.org zu ersetzen. Dieses war im letzten Jahr so langsam und unzuverlässig geworden, dass viele Autoren ihre Styles nicht mehr aktualisierten." }, "linkGetStyles": { - "message": "Styles beziehen", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Styles beziehen" + }, + "linkGetStylesInfo": { + "message": "Diese Archivseite wurde von einem Nutzer der Userstyle Community erstellt, um eine Sicherungskopie des langsamen und unzuverlässigen userstyles.org bereitzustellen. Die Inhalte werden ungefähr einmal am Tag aktualisiert." }, "linkTranslate": { - "message": "Übersetzen", - "description": "Transifex link text on the manage page" + "message": "Übersetzen" }, "linterCSSLintIncompatible": { "message": "CSSLint unterstützt den $preprocessorname$ Präprozessor nicht", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -552,12 +463,10 @@ } }, "linterCSSLintSettings": { - "message": "(Regeln: 0 = Deaktiviert; 1 = Warnung; 2 = Fehler)", - "description": "CSSLint rule config values" + "message": "(Regeln: 0 = Deaktiviert; 1 = Warnung; 2 = Fehler)" }, "linterConfigPopupTitle": { "message": "Einstellungen für $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -565,20 +474,16 @@ } }, "linterConfigTooltip": { - "message": "Klicken, um diesen Linter zu konfigurieren", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Klicken, um diesen Linter zu konfigurieren" }, "linterInvalidConfigError": { - "message": "Nicht gespeichert aufgrund folgender ungültiger Einstellungen:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Nicht gespeichert aufgrund folgender ungültiger Einstellungen:" }, "linterIssues": { - "message": "Probleme", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Probleme" }, "linterIssuesHelp": { "message": "Folgende Probleme wurden von $link$ gefunden:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -586,144 +491,93 @@ } }, "linterJSONError": { - "message": "Ungültiges JSON Format", - "description": "Setting linter config with invalid JSON" + "message": "Ungültiges JSON Format" }, "linterResetMessage": { - "message": "Um versehentliches Zurücksetzen rückgängig zu machen, drücke Strg+Z im Textfenster", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Um versehentliches Zurücksetzen rückgängig zu machen, drücke Strg+Z im Textfenster" }, "linterRulesLink": { - "message": "Vollständige Liste der Regeln anzeigen", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Vollständige Liste der Regeln anzeigen" }, "liveReloadError": { - "message": "Bei der Echtzeitaktualisierung der Datei ist ein Fehler aufgetreten", - "description": "The label of live-reload error" + "message": "Bei der Echtzeitaktualisierung der Datei ist ein Fehler aufgetreten" }, "liveReloadInstallHint": { - "message": "Lasse diesen Tab geöffnet, um den Style bei externen Änderungen automatisch zu aktualisieren.", - "description": "The label of live-reload feature" + "message": "Lasse diesen Tab geöffnet, um den Style bei externen Änderungen automatisch zu aktualisieren." }, "liveReloadInstallHintFF": { - "message": "Lasse diesen und den Originaltab offen, um den Style bei externen Änderungen automatisch zu aktualisieren.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "Lasse diesen und den Originaltab offen, um den Style bei externen Änderungen automatisch zu aktualisieren." }, "liveReloadLabel": { - "message": "Echtzeitaktualisierung", - "description": "The label of live-reload feature" + "message": "Echtzeitaktualisierung" }, "manageFavicons": { - "message": "Favicons in der \"Gilt für\" Spalte anzeigen", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons in der \"Gilt für\" Spalte anzeigen" }, "manageFaviconsGray": { - "message": "Ausgegraut", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Ausgegraut" }, "manageFaviconsHelp": { - "message": "Stylus nutzt hierzu den externen Dienst https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus nutzt hierzu den externen Dienst https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filter", - "description": "Label for filters container" + "message": "Filter" }, "manageHeading": { - "message": "Installierte Styles", - "description": "Heading for the manage page" + "message": "Installierte Styles" }, "manageMaxTargets": { - "message": "Anzahl der \"Gilt für\" Elemente", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Anzahl der \"Gilt für\" Elemente" }, "manageNewStyleAsUsercss": { - "message": "als UserCSS", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "als UserCSS" }, "manageNewUI": { - "message": "Neues Verwaltungs-Layout", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Neues Verwaltungs-Layout" }, "manageOnlyDisabled": { - "message": "Nur deaktivierte Styles", - "description": "Checkbox to show only disabled styles" + "message": "Nur deaktivierte Styles" }, "manageOnlyEnabled": { - "message": "Nur aktivierte Styles", - "description": "Checkbox to show only enabled styles" + "message": "Nur aktivierte Styles" }, "manageOnlyExternal": { - "message": "Nur externe Styles", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Nur externe Styles" }, "manageOnlyLocal": { - "message": "Nur lokale Styles", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Nur lokale Styles" }, "manageOnlyLocalTooltip": { - "message": "(Diese Styles wurden nicht durch userstyles.org installiert)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(Diese Styles wurden nicht durch userstyles.org installiert)" }, "manageOnlyNonUsercss": { - "message": "Keine UserCSS Styles", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Keine UserCSS Styles" }, "manageOnlyUpdates": { - "message": "Nur mit Updates oder Problemen", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Nur mit Updates oder Problemen" }, "manageOnlyUsercss": { - "message": "Nur UserCSS Styles", - "description": "Checkbox to show only Usercss styles" + "message": "Nur UserCSS Styles" }, "menuShowBadge": { - "message": "Anzahl der aktiven Styles anzeigen", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Anzahl der aktiven Styles anzeigen" }, "meta_invalidCheckboxDefault": { - "message": "Ungültige @var Checkbox: Wert muss 0 oder 1 sein", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Ungültige @var Checkbox: Wert muss 0 oder 1 sein" }, "meta_invalidColor": { "message": "Ungültige @var Farbe: $color$ ist keine Farbe", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Erwarte Zahl" + }, "meta_invalidRange": { "message": "Ungültige @var $type$: Wert muss eine Zahl oder ein Array sein", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Ungültige @var $type$: Mehrere Einheiten sind definiert", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Ungültige @var $type$: Der Array enthält zu viele Elemente", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Ungültige @var $type$: Elemente im Array müssen Zahlen, Strings oder null sein", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -732,16 +586,6 @@ }, "meta_invalidRangeDefault": { "message": "Ungültige @var $type$: Standardwert ist null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Ungültige @var $type$: Standardwert ist geringer als das Minimum", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -750,7 +594,22 @@ }, "meta_invalidRangeMax": { "message": "Ungültige @var $type$: Standardwert ist größer als das Maximum", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Ungültige @var $type$: Standardwert ist geringer als das Minimum", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Ungültige @var $type$: Mehrere Einheiten sind definiert", "placeholders": { "type": { "content": "$1" @@ -759,7 +618,14 @@ }, "meta_invalidRangeStep": { "message": "Ungültige @var $type$: Standardwert ist kein Vielfaches der Schrittweite", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Ungültige @var $type$: Der Array enthält zu viele Elemente", "placeholders": { "type": { "content": "$1" @@ -768,7 +634,6 @@ }, "meta_invalidRangeUnits": { "message": "Ungültige @var $type$: '$units$' ist keine gültige Einheit", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -778,37 +643,40 @@ } } }, - "meta_invalidSelect": { - "message": "Ungültiges @var select: Der Standardwert muss eine Array oder Objekt sein", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Ungültige @var $type$: Elemente im Array müssen Zahlen, Strings oder null sein", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Ungültiges @var select: Werte innerhalb des Arrays/Objekts müssen Strings sein", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Ungültiges @var select: Der Standardwert muss eine Array oder Objekt sein" }, "meta_invalidSelectEmptyOptions": { - "message": "Ungültiges @var select: Die Auswahlliste ist leer", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ungültiges @var select: Die Auswahlliste ist leer" }, "meta_invalidSelectLabel": { - "message": "Ungültiges @var select: Beschriftung der Auswahlmöglichkeiten ist leer", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ungültiges @var select: Beschriftung der Auswahlmöglichkeiten ist leer" }, "meta_invalidSelectMultipleDefaults": { - "message": "Ungültiges @var select: Mehrere Standardauswahlen sind definiert", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ungültiges @var select: Mehrere Standardauswahlen sind definiert" }, "meta_invalidSelectNameDuplicated": { - "message": "Ungültiges @var select: Doppelte Optionsnamen", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ungültiges @var select: Doppelte Optionsnamen" + }, + "meta_invalidSelectValue": { + "message": "Ungültiges @var select: Werte innerhalb des Arrays/Objekts müssen Strings sein" }, "meta_invalidSelectValueMismatch": { - "message": "Ungültiges @var select: Wert existiert nicht in der Auswahlliste", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ungültiges @var select: Wert existiert nicht in der Auswahlliste" + }, + "meta_invalidString": { + "message": "Erwarte String in Anführungszeichen" }, "meta_invalidURLProtocol": { "message": "Ungültiges URL Protokoll. Nur http und https sind erlaubt: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -816,29 +684,13 @@ } }, "meta_invalidVersion": { - "message": "Ungültige Versionsnummer: Der Wert entspricht nicht dem SemVer Schema: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Erwarte Zahl", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Erwarte String in Anführungszeichen", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Ungültige Versionsnummer" }, "meta_invalidWord": { - "message": "Erwarte ein Wort", - "description": "Error displayed when the value is expected to be a word" + "message": "Erwarte ein Wort" }, "meta_missingChar": { "message": "Erwarte Zeichen: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -846,12 +698,10 @@ } }, "meta_missingEOT": { - "message": "Erwarte EOT Daten", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Erwarte EOT Daten" }, "meta_missingMandatory": { "message": "Erforderliche Metadaten fehlen: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -860,7 +710,6 @@ }, "meta_unknownJSONLiteral": { "message": "Ungültiges JSON: $literal$ ist kein gültiges JSON Symbol", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -869,16 +718,33 @@ }, "meta_unknownMeta": { "message": "Unbekannte Metadaten: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "Vielleicht @$keyOk$? Unbekannte Metadaten: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "Unbekannter @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Unbekannter @$varkey$ Typ: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -888,150 +754,131 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Unbekannter @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Keine Importdatei vorhanden. Um Styles zu importieren, solltest du sie zuerst exportieren." }, "noStylesForSite": { - "message": "Für diese Webseite sind keine Styles installiert.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Für diese Webseite sind keine Styles installiert." + }, + "numberedLine": { + "message": "Zeile:" }, "openManage": { - "message": "Verwalten", - "description": "Link to open the manage page." + "message": "Verwalten" }, "openOptions": { - "message": "Optionen", - "description": "Go to Options UI" + "message": "Optionen" }, "openStylesManager": { - "message": "Style Verwaltung öffnen", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Style Verwaltung öffnen" }, "optionsActions": { - "message": "Aktionen", - "description": "" + "message": "Aktionen" }, "optionsAdvanced": { - "message": "Erweitert", - "description": "" + "message": "Erweitert" }, "optionsAdvancedContextDelete": { - "message": "\"Löschen\" im Editor-Kontextmenü hinzufügen", - "description": "" + "message": "\"Löschen\" im Editor-Kontextmenü hinzufügen" }, "optionsAdvancedExposeIframes": { - "message": "Ermögliche Iframes via HTML[stylus-iframe]", - "description": "" + "message": "Ermögliche Iframes via HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Style wirkt sich auch auf iframes der anvisierten (obersten) Domain aus.\nIframe-spezifisches CSS ist dann wie folgt möglich:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Style wirkt sich auch auf iframes der anvisierten (obersten) Domain aus.\nIframe-spezifisches CSS ist dann wie folgt möglich:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Schreibe neuen Style als UserCSS", - "description": "" + "message": "Schreibe neuen Style als UserCSS" + }, + "optionsAdvancedPatchCsp": { + "message": "CSPabändern, um externe Ressourcen zu erlauben" + }, + "optionsAdvancedPatchCspNote": { + "message": "Aktivieren, wenn Styles Bilder oder Schriftarten enthalten, die aufgrund strenger CSP (Content-Security-Policy) Regeln mancher Seiten nicht laden.\n\nDas Aktivieren wird CSPBeschränkungen lockern, um für den Style erforderliche Ressourcen zu laden. Diese Option ist für fortgeschrittene Benutzer gedacht, die sich den möglichen Sicherheitsrisiken bewusst sind und die die Verantwortung dafür tragen, die nachgeladenen Inhalte selbst zu überwachen. Informiere dich über \"CSS-basierte Angriffe\" um mehr zu erfahren.\n\nBeachte außerdem, dass diese Option nicht garantiert funktioniert, falls eine andere installierte Erweiterung die Netzwerkantwort (CSP-header) zuerst abändert." + }, + "optionsAdvancedStyleViaXhr": { + "message": "Style unverzüglich einfügen" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "Aktivieren, falls während dem Browsen ungestylter Inhalt aufblitzt (FOUC). Besonders auffällig bei dunklen Styles.\n\nDer technische Grund ist, dass Chrome/Chromium die asynchrone Kommunikation von Erweiterungen zeitlich nach hinten verschiebt, um vermeintlich die Seitenladegeschwindigkeit zu erhöhen. Dies kann das Einfügen von Styles spürbar verzögern. Da für WebExtensions keine synchrone API bereitgestellt wird, versucht Stylus als Notbehelf, Styles über die veraltete XMLHttpRequest web API zu laden. Es sollten keine nachteiligen Effekte eintreten, weil die Anfrage innerhalb weniger Millisekunden abgearbeitet wird, während die Seite noch vom Server geladen wird.\n\nTrotzdem wird Chromium eine Warnung in der Entwicklerkonsole ausgeben. Über Rechtsklick auf die Warnung können zukünftige Meldungen versteckt werden." }, "optionsBadgeDisabled": { - "message": "Hintergrundfarbe wenn deaktiviert", - "description": "" + "message": "Hintergrundfarbe wenn deaktiviert" }, "optionsBadgeNormal": { - "message": "Hintergrundfarbe", - "description": "" + "message": "Hintergrundfarbe" }, "optionsCheck": { - "message": "Styles aktualisieren", - "description": "" + "message": "Styles aktualisieren" }, "optionsCheckUpdate": { - "message": "Alle verfügbaren Updates Installieren", - "description": "" + "message": "Alle verfügbaren Updates Installieren" }, "optionsCustomizeBadge": { - "message": "Badge auf dem Toolbar-Icon", - "description": "" + "message": "Badge auf dem Toolbar-Icon" }, "optionsCustomizeIcon": { - "message": "Symbolleisten-Icon", - "description": "" + "message": "Symbolleisten-Icon" }, "optionsCustomizeSync": { - "message": "Mit Cloud synchronisieren", - "description": "" + "message": "Mit Cloud synchronisieren" }, "optionsHeading": { - "message": "Optionen", - "description": "Heading for options section on manage page." + "message": "Optionen" }, "optionsIconDark": { - "message": "Dunkle Browser-Themes", - "description": "" + "message": "Dunkle Browser-Themes" }, "optionsIconLight": { - "message": "Helle Browser-Themes", - "description": "" + "message": "Helle Browser-Themes" }, "optionsOpen": { - "message": "Öffnen", - "description": "" + "message": "Öffnen" }, "optionsOpenManager": { - "message": "Verwaltung", - "description": "" + "message": "Verwaltung" }, "optionsPopupWidth": { - "message": "Popup-Breite (in Pixeln)", - "description": "" + "message": "Popup-Breite (in Pixeln)" }, "optionsReset": { - "message": "Setzt diese Einstellungen auf die Standard-Werte zurück.", - "description": "" + "message": "Setzt diese Einstellungen auf die Standard-Werte zurück." }, "optionsResetButton": { - "message": "Optionen zurücksetzen", - "description": "" + "message": "Optionen zurücksetzen" + }, + "optionsStylusThemes": { + "message": "Stylus UI-Theme suchen" }, "optionsSubheading": { - "message": "Mehr Optionen", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Nach dem Importieren von Styles aus einer alten Version oder von Stylish ist eine einmalige manuelle Updatesuche in der Verwaltung nötig. Dies stellt sicher, dass alle Styles auf dem aktuellsten Stand sind.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Style-Updateintervall in Stunden (0 zum Deaktivieren)", - "description": "" - }, - "optionsSyncNone": { - "message": "Nichts", - "description": "" + "message": "Mehr Optionen" }, "optionsSyncConnect": { - "message": "Verbinden", - "description": "" + "message": "Verbinden" }, "optionsSyncDisconnect": { - "message": "Trennen", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Jetzt synchronisieren", - "description": "" + "message": "Trennen" }, "optionsSyncLogin": { - "message": "Anmelden", - "description": "" + "message": "Anmelden" + }, + "optionsSyncNone": { + "message": "Nichts" + }, + "optionsSyncStatusConnected": { + "message": "Verbunden" + }, + "optionsSyncStatusConnecting": { + "message": "Verbinde..." + }, + "optionsSyncStatusDisconnected": { + "message": "Verbindung getrennt" + }, + "optionsSyncStatusDisconnecting": { + "message": "Trenne Verbindung..." }, "optionsSyncStatusPull": { "message": "Hole Style $loaded$ von $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1043,7 +890,6 @@ }, "optionsSyncStatusPush": { "message": "Lade Style $loaded$ von $total$ hoch", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1053,261 +899,248 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "Session abgelaufen, bitte neu einloggen." + }, "optionsSyncStatusSyncing": { - "message": "Synchronisiere...", - "description": "" + "message": "Synchronisiere..." }, - "optionsSyncStatusConnecting": { - "message": "Verbinde...", - "description": "" + "optionsSyncSyncNow": { + "message": "Jetzt synchronisieren" }, - "optionsSyncStatusConnected": { - "message": "Verbunden", - "description": "" + "optionsUpdateImportNote": { + "message": "Nach dem Importieren von Styles aus einer alten Version oder von Stylish ist eine einmalige manuelle Updatesuche in der Verwaltung nötig. Dies stellt sicher, dass alle Styles auf dem aktuellsten Stand sind." }, - "optionsSyncStatusDisconnecting": { - "message": "Trenne Verbindung...", - "description": "" + "optionsUpdateInterval": { + "message": "Style-Updateintervall in Stunden (0 zum Deaktivieren)" }, - "optionsSyncStatusDisconnected": { - "message": "Verbindung getrennt", - "description": "" + "overwriteFileExport": { + "message": "Willst du die existierende Datei überschreiben?" }, "paginationCurrent": { - "message": "Aktuelle Seite", - "description": "Tooltip for the current page index in search results" + "message": "Aktuelle Seite" }, "paginationEstimated": { - "message": "Geschätzte Seitenanzahl", - "description": "Tooltip for the total page count in search results" + "message": "Geschätzte Seitenanzahl" }, "paginationNext": { - "message": "Nächste Seite", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Nächste Seite" }, "paginationPrevious": { - "message": "Vorherige Seite", - "description": "Tooltip for the '<-' button in search results" + "message": "Vorherige Seite" }, "paginationTotal": { - "message": "Gesamtzahl der Seiten", - "description": "" + "message": "Gesamtzahl der Seiten" }, "parseUsercssError": { - "message": "UserCSS parsen fehlgeschlagen:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "UserCSS parsen fehlgeschlagen:" }, "popupAutoResort": { - "message": "Styles im Popup sofort neu sortieren", - "description": "Label for the checkbox controlling popup resorting." + "message": "Styles im Popup sofort neu sortieren" }, "popupBorders": { - "message": "Weiße Rahmen an den Seiten hinzufügen", - "description": "" + "message": "Weiße Rahmen an den Seiten hinzufügen" }, "popupBordersTooltip": { - "message": "Nützlich für dunkle Themes im neuen Chrome, da dort die Seitenränder nicht mehr gefärbt werden", - "description": "" + "message": "Nützlich für dunkle Themes im neuen Chrome, da dort die Seitenränder nicht mehr gefärbt werden" }, "popupHotkeysInfo": { - "message": "<0>-<9> (auch auf NumPad) schaltet den n-ten Style um (0 ist 10)\n- schaltet ersten Style, dessen Name mit diesem Buchstaben beginnt, um\n öffnet Editor statt umzuschalten\n aktiviert die aufgeführten Styles\n deaktiviert die aufgeführten Styles\n schaltet anfänglich aktivierte Styles um. Trifft nicht auf Styles zu, die erst aktiviert werden, wenn das Popup noch geöffnet ist. Dadurch kann z.B. die Anfangseinstellung nach einem Test wiederhergestellt werden: \nMehr dazu im Wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<0>-<9> (auch auf NumPad) schaltet den n-ten Style um (0 ist 10)\n- schaltet ersten Style, dessen Name mit diesem Buchstaben beginnt, um\n öffnet Editor statt umzuschalten\n aktiviert die aufgeführten Styles\n deaktiviert die aufgeführten Styles\n schaltet anfänglich aktivierte Styles um. Trifft nicht auf Styles zu, die erst aktiviert werden, wenn das Popup noch geöffnet ist. Dadurch kann z.B. die Anfangseinstellung nach einem Test wiederhergestellt werden: \nMehr dazu im Wiki" }, "popupHotkeysTooltip": { - "message": "Klicke, um Tastenkürzel zu sehen", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Klicke, um Tastenkürzel zu sehen" }, "popupManageTooltip": { - "message": "Shift+Klick oder Rechtsklick öffnet den Stylemanager mit Filter für Styles der aktuellen Seite", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift+Klick oder Rechtsklick öffnet den Stylemanager mit Filter für Styles der aktuellen Seite" }, "popupMenuButtonTooltip": { - "message": "Aktionsmenü", - "description": "Tooltip for menu button in popup." + "message": "Aktionsmenü" + }, + "popupOpenEditInPopup": { + "message": "Einfaches Fenster verwenden (keine Omnibox)" }, "popupOpenEditInWindow": { - "message": "Editor in neuem Fenster öffnen", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Editor in neuem Fenster öffnen" }, "popupOpenEditInWindowTooltip": { - "message": "Wird auch aktiviert durch Lösen des Editor-Tabs vom Browserfenster\nund deaktiviert durch Zusammenführen eines Editor-Tabs mit einem anderen Fenster.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Wird auch aktiviert durch Lösen des Editor-Tabs vom Browserfenster\nund deaktiviert durch Zusammenführen eines Editor-Tabs mit einem anderen Fenster." }, "popupStylesFirst": { - "message": "Styles vor den Bedienelementen", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Styles vor den Bedienelementen" }, "prefShowBadge": { - "message": "Anzahl der aktiven Styles auf der aktuellen Seite", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Anzahl der aktiven Styles auf der aktuellen Seite" }, "previewLabel": { - "message": "Echtzeitvorschau", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Echtzeitvorschau" }, "previewTooltip": { - "message": "Übernimmt die Änderungen nur vorübergehend.\nSpeichere den Style, um die Änderungen dauerhaft anzuwenden.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Übernimmt die Änderungen nur vorübergehend.\nSpeichere den Style, um die Änderungen dauerhaft anzuwenden." + }, + "publish": { + "message": "Veröffentlichen" + }, + "publishPush": { + "message": "Erneut veröffentlichen" + }, + "publishReconnect": { + "message": "Versuche, die Verbindung zu trennen; dann erneut veröffentlichen" + }, + "publishRetry": { + "message": "Stylus versucht noch, den Style zu veröffentlichen, aber du kannst es erneut versuchen, wenn du keine Aktivität oder Popups siehst. Jetzt neu versuchen?" + }, + "publishStyle": { + "message": "Style veröffentlichen" + }, + "publishUsw": { + "message": "Via " + }, + "readingStyles": { + "message": "Lese Styles..." }, "reload": { - "message": "Stylus Addon neu laden", - "description": "Context menu reload" + "message": "Stylus Addon neu laden" }, "replace": { - "message": "Ersetzen", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Ersetzen" }, "replaceAll": { - "message": "Alles ersetzen", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Alles ersetzen" }, "replaceWith": { - "message": "Ersetzen durch", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Ersetzen durch" }, "retrieveBckp": { - "message": "Styles importieren", - "description": "" + "message": "Styles importieren" }, "search": { - "message": "Suche", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Suche" }, "searchCaseSensitive": { - "message": "Groß- / Kleinschreibung beachten", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Groß- / Kleinschreibung beachten" + }, + "searchGlobalStyles": { + "message": "Auch globale Styles suchen" }, "searchNumberOfResults": { - "message": "Trefferanzahl", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Trefferanzahl" }, "searchNumberOfResults2": { - "message": "Trefferanzahl im Code und in \"Gilt für\" Feldern", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Trefferanzahl im Code und in \"Gilt für\" Feldern" }, "searchRegexp": { - "message": "Verwende die /re/ Syntax zur Suche als RegExp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Verwende die /re/ Syntax zur Suche als RegExp" }, "searchResultInstallCount": { - "message": "Gesamte Installationen", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Gesamte Installationen" }, "searchResultNoneFound": { - "message": "Keine Styles für diese Seite gefunden.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Keine Styles für diese Seite gefunden." + }, + "searchResultNotMatching": { + "message": "Der Style wurde installiert, gilt aber nicht für die aktuelle URL." + }, + "searchResultNotMatchingNote": { + "message": "Frage den Autor des Styles, ob er die URL hinzufügt.\n\nDu kannst den Style auch selbst bearbeiten,\naber dann werden automatische Updates für diesen Style deaktiviert." }, "searchResultRating": { - "message": "Bewertung", - "description": "Text for label that shows the search result's rating" + "message": "Bewertung" }, "searchResultUpdated": { - "message": "Aktualisiert am", - "description": "Text for label that shows the search result's last update date" + "message": "Aktualisiert am" }, "searchResultWeeklyCount": { - "message": "Wöchentliche Installationen", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Wöchentliche Installationen" }, - "searchStyles": { - "message": "Inhalte durchsuchen", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "Stylenamen ohne Beachtung der Groß-/Kleinschreibung suchen:\nMehrere Suchworte - alle Wörter in beliebiger Reihenfolge\n\"Bestimmte Phrase\" - genau diese Phrase ohne Anführungszeichen\n2020 - zeigt auch Styles, die 2020 aktualisiert wurden" + }, + "searchStylesAll": { + "message": "Alles" + }, + "searchStylesCode": { + "message": "CSS Code" }, "searchStylesHelp": { - "message": "Die -Taste (Numpad) fokussiert das Suchfeld.\nEinfacher Text: Sucht im Namen, Quelltext, Homepage und anvisierten URLs. Wörter mit weniger als 3 Buchstaben werden ignoriert.\nStyles, die auf eine URL passen: Stelle der Suche voran, z.B. \nRegExp: Nutze Slash und Flags, z.B. \nSuche nach genauem Ausdruck: Anführungszeichen verwenden, z.B. <\".header ~ div\"> ", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Die -Taste (Numpad) oder fokussieren das Suchfeld.\nEinfacher Text: Sucht mit Leerzeichen getrennte Wörter in beliebiger Reihenfolge.\nSuche nach genauem Ausdruck: Anführungszeichen verwenden, z.B. <\".header ~ div\">\nRegExp: Nutze Schrägstrich und Flags, z.B. \nStyles, die auf eine URL passen: Aktiviere \"Nach URL\" und suche nach einer vollständigen URL, z.B. https://www.example.org/\nMetadaten: Aktiviere das Kontrollkästchen für Metadaten, um in Namen, \"Gilt für\" Feldern, Installations-URL, Update-URL und dem gesamten Metadatenblock in UserCSS Styles zu suchen." + }, + "searchStylesMatchUrl": { + "message": "Nach URL" + }, + "searchStylesMeta": { + "message": "Metadaten" }, "sectionAdd": { - "message": "Weiteren Bereich hinzufügen", - "description": "Label for the button to add a section" + "message": "Weiteren Bereich hinzufügen" }, "sectionRemove": { - "message": "Bereich entfernen", - "description": "Label for the button to remove a section" + "message": "Bereich entfernen" }, "sectionRestore": { - "message": "Gelöschten Bereich wiederherstellen", - "description": "Label for the button to restore a removed section" + "message": "Gelöschten Bereich wiederherstellen" + }, + "sections": { + "message": "Bereiche" }, "shortcuts": { - "message": "Tastenkürzel", - "description": "Go to shortcut configuration" + "message": "Tastenkürzel" }, "shortcutsNote": { - "message": "Eine Tastenkombination definieren", - "description": "" + "message": "Eine Tastenkombination definieren" }, "sortDateNewestFirst": { - "message": "neueste zuerst", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "neueste zuerst" }, "sortDateOldestFirst": { - "message": "älteste zuerst", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "älteste zuerst" }, "sortLabel": { - "message": "Wähle eine Sortierreihenfolge für die installierten Styles", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Wähle eine Sortierreihenfolge für die installierten Styles" }, "sortLabelTitleAsc": { - "message": "Name aufsteigend", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Name aufsteigend" }, "sortLabelTitleDesc": { - "message": "Name absteigend", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Name absteigend" }, "sortStylesHelp": { - "message": "Wähle die anzuwendende Sortierart aus dem Dropdown-Menü aus. Die Standardeinstellung sortiert aufsteigend nach Name des Styles (A bis Z). Innerhalb der \"Name absteigend\"-Gruppe wird von Z bis A sortiert.\nEs gibt andere Voreinstellungen, die es erlauben, Einträge nach mehreren Kriterien zu sortieren. Stelle es dir vor wie bei einer Tabellensortierung mit mehreren Spalten. Jede Kategorie (vor bzw. nach Pluszeichen) stellt dabei eine Spalte dar.\nIst die Einstellung beispielsweise \"Aktiviert (zuerst) + Name\", dann werden die Einträge so sortiert, dass alle aktivierten Styles zuerst stehen (von A bis Z) und dann alle deaktivierten Styles (wieder von A beginnend bis Z).", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Wähle die anzuwendende Sortierart aus dem Dropdown-Menü aus. Die Standardeinstellung sortiert aufsteigend nach Name des Styles (A bis Z). Innerhalb der \"Name absteigend\"-Gruppe wird von Z bis A sortiert.\nEs gibt andere Voreinstellungen, die es erlauben, Einträge nach mehreren Kriterien zu sortieren. Stelle es dir vor wie bei einer Tabellensortierung mit mehreren Spalten. Jede Kategorie (vor bzw. nach Pluszeichen) stellt dabei eine Spalte dar.\nIst die Einstellung beispielsweise \"Aktiviert (zuerst) + Name\", dann werden die Einträge so sortiert, dass alle aktivierten Styles zuerst stehen (von A bis Z) und dann alle deaktivierten Styles (wieder von A beginnend bis Z)." }, "sortStylesHelpTitle": { - "message": "Inhalte sortieren", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Inhalte sortieren" }, "styleBadRegexp": { - "message": "Regulärer Ausdruck (RegExp) ist ungültig.", - "description": "Validation message for a bad regexp in a style" + "message": "Regulärer Ausdruck (RegExp) ist ungültig." }, "styleBeautify": { - "message": "Code formatieren", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Code formatieren" }, "styleBeautifyHint": { - "message": "Hinweis: Mache einen Rechtsklick auf \"Code formatieren\" oder nutze das weiter unten definierte Tastenkürzel, um den Code zu formatieren ohne dieses Fenster anzuzeigen.", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "Hinweis: Mache einen Rechtsklick auf \"Code formatieren\" oder nutze das weiter unten definierte Tastenkürzel, um den Code zu formatieren ohne dieses Fenster anzuzeigen." }, "styleBeautifyIndentConditional": { - "message": "Rücke @media / @supports ein", - "description": "CSS-beautifier option" + "message": "Rücke @media / @supports ein" }, "styleBeautifyPreserveNewlines": { - "message": "Leerzeilen schützen", - "description": "CSS-beautifier option" + "message": "Leerzeilen schützen" }, "styleCancelEditLabel": { - "message": "Zurück zum Verwalten", - "description": "Label for cancel button for style editing" + "message": "Zurück zum Verwalten" }, "styleChangesNotSaved": { - "message": "Du hast Änderungen an diesem Style vorgenommen, ohne diese zu speichern.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Du hast Änderungen an diesem Style vorgenommen, ohne diese zu speichern." }, "styleEnabledLabel": { - "message": "Aktiviert", - "description": "Label for the enabled state of styles" + "message": "Aktiviert" }, "styleFromMozillaFormatError": { - "message": "Import vom Mozilla Format fehlgeschlagen", - "description": "Label for the import error" + "message": "Import vom Mozilla Format fehlgeschlagen" }, "styleFromMozillaFormatPrompt": { - "message": "Mozilla-Format Code einfügen", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Mozilla-Format Code einfügen" }, "styleInstall": { "message": "\"$stylename$\" mit Stylus installieren?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1316,7 +1149,6 @@ }, "styleInstallFailed": { "message": "Installation des Styles fehlgeschlagen!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1325,82 +1157,68 @@ }, "styleInstallOverwrite": { "message": "\"$stylename$\" ist bereits installiert. Überschreiben?\nVersion: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Bitte Namen eingeben", - "description": "Error displayed when user saves without providing a name" + "message": "Bitte Namen eingeben" + }, + "styleName": { + "message": "Stylename" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Der Style wurde aufgrund ungültiger RegExp nicht angewandt.", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Der Style wurde aufgrund ungültiger RegExp nicht angewandt." }, "styleRegexpInvalidExplanation": { - "message": "Einige RegExp konnten nicht kompiliert werden.", - "description": "" + "message": "Einige RegExp konnten nicht kompiliert werden." }, "styleRegexpPartialExplanation": { - "message": "Dieser Style verwendet nur teilweise übereinstimmende RegExp unter Missachtung der CSS4 @document Spezifikationen, welche eine vollständig übereinstimmende URL benötigen. Die betroffenen CSS-Bereiche wurde nicht auf die Website angewandt. Dieser Style wurde wahrscheinlich unter Stylish für Chrome erstellt, in der seit der ersten Version eine fehlerhafte Überprüfung der RegExp besteht (bekannter Fehler).", - "description": "" + "message": "Dieser Style verwendet nur teilweise übereinstimmende RegExp unter Missachtung der CSS4 @document Spezifikationen, welche eine vollständig übereinstimmende URL benötigen. Die betroffenen CSS-Bereiche wurde nicht auf die Website angewandt. Dieser Style wurde wahrscheinlich unter Stylish für Chrome erstellt, in der seit der ersten Version eine fehlerhafte Überprüfung der RegExp besteht (bekannter Fehler)." }, "styleRegexpProblemTooltip": { - "message": "Anzahl der Bereiche, welche aufgrund nicht korrekt verwendeter RegExp nicht angewendet wurden", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Anzahl der Bereiche, welche aufgrund nicht korrekt verwendeter RegExp nicht angewendet wurden" }, "styleRegexpTestButton": { - "message": "RegExp testen", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "RegExp testen" }, "styleRegexpTestFull": { - "message": "Zutreffende Tabs", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Zutreffende Tabs" }, "styleRegexpTestInvalid": { - "message": "Übersprungene ungültige RegExp", - "description": "RegExp test report: label for the invalid expressions" + "message": "Übersprungene ungültige RegExp" }, "styleRegexpTestNone": { - "message": "Keine zutreffenden Tabs", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Keine zutreffenden Tabs" }, "styleRegexpTestNote": { - "message": "Beachte: Nutze einzelne \\ (Backslashes) zum Escapen im RegExp Feld. Diese werden automatisch im Stylecode zu doppelten \\\\ konvertiert, um der CSS Spezifikation zu entsprechen.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Beachte: Nutze einzelne \\ (Backslashes) zum Escapen im RegExp Feld. Diese werden automatisch im Stylecode zu doppelten \\\\ konvertiert, um der CSS Spezifikation zu entsprechen." }, "styleRegexpTestPartial": { - "message": "Keine genaue Übereinstimmung, wurde daher übersprungen.", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Keine genaue Übereinstimmung, wurde daher übersprungen." }, "styleRegexpTestTitle": { - "message": "Liste der zutreffenden, geöffneten Tabs (URL anklicken, um den Tab zu fokussieren)", - "description": "RegExp test report: title of the report" + "message": "Liste der zutreffenden, geöffneten Tabs (URL anklicken, um den Tab zu fokussieren)" }, "styleSaveLabel": { - "message": "Speichern", - "description": "Label for save button for style editing" + "message": "Speichern" }, "styleToMozillaFormatHelp": { - "message": "Das Mozilla-Format des Codes kann mit Stylish für Firefox verwendet werden und bei userstyles.org eingereicht werden.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Das Mozilla-Format des Codes kann mit Stylish für Firefox verwendet werden und bei userstyles.org eingereicht werden." }, "styleToMozillaFormatTitle": { - "message": "Style im Mozilla Format", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Style im Mozilla Format" }, "styleUpdate": { "message": "Möchtest Du \"$stylename$\" wirklich aktualisieren?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1408,72 +1226,64 @@ } }, "styleUpdateDiscardChanges": { - "message": "Der Style wurde außerhalb des Editors verändert. Style neu laden?", - "description": "Confirmation to update the style in the editor" + "message": "Der Style wurde außerhalb des Editors verändert. Style neu laden?" }, "stylusUnavailableForURL": { - "message": "Stylus funktioniert nicht auf Seiten wie diesen.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus funktioniert nicht auf Seiten wie diesen." }, "stylusUnavailableForURLdetails": { - "message": "Als Sicherheitsvorkehrung verbietet der Browser es Erweiterungen, seine eingebauten Seiten (wie chrome://version, dem neuen Standard-Tab ab Chrome 61, about:addons, usw.), sowie Seiten anderer Erweiterungen zu beeinflussen. Jeder Browser beschränkt auch den Zugriff auf seine eigene Erweiterungsgalerie (wie Chrome Web Store oder addons.mozilla.org).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Als Sicherheitsvorkehrung verbietet der Browser es Erweiterungen, seine eingebauten Seiten (wie chrome://version, dem neuen Standard-Tab ab Chrome 61, about:addons, usw.), sowie Seiten anderer Erweiterungen zu beeinflussen. Jeder Browser beschränkt auch den Zugriff auf seine eigene Erweiterungsgalerie (wie Chrome Web Store oder addons.mozilla.org)." + }, + "syncDropboxDeprecated": { + "message": "Dropbox Import / Export wurde durch einen fortschrittlicheren Mechanismus auf der Optionsseite ersetzt." + }, + "syncError": { + "message": "Synchronisation fehlgeschlagen" + }, + "syncErrorRelogin": { + "message": "Synchronisation fehlgeschlagen.\nVersuche, dich in den Optionen neu einzuloggen:\nKlicke erst \"Trennen\", dann \"Verbinden\"." }, "syncStorageErrorSaving": { - "message": "Der Wert kann nicht gespeichert werden. Versuche, die Textmenge zu reduzieren.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Der Wert kann nicht gespeichert werden. Versuche, die Textmenge zu reduzieren." }, "toggleStyle": { - "message": "Style umschalten", - "description": "Label for the checkbox to enable/disable a style" + "message": "Style umschalten" }, "undo": { - "message": "Rückgängig", - "description": "Button label" + "message": "Rückgängig" }, "undoGlobal": { - "message": "Rückgängig machen in allen Bereichen", - "description": "CSS-beautify global Undo button label" + "message": "Rückgängig machen in allen Bereichen" }, "unreachableAMO": { - "message": "Firefox verbietet den Zugriff auf diese Seite.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox verbietet den Zugriff auf diese Seite." }, "unreachableAMOHint": { - "message": "Um den Zugriff zu erlauben, öffne , rechtsklicke in die Liste, klicke \"Neu\", dann \"Boolean\", füge ein und klicke OK, , OK, lade neu.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "In Firefox 60 und neuer muss auch die addons.mozilla.org domain von in entfernt werden.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Nur in Firefox 59 und neuer ist es möglich, WebExtenstions den Zugriff auf CSP-geschützte Seiten wie dieser zu erlauben.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Um den Zugriff zu erlauben, öffne , rechtsklicke in die Liste, klicke \"Neu\", dann \"Boolean\", füge ein und klicke OK, , OK, lade neu." }, "unreachableContentScript": { - "message": "Konnte nicht mit der Seite kommunizieren. Bitte versuchen Sie, die Seite erneut zu laden.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Konnte nicht mit der Seite kommunizieren. Bitte versuchen Sie, die Seite erneut zu laden." }, "unreachableFileHint": { - "message": "Stylus kann nur auf das file:// Protokoll in der URL zugreifen, wenn dies in den Einstellungen der Erweiterung unter chrome://extensions festgelegt wurde.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus kann nur auf das file:// Protokoll in der URL zugreifen, wenn dies in den Einstellungen der Erweiterung unter chrome://extensions festgelegt wurde." }, - "InaccessibleFileHint": { - "message": "Stylus kann auf einige Dateitypen nicht zugreifen (z.B. pdf oder json)", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "In Firefox 60 oder neuer muss diese Domain von in entfernt werden." + }, + "unreachableMozSiteHintOldFF": { + "message": "Erst ab Firefox 59 können WebExtensions Style-Elemente auf CSP-geschützten Seiten wie dieser hinzufügen." + }, + "unzipStyles": { + "message": "Entpacke Styles..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Keine Updates gefunden.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Keine Updates gefunden." }, "updateAllCheckSucceededSomeEdited": { - "message": "Einige Styles wurden nicht überprüft, um dem Verlust von lokalen Bearbeitungen vorzubeugen. Die Aktualisierungen können entweder durch einzelne manuelle Überprüfung oder durch eine erneute Ausführung der Updatesuche (und anschließendem Update) für alle Styles erzwungen werden. Lokale Bearbeitungen werden dann überschrieben.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Einige Styles wurden nicht überprüft, um dem Verlust von lokalen Bearbeitungen vorzubeugen. Die Aktualisierungen können entweder durch einzelne manuelle Überprüfung oder durch eine erneute Ausführung der Updatesuche (und anschließendem Update) für alle Styles erzwungen werden. Lokale Bearbeitungen werden dann überschrieben." }, "updateCheckFailBadResponseCode": { "message": "Update fehlgeschlagen: Server antwortete mit Code $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1481,119 +1291,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Update fehlgeschlagen: Server nicht erreichbar.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Update fehlgeschlagen: Server nicht erreichbar." }, "updateCheckHistory": { - "message": "Verlauf der Updatesuche", - "description": "" + "message": "Verlauf der Updatesuche" }, "updateCheckManualUpdateForce": { - "message": "Updates installieren (Lokale Bearbeitungen werden überschrieben)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Updates installieren (Lokale Bearbeitungen werden überschrieben)" }, "updateCheckManualUpdateHint": { - "message": "Eine erzwungene Aktualisierung wird die lokalen Änderungen überschreiben.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Eine erzwungene Aktualisierung wird die lokalen Änderungen überschreiben." }, "updateCheckSkippedLocallyEdited": { - "message": "Dieser Style wurde lokal bearbeitet.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Dieser Style wurde lokal bearbeitet." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Dieser Style scheint lokal bearbeitet worden zu sein.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Dieser Style scheint lokal bearbeitet worden zu sein." }, "updateCheckSucceededNoUpdate": { - "message": "Der Style ist auf dem aktuellsten Stand.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Der Style ist auf dem aktuellsten Stand." }, "updateCompleted": { - "message": "Aktualisierung abgeschlossen.", - "description": "Text that displays when an update completed" + "message": "Aktualisierung abgeschlossen." }, "updatesCurrentlyInstalled": { - "message": "Installierte Updates:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Bitte ändere @name oder @namespace, um das Überschreiben eines bereits existierenden Styles zu verhindern.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Der Style wurde aktualisiert oder gelöscht, nachdem der Einstellungsdialog gezeigt wurde. Folgende Variablen wurden nicht gespeichert, um Metadatenkorruption zu verhindern:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Gib @name im Code an", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Ersetze das vorgegebene Template für neue UserCSS styles mit dem vorliegenden Code?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Ein leeres @name ersetzt das vorgegebene Template", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Quelltext hier eingeben...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Die Version des Styles ist älter als die des bereits installierten.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Style erstellen für:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "diese URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxDeprecated": { - "message": "Dropbox Import / Export wurde durch einen fortschrittlicheren Mechanismus auf der Optionsseite ersetzt.", - "description": "" - }, - "overwriteFileExport": { - "message": "Willst du die existierende Datei überschreiben?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Datei erfolgreich gespeichert", - "description": "" - }, - "noFileToImport": { - "message": "Keine Importdatei vorhanden. Um Styles zu importieren, solltest du sie zuerst exportieren.", - "description": "" - }, - "connectingDropbox": { - "message": "Verbinde mit Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Verbindung zur Dropbox ist nur in Apps verfügbar, die direkt vom Webstore installiert wurden", - "description": "" - }, - "gettingStyles": { - "message": "Empfange alle Styles...", - "description": "" - }, - "zipStyles": { - "message": "Packe Styles...", - "description": "" - }, - "unzipStyles": { - "message": "Entpacke Styles...", - "description": "" - }, - "readingStyles": { - "message": "Lese Styles...", - "description": "" + "message": "Installierte Updates:" }, "uploadingFile": { - "message": "Lade Styles hoch...", - "description": "" + "message": "Lade Styles hoch..." + }, + "usercssAvoidOverwriting": { + "message": "Bitte ändere @name oder @namespace, um das Überschreiben eines bereits existierenden Styles zu verhindern." + }, + "usercssConfigIncomplete": { + "message": "Der Style wurde aktualisiert oder gelöscht, nachdem der Einstellungsdialog gezeigt wurde. Folgende Variablen wurden nicht gespeichert, um Metadatenkorruption zu verhindern:" + }, + "usercssEditorNamePlaceholder": { + "message": "Gib @name im Code an" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Ersetze das vorgegebene Template für neue UserCSS styles mit dem vorliegenden Code?" + }, + "usercssReplaceTemplateName": { + "message": "Ein leeres @name ersetzt das vorgegebene Template" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Quelltext hier eingeben..." + }, + "versionInvalidOlder": { + "message": "Die Version des Styles ist älter als die des bereits installierten." + }, + "writeStyleFor": { + "message": "Style erstellen für:" + }, + "writeStyleForURL": { + "message": "diese URL" + }, + "zipStyles": { + "message": "Packe Styles..." } } diff --git a/_locales/el/messages.json b/_locales/el/messages.json index f283a422..f96ed29b 100644 --- a/_locales/el/messages.json +++ b/_locales/el/messages.json @@ -1,19 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Το Stylus δεν έχει πρόσβαση σε κάποια αρχεία (π.χ. τα αρχεία PDF και JSON)" + }, "addStyleLabel": { - "message": "Γράψτε νέο στυλ", - "description": "Label for the button to go to the add style page" + "message": "Γράψτε νέο στυλ" }, "addStyleTitle": { - "message": "Προσθήκη στυλ", - "description": "Title of the page for adding styles" + "message": "Προσθήκη στυλ" + }, + "alphaChannel": { + "message": "Αδιαφάνεια" }, "appliesAdd": { - "message": "Προσθήκη", - "description": "Label for the button to add an 'applies' entry" + "message": "Προσθήκη" }, "appliesDisplay": { "message": "Ισχύει για: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,112 +23,231 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "και πολλά άλλα", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "και πολλά άλλα" }, "appliesDomainOption": { - "message": "URL στον τομέα", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL στον τομέα" }, "appliesHelp": { - "message": "Χρησιμοποιήστε το \"Ισχύει για\" έλεγχοι ώστε να περιοριστουν ποιες διευθύνσεις τον κώδικα σε αυτό το τμήμα να εφαρμόζονται.", - "description": "Help text for 'applies to' section" + "message": "Χρησιμοποιήστε το \"Ισχύει για\" έλεγχοι ώστε να περιοριστουν ποιες διευθύνσεις τον κώδικα σε αυτό το τμήμα να εφαρμόζονται." }, "appliesLabel": { - "message": "Ισχύει για", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Ισχύει για" + }, + "appliesLineWidgetWarning": { + "message": "Δε λειτουργεί με minified CSS." }, "appliesRegexpOption": { - "message": "Διευθύνσεις URL που ταιριάζουν με την κανονική έκφραση", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Διευθύνσεις URL που ταιριάζουν με την κανονική έκφραση" }, "appliesRemove": { - "message": "Αφαίρεση", - "description": "Label for the button to remove an 'applies' entry" + "message": "Αφαίρεση" }, "appliesSpecify": { - "message": "Καθορισμός", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Καθορισμός" }, "appliesToEverything": { - "message": "Τα πάντα", - "description": "Text displayed for styles that apply to all sites" + "message": "Τα πάντα" + }, + "appliesUrlOption": { + "message": "διεύθυνση URL" }, "appliesUrlPrefixOption": { - "message": "Διευθύνσεις URL που αρχίζουν με", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "Διευθύνσεις URL που αρχίζουν με" }, "applyAllUpdates": { - "message": "Εφαρμογή όλων των ενημερώσεων", - "description": "Label for the button to apply all detected updates" + "message": "Εφαρμογή όλων των ενημερώσεων" + }, + "author": { + "message": "Συντάκτης" + }, + "backupButtons": { + "message": "Δημιουργήστε αντίγραφο ασφαλείας" + }, + "backupMessage": { + "message": "Επιλέξτε ένα αρχείο ή σύρετέ το σε αυτήν τη σελίδα" + }, + "bckpInstStyles": { + "message": "Εξαγωγή στυλ" }, "checkAllUpdates": { - "message": "Έλεγχος όλων των στυλ για ενημερώσεις", - "description": "Label for the button to check all styles for updates" + "message": "Έλεγχος όλων των στυλ για ενημερώσεις" + }, + "checkAllUpdatesForce": { + "message": "Ελέγξτε πάλι, δεν επεξεργάστηκα κανένα στυλ!" }, "checkForUpdate": { - "message": "Έλεγχος για ενημερώσεις", - "description": "Label for the button to check a single style for an update" + "message": "Έλεγχος για ενημερώσεις" }, "checkingForUpdate": { - "message": "Έλεγχος...", - "description": "Text to display when checking a style for an update" + "message": "Έλεγχος..." + }, + "clickToUninstall": { + "message": "Πατήστε για απεγκατάσταση" + }, + "cm_autoCloseBrackets": { + "message": "Αυτόματο κλείσιμο παρενθέσεων και εισαγωγικών" + }, + "cm_autocompleteOnTyping": { + "message": "Αυτόματη συμπλήρωση καθώς πληκτρολογείτε" }, "cm_indentWithTabs": { - "message": "Χρήση καρτελών με έξυπνη εσοχή", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Χρήση καρτελών με έξυπνη εσοχή" + }, + "cm_keyMap": { + "message": "Συντομεύσεις πληκτρολογίου" }, "cm_lineWrapping": { - "message": "Αναδίπλωση λέξεων", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Αναδίπλωση λέξεων" + }, + "cm_matchHighlight": { + "message": "Υπογράμμιση" + }, + "cm_matchHighlightSelection": { + "message": "Μόνο επιλογή" + }, + "cm_resizeGripHint": { + "message": "Διπλό κλικ για μεγιστοποίηση/επαναφορά ύψους" }, "cm_smartIndent": { - "message": "Χρήση έξυπνης εσοχής", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Χρήση έξυπνης εσοχής" }, "cm_tabSize": { - "message": "Μέγεθος καρτέλας", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Μέγεθος καρτέλας" + }, + "cm_theme": { + "message": "Θέμα" + }, + "configOnChange": { + "message": "στην αλλαγή" + }, + "configOnChangeTooltip": { + "message": "Αυτόματη αποθήκευση και εφαρμογή αλλαγών" + }, + "configureStyle": { + "message": "Ρυθμίσεις" + }, + "configureStyleOnHomepage": { + "message": "Ρυθμίσεις στην ιστοσελίδα" + }, + "confirmCancel": { + "message": "Άκυρο" + }, + "confirmClose": { + "message": "Κλείσιμο" + }, + "confirmDefault": { + "message": "Χρήση προεπιλογής" + }, + "confirmDelete": { + "message": "Διαγραφή" + }, + "confirmDiscardChanges": { + "message": "Απόρριψη αλλαγών;" + }, + "confirmNo": { + "message": "Όχι" + }, + "confirmOK": { + "message": "ΟΚ" + }, + "confirmSave": { + "message": "Αποθήκευση" + }, + "confirmYes": { + "message": "Ναι" + }, + "connectingDropbox": { + "message": "Σύνδεση με το Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Η σύνδεση με το Dropbox είναι διαθέσιμη μόνο σε εφαρμογές εγκατεστημένες απευθείας από το κατάστημα ιστού webstore" + }, + "copied": { + "message": "Αντιγράφηκε στο πρόχειρο" + }, + "copy": { + "message": "Αντιγραφή στο πρόχειρο" + }, + "dateAbbrDay": { + "message": "$value$μ", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$ω", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$λ", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$χ", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateInstalled": { + "message": "Ημερομηνία εγκατάστασης" + }, + "dateUpdated": { + "message": "Ημερομηνία ενημέρωσης" }, "dbError": { - "message": "Παρουσιάστηκε σφάλμα χρησιμοποιώντας την κομψή βάση δεδομένων. Θα θέλατε να επισκεφθείτε μια ιστοσελίδα με πιθανές λύσεις;", - "description": "Prompt when a DB error is encountered" + "message": "Παρουσιάστηκε σφάλμα χρησιμοποιώντας την κομψή βάση δεδομένων. Θα θέλατε να επισκεφθείτε μια ιστοσελίδα με πιθανές λύσεις;" + }, + "defaultTheme": { + "message": "προεπιλογή" }, "deleteStyleConfirm": { - "message": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το στυλ;", - "description": "Confirmation before deleting a style" + "message": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το στυλ;" }, "deleteStyleLabel": { - "message": "Διαγραφή", - "description": "Label for the button to delete a style" + "message": "Διαγραφή" }, "description": { - "message": "Επαναπροσδιορίση του διαδίκτυου με το Stylus, έναν διαχειριστή στυλ. Το Stylus σας επιτρέπει να εγκαταστήσετε εύκολα themes και skins για πολλές δημοφιλείς ιστοσελίδες.", - "description": "Extension description" + "message": "Επαναπροσδιορίση του διαδίκτυου με το Stylus, έναν διαχειριστή στυλ. Το Stylus σας επιτρέπει να εγκαταστήσετε εύκολα themes και skins για πολλές δημοφιλείς ιστοσελίδες." }, "disableAllStyles": { - "message": "Απενεργοποιηση ολων των στυλ", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Απενεργοποιηση ολων των στυλ" }, "disableStyleLabel": { - "message": "Απενεργοποίηση", - "description": "Label for the button to disable a style" + "message": "Απενεργοποίηση" + }, + "dragDropMessage": { + "message": "Αποθέστε το αντίγραφο ασφαλείας σας οπουδήποτε σε αυτήν τη σελίδα για εισαγωγή." + }, + "dragDropUsercssTabstrip": { + "message": "Για να εγκαταστήσετε το αρχείο, αποθέστε το στη λωρίδα καρτελών (την περιοχή όπου εμφανίζονται οι τίτλοι καρτελών)." + }, + "editDeleteText": { + "message": "Διαγραφή" }, "editGotoLine": { - "message": "Μετάβαση στη γραμμή (ή line:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Μετάβαση στη γραμμή (ή line:col)" }, "editStyleHeading": { - "message": "Επεξεργασία Στυλ", - "description": "Title of the page for editing styles" + "message": "Επεξεργασία Στυλ" }, "editStyleLabel": { - "message": "Επεξεργασία", - "description": "Label for the button to go to the edit style page" + "message": "Επεξεργασία" }, "editStyleTitle": { "message": "Επεξεργασία του στυλ $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -134,92 +255,393 @@ } }, "enableStyleLabel": { - "message": "Ενεργοποίηση", - "description": "Label for the button to enable a style" + "message": "Ενεργοποίηση" + }, + "excludeStyleByDomainLabel": { + "message": "Εξαίρεση του τρέχοντος τομέα" + }, + "excludeStyleByUrlLabel": { + "message": "Εξαίρεση του τρέχοντος URL" + }, + "exportLabel": { + "message": "Εξαγωγή" + }, + "exportSavedSuccess": { + "message": "Το αρχείο αποθηκεύτηκε επιτυχώς." + }, + "externalFeedback": { + "message": "Σχόλια" + }, + "externalHomepage": { + "message": "Αρχική σελίδα" + }, + "externalLink": { + "message": "Εξωτερική σύνδεση" + }, + "externalSupport": { + "message": "Υποστήριξη" + }, + "externalUsercssDocument": { + "message": "Τεκμηρίωση για Usercss" + }, + "filteredStyles": { + "message": "Βλέπετε $numShown$ από 2$numTotal$ συνολικά", + "placeholders": { + "numShown": { + "content": "$1" + }, + "numTotal": { + "content": "$2" + } + } + }, + "filteredStylesAllHidden": { + "message": "Τα φίλτρα που εφαρμόζονται αυτήν τη στιγμή δεν ταιριάζουν με κανένα στυλ" + }, + "findStyles": { + "message": "Εύρεση στυλ" }, "findStylesForSite": { - "message": "Αναζήτηση περισσότερων στυλ για αυτή την ιστοσελίδα", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Αναζήτηση περισσότερων στυλ για αυτή την ιστοσελίδα" + }, + "genericAdd": { + "message": "Προσθήκη" + }, + "genericClone": { + "message": "Δημιουργία αντιγράφου" + }, + "genericDisabledLabel": { + "message": "Απενεργοποιημένο" + }, + "genericEnabledLabel": { + "message": "Ενεργοποιημένο" + }, + "genericError": { + "message": "Σφάλμα" + }, + "genericHistoryLabel": { + "message": "Ιστορικό" + }, + "genericNext": { + "message": "Επόμενο" + }, + "genericPrevious": { + "message": "Προηγούμενο" + }, + "genericResetLabel": { + "message": "Επαναφορά" + }, + "genericSavedMessage": { + "message": "Αποθηκεύτηκε" + }, + "genericTitle": { + "message": "Τίτλος" + }, + "genericUnknown": { + "message": "Άγνωστο" + }, + "gettingStyles": { + "message": "Λήψη όλων των στυλ..." }, "helpAlt": { - "message": "Βοήθεια", - "description": "Alternate text for help buttons" + "message": "Βοήθεια" + }, + "helpKeyMapCommand": { + "message": "Πληκτρολογήστε μια εντολή" + }, + "helpKeyMapHotkey": { + "message": "Πληκτρολογήστε ένα hotkey" + }, + "importLabel": { + "message": "Εισαγωγή" + }, + "importReplaceLabel": { + "message": "Αντικατάσταση στυλ" + }, + "importReportLegendAdded": { + "message": "προστέθηκαν" + }, + "importReportLegendUpdatedCode": { + "message": "ενημερωμένος κώδικας" + }, + "importReportTitle": { + "message": "Η εισαγωγή στυλ τελείωσε" + }, + "importReportUnchanged": { + "message": "Τίποτα δεν άλλαξε" + }, + "importReportUndoneTitle": { + "message": "Η εισαγωγή έχει αναιρεθεί" + }, + "installButton": { + "message": "Εγκατάσταση στυλ" + }, + "installButtonInstalled": { + "message": "Το στυλ έχει εγκατασταθεί." + }, + "installButtonReinstall": { + "message": "Επανεγκατάσταση στυλ" + }, + "installButtonUpdate": { + "message": "Ενημέρωση στυλ" }, "installUpdate": { - "message": "Εγκατάσταση ενημέρωσης", - "description": "Label for the button to install an update for a single style" + "message": "Εγκατάσταση ενημέρωσης" + }, + "installUpdateFromLabel": { + "message": "Έλεγχος για ενημερώσεις" + }, + "license": { + "message": "Άδεια χρήσης" + }, + "linkGetHelp": { + "message": "Βοήθεια" + }, + "linkGetStyles": { + "message": "Λήψη στυλ" + }, + "linkTranslate": { + "message": "Μετάφραση" + }, + "linterConfigTooltip": { + "message": "Πατήστε εδώ για να ρυθμίσετε το linter" + }, + "linterIssues": { + "message": "Ζητήματα" + }, + "linterJSONError": { + "message": "Μη έγκυρη μορφή JSON" + }, + "linterResetMessage": { + "message": "Για αναίρεση μιας κατά λάθος επαναφοράς, πατήστε Ctrl-Z (ή Cmd-Z) στο πλαίσιο κειμένου" + }, + "manageFaviconsHelp": { + "message": "Το Stylus χρησιμοποιεί μία εξωτερική υπηρεσία https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Φίλτρα", - "description": "Label for filters container" + "message": "Φίλτρα" }, "manageHeading": { - "message": "Εγκατεστημένα Στυλ", - "description": "Heading for the manage page" + "message": "Εγκατεστημένα Στυλ" + }, + "manageNewUI": { + "message": "Νέα διαχείριση διάταξης UI" + }, + "manageOnlyDisabled": { + "message": "Μόνο απενεργοποιημένα στυλ" }, "manageOnlyEnabled": { - "message": "Μόνο ενεργοποιημένα στυλ", - "description": "Checkbox to show only enabled styles" + "message": "Μόνο ενεργοποιημένα στυλ" + }, + "manageOnlyExternal": { + "message": "Μόνο στυλ από άλλες ιστοσελίδες" + }, + "manageOnlyLocal": { + "message": "Μόνο στυλ δημιουργημένα τοπικά" }, "manageTitle": { - "message": "Κομψή", - "description": "Title for the manage page" + "message": "Κομψή" }, "menuShowBadge": { - "message": "Εμφάνιση ενεργους καταμέτρησης στυλ", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Εμφάνιση ενεργους καταμέτρησης στυλ" + }, + "noFileToImport": { + "message": "Για να εισάγετε τα στυλ σας, πρέπει πρώτα να τα εξάγετε." }, "noStylesForSite": { - "message": "Δεν υπάρχουν εγκατεστημένα στυλ για αυτή την ιστοσελίδα.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Δεν υπάρχουν εγκατεστημένα στυλ για αυτή την ιστοσελίδα." }, "openManage": { - "message": "Διαχείριση εγκατεστημένων στυλ", - "description": "Link to open the manage page." + "message": "Διαχείριση εγκατεστημένων στυλ" + }, + "openOptions": { + "message": "Επιλογές" + }, + "openStylesManager": { + "message": "Άνοιγμα διαχείρισης στυλ" + }, + "optionsActions": { + "message": "Ενέργειες" + }, + "optionsAdvanced": { + "message": "Για προχωρημένους" + }, + "optionsAdvancedContextDelete": { + "message": "Προσθήκη του 'Delete' στο μενού περιβάλλοντος του προγράμματος επεξεργασίας" + }, + "optionsBadgeDisabled": { + "message": "Χρώμα φόντου όταν είναι απενεργοποιημένο" + }, + "optionsBadgeNormal": { + "message": "Χρώμα υποβάθρου" + }, + "optionsCheck": { + "message": "Ενημέρωση στυλ" + }, + "optionsCheckUpdate": { + "message": "Έλεγχος και εγκατάσταση διαθέσιμων ενημερώσεων" + }, + "optionsCustomizeBadge": { + "message": "Σήμα στο εικονίδιο της γραμμής εργαλείων" + }, + "optionsCustomizePopup": { + "message": "Αναδυόμενο παράθυρο" + }, + "optionsCustomizeUpdate": { + "message": "Ενημερώσεις" }, "optionsHeading": { - "message": "Επιλογές", - "description": "Heading for options section on manage page." + "message": "Επιλογές" + }, + "optionsIconDark": { + "message": "Σκούρο θέμα φυλλομετρητή" + }, + "optionsOpen": { + "message": "Άνοιγμα" + }, + "optionsOpenManager": { + "message": "Διαχείριση στυλ" + }, + "optionsPopupWidth": { + "message": "Πλάτος αναδυόμενου παραθύρου (σε pixels)" + }, + "optionsReset": { + "message": "Επαναφορά ρυθμίσεων στις προεπιλεγμένες" + }, + "optionsResetButton": { + "message": "Επαναφορά επιλογών" + }, + "optionsSubheading": { + "message": "Περισσότερες επιλογές" + }, + "optionsSyncConnect": { + "message": "Σύνδεση" + }, + "optionsSyncDisconnect": { + "message": "Αποσύνδεση" + }, + "optionsSyncStatusConnected": { + "message": "Συνδεδεμένο" + }, + "optionsSyncStatusConnecting": { + "message": "Σύνδεση..." + }, + "optionsSyncStatusDisconnected": { + "message": "Αποσυνδέθηκε" + }, + "optionsSyncStatusDisconnecting": { + "message": "Αποσύνδεση..." + }, + "optionsSyncStatusSyncing": { + "message": "Συγχρονισμός ..." + }, + "optionsSyncSyncNow": { + "message": "Συγχρονισμός τώρα" + }, + "optionsUpdateInterval": { + "message": "Διάστημα αυτόματης ενημέρωσης των στυλ σε ώρες (0 για απενεργοποίηση)" + }, + "paginationNext": { + "message": "Επόμενη σελίδα" + }, + "paginationPrevious": { + "message": "Προηγούμενη σελίδα" + }, + "popupBordersTooltip": { + "message": "Χρήσιμο για σκούρα θέματα στο καινούριο Chrome, καθώς δε βάφει πλέον τα ακριανά περιθώρια." + }, + "popupOpenEditInPopup": { + "message": "Χρήση ενός απλού παραθύρου (χωρίς omnibox)" + }, + "popupOpenEditInWindow": { + "message": "Άνοιγμα επεξαργαστή σε νέο παράθυρο" }, "popupStylesFirst": { - "message": "Στυλ λίστας πριν των εντολών στο μενού του κουμπιού γραμμής εργαλείων", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Στυλ λίστας πριν των εντολών στο μενού του κουμπιού γραμμής εργαλείων" }, "prefShowBadge": { - "message": "Εμφάνιση αριθμού των στυλ που δραστηριοποιούνται για την τρέχουσα τοποθεσία στην μπάρα εργαλείων", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Εμφάνιση αριθμού των στυλ που δραστηριοποιούνται για την τρέχουσα τοποθεσία στην μπάρα εργαλείων" + }, + "readingStyles": { + "message": "Ανάγνωση στυλ..." + }, + "replace": { + "message": "Αντικατάσταση" + }, + "replaceAll": { + "message": "Αντικατάσταση όλων" + }, + "replaceWith": { + "message": "Αντικατάσταση με" + }, + "retrieveBckp": { + "message": "Εισαγωγή στυλ" + }, + "retrieveDropboxSync": { + "message": "Εισαγωγή από το Dropbox" + }, + "search": { + "message": "Αναζήτηση" + }, + "searchGlobalStyles": { + "message": "Επίσης, αναζητήστε καθολικά στυλ" + }, + "searchRegexp": { + "message": "Χρησιμοποιήστε τη σύνταξη /re/ για αναζήτηση με regexp." + }, + "searchResultInstallCount": { + "message": "Συνολικός αριθμός εγκαταστάσεων" + }, + "searchResultUpdated": { + "message": "Ενημερωμένο" + }, + "searchResultWeeklyCount": { + "message": "Εβδομαδιαίος αριθμός εγκαταστάσεων" + }, + "searchStylesName": { + "message": "Όνομα" }, "sectionAdd": { - "message": "Προσθήκη ένος άλλου τμήματος", - "description": "Label for the button to add a section" + "message": "Προσθήκη ένος άλλου τμήματος" }, "sectionCode": { - "message": "Κώδικας", - "description": "Label for the code for a section" + "message": "Κώδικας" }, "sectionRemove": { - "message": "Αφαίρεση ενότητας", - "description": "Label for the button to remove a section" + "message": "Αφαίρεση ενότητας" + }, + "shortcuts": { + "message": "Συντομεύσεις" + }, + "sortDateNewestFirst": { + "message": "πιο πρόσφατα πρώτα" + }, + "sortDateOldestFirst": { + "message": "πιο παλιά πρώτα" }, "styleBadRegexp": { - "message": "Το Regexp δεν είναι έγκυρο.", - "description": "Validation message for a bad regexp in a style" + "message": "Το Regexp δεν είναι έγκυρο." + }, + "styleBeautify": { + "message": "Ωραιοποίηση" + }, + "styleBeautifyIndentConditional": { + "message": "Διόρθωση εσοχής για @media και @supports" + }, + "styleBeautifyPreserveNewlines": { + "message": "Διατήρηση νέων γραμμών (newlines)" }, "styleCancelEditLabel": { - "message": "Πίσω στη διαχείριση", - "description": "Label for cancel button for style editing" + "message": "Πίσω στη διαχείριση" }, "styleChangesNotSaved": { - "message": "Έχετε κάνει αλλαγές σε αυτό το ύφος χωρίς αποθήκευση.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Έχετε κάνει αλλαγές σε αυτό το ύφος χωρίς αποθήκευση." }, "styleEnabledLabel": { - "message": "Ενεργοποιημένη", - "description": "Label for the enabled state of styles" + "message": "Ενεργοποιημένη" }, "styleInstall": { "message": "Εγκατάσταση του '$stylename$' στο Stylus;", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -227,20 +649,19 @@ } }, "styleMissingName": { - "message": "Εισάγετε ένα όνομα", - "description": "Error displayed when user saves without providing a name" + "message": "Εισάγετε ένα όνομα" + }, + "styleRegexpTestNone": { + "message": "Δε βρέθηκαν καρτέλες που αντιστοιχούν." }, "styleSaveLabel": { - "message": "Αποθήκευση", - "description": "Label for save button for style editing" + "message": "Αποθήκευση" }, "styleToMozillaFormatHelp": { - "message": "Η μορφή του Mozilla κώδικα μπορεί να χρησιμοποιηθεί με το Stylish για το Firefox και μπορεί να υποβληθεί στο userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Η μορφή του Mozilla κώδικα μπορεί να χρησιμοποιηθεί με το Stylish για το Firefox και μπορεί να υποβληθεί στο userstyles.org." }, "styleUpdate": { "message": "Είστε σίγουροι ότι θέλετε να ενημερώσετε το '$stylename$';", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -248,16 +669,43 @@ } }, "stylusUnavailableForURL": { - "message": "To Stylus δεν λειτουργεί σε σελίδες όπως αυτή.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "To Stylus δεν λειτουργεί σε σελίδες όπως αυτή." + }, + "stylusUnavailableForURLdetails": { + "message": "Ως μέτρο ασφαλείας, ο φυλλομετρητής απαγορεύει στα πρόσθετα να επέμβουν στις built-in σελίδες του (όπως π.χ. chrome://version, η σελίδα νέας καρτέλας από το Chrome 61 και μετά, about:addons, κλπ.), καθώς και τις σελίδες άλλωων προσθέτων. Επιπλέον, κάθε φυλλομετρητής περιορίζει την πρόσβαση στο κατάστημα προσθέτων (όπως το Chrome Web Store ή το AMO)." + }, + "syncDropboxStyles": { + "message": "Εξαγωγή από το Dropbox" + }, + "syncError": { + "message": "Ο συγχρονισμός απέτυχε" + }, + "syncErrorRelogin": { + "message": "Ο συγχρονισμός απέτυχε.\nΠροσπαθήστε να συνδεθείτε ξανά στις επιλογές Stylus:\nκάντε κλικ στο 'αποσύνδεση' πρώτα και μετά στο 'σύνδεση'." + }, + "toggleStyle": { + "message": "Αλλαγή στυλ" + }, + "undo": { + "message": "Αναίρεση" + }, + "undoGlobal": { + "message": "Αναίρεση όλων των ενεργειών" + }, + "unreachableFileHint": { + "message": "Το Stylus έχει πρόσβαση στις file:// διευθύνσεις URL μόνο αν έχετε επιλέξει το αντίστοιχο πλαίσιο ελέγχου για το πρόσθετο Stylus στη σελίδα chrome://extensions." + }, + "unzipStyles": { + "message": "Αποσυμπίεση στυλ..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Όλα τα στυλ είναι ενημερωμένα.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Όλα τα στυλ είναι ενημερωμένα." + }, + "updateAllCheckSucceededSomeEdited": { + "message": "Δεν έχει γίνει έλεγχος ενημερώσεων για κάποια στυλ, για να αποφευχθεί η πιθανότητα απώλειας τοπικών επεξεργασιών. Οι ενημερώσεις μπορούν να εξαναγκαστούν ελέγχοντας το κάθε στυλ ξεχωριστά ή ελέγχοντας πάλι όλα τα στυλ (τοπικές επεξεργασίες θα αντικατασταθούν)" }, "updateCheckFailBadResponseCode": { "message": "Αποτυχία ενημέρωσης: ο διακομιστής ανταποκρίθηκε με κωδικό $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -265,23 +713,39 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Αποτυχία ενημέρωσης: απρόσιτος διακομιστής.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Αποτυχία ενημέρωσης: απρόσιτος διακομιστής." + }, + "updateCheckSkippedLocallyEdited": { + "message": "Το στυλ επεξεργάστηκε τοπικά στον υπολογιστή σας." + }, + "updateCheckSkippedMaybeLocallyEdited": { + "message": "Το στυλ αυτό μπορεί να έχει επεξεργαστεί τοπικά στον υπολογιστή σας." }, "updateCheckSucceededNoUpdate": { - "message": "Το στυλ είναι ενημερωμένο.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Το στυλ είναι ενημερωμένο." }, "updateCompleted": { - "message": "Η ενημέρωση ολοκληρώθηκε.", - "description": "Text that displays when an update completed" + "message": "Η ενημέρωση ολοκληρώθηκε." + }, + "updatesCurrentlyInstalled": { + "message": "Ενημερώσεις που εγκαταστάθηκαν" + }, + "uploadingFile": { + "message": "Μεταφόρτωση αρχείου..." + }, + "usercssEditorNamePlaceholder": { + "message": "Καθορίστε το @name στον κώδικα" + }, + "versionInvalidOlder": { + "message": "Η έκδοση αυτή είναι παλαιότερη από αυτήν που είναι ήδη εγκατεστημένη." }, "writeStyleFor": { - "message": "Γράψτε νέο στυλ για:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Γράψτε νέο στυλ για:" }, "writeStyleForURL": { - "message": "αυτή την διεύθυνση URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "αυτή την διεύθυνση URL" + }, + "zipStyles": { + "message": "Συμπίεση στυλ..." } -} \ No newline at end of file +} diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 9d8ee6cd..66a885f8 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1,4 +1,8 @@ { + "InaccessibleFileHint": { + "message": "Stylus can not access some file types (e.g. pdf & json files).", + "description": "Note in the toolbar popup for some file types that cannot be accessed" + }, "addStyleLabel": { "message": "Write new style", "description": "Label for the button to go to the add style page" @@ -182,6 +186,9 @@ "message": "Theme", "description": "Label for the style editor's CSS theme." }, + "colorpickerPaletteHint": { + "message": "Right-click a swatch to cycle through its source lines" + }, "colorpickerSwitchFormatTooltip": { "message": "Switch formats: HEX -> RGB -> HSL.\nShift-click to reverse the direction.\nAlso via PgUp (PageUp), PgDn (PageDown) keys.", "description": "Tooltip for the switch button in the color picker popup in the style editor." @@ -242,6 +249,12 @@ "message": "Yes", "description": "'Yes' button in a confirm dialog" }, + "connectingDropbox": { + "message": "Connecting Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Connecting to Dropbox is only available in apps installed directly from the webstore" + }, "copied": { "message": "Copied to clipboard", "description": "Message shown when content has been copied to the clipboard" @@ -257,6 +270,42 @@ "message": "Stop using customized name, switch to the style's own name", "description": "Tooltip of 'x' button shown in editor when changing the name input of a) styles updated from a URL i.e. not locally created, b) UserCSS styles" }, + "dateAbbrDay": { + "message": "$value$d", + "placeholders": { + "value": { + "content": "$1" + } + }, + "description": "Day suffix in a short relative date, for example: 8d" + }, + "dateAbbrHour": { + "message": "$value$h", + "placeholders": { + "value": { + "content": "$1" + } + }, + "description": "Hour suffix in a short relative date, for example: 8h" + }, + "dateAbbrMonth": { + "message": "$value$m", + "placeholders": { + "value": { + "content": "$1" + } + }, + "description": "Month suffix in a short relative date, for example: 8m" + }, + "dateAbbrYear": { + "message": "$value$y", + "placeholders": { + "value": { + "content": "$1" + } + }, + "description": "Year suffix in a short relative date, for example: 8y" + }, "dateInstalled": { "message": "Date installed", "description": "Option text for the user to sort the style by install date" @@ -340,6 +389,9 @@ "message": "Export", "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" }, + "exportSavedSuccess": { + "message": "File saved with success" + }, "externalFeedback": { "message": "Feedback", "description": "Label for the external link to send feedback for the style" @@ -400,6 +452,9 @@ "message": "Clone", "description": "Used in various places for an action that clones something" }, + "genericDescription": { + "message": "Description" + }, "genericDisabledLabel": { "message": "Disabled", "description": "Used in various lists/options to indicate that something is disabled" @@ -440,6 +495,9 @@ "message": "Unknown", "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" }, + "gettingStyles": { + "message": "Getting all styles..." + }, "helpAlt": { "message": "Help", "description": "Alternate text for help buttons" @@ -468,6 +526,12 @@ "message": "Import", "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" }, + "importPreprocessor": { + "message": "Style with a @preprocessor won't work in the classic mode. You can switch the editor to Usercss mode: 1) open the style manager, 2) enable \"as Usercss\" checkbox, 3) click \"Write new style\"\n\nImport now anyway?" + }, + "importPreprocessorTitle": { + "message": "Potential problem due to @preprocessor" + }, "importReplaceLabel": { "message": "Overwrite style", "description": "Label for the button to import and overwrite current style" @@ -521,7 +585,7 @@ "description": "Label for install button" }, "installButtonInstalled": { - "message": "Style installed", + "message": "Style is installed", "description": "Text displayed when the style is successfully installed" }, "installButtonReinstall": { @@ -573,6 +637,18 @@ "message": "Get styles", "description": "Help link text on the manage page e.g. https://userstyles.org" }, + "linkGetStylesInfo": { + "message": "This archive site was created by a userstyle community member to back up the slow and unresponsive userstyles.org. The archive updates its contents approximately once a day.", + "description": "Info shown when clicking the (i) icon of the uso-archive link in the manager" + }, + "linkGetShareStyles": { + "message": "Get and share styles", + "description": "Link text for https://userstyles.world/ on the manage page" + }, + "linkGetShareStylesInfo": { + "message": "The new community-driven userstyles.world site is created by userstyle authors in order to replace userstyles.org, which has been so slow and unresponsive for the past year that many authors stopped updating their styles.", + "description": "Info shown when clicking the (i) icon of the userstyles.world link in the manager" + }, "linkStylusWiki": { "message": "Wiki", "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" @@ -730,105 +806,105 @@ }, "meta_invalidColor": { "message": "Invalid @var color: $color$ is not a color", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } - } + }, + "description": "Error displayed when the value of @var color is invalid" + }, + "meta_invalidNumber": { + "message": "Expect a number", + "description": "Error displayed when the value is expected to be a number" }, "meta_invalidRange": { "message": "Invalid @var $type$: value must be a number or an array", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Invalid @var $type$: multiple units are defined", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Invalid @var $type$: the array contains too many items", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Invalid @var $type$: items in the array must be number, string, or null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" }, "meta_invalidRangeDefault": { "message": "Invalid @var $type$: default value is null", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" } - } - }, - "meta_invalidRangeMin": { - "message": "Invalid @var $type$: default value is lower than the minimum", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" }, "meta_invalidRangeMax": { "message": "Invalid @var $type$: default value is larger than the maximum", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" } - } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" + }, + "meta_invalidRangeMin": { + "message": "Invalid @var $type$: default value is lower than the minimum", + "placeholders": { + "type": { + "content": "$1" + } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" + }, + "meta_invalidRangeMultipleUnits": { + "message": "Invalid @var $type$: multiple units are defined", + "placeholders": { + "type": { + "content": "$1" + } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" }, "meta_invalidRangeStep": { "message": "Invalid @var $type$: default value is not a mutiple of the step", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" } - } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" + }, + "meta_invalidRangeTooManyValues": { + "message": "Invalid @var $type$: the array contains too many items", + "placeholders": { + "type": { + "content": "$1" + } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" }, "meta_invalidRangeUnits": { "message": "Invalid @var $type$: '$units$' is not a valid unit", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "units": { + "content": "$2" + }, + "type": { + "content": "$1" + } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" + }, + "meta_invalidRangeValue": { + "message": "Invalid @var $type$: items in the array must be number, string, or null", "placeholders": { "type": { "content": "$1" - }, - "units": { - "content": "$2" } - } + }, + "description": "Error displayed when the value of @var range or @var number is invalid" }, "meta_invalidSelect": { "message": "Invalid @var select: the default value must be an array or an object", "description": "Error displayed when the value of @var select is invalid" }, - "meta_invalidSelectValue": { - "message": "Invalid @var select: values inside the array/object must be a string", - "description": "Error displayed when the value of @var select is invalid" - }, "meta_invalidSelectEmptyOptions": { "message": "Invalid @var select: options list is empty", "description": "Error displayed when the value of @var select is invalid" @@ -845,35 +921,30 @@ "message": "Invalid @var select: option name is duplicated", "description": "Error displayed when the value of @var select is invalid" }, + "meta_invalidSelectValue": { + "message": "Invalid @var select: values inside the array/object must be a string", + "description": "Error displayed when the value of @var select is invalid" + }, "meta_invalidSelectValueMismatch": { "message": "Invalid @var select: value doesn't exist in the option list", "description": "Error displayed when the value of @var select is invalid" }, + "meta_invalidString": { + "message": "Expect a quoted string", + "description": "Error displayed when the value is expected to be a quoted string" + }, "meta_invalidURLProtocol": { "message": "Invalid URL protocol. Only http and https are allowed: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" } - } + }, + "description": "Error displayed when the protocol of the URL is invalid" }, "meta_invalidVersion": { - "message": "Invalid version number. The value doesn't match SemVer pattern: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Expect a number", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Expect a quoted string", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Invalid version number", + "description": "Error displayed when @version is invalid" }, "meta_invalidWord": { "message": "Expect a word", @@ -881,12 +952,12 @@ }, "meta_missingChar": { "message": "Expect characters: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" } - } + }, + "description": "Error displayed when the value is expected to be some characters" }, "meta_missingEOT": { "message": "Expect EOT data", @@ -894,56 +965,75 @@ }, "meta_missingMandatory": { "message": "Missing mandatory metadata: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" } - } + }, + "description": "Error displayed when mandatory keys are missing" }, "meta_unknownJSONLiteral": { "message": "Invalid JSON: $literal$ is not a valid JSON literal", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" } - } + }, + "description": "Error displayed when JSON value is invalid" }, "meta_unknownMeta": { "message": "Unknown metadata: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } - } + }, + "description": "Error displayed when unknown metadata is parsed" }, - "meta_unknownVarType": { - "message": "Unknown @$varkey$ type: $vartype$", - "description": "Error displayed when unknown variable type is parsed", + "meta_unknownMetaTypo": { + "message": "Maybe @$keyOk$? Unknown metadata: @$keyErr$", "placeholders": { - "varkey": { + "keyErr": { "content": "$1" }, - "vartype": { + "keyOk": { "content": "$2" } - } + }, + "description": "Try translating it so that at least the first placeholder is visible in our narrow panel. This is the error displayed when an unknown metadata key was sufficiently similar to a known one to consider it a typo." }, "meta_unknownPreprocessor": { "message": "Unknown @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", "placeholders": { "preprocessor": { "content": "$1" } - } + }, + "description": "Error displayed when unknown @preprocessor is parsed" + }, + "meta_unknownVarType": { + "message": "Unknown @$varkey$ type: $vartype$", + "placeholders": { + "vartype": { + "content": "$2" + }, + "varkey": { + "content": "$1" + } + }, + "description": "Error displayed when unknown variable type is parsed" + }, + "noFileToImport": { + "message": "To import your styles, you should export it first." }, "noStylesForSite": { "message": "No styles installed for this site.", "description": "Text displayed when no styles are installed for the current site" }, + "numberedLine": { + "message": "Line:", + "description": "Will be followed by one or more line numbers in the editor." + }, "openManage": { "message": "Manage", "description": "Link to open the manage page." @@ -987,6 +1077,12 @@ "optionsAdvancedAutoSwitchSchemeByTime": { "message": "By night time:" }, + "optionsAdvancedPatchCsp": { + "message": "Patch CSP to allow style assets" + }, + "optionsAdvancedPatchCspNote": { + "message": "Enable this if styles contain images or fonts which fail to load on sites with a strict CSP (Content-Security-Policy).\n\nEnabling this setting will relax CSP restrictions, allowing essential style content to load. This option is only intended for advanced users who understand the potential security implications, and accept responsibility for monitoring the content which they're allowing. Read about CSS-based attacks for more information.\n\nAlso be aware, this particular setting is not guaranteed to take effect if another installed extension modifies the network response first." + }, "optionsAdvancedStyleViaXhr": { "message": "Instant inject mode" }, @@ -1014,12 +1110,12 @@ "optionsCustomizePopup": { "message": "Popup" }, - "optionsCustomizeUpdate": { - "message": "Updates" - }, "optionsCustomizeSync": { "message": "Sync to cloud" }, + "optionsCustomizeUpdate": { + "message": "Updates" + }, "optionsHeading": { "message": "Options", "description": "Heading for options section on manage page." @@ -1052,27 +1148,30 @@ "message": "More Options", "description": "Subheading for options section on manage page." }, - "optionsUpdateImportNote": { - "message": "When importing style backups from old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated." - }, - "optionsUpdateInterval": { - "message": "Userstyle autoupdate interval in hours (specify 0 to disable)" - }, - "optionsSyncNone": { - "message": "None" - }, "optionsSyncConnect": { "message": "Connect" }, "optionsSyncDisconnect": { "message": "Disconnect" }, - "optionsSyncSyncNow": { - "message": "Sync now" - }, "optionsSyncLogin": { "message": "Login" }, + "optionsSyncNone": { + "message": "None" + }, + "optionsSyncStatusConnected": { + "message": "Connected" + }, + "optionsSyncStatusConnecting": { + "message": "Connecting..." + }, + "optionsSyncStatusDisconnected": { + "message": "Disconnected" + }, + "optionsSyncStatusDisconnecting": { + "message": "Disconnecting..." + }, "optionsSyncStatusPull": { "message": "Pulling style $loaded$ of $total$", "placeholders": { @@ -1095,20 +1194,23 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "Session expired, please login again." + }, "optionsSyncStatusSyncing": { "message": "Syncing..." }, - "optionsSyncStatusConnecting": { - "message": "Connecting..." + "optionsSyncSyncNow": { + "message": "Sync now" }, - "optionsSyncStatusConnected": { - "message": "Connected" + "optionsUpdateImportNote": { + "message": "When importing style backups from old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated." }, - "optionsSyncStatusDisconnecting": { - "message": "Disconnecting..." + "optionsUpdateInterval": { + "message": "Userstyle autoupdate interval in hours (specify 0 to disable)" }, - "optionsSyncStatusDisconnected": { - "message": "Disconnected" + "overwriteFileExport": { + "message": "Do you want to overwrite an existing file?" }, "paginationCurrent": { "message": "Current page", @@ -1187,6 +1289,31 @@ "message": "Temporarily applies the changes without saving.\nSave the style to make the changes permanent.", "description": "Tooltip for the checkbox in style editor to enable live preview while editing." }, + "publish": { + "message": "Publish", + "description": "Header for the section to link the style with userStyles.world" + }, + "publishPush": { + "message": "Push update", + "description": "The 'Publish style' button's new name when a connection is established" + }, + "publishReconnect": { + "message": "Try disconnecting then publish again" + }, + "publishRetry": { + "message": "Stylus is still trying to publish this style, but you can retry if you see no authentication activity or popups. Retry now?" + }, + "publishStyle": { + "message": "Publish style", + "description": "Publish the current style to userstyles.world" + }, + "publishUsw": { + "message": "Using ", + "description": "Name of the link to https://userstyles.world in the editor" + }, + "readingStyles": { + "message": "Reading styles..." + }, "reload": { "message": "Reload Stylus extension", "description": "Context menu reload" @@ -1206,6 +1333,9 @@ "retrieveBckp": { "message": "Import styles" }, + "retrieveDropboxSync": { + "message": "Dropbox Import" + }, "search": { "message": "Search", "description": "Label before the search input field in the editor shown on Ctrl-F" @@ -1226,10 +1356,6 @@ "message": "Number of matches in code and applies-to values", "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" }, - "searchStyleQueryHint": { - "message": "Search style names case-insensitively:\nsome words - all words in any order\n\"some phrase\" - this exact phrase without quotes\n2020 - a year like this also shows styles updated in 2020", - "description": "Tooltip shown for the text input in the popup's inline style finder" - }, "searchRegexp": { "message": "Use /re/ syntax for regexp search", "description": "Label after the search input field in the editor shown on Ctrl-F" @@ -1242,6 +1368,12 @@ "message": "No styles found for this site.", "description": "Error text in the popup when inline search didn't find any site-specific styles" }, + "searchResultNotMatching": { + "message": "The style is installed but it doesn't apply to the current site URL." + }, + "searchResultNotMatchingNote": { + "message": "Try asking the author of this userstyle to add the URL.\n\nYou can also open the style in the manager and edit it yourself,\nbut be aware it disables automatic updates for this style." + }, "searchResultRating": { "message": "Rating", "description": "Text for label that shows the search result's rating" @@ -1254,14 +1386,34 @@ "message": "Weekly installs", "description": "Text for label that shows the number of times a search result was installed during last week" }, - "searchStyles": { - "message": "Search contents", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "Search style names case-insensitively:\nsome words - all words in any order\n\"some phrase\" - this exact phrase without quotes\n2020 - a year like this also shows styles updated in 2020", + "description": "Tooltip shown for the text input in the popup's inline style finder" + }, + "searchStylesAll": { + "message": "All", + "description": "Option for `find styles` scope selector in the manager." + }, + "searchStylesCode": { + "message": "CSS code", + "description": "Option for `find styles` scope selector in the manager." }, "searchStylesHelp": { - "message": " key focuses the search field.\nPlain text: search within the name, code, homepage URL and sites it is applied to. Words with less than 3 letters are ignored.\nStyles matching a full URL: prefix the search with , e.g. \nRegular expressions: include slashes and flags, e.g. \nExact words: wrap the query in double quotes, e.g. <\".header ~ div\">", + "message": " or key focuses the search field.\nDefault mode is plain text search for all space-separated terms in any order.\nExact words: wrap the query in double quotes, e.g. <\".header ~ div\">\nRegular expressions: include slashes and flags, e.g. \n\"By URL\" in scope selector: finds styles that apply to a fully specified URL e.g. https://www.example.org/\n\"Metadata\" in scope selector: searches in names, \"applies to\" specifiers, installation URL, update URL, and the entire metadata block for usercss styles.", "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" }, + "searchStylesMatchUrl": { + "message": "By URL", + "description": "Option for `find styles` scope selector in the manager. See searchMatchUrlHint for more info." + }, + "searchStylesMeta": { + "message": "Metadata", + "description": "Option for `find styles` scope selector in the manager." + }, + "searchStylesName": { + "message": "Name", + "description": "Option for `find styles` scope selector in the manager." + }, "sectionAdd": { "message": "Add another section", "description": "Label for the button to add a section" @@ -1278,6 +1430,10 @@ "message": "Restore removed section", "description": "Label for the button to restore a removed section" }, + "sections": { + "message": "Sections", + "description": "Header for the table of contents block listing style section names in the left panel of the classic editor" + }, "shortcuts": { "message": "Shortcuts", "description": "Go to shortcut configuration" @@ -1394,6 +1550,9 @@ "message": "Mozilla Format", "description": "Heading for the section with buttons to import/export Mozilla format of the style" }, + "styleName": { + "message": "Style name" + }, "styleNotAppliedRegexpProblemTooltip": { "message": "Style was not applied due to its incorrect usage of 'regexp()'", "description": "Tooltip in the popup for styles that were not applied at all" @@ -1475,6 +1634,20 @@ "message": "As a security precaution, the browser prohibits extensions from affecting its built-in pages (like chrome://version, the standard new tab page as of Chrome 61, about:addons, and so on) as well as other extensions' pages. Each browser also restricts access to its own extensions gallery (like Chrome Web Store or AMO).", "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" }, + "syncDropboxDeprecated": { + "message": "Dropbox import/export is replaced by a more advanced style sync in the options page." + }, + "syncDropboxStyles": { + "message": "Dropbox Export" + }, + "syncError": { + "message": "Sync failed", + "description": "Tooltip for the toolbar icon" + }, + "syncErrorRelogin": { + "message": "Sync failed.\nTry to re-login in Stylus options:\nclick 'disconnect' first, then 'connect'.", + "description": "Tooltip for the toolbar icon" + }, "syncStorageErrorSaving": { "message": "The value cannot be saved. Try reducing the amount of text.", "description": "Displayed when trying to save an excessively big value via storage.sync API" @@ -1499,14 +1672,6 @@ "message": "To allow access open , right-click the list, click 'New', then 'Boolean', paste and click OK, , OK, reload the page.", "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" }, - "unreachableAMOHintNewFF": { - "message": "In Firefox 60 and newer you'll also have to remove AMO domain from in .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Only Firefox 59 and newer can be configured to allow WebExtensions to add style elements on CSP-protected sites such as this one.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" - }, "unreachableContentScript": { "message": "Could not communicate with the page. Try reloading the tab.", "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" @@ -1515,9 +1680,16 @@ "message": "Stylus can access file:// URLs only if you enable the corresponding checkbox for Stylus extension on chrome://extensions page.", "description": "Note in the toolbar popup for file:// URLs" }, - "InaccessibleFileHint": { - "message": "Stylus can not access some file types (e.g. pdf & json files).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "In Firefox 60 and newer you need to remove this domain from in .", + "description": "Note in the popup when opened on a restricted mozilla site in Firefox >= 60" + }, + "unreachableMozSiteHintOldFF": { + "message": "Only Firefox 59 and newer can be configured to allow WebExtensions to add style elements on CSP-protected sites such as this one.", + "description": "Note in the popup when opened on a restricted mozilla site in Firefox < 59" + }, + "unzipStyles": { + "message": "Unzipping styles..." }, "updateAllCheckSucceededNoUpdate": { "message": "No updates found.", @@ -1571,6 +1743,9 @@ "message": "Updates installed:", "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." }, + "uploadingFile": { + "message": "Uploading File..." + }, "usercssAvoidOverwriting": { "message": "Please change the value of @name or @namespace to avoid overwriting an existing style.", "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." @@ -1605,43 +1780,7 @@ "message": "this URL", "description": "Text for link in toolbar pop-up to write a new style for the current URL" }, - "syncDropboxStyles": { - "message": "Dropbox Export" - }, - "syncDropboxDeprecated": { - "message": "Dropbox import/export is replaced by a more advanced style sync in the options page." - }, - "retrieveDropboxSync": { - "message": "Dropbox Import" - }, - "overwriteFileExport": { - "message": "Do you want to overwrite an existing file?" - }, - "exportSavedSuccess": { - "message": "File saved with success" - }, - "noFileToImport": { - "message": "To import your styles, you should export it first." - }, - "connectingDropbox": { - "message": "Connecting Dropbox..." - }, - "connectingDropboxNotAllowed": { - "message": "Connecting to Dropbox is only available in apps installed directly from the webstore" - }, - "gettingStyles": { - "message": "Getting all styles..." - }, "zipStyles": { "message": "Zipping styles..." - }, - "unzipStyles": { - "message": "Unzipping styles..." - }, - "readingStyles": { - "message": "Reading styles..." - }, - "uploadingFile": { - "message": "Uploading File..." } } diff --git a/_locales/en_GB/messages.json b/_locales/en_GB/messages.json index e6a09217..ec6bb0eb 100644 --- a/_locales/en_GB/messages.json +++ b/_locales/en_GB/messages.json @@ -1,67 +1,51 @@ { "appliesRemoveError": { - "message": "Cannot remove last 'applies to' entry", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Cannot remove last 'applies to' entry" }, "checkAllUpdatesForce": { - "message": "Check again—I didn't edit any styles!", - "description": "Label for the button to apply all detected updates" + "message": "Check again—I didn't edit any styles!" }, "cm_autoCloseBrackets": { - "message": "Auto-close brackets and quotes", - "description": "Label for the checkbox in the style editor." + "message": "Auto-close brackets and quotes" }, "cm_colorpicker": { - "message": "Colour pickers for CSS colours", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Colour pickers for CSS colours" }, "cm_resizeGripHint": { - "message": "Double-click to maximise/restore the height", - "description": "Tooltip for the resize grip in style editor" + "message": "Double-click to maximise/restore the height" }, "colorpickerTooltip": { - "message": "Open colour picker", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Open colour picker" }, "description": { - "message": "Redesign the web with Stylus, a user-style manager. Stylus allows you to easily install themes and skins for many popular sites.", - "description": "Extension description" + "message": "Redesign the web with Stylus, a user-style manager. Stylus allows you to easily install themes and skins for many popular sites." }, "editGotoLine": { - "message": "Go to line (or line:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Go to line (or line:col)" }, "editStyleHeading": { - "message": "Edit style", - "description": "Title of the page for editing styles" + "message": "Edit style" }, "license": { - "message": "Licence", - "description": "Label for the license" + "message": "Licence" }, "manageFaviconsGray": { - "message": "Greyed out", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Greyed out" }, "optionsBadgeDisabled": { - "message": "Background colour when disabled", - "description": "" + "message": "Background colour when disabled" }, "optionsBadgeNormal": { - "message": "Background colour", - "description": "" + "message": "Background colour" }, "optionsUpdateImportNote": { - "message": "When importing style backups from an old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated.", - "description": "" + "message": "When importing style backups from an old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated." }, "optionsUpdateInterval": { - "message": "Userstyle auto-update interval in hours (specify 0 to disable)", - "description": "" + "message": "Userstyle auto-update interval in hours (specify 0 to disable)" }, "styleInstallFailed": { "message": "Failed to install userstyle\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -69,15 +53,12 @@ } }, "styleRegexpPartialExplanation": { - "message": "This style uses partially matching regexps in violation of CSS4 @document specification which requires a full URL match. The affected CSS sections were not applied to the page. This style was probably created in Stylish-for-Chrome, which incorrectly checks 'regexp()' rules since the very first version (known bug).", - "description": "" + "message": "This style uses partially matching regexps in violation of CSS4 @document specification which requires a full URL match. The affected CSS sections were not applied to the page. This style was probably created in Stylish-for-Chrome, which incorrectly checks 'regexp()' rules since the very first version (known bug)." }, "styleUpdateDiscardChanges": { - "message": "The style has been changed outside the editor. Would you like to reload the style?", - "description": "Confirmation to update the style in the editor" + "message": "The style has been changed outside the editor. Would you like to reload the style?" }, "usercssConfigIncomplete": { - "message": "The style was updated or deleted after the configuration dialogue was shown. These variables were not saved to avoid corrupting the style's metadata:", - "description": "" + "message": "The style was updated or deleted after the configuration dialogue was shown. These variables were not saved to avoid corrupting the style's metadata:" } -} \ No newline at end of file +} diff --git a/_locales/es/messages.json b/_locales/es/messages.json index ceb3dd1d..8ad64c0a 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus no puede acceder a algunos tipos de archivos (p. ej. archivos pdf y json)." + }, "addStyleLabel": { - "message": "Escribir un estilo nuevo", - "description": "Label for the button to go to the add style page" + "message": "Escribir un estilo nuevo" }, "addStyleTitle": { - "message": "Agregar un estilo", - "description": "Title of the page for adding styles" + "message": "Añadir estilo" }, "alphaChannel": { - "message": "Opacidad", - "description": "Label of color's opacity" + "message": "Opacidad" }, "appliesAdd": { - "message": "Agregar", - "description": "Label for the button to add an 'applies' entry" + "message": "Añadir" }, "appliesDisplay": { "message": "Se aplica a: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,288 +23,243 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "y más sitios", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "y más sitios" }, "appliesDomainOption": { - "message": "URLs en el dominio", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs en el dominio" }, "appliesHelp": { - "message": "Utilice los controles 'Se aplica a' para limitar a qué URLs se aplica el código de esta sección.", - "description": "Help text for 'applies to' section" + "message": "Utilice los controles 'Se aplica a' para limitar a qué URLs se aplica el código de esta sección." }, "appliesLabel": { - "message": "Se aplica a", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Se aplica a" }, "appliesLineWidgetLabel": { - "message": "Muestra la información 'Se aplica a'", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Muestra la información 'Se aplica a'" }, "appliesLineWidgetWarning": { - "message": "No funciona con CSS minificado", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "No funciona con CSS minificado" }, "appliesRegexpOption": { - "message": "URLs que coinciden con la regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs que coinciden con la regexp" }, "appliesRemove": { - "message": "Eliminar", - "description": "Label for the button to remove an 'applies' entry" + "message": "Eliminar" }, "appliesRemoveError": { - "message": "No se puede eliminar la última entrada 'Se aplica a'", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "No se puede eliminar la última entrada 'Se aplica a'" }, "appliesSpecify": { - "message": "Especificar", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Especificar" }, "appliesToEverything": { - "message": "Todos los sitios", - "description": "Text displayed for styles that apply to all sites" + "message": "Todos los sitios" }, "appliesUrlPrefixOption": { - "message": "URLs que empiezan con", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLs que empiezan con" }, "applyAllUpdates": { - "message": "Aplicar todas las actualizaciones", - "description": "Label for the button to apply all detected updates" + "message": "Aplicar todas las actualizaciones" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Copia de seguridad", - "description": "Heading for backup" + "message": "Respaldo" }, "backupMessage": { - "message": "Al exportar hará una copia de respaldo de TODOS los estilos instalados. Para restaurar una copia de respaldo, importe el archivo o arrástrelo a esta página.", - "description": "Message for backup" + "message": "Al exportar hará una copia de respaldo de TODOS los estilos instalados. Para restaurar una copia de respaldo, importe el archivo o arrástrelo a esta página." }, "bckpInstStyles": { - "message": "Exportar estilos", - "description": "" + "message": "Exportar estilos" }, "checkAllUpdates": { - "message": "Buscar actualizaciones para todos los estilos", - "description": "Label for the button to check all styles for updates" + "message": "Buscar actualizaciones para todos los estilos" }, "checkAllUpdatesForce": { - "message": "Comprobar de nuevo, ¡no he editado ningún estilo!", - "description": "Label for the button to apply all detected updates" + "message": "Comprobar de nuevo, ¡no he editado ningún estilo!" }, "checkForUpdate": { - "message": "Buscar actualización", - "description": "Label for the button to check a single style for an update" + "message": "Buscar actualización" }, "checkingForUpdate": { - "message": "Buscando...", - "description": "Text to display when checking a style for an update" + "message": "Buscando..." }, "clickToUninstall": { - "message": "Haga clic para desinstalar", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Haz clic para desinstalar" }, "cm_autoCloseBrackets": { - "message": "Cerrar automáticamente corchetes y comillas", - "description": "Label for the checkbox in the style editor." + "message": "Cerrar automáticamente corchetes y comillas" }, "cm_autoCloseBracketsTooltip": { - "message": "Añade automáticamente un equivalente de cierre al escribir uno de apertura de ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Añadir automáticamente un equivalente de cierre al escribir uno de apertura de ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Autocompletar al escribir", - "description": "Label for the checkbox in the style editor." + "message": "Autocompletar al escribir" }, "cm_colorpicker": { - "message": "Selectores de color para colores CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Selectores de color para colores CSS" }, "cm_indentWithTabs": { - "message": "Usar tabulaciones con sangría inteligente", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Usar tabulaciones con sangría inteligente" }, "cm_keyMap": { - "message": "Mapa de teclado", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Mapa de teclado" }, "cm_lineWrapping": { - "message": "Ajuste de línea", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Ajuste de línea" }, "cm_linter": { - "message": "Validador lint", - "description": "Select the linter to check for CSS issues" + "message": "Validador lint" }, "cm_matchHighlight": { - "message": "Resaltar", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Resaltar" }, "cm_matchHighlightSelection": { - "message": "Sólo selección", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Solo selección" }, "cm_matchHighlightToken": { - "message": "Resaltado de palabra señalada", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Resaltado de palabra señalada" }, "cm_resizeGripHint": { - "message": "Doble-clic para maximizar/restaurar la altura", - "description": "Tooltip for the resize grip in style editor" + "message": "Doble clic para maximizar/restaurar la altura" }, "cm_selectByTokens": { - "message": "Al hacer doble clic se seleccionan los tokens", - "description": "Label for the checkbox in the editor." + "message": "Al hacer doble clic se seleccionan los tokens" }, "cm_selectByTokensTooltip": { - "message": "Ejemplos de tokens: .foo-bar-2 #aabbcc 0.32 !important\nCuando está desactivado: se seleccionan las palabras delimitadas por puntos.", - "description": "" + "message": "Ejemplos de tokens: .foo-bar-2 #aabbcc 0.32 !important\nCuando está deshabilitado: se seleccionan las palabras delimitadas por puntos." }, "cm_smartIndent": { - "message": "Usar sangría inteligente", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Usar sangría inteligente" }, "cm_tabSize": { - "message": "Tamaño de la tabulación", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tamaño de la tabulación" }, "cm_theme": { - "message": "Temas", - "description": "Label for the style editor's CSS theme." + "message": "Temas" + }, + "colorpickerPaletteHint": { + "message": "Haz clic con el botón derecho en una muestra para mostrar las líneas de código fuente" }, "colorpickerSwitchFormatTooltip": { - "message": "Alternar formatos: HEX -> RGB -> HSL.\nMayús+Clic para invertir la dirección.\nTambién con las teclas RePág (Retroceso de página), AvPág (Avance de página).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Alternar formatos: HEX -> RGB -> HSL.\nMayús+Clic para invertir la dirección.\nTambién con las teclas RePág (Retroceso de página), AvPág (Avance de página)." }, "colorpickerTooltip": { - "message": "Abrir selector de color", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Abrir selector de color" }, "configOnChange": { - "message": "al cambiar", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "al cambiar" }, "configOnChangeTooltip": { - "message": "Guardar y aplicar los cambios automáticamente", - "description": "" + "message": "Guardar y aplicar los cambios automáticamente" }, "configureStyle": { - "message": "Configurar", - "description": "Label for the button to configure usercss userstyle" + "message": "Configurar" }, "configureStyleOnHomepage": { - "message": "Configurar en la página de inicio", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configurar en la página de inicio" }, "confirmCancel": { - "message": "Cancelar", - "description": "" + "message": "Cancelar" }, "confirmClose": { - "message": "Cerrar", - "description": "'Close' button in a confirm dialog" + "message": "Cerrar" }, "confirmDefault": { - "message": "Usar predeterminado", - "description": "'Set to default' button in a confirm dialog" + "message": "Usar predeterminado" }, "confirmDelete": { - "message": "Eliminar", - "description": "" + "message": "Eliminar" }, "confirmDiscardChanges": { - "message": "¿Descartar los cambios?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "¿Descartar los cambios?" }, "confirmOK": { - "message": "Aceptar", - "description": "" + "message": "Aceptar" }, "confirmSave": { - "message": "Guardar", - "description": "'Save' button in a confirm dialog" + "message": "Guardar" }, "confirmStop": { - "message": "Detener", - "description": "'Stop' button in a confirm dialog" + "message": "Detener" }, "confirmYes": { - "message": "Sí", - "description": "'Yes' button in a confirm dialog" + "message": "Sí" + }, + "connectingDropbox": { + "message": "Conectando a Dropbox...." + }, + "connectingDropboxNotAllowed": { + "message": "La conexión a Dropbox sólo está disponible en aplicaciones instaladas directamente desde la tienda web." }, "copied": { - "message": "Copiado al portapapeles", - "description": "Message shown when content has been copied to the clipboard" + "message": "Copiado al portapapeles" }, "copy": { - "message": "Copiar al portapapeles", - "description": "Tooltip for elements which can be copied" + "message": "Copiar al portapapeles" + }, + "customNameHint": { + "message": "Ingresa un nombre personalizado aquí para cambiar el nombre de estilo del diseño sin romper sus actualizaciones" + }, + "customNameResetHint": { + "message": "Dejar de usar el nombre personalizado, cambiar al nombre del estilo" + }, + "dateAbbrYear": { + "message": "$value$a", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "Fecha de instalación", - "description": "Option text for the user to sort the style by install date" + "message": "Fecha de instalación" }, "dateUpdated": { - "message": "Fecha de actualización", - "description": "Option text for the user to sort the style by last update date" + "message": "Fecha de actualización" }, "dbError": { - "message": "Ocurrió un error con la base de datos de Stylus. ¿Desea visitar una página web con posibles soluciones?", - "description": "Prompt when a DB error is encountered" + "message": "Ocurrió un error con la base de datos de Stylus. ¿Deseas visitar una página web con posibles soluciones?" }, "defaultTheme": { - "message": "predeterminado", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "predeterminado" }, "deleteStyleConfirm": { - "message": "¿Confirma que quiere eliminar este estilo?", - "description": "Confirmation before deleting a style" + "message": "¿Estás seguro de que quieres eliminar este estilo?" }, "deleteStyleLabel": { - "message": "Eliminar", - "description": "Label for the button to delete a style" + "message": "Eliminar" }, "description": { - "message": "Rediseñe la web con Stylus, un administrador de estilos de usuario. Stylus le permite instalar fácilmente temas y coberturas para muchos sitios populares.", - "description": "Extension description" + "message": "Rediseña la web con Stylus, un administrador de estilos de usuario. Stylus te permite instalar fácilmente temas y coberturas para muchos sitios populares." }, "disableAllStyles": { - "message": "Desactivar todos los estilos", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Desactivar todos los estilos" }, "disableStyleLabel": { - "message": "Desactivar", - "description": "Label for the button to disable a style" + "message": "Deshabilitar" }, "dragDropMessage": { - "message": "Deje caer su archivo de copia de seguridad en cualquier lugar de esta página para importarlo.", - "description": "Drag'n'drop message" + "message": "Arrastra tu archivo de respaldo en cualquier lugar de esta página para importar." + }, + "dragDropUsercssTabstrip": { + "message": "Para instalar el archivo, suéltalo en la barra de pestañas (el área donde se muestran los títulos de las pestañas)." }, "editDeleteText": { - "message": "Eliminar", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Eliminar" }, "editGotoLine": { - "message": "Ir a la línea (o a línea:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Ir a la línea (o a línea:col)" }, "editStyleHeading": { - "message": "Editar estilo", - "description": "Title of the page for editing styles" + "message": "Editar estilo" }, "editStyleLabel": { - "message": "Editar", - "description": "Label for the button to go to the edit style page" + "message": "Editar" }, "editStyleTitle": { "message": "Editar estilo $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -314,212 +267,180 @@ } }, "enableStyleLabel": { - "message": "Activar", - "description": "Label for the button to enable a style" + "message": "Habilitar" }, "excludeStyleByDomainLabel": { - "message": "Excluir el dominio Actual", - "description": "" + "message": "Excluir el dominio Actual" }, "excludeStyleByUrlLabel": { - "message": "Excluir la URL actual", - "description": "" + "message": "Excluir la URL actual" }, "exportLabel": { - "message": "Exportar", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportar" + }, + "exportSavedSuccess": { + "message": "Archivo guardado correctamente" }, "externalFeedback": { - "message": "Comentarios", - "description": "Label for the external link to send feedback for the style" + "message": "Comentarios" }, "externalHomepage": { - "message": "Página de inicio", - "description": "Label for the external link to style's homepage" + "message": "Página de inicio" }, "externalLink": { - "message": "Enlace externo", - "description": "Label for external links" + "message": "Enlace externo" }, "externalSupport": { - "message": "Asistencia", - "description": "Label for the external link to style's support site" + "message": "Asistencia" }, "externalUsercssDocument": { - "message": "Documentación para Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentación para UserCSS" }, "filteredStyles": { "message": "$numShown$ mostrados de $numTotal$ en total", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Los filtros actualmente aplicados no coinciden con estilo alguno", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Los filtros actualmente aplicados no coinciden con estilo alguno" }, "findStyles": { - "message": "Buscar estilos", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Buscar estilos" }, "findStylesForSite": { - "message": "Buscar más estilos para este sitio", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Buscar más estilos para este sitio" }, "findStylesInline": { - "message": "Dentro", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Dentro" }, "findStylesInlineTooltip": { - "message": "Muestra los resultados de búsqueda dentro de esta ventana.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Muestra los resultados de búsqueda dentro de esta ventana." }, "genericAdd": { - "message": "Agregar", - "description": "Used in various places for an action that adds something" + "message": "Añadir" }, "genericClone": { - "message": "Clonar", - "description": "Used in various places for an action that clones something" + "message": "Clonar" + }, + "genericDescription": { + "message": "Descripción" }, "genericDisabledLabel": { - "message": "Desactivado", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Deshabilitado" }, "genericEnabledLabel": { - "message": "Habilitado", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Habilitado" }, "genericHistoryLabel": { - "message": "Historial", - "description": "Used in various places to show a history log of something" + "message": "Historial" }, "genericNext": { - "message": "Siguiente", - "description": "Used in various places to select/perform the next step/action" + "message": "Siguiente" }, "genericPrevious": { - "message": "Anterior", - "description": "Used in various places to select/perform the previous step/action" + "message": "Anterior" }, "genericResetLabel": { - "message": "Restablecer", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Restablecer" }, "genericSavedMessage": { - "message": "Guardado", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Guardado" }, "genericTitle": { - "message": "Título", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Título" }, "genericUnknown": { - "message": "Desconocido", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Desconocido" + }, + "gettingStyles": { + "message": "Obteniendo todos los estilos..." }, "helpAlt": { - "message": "Ayuda", - "description": "Alternate text for help buttons" + "message": "Ayuda" }, "helpKeyMapCommand": { - "message": "Nombre del comando", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Nombre del comando" }, "helpKeyMapHotkey": { - "message": "Pulse un atajo", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Pulsa un atajo de teclado" + }, + "hostDisabled": { + "message": "Este host ha sido deshabilitado debido a un error en la versión actual del navegador que se está utilizando." }, "importAppendLabel": { - "message": "Adicionar al estilo", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Adicionar al estilo" }, "importAppendTooltip": { - "message": "Agrega el estilo importado al estilo actual", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Agrega el estilo importado al estilo actual" }, "importLabel": { - "message": "Importar", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importar" + }, + "importPreprocessor": { + "message": "Los estilos con @preprocessor no funcionarán en el modo clásico. Puedes cambiar el editor para usar el modo UserCSS: 1) Abre el administrador de estilos. 2) Activa la casilla «como UserCSS». 3) Haz clic en «Escribir un estilo nuevo»\n\n¿Quieres importarlo de todos modos?" + }, + "importPreprocessorTitle": { + "message": "Problema potencial debido a @preprocessor" }, "importReplaceLabel": { - "message": "Sobrescribir estilo", - "description": "Label for the button to import and overwrite current style" + "message": "Sobrescribir estilo" }, "importReplaceTooltip": { - "message": "Descartar el contenido del estilo actual y sobrescribirlo con el estilo importado", - "description": "Label for the button to import and overwrite current style" + "message": "Descartar el contenido del estilo actual y sobrescribirlo con el estilo importado" }, "importReportLegendAdded": { - "message": "agregados", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "añadido" }, "importReportLegendIdentical": { - "message": "idénticos omitidos", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "idénticos omitidos" }, "importReportLegendInvalid": { - "message": "no válidos omitidos", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "no válidos omitidos" }, "importReportLegendUpdatedBoth": { - "message": "actualizado tanto metadatos como código", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "actualizado tanto metadatos como código" }, "importReportLegendUpdatedCode": { - "message": "código actualizado", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "código actualizado" }, "importReportLegendUpdatedMeta": { - "message": "metadatos actualizados", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "metadatos actualizados" }, "importReportTitle": { - "message": "Se completó la importación de estilos", - "description": "Title of the report shown after importing styles" + "message": "Se completó la importación de estilos" }, "importReportUnchanged": { - "message": "No se cambió nada.", - "description": "Message in the report shown after importing styles" + "message": "No se cambió nada." }, "importReportUndone": { - "message": "estilos fueron revertidos", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "estilos fueron revertidos" }, "importReportUndoneTitle": { - "message": "La importación ha sido anulada", - "description": "Title of the message box shown after undoing the import of styles" + "message": "La importación ha sido anulada" }, "installButton": { - "message": "Instalar estilo", - "description": "Label for install button" + "message": "Instalar estilo" }, "installButtonInstalled": { - "message": "Estilo instalado", - "description": "Text displayed when the style is successfully installed" + "message": "Estilo instalado" }, "installButtonReinstall": { - "message": "Reinstalar estilo", - "description": "Label for reinstall button" + "message": "Reinstalar estilo" }, "installButtonUpdate": { - "message": "Actualizar estilo", - "description": "Label for update button" + "message": "Actualizar estilo" }, "installUpdate": { - "message": "Instalar actualización", - "description": "Label for the button to install an update for a single style" + "message": "Instalar actualización" }, "installUpdateFrom": { "message": "Actualmente el estilo se actualiza desde $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -527,28 +448,22 @@ } }, "installUpdateFromLabel": { - "message": "Buscar actualizaciones", - "description": "Label for the checkbox to save current URL for update check" + "message": "Buscar actualizaciones" }, "license": { - "message": "Licencia", - "description": "Label for the license" + "message": "Licencia" }, "linkGetHelp": { - "message": "Obtener ayuda", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Obtener ayuda" }, "linkGetStyles": { - "message": "Obtener estilos", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Obtener estilos" }, "linkTranslate": { - "message": "Traducir", - "description": "Transifex link text on the manage page" + "message": "Traducir" }, "linterCSSLintIncompatible": { "message": "CSSLint no soporta el preprocesador $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -556,12 +471,10 @@ } }, "linterCSSLintSettings": { - "message": "(Establezca la regla como: 0 = deshabilitada; 1 = advertencia; 2 = error)", - "description": "CSSLint rule config values" + "message": "(Establecer regla como: 0 = deshabilitada; 1 = advertencia; 2 = error)" }, "linterConfigPopupTitle": { "message": "Establecer configuración de $linter$ reglas", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -569,20 +482,16 @@ } }, "linterConfigTooltip": { - "message": "Pulse para configurar este deshilvanador (linter)", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Haz clic para configurar este linter" }, "linterInvalidConfigError": { - "message": "No se guardó debido a estos ajustes de configuración no válidos:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "No se guardó debido a estos ajustes de configuración no válidos:" }, "linterIssues": { - "message": "Problemas", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problemas" }, "linterIssuesHelp": { "message": "Estos problemas fueron encontrados por $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -590,136 +499,93 @@ } }, "linterJSONError": { - "message": "Formato JSON no válido", - "description": "Setting linter config with invalid JSON" + "message": "Formato JSON no válido" }, "linterResetMessage": { - "message": "Para deshacer este restablecimiento accidental, pulse Ctrl+Z (o Cmd+Z) en el cuadro de texto", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Para deshacer este restablecimiento accidental, pulse Ctrl+Z (o Cmd+Z) en el cuadro de texto" }, "linterRulesLink": { - "message": "Vea una lista completa de reglas", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Vea una lista completa de reglas" }, "liveReloadError": { - "message": "Se ha producido un error al visualizar el archivo", - "description": "The label of live-reload error" + "message": "Se ha producido un error al visualizar el archivo" + }, + "liveReloadInstallHint": { + "message": "Mantener esta pestaña abierta para actualizar automáticamente el estilo a los cambios externos." + }, + "liveReloadInstallHintFF": { + "message": "Mantener tanto esta pestaña como la pestaña original abiertas para actualizar automáticamente el estilo a los cambios externos." }, "liveReloadLabel": { - "message": "Recarga en tiempo real", - "description": "The label of live-reload feature" + "message": "Recarga en tiempo real" }, "manageFavicons": { - "message": "Favicons en la columna 'Se aplica a'", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons en la columna 'Se aplica a'" }, "manageFaviconsGray": { - "message": "Atenuado", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Atenuado" }, "manageFaviconsHelp": { - "message": "Stylus usa un servicio externo https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus usa un servicio externo https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtros", - "description": "Label for filters container" + "message": "Filtros" }, "manageHeading": { - "message": "Estilos instalados", - "description": "Heading for the manage page" + "message": "Estilos instalados" }, "manageMaxTargets": { - "message": "Número de elementos 'Se aplica a'", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Número de elementos 'Se aplica a'" }, "manageNewStyleAsUsercss": { - "message": "como Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "como UserCSS" }, "manageNewUI": { - "message": "Nuevo diseño de la administración", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nuevo diseño de la administración" }, "manageOnlyDisabled": { - "message": "Sólo estilos deshabilitados", - "description": "Checkbox to show only disabled styles" + "message": "Solo estilos deshabilitados" }, "manageOnlyEnabled": { - "message": "Sólo estilos activos", - "description": "Checkbox to show only enabled styles" + "message": "Solo estilos habilitados" }, "manageOnlyExternal": { - "message": "Sólo estilos externos", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Solo estilos externos" }, "manageOnlyLocal": { - "message": "Sólo estilos creados localmente", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Solo estilos creados localmente" }, "manageOnlyLocalTooltip": { - "message": "(los estilos no instalados a través de una página userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(los estilos no instalados a través de una página userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Sólo estilos no-Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Solo estilos no UserCSS" }, "manageOnlyUpdates": { - "message": "Sólo con actualizaciones o problemas", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Solo con actualizaciones o problemas" }, "manageOnlyUsercss": { - "message": "Sólo estilos Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "Solo estilos UserCSS" }, "menuShowBadge": { - "message": "Mostrar número de estilos activos", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Mostrar número de estilos activos" }, "meta_invalidCheckboxDefault": { - "message": "@var checkbox no válida: el valor debe ser 0 o 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "@var checkbox no válida: el valor debe ser 0 o 1" }, "meta_invalidColor": { "message": "@var color no válido: $color$ no es un color", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Se espera un número" + }, "meta_invalidRange": { "message": "@var $type$no válido: debe ser un número o un array", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "@var $type$ no válido: se han definido múltiples unidades", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "@var $type$ no válido: el array contiene demasiados elementos", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "@var $type$ no válido: los elementos en el array deben ser número, cadena o nulo", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -728,16 +594,6 @@ }, "meta_invalidRangeDefault": { "message": "@var $type$ no válido: el valor por defecto es nulo", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "@var $type$ no válido: el valor por defecto es inferior al mínimo", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -746,7 +602,22 @@ }, "meta_invalidRangeMax": { "message": "@var $type$ no válido: el valor por defecto es mayor al máximo", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "@var $type$ no válido: el valor por defecto es inferior al mínimo", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "@var $type$ no válido: se han definido múltiples unidades", "placeholders": { "type": { "content": "$1" @@ -755,7 +626,14 @@ }, "meta_invalidRangeStep": { "message": "@var $type$ no válido: el valor por defecto no es un múltiplo del intervalo", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "@var $type$ no válido: el array contiene demasiados elementos", "placeholders": { "type": { "content": "$1" @@ -764,7 +642,6 @@ }, "meta_invalidRangeUnits": { "message": "@var $type$ no válido: '$units$' no es una unidad válida", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -774,37 +651,40 @@ } } }, - "meta_invalidSelect": { - "message": "@var select no válido: el valor por defecto debe ser un array o un objeto", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "@var $type$ no válido: los elementos en el array deben ser número, cadena o nulo", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "@var select no válido: los valores dentro del array/objeto deben ser una cadena", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "@var select no válido: el valor por defecto debe ser un array o un objeto" }, "meta_invalidSelectEmptyOptions": { - "message": "@var select no válido: la lista de opciones está vacía", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select no válido: la lista de opciones está vacía" }, "meta_invalidSelectLabel": { - "message": "@var select no válido: la etiqueta de opción está vacía", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select no válido: la etiqueta de opción está vacía" }, "meta_invalidSelectMultipleDefaults": { - "message": "@var select no válido: se han definido múltiples opciones por defecto", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select no válido: se han definido múltiples opciones por defecto" }, "meta_invalidSelectNameDuplicated": { - "message": "@var select no válido: el nombre de la opción está duplicado", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select no válido: el nombre de la opción está duplicado" + }, + "meta_invalidSelectValue": { + "message": "@var select no válido: los valores dentro del array/objeto deben ser una cadena" }, "meta_invalidSelectValueMismatch": { - "message": "@var select no válido: no existe en la lista de opciones", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select no válido: no existe en la lista de opciones" + }, + "meta_invalidString": { + "message": "Se espera una cadena de texto entre comillas" }, "meta_invalidURLProtocol": { "message": "Protocolo URL no válido. Sólo se permiten http y https: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -812,29 +692,13 @@ } }, "meta_invalidVersion": { - "message": "Número de versión no válido. El valor no coincide con el patrón SemVer: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Se espera un número", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Se espera una cadena de texto entre comillas", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Número de versión no válido" }, "meta_invalidWord": { - "message": "Se espera una palabra", - "description": "Error displayed when the value is expected to be a word" + "message": "Se espera una palabra" }, "meta_missingChar": { "message": "Se esperan caracteres: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -842,12 +706,10 @@ } }, "meta_missingEOT": { - "message": "Se esperan datos EOT", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Se esperan datos EOT" }, "meta_missingMandatory": { "message": "Faltan metadatos obligatorios: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -856,7 +718,6 @@ }, "meta_unknownJSONLiteral": { "message": "JSON no válido: $literal$ no es un literal válido de JSON", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -865,16 +726,33 @@ }, "meta_unknownMeta": { "message": "Metadatos desconocidos: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "¿Querías decir @$keyOk$? Metadatos desconocidos: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "@preprocessor desconocido: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Tipo de @$varkey$ desconocido: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -884,390 +762,408 @@ } } }, - "meta_unknownPreprocessor": { - "message": "@preprocessor desconocido: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", + "noFileToImport": { + "message": "Para importar sus estilos, debe exportarlos primero." + }, + "noStylesForSite": { + "message": "No hay estilos instalados para este sitio." + }, + "numberedLine": { + "message": "Línea:" + }, + "openManage": { + "message": "Administrar" + }, + "openOptions": { + "message": "Opciones" + }, + "openStylesManager": { + "message": "Abrir administrador de estilos" + }, + "optionsActions": { + "message": "Acciones" + }, + "optionsAdvanced": { + "message": "Avanzado" + }, + "optionsAdvancedContextDelete": { + "message": "Añadir 'Eliminar' al menú contextual del editor" + }, + "optionsAdvancedExposeIframes": { + "message": "Visualizar marcos integrados (iframes) a través de HTML[stylus-iframe]" + }, + "optionsAdvancedExposeIframesNote": { + "message": "Muestra el dominio del sitio principal en cada iframe.\nPermite escribir código CSS específico para iframes, como en el ejemplo siguiente:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" + }, + "optionsAdvancedNewStyleAsUsercss": { + "message": "Escribir nuevo estilo como UserCSS" + }, + "optionsAdvancedPatchCsp": { + "message": "Cambiar CSP para permitir recursos de estilos" + }, + "optionsAdvancedPatchCspNote": { + "message": "Activa esta opción si los estilos contienen imágenes o fuentes que no se cargan en un sitio con una configuración estricta de CSP (Política de seguridad de contenido).\n\nAl activar esta opción, se reducen las restricciones de CSP para que puedan cargarse los contenidos de estilo necesarios. Esta opción va dirigida únicamente a usuarios avanzados que comprenden las posibles implicaciones de seguridad y aceptan la responsabilidad de supervisar el contenido que permiten que se cargue. Antes de usar esta opción, obtén más información sobre los ataques basados en CSS.\n\nAdemás, puede que esta opción específica no se aplique si otra extensión modifica antes la respuesta de red." + }, + "optionsAdvancedStyleViaXhr": { + "message": "Modo de inserción instantánea" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "Activa esta opción si aparecen y desaparecen rápidamente contenidos sin estilo al cargarse páginas (el efecto es más visible con temas oscuros).\n\nLa explicación técnica es que Chrome/Chromium pospone la comunicación asincrónica de las extensiones. Esta función intenta mejorar la velocidad de carga de las páginas, aunque no siempre es efectiva y puede causar que los estilos se apliquen con retraso. Para evitar este problema (ya que las extensiones del tipo WebExtensions no pueden usar una API sincrónica), Stylus ofrece esta opción para usar la API web XMLHttpRequest sincrónica (en desuso) para obtener los estilos correspondientes. No debería causar problemas, ya que la petición se completa en solo unos milisegundos, mientras se carga la página del servidor.\n\nDe todos modos, Chromium mostrará una advertencia en la consola de herramientas de desarrollador. Para evitar que se muestren este tipo de advertencias en el futuro, haz clic con el botón derecho sobre una advertencia y selecciona la opción para ocultarla." + }, + "optionsBadgeDisabled": { + "message": "Color de fondo cuando está deshabilitado" + }, + "optionsBadgeNormal": { + "message": "Color de fondo" + }, + "optionsCheck": { + "message": "Actualizar estilos" + }, + "optionsCheckUpdate": { + "message": "Buscar e instalar todas las actualizaciones disponibles" + }, + "optionsCustomizeBadge": { + "message": "Distintivo en el icono de barra de herramientas" + }, + "optionsCustomizeIcon": { + "message": "Icono de barra de herramientas" + }, + "optionsCustomizePopup": { + "message": "Ventana emergente" + }, + "optionsCustomizeSync": { + "message": "Sincronizar con la nube" + }, + "optionsCustomizeUpdate": { + "message": "Actualizaciones" + }, + "optionsHeading": { + "message": "Opciones" + }, + "optionsIconDark": { + "message": "Temas de navegador oscuros" + }, + "optionsIconLight": { + "message": "Temas de navegador claros" + }, + "optionsOpen": { + "message": "Abrir" + }, + "optionsOpenManager": { + "message": "Administrar estilos" + }, + "optionsPopupWidth": { + "message": "Anchura del diálogo emergente (en píxeles)" + }, + "optionsReset": { + "message": "Restablecer las opciones a sus valores predeterminados." + }, + "optionsResetButton": { + "message": "Restablecer opciones" + }, + "optionsStylusThemes": { + "message": "Buscar un tema de Stylus" + }, + "optionsSubheading": { + "message": "Más opciones" + }, + "optionsSyncConnect": { + "message": "Conectar" + }, + "optionsSyncDisconnect": { + "message": "Desconectar" + }, + "optionsSyncLogin": { + "message": "Iniciar sesión" + }, + "optionsSyncNone": { + "message": "Ninguno" + }, + "optionsSyncStatusConnected": { + "message": "Conectado" + }, + "optionsSyncStatusConnecting": { + "message": "Conectando..." + }, + "optionsSyncStatusDisconnected": { + "message": "Desconectado" + }, + "optionsSyncStatusDisconnecting": { + "message": "Desconectando..." + }, + "optionsSyncStatusPull": { + "message": "Obteniendo estilo $loaded$ de $total$", "placeholders": { - "preprocessor": { + "loaded": { "content": "$1" + }, + "total": { + "content": "$2" } } }, - "noStylesForSite": { - "message": "No hay estilos instalados para este sitio.", - "description": "Text displayed when no styles are installed for the current site" + "optionsSyncStatusPush": { + "message": "Publicando estilo $loaded$ de $total$", + "placeholders": { + "loaded": { + "content": "$1" + }, + "total": { + "content": "$2" + } + } }, - "openManage": { - "message": "Administrar", - "description": "Link to open the manage page." - }, - "openOptions": { - "message": "Opciones", - "description": "Go to Options UI" - }, - "openStylesManager": { - "message": "Abrir administrador de estilos", - "description": "Label for the style maanger opener in the browser action context menu." - }, - "optionsActions": { - "message": "Acciones", - "description": "" - }, - "optionsAdvanced": { - "message": "Avanzado", - "description": "" - }, - "optionsAdvancedContextDelete": { - "message": "Agregar 'Eliminar' al menú contextual del editor", - "description": "" - }, - "optionsAdvancedExposeIframes": { - "message": "Visualizar marcos integrados (iframes) a través de HTML[stylus-iframe]", - "description": "" - }, - "optionsAdvancedNewStyleAsUsercss": { - "message": "Escribir nuevo estilo como usercss", - "description": "" - }, - "optionsBadgeDisabled": { - "message": "Color de fondo cuando está desactivado", - "description": "" - }, - "optionsBadgeNormal": { - "message": "Color de fondo", - "description": "" - }, - "optionsCheck": { - "message": "Actualizar estilos", - "description": "" - }, - "optionsCheckUpdate": { - "message": "Buscar e instalar todas las actualizaciones disponibles", - "description": "" - }, - "optionsCustomizeBadge": { - "message": "Distintivo en el icono de barra de herramientas", - "description": "" - }, - "optionsCustomizeIcon": { - "message": "Icono de barra de herramientas", - "description": "" - }, - "optionsCustomizePopup": { - "message": "Ventana emergente", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Actualizaciones", - "description": "" - }, - "optionsHeading": { - "message": "Opciones", - "description": "Heading for options section on manage page." - }, - "optionsIconDark": { - "message": "Temas de navegador oscuros", - "description": "" - }, - "optionsIconLight": { - "message": "Temas de navegador claros", - "description": "" - }, - "optionsOpen": { - "message": "Abrir", - "description": "" - }, - "optionsOpenManager": { - "message": "Administrar estilos", - "description": "" - }, - "optionsPopupWidth": { - "message": "Anchura del diálogo emergente (en píxeles)", - "description": "" - }, - "optionsReset": { - "message": "Restablecer las opciones a sus valores predeterminados.", - "description": "" - }, - "optionsResetButton": { - "message": "Restablecer opciones", - "description": "" - }, - "optionsSubheading": { - "message": "Más opciones", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Al importar copias de seguridad de estilos desde una versión antigua o desde Stylish, realice una única búsqueda manual de actualizaciones en el administrador de estilos para asegurarse de que todos los estilos están actualizados.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Intervalo de actualización automática en horas (especifique 0 para deshabilitar)", - "description": "" - }, - "optionsSyncConnect": { - "message": "Conectar", - "description": "" - }, - "optionsSyncDisconnect": { - "message": "Desconectar", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Sincronizar ahora", - "description": "" - }, - "optionsSyncLogin": { - "message": "Iniciar Sesión", - "description": "" + "optionsSyncStatusRelogin": { + "message": "La sesión ha expirado, por favor inicia sesión de nuevo." }, "optionsSyncStatusSyncing": { - "message": "Sincronizando...", - "description": "" + "message": "Sincronizando..." }, - "optionsSyncStatusConnecting": { - "message": "Conectando...", - "description": "" + "optionsSyncSyncNow": { + "message": "Sincronizar ahora" }, - "optionsSyncStatusConnected": { - "message": "Conectado", - "description": "" + "optionsUpdateImportNote": { + "message": "Al importar los respaldos de estilos desde una versión antigua o desde Stylish, comprueba una vez las actualizaciones manualmente en el administrador de estilos para asegurarte de que todos los estilos estén actualizados." }, - "optionsSyncStatusDisconnecting": { - "message": "Desconectando...", - "description": "" + "optionsUpdateInterval": { + "message": "Intervalo de actualización automática en horas (especificar 0 para deshabilitar)" }, - "optionsSyncStatusDisconnected": { - "message": "Desconectado", - "description": "" + "overwriteFileExport": { + "message": "¿Desea sobrescribir un archivo existente?" }, "paginationCurrent": { - "message": "Página actual", - "description": "Tooltip for the current page index in search results" + "message": "Página actual" }, "paginationEstimated": { - "message": "Número estimado de páginas", - "description": "Tooltip for the total page count in search results" + "message": "Número estimado de páginas" }, "paginationNext": { - "message": "Página siguiente", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Página siguiente" }, "paginationPrevious": { - "message": "Página anterior", - "description": "Tooltip for the '<-' button in search results" + "message": "Página anterior" }, "paginationTotal": { - "message": "Páginas totales", - "description": "" + "message": "Páginas totales" }, "parseUsercssError": { - "message": "Stylus no pudo interpretar el usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus no pudo interpretar el UserCSS:" + }, + "popupAutoResort": { + "message": "Al activar esta opción, se muestran los estilos en una ventana emergente" }, "popupBorders": { - "message": "Añadir bordes blancos en los laterales", - "description": "" + "message": "Añadir bordes blancos en los laterales" }, "popupBordersTooltip": { - "message": "Útil para temas oscuros en el nuevo Chrome ya que no pinta los bordes laterales", - "description": "" + "message": "Útil para temas oscuros en el nuevo Chrome ya que no pinta los bordes laterales" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, también en el teclado numérico - acciona el n-esimo estilo (0 es 10)\n- acciona el primer estilo con un nombre que comienza con la letra\n abre el editor en lugar de accionar\n habilita los estilos listados\n deshabilita los estilos listados\n y <`> (acento grave) - acciona los estilos habilitados inicialmente; no se aplica a los estilos habilitados subsecuentemente mientras el cuadro emergente está abierto, así que puede restaurar la selección inicial tras probar el material: simplemente deshabilite todo, y luego accione, es decir \nMás información en el wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, también en el teclado numérico - acciona el n-esimo estilo (0 es 10)\n- acciona el primer estilo con un nombre que comienza con la letra\n abre el editor en lugar de accionar\n habilita los estilos listados\n deshabilita los estilos listados\n y <`> (acento grave) - acciona los estilos habilitados inicialmente; no se aplica a los estilos habilitados subsecuentemente mientras el cuadro emergente está abierto, así que puede restaurar la selección inicial tras probar el material: simplemente deshabilite todo, y luego accione, es decir \nMás información en el wiki" }, "popupHotkeysTooltip": { - "message": "Pulse para ver teclas de atajo disponibles.", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Haz clic para ver los atajos de teclado disponibles" }, "popupManageTooltip": { - "message": "Mayús+clic o clic secundario abre el administrador con estilos aplicables para el sitio actual.", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Mayús+clic o clic secundario abre el administrador con estilos aplicables para el sitio actual." }, "popupMenuButtonTooltip": { - "message": "Acciones", - "description": "Tooltip for menu button in popup." + "message": "Acciones" + }, + "popupOpenEditInPopup": { + "message": "Usar ventana simple (en lugar de la barra de direcciones)" }, "popupOpenEditInWindow": { - "message": "Abrir editor en una nueva ventana", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Abrir editor en una nueva ventana" }, "popupOpenEditInWindowTooltip": { - "message": "También se habilita al desacoplar la pestaña del editor de una ventana de navegador,\ny se deshabilita al acoplar una única pestaña de editor en otra ventana.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "También se habilita al desacoplar la pestaña del editor de una ventana de navegador,\ny se deshabilita al acoplar una única pestaña de editor en otra ventana." }, "popupStylesFirst": { - "message": "Estilos antes que las órdenes", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Estilos antes que las órdenes" }, "prefShowBadge": { - "message": "Número de estilos activos en el sitio actual", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Número de estilos activos en el sitio actual" }, "previewLabel": { - "message": "Vista previa en tiempo real", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Vista previa en tiempo real" }, "previewTooltip": { - "message": "Aplica temporalmente los cambios sin guardar.\nGuarde el estilo para que los cambios sean permanentes.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Aplica temporalmente los cambios sin guardar.\nGuarde el estilo para que los cambios sean permanentes." + }, + "publish": { + "message": "Publicar" + }, + "publishPush": { + "message": "Publicar actualización" + }, + "publishReconnect": { + "message": "Prueba a desconectar y, después, vuelve a publicar" + }, + "publishRetry": { + "message": "Stylus aún está intentando publicar este estilo. Puedes volver a intentarlo si no ves mensajes emergentes ni actividad de autenticación. ¿Quieres intentarlo de nuevo?" + }, + "publishStyle": { + "message": "Publicar estilo" + }, + "publishUsw": { + "message": "Usando " + }, + "readingStyles": { + "message": "Leyendo los estilos..." + }, + "reload": { + "message": "Recargar extensión Stylus" }, "replace": { - "message": "Reemplazar", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Reemplazar" }, "replaceAll": { - "message": "Reemplazar todo", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Reemplazar todo" }, "replaceWith": { - "message": "Reemplazar con", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Reemplazar con" }, "retrieveBckp": { - "message": "Importar estilos", - "description": "" + "message": "Importar estilos" + }, + "retrieveDropboxSync": { + "message": "Importar desde Dropbox" }, "search": { - "message": "Buscar", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Buscar" }, "searchCaseSensitive": { - "message": "Diferenciar mayúsculas y minúsculas", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Diferenciar mayúsculas y minúsculas" + }, + "searchGlobalStyles": { + "message": "También buscar estilos globales" }, "searchNumberOfResults": { - "message": "Número de coincidencias", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Número de coincidencias" }, "searchNumberOfResults2": { - "message": "Número de coincidencias en el código y en los valores 'Se aplica a'", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Número de coincidencias en el código y en los valores 'Se aplica a'" }, "searchRegexp": { - "message": "Use la sintaxis /re/ para búsquedas con expresiones regulares", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Use la sintaxis /re/ para búsquedas con expresiones regulares" }, "searchResultInstallCount": { - "message": "Instalaciones totales", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Instalaciones totales" }, "searchResultNoneFound": { - "message": "No se encontraron estilos para este sitio.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "No se encontraron estilos para este sitio." + }, + "searchResultNotMatching": { + "message": "El estilo se ha instalado, pero no es válido para la URL del sitio actual." + }, + "searchResultNotMatchingNote": { + "message": "Intenta pedir al autor de este estilo de usuario que añada la URL.\n\nTambién puedes abrir el estilo en el administrador y editarlo tú mismo,\npero ten en cuenta que deshabilita las actualizaciones automáticas de\neste estilo." }, "searchResultRating": { - "message": "Valoración", - "description": "Text for label that shows the search result's rating" + "message": "Valoración" }, "searchResultUpdated": { - "message": "Actualizado", - "description": "Text for label that shows the search result's last update date" + "message": "Actualizado" }, "searchResultWeeklyCount": { - "message": "Instalaciones semanales", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Instalaciones semanales" }, - "searchStyles": { - "message": "Buscar contenidos", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "La búsqueda de nombres de estilo no distingue mayúsculas de minúsculas:\nalgunas palabras: todas las palabras en cualquier orden\n\"una frase\": esta frase exacta (sin comillas)\n2020: al escribir un año, se muestran estilos que se actualizaron ese año" + }, + "searchStylesAll": { + "message": "Todos" + }, + "searchStylesCode": { + "message": "Código CSS" }, "searchStylesHelp": { - "message": "La tecla pone el foco en el campo de búsqueda.\nTexto simple: Busque por nombre, código, URL de la página principal, y sitios a los que se apllica. Las palabras con menos de 3 letras son ignoradas.\nURL coincidente: Prefije la búsqueda con , ej. \nExpresiones regulares: Incluya barras e indicadores, ej.. \nPalabras exactas: Ponga la consulta entre comillas dobles, ej.. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Al pulsar o , se coloca el cursor en el campo de búsqueda .\nEl modo predeterminado es la búsqueda de texto sin formato de todos los términos separados por espacios en cualquier orden.\nPalabras exactas: escribe la consulta entre comillas dobles. Ejemplo: <\".header ~ div\">\nExpresiones regulares: se incluyen barras y marcas. Ejemplo: )\n«Por URL» en el selector de ámbito: busca los estilos que se aplican en una URL completa especificada. Ejemplo: https://www.example.org/\n«Metadatos» en el selector de ámbito: busca en nombres, especificadores de «se aplica a», URL de instalación, URL de actualización y todo el bloque de metadatos para estilos de UserCSS." + }, + "searchStylesMatchUrl": { + "message": "Por URL" + }, + "searchStylesMeta": { + "message": "Metadatos" + }, + "searchStylesName": { + "message": "Nombre" }, "sectionAdd": { - "message": "Agregar otra sección", - "description": "Label for the button to add a section" + "message": "Añadir otra sección" }, "sectionCode": { - "message": "Código", - "description": "Label for the code for a section" + "message": "Código" }, "sectionRemove": { - "message": "Eliminar sección", - "description": "Label for the button to remove a section" + "message": "Eliminar sección" }, "sectionRestore": { - "message": "Restaurar sección eliminada", - "description": "Label for the button to restore a removed section" + "message": "Restaurar sección eliminada" + }, + "sections": { + "message": "Secciones" }, "shortcuts": { - "message": "Atajos", - "description": "Go to shortcut configuration" + "message": "Atajos" }, "shortcutsNote": { - "message": "Defina atajos de teclado", - "description": "" + "message": "Defina atajos de teclado" }, "sortDateNewestFirst": { - "message": "los más nuevos primero", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "los más nuevos primero" }, "sortDateOldestFirst": { - "message": "el más antiguo primero", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "el más antiguo primero" }, "sortLabel": { - "message": "Seleccione un orden a aplicar a los estilos instalados", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Seleccione un orden a aplicar a los estilos instalados" }, "sortLabelTitleAsc": { - "message": "Título ascendentemente", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Título ascendentemente" }, "sortLabelTitleDesc": { - "message": "Título descendentemente", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Título descendentemente" }, "sortStylesHelp": { - "message": "Escoja el tipo de orden a aplicar a las entradas instaladas desde el menú desplegable de ordenación. La configuración predeterminada aplica un orden ascendente (A a Z) a los títulos de las entradas. Las ordenaciones del grupo \"Título descendentemente\" aplicarán un orden descendente (Z a A) al título.\nHay otros preajustes que permitirán ordenar las entradas según múltiples criterios. Piense en esto como en ordenar una tabla con múltiples columnas, y en cada categoría en una selección (entre los signos más) representa una columna o grupo.\nPor ejemplo, si la configuración es \"Habilitados (primero) + Título\", las entradas se ordenarían de forma que las entradas habilitadas quedarían en la parte superior de la lista, luego se aplica un orden ascendente (A a Z) de títulos de las entradas tanto para las entradas habilitadas como las deshabilitadas de forma separada.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Escoja el tipo de orden a aplicar a las entradas instaladas desde el menú desplegable de ordenación. La configuración predeterminada aplica un orden ascendente (A a Z) a los títulos de las entradas. Las ordenaciones del grupo \"Título descendentemente\" aplicarán un orden descendente (Z a A) al título.\nHay otros preajustes que permitirán ordenar las entradas según múltiples criterios. Piense en esto como en ordenar una tabla con múltiples columnas, y en cada categoría en una selección (entre los signos más) representa una columna o grupo.\nPor ejemplo, si la configuración es \"Habilitados (primero) + Título\", las entradas se ordenarían de forma que las entradas habilitadas quedarían en la parte superior de la lista, luego se aplica un orden ascendente (A a Z) de títulos de las entradas tanto para las entradas habilitadas como las deshabilitadas de forma separada." }, "sortStylesHelpTitle": { - "message": "Ordenar contenidos", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Ordenar contenidos" }, "styleBadRegexp": { - "message": "La expresión regular proporcionada no es válida.", - "description": "Validation message for a bad regexp in a style" + "message": "La expresión regular proporcionada no es válida." }, "styleBeautify": { - "message": "Formatear", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Formatear" + }, + "styleBeautifyHint": { + "message": "Sugerencia: Haz clic con el botón derecho en el botón «Formatear» o usa el método abreviado de teclado que se indica a continuación para dar formato al texto sin mostrar este panel" }, "styleBeautifyIndentConditional": { - "message": "Sangrar @media, @supports", - "description": "CSS-beautifier option" + "message": "Sangrar @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Conservar nuevas líneas", - "description": "CSS-beautifier option" + "message": "Conservar nuevas líneas" }, "styleCancelEditLabel": { - "message": "Volver al administrador", - "description": "Label for cancel button for style editing" + "message": "Volver al administrador" }, "styleChangesNotSaved": { - "message": "Ha realizado cambios en este estilo sin guardarlos.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Has realizado cambios en este estilo sin guardarlos." }, "styleEnabledLabel": { - "message": "Activado", - "description": "Label for the enabled state of styles" + "message": "Activado" }, "styleFromMozillaFormatError": { - "message": "No se pudo importar desde el formato Mozilla", - "description": "Label for the import error" + "message": "No se pudo importar desde el formato Mozilla" }, "styleFromMozillaFormatPrompt": { - "message": "Pegue el código de formato Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Pegue el código de formato Mozilla" }, "styleInstall": { "message": "¿Quiere instalar «$stylename$» en Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1276,7 +1172,6 @@ }, "styleInstallFailed": { "message": "¡No se pudo instalar el estilo de usuario!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1285,86 +1180,71 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' ya está instalado ¿Sobrescribirlo?\nVersión: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Introduzca un nombre", - "description": "Error displayed when user saves without providing a name" + "message": "Ingresa un nombre" }, "styleMozillaFormatHeading": { - "message": "Formato Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Formato Mozilla" + }, + "styleName": { + "message": "Nombre del estilo" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "El estilo no se aplicó debido a su uso incorrecto de 'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "El estilo no se aplicó debido a su uso incorrecto de 'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "Algunas reglas «regexp()» que no se pudieron compilar en absoluto.", - "description": "" + "message": "Algunas reglas «regexp()» que no se pudieron compilar en absoluto." }, "styleRegexpPartialExplanation": { - "message": "Este estilo utiliza expresiones regulares (regexps) con coincidencias parciales, infringiendo la especificación @document de CSS4 que requiere una coincidencia de URL completa. \nLas secciones CSS correspondientes a estas expresiones regulares no se aplicaron a la página. Este estilo fue probablemente creado con Stylish para Chrome que evalúa incorrectamente las reglas 'regexp()' desde la primera versión (fallo conocido).", - "description": "" + "message": "Este estilo utiliza expresiones regulares (regexps) con coincidencias parciales, infringiendo la especificación @document de CSS4 que requiere una coincidencia de URL completa. \nLas secciones CSS correspondientes a estas expresiones regulares no se aplicaron a la página. Este estilo fue probablemente creado con Stylish para Chrome que evalúa incorrectamente las reglas 'regexp()' desde la primera versión (fallo conocido)." }, "styleRegexpProblemTooltip": { - "message": "Número de secciones no aplicadas debido a un uso incorrecto de 'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Número de secciones no aplicadas debido a un uso incorrecto de 'regexp()'" }, "styleRegexpTestButton": { - "message": "Probar regexp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Probar regexp" }, "styleRegexpTestFull": { - "message": "Pestañas coincidentes", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Pestañas coincidentes" }, "styleRegexpTestInvalid": { - "message": "Expresiones regulares no válidas omitidas", - "description": "RegExp test report: label for the invalid expressions" + "message": "Expresiones regulares no válidas omitidas" }, "styleRegexpTestNone": { - "message": "No hay pestañas que coincidan", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "No hay pestañas que coincidan" }, "styleRegexpTestNote": { - "message": "Nota: Use una única \\ como caracter de escape en el campo de entrada de la expresión regular (regexp), que se convertirá automátiascamente a \\\\ en el código del estilo igual que por especificación para cadenas entrecomilladas en CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Nota: Use una única \\ como caracter de escape en el campo de entrada de la expresión regular (regexp), que se convertirá automátiascamente a \\\\ en el código del estilo igual que por especificación para cadenas entrecomilladas en CSS." }, "styleRegexpTestPartial": { - "message": "No coincide completamente, por lo que se omitió", - "description": "RegExp test report: label for the partially matching expressions" + "message": "No coincide completamente, por lo que se omitió" }, "styleRegexpTestTitle": { - "message": "Lista de pestañas abiertas que coinciden (haga clic en la URL para enfocar su pestaña)", - "description": "RegExp test report: title of the report" + "message": "Lista de pestañas abiertas que coinciden (haga clic en la URL para enfocar su pestaña)" }, "styleSaveLabel": { - "message": "Guardar", - "description": "Label for save button for style editing" + "message": "Guardar" }, "styleToMozillaFormatHelp": { - "message": "El formato Mozilla del código se puede enviar a userstyles.org y usarse con el Stylish para Firefox clásico.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "El formato Mozilla del código se puede enviar a userstyles.org y usarse con el Stylish para Firefox clásico." }, "styleToMozillaFormatTitle": { - "message": "Estilo en formato Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Estilo en formato Mozilla" }, "styleUpdate": { - "message": "¿Confirma que quiere actualizar «$stylename$»?", - "description": "Confirmation when updating a style", + "message": "¿Estás seguro de que quieres actualizar '$stylename$'?", "placeholders": { "stylename": { "content": "$1" @@ -1372,72 +1252,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "El estilo se ha modificado fuera del editor. ¿Desea recargar el estilo?", - "description": "Confirmation to update the style in the editor" + "message": "El estilo se ha modificado fuera del editor. ¿Desea recargar el estilo?" }, "stylusUnavailableForURL": { - "message": "Stylus no funciona en páginas como esta.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus no funciona en páginas como esta." }, "stylusUnavailableForURLdetails": { - "message": "Como medida de seguridad, el navegador impide que las extensiones afecten a sus páginas incorporadas(como chrome://version, la página de pestaña nueva a partir de Chrome 61, about:addons, etc.), así como a las páginas de otras extensiones. Cada navegador también restringe el acceso a su propia galería de extensiones (como Chrome Web Store o AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Como medida de seguridad, el navegador impide que las extensiones afecten a sus páginas incorporadas (como chrome://version, la página de pestaña nueva a partir de Chrome 61, about:addons, etc.), así como a las páginas de otras extensiones. Cada navegador también restringe el acceso a su propia galería de extensiones (como Chrome Web Store o AMO)." + }, + "syncDropboxDeprecated": { + "message": "La importación/exportación de Dropbox se reemplaza por una sincronización de estilo más avanzado en la página de opciones." + }, + "syncDropboxStyles": { + "message": "Exportar a Dropbox" + }, + "syncError": { + "message": "No se pudo sincronizar" + }, + "syncErrorRelogin": { + "message": "No se pudo sincronizar.\nIntenta volver a iniciar sesión en las opciones de Stylus:\nprimero haz clic en 'desconectar', y luego en 'conectar'." }, "syncStorageErrorSaving": { - "message": "El valor no se puede guardar. Trate de reducir la longitud del texto.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "El valor no se puede guardar. Trate de reducir la longitud del texto." }, "toggleStyle": { - "message": "Activar/Desactivar estilo", - "description": "Label for the checkbox to enable/disable a style" + "message": "Activar/Desactivar estilo" }, "undo": { - "message": "Deshacer", - "description": "Button label" + "message": "Deshacer" }, "undoGlobal": { - "message": "Deshacer en todas las secciones", - "description": "CSS-beautify global Undo button label" + "message": "Deshacer en todas las secciones" }, "unreachableAMO": { - "message": "Firefox prohibe el acceso al sitio", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox prohibe el acceso al sitio" }, "unreachableAMOHint": { - "message": "Para permitir el acceso abra , haga clic secundario en la lista, pulse 'Nuevo', luego 'Booleano', pegue y pulse Aceptar, , Aceptar, y recargue la página .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "En Firefox 60 y versiones posteriores también deberá eliminar el dominio AMO de en .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Sólo Firefox 59 y posteriores se pueden configurar para permitir que WebExtensions añada elementos de estilo en sitios protegidos-por-CSP (política de seguridad de contenidos) como este.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Para permitir el acceso abra , haga clic secundario en la lista, pulse 'Nuevo', luego 'Booleano', pegue y pulse Aceptar, , Aceptar, y recargue la página ." }, "unreachableContentScript": { - "message": "No se pudo comunicar con la página. Pruebe a recargar la pestaña.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "No se pudo comunicar con la página. Prueba recargando la pestaña." }, "unreachableFileHint": { - "message": "Stylus puede acceder a las URLs file:// sólo si activa la casilla correspondiente para la extensión Stylus en la página chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus puede acceder a las URLs file:// sólo si activa la casilla correspondiente para la extensión Stylus en la página chrome://extensions." }, - "InaccessibleFileHint": { - "message": "Stylus no puede acceder a algunos tipos de archivos (p. ej. archivos pdf y json).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "En Firefox 60 y versiones posteriores, quita este dominio de en ." + }, + "unreachableMozSiteHintOldFF": { + "message": "Se necesita Firefox 59 y versiones posteriores para que las extensiones del tipo WebExtensions agreguen elementos de estilo en sitios protegidos mediante CSP como este." + }, + "unzipStyles": { + "message": "Descomprimiendo los estilos..." }, "updateAllCheckSucceededNoUpdate": { - "message": "No se encontraron actualizaciones.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "No se encontraron actualizaciones." }, "updateAllCheckSucceededSomeEdited": { - "message": "No se buscaron actualizaciones de algunos estilos actualizables para evitar la pérdida de posibles ediciones locales. Se puede forzar la búsqueda de actualizaciones mediante comprobación individual, o ejecutando otra búsqueda para todos los estilos (las ediciones locales se sobrescribirán).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "No se buscaron actualizaciones de algunos estilos actualizables para evitar la pérdida de posibles ediciones locales. Se puede forzar la búsqueda de actualizaciones mediante comprobación individual, o ejecutando otra búsqueda para todos los estilos (las ediciones locales se sobrescribirán)." }, "updateCheckFailBadResponseCode": { "message": "Error de actualización: el servidor ha respondido con el código $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1445,123 +1320,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Error de actualización: no se pudo contactar con el servidor.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Error de actualización: no se pudo contactar con el servidor." }, "updateCheckHistory": { - "message": "Historial de búsqueda de actualizaciones", - "description": "" + "message": "Historial de búsqueda de actualizaciones" }, "updateCheckManualUpdateForce": { - "message": "Instalar actualización (se sobrescribirán las ediciones locales)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Instalar actualización (se sobrescribirán las ediciones locales)" }, "updateCheckManualUpdateHint": { - "message": "Forzar una actualización sobrescribirá cualquier edición local.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Forzar una actualización sobrescribirá cualquier edición local." }, "updateCheckSkippedLocallyEdited": { - "message": "Este estilo se editó localmente.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Este estilo se editó localmente." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Este estilo podría haber sido editado localmente.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Este estilo podría haber sido editado localmente." }, "updateCheckSucceededNoUpdate": { - "message": "El estilo está actualizado.", - "description": "Text that displays when an update check completed and no update is available" + "message": "El estilo está actualizado." }, "updateCompleted": { - "message": "Actualización completada.", - "description": "Text that displays when an update completed" + "message": "Actualización completada." }, "updatesCurrentlyInstalled": { - "message": "Actualizaciones instaladas:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Por favor, cambie el valor de @name o @namespace para no sobrescribir un estilo existente.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "El estilo se actualizó o borró después de que se mostrara el cuadro de diálogo de configuración. Estas variables no se guardaron para evitar corromper los metadatos del estilo:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Especifique @name en el código", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "¿Reemplazar con el código actual la plantilla predeterminada para nuevos estilos Usercss?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "@name vacío reemplaza la plantilla predeterminada", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Inserte el código aquí...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "La versión es más antigua que el estilo instalado.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Escribir estilo para:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "este URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Exportar a Dropbox", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Importar desde Dropbox", - "description": "" - }, - "overwriteFileExport": { - "message": "¿Desea sobrescribir un archivo existente?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Archivo guardado correctamente", - "description": "" - }, - "noFileToImport": { - "message": "Para importar sus estilos, debe exportarlos primero.", - "description": "" - }, - "connectingDropbox": { - "message": "Conectando a Dropbox....", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "La conexión a Dropbox sólo está disponible en aplicaciones instaladas directamente desde la tienda web.", - "description": "" - }, - "gettingStyles": { - "message": "Obteniendo todos los estilos...", - "description": "" - }, - "zipStyles": { - "message": "Comprimiendo los estilos...", - "description": "" - }, - "unzipStyles": { - "message": "Descomprimiendo los estilos...", - "description": "" - }, - "readingStyles": { - "message": "Leyendo los estilos...", - "description": "" + "message": "Actualizaciones instaladas:" }, "uploadingFile": { - "message": "Subiendo el archivo....", - "description": "" + "message": "Subiendo el archivo...." + }, + "usercssAvoidOverwriting": { + "message": "Por favor, cambia el valor de @name o @namespace para no sobrescribir un estilo existente." + }, + "usercssConfigIncomplete": { + "message": "El estilo se actualizó o borró después de que se mostrara el cuadro de diálogo de configuración. Estas variables no se guardaron para evitar corromper los metadatos del estilo:" + }, + "usercssEditorNamePlaceholder": { + "message": "Especifique @name en el código" + }, + "usercssReplaceTemplateConfirmation": { + "message": "¿Reemplazar con el código actual la plantilla predeterminada para nuevos estilos UserCSS?" + }, + "usercssReplaceTemplateName": { + "message": "@name vacío reemplaza la plantilla predeterminada" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Inserte el código aquí..." + }, + "versionInvalidOlder": { + "message": "La versión es más antigua que el estilo instalado." + }, + "writeStyleFor": { + "message": "Escribir estilo para:" + }, + "writeStyleForURL": { + "message": "este URL" + }, + "zipStyles": { + "message": "Comprimiendo los estilos..." } } diff --git a/_locales/et/messages.json b/_locales/et/messages.json index 57066641..b7057d53 100644 --- a/_locales/et/messages.json +++ b/_locales/et/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus ei saa osadele failitüüpidele ligi pääseda (nt. pdf & json failid)." + }, "addStyleLabel": { - "message": "Kirjuta uus stiil", - "description": "Label for the button to go to the add style page" + "message": "Kirjuta uus stiil" }, "addStyleTitle": { - "message": "Lisa stiil", - "description": "Title of the page for adding styles" + "message": "Lisa stiil" }, "alphaChannel": { - "message": "Läbipaistmatus", - "description": "Label of color's opacity" + "message": "Läbipaistmatus" }, "appliesAdd": { - "message": "Lisa", - "description": "Label for the button to add an 'applies' entry" + "message": "Lisa" }, "appliesDisplay": { "message": "Rakendub saitidele: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,288 +23,223 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "ja veel", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "ja veel" }, "appliesDomainOption": { - "message": "URLid domeenis", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLid domeenis" }, "appliesHelp": { - "message": "Kasuta \"rakendub\" valikuid, et piirata, mis URLidele selles jaotises olev kood rakendub.", - "description": "Help text for 'applies to' section" + "message": "Kasuta \"rakendub\" valikuid, et piirata, mis URLidele selles jaotises olev kood rakendub." }, "appliesLabel": { - "message": "Rakendub saitidele", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Rakendub saitidele" }, "appliesLineWidgetLabel": { - "message": "Näita 'Rakendub' teavet", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Näita 'Rakendub' teavet" }, "appliesLineWidgetWarning": { - "message": "Ei tööta minimeeritud CSS-iga", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Ei tööta minimeeritud CSS-iga" }, "appliesRegexpOption": { - "message": "Regulaaravaldisele vastavad URLid", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Regulaaravaldisele vastavad URLid" }, "appliesRemove": { - "message": "Eemalda", - "description": "Label for the button to remove an 'applies' entry" + "message": "Eemalda" }, "appliesRemoveError": { - "message": "Viimast 'rakendub'-sisestust ei saa eemaldada", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Viimast 'rakendub'-sisestust ei saa eemaldada" }, "appliesSpecify": { - "message": "Täpsusta", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Täpsusta" }, "appliesToEverything": { - "message": "Kõik", - "description": "Text displayed for styles that apply to all sites" + "message": "Kõik" }, "appliesUrlPrefixOption": { - "message": "URLid algusega", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLid algusega" }, "applyAllUpdates": { - "message": "Rakenda kõik uuendused", - "description": "Label for the button to apply all detected updates" + "message": "Rakenda kõik uuendused" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Varunda", - "description": "Heading for backup" + "message": "Varunda" }, "backupMessage": { - "message": "Vali fail või lohista see siia lehele.", - "description": "Message for backup" + "message": "Vali fail või lohista see siia lehele." }, "bckpInstStyles": { - "message": "Ekspordi stiilid", - "description": "" + "message": "Ekspordi stiilid" }, "checkAllUpdates": { - "message": "Kontrolli kõikide stiilide uuendusi", - "description": "Label for the button to check all styles for updates" + "message": "Kontrolli kõikide stiilide uuendusi" }, "checkAllUpdatesForce": { - "message": "Kontrolli uuesti, ma ei muutnud ühtegi stiili!", - "description": "Label for the button to apply all detected updates" + "message": "Kontrolli uuesti, ma ei muutnud ühtegi stiili!" }, "checkForUpdate": { - "message": "Kontrolli uuendusi", - "description": "Label for the button to check a single style for an update" + "message": "Kontrolli uuendusi" }, "checkingForUpdate": { - "message": "Kontrollin...", - "description": "Text to display when checking a style for an update" + "message": "Kontrollin..." }, "clickToUninstall": { - "message": "Eemaldamiseks klõpsa", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Eemaldamiseks klõpsa" }, "cm_autoCloseBrackets": { - "message": "Automaatselt sulge sulud ja jutumärgid", - "description": "Label for the checkbox in the style editor." + "message": "Automaatselt sulge sulud ja jutumärgid" }, "cm_autoCloseBracketsTooltip": { - "message": "Automaatselt lisab sulgeva paarilise, kui kirjutad avava ühest järgnevast: ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Automaatselt lisab sulgeva paarilise, kui kirjutad avava ühest järgnevast: ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Automaattäide kirjutamisel", - "description": "Label for the checkbox in the style editor." + "message": "Automaattäide kirjutamisel" }, "cm_colorpicker": { - "message": "CSS-värvide värvivalijad", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "CSS-värvide värvivalijad" }, "cm_indentWithTabs": { - "message": "Kasuta tabeldusmärke targa taandega", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Kasuta tabeldusmärke targa taandega" }, "cm_keyMap": { - "message": "Klahvimäärangud", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Klahvimäärangud" }, "cm_lineWrapping": { - "message": "Reamurdmine", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Reamurdmine" }, "cm_matchHighlight": { - "message": "Tõsta esile", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Tõsta esile" }, "cm_matchHighlightSelection": { - "message": "Ainult valik", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Ainult valik" }, "cm_matchHighlightToken": { - "message": "Kursori all olev sõne", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Kursori all olev sõne" }, "cm_resizeGripHint": { - "message": "Topeltklõpsa, et maksimeerida/taastada kõrgus", - "description": "Tooltip for the resize grip in style editor" + "message": "Topeltklõpsa, et maksimeerida/taastada kõrgus" }, "cm_selectByTokens": { - "message": "Topeltklõps valib sõnesid", - "description": "Label for the checkbox in the editor." + "message": "Topeltklõps valib sõnesid" }, "cm_selectByTokensTooltip": { - "message": "Sõnede näited: .foo-bar-2 #aabbcc 0.32 !important\nKeelamisel valitakse punktidega eraldatud sõnad.", - "description": "" + "message": "Sõnede näited: .foo-bar-2 #aabbcc 0.32 !important\nKeelamisel valitakse punktidega eraldatud sõnad." }, "cm_smartIndent": { - "message": "Kasuta tarka taanet", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Kasuta tarka taanet" }, "cm_tabSize": { - "message": "Tabeldussuurus", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tabeldussuurus" }, "cm_theme": { - "message": "Teema", - "description": "Label for the style editor's CSS theme." + "message": "Teema" }, "colorpickerSwitchFormatTooltip": { - "message": "Vaheta formaate: HEX -> RGB -> HSL.\nShift-klõps vastupidise suuna jaoks.\nSamuti klahvidega PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Vaheta formaate: HEX -> RGB -> HSL.\nShift-klõps vastupidise suuna jaoks.\nSamuti klahvidega PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Ava värvivalija", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Ava värvivalija" }, "configOnChange": { - "message": "muutmisel", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "muutmisel" }, "configOnChangeTooltip": { - "message": "Automaatselt salvesta ja rakenda muudatused", - "description": "" + "message": "Automaatselt salvesta ja rakenda muudatused" }, "configureStyle": { - "message": "Seadista", - "description": "Label for the button to configure usercss userstyle" + "message": "Seadista" }, "configureStyleOnHomepage": { - "message": "Seadista kodulehel", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Seadista kodulehel" }, "confirmCancel": { - "message": "Tühista", - "description": "" + "message": "Tühista" }, "confirmClose": { - "message": "Sulge", - "description": "'Close' button in a confirm dialog" + "message": "Sulge" }, "confirmDefault": { - "message": "Kasuta vaikesätet", - "description": "'Set to default' button in a confirm dialog" + "message": "Kasuta vaikesätet" }, "confirmDelete": { - "message": "Kustuta", - "description": "" + "message": "Kustuta" }, "confirmDiscardChanges": { - "message": "Tühistada muudatused?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Tühistada muudatused?" }, "confirmNo": { - "message": "Ei", - "description": "'No' button in a confirm dialog" + "message": "Ei" }, "confirmSave": { - "message": "Salvesta", - "description": "'Save' button in a confirm dialog" + "message": "Salvesta" }, "confirmStop": { - "message": "Peata", - "description": "'Stop' button in a confirm dialog" + "message": "Peata" }, "confirmYes": { - "message": "Jah", - "description": "'Yes' button in a confirm dialog" + "message": "Jah" + }, + "connectingDropbox": { + "message": "Dropboxiga ühendumine..." + }, + "connectingDropboxNotAllowed": { + "message": "Dropboxiga ühendumine on saadaval ainult veebipoe kaudu installitud rakendustes" }, "copied": { - "message": "Kopeeritud lõikelauale", - "description": "Message shown when content has been copied to the clipboard" + "message": "Kopeeritud lõikelauale" }, "copy": { - "message": "Kopeeri lõikelauale", - "description": "Tooltip for elements which can be copied" + "message": "Kopeeri lõikelauale" }, "dateInstalled": { - "message": "Paigaldamise kuupäev", - "description": "Option text for the user to sort the style by install date" + "message": "Paigaldamise kuupäev" }, "dateUpdated": { - "message": "Uuendamise kuupäev", - "description": "Option text for the user to sort the style by last update date" + "message": "Uuendamise kuupäev" }, "dbError": { - "message": "Stylus'i andmebaasi uuendamisel esines viga. Kas soovid külastada võimalike lahendustega veebilehte?", - "description": "Prompt when a DB error is encountered" + "message": "Stylus'i andmebaasi uuendamisel esines viga. Kas soovid külastada võimalike lahendustega veebilehte?" }, "defaultTheme": { - "message": "vaikimisi", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "vaikimisi" }, "deleteStyleConfirm": { - "message": "Kas soovid kindlasti selle stiili kustutada?", - "description": "Confirmation before deleting a style" + "message": "Kas soovid kindlasti selle stiili kustutada?" }, "deleteStyleLabel": { - "message": "Kustuta", - "description": "Label for the button to delete a style" + "message": "Kustuta" }, "description": { - "message": "Disaini veeb ümber kasutajastiilide halduri Stylus'iga. Stylus võimaldab sul lihtsalt paigaldada teemasid ja välimusi mitmetele populaarsetele saitidele.", - "description": "Extension description" + "message": "Disaini veeb ümber kasutajastiilide halduri Stylus'iga. Stylus võimaldab sul lihtsalt paigaldada teemasid ja välimusi mitmetele populaarsetele saitidele." }, "disableAllStyles": { - "message": "Lülita kõik stiilid välja", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Lülita kõik stiilid välja" }, "disableStyleLabel": { - "message": "Keela", - "description": "Label for the button to disable a style" + "message": "Keela" }, "dragDropMessage": { - "message": "Lohista importimiseks oma varundusfail kuskile siia lehele.", - "description": "Drag'n'drop message" + "message": "Lohista importimiseks oma varundusfail kuskile siia lehele." }, "dragDropUsercssTabstrip": { - "message": "Faili installimiseks lohista see kaartide ribale (ala, kus näidatakse kaartide pealkirju).", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Faili installimiseks lohista see kaartide ribale (ala, kus näidatakse kaartide pealkirju)." }, "editDeleteText": { - "message": "Kustuta", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Kustuta" }, "editGotoLine": { - "message": "Mine reale (või rida:tulp)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Mine reale (või rida:tulp)" }, "editStyleHeading": { - "message": "Muuda stiili", - "description": "Title of the page for editing styles" + "message": "Muuda stiili" }, "editStyleLabel": { - "message": "Muuda", - "description": "Label for the button to go to the edit style page" + "message": "Muuda" }, "editStyleTitle": { "message": "Muuda stiili $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -314,220 +247,174 @@ } }, "enableStyleLabel": { - "message": "Luba", - "description": "Label for the button to enable a style" + "message": "Luba" }, "excludeStyleByDomainLabel": { - "message": "Välista praegune domeen", - "description": "" + "message": "Välista praegune domeen" }, "excludeStyleByUrlLabel": { - "message": "Välista praegune URL", - "description": "" + "message": "Välista praegune URL" }, "exportLabel": { - "message": "Ekspordi", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Ekspordi" + }, + "exportSavedSuccess": { + "message": "Fail edukalt salvestatud" }, "externalFeedback": { - "message": "Tagasiside", - "description": "Label for the external link to send feedback for the style" + "message": "Tagasiside" }, "externalHomepage": { - "message": "Koduleht", - "description": "Label for the external link to style's homepage" + "message": "Koduleht" }, "externalLink": { - "message": "Väline link", - "description": "Label for external links" + "message": "Väline link" }, "externalSupport": { - "message": "Kasutajatugi", - "description": "Label for the external link to style's support site" + "message": "Kasutajatugi" }, "externalUsercssDocument": { - "message": "Usercss dokumentatsioon", - "description": "Label for the external link to usercss documentation" + "message": "Usercss dokumentatsioon" }, "filteredStyles": { "message": "$numShown$/$numTotal$ kuvatud", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Hetkel rakendatud filtritele ei vasta ükski stiil", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Hetkel rakendatud filtritele ei vasta ükski stiil" }, "findStyles": { - "message": "Leia stiile", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Leia stiile" }, "findStylesForSite": { - "message": "Leia sellele saidile veel stiile", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Leia sellele saidile veel stiile" }, "findStylesInline": { - "message": "Aknasisene", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Aknasisene" }, "findStylesInlineTooltip": { - "message": "Näita otsingu tulemusi selles aknas.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Näita otsingu tulemusi selles aknas." }, "genericAdd": { - "message": "Lisa", - "description": "Used in various places for an action that adds something" + "message": "Lisa" }, "genericClone": { - "message": "Klooni", - "description": "Used in various places for an action that clones something" + "message": "Klooni" }, "genericDisabledLabel": { - "message": "Keelatud", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Keelatud" }, "genericEnabledLabel": { - "message": "Lubatud", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Lubatud" }, "genericError": { - "message": "Viga", - "description": "Used in various places to indicate some error occurred." + "message": "Viga" }, "genericHistoryLabel": { - "message": "Ajalugu", - "description": "Used in various places to show a history log of something" + "message": "Ajalugu" }, "genericNext": { - "message": "Järgmine", - "description": "Used in various places to select/perform the next step/action" + "message": "Järgmine" }, "genericPrevious": { - "message": "Eelmine", - "description": "Used in various places to select/perform the previous step/action" + "message": "Eelmine" }, "genericResetLabel": { - "message": "Lähtesta", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Lähtesta" }, "genericSavedMessage": { - "message": "Salvestatud", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Salvestatud" }, "genericTitle": { - "message": "Pealkiri", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Pealkiri" }, "genericUnknown": { - "message": "Tundmatu", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Tundmatu" + }, + "gettingStyles": { + "message": "Kõigi stiilide hankimine..." }, "helpAlt": { - "message": "Abi", - "description": "Alternate text for help buttons" + "message": "Abi" }, "helpKeyMapCommand": { - "message": "Kirjuta käsu nimi", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Kirjuta käsu nimi" }, "helpKeyMapHotkey": { - "message": "Vajuta kiirklahvi", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Vajuta kiirklahvi" }, "hostDisabled": { - "message": "See host on keelatud hetkel kasutatavas brauseri praeguses versioonis oleva vea tõttu", - "description": "Tooltip for cloud host disabled" + "message": "See host on keelatud hetkel kasutatavas brauseri praeguses versioonis oleva vea tõttu" }, "importAppendLabel": { - "message": "Lisa stiilile", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Lisa stiilile" }, "importAppendTooltip": { - "message": "Lisa imporditud stiil praegusele stiilile", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Lisa imporditud stiil praegusele stiilile" }, "importLabel": { - "message": "Impordi", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Impordi" }, "importReplaceLabel": { - "message": "Kirjuta stiil üle", - "description": "Label for the button to import and overwrite current style" + "message": "Kirjuta stiil üle" }, "importReplaceTooltip": { - "message": "Tühista praeguse stiili sisu ja kirjuta see üle imporditud stiiliga", - "description": "Label for the button to import and overwrite current style" + "message": "Tühista praeguse stiili sisu ja kirjuta see üle imporditud stiiliga" }, "importReportLegendAdded": { - "message": "lisatud", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "lisatud" }, "importReportLegendIdentical": { - "message": "identset vahele jäetud", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identset vahele jäetud" }, "importReportLegendInvalid": { - "message": "sobimatut vahele jäetud", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "sobimatut vahele jäetud" }, "importReportLegendUpdatedBoth": { - "message": "said uuenduse nii metaandmetele kui koodile", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "said uuenduse nii metaandmetele kui koodile" }, "importReportLegendUpdatedCode": { - "message": "uuendatud kood", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "uuendatud kood" }, "importReportLegendUpdatedMeta": { - "message": "metainfo uuendatud", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "metainfo uuendatud" }, "importReportTitle": { - "message": "Stiilide importimine lõpetatud", - "description": "Title of the report shown after importing styles" + "message": "Stiilide importimine lõpetatud" }, "importReportUnchanged": { - "message": "Midagi ei muudetud.", - "description": "Message in the report shown after importing styles" + "message": "Midagi ei muudetud." }, "importReportUndone": { - "message": "stiili võeti tagasi", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "stiili võeti tagasi" }, "importReportUndoneTitle": { - "message": "Importimine on tagasi võetud", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importimine on tagasi võetud" }, "installButton": { - "message": "Paigalda stiil", - "description": "Label for install button" + "message": "Paigalda stiil" }, "installButtonInstalled": { - "message": "Stiil paigaldatud", - "description": "Text displayed when the style is successfully installed" + "message": "Stiil paigaldatud" }, "installButtonReinstall": { - "message": "Paigalda stiil uuesti", - "description": "Label for reinstall button" + "message": "Paigalda stiil uuesti" }, "installButtonUpdate": { - "message": "Uuenda stiil", - "description": "Label for update button" + "message": "Uuenda stiil" }, "installUpdate": { - "message": "Paigalda uuendus", - "description": "Label for the button to install an update for a single style" + "message": "Paigalda uuendus" }, "installUpdateFrom": { "message": "Praegu uuendatakse stiili aadressilt $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -535,32 +422,25 @@ } }, "installUpdateFromLabel": { - "message": "Kontrolli uuendusi", - "description": "Label for the checkbox to save current URL for update check" + "message": "Kontrolli uuendusi" }, "license": { - "message": "Litsents", - "description": "Label for the license" + "message": "Litsents" }, "linkGetHelp": { - "message": "Hangi abi", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Hangi abi" }, "linkGetStyles": { - "message": "Hangi stiile", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Hangi stiile" }, "linkStylusWiki": { - "message": "Viki", - "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" + "message": "Viki" }, "linkTranslate": { - "message": "Tõlgi", - "description": "Transifex link text on the manage page" + "message": "Tõlgi" }, "linterCSSLintIncompatible": { "message": "CSSLint ei toeta eeltöötlejat $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -568,12 +448,10 @@ } }, "linterCSSLintSettings": { - "message": "(Määra reegel kui: 0 = keelatud; 1 = hoiatus; 2 = viga)", - "description": "CSSLint rule config values" + "message": "(Määra reegel kui: 0 = keelatud; 1 = hoiatus; 2 = viga)" }, "linterConfigPopupTitle": { "message": "Linteri $linter$ reeglite seadistuse määramine", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -581,20 +459,16 @@ } }, "linterConfigTooltip": { - "message": "Selle linteri seadistamiseks klõpsa", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Selle linteri seadistamiseks klõpsa" }, "linterInvalidConfigError": { - "message": "Ei salvestatud nende vigaste seadistuste tõttu:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Ei salvestatud nende vigaste seadistuste tõttu:" }, "linterIssues": { - "message": "Vead", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Vead" }, "linterIssuesHelp": { "message": "$link$ leidis need vead:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -602,100 +476,76 @@ } }, "linterJSONError": { - "message": "Vigane JSON-formaat", - "description": "Setting linter config with invalid JSON" + "message": "Vigane JSON-formaat" }, "linterResetMessage": { - "message": "Kogemata tehtud lähtestamiste tagasi võtmiseks vajuta tekstikastis Ctrl-Z (või Cmd-Z)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Kogemata tehtud lähtestamiste tagasi võtmiseks vajuta tekstikastis Ctrl-Z (või Cmd-Z)" }, "linterRulesLink": { - "message": "Vaata reeglite täielikku loendit", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Vaata reeglite täielikku loendit" }, "liveReloadError": { - "message": "Faili vaatamisel esines viga", - "description": "The label of live-reload error" + "message": "Faili vaatamisel esines viga" }, "liveReloadLabel": { - "message": "Reaalajas uuestilaadimine", - "description": "The label of live-reload feature" + "message": "Reaalajas uuestilaadimine" }, "manageFavicons": { - "message": "Lehe ikoonid rakendub-tulbas", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Lehe ikoonid rakendub-tulbas" }, "manageFaviconsGray": { - "message": "Tee halliks", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Tee halliks" }, "manageFaviconsHelp": { - "message": "Stylus kasutab välist teenust https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus kasutab välist teenust https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtrid", - "description": "Label for filters container" + "message": "Filtrid" }, "manageHeading": { - "message": "Paigaldatud stiilid", - "description": "Heading for the manage page" + "message": "Paigaldatud stiilid" }, "manageMaxTargets": { - "message": "Rakendub-üksuste arv", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Rakendub-üksuste arv" }, "manageNewStyleAsUsercss": { - "message": "Usercss-ina", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "Usercss-ina" }, "manageNewUI": { - "message": "Uus haldusliidese välimus", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Uus haldusliidese välimus" }, "manageOnlyDisabled": { - "message": "Ainult keelatud stiilid", - "description": "Checkbox to show only disabled styles" + "message": "Ainult keelatud stiilid" }, "manageOnlyEnabled": { - "message": "Ainult lubatud stiilid", - "description": "Checkbox to show only enabled styles" + "message": "Ainult lubatud stiilid" }, "manageOnlyExternal": { - "message": "Ainult välised stiilid", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Ainult välised stiilid" }, "manageOnlyLocal": { - "message": "Ainult kohalikult loodud stiilid", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Ainult kohalikult loodud stiilid" }, "manageOnlyLocalTooltip": { - "message": "(stiilid, mida ei paigaldatud lehelt userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(stiilid, mida ei paigaldatud lehelt userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Ainult mitte-Usercss stiilid", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Ainult mitte-Usercss stiilid" }, "manageOnlyUpdates": { - "message": "Ainult uuenduste või vigadega", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Ainult uuenduste või vigadega" }, "manageOnlyUsercss": { - "message": "Ainult Usercss stiilid", - "description": "Checkbox to show only Usercss styles" + "message": "Ainult Usercss stiilid" }, "menuShowBadge": { - "message": "Kuva aktiivsete stiilide hulka", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Kuva aktiivsete stiilide hulka" }, "meta_invalidCheckboxDefault": { - "message": "Vigane @var märkeruut: väärtus peab olema 0 või 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Vigane @var märkeruut: väärtus peab olema 0 või 1" }, "meta_invalidColor": { "message": "Vigane @var värv: $color$ pole värv", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" @@ -704,34 +554,6 @@ }, "meta_invalidRange": { "message": "Vigane @var $type$: väärtus peab olema arv või massiiv", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Vigane @var $type$: määratletud on mitu ühikut", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Vigane @var $type$: massiiv sisaldab liiga palju elemente", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Vigane @var $type$: vaikimisi väärtus on miinimumist madalam", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -740,7 +562,30 @@ }, "meta_invalidRangeMax": { "message": "Vigane @var $type$: vaikimisi väärtus on maksimumist suurem", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Vigane @var $type$: vaikimisi väärtus on miinimumist madalam", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Vigane @var $type$: määratletud on mitu ühikut", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Vigane @var $type$: massiiv sisaldab liiga palju elemente", "placeholders": { "type": { "content": "$1" @@ -749,7 +594,6 @@ }, "meta_invalidRangeUnits": { "message": "Vigane @var $type$: '$units$' pole lubatud ühik", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -761,7 +605,6 @@ }, "meta_invalidURLProtocol": { "message": "Vigane URL protokoll. Lubatud on ainult http ja https: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -770,7 +613,6 @@ }, "meta_missingMandatory": { "message": "Kohustuslikud metaandmed puudu: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -779,16 +621,22 @@ }, "meta_unknownMeta": { "message": "Tundmatud metaandmed: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownPreprocessor": { + "message": "Tundmatu @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Tundmatu @$varkey$ tüüp: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -798,390 +646,293 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Tundmatu @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Oma stiilide importimiseks peaksid esmalt selle eksportima." }, "noStylesForSite": { - "message": "Sellele saidile pole stiile paigaldatud.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Sellele saidile pole stiile paigaldatud." }, "openManage": { - "message": "Halda", - "description": "Link to open the manage page." + "message": "Halda" }, "openOptions": { - "message": "Valikud", - "description": "Go to Options UI" + "message": "Valikud" }, "openStylesManager": { - "message": "Ava stiilihaldur", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Ava stiilihaldur" }, "optionsActions": { - "message": "Tegevused", - "description": "" + "message": "Tegevused" }, "optionsAdvanced": { - "message": "Täpsem", - "description": "" + "message": "Täpsem" }, "optionsAdvancedContextDelete": { - "message": "Lisa \"Kustuta\" redaktori kontekstmenüüsse", - "description": "" + "message": "Lisa \"Kustuta\" redaktori kontekstmenüüsse" }, "optionsAdvancedExposeIframes": { - "message": "Paljasta iframe-id HTML[stylus-iframe] kaudu", - "description": "" + "message": "Paljasta iframe-id HTML[stylus-iframe] kaudu" }, "optionsAdvancedExposeIframesNote": { - "message": "Paljastab tipp-domeeni igas iframe'is.\nVõimaldab iframe'i-põhise CSS-koodi kirjutamise näiteks selliselt:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Paljastab tipp-domeeni igas iframe'is.\nVõimaldab iframe'i-põhise CSS-koodi kirjutamise näiteks selliselt:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Kirjuta uus stiil usercss-ina", - "description": "" + "message": "Kirjuta uus stiil usercss-ina" }, "optionsBadgeDisabled": { - "message": "Taustavärv keelatud olekus", - "description": "" + "message": "Taustavärv keelatud olekus" }, "optionsBadgeNormal": { - "message": "Taustavärv", - "description": "" + "message": "Taustavärv" }, "optionsCheck": { - "message": "Uuenda stiile", - "description": "" + "message": "Uuenda stiile" }, "optionsCheckUpdate": { - "message": "Kontrolli ja paigalda kõik saadaolevad uuendused", - "description": "" + "message": "Kontrolli ja paigalda kõik saadaolevad uuendused" }, "optionsCustomizeBadge": { - "message": "Number tööriistaribaikoonil", - "description": "" + "message": "Number tööriistaribaikoonil" }, "optionsCustomizeIcon": { - "message": "Tööriistaribaikoon", - "description": "" + "message": "Tööriistaribaikoon" }, "optionsCustomizePopup": { - "message": "Hüpikaken", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Uuendused", - "description": "" + "message": "Hüpikaken" }, "optionsCustomizeSync": { - "message": "Sünkrooni pilve", - "description": "" + "message": "Sünkrooni pilve" + }, + "optionsCustomizeUpdate": { + "message": "Uuendused" }, "optionsHeading": { - "message": "Valikud", - "description": "Heading for options section on manage page." + "message": "Valikud" }, "optionsIconDark": { - "message": "Tumedad brauseriteemad", - "description": "" + "message": "Tumedad brauseriteemad" }, "optionsIconLight": { - "message": "Heledad brauseriteemad", - "description": "" + "message": "Heledad brauseriteemad" }, "optionsOpen": { - "message": "Ava", - "description": "" + "message": "Ava" }, "optionsOpenManager": { - "message": "Halda stiile", - "description": "" + "message": "Halda stiile" }, "optionsPopupWidth": { - "message": "Hüpikakna laius (pikslites)", - "description": "" + "message": "Hüpikakna laius (pikslites)" }, "optionsReset": { - "message": "Lähtesta valikud vaikeväärtustele", - "description": "" + "message": "Lähtesta valikud vaikeväärtustele" }, "optionsResetButton": { - "message": "Lähtesta valikud", - "description": "" + "message": "Lähtesta valikud" }, "optionsSubheading": { - "message": "Rohkem valikuid", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Kui impordid stiilide varundusi vanast versioonist või Stylish'ist, tee ühekordne käsitsi uuenduste kontroll stiilide halduris, et veenduda kõikide stiilide ajakohasuses.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Kasutajastiilide automaatse uuendamise ajavahe (keelamiseks pane 0)", - "description": "" + "message": "Rohkem valikuid" }, "optionsSyncNone": { - "message": "Pole", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Sünkrooni kohe", - "description": "" - }, - "optionsSyncStatusSyncing": { - "message": "Sünkroonimine...", - "description": "" - }, - "optionsSyncStatusConnecting": { - "message": "Ühendumine...", - "description": "" + "message": "Pole" }, "optionsSyncStatusConnected": { - "message": "Ühendatud", - "description": "" + "message": "Ühendatud" }, - "optionsSyncStatusDisconnecting": { - "message": "Lahtiühendamine...", - "description": "" + "optionsSyncStatusConnecting": { + "message": "Ühendumine..." }, "optionsSyncStatusDisconnected": { - "message": "Lahti ühendatud", - "description": "" + "message": "Lahti ühendatud" + }, + "optionsSyncStatusDisconnecting": { + "message": "Lahtiühendamine..." + }, + "optionsSyncStatusSyncing": { + "message": "Sünkroonimine..." + }, + "optionsSyncSyncNow": { + "message": "Sünkrooni kohe" + }, + "optionsUpdateImportNote": { + "message": "Kui impordid stiilide varundusi vanast versioonist või Stylish'ist, tee ühekordne käsitsi uuenduste kontroll stiilide halduris, et veenduda kõikide stiilide ajakohasuses." + }, + "optionsUpdateInterval": { + "message": "Kasutajastiilide automaatse uuendamise ajavahe (keelamiseks pane 0)" + }, + "overwriteFileExport": { + "message": "Kas tahad olemasoleva faili üle kirjutada?" }, "paginationCurrent": { - "message": "Praegune leht", - "description": "Tooltip for the current page index in search results" + "message": "Praegune leht" }, "paginationEstimated": { - "message": "Hinnanguline lehtede arv", - "description": "Tooltip for the total page count in search results" + "message": "Hinnanguline lehtede arv" }, "paginationNext": { - "message": "Järgmine leht", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Järgmine leht" }, "paginationPrevious": { - "message": "Eelmine leht", - "description": "Tooltip for the '<-' button in search results" + "message": "Eelmine leht" }, "paginationTotal": { - "message": "Lehti kokku", - "description": "" + "message": "Lehti kokku" }, "parseUsercssError": { - "message": "Stylus ei suutnud usercss-i analüüsida:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus ei suutnud usercss-i analüüsida:" }, "popupBorders": { - "message": "Lisa äärtesse valged piirjooned", - "description": "" + "message": "Lisa äärtesse valged piirjooned" }, "popupBordersTooltip": { - "message": "Kasulik tumedate teemade puhul Chrome'is, kuna see ei joonista enam külje piirjooni", - "description": "" + "message": "Kasulik tumedate teemade puhul Chrome'is, kuna see ei joonista enam külje piirjooni" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, ka numbriklahvidel - lülitab N. stiili (0 on 10)\n- lülitab esimest stiili, mille nimi algab selle tähega\n avab redaktori lülitamise asemel\n lubab nimekirjas olevad stiilid\n keelab nimekirjas olevad stiilid\n ja <`> (graavis) - lülitab esialgu lubatud stiilid; ei rakendu järgnevalt lubatud stiilidele hüpiku avatud olekus, seega saad taastada esialgse valiku peale asjade testimist: lihtsalt keela kõik ning lülita, seega \nRohkem teavet vikis", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, ka numbriklahvidel - lülitab N. stiili (0 on 10)\n- lülitab esimest stiili, mille nimi algab selle tähega\n avab redaktori lülitamise asemel\n lubab nimekirjas olevad stiilid\n keelab nimekirjas olevad stiilid\n ja <`> (graavis) - lülitab esialgu lubatud stiilid; ei rakendu järgnevalt lubatud stiilidele hüpiku avatud olekus, seega saad taastada esialgse valiku peale asjade testimist: lihtsalt keela kõik ning lülita, seega \nRohkem teavet vikis" }, "popupHotkeysTooltip": { - "message": "Kiirklahvide nägemiseks klõpsa", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Kiirklahvide nägemiseks klõpsa" }, "popupManageTooltip": { - "message": "Shift+klõps või paremklõps avab halduri praeguse saidi kohta käivate stiilidega", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift+klõps või paremklõps avab halduri praeguse saidi kohta käivate stiilidega" }, "popupMenuButtonTooltip": { - "message": "Tegevuste menüü", - "description": "Tooltip for menu button in popup." + "message": "Tegevuste menüü" }, "popupOpenEditInWindow": { - "message": "Ava redaktor uues aknas", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Ava redaktor uues aknas" }, "popupOpenEditInWindowTooltip": { - "message": "Lubatakse ka redaktori kaardi veebilehitseja aknast eraldamisel,\nja keelatakse üksiku redaktori kaardi haakimisel teise aknasse.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Lubatakse ka redaktori kaardi veebilehitseja aknast eraldamisel,\nja keelatakse üksiku redaktori kaardi haakimisel teise aknasse." }, "popupStylesFirst": { - "message": "Stiilid enne käske", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Stiilid enne käske" }, "prefShowBadge": { - "message": "Praegusel saidil aktiivsete stiilide arv", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Praegusel saidil aktiivsete stiilide arv" }, "previewLabel": { - "message": "Reaalajas eelvaade", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Reaalajas eelvaade" }, "previewTooltip": { - "message": "Ajutiselt rakendab muudatused ilma salvestamata.\nMuudatuste püsivaks tegemiseks salvesta stiil.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Ajutiselt rakendab muudatused ilma salvestamata.\nMuudatuste püsivaks tegemiseks salvesta stiil." + }, + "readingStyles": { + "message": "Stiilide lugemine..." }, "replace": { - "message": "Asenda", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Asenda" }, "replaceAll": { - "message": "Asenda kõik", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Asenda kõik" }, "replaceWith": { - "message": "Asenda tekstiga", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Asenda tekstiga" }, "retrieveBckp": { - "message": "Impordi stiilid", - "description": "" + "message": "Impordi stiilid" + }, + "retrieveDropboxSync": { + "message": "Dropboxi importimine" }, "search": { - "message": "Otsi", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Otsi" }, "searchCaseSensitive": { - "message": "Tõstutundlik", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Tõstutundlik" }, "searchNumberOfResults": { - "message": "Vastete arv", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Vastete arv" }, "searchNumberOfResults2": { - "message": "Vasteid koodis ja rakendub-üksuste väärtustes", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Vasteid koodis ja rakendub-üksuste väärtustes" }, "searchRegexp": { - "message": "Kasuta /re/ süntaksit regulaaravaldise otsinguks", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Kasuta /re/ süntaksit regulaaravaldise otsinguks" }, "searchResultInstallCount": { - "message": "Paigaldusi kokku", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Paigaldusi kokku" }, "searchResultNoneFound": { - "message": "Sellele saidile ei leitud stiile.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Sellele saidile ei leitud stiile." }, "searchResultRating": { - "message": "Hinnang", - "description": "Text for label that shows the search result's rating" + "message": "Hinnang" }, "searchResultUpdated": { - "message": "Uuendatud", - "description": "Text for label that shows the search result's last update date" + "message": "Uuendatud" }, "searchResultWeeklyCount": { - "message": "Paigaldus nädalas", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Otsi sisu", - "description": "Label for the search filter textbox on the Manage styles page" - }, - "searchStylesHelp": { - "message": " klahv fokuseerib otsinguvälja.\nLihttekst: otsi nimest, koodist, kodulehe URList ja rakendatavatest saitidest. Sõnu alla 3 tähemärgi ignoreeritakse.\nVastav URL: kasuta otsingus eesliidet , nt \nRegulaaravaldised sisaldavad kaldkriipse ja lippe, nt \nTäpsed sõnad: kirjuta väljendi ümber jutumärgid, nt <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Paigaldus nädalas" }, "sectionAdd": { - "message": "Lisa uus jaotis", - "description": "Label for the button to add a section" + "message": "Lisa uus jaotis" }, "sectionCode": { - "message": "Kood", - "description": "Label for the code for a section" + "message": "Kood" }, "sectionRemove": { - "message": "Eemalda jaotis", - "description": "Label for the button to remove a section" + "message": "Eemalda jaotis" }, "sectionRestore": { - "message": "Taasta eemaldatud jaotis", - "description": "Label for the button to restore a removed section" + "message": "Taasta eemaldatud jaotis" }, "shortcuts": { - "message": "Otseteed", - "description": "Go to shortcut configuration" + "message": "Otseteed" }, "shortcutsNote": { - "message": "Defineeri klaviatuuriotseteed", - "description": "" + "message": "Defineeri klaviatuuriotseteed" }, "sortDateNewestFirst": { - "message": "uuemad eespool", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "uuemad eespool" }, "sortDateOldestFirst": { - "message": "vanemad eespool", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "vanemad eespool" }, "sortLabel": { - "message": "Vali, milline järjestus paigaldatud stiilidele rakendada", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Vali, milline järjestus paigaldatud stiilidele rakendada" }, "sortLabelTitleAsc": { - "message": "Pealkiri tõusvas järjestuses", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Pealkiri tõusvas järjestuses" }, "sortLabelTitleDesc": { - "message": "Pealkiri laskuvas järjestuses", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Pealkiri laskuvas järjestuses" }, "sortStylesHelp": { - "message": "Vali paigaldatud üksustele rakendatav sorteerimismeetod sorteerimise rippmenüüst. Vaikimisi seadistus rakendab kasvava sorteerimise (A-st Z-ni) üksuste pealkirjades. Sorteerimised grupis \"Kahanev pealkiri\" rakendavad pealkirjale kahaneva sorteerimise (Z-st A-ni).\nOn olemas ka teisi eelseadistusi, mis võimaldavad üksuste sorteerimist mitme kriteeriumi järgi. Mõtle sellest, nagu sorteeriksid mitme veeruga tabelit ja iga kategooria valikus (plussmärkide vahel) tähistab veergu või gruppi.\nNäiteks, kui valik on \"Lubatud (esimene) + pealkiri\", sorteeritakse üksused nii, et kõik lubatud üksused on nimekirja tipus ning nimekirja pealkirja kasvav sorteerimine (A-st Z-ni) rakendatakse nii lubatud kui keelatud üksustele eraldi.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Vali paigaldatud üksustele rakendatav sorteerimismeetod sorteerimise rippmenüüst. Vaikimisi seadistus rakendab kasvava sorteerimise (A-st Z-ni) üksuste pealkirjades. Sorteerimised grupis \"Kahanev pealkiri\" rakendavad pealkirjale kahaneva sorteerimise (Z-st A-ni).\nOn olemas ka teisi eelseadistusi, mis võimaldavad üksuste sorteerimist mitme kriteeriumi järgi. Mõtle sellest, nagu sorteeriksid mitme veeruga tabelit ja iga kategooria valikus (plussmärkide vahel) tähistab veergu või gruppi.\nNäiteks, kui valik on \"Lubatud (esimene) + pealkiri\", sorteeritakse üksused nii, et kõik lubatud üksused on nimekirja tipus ning nimekirja pealkirja kasvav sorteerimine (A-st Z-ni) rakendatakse nii lubatud kui keelatud üksustele eraldi." }, "sortStylesHelpTitle": { - "message": "Järjesta sisu", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Järjesta sisu" }, "styleBadRegexp": { - "message": "Regulaaravaldis on sobimatu.", - "description": "Validation message for a bad regexp in a style" + "message": "Regulaaravaldis on sobimatu." }, "styleBeautify": { - "message": "Ilusta", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Ilusta" }, "styleBeautifyIndentConditional": { - "message": "Taanda @media, @supports", - "description": "CSS-beautifier option" + "message": "Taanda @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Säilita reavahetused", - "description": "CSS-beautifier option" + "message": "Säilita reavahetused" }, "styleCancelEditLabel": { - "message": "Tagasi haldusesse", - "description": "Label for cancel button for style editing" + "message": "Tagasi haldusesse" }, "styleChangesNotSaved": { - "message": "Sa oled teinud sellele stiilile muutusi ilma salvestamata.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Sa oled teinud sellele stiilile muutusi ilma salvestamata." }, "styleEnabledLabel": { - "message": "Lubatud", - "description": "Label for the enabled state of styles" + "message": "Lubatud" }, "styleFromMozillaFormatError": { - "message": "Mozilla-vormingust importimine ebaõnnestus", - "description": "Label for the import error" + "message": "Mozilla-vormingust importimine ebaõnnestus" }, "styleFromMozillaFormatPrompt": { - "message": "Kleebi Mozilla-vormingus koodi", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Kleebi Mozilla-vormingus koodi" }, "styleInstall": { "message": "Paigaldad \"$stylename$\" Stylus'isse?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1190,7 +941,6 @@ }, "styleInstallFailed": { "message": "Kasutajastiili paigaldamine ebaõnnestus!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1199,86 +949,68 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' on juba paigaldatud. Kas kirjutada üle?\nVersioon: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Sisesta nimi", - "description": "Error displayed when user saves without providing a name" + "message": "Sisesta nimi" }, "styleMozillaFormatHeading": { - "message": "Mozilla-vorming", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla-vorming" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Stiili ei rakendatud selle \"regexp()\" vale kasutuse tõttu", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Stiili ei rakendatud selle \"regexp()\" vale kasutuse tõttu" }, "styleRegexpInvalidExplanation": { - "message": "Teatud \"regexp()\" reegleid ei suudetud üldse kompileerida.", - "description": "" + "message": "Teatud \"regexp()\" reegleid ei suudetud üldse kompileerida." }, "styleRegexpPartialExplanation": { - "message": "See stiil kasutab osaliselt vastavaid regulaaravaldisi, olles CSS4 @dokument standardiga vastuolus, mis nõuab terve URLi vastet. Mõjutatud CSS-jaotisi ei rakendatud lehele. See stiil tehti tõenäoliselt Chrome'i Stylish'is, mis kontrollib \"regexp()\" reegleid valesti alates esimesest versioonist (teadaolev viga).", - "description": "" + "message": "See stiil kasutab osaliselt vastavaid regulaaravaldisi, olles CSS4 @dokument standardiga vastuolus, mis nõuab terve URLi vastet. Mõjutatud CSS-jaotisi ei rakendatud lehele. See stiil tehti tõenäoliselt Chrome'i Stylish'is, mis kontrollib \"regexp()\" reegleid valesti alates esimesest versioonist (teadaolev viga)." }, "styleRegexpProblemTooltip": { - "message": "\"regexp()\" vale kasutuse tõttu rakendamata jaotiste arv", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "\"regexp()\" vale kasutuse tõttu rakendamata jaotiste arv" }, "styleRegexpTestButton": { - "message": "Regulaaravaldise katsetus", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Regulaaravaldise katsetus" }, "styleRegexpTestFull": { - "message": "Vastavad kaardid", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Vastavad kaardid" }, "styleRegexpTestInvalid": { - "message": "Sobimatud regulaaravaldised vahele jäetud", - "description": "RegExp test report: label for the invalid expressions" + "message": "Sobimatud regulaaravaldised vahele jäetud" }, "styleRegexpTestNone": { - "message": "Pole vastavaid kaarte", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Pole vastavaid kaarte" }, "styleRegexpTestNote": { - "message": "Märkus: kasuta üksikut \\, et keelata märgi töötlemine regulaaravaldise sisendväljas, mis konverteeritakse automaatselt \\\\-ks stiili koodis, nagu CSSi tsiteeritud sõnede spetsifikatsioon ette näeb.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Märkus: kasuta üksikut \\, et keelata märgi töötlemine regulaaravaldise sisendväljas, mis konverteeritakse automaatselt \\\\-ks stiili koodis, nagu CSSi tsiteeritud sõnede spetsifikatsioon ette näeb." }, "styleRegexpTestPartial": { - "message": "Ei vasta täielikult, seega vahele jäetud", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Ei vasta täielikult, seega vahele jäetud" }, "styleRegexpTestTitle": { - "message": "Vastavate avatud kaardide nimekiri (klõpsa URLile selle kaardi fookustamiseks)", - "description": "RegExp test report: title of the report" + "message": "Vastavate avatud kaardide nimekiri (klõpsa URLile selle kaardi fookustamiseks)" }, "styleSaveLabel": { - "message": "Salvesta", - "description": "Label for save button for style editing" + "message": "Salvesta" }, "styleToMozillaFormatHelp": { - "message": "Koodi Mozilla-vormingut saab üles laadida saidile userstyles.org ja kasutada klassikalise Firefoxi Stylish'iga", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Koodi Mozilla-vormingut saab üles laadida saidile userstyles.org ja kasutada klassikalise Firefoxi Stylish'iga" }, "styleToMozillaFormatTitle": { - "message": "Stiil Mozilla-vormingus", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Stiil Mozilla-vormingus" }, "styleUpdate": { "message": "Kas soovid kindlasti uuendada \"$stylename$\"?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1286,72 +1018,55 @@ } }, "styleUpdateDiscardChanges": { - "message": "Stiili on redaktoriväliselt muudetud. Kas soovid stiili uuesti laadida?", - "description": "Confirmation to update the style in the editor" + "message": "Stiili on redaktoriväliselt muudetud. Kas soovid stiili uuesti laadida?" }, "stylusUnavailableForURL": { - "message": "Stylus ei tööta sellistel lehtedel.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus ei tööta sellistel lehtedel." }, "stylusUnavailableForURLdetails": { - "message": "Turvakaalutlustel keelab brauser laiendustel sisseehitatud lehtede (nagu chrome://version, standardne uue kaardi leht alates versioonist Chrome 61, about:addons jne) ning ka teiste laienduste lehtede muutmise. Iga brauser piirab lisaks juurdepääsu oma laienduste galeriile (nagu Chrome'i veebipood või AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Turvakaalutlustel keelab brauser laiendustel sisseehitatud lehtede (nagu chrome://version, standardne uue kaardi leht alates versioonist Chrome 61, about:addons jne) ning ka teiste laienduste lehtede muutmise. Iga brauser piirab lisaks juurdepääsu oma laienduste galeriile (nagu Chrome'i veebipood või AMO)." + }, + "syncDropboxDeprecated": { + "message": "Dropboxi importimine/eksportimine on asendatud edasijõudnuma stiilide sünkroonijaga valikute lehel." + }, + "syncDropboxStyles": { + "message": "Dropboxi eksportimine" }, "syncStorageErrorSaving": { - "message": "Väärtust ei saa salvestada. Proovi teksti hulka vähendada.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Väärtust ei saa salvestada. Proovi teksti hulka vähendada." }, "toggleStyle": { - "message": "Luba/keela stiil", - "description": "Label for the checkbox to enable/disable a style" + "message": "Luba/keela stiil" }, "undo": { - "message": "Võta tagasi", - "description": "Button label" + "message": "Võta tagasi" }, "undoGlobal": { - "message": "Võta kõigis jaotistes tagasi", - "description": "CSS-beautify global Undo button label" + "message": "Võta kõigis jaotistes tagasi" }, "unreachableAMO": { - "message": "Firefox keelab ligipääsu sellele saidile.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox keelab ligipääsu sellele saidile." }, "unreachableAMOHint": { - "message": "Ligipääsu lubamiseks ava , parem-klõpsa nimekirjal, vali 'Uus', seejärel 'Tõeväärtus', kleebi ja klõpsa Sobib, , Sobib, laadi leht uuesti.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "Firefox 60-s ja uuemas pead ka lehel eelistusest eemaldama AMO domeeni.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Ainult Firefox 59 ja uuem on võimalik seadistada lubama WebExtensionsil lisada stiilielemente CSP-kaitstud saitidele nagu see.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Ligipääsu lubamiseks ava , parem-klõpsa nimekirjal, vali 'Uus', seejärel 'Tõeväärtus', kleebi ja klõpsa Sobib, , Sobib, laadi leht uuesti." }, "unreachableContentScript": { - "message": "Lehega ei saanud ühendust. Proovi kaart uuesti laadida.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Lehega ei saanud ühendust. Proovi kaart uuesti laadida." }, "unreachableFileHint": { - "message": "Stylus saab ligi pääseda file:// URLidele ainult siis, kui märgistad vastava kasti Stylus laiendusel chrome://extensions lehel", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus saab ligi pääseda file:// URLidele ainult siis, kui märgistad vastava kasti Stylus laiendusel chrome://extensions lehel" }, - "InaccessibleFileHint": { - "message": "Stylus ei saa osadele failitüüpidele ligi pääseda (nt. pdf & json failid).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unzipStyles": { + "message": "Stiilide lahtipakkimine..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Uuendusi ei leitud.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Uuendusi ei leitud." }, "updateAllCheckSucceededSomeEdited": { - "message": "Mõndasid uuendatavaid stiile ei kontrollitud, et vältida võimalike kohalike muutuste kadu. Uuendusi saab sundida, kontrollides ükshaaval või käivitades uue kontrolli kõikidele stiilidele (kohalikud muutused kirjutatakse üle).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Mõndasid uuendatavaid stiile ei kontrollitud, et vältida võimalike kohalike muutuste kadu. Uuendusi saab sundida, kontrollides ükshaaval või käivitades uue kontrolli kõikidele stiilidele (kohalikud muutused kirjutatakse üle)." }, "updateCheckFailBadResponseCode": { "message": "Uuendamine ebaõnnestus: server vastas koodiga $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1359,127 +1074,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Uuendamine ebaõnnestus: server on kättesaamatu.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Uuendamine ebaõnnestus: server on kättesaamatu." }, "updateCheckHistory": { - "message": "Uuenduskontrollide ajalugu", - "description": "" + "message": "Uuenduskontrollide ajalugu" }, "updateCheckManualUpdateForce": { - "message": "Paigalda uuendus (kohalikud muutused kirjutatakse üle)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Paigalda uuendus (kohalikud muutused kirjutatakse üle)" }, "updateCheckManualUpdateHint": { - "message": "Uuenduse sundimine kirjutab üle mistahes kohalikud muutused.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Uuenduse sundimine kirjutab üle mistahes kohalikud muutused." }, "updateCheckSkippedLocallyEdited": { - "message": "Seda stiili muudeti kohalikult.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Seda stiili muudeti kohalikult." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Seda stiili võib olla kohalikult muudetud.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Seda stiili võib olla kohalikult muudetud." }, "updateCheckSucceededNoUpdate": { - "message": "Stiil on ajakohane.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Stiil on ajakohane." }, "updateCompleted": { - "message": "Uuendus teostatud.", - "description": "Text that displays when an update completed" + "message": "Uuendus teostatud." }, "updatesCurrentlyInstalled": { - "message": "Uuendused paigaldatud:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Olemasoleva stiili ülekirjutamise vältimiseks palun muuda @name või @namespace väärtused.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Stiili uuendati või eemaldati pärast seadistusdialoogi kuvamist. Neid muutujaid ei salvestatud, et vältida stiili metaandmete korrumpeerumist:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Kirjelda koodis @name", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Asendad vaikimisi malli uutes kasutajacss stiilides praeguse koodiga?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Tühi @name asendab vaikimisi malli", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Sisesta kood siia...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Versioon on paigaldatud stiilist vanem.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Kirjuta stiil:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "see URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropboxi eksportimine", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Dropboxi importimine/eksportimine on asendatud edasijõudnuma stiilide sünkroonijaga valikute lehel.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropboxi importimine", - "description": "" - }, - "overwriteFileExport": { - "message": "Kas tahad olemasoleva faili üle kirjutada?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Fail edukalt salvestatud", - "description": "" - }, - "noFileToImport": { - "message": "Oma stiilide importimiseks peaksid esmalt selle eksportima.", - "description": "" - }, - "connectingDropbox": { - "message": "Dropboxiga ühendumine...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Dropboxiga ühendumine on saadaval ainult veebipoe kaudu installitud rakendustes", - "description": "" - }, - "gettingStyles": { - "message": "Kõigi stiilide hankimine...", - "description": "" - }, - "zipStyles": { - "message": "Stiilide kokkupakkimine...", - "description": "" - }, - "unzipStyles": { - "message": "Stiilide lahtipakkimine...", - "description": "" - }, - "readingStyles": { - "message": "Stiilide lugemine...", - "description": "" + "message": "Uuendused paigaldatud:" }, "uploadingFile": { - "message": "Faili üleslaadimine...", - "description": "" + "message": "Faili üleslaadimine..." + }, + "usercssAvoidOverwriting": { + "message": "Olemasoleva stiili ülekirjutamise vältimiseks palun muuda @name või @namespace väärtused." + }, + "usercssConfigIncomplete": { + "message": "Stiili uuendati või eemaldati pärast seadistusdialoogi kuvamist. Neid muutujaid ei salvestatud, et vältida stiili metaandmete korrumpeerumist:" + }, + "usercssEditorNamePlaceholder": { + "message": "Kirjelda koodis @name" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Asendad vaikimisi malli uutes kasutajacss stiilides praeguse koodiga?" + }, + "usercssReplaceTemplateName": { + "message": "Tühi @name asendab vaikimisi malli" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Sisesta kood siia..." + }, + "versionInvalidOlder": { + "message": "Versioon on paigaldatud stiilist vanem." + }, + "writeStyleFor": { + "message": "Kirjuta stiil:" + }, + "writeStyleForURL": { + "message": "see URL" + }, + "zipStyles": { + "message": "Stiilide kokkupakkimine..." } } diff --git a/_locales/fi/messages.json b/_locales/fi/messages.json index 51e76576..b2b970ef 100644 --- a/_locales/fi/messages.json +++ b/_locales/fi/messages.json @@ -1,19 +1,15 @@ { "addStyleLabel": { - "message": "Uusi Tyyli", - "description": "Label for the button to go to the add style page" + "message": "Uusi Tyyli" }, "addStyleTitle": { - "message": "Lisää Tyyli", - "description": "Title of the page for adding styles" + "message": "Lisää Tyyli" }, "appliesAdd": { - "message": "Lisää", - "description": "Label for the button to add an 'applies' entry" + "message": "Lisää" }, "appliesDisplay": { "message": "Kooskee: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,80 +17,61 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "ja lisää", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "ja lisää" }, "appliesDomainOption": { - "message": "URL ositteita domainilla", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL ositteita domainilla" }, "appliesHelp": { - "message": "Käytä 'Koskee' kontrolleja rajoittaaksesi mitä URL osoitteisiin tämä osio koodista koskee.", - "description": "Help text for 'applies to' section" + "message": "Käytä 'Koskee' kontrolleja rajoittaaksesi mitä URL osoitteisiin tämä osio koodista koskee." }, "appliesLabel": { - "message": "Koskee", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Koskee" }, "appliesRegexpOption": { - "message": "URL ositteet jotka vastaavat regexpiä", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL ositteet jotka vastaavat regexpiä" }, "appliesRemove": { - "message": "Poista", - "description": "Label for the button to remove an 'applies' entry" + "message": "Poista" }, "appliesSpecify": { - "message": "Tarkenna", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Tarkenna" }, "appliesToEverything": { - "message": "Kaikki", - "description": "Text displayed for styles that apply to all sites" + "message": "Kaikki" }, "appliesUrlPrefixOption": { - "message": "URL osoitteet jotka alkavat", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL osoitteet jotka alkavat" }, "checkAllUpdates": { - "message": "Tarkista kaikki tyylit päivityksien varalta", - "description": "Label for the button to check all styles for updates" + "message": "Tarkista kaikki tyylit päivityksien varalta" }, "checkForUpdate": { - "message": "Hae päivityksiä", - "description": "Label for the button to check a single style for an update" + "message": "Hae päivityksiä" }, "checkingForUpdate": { - "message": "Tarkistetaan...", - "description": "Text to display when checking a style for an update" + "message": "Tarkistetaan..." }, "deleteStyleConfirm": { - "message": "Oletko varma että haluat poistaa tämän tyylin?", - "description": "Confirmation before deleting a style" + "message": "Oletko varma että haluat poistaa tämän tyylin?" }, "deleteStyleLabel": { - "message": "Poista", - "description": "Label for the button to delete a style" + "message": "Poista" }, "description": { - "message": "Uudelleen stailaa netti Stylusillä, käyttäjän tyyli hallintapaneelilla. Stylus antaa sinun helposti asentaa teemoja ja skinejä palvelluille kuten Google, Facebook, YouTube, Orkut, ja monelle, monelle muulle sivustolle.", - "description": "Extension description" + "message": "Uudelleen stailaa netti Stylusillä, käyttäjän tyyli hallintapaneelilla. Stylus antaa sinun helposti asentaa teemoja ja skinejä palvelluille kuten Google, Facebook, YouTube, Orkut, ja monelle, monelle muulle sivustolle." }, "disableStyleLabel": { - "message": "Poista Käytöstä", - "description": "Label for the button to disable a style" + "message": "Poista Käytöstä" }, "editStyleHeading": { - "message": "Muokkaa Tyyliä", - "description": "Title of the page for editing styles" + "message": "Muokkaa Tyyliä" }, "editStyleLabel": { - "message": "Muokkaa", - "description": "Label for the button to go to the edit style page" + "message": "Muokkaa" }, "editStyleTitle": { "message": "Muokkaa Tyyliä $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -102,76 +79,58 @@ } }, "enableStyleLabel": { - "message": "Aktivoi", - "description": "Label for the button to enable a style" + "message": "Aktivoi" }, "findStylesForSite": { - "message": "Hae lisää tyylejä tälle sivustolle", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Hae lisää tyylejä tälle sivustolle" }, "helpAlt": { - "message": "Apu", - "description": "Alternate text for help buttons" + "message": "Apu" }, "installUpdate": { - "message": "Asenna päivitys", - "description": "Label for the button to install an update for a single style" + "message": "Asenna päivitys" }, "manageHeading": { - "message": "Asennetut Tyylit", - "description": "Heading for the manage page" + "message": "Asennetut Tyylit" }, "manageTitle": { - "message": "Tyylikäs", - "description": "Title for the manage page" + "message": "Tyylikäs" }, "noStylesForSite": { - "message": "Ei asennettuja tyylejä tällä sivustolla.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Ei asennettuja tyylejä tällä sivustolla." }, "openManage": { - "message": "Hallitse asennettuja tyylejä", - "description": "Link to open the manage page." + "message": "Hallitse asennettuja tyylejä" }, "popupStylesFirst": { - "message": "List styles before commands in the toolbar button menu", - "description": "Label for the checkbox controlling section order in the popup." + "message": "List styles before commands in the toolbar button menu" }, "prefShowBadge": { - "message": "Show number of styles active for the current site on the toolbar button", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Show number of styles active for the current site on the toolbar button" }, "sectionAdd": { - "message": "Lisää uusi osio", - "description": "Label for the button to add a section" + "message": "Lisää uusi osio" }, "sectionCode": { - "message": "Koodi", - "description": "Label for the code for a section" + "message": "Koodi" }, "sectionRemove": { - "message": "Poista osio", - "description": "Label for the button to remove a section" + "message": "Poista osio" }, "styleBadRegexp": { - "message": "Regexp ei kelpaa.", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp ei kelpaa." }, "styleCancelEditLabel": { - "message": "Takaisin hallintapaneeliin", - "description": "Label for cancel button for style editing" + "message": "Takaisin hallintapaneeliin" }, "styleChangesNotSaved": { - "message": "Olet tehnyt muutoksia tähän tyyliin tallentamatta.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Olet tehnyt muutoksia tähän tyyliin tallentamatta." }, "styleEnabledLabel": { - "message": "Aktivoitu", - "description": "Label for the enabled state of styles" + "message": "Aktivoitu" }, "styleInstall": { "message": "Asennetaanko '$stylename$' Stylusiin?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -179,24 +138,19 @@ } }, "styleMissingName": { - "message": "Syötä nimi", - "description": "Error displayed when user saves without providing a name" + "message": "Syötä nimi" }, "styleSaveLabel": { - "message": "Tallenna", - "description": "Label for save button for style editing" + "message": "Tallenna" }, "styleToMozillaFormatHelp": { - "message": "Mozilla formaattia koodista voidaan käyttää Stylish Firefoxille ohjelmassa ja voidaan lähettää userstyles.orgiin.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla formaattia koodista voidaan käyttää Stylish Firefoxille ohjelmassa ja voidaan lähettää userstyles.orgiin." }, "updateAllCheckSucceededNoUpdate": { - "message": "All styles are up to date.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "All styles are up to date." }, "updateCheckFailBadResponseCode": { "message": "Päivitys epäonnistui: palvelin vastasi koodilla $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -204,15 +158,12 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Päivitys epäonnistui: ei voitu yhdistää palvelimeen.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Päivitys epäonnistui: ei voitu yhdistää palvelimeen." }, "updateCheckSucceededNoUpdate": { - "message": "Tyyli on ajan tasalla.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Tyyli on ajan tasalla." }, "updateCompleted": { - "message": "Päivitys suoritettu.", - "description": "Text that displays when an update completed" + "message": "Päivitys suoritettu." } -} \ No newline at end of file +} diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index e2aad9cd..c3b763ac 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus ne peut pas accéder à certains types de fichiers (ex: fichiers .pdf et .json)." + }, "addStyleLabel": { - "message": "Créer un nouveau style", - "description": "Label for the button to go to the add style page" + "message": "Créer un nouveau style" }, "addStyleTitle": { - "message": "Ajouter un style", - "description": "Title of the page for adding styles" + "message": "Ajouter un style" }, "alphaChannel": { - "message": "Opacité", - "description": "Label of color's opacity" + "message": "Opacité" }, "appliesAdd": { - "message": "Ajouter", - "description": "Label for the button to add an 'applies' entry" + "message": "Ajouter" }, "appliesDisplay": { "message": "S'applique à : $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +23,229 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "et bien plus encore", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "et bien plus encore" }, "appliesDomainOption": { - "message": "URL sur le domaine", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL sur le domaine" }, "appliesHelp": { - "message": "Utilisez l'option « S'applique à » pour préciser les URL auxquelles le code de cette section s'applique.", - "description": "Help text for 'applies to' section" + "message": "Utilisez l'option « S'applique à » pour préciser les URL auxquelles le code de cette section s'applique." }, "appliesLabel": { - "message": "S'applique à", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "S'applique à" }, "appliesLineWidgetLabel": { - "message": "Afficher les informations « s’applique à »", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Afficher les informations « s’applique à »" }, "appliesLineWidgetWarning": { - "message": "Ne fonctionne pas avec le CSS minifié", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Ne fonctionne pas avec le CSS minifié" }, "appliesRegexpOption": { - "message": "URL correspondant à l'expression régulière", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL correspondant à l'expression régulière" }, "appliesRemove": { - "message": "Supprimer", - "description": "Label for the button to remove an 'applies' entry" + "message": "Supprimer" }, "appliesRemoveError": { - "message": "Impossible de supprimer la dernière entrée « s’applique à »", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Impossible de supprimer la dernière entrée « s’applique à »" }, "appliesSpecify": { - "message": "Préciser", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Préciser" }, "appliesToEverything": { - "message": "Tout", - "description": "Text displayed for styles that apply to all sites" + "message": "Tout" }, "appliesUrlPrefixOption": { - "message": "URL commençant par", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL commençant par" }, "applyAllUpdates": { - "message": "Appliquer toutes les mises à jour", - "description": "Label for the button to apply all detected updates" + "message": "Appliquer toutes les mises à jour" }, "author": { - "message": "Auteur", - "description": "Label for the style author" + "message": "Auteur" }, "backupButtons": { - "message": "Sauvegarde", - "description": "Heading for backup" + "message": "Sauvegarde" }, "backupMessage": { - "message": "Sélectionner un fichier ou le glisser-déposer sur cette page", - "description": "Message for backup" + "message": "Sélectionner un fichier ou le glisser-déposer sur cette page" }, "bckpInstStyles": { - "message": "Exporter des styles", - "description": "" + "message": "Exporter des styles" }, "checkAllUpdates": { - "message": "Rechercher des mises à jour", - "description": "Label for the button to check all styles for updates" + "message": "Rechercher des mises à jour" }, "checkAllUpdatesForce": { - "message": "Vérifiez à nouveau, je n’ai modifié aucun style !", - "description": "Label for the button to apply all detected updates" + "message": "Vérifiez à nouveau, je n’ai modifié aucun style !" }, "checkForUpdate": { - "message": "Rechercher une mise à jour", - "description": "Label for the button to check a single style for an update" + "message": "Rechercher une mise à jour" }, "checkingForUpdate": { - "message": "Vérification en cours…", - "description": "Text to display when checking a style for an update" + "message": "Vérification en cours…" }, "clickToUninstall": { - "message": "Cliquer pour désinstaller", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Cliquer pour désinstaller" }, "cm_autoCloseBrackets": { - "message": "Fermer automatiquement les caractères ouvrants", - "description": "Label for the checkbox in the style editor." + "message": "Fermer automatiquement les caractères ouvrants" }, "cm_autoCloseBracketsTooltip": { - "message": "Ajoute automatiquement le caractère fermant quand vous tapez le caractère ouvrant parmi ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Ajoute automatiquement le caractère fermant quand vous tapez le caractère ouvrant parmi ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Autocomplétion pendant la frappe", - "description": "Label for the checkbox in the style editor." + "message": "Autocomplétion pendant la frappe" }, "cm_colorpicker": { - "message": "Sélecteur de couleur pour les couleurs CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Sélecteur de couleur pour les couleurs CSS" }, "cm_indentWithTabs": { - "message": "Utiliser les tabulations avec indentation intelligente", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Utiliser les tabulations avec indentation intelligente" }, "cm_keyMap": { - "message": "Raccourcis clavier", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Raccourcis clavier" }, "cm_lineWrapping": { - "message": "Retour à la ligne automatique", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Retour à la ligne automatique" }, "cm_linter": { - "message": "Vérificateur CSS", - "description": "Select the linter to check for CSS issues" + "message": "Vérificateur CSS" }, "cm_matchHighlight": { - "message": "Surligner", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Surligner" }, "cm_matchHighlightSelection": { - "message": "Sélection uniquement", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Sélection uniquement" }, "cm_matchHighlightToken": { - "message": "Entité sous le curseur", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Entité sous le curseur" }, "cm_resizeGripHint": { - "message": "Double-cliquez pour maximiser/restaurer la taille", - "description": "Tooltip for the resize grip in style editor" + "message": "Double-cliquez pour maximiser/restaurer la taille" }, "cm_selectByTokens": { - "message": "Double-cliquer sélectionne des entités", - "description": "Label for the checkbox in the editor." + "message": "Double-cliquer sélectionne des entités" }, "cm_selectByTokensTooltip": { - "message": "Exemples d’entités : .foo-bar-2 #aabbcc 0.32 !important\nSi désactivé : les mots délimités par la ponctuation sont sélectionnés.", - "description": "" + "message": "Exemples d’entités : .foo-bar-2 #aabbcc 0.32 !important\nSi désactivé : les mots délimités par la ponctuation sont sélectionnés." }, "cm_smartIndent": { - "message": "Utiliser l'indentation intelligente", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Utiliser l'indentation intelligente" }, "cm_tabSize": { - "message": "Taille des tabulations", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Taille des tabulations" }, "cm_theme": { - "message": "Thème", - "description": "Label for the style editor's CSS theme." + "message": "Thème" }, "colorpickerSwitchFormatTooltip": { - "message": "Changer de format : HEX → RGB → HSL.\nMaj-clic pour inverser la direction.\nÉgalement via les touches ⇞ (Page précédente), \f (Page précédente).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Changer de format : HEX → RGB → HSL.\nMaj-clic pour inverser la direction.\nÉgalement via les touches ⇞ (Page précédente), \f (Page précédente)." }, "colorpickerTooltip": { - "message": "Ouvrir le sélecteur de couleurs", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Ouvrir le sélecteur de couleurs" }, "configOnChange": { - "message": "automatique", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "automatique" }, "configOnChangeTooltip": { - "message": "Sauvegarde et applique les changements automatiquement", - "description": "" + "message": "Sauvegarde et applique les changements automatiquement" }, "configureStyle": { - "message": "Configurer", - "description": "Label for the button to configure usercss userstyle" + "message": "Configurer" }, "configureStyleOnHomepage": { - "message": "Configurer sur la page d’accueil", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configurer sur la page d’accueil" }, "confirmCancel": { - "message": "Annuler", - "description": "" + "message": "Annuler" }, "confirmClose": { - "message": "Fermer", - "description": "'Close' button in a confirm dialog" + "message": "Fermer" }, "confirmDefault": { - "message": "Réglage par défaut", - "description": "'Set to default' button in a confirm dialog" + "message": "Réglage par défaut" }, "confirmDelete": { - "message": "Supprimer", - "description": "" + "message": "Supprimer" }, "confirmDiscardChanges": { - "message": "Annuler les changements ?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Annuler les changements ?" }, "confirmNo": { - "message": "Non", - "description": "'No' button in a confirm dialog" + "message": "Non" }, "confirmOK": { - "message": "Valider", - "description": "" + "message": "Valider" }, "confirmSave": { - "message": "Enregistrer", - "description": "'Save' button in a confirm dialog" + "message": "Enregistrer" }, "confirmStop": { - "message": "Arrêt ", - "description": "'Stop' button in a confirm dialog" + "message": "Arrêt " }, "confirmYes": { - "message": "Oui", - "description": "'Yes' button in a confirm dialog" + "message": "Oui" + }, + "connectingDropbox": { + "message": "Connexion à Dropbox…" + }, + "connectingDropboxNotAllowed": { + "message": "La connexion à Dropbox est disponible uniquement dans les applications installées directement depuis le Web Store." }, "copied": { - "message": "Copié dans le presse-papier", - "description": "Message shown when content has been copied to the clipboard" + "message": "Copié dans le presse-papier" }, "copy": { - "message": "Copier dans le presse-papier", - "description": "Tooltip for elements which can be copied" + "message": "Copier dans le presse-papier" }, "dateInstalled": { - "message": "Date d'installation", - "description": "Option text for the user to sort the style by install date" + "message": "Date d'installation" }, "dateUpdated": { - "message": "Date de mise à jour", - "description": "Option text for the user to sort the style by last update date" + "message": "Date de mise à jour" }, "dbError": { - "message": "Une erreur s'est produite dans la base de donnée de Stylus. Voulez-vous visiter une page web avec les solutions possibles ?", - "description": "Prompt when a DB error is encountered" + "message": "Une erreur s'est produite dans la base de donnée de Stylus. Voulez-vous visiter une page web avec les solutions possibles ?" }, "defaultTheme": { - "message": "défaut", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "défaut" }, "deleteStyleConfirm": { - "message": "Voulez-vous vraiment supprimer ce style ?", - "description": "Confirmation before deleting a style" + "message": "Voulez-vous vraiment supprimer ce style ?" }, "deleteStyleLabel": { - "message": "Supprimer", - "description": "Label for the button to delete a style" + "message": "Supprimer" }, "description": { - "message": "Changez l'apparence du Web grâce à Stylus, un outil de gestion des styles utilisateur. Stylus vous permet d'installer facilement des thèmes et des habillages pour Google, Facebook, YouTube, orkut et bien d'autres sites encore.", - "description": "Extension description" + "message": "Changez l'apparence du Web grâce à Stylus, un outil de gestion des styles utilisateur. Stylus vous permet d'installer facilement des thèmes et des habillages pour Google, Facebook, YouTube, orkut et bien d'autres sites encore." }, "disableAllStyles": { - "message": "Désactiver tous les styles", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Désactiver tous les styles" }, "disableStyleLabel": { - "message": "Désactiver", - "description": "Label for the button to disable a style" + "message": "Désactiver" }, "dragDropMessage": { - "message": "Glisser votre fichier de sauvegarde n’importe où sur cette page pour l’importer.", - "description": "Drag'n'drop message" + "message": "Glisser votre fichier de sauvegarde n’importe où sur cette page pour l’importer." }, "dragDropUsercssTabstrip": { - "message": "Pour installer le fichier, glisser le fichier sur la barre des onglets (la zone où les titres des onglets sont affichés).", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Pour installer le fichier, glisser le fichier sur la barre des onglets (la zone où les titres des onglets sont affichés)." }, "editDeleteText": { - "message": "Supprimer", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Supprimer" }, "editGotoLine": { - "message": "Aller à la ligne (ou ligne:colonne)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Aller à la ligne (ou ligne:colonne)" }, "editStyleHeading": { - "message": "Modifier le style", - "description": "Title of the page for editing styles" + "message": "Modifier le style" }, "editStyleLabel": { - "message": "Modifier", - "description": "Label for the button to go to the edit style page" + "message": "Modifier" }, "editStyleTitle": { "message": "Modifier le style $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,216 +253,171 @@ } }, "enableStyleLabel": { - "message": "Activer", - "description": "Label for the button to enable a style" + "message": "Activer" }, "excludeStyleByDomainLabel": { - "message": "Exclure le domaine actuel", - "description": "" + "message": "Exclure le domaine actuel" }, "excludeStyleByUrlLabel": { - "message": "Exclure l’URL actuelle", - "description": "" + "message": "Exclure l’URL actuelle" }, "exportLabel": { - "message": "Exporter", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exporter" + }, + "exportSavedSuccess": { + "message": "Fichier sauvegardé avec succès" }, "externalFeedback": { - "message": "Commentaires", - "description": "Label for the external link to send feedback for the style" + "message": "Commentaires" }, "externalHomepage": { - "message": "Page d’accueil", - "description": "Label for the external link to style's homepage" + "message": "Page d’accueil" }, "externalLink": { - "message": "Lien externe", - "description": "Label for external links" + "message": "Lien externe" }, "externalUsercssDocument": { - "message": "Documentation d'Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentation d'Usercss" }, "filteredStyles": { "message": "$numShown$ montrés sur $numTotal$ au total", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Les filtres appliqués actuellement ne correspondent à aucun style", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Les filtres appliqués actuellement ne correspondent à aucun style" }, "findStyles": { - "message": "Trouver des styles", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Trouver des styles" }, "findStylesForSite": { - "message": "Rechercher d'autres styles pour ce site", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Rechercher d'autres styles pour ce site" }, "findStylesInline": { - "message": "Dans la popup", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Dans la popup" }, "findStylesInlineTooltip": { - "message": "Affiche les résultats de recherche dans cette fenêtre", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Affiche les résultats de recherche dans cette fenêtre" }, "genericAdd": { - "message": "Ajouter", - "description": "Used in various places for an action that adds something" + "message": "Ajouter" }, "genericClone": { - "message": "Dupliquer", - "description": "Used in various places for an action that clones something" + "message": "Dupliquer" }, "genericDisabledLabel": { - "message": "Désactivé", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Désactivé" }, "genericEnabledLabel": { - "message": "Activé", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Activé" }, "genericError": { - "message": "Erreur", - "description": "Used in various places to indicate some error occurred." + "message": "Erreur" }, "genericHistoryLabel": { - "message": "Historique", - "description": "Used in various places to show a history log of something" + "message": "Historique" }, "genericNext": { - "message": "Suivant", - "description": "Used in various places to select/perform the next step/action" + "message": "Suivant" }, "genericPrevious": { - "message": "Précédent", - "description": "Used in various places to select/perform the previous step/action" + "message": "Précédent" }, "genericResetLabel": { - "message": "Ré-initialiser", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Ré-initialiser" }, "genericSavedMessage": { - "message": "Enregistré", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Enregistré" }, "genericTitle": { - "message": "Titre", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Titre" }, "genericUnknown": { - "message": "Inconnu(e)", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Inconnu(e)" + }, + "gettingStyles": { + "message": "Récupération de tous les styles…" }, "helpAlt": { - "message": "Aide", - "description": "Alternate text for help buttons" + "message": "Aide" }, "helpKeyMapCommand": { - "message": "Saisissez un nom de commande", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Saisissez un nom de commande" }, "helpKeyMapHotkey": { - "message": "Pressez un raccourci clavier", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Pressez un raccourci clavier" }, "hostDisabled": { - "message": "Cet hôte a été désactivé en raison d'un bogue dans la version actuelle du navigateur utilisé", - "description": "Tooltip for cloud host disabled" + "message": "Cet hôte a été désactivé en raison d'un bogue dans la version actuelle du navigateur utilisé" }, "importAppendLabel": { - "message": "Ajouter au style", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Ajouter au style" }, "importAppendTooltip": { - "message": "Ajouter le style importé au style actuel", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Ajouter le style importé au style actuel" }, "importLabel": { - "message": "Importer", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importer" }, "importReplaceLabel": { - "message": "Remplacer le style", - "description": "Label for the button to import and overwrite current style" + "message": "Remplacer le style" }, "importReplaceTooltip": { - "message": "Abandonner le contenu du style actuel et le remplacer par le style importé", - "description": "Label for the button to import and overwrite current style" + "message": "Abandonner le contenu du style actuel et le remplacer par le style importé" }, "importReportLegendAdded": { - "message": "ajouté(s)", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "ajouté(s)" }, "importReportLegendIdentical": { - "message": "identiques ignorés", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identiques ignorés" }, "importReportLegendInvalid": { - "message": "invalides ignorés", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "invalides ignorés" }, "importReportLegendUpdatedBoth": { - "message": "codes et méta-informations mis à jour", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "codes et méta-informations mis à jour" }, "importReportLegendUpdatedCode": { - "message": "codes mis à jour", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "codes mis à jour" }, "importReportLegendUpdatedMeta": { - "message": "méta-informations mises à jour", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "méta-informations mises à jour" }, "importReportTitle": { - "message": "Import des styles terminé", - "description": "Title of the report shown after importing styles" + "message": "Import des styles terminé" }, "importReportUnchanged": { - "message": "Rien n’a changé.", - "description": "Message in the report shown after importing styles" + "message": "Rien n’a changé." }, "importReportUndone": { - "message": "styles sont revenus à leur version antérieure", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "styles sont revenus à leur version antérieure" }, "importReportUndoneTitle": { - "message": "L’import a été annulé", - "description": "Title of the message box shown after undoing the import of styles" + "message": "L’import a été annulé" }, "installButton": { - "message": "Installer le style", - "description": "Label for install button" + "message": "Installer le style" }, "installButtonInstalled": { - "message": "Style installé", - "description": "Text displayed when the style is successfully installed" + "message": "Style installé" }, "installButtonReinstall": { - "message": "Ré-installer le style", - "description": "Label for reinstall button" + "message": "Ré-installer le style" }, "installButtonUpdate": { - "message": "Mettre à jour le style", - "description": "Label for update button" + "message": "Mettre à jour le style" }, "installUpdate": { - "message": "Installer la mise à jour", - "description": "Label for the button to install an update for a single style" + "message": "Installer la mise à jour" }, "installUpdateFrom": { "message": "Le style est actuellement mis à jour depuis $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -539,28 +425,22 @@ } }, "installUpdateFromLabel": { - "message": "Rechercher les mises à jour", - "description": "Label for the checkbox to save current URL for update check" + "message": "Rechercher les mises à jour" }, "license": { - "message": "Licence", - "description": "Label for the license" + "message": "Licence" }, "linkGetHelp": { - "message": "Consulter l'aide", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Consulter l'aide" }, "linkGetStyles": { - "message": "Obtenir des styles", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Obtenir des styles" }, "linkTranslate": { - "message": "Traduire", - "description": "Transifex link text on the manage page" + "message": "Traduire" }, "linterCSSLintIncompatible": { "message": "CSSLint ne prend pas en charge le préprocesseur $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -568,12 +448,10 @@ } }, "linterCSSLintSettings": { - "message": "(Valeur des règles : 0 = désactivé, 1 = avertissement, 2 = erreur)", - "description": "CSSLint rule config values" + "message": "(Valeur des règles : 0 = désactivé, 1 = avertissement, 2 = erreur)" }, "linterConfigPopupTitle": { "message": "Configurer les règles de $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -581,20 +459,16 @@ } }, "linterConfigTooltip": { - "message": "Cliquez pour configurer ce vérificateur", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Cliquez pour configurer ce vérificateur" }, "linterInvalidConfigError": { - "message": "Non sauvegardé à cause de ces paramètres invalides :", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Non sauvegardé à cause de ces paramètres invalides :" }, "linterIssues": { - "message": "Problèmes", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problèmes" }, "linterIssuesHelp": { "message": "Ces problèmes ont été trouvés par $link$ :", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -602,144 +476,93 @@ } }, "linterJSONError": { - "message": "Format JSON invalide", - "description": "Setting linter config with invalid JSON" + "message": "Format JSON invalide" }, "linterResetMessage": { - "message": "Pour annuler une réinitialisation accidentelle, faites Ctrl-Z (ou Cmd-Z) dans la zone de texte", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Pour annuler une réinitialisation accidentelle, faites Ctrl-Z (ou Cmd-Z) dans la zone de texte" }, "linterRulesLink": { - "message": "Voir la liste complète des règles", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Voir la liste complète des règles" }, "liveReloadError": { - "message": "Une erreur est survenue durant la surveillance du fichier", - "description": "The label of live-reload error" + "message": "Une erreur est survenue durant la surveillance du fichier" }, "liveReloadInstallHint": { - "message": "Gardez cet onglet ouvert pour mettre à jour le style automatiquement basé sur les modifications extérieures.", - "description": "The label of live-reload feature" + "message": "Gardez cet onglet ouvert pour mettre à jour le style automatiquement basé sur les modifications extérieures." }, "liveReloadInstallHintFF": { - "message": "Gardez cet onglet ouvert ainsi que l´onglet original pour mettre à jour le style automatiquement basé sur les modifications extérieures.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "Gardez cet onglet ouvert ainsi que l´onglet original pour mettre à jour le style automatiquement basé sur les modifications extérieures." }, "liveReloadLabel": { - "message": "Rechargement immédiat", - "description": "The label of live-reload feature" + "message": "Rechargement immédiat" }, "manageFavicons": { - "message": "Favicons dans la colonne « s’applique à »", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons dans la colonne « s’applique à »" }, "manageFaviconsGray": { - "message": "Grisés", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Grisés" }, "manageFaviconsHelp": { - "message": "Stylus utilise le service externe https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus utilise le service externe https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtres", - "description": "Label for filters container" + "message": "Filtres" }, "manageHeading": { - "message": "Styles installés", - "description": "Heading for the manage page" + "message": "Styles installés" }, "manageMaxTargets": { - "message": "Nombre d’items « s’applique à »", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Nombre d’items « s’applique à »" }, "manageNewStyleAsUsercss": { - "message": "en tant que Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "en tant que Usercss" }, "manageNewUI": { - "message": "Nouvelle disposition de l’UI de gestion", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nouvelle disposition de l’UI de gestion" }, "manageOnlyDisabled": { - "message": "Seulement les styles désactivés", - "description": "Checkbox to show only disabled styles" + "message": "Seulement les styles désactivés" }, "manageOnlyEnabled": { - "message": "Seulement les styles activés", - "description": "Checkbox to show only enabled styles" + "message": "Seulement les styles activés" }, "manageOnlyExternal": { - "message": "Seulement les styles externes", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Seulement les styles externes" }, "manageOnlyLocal": { - "message": "Seulement les styles créés localement", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Seulement les styles créés localement" }, "manageOnlyLocalTooltip": { - "message": "(les styles non installés via une page userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(les styles non installés via une page userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Styles non Usercss uniquement", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Styles non Usercss uniquement" }, "manageOnlyUpdates": { - "message": "Avec mises à jour ou problèmes uniquement", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Avec mises à jour ou problèmes uniquement" }, "manageOnlyUsercss": { - "message": "Styles Usercss uniquement", - "description": "Checkbox to show only Usercss styles" + "message": "Styles Usercss uniquement" }, "menuShowBadge": { - "message": "Montrer le nombre de styles actifs", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Montrer le nombre de styles actifs" }, "meta_invalidCheckboxDefault": { - "message": "Case à cocher @var invalide : la valeur doit être 0 ou 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Case à cocher @var invalide : la valeur doit être 0 ou 1" }, "meta_invalidColor": { "message": "Couleur @var invalide : $color$ n’est pas une couleur", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Nombre attendu" + }, "meta_invalidRange": { "message": "@var $type$ invalide : la valeur doit être un nombre ou un tableau", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "@var $type$ invalide : plusieurs unités sont définies", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "@var $type$ invalide : le tableau contient trop d’items", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "@var $type$ invalide : les items dans le tableau doivent être des nombres, chaines de caractères ou null", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -748,16 +571,6 @@ }, "meta_invalidRangeDefault": { "message": "@var $type$ invalide : la valeur par défaut est null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "@var $type$ invalide : la valeur par défaut est en dessous du minimum", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -766,7 +579,22 @@ }, "meta_invalidRangeMax": { "message": "@var $type$ invalide : la valeur par défaut est au-dessus du maximum", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "@var $type$ invalide : la valeur par défaut est en dessous du minimum", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "@var $type$ invalide : plusieurs unités sont définies", "placeholders": { "type": { "content": "$1" @@ -775,7 +603,14 @@ }, "meta_invalidRangeStep": { "message": "@var $type$ invalide : la valeur par défaut n’est pas un multiple du pas", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "@var $type$ invalide : le tableau contient trop d’items", "placeholders": { "type": { "content": "$1" @@ -784,7 +619,6 @@ }, "meta_invalidRangeUnits": { "message": "@var $type$ invalide : '$units$' n’est pas une unité valide", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -794,37 +628,40 @@ } } }, - "meta_invalidSelect": { - "message": "@var select invalide : la valeur par défaut doit être un tableau ou un objet", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "@var $type$ invalide : les items dans le tableau doivent être des nombres, chaines de caractères ou null", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "@var select invalide : les valeurs dans le tableau/objet doivent être des chaines de caractères", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "@var select invalide : la valeur par défaut doit être un tableau ou un objet" }, "meta_invalidSelectEmptyOptions": { - "message": "@var select invalide : la liste d’options est vide", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select invalide : la liste d’options est vide" }, "meta_invalidSelectLabel": { - "message": "@var select invalide : le label de l’option est vide", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select invalide : le label de l’option est vide" }, "meta_invalidSelectMultipleDefaults": { - "message": "@var select invalide : plusieurs options par défaut sont définies", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select invalide : plusieurs options par défaut sont définies" }, "meta_invalidSelectNameDuplicated": { - "message": "@var select invalide : nom d’option dupliqué", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select invalide : nom d’option dupliqué" + }, + "meta_invalidSelectValue": { + "message": "@var select invalide : les valeurs dans le tableau/objet doivent être des chaines de caractères" }, "meta_invalidSelectValueMismatch": { - "message": "@var select invalide : la valeur n’existe pas dans la liste d’options", - "description": "Error displayed when the value of @var select is invalid" + "message": "@var select invalide : la valeur n’existe pas dans la liste d’options" + }, + "meta_invalidString": { + "message": "Chaine entre guillemets attendue" }, "meta_invalidURLProtocol": { "message": "Protocole de l’URL invalide. Seuls http et https sont autorisés : $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -832,29 +669,13 @@ } }, "meta_invalidVersion": { - "message": "Numéro de version invalide. La valeur ne correspond pas au motif SemVer : $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Nombre attendu", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Chaine entre guillemets attendue", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Numéro de version invalide" }, "meta_invalidWord": { - "message": "Mot attendu", - "description": "Error displayed when the value is expected to be a word" + "message": "Mot attendu" }, "meta_missingChar": { "message": "Caractères attendus : $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -862,12 +683,10 @@ } }, "meta_missingEOT": { - "message": "Données EOT attendues", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Données EOT attendues" }, "meta_missingMandatory": { "message": "Métadonnée obligatoire manquante: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -876,7 +695,6 @@ }, "meta_unknownJSONLiteral": { "message": "JSON invalide : $literal$ n’est pas une valeur JSON valide", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -885,16 +703,22 @@ }, "meta_unknownMeta": { "message": "Métadonnée inconnue: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownPreprocessor": { + "message": "@preprocessor inconnu: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Type @$varkey$ inconnu : $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -904,142 +728,107 @@ } } }, - "meta_unknownPreprocessor": { - "message": "@preprocessor inconnu: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Pour importer vos styles, vous devez d’abord les exporter." }, "noStylesForSite": { - "message": "Aucun style n'est installé pour ce site.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Aucun style n'est installé pour ce site." }, "openManage": { - "message": "Gestion", - "description": "Link to open the manage page." + "message": "Gestion" }, "openStylesManager": { - "message": "Ouvrir le gestionnaire de styles", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Ouvrir le gestionnaire de styles" }, "optionsAdvanced": { - "message": "Avancé", - "description": "" + "message": "Avancé" }, "optionsAdvancedContextDelete": { - "message": "Ajouter « Supprimer » dans le menu contextuel de l’extension", - "description": "" + "message": "Ajouter « Supprimer » dans le menu contextuel de l’extension" }, "optionsAdvancedExposeIframes": { - "message": "Exposer les iframes via HTML[stylus-iframe]", - "description": "" + "message": "Exposer les iframes via HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Expose le domaine principal dans chaque iframe.\nPermet d’écrire du CSS spécifique aux iframe tel que :\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Expose le domaine principal dans chaque iframe.\nPermet d’écrire du CSS spécifique aux iframe tel que :\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Écrire un nouveau style en tant que usercss", - "description": "" + "message": "Écrire un nouveau style en tant que usercss" }, "optionsBadgeDisabled": { - "message": "Couleur d'arrière plan si désactivé", - "description": "" + "message": "Couleur d'arrière plan si désactivé" }, "optionsBadgeNormal": { - "message": "Couleur d'arrière plan", - "description": "" + "message": "Couleur d'arrière plan" }, "optionsCheck": { - "message": "Mettre à jour les styles", - "description": "" + "message": "Mettre à jour les styles" }, "optionsCheckUpdate": { - "message": "Vérifier et installer toutes les mises à jour disponibles", - "description": "" + "message": "Vérifier et installer toutes les mises à jour disponibles" }, "optionsCustomizeBadge": { - "message": "Badge sur l’icône de la barre d’outils", - "description": "" + "message": "Badge sur l’icône de la barre d’outils" }, "optionsCustomizeIcon": { - "message": "Icône de la barre d’outils", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Mises à jour", - "description": "" + "message": "Icône de la barre d’outils" }, "optionsCustomizeSync": { - "message": "Synchroniser dans le nuage", - "description": "" + "message": "Synchroniser dans le nuage" + }, + "optionsCustomizeUpdate": { + "message": "Mises à jour" }, "optionsIconDark": { - "message": "Thème foncé", - "description": "" + "message": "Thème foncé" }, "optionsIconLight": { - "message": "Thème clair", - "description": "" + "message": "Thème clair" }, "optionsOpen": { - "message": "Ouvrir", - "description": "" + "message": "Ouvrir" }, "optionsOpenManager": { - "message": "Gérer les styles", - "description": "" + "message": "Gérer les styles" }, "optionsPopupWidth": { - "message": "Largeur de la popup (en pixels)", - "description": "" + "message": "Largeur de la popup (en pixels)" }, "optionsReset": { - "message": "Ré-initialiser les options", - "description": "" + "message": "Ré-initialiser les options" }, "optionsResetButton": { - "message": "Ré-initialiser les options", - "description": "" + "message": "Ré-initialiser les options" }, "optionsSubheading": { - "message": "Plus de paramètres", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Quand vous importez des sauvegardes de style d’une ancienne version ou de Stylish, faites une vérification manuellement pour vous assurez que tous les styles sont à jour.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Intervalle de mise à jour automatique des styles utilisateur en heures (spécifier 0 pour désactiver)", - "description": "" - }, - "optionsSyncNone": { - "message": "Aucun", - "description": "" + "message": "Plus de paramètres" }, "optionsSyncConnect": { - "message": "Connecter", - "description": "" + "message": "Connecter" }, "optionsSyncDisconnect": { - "message": "Disconnecter", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Synchroniser maintenant", - "description": "" + "message": "Déconnecter" }, "optionsSyncLogin": { - "message": "Se connecter", - "description": "" + "message": "Se connecter" + }, + "optionsSyncNone": { + "message": "Aucun" + }, + "optionsSyncStatusConnected": { + "message": "Connecté" + }, + "optionsSyncStatusConnecting": { + "message": "Connection..." + }, + "optionsSyncStatusDisconnected": { + "message": "Déconnecté" + }, + "optionsSyncStatusDisconnecting": { + "message": "Déconnexion..." }, "optionsSyncStatusPull": { "message": "Récupération du style $loaded$de $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1051,7 +840,6 @@ }, "optionsSyncStatusPush": { "message": "Application du style $loaded$ de $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1062,256 +850,193 @@ } }, "optionsSyncStatusSyncing": { - "message": "Synchronisation...", - "description": "" + "message": "Synchronisation..." }, - "optionsSyncStatusConnecting": { - "message": "Connection...", - "description": "" + "optionsSyncSyncNow": { + "message": "Synchroniser maintenant" }, - "optionsSyncStatusConnected": { - "message": "Connecté", - "description": "" + "optionsUpdateImportNote": { + "message": "Quand vous importez des sauvegardes de style d’une ancienne version ou de Stylish, faites une vérification manuellement pour vous assurez que tous les styles sont à jour." }, - "optionsSyncStatusDisconnecting": { - "message": "Disconnection...", - "description": "" + "optionsUpdateInterval": { + "message": "Intervalle de mise à jour automatique des styles utilisateur en heures (spécifier 0 pour désactiver)" }, - "optionsSyncStatusDisconnected": { - "message": "Disconnecté", - "description": "" + "overwriteFileExport": { + "message": "Voulez-vous écraser un fichier existant ?" }, "paginationCurrent": { - "message": "Page courante", - "description": "Tooltip for the current page index in search results" + "message": "Page courante" }, "paginationEstimated": { - "message": "Nombre de pages estimé", - "description": "Tooltip for the total page count in search results" + "message": "Nombre de pages estimé" }, "paginationNext": { - "message": "Page suivante", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Page suivante" }, "paginationPrevious": { - "message": "Page précédente", - "description": "Tooltip for the '<-' button in search results" + "message": "Page précédente" }, "paginationTotal": { - "message": "Pages au total", - "description": "" + "message": "Pages au total" }, "parseUsercssError": { - "message": "Stylus a échoué à parser le usercss :", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus a échoué à parser le usercss :" }, "popupAutoResort": { - "message": "Retrier les styles dans la popup à chaque (dés)activation", - "description": "Label for the checkbox controlling popup resorting." + "message": "Retrier les styles dans la popup à chaque (dés)activation" }, "popupBorders": { - "message": "Ajouter des bordures blanches sur les côtés", - "description": "" + "message": "Ajouter des bordures blanches sur les côtés" }, "popupBordersTooltip": { - "message": "Utile pour les thèmes sombres dans le nouveau Chrome qui ne décore plus les bordures sur les côtés", - "description": "" + "message": "Utile pour les thèmes sombres dans le nouveau Chrome qui ne décore plus les bordures sur les côtés" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, aussi sur le pavé numérique - (dés)active le Nième style (0 correspond à 10)\n- (dés)active le 1er style avec un nom qui commence par la lettre\n ouvre l’éditeur au lieu de (dés)activer\n active les styles listés\n désactive les styles listés\n et <`> (accent grave) — désactive les styles initialement activés ; ne s’applique pas aux styles activés ensuite pendant que la popup est ouverte pour que vous puissiez restaurer la sélection initiale après avoir tester des choses : désactive simplement tout, puis (dés)active par ex. \nPlus d’informations sur le wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, aussi sur le pavé numérique - (dés)active le Nième style (0 correspond à 10)\n- (dés)active le 1er style avec un nom qui commence par la lettre\n ouvre l’éditeur au lieu de (dés)activer\n active les styles listés\n désactive les styles listés\n et <`> (accent grave) — désactive les styles initialement activés ; ne s’applique pas aux styles activés ensuite pendant que la popup est ouverte pour que vous puissiez restaurer la sélection initiale après avoir tester des choses : désactive simplement tout, puis (dés)active par ex. \nPlus d’informations sur le wiki" }, "popupHotkeysTooltip": { - "message": "Cliquez pour voir les raccourcis clavier disponibles", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Cliquez pour voir les raccourcis clavier disponibles" }, "popupManageTooltip": { - "message": "Maj-clic ou clic droit ouvre le gestionnaire avec les styles applicables au site courant.", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Maj-clic ou clic droit ouvre le gestionnaire avec les styles applicables au site courant." }, "popupMenuButtonTooltip": { - "message": "Actions", - "description": "Tooltip for menu button in popup." + "message": "Actions" }, "popupOpenEditInWindow": { - "message": "Ouvrir l'éditeur dans une nouvelle fenêtre", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Ouvrir l'éditeur dans une nouvelle fenêtre" }, "popupOpenEditInWindowTooltip": { - "message": "Également activé en détachant l’onglet de l’éditeur depuis une fenêtre du navigateur,\net désactivé en attachant un unique onglet de l’éditeur dans une autre fenêtre.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Également activé en détachant l’onglet de l’éditeur depuis une fenêtre du navigateur,\net désactivé en attachant un unique onglet de l’éditeur dans une autre fenêtre." }, "popupStylesFirst": { - "message": "List styles before commands in the toolbar button menu", - "description": "Label for the checkbox controlling section order in the popup." + "message": "List styles before commands in the toolbar button menu" }, "prefShowBadge": { - "message": "Afficher le nombre de styles actifs pour le site actuel sur le boutton Stylus", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Afficher le nombre de styles actifs pour le site actuel sur le boutton Stylus" }, "previewLabel": { - "message": "Prévisualiser en direct", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Prévisualiser en direct" }, "previewTooltip": { - "message": "Applique temporairement les changements sans sauvegarder.\nSauvegarde le style pour rendre les changements permanents.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Applique temporairement les changements sans sauvegarder.\nSauvegarde le style pour rendre les changements permanents." + }, + "readingStyles": { + "message": "Lecture des styles…" }, "reload": { - "message": "Recharger l´extension Stylus", - "description": "Context menu reload" + "message": "Recharger l´extension Stylus" }, "replace": { - "message": "Remplacer", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Remplacer" }, "replaceAll": { - "message": "Tout remplacer", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Tout remplacer" }, "replaceWith": { - "message": "Remplacer par", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Remplacer par" }, "retrieveBckp": { - "message": "Importer des styles", - "description": "" + "message": "Importer des styles" + }, + "retrieveDropboxSync": { + "message": "Importer depuis Dropbox" }, "search": { - "message": "Rechercher", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Rechercher" }, "searchCaseSensitive": { - "message": "Sensible à la casse", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Sensible à la casse" }, "searchNumberOfResults": { - "message": "Nombre de correspondances", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Nombre de correspondances" }, "searchNumberOfResults2": { - "message": "Nombre de correspondances dans le code et les valeurs « s’applique à »", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Nombre de correspondances dans le code et les valeurs « s’applique à »" }, "searchRegexp": { - "message": "Utilisez la syntaxe /re/ pour rechercher par regexp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Utilisez la syntaxe /re/ pour rechercher par regexp" }, "searchResultInstallCount": { - "message": "Total d'installations", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Total d'installations" }, "searchResultNoneFound": { - "message": "Aucun style trouvé pour ce site", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Aucun style trouvé pour ce site" }, "searchResultRating": { - "message": "Note", - "description": "Text for label that shows the search result's rating" + "message": "Note" }, "searchResultUpdated": { - "message": "Mis à jour", - "description": "Text for label that shows the search result's last update date" + "message": "Mis à jour" }, "searchResultWeeklyCount": { - "message": "Installations hebdomadaires", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Rechercher dans le contenu", - "description": "Label for the search filter textbox on the Manage styles page" - }, - "searchStylesHelp": { - "message": "La touche place le curseur dans le champ de recherche.\nText brut : cherche parmi le nom, code, URL de la page d’accueil et les sites auquel il s’applique. Les mots avec moins de 3 lettres sont ignorés.\nStyles correspondant à une URL complète : préfixez la recherche avec , par ex. \nExpressions rationnelles : incluez les slash et les chevrons, par ex. \nMots exacts : entourez la requête de guillemets droits, par ex. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Installations hebdomadaires" }, "sectionAdd": { - "message": "Ajouter une section", - "description": "Label for the button to add a section" + "message": "Ajouter une section" }, "sectionRemove": { - "message": "Supprimer la section", - "description": "Label for the button to remove a section" + "message": "Supprimer la section" }, "sectionRestore": { - "message": "Restaurer la section supprimée", - "description": "Label for the button to restore a removed section" + "message": "Restaurer la section supprimée" }, "shortcuts": { - "message": "Raccourcis", - "description": "Go to shortcut configuration" + "message": "Raccourcis" }, "shortcutsNote": { - "message": "Définir les raccourcis clavier", - "description": "" + "message": "Définir les raccourcis clavier" }, "sortDateNewestFirst": { - "message": "les plus récents en premier", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "les plus récents en premier" }, "sortDateOldestFirst": { - "message": "les plus anciens en premier", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "les plus anciens en premier" }, "sortLabel": { - "message": "Choisissez un tri à appliquer aux styles installés", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Choisissez un tri à appliquer aux styles installés" }, "sortLabelTitleAsc": { - "message": "Titre croissant", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Titre croissant" }, "sortLabelTitleDesc": { - "message": "Titre décroissant", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Titre décroissant" }, "sortStylesHelp": { - "message": "Choisir le type de tri à appliquer aux entrées installées à l’intérieur du menu de tri. La configuration par défaut applique un tri croissant (de A à Z) aux titres des entrées. Le tri « Titre décroissant » va appliquer un tri décroissant (de Z à A) aux titres.\nIl y a d’autres préréglages qui vous permettent de trier les entrées par de multiples critères. Pensez à ça comme trier un tableau avec de multiples colonnes et chaque catégorie dans une sélection (entre les signes plus) représente une colonne, ou groupe.\nPar exemple, si le paramètre est « Activé (en premier) + Titre », les entrées vont être triées de telle sorte que les entrées activées sont triées en haut de la liste, puis un tri croissant (de A à Z) est appliqué séparément sur les titres des entrées activées et des entrées désactivées.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Choisir le type de tri à appliquer aux entrées installées à l’intérieur du menu de tri. La configuration par défaut applique un tri croissant (de A à Z) aux titres des entrées. Le tri « Titre décroissant » va appliquer un tri décroissant (de Z à A) aux titres.\nIl y a d’autres préréglages qui vous permettent de trier les entrées par de multiples critères. Pensez à ça comme trier un tableau avec de multiples colonnes et chaque catégorie dans une sélection (entre les signes plus) représente une colonne, ou groupe.\nPar exemple, si le paramètre est « Activé (en premier) + Titre », les entrées vont être triées de telle sorte que les entrées activées sont triées en haut de la liste, puis un tri croissant (de A à Z) est appliqué séparément sur les titres des entrées activées et des entrées désactivées." }, "sortStylesHelpTitle": { - "message": "Trier les contenus", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Trier les contenus" }, "styleBadRegexp": { - "message": "Le Regexp est éronné", - "description": "Validation message for a bad regexp in a style" + "message": "Le Regexp est éronné" }, "styleBeautify": { - "message": "Embellir ", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Embellir " }, "styleBeautifyIndentConditional": { - "message": "Indenter @media, @supports", - "description": "CSS-beautifier option" + "message": "Indenter @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Conserver les sauts de ligne", - "description": "CSS-beautifier option" + "message": "Conserver les sauts de ligne" }, "styleCancelEditLabel": { - "message": "Retour à la gestion", - "description": "Label for cancel button for style editing" + "message": "Retour à la gestion" }, "styleChangesNotSaved": { - "message": "Vous avez apporté des modifications à ce style sans les enregistrer.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Vous avez apporté des modifications à ce style sans les enregistrer." }, "styleEnabledLabel": { - "message": "Activé", - "description": "Label for the enabled state of styles" + "message": "Activé" }, "styleFromMozillaFormatError": { - "message": "Échec de l'importation depuis le format Mozilla", - "description": "Label for the import error" + "message": "Échec de l'importation depuis le format Mozilla" }, "styleFromMozillaFormatPrompt": { - "message": "Coller le code au format Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Coller le code au format Mozilla" }, "styleInstall": { "message": "Installer \"$stylename$\" dans Stylus ?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1320,7 +1045,6 @@ }, "styleInstallFailed": { "message": "Échec de l’installation du style utilisateur !\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1329,86 +1053,68 @@ }, "styleInstallOverwrite": { "message": "\"$stylename$\" est déjà installé. L'écraser ?\nVersion : $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Veuillez saisir un nom", - "description": "Error displayed when user saves without providing a name" + "message": "Veuillez saisir un nom" }, "styleMozillaFormatHeading": { - "message": "Format Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Format Mozilla" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Le style n'a pu s'appliquer en raison d'une utilisation erronée de 'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Le style n'a pu s'appliquer en raison d'une utilisation erronée de 'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "Quelques règles 'regexp()' qui n’ont pas pu être compilées", - "description": "" + "message": "Quelques règles 'regexp()' qui n’ont pas pu être compilées" }, "styleRegexpPartialExplanation": { - "message": "Ce style utilise des regexps correspondant partiellement en violation de la spécification CSS4 @document qui demande une correspondance totale de l’URL. Les sections de CSS affectées n’ont pas été appliquées à la page. Ce style a probablement été créé dans Stylish-for-Chrome qui vérifie mal les règles « regexp() » depuis sa toute première version (bug connu).", - "description": "" + "message": "Ce style utilise des regexps correspondant partiellement en violation de la spécification CSS4 @document qui demande une correspondance totale de l’URL. Les sections de CSS affectées n’ont pas été appliquées à la page. Ce style a probablement été créé dans Stylish-for-Chrome qui vérifie mal les règles « regexp() » depuis sa toute première version (bug connu)." }, "styleRegexpProblemTooltip": { - "message": "Nombre de sections non appliquées à cause d’une utilisation incorrecte de 'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Nombre de sections non appliquées à cause d’une utilisation incorrecte de 'regexp()'" }, "styleRegexpTestButton": { - "message": "Test d’expression rationnelle", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Test d’expression rationnelle" }, "styleRegexpTestFull": { - "message": "Onglets correspondants", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Onglets correspondants" }, "styleRegexpTestInvalid": { - "message": "Expression rationnelle invalides ignorées", - "description": "RegExp test report: label for the invalid expressions" + "message": "Expression rationnelle invalides ignorées" }, "styleRegexpTestNone": { - "message": "Aucun onglet correspondant", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Aucun onglet correspondant" }, "styleRegexpTestNote": { - "message": "Note : utilisez un simple \\ pour échapper dans le champ de regexp, qui sera automatiquement converti en \\\\ dans le code conformément à la spécification des chaines citées en CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Note : utilisez un simple \\ pour échapper dans le champ de regexp, qui sera automatiquement converti en \\\\ dans le code conformément à la spécification des chaines citées en CSS." }, "styleRegexpTestPartial": { - "message": "Correspondance partielle, donc ignorée", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Correspondance partielle, donc ignorée" }, "styleRegexpTestTitle": { - "message": "Liste d’onglets ouverts correspondants (cliquez sur l’URL pour focaliser son onglet)", - "description": "RegExp test report: title of the report" + "message": "Liste d’onglets ouverts correspondants (cliquez sur l’URL pour focaliser son onglet)" }, "styleSaveLabel": { - "message": "Enregistrer", - "description": "Label for save button for style editing" + "message": "Enregistrer" }, "styleToMozillaFormatHelp": { - "message": "Le code au format Mozilla peut être utilisé dans Stylish for Firefox et envoyé à userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Le code au format Mozilla peut être utilisé dans Stylish for Firefox et envoyé à userstyles.org." }, "styleToMozillaFormatTitle": { - "message": "Style au format Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Style au format Mozilla" }, "styleUpdate": { "message": "Voulez-vous mettre à jour « $stylename$ » ?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1416,72 +1122,55 @@ } }, "styleUpdateDiscardChanges": { - "message": "Le style a été changé en dehors de l’éditeur. Voulez-vous recharger le style ?", - "description": "Confirmation to update the style in the editor" + "message": "Le style a été changé en dehors de l’éditeur. Voulez-vous recharger le style ?" }, "stylusUnavailableForURL": { - "message": "Stylus ne fonctionne pas sur les pages de ce genre", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus ne fonctionne pas sur les pages de ce genre" }, "stylusUnavailableForURLdetails": { - "message": "Par mesure de sécurité, le navigateur interdit aux extensions d’affecter ses pages internes (comme chrome://version, la page nouvel onglet standard de Chrome 61, about:addons, etc.) ainsi que les pages d’autres extensions. Chaque navigateur restreint également l’accès à sa propre galerie d’extensions (tel que le Chrome Web Store ou AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Par mesure de sécurité, le navigateur interdit aux extensions d’affecter ses pages internes (comme chrome://version, la page nouvel onglet standard de Chrome 61, about:addons, etc.) ainsi que les pages d’autres extensions. Chaque navigateur restreint également l’accès à sa propre galerie d’extensions (tel que le Chrome Web Store ou AMO)." + }, + "syncDropboxDeprecated": { + "message": "L´import/export Dropbox est remplacé par une méthode de synchronisation de styles plus avancés dans la page des options" + }, + "syncDropboxStyles": { + "message": "Exporter vers Dropbox" }, "syncStorageErrorSaving": { - "message": "La valeur ne peut pas être sauvegardée. Essayez de réduire la quantité de texte.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "La valeur ne peut pas être sauvegardée. Essayez de réduire la quantité de texte." }, "toggleStyle": { - "message": "(Dés)activer le style", - "description": "Label for the checkbox to enable/disable a style" + "message": "(Dés)activer le style" }, "undo": { - "message": "Annuler", - "description": "Button label" + "message": "Annuler" }, "undoGlobal": { - "message": "Tout annuler", - "description": "CSS-beautify global Undo button label" + "message": "Tout annuler" }, "unreachableAMO": { - "message": "Firefox interdit l'accès pour ce site", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox interdit l'accès pour ce site" }, "unreachableAMOHint": { - "message": "Pour autoriser l’accès, ouvrir , clic-droit sur la liste, cliquez sur « Nouvelle » puis « Valeur booléenne », coller et cliquer sur OK, , OK, et rechargez la page .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "Pour Firefox 60 et suivants, vous devez également supprimer le domaine AMO de dans .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Seul Firefox 59 et supérieur peut être configuré pour autoriser les WebExtensions à ajouter des éléments de style sur des sites protégés par CSP comme celui-ci.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Pour autoriser l’accès, ouvrir , clic-droit sur la liste, cliquez sur « Nouvelle » puis « Valeur booléenne », coller et cliquer sur OK, , OK, et rechargez la page ." }, "unreachableContentScript": { - "message": "Impossible de communiquer avec la page. Essayez de recharger l’onglet.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Impossible de communiquer avec la page. Essayez de recharger l’onglet." }, "unreachableFileHint": { - "message": "Stylus peut accéder aux URL file:// uniquement si vous cochez la case correspondante pour l’extension Stylus sur la page chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus peut accéder aux URL file:// uniquement si vous cochez la case correspondante pour l’extension Stylus sur la page chrome://extensions." }, - "InaccessibleFileHint": { - "message": "Stylus ne peut pas accéder à certains types de fichiers (ex: fichiers .pdf et .json).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unzipStyles": { + "message": "Décompression des styles…" }, "updateAllCheckSucceededNoUpdate": { - "message": "Aucune mise à jour trouvée.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Aucune mise à jour trouvée." }, "updateAllCheckSucceededSomeEdited": { - "message": "Certains styles pouvant être mis à jour n’ont pas été vérifiés pour éviter de perdre de potentiels modifications locales. Les mises à jour peuvent être forcées en vérifiant individuellement, ou en lançant une autre vérification pour tous les styles (les modifications locales seront perdues).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Certains styles pouvant être mis à jour n’ont pas été vérifiés pour éviter de perdre de potentiels modifications locales. Les mises à jour peuvent être forcées en vérifiant individuellement, ou en lançant une autre vérification pour tous les styles (les modifications locales seront perdues)." }, "updateCheckFailBadResponseCode": { "message": "Échec de la mise à jour: le serveur a renvoyé le code $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1489,127 +1178,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Échec de la mise à jour: le serveur est inaccessible.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Échec de la mise à jour: le serveur est inaccessible." }, "updateCheckHistory": { - "message": "Historique des vérifications de mises à jour", - "description": "" + "message": "Historique des vérifications de mises à jour" }, "updateCheckManualUpdateForce": { - "message": "Installer les mises à jour (les modifications locales seront écrasées)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Installer les mises à jour (les modifications locales seront écrasées)" }, "updateCheckManualUpdateHint": { - "message": "Forcer une mise à jour écrasera les modifications faites localement.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Forcer une mise à jour écrasera les modifications faites localement." }, "updateCheckSkippedLocallyEdited": { - "message": "Ce style a été modifié localement", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Ce style a été modifié localement" }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Ce style a peut-être été modifié localement.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Ce style a peut-être été modifié localement." }, "updateCheckSucceededNoUpdate": { - "message": "Le style est à jour.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Le style est à jour." }, "updateCompleted": { - "message": "Mise à jour terminée.", - "description": "Text that displays when an update completed" + "message": "Mise à jour terminée." }, "updatesCurrentlyInstalled": { - "message": "Mises à jour installées :", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Veuillez changer la valeur de @name ou @namespace afin d'éviter d'écraser un style pré-existant.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Le style a été mis à jour ou supprimer après l’apparition du dialogue de confirmation. Ces variables n’ont pas été sauvegardées pour éviter de corrompre les métadonnées du style :", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Spécifiez @name dans le code", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Remplacer le modèle par défaut pour les nouveaux styles Usercss par le code actuel ?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Un @name vide remplace le modèle par défaut", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Insérer le code ici...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "La version est antérieure à celle déjà installée.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Écrire un style pour :", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "cette URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Exporter vers Dropbox", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "L´import/export Dropbox est remplacé par une méthode de synchronisation de styles plus avancés dans la page des options", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Importer depuis Dropbox", - "description": "" - }, - "overwriteFileExport": { - "message": "Voulez-vous écraser un fichier existant ?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Fichier sauvegardé avec succès", - "description": "" - }, - "noFileToImport": { - "message": "Pour importer vos styles, vous devez d’abord les exporter.", - "description": "" - }, - "connectingDropbox": { - "message": "Connexion à Dropbox…", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "La connexion à Dropbox est disponible uniquement dans les applications installées directement depuis le Web Store.", - "description": "" - }, - "gettingStyles": { - "message": "Récupération de tous les styles…", - "description": "" - }, - "zipStyles": { - "message": "Compression des styles…", - "description": "" - }, - "unzipStyles": { - "message": "Décompression des styles…", - "description": "" - }, - "readingStyles": { - "message": "Lecture des styles…", - "description": "" + "message": "Mises à jour installées :" }, "uploadingFile": { - "message": "Envoi du fichier…", - "description": "" + "message": "Envoi du fichier…" + }, + "usercssAvoidOverwriting": { + "message": "Veuillez changer la valeur de @name ou @namespace afin d'éviter d'écraser un style pré-existant." + }, + "usercssConfigIncomplete": { + "message": "Le style a été mis à jour ou supprimer après l’apparition du dialogue de confirmation. Ces variables n’ont pas été sauvegardées pour éviter de corrompre les métadonnées du style :" + }, + "usercssEditorNamePlaceholder": { + "message": "Spécifiez @name dans le code" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Remplacer le modèle par défaut pour les nouveaux styles Usercss par le code actuel ?" + }, + "usercssReplaceTemplateName": { + "message": "Un @name vide remplace le modèle par défaut" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Insérer le code ici..." + }, + "versionInvalidOlder": { + "message": "La version est antérieure à celle déjà installée." + }, + "writeStyleFor": { + "message": "Écrire un style pour :" + }, + "writeStyleForURL": { + "message": "cette URL" + }, + "zipStyles": { + "message": "Compression des styles…" } } diff --git a/_locales/fy/messages.json b/_locales/fy/messages.json index b31422bb..e186fc6a 100644 --- a/_locales/fy/messages.json +++ b/_locales/fy/messages.json @@ -1,19 +1,15 @@ { "addStyleLabel": { - "message": "Nije styl skriuwe", - "description": "Label for the button to go to the add style page" + "message": "Nije styl skriuwe" }, "addStyleTitle": { - "message": "Styl tafoegje", - "description": "Title of the page for adding styles" + "message": "Styl tafoegje" }, "appliesAdd": { - "message": "Tafoegje", - "description": "Label for the button to add an 'applies' entry" + "message": "Tafoegje" }, "appliesDisplay": { "message": "Fan tapassing op: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,107 +17,81 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "en mear", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "en mear" }, "appliesDomainOption": { - "message": "URL’s op it domein", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL’s op it domein" }, "appliesHelp": { - "message": "Brûk de ‘Fan tapassing op’-funksjes om de URL’s foar de koade yn dizze seksje te beheinen.", - "description": "Help text for 'applies to' section" + "message": "Brûk de ‘Fan tapassing op’-funksjes om de URL’s foar de koade yn dizze seksje te beheinen." }, "appliesLabel": { - "message": "Fan tapassing op", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Fan tapassing op" }, "appliesRegexpOption": { - "message": "URL’s oerienkommend mei de regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL’s oerienkommend mei de regexp" }, "appliesRemove": { - "message": "Fuortsmite", - "description": "Label for the button to remove an 'applies' entry" + "message": "Fuortsmite" }, "appliesSpecify": { - "message": "Spesifisearje", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Spesifisearje" }, "appliesToEverything": { - "message": "Alles", - "description": "Text displayed for styles that apply to all sites" + "message": "Alles" }, "appliesUrlPrefixOption": { - "message": "URL’s begjinnend mei", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL’s begjinnend mei" }, "applyAllUpdates": { - "message": "Alle fernijingen tapasse", - "description": "Label for the button to apply all detected updates" + "message": "Alle fernijingen tapasse" }, "checkAllUpdates": { - "message": "Alle stilen kontrolearje op fernijingen", - "description": "Label for the button to check all styles for updates" + "message": "Alle stilen kontrolearje op fernijingen" }, "checkForUpdate": { - "message": "Kontrolearje op fernijing", - "description": "Label for the button to check a single style for an update" + "message": "Kontrolearje op fernijing" }, "checkingForUpdate": { - "message": "Kontrolearje...", - "description": "Text to display when checking a style for an update" + "message": "Kontrolearje..." }, "cm_indentWithTabs": { - "message": "Ljepblêden mei tûke ynspringing brûke", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Ljepblêden mei tûke ynspringing brûke" }, "cm_keyMap": { - "message": "Toetseboerdyndieling", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Toetseboerdyndieling" }, "cm_lineWrapping": { - "message": "Teksttebekrin", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Teksttebekrin" }, "cm_smartIndent": { - "message": "Tûke ynspringing brûke", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Tûke ynspringing brûke" }, "cm_tabSize": { - "message": "Ljepblêdgrutte", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Ljepblêdgrutte" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" }, "confirmNo": { - "message": "Nee", - "description": "'No' button in a confirm dialog" + "message": "Nee" }, "confirmStop": { - "message": "Stoppe", - "description": "'Stop' button in a confirm dialog" + "message": "Stoppe" }, "confirmYes": { - "message": "Ja", - "description": "'Yes' button in a confirm dialog" + "message": "Ja" }, "dbError": { - "message": "Der is in flater bard by it brûken fan de Stylus-database. Wolle jo in webside mei mooglike oplossingen besykje?", - "description": "Prompt when a DB error is encountered" + "message": "Der is in flater bard by it brûken fan de Stylus-database. Wolle jo in webside mei mooglike oplossingen besykje?" }, "defaultTheme": { - "message": "standert", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "standert" }, "deleteStyleConfirm": { - "message": "Binne jo wis dat jo dizze styl fuortsmite wolle?", - "description": "Confirmation before deleting a style" + "message": "Binne jo wis dat jo dizze styl fuortsmite wolle?" }, "deleteStyleLabel": { - "message": "Fuortsmite", - "description": "Label for the button to delete a style" + "message": "Fuortsmite" } -} \ No newline at end of file +} diff --git a/_locales/gl/messages.json b/_locales/gl/messages.json index 2aea3704..2f3b1c55 100644 --- a/_locales/gl/messages.json +++ b/_locales/gl/messages.json @@ -1,19 +1,15 @@ { "addStyleTitle": { - "message": "Engadir Estilo", - "description": "Title of the page for adding styles" + "message": "Engadir Estilo" }, "alphaChannel": { - "message": "Opacidade", - "description": "Label of color's opacity" + "message": "Opacidade" }, "appliesAdd": { - "message": "Engadir", - "description": "Label for the button to add an 'applies' entry" + "message": "Engadir" }, "appliesDisplay": { "message": "Aplica a: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,47 +17,36 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "e mais", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "e mais" }, "appliesDomainOption": { - "message": "URLs no dominio", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs no dominio" }, "appliesLabel": { - "message": "Aplica para", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Aplica para" }, "appliesLineWidgetWarning": { - "message": "Non funciona con CSS minificado", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Non funciona con CSS minificado" }, "appliesRegexpOption": { - "message": "URLs que concorden co regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs que concorden co regexp" }, "appliesRemove": { - "message": "Suprimir", - "description": "Label for the button to remove an 'applies' entry" + "message": "Suprimir" }, "appliesSpecify": { - "message": "Especificar", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Especificar" }, "appliesToEverything": { - "message": "Todo", - "description": "Text displayed for styles that apply to all sites" + "message": "Todo" }, "appliesUrlPrefixOption": { - "message": "URLs que comecen por", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLs que comecen por" }, "applyAllUpdates": { - "message": "Aplicar tódalas actualizacións", - "description": "Label for the button to apply all detected updates" + "message": "Aplicar tódalas actualizacións" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" } -} \ No newline at end of file +} diff --git a/_locales/he/messages.json b/_locales/he/messages.json index c9b25a9a..a41eb011 100644 --- a/_locales/he/messages.json +++ b/_locales/he/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "כתוב עיצוב חדש", - "description": "Label for the button to go to the add style page" + "message": "כתוב עיצוב חדש" }, "addStyleTitle": { - "message": "הוסף עיצוב", - "description": "Title of the page for adding styles" + "message": "הוסף עיצוב" }, "alphaChannel": { - "message": "שקיפות", - "description": "Label of color's opacity" + "message": "שקיפות" }, "appliesAdd": { - "message": "הוסף", - "description": "Label for the button to add an 'applies' entry" + "message": "הוסף" }, "appliesDisplay": { "message": "חל על: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +20,229 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "עוד", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "עוד" }, "appliesDomainOption": { - "message": "קישורים תחת הדומיין", - "description": "Option to make the style apply to the entered string as a domain" + "message": "קישורים תחת הדומיין" }, "appliesHelp": { - "message": "השתמש בהגדרות 'חל על' כדי להגביל את כתובות האתרים שהקוד בסעיף זה חל עליהם.", - "description": "Help text for 'applies to' section" + "message": "השתמש בהגדרות 'חל על' כדי להגביל את כתובות האתרים שהקוד בסעיף זה חל עליהם." }, "appliesLabel": { - "message": "חל על", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "חל על" }, "appliesLineWidgetLabel": { - "message": "הצג אינפורמציית 'חל על'", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "הצג אינפורמציית 'חל על'" }, "appliesLineWidgetWarning": { - "message": "לא עובד עם CSS מוקטן (minified)", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "לא עובד עם CSS מוקטן (minified)" }, "appliesRegexpOption": { - "message": "קישורים התואמים את ה־regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "קישורים התואמים את ה־regexp" }, "appliesRemove": { - "message": "הסר", - "description": "Label for the button to remove an 'applies' entry" + "message": "הסר" }, "appliesRemoveError": { - "message": "לא ניתן להסיר את הערך 'חל על' האחרון", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "לא ניתן להסיר את הערך 'חל על' האחרון" }, "appliesSpecify": { - "message": "פרט", - "description": "Label for the button to make a style apply only to specific sites" + "message": "פרט" }, "appliesToEverything": { - "message": "כל האתרים", - "description": "Text displayed for styles that apply to all sites" + "message": "כל האתרים" }, "appliesUrlOption": { - "message": "כתובת אתר", - "description": "Option to make the style apply to the entered string as a URL" + "message": "כתובת אתר" }, "appliesUrlPrefixOption": { - "message": "קישורים המתחילים ב", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "קישורים המתחילים ב" }, "applyAllUpdates": { - "message": "החל את כל העדכונים", - "description": "Label for the button to apply all detected updates" + "message": "החל את כל העדכונים" }, "author": { - "message": "מחבר", - "description": "Label for the style author" + "message": "מחבר" }, "backupButtons": { - "message": "גיבוי", - "description": "Heading for backup" + "message": "גיבוי" }, "backupMessage": { - "message": "בחר קובץ או גרור ושחרר אותו בדף זה.", - "description": "Message for backup" + "message": "בחר קובץ או גרור ושחרר אותו בדף זה." }, "bckpInstStyles": { - "message": "ייצא עיצובים", - "description": "" + "message": "ייצא עיצובים" }, "checkAllUpdates": { - "message": "בדוקים עדכונים עבור כל העיצובים", - "description": "Label for the button to check all styles for updates" + "message": "בדוקים עדכונים עבור כל העיצובים" }, "checkAllUpdatesForce": { - "message": "בדוק שוב, לא ערכתי אף עיצוב!", - "description": "Label for the button to apply all detected updates" + "message": "בדוק שוב, לא ערכתי אף עיצוב!" }, "checkForUpdate": { - "message": "בדוק עדכונים", - "description": "Label for the button to check a single style for an update" + "message": "בדוק עדכונים" }, "checkingForUpdate": { - "message": "בודק...", - "description": "Text to display when checking a style for an update" + "message": "בודק..." }, "clickToUninstall": { - "message": "הקלק להסרה", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "הקלק להסרה" }, "cm_autoCloseBrackets": { - "message": "סגור באופן אוטומטי סוגריים וגרשיים", - "description": "Label for the checkbox in the style editor." + "message": "סגור באופן אוטומטי סוגריים וגרשיים" }, "cm_autoCloseBracketsTooltip": { - "message": "הוסף סוגר באופן אוטומטי כשמקלידים את אחת מהפותחים של ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "הוסף סוגר באופן אוטומטי כשמקלידים את אחת מהפותחים של ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "השלמה אוטומטית בזמן הכתיבה", - "description": "Label for the checkbox in the style editor." + "message": "השלמה אוטומטית בזמן הכתיבה" }, "cm_colorpicker": { - "message": "פלטות בחירת צבעים עבור צבעי CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "פלטות בחירת צבעים עבור צבעי CSS" }, "cm_indentWithTabs": { - "message": "השתמש בטאבים יחד עם הזחה חכמה", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "השתמש בטאבים יחד עם הזחה חכמה" }, "cm_keyMap": { - "message": "מפת מקשים", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "מפת מקשים" }, "cm_lineWrapping": { - "message": "עטיפת מילים", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "עטיפת מילים" }, "cm_linter": { - "message": "עורך שגיאות CSS", - "description": "Select the linter to check for CSS issues" + "message": "עורך שגיאות CSS" }, "cm_matchHighlight": { - "message": "הדגש", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "הדגש" }, "cm_matchHighlightSelection": { - "message": "בחירה בלבד", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "בחירה בלבד" }, "cm_matchHighlightToken": { - "message": "תג תחת הסמן", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "תג תחת הסמן" }, "cm_resizeGripHint": { - "message": "דאבל קליק להגדלה מירבית/איפוס הגובה", - "description": "Tooltip for the resize grip in style editor" + "message": "דאבל קליק להגדלה מירבית/איפוס הגובה" }, "cm_selectByTokens": { - "message": "דאבל קליק בוחר תגים", - "description": "Label for the checkbox in the editor." + "message": "דאבל קליק בוחר תגים" }, "cm_selectByTokensTooltip": { - "message": "דוגמאות לתגים: .foo-bar-2 #aabbcc 0.32 !important\nבמצב מושבת: נבחרות מילים המופרדות בין פיסוק.", - "description": "" + "message": "דוגמאות לתגים: .foo-bar-2 #aabbcc 0.32 !important\nבמצב מושבת: נבחרות מילים המופרדות בין פיסוק." }, "cm_smartIndent": { - "message": "השתמש בהזחה חכמה", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "השתמש בהזחה חכמה" }, "cm_tabSize": { - "message": "גודל הכרטיסייה", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "גודל הכרטיסייה" }, "cm_theme": { - "message": "ערכת נושא", - "description": "Label for the style editor's CSS theme." + "message": "ערכת נושא" }, "colorpickerSwitchFormatTooltip": { - "message": "החלף פורמטים: HEX -> RGB -> HSL.\nלחץ Shift כדי להפוך את הכיוון.\nגם באמצעות מקשי PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "החלף פורמטים: HEX -> RGB -> HSL.\nלחץ Shift כדי להפוך את הכיוון.\nגם באמצעות מקשי PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "פתח את פלטת בחירת הצבעים", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "פתח את פלטת בחירת הצבעים" }, "configOnChange": { - "message": "בעת שינוי", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "בעת שינוי" }, "configOnChangeTooltip": { - "message": "שמור והחל שינויים באופן אוטומטי", - "description": "" + "message": "שמור והחל שינויים באופן אוטומטי" }, "configureStyle": { - "message": "הגדר", - "description": "Label for the button to configure usercss userstyle" + "message": "הגדר" }, "configureStyleOnHomepage": { - "message": "הגדר בדף הבית", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "הגדר בדף הבית" }, "confirmCancel": { - "message": "ביטול", - "description": "" + "message": "ביטול" }, "confirmClose": { - "message": "סגור", - "description": "'Close' button in a confirm dialog" + "message": "סגור" }, "confirmDefault": { - "message": "השתמש בברירת מחדל", - "description": "'Set to default' button in a confirm dialog" + "message": "השתמש בברירת מחדל" }, "confirmDelete": { - "message": "מחיקה", - "description": "" + "message": "מחיקה" }, "confirmDiscardChanges": { - "message": "למחוק את השינויים?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "למחוק את השינויים?" }, "confirmNo": { - "message": "לא", - "description": "'No' button in a confirm dialog" + "message": "לא" }, "confirmOK": { - "message": "אוקיי", - "description": "" + "message": "אוקיי" }, "confirmSave": { - "message": "שמור", - "description": "'Save' button in a confirm dialog" + "message": "שמור" }, "confirmStop": { - "message": "עצור", - "description": "'Stop' button in a confirm dialog" + "message": "עצור" }, "confirmYes": { - "message": "כן", - "description": "'Yes' button in a confirm dialog" + "message": "כן" + }, + "connectingDropbox": { + "message": "מתחבר אל Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "התחברות אל Dropbox זמינה רק בהרחבות המותקנות ישירות מחנות האינטרנט" }, "copied": { - "message": "הועתק אל לוח ההעתקה", - "description": "Message shown when content has been copied to the clipboard" + "message": "הועתק אל לוח ההעתקה" }, "copy": { - "message": "העתק אל לוח ההעתקה", - "description": "Tooltip for elements which can be copied" + "message": "העתק אל לוח ההעתקה" }, "dateInstalled": { - "message": "תאריך התקנה", - "description": "Option text for the user to sort the style by install date" + "message": "תאריך התקנה" }, "dateUpdated": { - "message": "תאריך עדכון", - "description": "Option text for the user to sort the style by last update date" + "message": "תאריך עדכון" }, "dbError": { - "message": "אירעה שגיאה בשימוש במסד הנתונים של Stylus. האם ברצונך לבקר בדף אינטרנט עם פתרונות אפשריים?", - "description": "Prompt when a DB error is encountered" + "message": "אירעה שגיאה בשימוש במסד הנתונים של Stylus. האם ברצונך לבקר בדף אינטרנט עם פתרונות אפשריים?" }, "defaultTheme": { - "message": "ברירת מחדל", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "ברירת מחדל" }, "deleteStyleConfirm": { - "message": "האם אתה בטוח שברצונך למחוק עיצוב זה?", - "description": "Confirmation before deleting a style" + "message": "האם אתה בטוח שברצונך למחוק עיצוב זה?" }, "deleteStyleLabel": { - "message": "מחק", - "description": "Label for the button to delete a style" + "message": "מחק" }, "description": { - "message": "עיצוב מחדש של האינטרנט באמצעות Stylus, מנהל סגנונות משתמש. Stylus מאפשר לך להתקין בקלות עיצובים וערכות נושא עבור אתרים פופולריים רבים.", - "description": "Extension description" + "message": "עיצוב מחדש של האינטרנט באמצעות Stylus, מנהל סגנונות משתמש. Stylus מאפשר לך להתקין בקלות עיצובים וערכות נושא עבור אתרים פופולריים רבים." }, "disableAllStyles": { - "message": "השבת את כל העיצובים", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "השבת את כל העיצובים" }, "disableStyleLabel": { - "message": "השבת", - "description": "Label for the button to disable a style" + "message": "השבת" }, "dragDropMessage": { - "message": "שחרר את קובץ הגיבוי שלך בכל מקום בדף זה על־מנת לייבא אותו.", - "description": "Drag'n'drop message" + "message": "שחרר את קובץ הגיבוי שלך בכל מקום בדף זה על־מנת לייבא אותו." }, "editDeleteText": { - "message": "מחק", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "מחק" }, "editGotoLine": { - "message": "גש לשורה (או line:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "גש לשורה (או line:col)" }, "editStyleHeading": { - "message": "ערוך עיצוב", - "description": "Title of the page for editing styles" + "message": "ערוך עיצוב" }, "editStyleLabel": { - "message": "ערוך", - "description": "Label for the button to go to the edit style page" + "message": "ערוך" }, "editStyleTitle": { "message": "עריכת העיצוב $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,220 +250,174 @@ } }, "enableStyleLabel": { - "message": "אפשר", - "description": "Label for the button to enable a style" + "message": "אפשר" }, "excludeStyleByDomainLabel": { - "message": "אל תכלול את הדומיין הנוכחי", - "description": "" + "message": "אל תכלול את הדומיין הנוכחי" }, "excludeStyleByUrlLabel": { - "message": "אל תכלול את כתובת האתר הנוכחית", - "description": "" + "message": "אל תכלול את כתובת האתר הנוכחית" }, "exportLabel": { - "message": "ייצא", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "ייצא" + }, + "exportSavedSuccess": { + "message": "קובץ נשמר בהצלחה" }, "externalFeedback": { - "message": "חוות דעת", - "description": "Label for the external link to send feedback for the style" + "message": "חוות דעת" }, "externalHomepage": { - "message": "דף הבית", - "description": "Label for the external link to style's homepage" + "message": "דף הבית" }, "externalLink": { - "message": "קישור חיצוני", - "description": "Label for external links" + "message": "קישור חיצוני" }, "externalSupport": { - "message": "תמיכה", - "description": "Label for the external link to style's support site" + "message": "תמיכה" }, "externalUsercssDocument": { - "message": "תיעוד ל־Usercss", - "description": "Label for the external link to usercss documentation" + "message": "תיעוד ל־Usercss" }, "filteredStyles": { "message": "$numShown$ מתוך $numTotal$ סך־הכל", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "מסננים שהוחלו כעת אינם תואמים עיצובים", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "מסננים שהוחלו כעת אינם תואמים עיצובים" }, "findStyles": { - "message": "מצא עיצובים", - "description": "Text for a link that gets a list of styles for the current site" + "message": "מצא עיצובים" }, "findStylesForSite": { - "message": "מצא סגנונות נוספים לאתר זה", - "description": "Text for a link that gets a list of styles for the current site" + "message": "מצא סגנונות נוספים לאתר זה" }, "findStylesInline": { - "message": "מוטבע", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "מוטבע" }, "findStylesInlineTooltip": { - "message": "הצג תוצאות חיפוש בחלון זה.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "הצג תוצאות חיפוש בחלון זה." }, "genericAdd": { - "message": "הוספה", - "description": "Used in various places for an action that adds something" + "message": "הוספה" }, "genericClone": { - "message": "שכפול", - "description": "Used in various places for an action that clones something" + "message": "שכפול" }, "genericDisabledLabel": { - "message": "מושבת", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "מושבת" }, "genericEnabledLabel": { - "message": "מאופשר", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "מאופשר" }, "genericError": { - "message": "שגיאה", - "description": "Used in various places to indicate some error occurred." + "message": "שגיאה" }, "genericHistoryLabel": { - "message": "היסטוריה", - "description": "Used in various places to show a history log of something" + "message": "היסטוריה" }, "genericNext": { - "message": "הבא", - "description": "Used in various places to select/perform the next step/action" + "message": "הבא" }, "genericPrevious": { - "message": "הקודם", - "description": "Used in various places to select/perform the previous step/action" + "message": "הקודם" }, "genericResetLabel": { - "message": "איפוס", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "איפוס" }, "genericSavedMessage": { - "message": "נשמר", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "נשמר" }, "genericTitle": { - "message": "כותרת", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "כותרת" }, "genericUnknown": { - "message": "לא ידוע", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "לא ידוע" + }, + "gettingStyles": { + "message": "טוען את כל העיצובים..." }, "helpAlt": { - "message": "עזרה", - "description": "Alternate text for help buttons" + "message": "עזרה" }, "helpKeyMapCommand": { - "message": "הקלד שם פקודה", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "הקלד שם פקודה" }, "helpKeyMapHotkey": { - "message": "לחץ על המקש החם", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "לחץ על המקש החם" }, "hostDisabled": { - "message": "מארח זה הושבת בגלל באג בגרסה הנוכחית של הדפדפן בו נעשה שימוש", - "description": "Tooltip for cloud host disabled" + "message": "מארח זה הושבת בגלל באג בגרסה הנוכחית של הדפדפן בו נעשה שימוש" }, "importAppendLabel": { - "message": "צרף לעיצוב", - "description": "Label for the button to import a style and append to the existing sections" + "message": "צרף לעיצוב" }, "importAppendTooltip": { - "message": "צרף את העיצוב המיובא לעיצוב הנוכחי", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "צרף את העיצוב המיובא לעיצוב הנוכחי" }, "importLabel": { - "message": "ייבא", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "ייבא" }, "importReplaceLabel": { - "message": "דרוס עיצוב", - "description": "Label for the button to import and overwrite current style" + "message": "דרוס עיצוב" }, "importReplaceTooltip": { - "message": "הסר את התוכן של הסגנון הנוכחי והחלף אותו עם העיצוב המיובא", - "description": "Label for the button to import and overwrite current style" + "message": "הסר את התוכן של הסגנון הנוכחי והחלף אותו עם העיצוב המיובא" }, "importReportLegendAdded": { - "message": "נוספו", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "נוספו" }, "importReportLegendIdentical": { - "message": "זהה דולג", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "זהה דולג" }, "importReportLegendInvalid": { - "message": "לא חוקי דולג", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "לא חוקי דולג" }, "importReportLegendUpdatedBoth": { - "message": "מטא דאטה והקוד עודכנו", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "מטא דאטה והקוד עודכנו" }, "importReportLegendUpdatedCode": { - "message": "קודים עודכנו", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "קודים עודכנו" }, "importReportLegendUpdatedMeta": { - "message": "מטא דאטה עודכן", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "מטא דאטה עודכן" }, "importReportTitle": { - "message": "סיום ייבוא עיצובים", - "description": "Title of the report shown after importing styles" + "message": "סיום ייבוא עיצובים" }, "importReportUnchanged": { - "message": "שום דבר לא השתנה.", - "description": "Message in the report shown after importing styles" + "message": "שום דבר לא השתנה." }, "importReportUndone": { - "message": "עיצובים הוחזרו", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "עיצובים הוחזרו" }, "importReportUndoneTitle": { - "message": "הייבוא בוטל", - "description": "Title of the message box shown after undoing the import of styles" + "message": "הייבוא בוטל" }, "installButton": { - "message": "התקן עיצוב", - "description": "Label for install button" + "message": "התקן עיצוב" }, "installButtonInstalled": { - "message": "העיצוב הותקן בהצלחה", - "description": "Text displayed when the style is successfully installed" + "message": "העיצוב הותקן בהצלחה" }, "installButtonReinstall": { - "message": "התקן עיצוב מחדש", - "description": "Label for reinstall button" + "message": "התקן עיצוב מחדש" }, "installButtonUpdate": { - "message": "עדכן עיצוב", - "description": "Label for update button" + "message": "עדכן עיצוב" }, "installUpdate": { - "message": "התקן עדכון", - "description": "Label for the button to install an update for a single style" + "message": "התקן עדכון" }, "installUpdateFrom": { "message": "נכון לעכשיו הסגנון מעודכן מ־ $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -543,28 +425,22 @@ } }, "installUpdateFromLabel": { - "message": "בדוק עדכונים", - "description": "Label for the checkbox to save current URL for update check" + "message": "בדוק עדכונים" }, "license": { - "message": "רישיון", - "description": "Label for the license" + "message": "רישיון" }, "linkGetHelp": { - "message": "קבל עזרה", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "קבל עזרה" }, "linkGetStyles": { - "message": "מצא עיצובים", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "מצא עיצובים" }, "linkTranslate": { - "message": "תרגום", - "description": "Transifex link text on the manage page" + "message": "תרגום" }, "linterCSSLintIncompatible": { "message": "עורך שגיאות ה־CSS אינו תומך ב־ $preprocessorname$ כמעבד מקדים", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -572,12 +448,10 @@ } }, "linterCSSLintSettings": { - "message": "(הגדר כלל כ: 0 = מושבת; 1 = אזהרה; 2 = שגיאה)", - "description": "CSSLint rule config values" + "message": "(הגדר כלל כ: 0 = מושבת; 1 = אזהרה; 2 = שגיאה)" }, "linterConfigPopupTitle": { "message": "הגדר $linter$ כללי תצורה", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -585,20 +459,16 @@ } }, "linterConfigTooltip": { - "message": "לחץ להגדרת linter זה", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "לחץ להגדרת linter זה" }, "linterInvalidConfigError": { - "message": "לא נשמר עקב הגדרות תצורה לא חוקיות אלה:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "לא נשמר עקב הגדרות תצורה לא חוקיות אלה:" }, "linterIssues": { - "message": "תקלות", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "תקלות" }, "linterIssuesHelp": { "message": "התקלות האלו נמצאו על־ידי $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -606,112 +476,85 @@ } }, "linterJSONError": { - "message": "פורמט JSON לא תקין", - "description": "Setting linter config with invalid JSON" + "message": "פורמט JSON לא תקין" }, "linterResetMessage": { - "message": "על־מנת לבטל איפוסים לא רצוניים, לחץ Ctrl-Z (או Cmd-Z) בתיבת הטקסט", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "על־מנת לבטל איפוסים לא רצוניים, לחץ Ctrl-Z (או Cmd-Z) בתיבת הטקסט" }, "linterRulesLink": { - "message": "ראה רשימת חוקים מלאה", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "ראה רשימת חוקים מלאה" }, "liveReloadError": { - "message": "התרחשה שגיאה בזמן הצפייה בקובץ", - "description": "The label of live-reload error" + "message": "התרחשה שגיאה בזמן הצפייה בקובץ" }, "liveReloadLabel": { - "message": "רענון לייב (live)", - "description": "The label of live-reload feature" + "message": "רענון לייב (live)" }, "manageFavicons": { - "message": "הצגת אייקונים בעמודת 'חל על'", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "הצגת אייקונים בעמודת 'חל על'" }, "manageFaviconsGray": { - "message": "האפרת האייקונים", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "האפרת האייקונים" }, "manageFaviconsHelp": { - "message": "Stylus משתמש בשירות חיצוני https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus משתמש בשירות חיצוני https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "מסננים", - "description": "Label for filters container" + "message": "מסננים" }, "manageHeading": { - "message": "עיצובים מותקנים", - "description": "Heading for the manage page" + "message": "עיצובים מותקנים" }, "manageMaxTargets": { - "message": "מספר הפריטים ה־'מוחלים על'", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "מספר הפריטים ה־'מוחלים על'" }, "manageNewStyleAsUsercss": { - "message": "כ־Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "כ־Usercss" }, "manageNewUI": { - "message": "פריסת ממשק משתמש ניהול חדשה", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "פריסת ממשק משתמש ניהול חדשה" }, "manageOnlyDisabled": { - "message": "רק עיצובים מושבתים", - "description": "Checkbox to show only disabled styles" + "message": "רק עיצובים מושבתים" }, "manageOnlyEnabled": { - "message": "רק עיצובים מאופשרים", - "description": "Checkbox to show only enabled styles" + "message": "רק עיצובים מאופשרים" }, "manageOnlyExternal": { - "message": "רק עיצובים חיצוניים", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "רק עיצובים חיצוניים" }, "manageOnlyLocal": { - "message": "רק עיצובים שנוצרו באופן מקומי", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "רק עיצובים שנוצרו באופן מקומי" }, "manageOnlyLocalTooltip": { - "message": "(הסגנונות שלא הותקנו דרך דף userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(הסגנונות שלא הותקנו דרך דף userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "רק לא עיצובי Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "רק לא עיצובי Usercss" }, "manageOnlyUpdates": { - "message": "רק עם עדכונים או תקלות", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "רק עם עדכונים או תקלות" }, "manageOnlyUsercss": { - "message": "רק עיצובי Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "רק עיצובי Usercss" }, "menuShowBadge": { - "message": "הצג כמות עיצובים מאופשרים", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "הצג כמות עיצובים מאופשרים" }, "meta_invalidCheckboxDefault": { - "message": "תיבת סימון @var לא חוקית: הערך חייב להיות 0 או 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "תיבת סימון @var לא חוקית: הערך חייב להיות 0 או 1" }, "meta_invalidNumber": { - "message": "נדרש מספר", - "description": "Error displayed when the value is expected to be a number" + "message": "נדרש מספר" }, "meta_invalidString": { - "message": "נדרשת מחרוזת בתוך גרשיים", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "נדרשת מחרוזת בתוך גרשיים" }, "meta_invalidWord": { - "message": "נדרשת מילה", - "description": "Error displayed when the value is expected to be a word" + "message": "נדרשת מילה" }, "meta_missingChar": { "message": "נדרשים תווים: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -719,152 +562,121 @@ } }, "meta_missingEOT": { - "message": "נדרש מידע EOT", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "נדרש מידע EOT" + }, + "noFileToImport": { + "message": "כדי לייבא את הסגנונות שלך, עליך לייצא אותם תחילה." }, "noStylesForSite": { - "message": "לא הותקנו עיצובים עבור אתר זה.", - "description": "Text displayed when no styles are installed for the current site" + "message": "לא הותקנו עיצובים עבור אתר זה." }, "openManage": { - "message": "ניהול", - "description": "Link to open the manage page." + "message": "ניהול" }, "openOptions": { - "message": "אפשרויות", - "description": "Go to Options UI" + "message": "אפשרויות" }, "openStylesManager": { - "message": "פתח את מנהל העיצובים", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "פתח את מנהל העיצובים" }, "optionsActions": { - "message": "פעולות", - "description": "" + "message": "פעולות" }, "optionsAdvanced": { - "message": "מתקדם", - "description": "" + "message": "מתקדם" }, "optionsAdvancedContextDelete": { - "message": "הוספת 'מחק' בתפריט העורך", - "description": "" + "message": "הוספת 'מחק' בתפריט העורך" }, "optionsAdvancedExposeIframes": { - "message": "חשוף iframes באמצעות HTML [stylus-iframe]", - "description": "" + "message": "חשוף iframes באמצעות HTML [stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "חושף את תחום האתר העליון בכל iframe.\nמאפשר כתיבת CSS ספציפית ל־iframe כך:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "חושף את תחום האתר העליון בכל iframe.\nמאפשר כתיבת CSS ספציפית ל־iframe כך:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "כתוב עיצוב חדש בתור usercss", - "description": "" + "message": "כתוב עיצוב חדש בתור usercss" }, "optionsBadgeDisabled": { - "message": "צבע רקע בעת השבתה", - "description": "" + "message": "צבע רקע בעת השבתה" }, "optionsBadgeNormal": { - "message": "צבע רקע", - "description": "" + "message": "צבע רקע" }, "optionsCheck": { - "message": "עדכן עיצובים", - "description": "" + "message": "עדכן עיצובים" }, "optionsCheckUpdate": { - "message": "בדוק והתקן את כל העדכונים הזמינים", - "description": "" + "message": "בדוק והתקן את כל העדכונים הזמינים" }, "optionsCustomizeBadge": { - "message": "תג על האייקון בסרגל הכלים", - "description": "" + "message": "תג על האייקון בסרגל הכלים" }, "optionsCustomizeIcon": { - "message": "אייקון בסרגל הכלים", - "description": "" + "message": "אייקון בסרגל הכלים" }, "optionsCustomizePopup": { - "message": "חלון קופץ", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "עדכונים", - "description": "" + "message": "חלון קופץ" }, "optionsCustomizeSync": { - "message": "סנכרון לענן", - "description": "" + "message": "סנכרון לענן" + }, + "optionsCustomizeUpdate": { + "message": "עדכונים" }, "optionsHeading": { - "message": "אפשרויות", - "description": "Heading for options section on manage page." + "message": "אפשרויות" }, "optionsIconDark": { - "message": "ערכות נושא כהות לדפדפן", - "description": "" + "message": "ערכות נושא כהות לדפדפן" }, "optionsIconLight": { - "message": "ערכות נושא בהירות לדפדפן", - "description": "" + "message": "ערכות נושא בהירות לדפדפן" }, "optionsOpen": { - "message": "פתח", - "description": "" + "message": "פתח" }, "optionsOpenManager": { - "message": "נהל עיצובים", - "description": "" + "message": "נהל עיצובים" }, "optionsPopupWidth": { - "message": "רוחב החלון הקופץ (בפיקסלים)", - "description": "" + "message": "רוחב החלון הקופץ (בפיקסלים)" }, "optionsReset": { - "message": "איפוס האפשרויות לערכי ברירת המחדל", - "description": "" + "message": "איפוס האפשרויות לערכי ברירת המחדל" }, "optionsResetButton": { - "message": "אפס אפשרויות", - "description": "" + "message": "אפס אפשרויות" }, "optionsSubheading": { - "message": "אפשרויות נוספות", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "בעת ייבוא גיבויים לסגנון מגרסה ישנה או מ־Stylish, בדוק באופן חד פעמי אם יש עדכונים באופן ידני במנהל הסגנונות כדי לוודא שכל הסגנונות מעודכנים.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "עדכון אוטומטי של Userstyle בשעות (הגדר 0 להשבתה)", - "description": "" - }, - "optionsSyncNone": { - "message": "ללא", - "description": "" + "message": "אפשרויות נוספות" }, "optionsSyncConnect": { - "message": "התחבר", - "description": "" + "message": "התחבר" }, "optionsSyncDisconnect": { - "message": "התנתק", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "סנכרן כעת", - "description": "" + "message": "התנתק" }, "optionsSyncLogin": { - "message": "היכנס", - "description": "" + "message": "היכנס" + }, + "optionsSyncNone": { + "message": "ללא" + }, + "optionsSyncStatusConnected": { + "message": "מחובר" + }, + "optionsSyncStatusConnecting": { + "message": "מתחבר..." + }, + "optionsSyncStatusDisconnected": { + "message": "מנותק" + }, + "optionsSyncStatusDisconnecting": { + "message": "מתנתק..." }, "optionsSyncStatusPull": { "message": "מושך סגנון $loaded$ מתוך $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -876,7 +688,6 @@ }, "optionsSyncStatusPush": { "message": "מפרסם סגנון $loaded$ מתוך $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -887,236 +698,181 @@ } }, "optionsSyncStatusSyncing": { - "message": "מסנכרן...", - "description": "" + "message": "מסנכרן..." }, - "optionsSyncStatusConnecting": { - "message": "מתחבר...", - "description": "" + "optionsSyncSyncNow": { + "message": "סנכרן כעת" }, - "optionsSyncStatusConnected": { - "message": "מחובר", - "description": "" + "optionsUpdateImportNote": { + "message": "בעת ייבוא גיבויים לסגנון מגרסה ישנה או מ־Stylish, בדוק באופן חד פעמי אם יש עדכונים באופן ידני במנהל הסגנונות כדי לוודא שכל הסגנונות מעודכנים." }, - "optionsSyncStatusDisconnecting": { - "message": "מתנתק...", - "description": "" + "optionsUpdateInterval": { + "message": "עדכון אוטומטי של Userstyle בשעות (הגדר 0 להשבתה)" }, - "optionsSyncStatusDisconnected": { - "message": "מנותק", - "description": "" + "overwriteFileExport": { + "message": "האם ברצונך להחליף קובץ קיים?" }, "paginationCurrent": { - "message": "הדף הנוכחי", - "description": "Tooltip for the current page index in search results" + "message": "הדף הנוכחי" }, "paginationEstimated": { - "message": "מספר דפים משוער", - "description": "Tooltip for the total page count in search results" + "message": "מספר דפים משוער" }, "paginationNext": { - "message": "הדף הבא", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "הדף הבא" }, "paginationPrevious": { - "message": "הדף הקודם", - "description": "Tooltip for the '<-' button in search results" + "message": "הדף הקודם" }, "paginationTotal": { - "message": "סה״כ דפים", - "description": "" + "message": "סה״כ דפים" }, "parseUsercssError": { - "message": "Stylus נכשל בניתוח usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus נכשל בניתוח usercss:" }, "popupBorders": { - "message": "הוספת שוליים לבנים בצדדים", - "description": "" + "message": "הוספת שוליים לבנים בצדדים" }, "popupBordersTooltip": { - "message": "שימושי לעיצובים כהים ב־Chrome החדש מכיוון שהוא כבר לא מצייר את גבולות הצד", - "description": "" + "message": "שימושי לעיצובים כהים ב־Chrome החדש מכיוון שהוא כבר לא מצייר את גבולות הצד" }, "popupHotkeysTooltip": { - "message": "לחץ על־מנת לצפות במקשים החמים הזמינים", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "לחץ על־מנת לצפות במקשים החמים הזמינים" }, "popupManageTooltip": { - "message": "לחיצה על Shift או מקש ימני בעכבר פותח את מנהל העיצובים", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "לחיצה על Shift או מקש ימני בעכבר פותח את מנהל העיצובים" }, "popupMenuButtonTooltip": { - "message": "תפריט פעולות", - "description": "Tooltip for menu button in popup." + "message": "תפריט פעולות" }, "popupOpenEditInWindow": { - "message": "פתח את העורך בחלון חדש", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "פתח את העורך בחלון חדש" }, "popupOpenEditInWindowTooltip": { - "message": "מופעל גם על ידי ניתוק לשונית העורך מחלון הדפדפן,\nומושבת על ידי חיבור לשונית עורך יחידה לחלון אחר.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "מופעל גם על ידי ניתוק לשונית העורך מחלון הדפדפן,\nומושבת על ידי חיבור לשונית עורך יחידה לחלון אחר." }, "popupStylesFirst": { - "message": "עיצובים לפני הפקודות", - "description": "Label for the checkbox controlling section order in the popup." + "message": "עיצובים לפני הפקודות" }, "prefShowBadge": { - "message": "מספר העיצובים המאופשרים באתר הנוכחי", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "מספר העיצובים המאופשרים באתר הנוכחי" }, "previewLabel": { - "message": "תצוגת לייב (live)", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "תצוגת לייב (live)" }, "previewTooltip": { - "message": "החלת השינויים באופן זמני ללא שמירה.\nשמור את העיצוב על־מנת להפוך את השינויים לקבועים.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "החלת השינויים באופן זמני ללא שמירה.\nשמור את העיצוב על־מנת להפוך את השינויים לקבועים." + }, + "readingStyles": { + "message": "קורא עיצובים..." }, "reload": { - "message": "טען מחדש את Stylus", - "description": "Context menu reload" + "message": "טען מחדש את Stylus" }, "replace": { - "message": "החלף", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "החלף" }, "replaceAll": { - "message": "החלף הכל", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "החלף הכל" }, "replaceWith": { - "message": "החלף עם", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "החלף עם" }, "retrieveBckp": { - "message": "ייבוא עיצובים", - "description": "" + "message": "ייבוא עיצובים" + }, + "retrieveDropboxSync": { + "message": "Dropbox ייבוא" }, "search": { - "message": "חיפוש", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "חיפוש" }, "searchCaseSensitive": { - "message": "רגיש לאותיות גדולות/קטנות", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "רגיש לאותיות גדולות/קטנות" }, "searchNumberOfResults": { - "message": "מספר ההתאמות", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "מספר ההתאמות" }, "searchNumberOfResults2": { - "message": "מספר ההתאמות בקוד ובערכים ה'מוחלים על'", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "מספר ההתאמות בקוד ובערכים ה'מוחלים על'" }, "searchRegexp": { - "message": "השתמש ב־/re/ לחיפוש באמצעות ביטוי regexp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "השתמש ב־/re/ לחיפוש באמצעות ביטוי regexp" }, "searchResultInstallCount": { - "message": "סה״כ התקנות", - "description": "Text for label that shows the number of times a search result was installed" + "message": "סה״כ התקנות" }, "searchResultNoneFound": { - "message": "לא נמצאו עיצובים לאתר זה.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "לא נמצאו עיצובים לאתר זה." }, "searchResultRating": { - "message": "דירוג", - "description": "Text for label that shows the search result's rating" + "message": "דירוג" }, "searchResultUpdated": { - "message": "עודכן", - "description": "Text for label that shows the search result's last update date" + "message": "עודכן" }, "searchResultWeeklyCount": { - "message": "התקנות שבועיות", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "חיפוש תוכן", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "התקנות שבועיות" }, "sectionAdd": { - "message": "הוסף מקטע נוסף", - "description": "Label for the button to add a section" + "message": "הוסף מקטע נוסף" }, "sectionCode": { - "message": "קוד", - "description": "Label for the code for a section" + "message": "קוד" }, "sectionRemove": { - "message": "הסר סעיף", - "description": "Label for the button to remove a section" + "message": "הסר סעיף" }, "sectionRestore": { - "message": "שחזר סעיף שהוסר", - "description": "Label for the button to restore a removed section" + "message": "שחזר סעיף שהוסר" }, "shortcuts": { - "message": "קיצורי מקשים", - "description": "Go to shortcut configuration" + "message": "קיצורי מקשים" }, "shortcutsNote": { - "message": "הגדר קיצורי מקשים", - "description": "" + "message": "הגדר קיצורי מקשים" }, "sortDateNewestFirst": { - "message": "החדש ביותר ראשון", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "החדש ביותר ראשון" }, "sortDateOldestFirst": { - "message": "הישן ביותר ראשון", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "הישן ביותר ראשון" }, "sortLabel": { - "message": "בחר שיטת מיון להחלה על העיצובים המותקנים", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "בחר שיטת מיון להחלה על העיצובים המותקנים" }, "sortStylesHelpTitle": { - "message": "סידור תכנים", - "description": "Label for the sort info popup on the Manage styles page" + "message": "סידור תכנים" }, "styleBadRegexp": { - "message": "ביטוי ה־regexp לא תקין.", - "description": "Validation message for a bad regexp in a style" + "message": "ביטוי ה־regexp לא תקין." }, "styleBeautify": { - "message": "ייפה CSS", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "ייפה CSS" }, "styleBeautifyIndentConditional": { - "message": "הזחת @media, @supports", - "description": "CSS-beautifier option" + "message": "הזחת @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "שמור שורות חדשות", - "description": "CSS-beautifier option" + "message": "שמור שורות חדשות" }, "styleCancelEditLabel": { - "message": "חזרה לניהול", - "description": "Label for cancel button for style editing" + "message": "חזרה לניהול" }, "styleChangesNotSaved": { - "message": "ביצעת שינויים בסגנון זה מבלי לשמור.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "ביצעת שינויים בסגנון זה מבלי לשמור." }, "styleEnabledLabel": { - "message": "מאופשר", - "description": "Label for the enabled state of styles" + "message": "מאופשר" }, "styleFromMozillaFormatError": { - "message": "הייבוא נכשל מ־Mozilla format", - "description": "Label for the import error" + "message": "הייבוא נכשל מ־Mozilla format" }, "styleFromMozillaFormatPrompt": { - "message": "הדבק את הקוד ב־Mozilla-format", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "הדבק את הקוד ב־Mozilla-format" }, "styleInstall": { "message": "להתקין ';$stylename$' אל Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1125,7 +881,6 @@ }, "styleInstallFailed": { "message": "נכשל בהתקנת העיצוב!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1134,82 +889,65 @@ }, "styleInstallOverwrite": { "message": "';$stylename$' כבר מותקן. האם לדרוס?\nגרסה: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "הזן שם", - "description": "Error displayed when user saves without providing a name" + "message": "הזן שם" }, "styleMozillaFormatHeading": { - "message": "Mozilla-format", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla-format" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "הסגנון לא הוחל בגלל השימוש בו שגוי ב־'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "הסגנון לא הוחל בגלל השימוש בו שגוי ב־'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "לא היה ניתן להחיל מספר כללי 'regexp()' כלל.", - "description": "" + "message": "לא היה ניתן להחיל מספר כללי 'regexp()' כלל." }, "styleRegexpPartialExplanation": { - "message": "סגנון זה משתמש ב- regexps תואם חלקית בניגוד למפרט CSS4 @document המצריך התאמה מלאה של כתובת אתר. קטעי ה־CSS המושפעים לא הוחלו על הדף. סגנון זה נוצר ככל הנראה ב־Stylish-for-Chrome שבודק באופן שגוי את כללי 'regexp()' מאז הגרסה הראשונה (באג ידוע).", - "description": "" + "message": "סגנון זה משתמש ב- regexps תואם חלקית בניגוד למפרט CSS4 @document המצריך התאמה מלאה של כתובת אתר. קטעי ה־CSS המושפעים לא הוחלו על הדף. סגנון זה נוצר ככל הנראה ב־Stylish-for-Chrome שבודק באופן שגוי את כללי 'regexp()' מאז הגרסה הראשונה (באג ידוע)." }, "styleRegexpProblemTooltip": { - "message": "מספר המקטעים שלא הוחלו עקב שימוש שגוי ב־'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "מספר המקטעים שלא הוחלו עקב שימוש שגוי ב־'regexp()'" }, "styleRegexpTestButton": { - "message": "בדוק RegExp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "בדוק RegExp" }, "styleRegexpTestFull": { - "message": "כרטיסיות תואמות", - "description": "RegExp test report: label for the fully matching expressions" + "message": "כרטיסיות תואמות" }, "styleRegexpTestInvalid": { - "message": "ביטוי regrxp לא תקין", - "description": "RegExp test report: label for the invalid expressions" + "message": "ביטוי regrxp לא תקין" }, "styleRegexpTestNone": { - "message": "לא תואם אף כרטיסייה", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "לא תואם אף כרטיסייה" }, "styleRegexpTestPartial": { - "message": "לא תואם לחלוטין, לכן דולג", - "description": "RegExp test report: label for the partially matching expressions" + "message": "לא תואם לחלוטין, לכן דולג" }, "styleRegexpTestTitle": { - "message": "רשימת לשוניות פתוחות בהתאמה (לחץ על כתובת אתר למיקוד הלשונית שלה)", - "description": "RegExp test report: title of the report" + "message": "רשימת לשוניות פתוחות בהתאמה (לחץ על כתובת אתר למיקוד הלשונית שלה)" }, "styleSaveLabel": { - "message": "שמור", - "description": "Label for save button for style editing" + "message": "שמור" }, "styleToMozillaFormatHelp": { - "message": "ניתן לפרסם את ה־Mozilla format של הקוד לאתר userstyles.org ולהשתמש בו עם Stylish הקלאסי עבור Firefox", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "ניתן לפרסם את ה־Mozilla format של הקוד לאתר userstyles.org ולהשתמש בו עם Stylish הקלאסי עבור Firefox" }, "styleToMozillaFormatTitle": { - "message": "עיצוב ב־Mozilla-format", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "עיצוב ב־Mozilla-format" }, "styleUpdate": { "message": "האם אתה בטוח שברצונך לעדכן את '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1217,52 +955,46 @@ } }, "stylusUnavailableForURL": { - "message": "Stylus לא עובד על דפים כמו זה.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus לא עובד על דפים כמו זה." }, "stylusUnavailableForURLdetails": { - "message": "כאמצעי אבטחה, הדפדפן אוסר על הרחבות להשפיע על הדפים המובנים שלו (כמו chrome://version, הכרטיסייה החדשה הרגילה החל מ־Chrome 61, about:addons וכן הלאה), וכן על דפי הרחבות אחרים. כל דפדפן גם מגביל את הגישה לגלריית התוספים שלו (כמו חנות האינטרנט של Chrome או AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "כאמצעי אבטחה, הדפדפן אוסר על הרחבות להשפיע על הדפים המובנים שלו (כמו chrome://version, הכרטיסייה החדשה הרגילה החל מ־Chrome 61, about:addons וכן הלאה), וכן על דפי הרחבות אחרים. כל דפדפן גם מגביל את הגישה לגלריית התוספים שלו (כמו חנות האינטרנט של Chrome או AMO)." + }, + "syncDropboxStyles": { + "message": "ייצוא Dropbox" }, "syncStorageErrorSaving": { - "message": "הערך לא יכול להשמר. אנא נסה להקטין את גודל הטקסט.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "הערך לא יכול להשמר. אנא נסה להקטין את גודל הטקסט." }, "toggleStyle": { - "message": "אפשר או השבת עיצוב", - "description": "Label for the checkbox to enable/disable a style" + "message": "אפשר או השבת עיצוב" }, "undo": { - "message": "בטל", - "description": "Button label" + "message": "בטל" }, "undoGlobal": { - "message": "בטל בכל הסעיפים", - "description": "CSS-beautify global Undo button label" + "message": "בטל בכל הסעיפים" }, "unreachableAMO": { - "message": "Firefox לא מאפשרת גישה לאתר זה.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox לא מאפשרת גישה לאתר זה." }, "unreachableContentScript": { - "message": "לא ניתן לתקשר עם הדף. אנא טען מחדש את הכרטיסייה.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "לא ניתן לתקשר עם הדף. אנא טען מחדש את הכרטיסייה." }, "unreachableFileHint": { - "message": "Stylus יכול לגשת לכתובות אתר file:// רק אם תיבת הסימון המתאימה עבור סיומת Stylus פעילה בדף chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus יכול לגשת לכתובות אתר file:// רק אם תיבת הסימון המתאימה עבור סיומת Stylus פעילה בדף chrome://extensions." + }, + "unzipStyles": { + "message": "מחלץ עיצובים..." }, "updateAllCheckSucceededNoUpdate": { - "message": "לא נמצאו עדכונים.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "לא נמצאו עדכונים." }, "updateAllCheckSucceededSomeEdited": { - "message": "כמה סגנונות הניתנים לעדכון לא נבדקו כדי להימנע מאבדן עריכות מקומיות אפשריות. ניתן לאלץ עדכונים על ידי בדיקה באופן פרטני, או על ידי הפעלת בדיקה אחרת לכל הסגנונות (עריכות מקומיות יידרסו).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "כמה סגנונות הניתנים לעדכון לא נבדקו כדי להימנע מאבדן עריכות מקומיות אפשריות. ניתן לאלץ עדכונים על ידי בדיקה באופן פרטני, או על ידי הפעלת בדיקה אחרת לכל הסגנונות (עריכות מקומיות יידרסו)." }, "updateCheckFailBadResponseCode": { "message": "העדכון נכשל: השרת החזיר תגובה עם הקוד $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1270,111 +1002,54 @@ } }, "updateCheckFailServerUnreachable": { - "message": "העדכון נכשל: השרת לא זמין.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "העדכון נכשל: השרת לא זמין." }, "updateCheckHistory": { - "message": "היסטוריה של בדיקת עדכונים", - "description": "" + "message": "היסטוריה של בדיקת עדכונים" }, "updateCheckManualUpdateForce": { - "message": "התקן עדכון (עריכות מקומיות יידרסו)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "התקן עדכון (עריכות מקומיות יידרסו)" }, "updateCheckManualUpdateHint": { - "message": "אילוץ עדכון ידרוס כל עריכה מקומית.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "אילוץ עדכון ידרוס כל עריכה מקומית." }, "updateCheckSkippedLocallyEdited": { - "message": "עיצוב זה נערך באופן מקומי.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "עיצוב זה נערך באופן מקומי." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "ייתכן כי עיצוב זה נערך באופן מקומי.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "ייתכן כי עיצוב זה נערך באופן מקומי." }, "updateCheckSucceededNoUpdate": { - "message": "העיצוב מעודכן.", - "description": "Text that displays when an update check completed and no update is available" + "message": "העיצוב מעודכן." }, "updateCompleted": { - "message": "העדכון הושלם.", - "description": "Text that displays when an update completed" + "message": "העדכון הושלם." }, "updatesCurrentlyInstalled": { - "message": "העדכונים הותקנו.", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "אנא שנה את הערך של @name or @namespace על־מנת להמנע מדריסה של עיצוב קיים.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssEditorNamePlaceholder": { - "message": "ציין @name בקוד", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "הכנס כאן קוד...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "הגרסה ישנה יותר מהעיצוב המותקן.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "כתוב עיצוב עבור: ", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "הקישור הנוכחי", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "ייצוא Dropbox", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox ייבוא", - "description": "" - }, - "overwriteFileExport": { - "message": "האם ברצונך להחליף קובץ קיים?", - "description": "" - }, - "exportSavedSuccess": { - "message": "קובץ נשמר בהצלחה", - "description": "" - }, - "noFileToImport": { - "message": "כדי לייבא את הסגנונות שלך, עליך לייצא אותם תחילה.", - "description": "" - }, - "connectingDropbox": { - "message": "מתחבר אל Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "התחברות אל Dropbox זמינה רק בהרחבות המותקנות ישירות מחנות האינטרנט", - "description": "" - }, - "gettingStyles": { - "message": "טוען את כל העיצובים...", - "description": "" - }, - "zipStyles": { - "message": "מקבץ עיצובים...", - "description": "" - }, - "unzipStyles": { - "message": "מחלץ עיצובים...", - "description": "" - }, - "readingStyles": { - "message": "קורא עיצובים...", - "description": "" + "message": "העדכונים הותקנו." }, "uploadingFile": { - "message": "מעלה קובץ...", - "description": "" + "message": "מעלה קובץ..." + }, + "usercssAvoidOverwriting": { + "message": "אנא שנה את הערך של @name or @namespace על־מנת להמנע מדריסה של עיצוב קיים." + }, + "usercssEditorNamePlaceholder": { + "message": "ציין @name בקוד" + }, + "usercssReplaceTemplateSectionBody": { + "message": "הכנס כאן קוד..." + }, + "versionInvalidOlder": { + "message": "הגרסה ישנה יותר מהעיצוב המותקן." + }, + "writeStyleFor": { + "message": "כתוב עיצוב עבור: " + }, + "writeStyleForURL": { + "message": "הקישור הנוכחי" + }, + "zipStyles": { + "message": "מקבץ עיצובים..." } } diff --git a/_locales/hr/messages.json b/_locales/hr/messages.json deleted file mode 100644 index 9e26dfee..00000000 --- a/_locales/hr/messages.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/_locales/hu/messages.json b/_locales/hu/messages.json index 1195eb83..1e6e7a66 100644 --- a/_locales/hu/messages.json +++ b/_locales/hu/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "A Stylus nem tud bizonyos fájltípusokhoz hozzáférni (pl. PDF- & JSON-fájlokhoz)" + }, "addStyleLabel": { - "message": "Új stílus írása", - "description": "Label for the button to go to the add style page" + "message": "Új stílus írása" }, "addStyleTitle": { - "message": "Stílus hozzáadása", - "description": "Title of the page for adding styles" + "message": "Stílus hozzáadása" }, "alphaChannel": { - "message": "Átlátszatlanság", - "description": "Label of color's opacity" + "message": "Átlátszatlanság" }, "appliesAdd": { - "message": "Hozzáadás", - "description": "Label for the button to add an 'applies' entry" + "message": "Hozzáadás" }, "appliesDisplay": { "message": "Érvényes erre:$applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,284 +23,220 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "és ennél is több", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "és ennél is több" }, "appliesDomainOption": { - "message": "URL-ek a tartományban", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL-ek a tartományban" }, "appliesHelp": { - "message": "Az \"Érvényes erre\" beállítással korlártozható, hogy milyen URL-ekre vonatkozik az itt lévő kód.", - "description": "Help text for 'applies to' section" + "message": "Az \"Érvényes erre\" beállítással korlártozható, hogy milyen URL-ekre vonatkozik az itt lévő kód." }, "appliesLabel": { - "message": "Érvényes erre", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Érvényes erre" }, "appliesLineWidgetLabel": { - "message": "Információ arról, hogy mire érvényes", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Információ arról, hogy mire érvényes" }, "appliesLineWidgetWarning": { - "message": "Nem működik minimalizált CSS-sel", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Nem működik minimalizált CSS-sel" }, "appliesRegexpOption": { - "message": "Reguláris kifejezésre (regexp) illeszkedő URL-ek", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Reguláris kifejezésre (regexp) illeszkedő URL-ek" }, "appliesRemove": { - "message": "Eltávolítás", - "description": "Label for the button to remove an 'applies' entry" + "message": "Eltávolítás" }, "appliesRemoveError": { - "message": "Nem lehet eltávolítani az utolsó 'érvényes erre' bejegyzést", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Nem lehet eltávolítani az utolsó 'érvényes erre' bejegyzést" }, "appliesSpecify": { - "message": "Szűkítés", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Szűkítés" }, "appliesToEverything": { - "message": "Minden", - "description": "Text displayed for styles that apply to all sites" + "message": "Minden" }, "appliesUrlPrefixOption": { - "message": "URL-ek adott kezdettel", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL-ek adott kezdettel" }, "applyAllUpdates": { - "message": "Minden módosítás alkalmazása", - "description": "Label for the button to apply all detected updates" + "message": "Minden módosítás alkalmazása" }, "author": { - "message": "Szerző", - "description": "Label for the style author" + "message": "Szerző" }, "backupButtons": { - "message": "Biztonsági mentés", - "description": "Heading for backup" + "message": "Biztonsági mentés" }, "backupMessage": { - "message": "Válassz ki egy fájlt vagy húzd erre az oldalra!", - "description": "Message for backup" + "message": "Válassz ki egy fájlt vagy húzd erre az oldalra!" }, "bckpInstStyles": { - "message": "Stílusok exportálása", - "description": "" + "message": "Stílusok exportálása" }, "checkAllUpdates": { - "message": "Összes stílus frissítésének ellenőrzése", - "description": "Label for the button to check all styles for updates" + "message": "Összes stílus frissítésének ellenőrzése" }, "checkAllUpdatesForce": { - "message": "Ellenőrizd újra, nem módosítottam egy stílust sem!", - "description": "Label for the button to apply all detected updates" + "message": "Ellenőrizd újra, nem módosítottam egy stílust sem!" }, "checkForUpdate": { - "message": "Frissítések ellenőrzése", - "description": "Label for the button to check a single style for an update" + "message": "Frissítések ellenőrzése" }, "checkingForUpdate": { - "message": "Ellenőrzés...", - "description": "Text to display when checking a style for an update" + "message": "Ellenőrzés..." }, "clickToUninstall": { - "message": "Kattints az eltávolításhoz", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Kattints az eltávolításhoz" }, "cm_autoCloseBrackets": { - "message": "Zárójelek és idézőjelek automatikus bezárása", - "description": "Label for the checkbox in the style editor." + "message": "Zárójelek és idézőjelek automatikus bezárása" }, "cm_autoCloseBracketsTooltip": { - "message": "Nyitó '([{'zárójel gépelésekor lezáró ')]}' zárójel automatikus hozzáadása", - "description": "Label for the checkbox in the style editor." + "message": "Nyitó '([{'zárójel gépelésekor lezáró ')]}' zárójel automatikus hozzáadása" }, "cm_autocompleteOnTyping": { - "message": "Automatikus kiegészítés gépeléskor", - "description": "Label for the checkbox in the style editor." + "message": "Automatikus kiegészítés gépeléskor" }, "cm_colorpicker": { - "message": "Színválasztó CSS-színekhez", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Színválasztó CSS-színekhez" }, "cm_indentWithTabs": { - "message": "Tabulátorok használata intelligens behúzásra", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Tabulátorok használata intelligens behúzásra" }, "cm_keyMap": { - "message": "Billentyűműveletek", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Billentyűműveletek" }, "cm_lineWrapping": { - "message": "Automatikus sortörés", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Automatikus sortörés" }, "cm_matchHighlight": { - "message": "Kijelölés", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Kijelölés" }, "cm_matchHighlightSelection": { - "message": "Csak kiválasztás", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Csak kiválasztás" }, "cm_matchHighlightToken": { - "message": "Kurzor alatti kifejezés", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Kurzor alatti kifejezés" }, "cm_resizeGripHint": { - "message": "Kattints duplán a magasság maximalizálásához/visszaállításához", - "description": "Tooltip for the resize grip in style editor" + "message": "Kattints duplán a magasság maximalizálásához/visszaállításához" }, "cm_selectByTokens": { - "message": "Kifejezések kijelölése dupla kattintással", - "description": "Label for the checkbox in the editor." + "message": "Kifejezések kijelölése dupla kattintással" }, "cm_selectByTokensTooltip": { - "message": "Példák kifejezésekre: .valami-2 #aabbcc 0.32 !important\nAmikor ki van kapcsolva: a központosítással elválasztott szavak ki lesznek jelölve.", - "description": "" + "message": "Példák kifejezésekre: .valami-2 #aabbcc 0.32 !important\nAmikor ki van kapcsolva: a központosítással elválasztott szavak ki lesznek jelölve." }, "cm_smartIndent": { - "message": "Intelligens behúzás", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Intelligens behúzás" }, "cm_tabSize": { - "message": "Tabulátorméret", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tabulátorméret" }, "cm_theme": { - "message": "Téma", - "description": "Label for the style editor's CSS theme." + "message": "Téma" }, "colorpickerSwitchFormatTooltip": { - "message": "Formátumváltás: HEX -> RGB -> HSL.\nShift-kattintás megfordítja az irányt.\nA PgUp (PageUp) és PgDn (PageDown) billentyűkkel is lehet váltani.", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Formátumváltás: HEX -> RGB -> HSL.\nShift-kattintás megfordítja az irányt.\nA PgUp (PageUp) és PgDn (PageDown) billentyűkkel is lehet váltani." }, "colorpickerTooltip": { - "message": "Színválasztó megnyitása", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Színválasztó megnyitása" }, "configOnChange": { - "message": "változtatáskor", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "változtatáskor" }, "configOnChangeTooltip": { - "message": "Automatikus mentés és alkalmazás", - "description": "" + "message": "Automatikus mentés és alkalmazás" }, "configureStyle": { - "message": "Konfigurálás", - "description": "Label for the button to configure usercss userstyle" + "message": "Konfigurálás" }, "configureStyleOnHomepage": { - "message": "Beállítás a honlapon", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Beállítás a honlapon" }, "confirmCancel": { - "message": "Mégsem", - "description": "" + "message": "Mégsem" }, "confirmClose": { - "message": "Bezárás", - "description": "'Close' button in a confirm dialog" + "message": "Bezárás" }, "confirmDefault": { - "message": "Alapértelmezés használata", - "description": "'Set to default' button in a confirm dialog" + "message": "Alapértelmezés használata" }, "confirmDelete": { - "message": "Törlés", - "description": "" + "message": "Törlés" }, "confirmDiscardChanges": { - "message": "Elveted a változásokat?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Elveted a változásokat?" }, "confirmNo": { - "message": "Nem", - "description": "'No' button in a confirm dialog" + "message": "Nem" }, "confirmSave": { - "message": "Mentés", - "description": "'Save' button in a confirm dialog" + "message": "Mentés" }, "confirmStop": { - "message": "Állj", - "description": "'Stop' button in a confirm dialog" + "message": "Állj" }, "confirmYes": { - "message": "Igen", - "description": "'Yes' button in a confirm dialog" + "message": "Igen" + }, + "connectingDropbox": { + "message": "Kapcsolódás Dropboxhoz..." + }, + "connectingDropboxNotAllowed": { + "message": "Dropboxhoz csak közvetlenül a web-boltból telepített alkalmazásból lehet kapcsolódni." }, "copied": { - "message": "Vágólapra másolva", - "description": "Message shown when content has been copied to the clipboard" + "message": "Vágólapra másolva" }, "copy": { - "message": "Másolás vágólapra", - "description": "Tooltip for elements which can be copied" + "message": "Másolás vágólapra" }, "dateInstalled": { - "message": "Telepítés dátuma", - "description": "Option text for the user to sort the style by install date" + "message": "Telepítés dátuma" }, "dateUpdated": { - "message": "Frissítés dátuma", - "description": "Option text for the user to sort the style by last update date" + "message": "Frissítés dátuma" }, "dbError": { - "message": "Hiba történt a Stylus adatbázisának használatakor. Szeretnéd meglátogatni a lehetséges megoldásokat tartalmazó weboldalt?", - "description": "Prompt when a DB error is encountered" + "message": "Hiba történt a Stylus adatbázisának használatakor. Szeretnéd meglátogatni a lehetséges megoldásokat tartalmazó weboldalt?" }, "defaultTheme": { - "message": "alapértelmezett", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "alapértelmezett" }, "deleteStyleConfirm": { - "message": "Biztos, hogy törölni akarod ezt a stílust?", - "description": "Confirmation before deleting a style" + "message": "Biztos, hogy törölni akarod ezt a stílust?" }, "deleteStyleLabel": { - "message": "Törlés", - "description": "Label for the button to delete a style" + "message": "Törlés" }, "description": { - "message": "Tervezd újra a webet a Stylus stíluskezelővel. A Stylus lehetővé teszi a témák és egyéni külsők egyszerű telepítését sok népszerű oldalhoz.", - "description": "Extension description" + "message": "Tervezd újra a webet a Stylus stíluskezelővel. A Stylus lehetővé teszi a témák és egyéni külsők egyszerű telepítését sok népszerű oldalhoz." }, "disableAllStyles": { - "message": "Összes stílus kikapcsolása", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Összes stílus kikapcsolása" }, "disableStyleLabel": { - "message": "Letiltás", - "description": "Label for the button to disable a style" + "message": "Letiltás" }, "dragDropMessage": { - "message": "Ejtsd a biztonsági másolat fájlt bárhova erre az oldalra az importáláshoz!", - "description": "Drag'n'drop message" + "message": "Ejtsd a biztonsági másolat fájlt bárhova erre az oldalra az importáláshoz!" }, "editDeleteText": { - "message": "Törlés", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Törlés" }, "editGotoLine": { - "message": "Sorra (vagy sor:oszlopra) ugrás", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Sorra (vagy sor:oszlopra) ugrás" }, "editStyleHeading": { - "message": "Stílus szerkesztése", - "description": "Title of the page for editing styles" + "message": "Stílus szerkesztése" }, "editStyleLabel": { - "message": "Szerkesztés", - "description": "Label for the button to go to the edit style page" + "message": "Szerkesztés" }, "editStyleTitle": { "message": "A(z) $stylename$ stílus szerkesztése", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -310,216 +244,171 @@ } }, "enableStyleLabel": { - "message": "Engedélyezés", - "description": "Label for the button to enable a style" + "message": "Engedélyezés" }, "excludeStyleByDomainLabel": { - "message": "Aktuális tartományt kivéve", - "description": "" + "message": "Aktuális tartományt kivéve" }, "excludeStyleByUrlLabel": { - "message": "Aktuális URL-t kivéve", - "description": "" + "message": "Aktuális URL-t kivéve" }, "exportLabel": { - "message": "Exportálás", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportálás" + }, + "exportSavedSuccess": { + "message": "A fájl sikeresen elmentve." }, "externalFeedback": { - "message": "Visszajelzés", - "description": "Label for the external link to send feedback for the style" + "message": "Visszajelzés" }, "externalHomepage": { - "message": "Kezdőoldal", - "description": "Label for the external link to style's homepage" + "message": "Kezdőoldal" }, "externalLink": { - "message": "Külső hivatkozás", - "description": "Label for external links" + "message": "Külső hivatkozás" }, "externalSupport": { - "message": "Támogatás", - "description": "Label for the external link to style's support site" + "message": "Támogatás" }, "externalUsercssDocument": { - "message": "Usercss dokumentáció", - "description": "Label for the external link to usercss documentation" + "message": "Usercss dokumentáció" }, "filteredStyles": { "message": "$numShown$ mutatva $numTotal$-ból/-ből", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Nincs illeszkedés a jelenleg alkalmazott szűrőkre", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Nincs illeszkedés a jelenleg alkalmazott szűrőkre" }, "findStyles": { - "message": "Stílusok keresése", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Stílusok keresése" }, "findStylesForSite": { - "message": "További stílusok keresése ehhez az oldalhoz", - "description": "Text for a link that gets a list of styles for the current site" + "message": "További stílusok keresése ehhez az oldalhoz" }, "findStylesInline": { - "message": "Helyben", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Helyben" }, "findStylesInlineTooltip": { - "message": "Keresési eredmények megjelenítése ebben az ablakban.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Keresési eredmények megjelenítése ebben az ablakban." }, "genericAdd": { - "message": "Hozzáadás", - "description": "Used in various places for an action that adds something" + "message": "Hozzáadás" }, "genericClone": { - "message": "Klónozás", - "description": "Used in various places for an action that clones something" + "message": "Klónozás" }, "genericDisabledLabel": { - "message": "Letiltott", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Letiltott" }, "genericEnabledLabel": { - "message": "Engedélyezve", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Engedélyezve" }, "genericError": { - "message": "Hiba", - "description": "Used in various places to indicate some error occurred." + "message": "Hiba" }, "genericHistoryLabel": { - "message": "Előzmények", - "description": "Used in various places to show a history log of something" + "message": "Előzmények" }, "genericNext": { - "message": "Következő", - "description": "Used in various places to select/perform the next step/action" + "message": "Következő" }, "genericPrevious": { - "message": "Előző", - "description": "Used in various places to select/perform the previous step/action" + "message": "Előző" }, "genericResetLabel": { - "message": "VIsszaállítás", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "VIsszaállítás" }, "genericSavedMessage": { - "message": "Mentve", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Mentve" }, "genericTitle": { - "message": "Cím", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Cím" }, "genericUnknown": { - "message": "Ismeretlen", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Ismeretlen" + }, + "gettingStyles": { + "message": "Minden stílus fogadása..." }, "helpAlt": { - "message": "Segítség", - "description": "Alternate text for help buttons" + "message": "Segítség" }, "helpKeyMapCommand": { - "message": "Írj be egy parancsot", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Írj be egy parancsot" }, "helpKeyMapHotkey": { - "message": "Gyorsbillentyű", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Gyorsbillentyű" }, "importAppendLabel": { - "message": "Hozzáfűzés stílushoz", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Hozzáfűzés stílushoz" }, "importAppendTooltip": { - "message": "Az importált stílus hozzáadása a jelenlegi stílushoz", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Az importált stílus hozzáadása a jelenlegi stílushoz" }, "importLabel": { - "message": "Importálás", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importálás" }, "importReplaceLabel": { - "message": "Stílus felülírása", - "description": "Label for the button to import and overwrite current style" + "message": "Stílus felülírása" }, "importReplaceTooltip": { - "message": "A jelenlegi stílus tartalmának elvetése és annak felülírása az importált stílussal", - "description": "Label for the button to import and overwrite current style" + "message": "A jelenlegi stílus tartalmának elvetése és annak felülírása az importált stílussal" }, "importReportLegendAdded": { - "message": "hozzáadva", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "hozzáadva" }, "importReportLegendIdentical": { - "message": "kihagyott egyezések", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "kihagyott egyezések" }, "importReportLegendInvalid": { - "message": "kihagyott érvénytelen", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "kihagyott érvénytelen" }, "importReportLegendUpdatedBoth": { - "message": "metainformáció és kód frissítve", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "metainformáció és kód frissítve" }, "importReportLegendUpdatedCode": { - "message": "frissített kód", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "frissített kód" }, "importReportLegendUpdatedMeta": { - "message": "metainfó frissítve", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "metainfó frissítve" }, "importReportTitle": { - "message": "A stílusok importálása befejeződött.", - "description": "Title of the report shown after importing styles" + "message": "A stílusok importálása befejeződött." }, "importReportUnchanged": { - "message": "Nincs változás.", - "description": "Message in the report shown after importing styles" + "message": "Nincs változás." }, "importReportUndone": { - "message": "stílusok visszavonva", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "stílusok visszavonva" }, "importReportUndoneTitle": { - "message": "Az importálás vissza lett vonva", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Az importálás vissza lett vonva" }, "installButton": { - "message": "Stílus telepítése", - "description": "Label for install button" + "message": "Stílus telepítése" }, "installButtonInstalled": { - "message": "Stílus telepítve", - "description": "Text displayed when the style is successfully installed" + "message": "Stílus telepítve" }, "installButtonReinstall": { - "message": "Stílus újratelepítése", - "description": "Label for reinstall button" + "message": "Stílus újratelepítése" }, "installButtonUpdate": { - "message": "Stílus frissítése", - "description": "Label for update button" + "message": "Stílus frissítése" }, "installUpdate": { - "message": "Frissítés telepítése", - "description": "Label for the button to install an update for a single style" + "message": "Frissítés telepítése" }, "installUpdateFrom": { "message": "A stílus jelenleg innen frissül: $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -527,28 +416,22 @@ } }, "installUpdateFromLabel": { - "message": "Frissítések keresése", - "description": "Label for the checkbox to save current URL for update check" + "message": "Frissítések keresése" }, "license": { - "message": "Licenc", - "description": "Label for the license" + "message": "Licenc" }, "linkGetHelp": { - "message": "Segítség kérése", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Segítség kérése" }, "linkGetStyles": { - "message": "Szerezz be stílusokat", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Szerezz be stílusokat" }, "linkTranslate": { - "message": "Fordítás", - "description": "Transifex link text on the manage page" + "message": "Fordítás" }, "linterCSSLintIncompatible": { "message": "A CSSLint nem támogatja a(z) $preprocessorname$ nevű előfeldolgozót", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -556,12 +439,10 @@ } }, "linterCSSLintSettings": { - "message": "(Szabály megadása: 0 = letiltva; 1 = figyelmeztetés; 2 = hiba)", - "description": "CSSLint rule config values" + "message": "(Szabály megadása: 0 = letiltva; 1 = figyelmeztetés; 2 = hiba)" }, "linterConfigPopupTitle": { "message": "$linter$ szabály beállítása", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -569,20 +450,16 @@ } }, "linterConfigTooltip": { - "message": "Linter beállítása", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Linter beállítása" }, "linterInvalidConfigError": { - "message": "Nincs mentve a következő érvénytelen beállítások miatt:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Nincs mentve a következő érvénytelen beállítások miatt:" }, "linterIssues": { - "message": "Problémák", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problémák" }, "linterIssuesHelp": { "message": "$link$a következő hibákat találta:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -590,136 +467,87 @@ } }, "linterJSONError": { - "message": "Érvénytelen JSON-formátum", - "description": "Setting linter config with invalid JSON" + "message": "Érvénytelen JSON-formátum" }, "linterResetMessage": { - "message": "Egy véletlen visszaállítás visszavonásához nyomj Ctrl-Z-t (vagy Cmd-Z) a szövegdobozon belül)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Egy véletlen visszaállítás visszavonásához nyomj Ctrl-Z-t (vagy Cmd-Z) a szövegdobozon belül)" }, "linterRulesLink": { - "message": "Összes szabály listája", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Összes szabály listája" }, "liveReloadError": { - "message": "Hiba történt a fájl figyelése közben", - "description": "The label of live-reload error" + "message": "Hiba történt a fájl figyelése közben" }, "liveReloadLabel": { - "message": "Valós idejű újratöltés", - "description": "The label of live-reload feature" + "message": "Valós idejű újratöltés" }, "manageFavicons": { - "message": "Faviconok az 'Érvényes erre' oszlopban", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Faviconok az 'Érvényes erre' oszlopban" }, "manageFaviconsGray": { - "message": "Megjelenítés szürkítve", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Megjelenítés szürkítve" }, "manageFaviconsHelp": { - "message": "A Stylus külső szolgáltatást használ (https://www.google.com/s2/favicons)", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "A Stylus külső szolgáltatást használ (https://www.google.com/s2/favicons)" }, "manageFilters": { - "message": "Szűrők", - "description": "Label for filters container" + "message": "Szűrők" }, "manageHeading": { - "message": "Telepített stílusok", - "description": "Heading for the manage page" + "message": "Telepített stílusok" }, "manageMaxTargets": { - "message": "'Érvényes erre' elemek kijelzendő száma", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "'Érvényes erre' elemek kijelzendő száma" }, "manageNewStyleAsUsercss": { - "message": "Usercss-ként", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "Usercss-ként" }, "manageNewUI": { - "message": "Új kezelői felület", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Új kezelői felület" }, "manageOnlyDisabled": { - "message": "Csak a letiltott stílusok", - "description": "Checkbox to show only disabled styles" + "message": "Csak a letiltott stílusok" }, "manageOnlyEnabled": { - "message": "Csak a telepített stílusok", - "description": "Checkbox to show only enabled styles" + "message": "Csak a telepített stílusok" }, "manageOnlyExternal": { - "message": "Csak külső stílusok", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Csak külső stílusok" }, "manageOnlyLocal": { - "message": "Csak helyileg létrehozott stílusok", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Csak helyileg létrehozott stílusok" }, "manageOnlyLocalTooltip": { - "message": "(a stílusok nem a userstyles.org egyik oldaláról települtek)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(a stílusok nem a userstyles.org egyik oldaláról települtek)" }, "manageOnlyNonUsercss": { - "message": "Csak nem Usercss stílusok", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Csak nem Usercss stílusok" }, "manageOnlyUpdates": { - "message": "Csak a frissíthetők vagy problémásak", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Csak a frissíthetők vagy problémásak" }, "manageOnlyUsercss": { - "message": "Csak Usercss stílusok", - "description": "Checkbox to show only Usercss styles" + "message": "Csak Usercss stílusok" }, "menuShowBadge": { - "message": "Aktív stílusok számlálójának mutatása", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Aktív stílusok számlálójának mutatása" }, "meta_invalidCheckboxDefault": { - "message": "Érvénytelen jelölő négyzet @var: az érték csak 0 vagy 1 lehet", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Érvénytelen jelölő négyzet @var: az érték csak 0 vagy 1 lehet" }, "meta_invalidColor": { "message": "Érvénytelen szín @var: a(z) $color$ nem szín", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Várt elem: szám" + }, "meta_invalidRange": { "message": "Érvénytelen változó @var (típus: $type$): az érték csak szám vagy tömb lehet", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Érvénytelen változó @var (típus: $type$): többféle egység van megadva", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Érvénytelen változó @var (típus: $type$): a tömb túl sok elemet tartalmaz", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Érvénytelen változó @var (típus: $type$): csak szám, karakterlánc vagy null típusú elem lehet a tömbben", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -728,16 +556,6 @@ }, "meta_invalidRangeDefault": { "message": "Érvénytelen változó @var (típus: $type$): az alapértelmezett értéke null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Érvénytelen változó @var (típus: $type$): az alapértelmezett érték kisebb, mint a minimum", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -746,7 +564,22 @@ }, "meta_invalidRangeMax": { "message": "Érvénytelen változó @var (típus: $type$): az alapértelmezett érték nagyobb, mint a maximum", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Érvénytelen változó @var (típus: $type$): az alapértelmezett érték kisebb, mint a minimum", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Érvénytelen változó @var (típus: $type$): többféle egység van megadva", "placeholders": { "type": { "content": "$1" @@ -755,7 +588,14 @@ }, "meta_invalidRangeStep": { "message": "Érvénytelen változó @var (típus: $type$): az alapértelmezett érték nem a lépésköz többszöröse", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Érvénytelen változó @var (típus: $type$): a tömb túl sok elemet tartalmaz", "placeholders": { "type": { "content": "$1" @@ -764,7 +604,6 @@ }, "meta_invalidRangeUnits": { "message": "Érvénytelen változó @var (típus: $type$): a(z) '$units$' nem érvényes egység", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -774,37 +613,40 @@ } } }, - "meta_invalidSelect": { - "message": "Érvénytelen kiválasztó lista @var: az alapértelmezett érték tömb vagy objektum lehet csak", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Érvénytelen változó @var (típus: $type$): csak szám, karakterlánc vagy null típusú elem lehet a tömbben", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Érvénytelen kiválasztó lista @var: a tömbön/objektumon belüli érték csak karakterlánc lehet", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Érvénytelen kiválasztó lista @var: az alapértelmezett érték tömb vagy objektum lehet csak" }, "meta_invalidSelectEmptyOptions": { - "message": "Érvénytelen kiválasztó lista @var: a lista üres", - "description": "Error displayed when the value of @var select is invalid" + "message": "Érvénytelen kiválasztó lista @var: a lista üres" }, "meta_invalidSelectLabel": { - "message": "Érvénytelen kiválasztó lista @var: a listaelem címkéje üres", - "description": "Error displayed when the value of @var select is invalid" + "message": "Érvénytelen kiválasztó lista @var: a listaelem címkéje üres" }, "meta_invalidSelectMultipleDefaults": { - "message": "Érvénytelen kiválasztó lista @var: egynél több alapértelmezett elem van megadva", - "description": "Error displayed when the value of @var select is invalid" + "message": "Érvénytelen kiválasztó lista @var: egynél több alapértelmezett elem van megadva" }, "meta_invalidSelectNameDuplicated": { - "message": "Érvénytelen kiválasztó lista @var: egy listaelem kétszer szerepel", - "description": "Error displayed when the value of @var select is invalid" + "message": "Érvénytelen kiválasztó lista @var: egy listaelem kétszer szerepel" + }, + "meta_invalidSelectValue": { + "message": "Érvénytelen kiválasztó lista @var: a tömbön/objektumon belüli érték csak karakterlánc lehet" }, "meta_invalidSelectValueMismatch": { - "message": "Érvénytelen kiválasztó lista @var: az érték nem található a listaelemek között", - "description": "Error displayed when the value of @var select is invalid" + "message": "Érvénytelen kiválasztó lista @var: az érték nem található a listaelemek között" + }, + "meta_invalidString": { + "message": "Várt elem: idézőjelek közti karakterlánc" }, "meta_invalidURLProtocol": { "message": "Érvénytelen URL-protokoll. Csak 'http' vagy 'https' engedett: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -812,29 +654,13 @@ } }, "meta_invalidVersion": { - "message": "Érvénytelen verziószám. Az érték nem illeszkedik a SemVer mintájához: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Várt elem: szám", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Várt elem: idézőjelek közti karakterlánc", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Érvénytelen verziószám" }, "meta_invalidWord": { - "message": "Várt elem: szó", - "description": "Error displayed when the value is expected to be a word" + "message": "Várt elem: szó" }, "meta_missingChar": { "message": "Várt karakterek: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -842,12 +668,10 @@ } }, "meta_missingEOT": { - "message": "Várt elem: EOT-adat", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Várt elem: EOT-adat" }, "meta_missingMandatory": { "message": "Kötelező metaadat hiányzik: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -856,7 +680,6 @@ }, "meta_unknownJSONLiteral": { "message": "Érvénytelen JSON: a(z) $literal$ nem érvényes JSON-karakterlánc (literális)", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -865,16 +688,22 @@ }, "meta_unknownMeta": { "message": "Ismeretlen metaadat: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownPreprocessor": { + "message": "Ismeretlen @preprocesszor (előfeldolgozó): $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Ismeretlen @$varkey$ változó, típus: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -884,154 +713,116 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Ismeretlen @preprocesszor (előfeldolgozó): $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "A stílusok importálásához előbb exportálni kell őket." }, "noStylesForSite": { - "message": "Nincs telepítve stílus ehhez az oldalhoz.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nincs telepítve stílus ehhez az oldalhoz." }, "openManage": { - "message": "Kezelés", - "description": "Link to open the manage page." + "message": "Kezelés" }, "openStylesManager": { - "message": "Stíluskezelő megnyitása", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Stíluskezelő megnyitása" }, "optionsActions": { - "message": "Műveletek", - "description": "" + "message": "Műveletek" }, "optionsAdvanced": { - "message": "Haladó", - "description": "" + "message": "Haladó" }, "optionsAdvancedContextDelete": { - "message": "'Törlés' parancs a szerkesztő helyi menüjében", - "description": "" + "message": "'Törlés' parancs a szerkesztő helyi menüjében" }, "optionsAdvancedExposeIframes": { - "message": "iframe-ek kitevése HTML[stylus-iframe]-en keresztül", - "description": "" + "message": "iframe-ek kitevése HTML[stylus-iframe]-en keresztül" }, "optionsAdvancedExposeIframesNote": { - "message": "Az oldal felső tartományának jelölése minden iframe-ben.\nLehetővé teszi az iframe-specifikus CSS írását, mint pl.:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Az oldal felső tartományának jelölése minden iframe-ben.\nLehetővé teszi az iframe-specifikus CSS írását, mint pl.:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Új stílus írása usercss-ként", - "description": "" + "message": "Új stílus írása usercss-ként" }, "optionsBadgeDisabled": { - "message": "Háttérszín, amikor le van tiltva", - "description": "" + "message": "Háttérszín, amikor le van tiltva" }, "optionsBadgeNormal": { - "message": "Háttérszín", - "description": "" + "message": "Háttérszín" }, "optionsCheck": { - "message": "Stílusok frissítése", - "description": "" + "message": "Stílusok frissítése" }, "optionsCheckUpdate": { - "message": "Az összes frissítés ellenőrzése és telepítése", - "description": "" + "message": "Az összes frissítés ellenőrzése és telepítése" }, "optionsCustomizeBadge": { - "message": "Ikon képe az eszköztáron", - "description": "" + "message": "Ikon képe az eszköztáron" }, "optionsCustomizeIcon": { - "message": "Eszköztárikon", - "description": "" + "message": "Eszköztárikon" }, "optionsCustomizePopup": { - "message": "Felugró ablak", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Frissítések", - "description": "" + "message": "Felugró ablak" }, "optionsCustomizeSync": { - "message": "Szinkronizálás felhővel", - "description": "" + "message": "Szinkronizálás felhővel" + }, + "optionsCustomizeUpdate": { + "message": "Frissítések" }, "optionsHeading": { - "message": "Beállítások", - "description": "Heading for options section on manage page." + "message": "Beállítások" }, "optionsIconDark": { - "message": "Sötét böngészőtémák", - "description": "" + "message": "Sötét böngészőtémák" }, "optionsIconLight": { - "message": "Világos böngészőtémák", - "description": "" + "message": "Világos böngészőtémák" }, "optionsOpen": { - "message": "Megnyitás", - "description": "" + "message": "Megnyitás" }, "optionsOpenManager": { - "message": "Stílusok kezelése", - "description": "" + "message": "Stílusok kezelése" }, "optionsPopupWidth": { - "message": "Felugró ablak szélessége (pixelben)", - "description": "" + "message": "Felugró ablak szélessége (pixelben)" }, "optionsReset": { - "message": "Beállítások visszaállítása alapértelmezett értékre", - "description": "" + "message": "Beállítások visszaállítása alapértelmezett értékre" }, "optionsResetButton": { - "message": "Alapértelmezés visszaállítása", - "description": "" + "message": "Alapértelmezés visszaállítása" }, "optionsSubheading": { - "message": "További beállítások", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Amikor régebbi verzióból vagy a Stylishból importálsz stílusokat, egyszer manuálisan frissítsd a stílusokat a stíluskezelőben, hogy megbizonyosodj afelől, hogy mindegyik frissítve van!", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Felhasználói stílus automatikus frissítési időköze órában (0=kikapcsolva)", - "description": "" - }, - "optionsSyncNone": { - "message": "Nincs", - "description": "" + "message": "További beállítások" }, "optionsSyncConnect": { - "message": "Kapcsolódás", - "description": "" + "message": "Kapcsolódás" }, "optionsSyncDisconnect": { - "message": "Kapcsolat bontása", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Szinkronizálás most", - "description": "" + "message": "Kapcsolat bontása" }, "optionsSyncLogin": { - "message": "Bejelentkezés", - "description": "" + "message": "Bejelentkezés" + }, + "optionsSyncNone": { + "message": "Nincs" + }, + "optionsSyncStatusConnected": { + "message": "Kapcsolódva" + }, + "optionsSyncStatusConnecting": { + "message": "Kapcsolódás..." + }, + "optionsSyncStatusDisconnected": { + "message": "Nincs kapcsolat" + }, + "optionsSyncStatusDisconnecting": { + "message": "Kapcsolat bontása..." }, "optionsSyncStatusPull": { "message": "Stílusok helyi frissítése (pull): $loaded$/$total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1043,7 +834,6 @@ }, "optionsSyncStatusPush": { "message": "Stílusok távoli frissítése (push): $loaded$/$total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1054,256 +844,193 @@ } }, "optionsSyncStatusSyncing": { - "message": "Szinkronizálás...", - "description": "" + "message": "Szinkronizálás..." }, - "optionsSyncStatusConnecting": { - "message": "Kapcsolódás...", - "description": "" + "optionsSyncSyncNow": { + "message": "Szinkronizálás most" }, - "optionsSyncStatusConnected": { - "message": "Kapcsolódva", - "description": "" + "optionsUpdateImportNote": { + "message": "Amikor régebbi verzióból vagy a Stylishból importálsz stílusokat, egyszer manuálisan frissítsd a stílusokat a stíluskezelőben, hogy megbizonyosodj afelől, hogy mindegyik frissítve van!" }, - "optionsSyncStatusDisconnecting": { - "message": "Kapcsolat bontása...", - "description": "" + "optionsUpdateInterval": { + "message": "Felhasználói stílus automatikus frissítési időköze órában (0=kikapcsolva)" }, - "optionsSyncStatusDisconnected": { - "message": "Nincs kapcsolat", - "description": "" + "overwriteFileExport": { + "message": "Felülírjuk a létező fájlt?" }, "paginationCurrent": { - "message": "Jelenlegi oldal", - "description": "Tooltip for the current page index in search results" + "message": "Jelenlegi oldal" }, "paginationEstimated": { - "message": "Becsült oldalak száma", - "description": "Tooltip for the total page count in search results" + "message": "Becsült oldalak száma" }, "paginationNext": { - "message": "Következő oldal", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Következő oldal" }, "paginationPrevious": { - "message": "Előző oldal", - "description": "Tooltip for the '<-' button in search results" + "message": "Előző oldal" }, "paginationTotal": { - "message": "Összes oldal", - "description": "" + "message": "Összes oldal" }, "parseUsercssError": { - "message": "A Stylus nem tudta elemezni a usercss-t", - "description": "The error message to show when stylus failed to parse usercss" + "message": "A Stylus nem tudta elemezni a usercss-t" }, "popupAutoResort": { - "message": "Stílusok újrarendezése a felugró ablakban átkapcsoláskor", - "description": "Label for the checkbox controlling popup resorting." + "message": "Stílusok újrarendezése a felugró ablakban átkapcsoláskor" }, "popupBorders": { - "message": "Fehér szegély az oldalakon", - "description": "" + "message": "Fehér szegély az oldalakon" }, "popupBordersTooltip": { - "message": "Hasznos az új Chrome sötét témáinál, mert nem színezi át az oldalszegélyeket", - "description": "" + "message": "Hasznos az új Chrome sötét témáinál, mert nem színezi át az oldalszegélyeket" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, a numpaden is - be-/kikapcsolja az n-nedik stílust (a 0 10-et jelent)\n- az adott betűvel kezdődő első stílust kapcsolja be/ki \n kapcsolgatás helyett megnyitja a szerkesztőt\n listázott stílusokat engedélyez\n listázott stílusokat tilt le\n és <`> (fordított félidézőjel) - kezdeti állapotban engedélyezett stílusokat kapcsol; nem vonatkozik azokra a stílusokra, amiket később engedélyeztél, mialatt a felugró ablakocska nyitva volt, hogy vissza tudd állítani a kezdeti kiválasztást tesztelés után: egyszerűen tilts le mindent, majd pl. vagy \nTovábbi információ a wikiben", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, a numpaden is - be-/kikapcsolja az n-nedik stílust (a 0 10-et jelent)\n- az adott betűvel kezdődő első stílust kapcsolja be/ki \n kapcsolgatás helyett megnyitja a szerkesztőt\n listázott stílusokat engedélyez\n listázott stílusokat tilt le\n és <`> (fordított félidézőjel) - kezdeti állapotban engedélyezett stílusokat kapcsol; nem vonatkozik azokra a stílusokra, amiket később engedélyeztél, mialatt a felugró ablakocska nyitva volt, hogy vissza tudd állítani a kezdeti kiválasztást tesztelés után: egyszerűen tilts le mindent, majd pl. vagy \nTovábbi információ a wikiben" }, "popupHotkeysTooltip": { - "message": "Elérhető gyorsbillentyűk megtekintése", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Elérhető gyorsbillentyűk megtekintése" }, "popupManageTooltip": { - "message": "Shift+kattintás vagy jobb kattintás: a stíluskezelő megnyitása a jelenlegi oldalra érvényes stílusokkal", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift+kattintás vagy jobb kattintás: a stíluskezelő megnyitása a jelenlegi oldalra érvényes stílusokkal" }, "popupMenuButtonTooltip": { - "message": "Műveletmenü", - "description": "Tooltip for menu button in popup." + "message": "Műveletmenü" }, "popupOpenEditInWindow": { - "message": "Szerkesztő megnyitása új ablakban", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Szerkesztő megnyitása új ablakban" }, "popupOpenEditInWindowTooltip": { - "message": "A fül a böngésző ablakától történő leválasztásával is engedélyezhető, és letiltható a fül egy másik ablakhoz való hozzácsatolásával.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "A fül a böngésző ablakától történő leválasztásával is engedélyezhető, és letiltható a fül egy másik ablakhoz való hozzácsatolásával." }, "popupStylesFirst": { - "message": "Stílusnevek a parancsok előtt", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Stílusnevek a parancsok előtt" }, "prefShowBadge": { - "message": "A jelenlegi oldalon aktív stílusok száma", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "A jelenlegi oldalon aktív stílusok száma" }, "previewLabel": { - "message": "Valós idejű előnézet", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Valós idejű előnézet" }, "previewTooltip": { - "message": "Átmenetileg alkalmazza a változtatásokat mentés nélkül.\nMentsd a stílust, hogy a változtatások véglegesek legyenek!", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Átmenetileg alkalmazza a változtatásokat mentés nélkül.\nMentsd a stílust, hogy a változtatások véglegesek legyenek!" + }, + "readingStyles": { + "message": "Stílusok olvasása..." }, "replace": { - "message": "Csere", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Csere" }, "replaceAll": { - "message": "Az összes cseréje", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Az összes cseréje" }, "replaceWith": { - "message": "Csere a következővel", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Csere a következővel" }, "retrieveBckp": { - "message": "Stílusok importálása", - "description": "" + "message": "Stílusok importálása" + }, + "retrieveDropboxSync": { + "message": "Importálás Dropboxból" }, "search": { - "message": "Keresés", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Keresés" }, "searchCaseSensitive": { - "message": "Kis- és nagybetű megkülönböztetése", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Kis- és nagybetű megkülönböztetése" }, "searchNumberOfResults": { - "message": "Illeszkedések száma", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Illeszkedések száma" }, "searchNumberOfResults2": { - "message": "Illeszkedések száma a kódban és célértékek", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Illeszkedések száma a kódban és célértékek" }, "searchRegexp": { - "message": "Használd a /re/ szintaxist a regexp kereséshez", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Használd a /re/ szintaxist a regexp kereséshez" }, "searchResultInstallCount": { - "message": "Összes telepítés", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Összes telepítés" }, "searchResultNoneFound": { - "message": "Nem találhatók stílusok ehhez az oldalhoz.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nem találhatók stílusok ehhez az oldalhoz." }, "searchResultRating": { - "message": "Értékelés", - "description": "Text for label that shows the search result's rating" + "message": "Értékelés" }, "searchResultUpdated": { - "message": "Frissítve", - "description": "Text for label that shows the search result's last update date" + "message": "Frissítve" }, "searchResultWeeklyCount": { - "message": "Heti telepítések", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Tartalom keresése", - "description": "Label for the search filter textbox on the Manage styles page" - }, - "searchStylesHelp": { - "message": "A billentyűvel a keresési mezőre ugrasz.\nSima szöveg: keresés a névben, kódban, honlap URL-ben és érvényes oldalakban. A 3 betűnél kevesebb szavak figyelmen kívül vannak hagyva.\nIlleszkedő URL: kezdd a keresést „”-lel, pl. \nReguláris kifejezések: ide tartoznak a per-jelek és a flagek, pl. \nPontos szavak: írj idézőjeleket a keresési kifejezés köré, pl. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Heti telepítések" }, "sectionAdd": { - "message": "Új szakasz hozzáadása", - "description": "Label for the button to add a section" + "message": "Új szakasz hozzáadása" }, "sectionCode": { - "message": "Kód", - "description": "Label for the code for a section" + "message": "Kód" }, "sectionRemove": { - "message": "Szekció eltávolítása", - "description": "Label for the button to remove a section" + "message": "Szekció eltávolítása" }, "sectionRestore": { - "message": "Eltávolított szekció visszaállítása", - "description": "Label for the button to restore a removed section" + "message": "Eltávolított szekció visszaállítása" }, "shortcuts": { - "message": "Gyorsbillentyűk", - "description": "Go to shortcut configuration" + "message": "Gyorsbillentyűk" }, "shortcutsNote": { - "message": "Gyorsbillentyűk megadása", - "description": "" + "message": "Gyorsbillentyűk megadása" }, "sortDateNewestFirst": { - "message": "újabb elöl", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "újabb elöl" }, "sortDateOldestFirst": { - "message": "régebbi elöl", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "régebbi elöl" }, "sortLabel": { - "message": "Telepített stílusok sorbarendezésének módja", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Telepített stílusok sorbarendezésének módja" }, "sortLabelTitleAsc": { - "message": "Cím - növekvő sorrend", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Cím - növekvő sorrend" }, "sortLabelTitleDesc": { - "message": "Cím - csökkenő sorrend", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Cím - csökkenő sorrend" }, "sortStylesHelp": { - "message": "A legördülő menüben válaszhatjuk ki, hogyan szeretnénk sorbarendezni a telepített stílusok bejegyzéseit. Az alapértelmezett beállítás a bejegyzések címei szerinti növekvő (A-tól Z-ig) sorrend. A „Cím - csökkenő sorrend” csoportban megadott rendezési módok csökkenő (Z-től A-ig) sorrendben rendezik a címeket.\nEgyéb beállításokkal több szempont alapján is rendezhetők a bejegyzések. Tekintsünk erre úgy, mint egy többoszlopos, rendezhető táblázatra, amelyben minden egyes (a plusz jelek között) kiválasztott kategória egy oszlopot vagy egy csoportot jelképez.\nPéldául, ha az van beállítva, hogy „Engedélyezve (első) + Cím”, az engedélyezett bejegyzések kerülnek a lista tetejére, majd az engedélyezett és a letiltott bejegyzések címei külön-külön, növekvő (A-tól Z-ig) sorrendben jelennek meg.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "A legördülő menüben válaszhatjuk ki, hogyan szeretnénk sorbarendezni a telepített stílusok bejegyzéseit. Az alapértelmezett beállítás a bejegyzések címei szerinti növekvő (A-tól Z-ig) sorrend. A „Cím - csökkenő sorrend” csoportban megadott rendezési módok csökkenő (Z-től A-ig) sorrendben rendezik a címeket.\nEgyéb beállításokkal több szempont alapján is rendezhetők a bejegyzések. Tekintsünk erre úgy, mint egy többoszlopos, rendezhető táblázatra, amelyben minden egyes (a plusz jelek között) kiválasztott kategória egy oszlopot vagy egy csoportot jelképez.\nPéldául, ha az van beállítva, hogy „Engedélyezve (első) + Cím”, az engedélyezett bejegyzések kerülnek a lista tetejére, majd az engedélyezett és a letiltott bejegyzések címei külön-külön, növekvő (A-tól Z-ig) sorrendben jelennek meg." }, "sortStylesHelpTitle": { - "message": "Tartalom rendezése", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Tartalom rendezése" }, "styleBadRegexp": { - "message": "Érvénytelen reguláris kifejezés.", - "description": "Validation message for a bad regexp in a style" + "message": "Érvénytelen reguláris kifejezés." }, "styleBeautify": { - "message": "Csinosít", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Csinosít" }, "styleBeautifyIndentConditional": { - "message": "@media, @supports behúzása", - "description": "CSS-beautifier option" + "message": "@media, @supports behúzása" }, "styleBeautifyPreserveNewlines": { - "message": "Új sorok megtartása", - "description": "CSS-beautifier option" + "message": "Új sorok megtartása" }, "styleCancelEditLabel": { - "message": "Vissza a kezeléshez", - "description": "Label for cancel button for style editing" + "message": "Vissza a kezeléshez" }, "styleChangesNotSaved": { - "message": "Nem mentetted a stílusban lévő változásokat.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Nem mentetted a stílusban lévő változásokat." }, "styleEnabledLabel": { - "message": "Engedélyezve", - "description": "Label for the enabled state of styles" + "message": "Engedélyezve" }, "styleFromMozillaFormatError": { - "message": "Nem sikerült importálni Mozilla formátumból", - "description": "Label for the import error" + "message": "Nem sikerült importálni Mozilla formátumból" }, "styleFromMozillaFormatPrompt": { - "message": "Mozilla formátumú kód beillesztése", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Mozilla formátumú kód beillesztése" }, "styleInstall": { "message": "Telepíted a(z) „$stylename$” nevű stílust a Stylusba?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1312,7 +1039,6 @@ }, "styleInstallFailed": { "message": "A stílus telepítése nem sikerült!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1321,86 +1047,68 @@ }, "styleInstallOverwrite": { "message": "„$stylename$” már telepítve van. Felülírod?\nVerzió: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Írj be egy nevet!", - "description": "Error displayed when user saves without providing a name" + "message": "Írj be egy nevet!" }, "styleMozillaFormatHeading": { - "message": "Mozilla-formátum", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla-formátum" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "A stílus nem lett alkalmazva a „regexp()” helytelen használata miatt", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "A stílus nem lett alkalmazva a „regexp()” helytelen használata miatt" }, "styleRegexpInvalidExplanation": { - "message": "Néhány „regexp()” szabály nem lefordítható.", - "description": "" + "message": "Néhány „regexp()” szabály nem lefordítható." }, "styleRegexpPartialExplanation": { - "message": "A stílus olyan részlegesen illeszkedő reguláris kifejezéseket használ, amelyek sértik aCSS4@dokumentumspecifikációt, amely megköveteli az URL teljes illeszkedését. Az érintett CSS-szekciók nem kerültek alkalmazásra az oldalon. A stílus valószínűleg a Stylish-for-Chrome kiegészítőben készült, amely helytelenül ellenőrzi a „regexp()” szabályokat a legelső verziótól fogva (ismert hiba).", - "description": "" + "message": "A stílus olyan részlegesen illeszkedő reguláris kifejezéseket használ, amelyek sértik aCSS4@dokumentumspecifikációt, amely megköveteli az URL teljes illeszkedését. Az érintett CSS-szekciók nem kerültek alkalmazásra az oldalon. A stílus valószínűleg a Stylish-for-Chrome kiegészítőben készült, amely helytelenül ellenőrzi a „regexp()” szabályokat a legelső verziótól fogva (ismert hiba)." }, "styleRegexpProblemTooltip": { - "message": "A nem alkalmazott szeckiók száma helytelen 'regexp()' használat miatt", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "A nem alkalmazott szeckiók száma helytelen 'regexp()' használat miatt" }, "styleRegexpTestButton": { - "message": "RegExp tesztelése", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "RegExp tesztelése" }, "styleRegexpTestFull": { - "message": "Illeszkedő fülek", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Illeszkedő fülek" }, "styleRegexpTestInvalid": { - "message": "Kihagyott, érvénytelen reguláris kifejezések", - "description": "RegExp test report: label for the invalid expressions" + "message": "Kihagyott, érvénytelen reguláris kifejezések" }, "styleRegexpTestNone": { - "message": "Nincs illeszkedő fül", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Nincs illeszkedő fül" }, "styleRegexpTestNote": { - "message": "Megjegyzés: használj egy \\-jelet speciális karakterek elrejtéséhez a regexp beviteli mezőben, amely automatikusan két \\-jellé (\\\\) lesz alakítva a CSS stíluskódban idézett karakterláncokban.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Megjegyzés: használj egy \\-jelet speciális karakterek elrejtéséhez a regexp beviteli mezőben, amely automatikusan két \\-jellé (\\\\) lesz alakítva a CSS stíluskódban idézett karakterláncokban." }, "styleRegexpTestPartial": { - "message": "Nincs teljes egyezés, így ki vagy hagyva", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Nincs teljes egyezés, így ki vagy hagyva" }, "styleRegexpTestTitle": { - "message": "Illeszkedő megnyitott fülek megjelenítése (kattints az URL-re az arra a fülre való ugráshoz)", - "description": "RegExp test report: title of the report" + "message": "Illeszkedő megnyitott fülek megjelenítése (kattints az URL-re az arra a fülre való ugráshoz)" }, "styleSaveLabel": { - "message": "Mentés", - "description": "Label for save button for style editing" + "message": "Mentés" }, "styleToMozillaFormatHelp": { - "message": "A Mozilla formátumú kódot beküldheted a userstyles.org-ra és használhatod a klasszikus Stylish Firefoxkiegészítővel.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "A Mozilla formátumú kódot beküldheted a userstyles.org-ra és használhatod a klasszikus Stylish Firefoxkiegészítővel." }, "styleToMozillaFormatTitle": { - "message": "Mozilla formátumú stílus", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla formátumú stílus" }, "styleUpdate": { "message": "Biztos, hogy frissíteni akarod a(z) „$stylename$” stílust?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1408,72 +1116,52 @@ } }, "styleUpdateDiscardChanges": { - "message": "A stílus módosítva lett a szerkesztőn kívül. Szeretnéd újratölteni?", - "description": "Confirmation to update the style in the editor" + "message": "A stílus módosítva lett a szerkesztőn kívül. Szeretnéd újratölteni?" }, "stylusUnavailableForURL": { - "message": "A Stylus nem működik az ilyen oldalakon.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "A Stylus nem működik az ilyen oldalakon." }, "stylusUnavailableForURLdetails": { - "message": "Biztonsági okokból a böngésző megtiltja, hogy a kiegészítők változtatásokat tegyenek a beépített oldalain (pl. chrome://verzió, a Chrome 61 alapértelmezett „új lap” oldala, about:addons és így tovább) valamint más kiterjesztések oldalain. Ezen kívül mindegyik böngésző korlátozza a saját kiegészítőgalériájának elérését (pl. Chrome webáruház vagy a Mozilla kiegészítők oldala)", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Biztonsági okokból a böngésző megtiltja, hogy a kiegészítők változtatásokat tegyenek a beépített oldalain (pl. chrome://verzió, a Chrome 61 alapértelmezett „új lap” oldala, about:addons és így tovább) valamint más kiterjesztések oldalain. Ezen kívül mindegyik böngésző korlátozza a saját kiegészítőgalériájának elérését (pl. Chrome webáruház vagy a Mozilla kiegészítők oldala)" + }, + "syncDropboxStyles": { + "message": "Exportálás Dropboxba" }, "syncStorageErrorSaving": { - "message": "Az értéket nem lehet menteni. Próbáld meg csökkenteni a szövegmennyiséget!", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Az értéket nem lehet menteni. Próbáld meg csökkenteni a szövegmennyiséget!" }, "toggleStyle": { - "message": "Stílus be-/kikapcsolása", - "description": "Label for the checkbox to enable/disable a style" + "message": "Stílus be-/kikapcsolása" }, "undo": { - "message": "Visszavonás", - "description": "Button label" + "message": "Visszavonás" }, "undoGlobal": { - "message": "Visszavonás mindegyik szekcióban", - "description": "CSS-beautify global Undo button label" + "message": "Visszavonás mindegyik szekcióban" }, "unreachableAMO": { - "message": "A Firefox megtiltja ennek az oldalnak az elérését.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "A Firefox megtiltja ennek az oldalnak az elérését." }, "unreachableAMOHint": { - "message": "Az elérés engedélyezéséhez nyisd meg az -ot, kattints jobb egérgombbal, majd „Új”, „Logikai”, és illeszd be, hogy , és kattints az OK-ra, OK, és töltsd újra az oldalt!", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "A Firefox 60-ban vagy annál újabb verzióban az AMO doménjét is el kell távolítanod a -ban levő -ból.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Csak a Firefox 59 vagy annál újabb állítható be az ilyen CSP-védett oldalak stílusának átszabása WebExtensions kiegészítőkön keresztül.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Az elérés engedélyezéséhez nyisd meg az -ot, kattints jobb egérgombbal, majd „Új”, „Logikai”, és illeszd be, hogy , és kattints az OK-ra, OK, és töltsd újra az oldalt!" }, "unreachableContentScript": { - "message": "Nem sikerült az oldallal történő kommunikáció. Próbáld meg újratölteni az oldalt!", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Nem sikerült az oldallal történő kommunikáció. Próbáld meg újratölteni az oldalt!" }, "unreachableFileHint": { - "message": "A Stylus csak akkor képes hozzáférni a file:// URL-ekhez, ha engedélyezed az erre vonatkozó beállítást a Stylus kiegészítőre a chrome://extensions oldalon.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "A Stylus csak akkor képes hozzáférni a file:// URL-ekhez, ha engedélyezed az erre vonatkozó beállítást a Stylus kiegészítőre a chrome://extensions oldalon." }, - "InaccessibleFileHint": { - "message": "A Stylus nem tud bizonyos fájltípusokhoz hozzáférni (pl. PDF- & JSON-fájlokhoz)", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unzipStyles": { + "message": "Stílusok kibontása..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Nem találhatók frissítések.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Nem találhatók frissítések." }, "updateAllCheckSucceededSomeEdited": { - "message": "Egyes frissíthető stílusok nem lettek ellenőrizve, nehogy elvesszenek a helyi változtatások. A frissítéseket lehet erőltetni egyéni ellenőrzéssel külön-külön vagy az összes stílus ismételt ellenőrzésével (ez felülírja a helyi módosításokat).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Egyes frissíthető stílusok nem lettek ellenőrizve, nehogy elvesszenek a helyi változtatások. A frissítéseket lehet erőltetni egyéni ellenőrzéssel külön-külön vagy az összes stílus ismételt ellenőrzésével (ez felülírja a helyi módosításokat)." }, "updateCheckFailBadResponseCode": { "message": "Sikertelen frissítés: a szerver $code$kóddal válaszolt.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1481,123 +1169,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Sikertelen frissítés: nem érhető el a szerver.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Sikertelen frissítés: nem érhető el a szerver." }, "updateCheckHistory": { - "message": "Frissítések ellenőrzésének előzményei", - "description": "" + "message": "Frissítések ellenőrzésének előzményei" }, "updateCheckManualUpdateForce": { - "message": "Frissítés telepítése (a helyi módosítások felül lesznek írva)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Frissítés telepítése (a helyi módosítások felül lesznek írva)" }, "updateCheckManualUpdateHint": { - "message": "Egy frissítés erőltetése minden helyi szerkesztést felül fog írni.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Egy frissítés erőltetése minden helyi szerkesztést felül fog írni." }, "updateCheckSkippedLocallyEdited": { - "message": "Ez a stílus helyileg lett szerkesztve.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Ez a stílus helyileg lett szerkesztve." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Lehet, hogy ezt a stílust helyileg szerkesztették", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Lehet, hogy ezt a stílust helyileg szerkesztették" }, "updateCheckSucceededNoUpdate": { - "message": "A stílus legfrissebb verziója van telepítve.", - "description": "Text that displays when an update check completed and no update is available" + "message": "A stílus legfrissebb verziója van telepítve." }, "updateCompleted": { - "message": "A frissítés befejeződött.", - "description": "Text that displays when an update completed" + "message": "A frissítés befejeződött." }, "updatesCurrentlyInstalled": { - "message": "Frissítve:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Kérlek, módosítsd a @name vagy a @namespace értékét, nehogy felül legyen írva az egyik létező stílus!", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "A stílust frissítették vagy törölték, miután a beállítóablak megjelent. Ezek a változók nem kerültek mentésre, nehogy megsérüljön a stílus metaadata:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Adj meg egy @name-et a kódban", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Le legyen cserélve az alapértelmezett sablon az új Usercss stílusokhoz a jelenlegi kóddal?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Az üres @name lecseréli az alapértelmezett sablont", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Írj kódot ide…", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "A verzió régebb a telepített stílusnál", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Stílus írása a következőhöz:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "ehhez az URL-hez", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Exportálás Dropboxba", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Importálás Dropboxból", - "description": "" - }, - "overwriteFileExport": { - "message": "Felülírjuk a létező fájlt?", - "description": "" - }, - "exportSavedSuccess": { - "message": "A fájl sikeresen elmentve.", - "description": "" - }, - "noFileToImport": { - "message": "A stílusok importálásához előbb exportálni kell őket.", - "description": "" - }, - "connectingDropbox": { - "message": "Kapcsolódás Dropboxhoz...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Dropboxhoz csak közvetlenül a web-boltból telepített alkalmazásból lehet kapcsolódni.", - "description": "" - }, - "gettingStyles": { - "message": "Minden stílus fogadása...", - "description": "" - }, - "zipStyles": { - "message": "Stílusok tömörítése...", - "description": "" - }, - "unzipStyles": { - "message": "Stílusok kibontása...", - "description": "" - }, - "readingStyles": { - "message": "Stílusok olvasása...", - "description": "" + "message": "Frissítve:" }, "uploadingFile": { - "message": "Fájl feltöltése...", - "description": "" + "message": "Fájl feltöltése..." + }, + "usercssAvoidOverwriting": { + "message": "Kérlek, módosítsd a @name vagy a @namespace értékét, nehogy felül legyen írva az egyik létező stílus!" + }, + "usercssConfigIncomplete": { + "message": "A stílust frissítették vagy törölték, miután a beállítóablak megjelent. Ezek a változók nem kerültek mentésre, nehogy megsérüljön a stílus metaadata:" + }, + "usercssEditorNamePlaceholder": { + "message": "Adj meg egy @name-et a kódban" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Le legyen cserélve az alapértelmezett sablon az új Usercss stílusokhoz a jelenlegi kóddal?" + }, + "usercssReplaceTemplateName": { + "message": "Az üres @name lecseréli az alapértelmezett sablont" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Írj kódot ide…" + }, + "versionInvalidOlder": { + "message": "A verzió régebb a telepített stílusnál" + }, + "writeStyleFor": { + "message": "Stílus írása a következőhöz:" + }, + "writeStyleForURL": { + "message": "ehhez az URL-hez" + }, + "zipStyles": { + "message": "Stílusok tömörítése..." } } diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 0be3fef9..47de0788 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Scrivi nuovo stile", - "description": "Label for the button to go to the add style page" + "message": "Scrivi nuovo stile" }, "addStyleTitle": { - "message": "Aggiungi stili", - "description": "Title of the page for adding styles" + "message": "Aggiungi stili" }, "alphaChannel": { - "message": "Opacità", - "description": "Label of color's opacity" + "message": "Opacità" }, "appliesAdd": { - "message": "Aggiungi", - "description": "Label for the button to add an 'applies' entry" + "message": "Aggiungi" }, "appliesDisplay": { "message": "Applica a: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,248 +20,187 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "e altro ancora", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "e altro ancora" }, "appliesDomainOption": { - "message": "URL nel dominio", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL nel dominio" }, "appliesHelp": { - "message": "Utilizza i controlli \"Applica a\" per limitare gli URL a cui viene applicato il codice in questa sezione.", - "description": "Help text for 'applies to' section" + "message": "Utilizza i controlli \"Applica a\" per limitare gli URL a cui viene applicato il codice in questa sezione." }, "appliesLabel": { - "message": "Applica a", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Applica a" }, "appliesLineWidgetLabel": { - "message": "Visualizza info 'Applica a'", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Visualizza info 'Applica a'" }, "appliesLineWidgetWarning": { - "message": "Non funziona con CSS minificato", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Non funziona con CSS minificato" }, "appliesRegexpOption": { - "message": "URL corrispondenti all'espressione regolare", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL corrispondenti all'espressione regolare" }, "appliesRemove": { - "message": "Rimuovi", - "description": "Label for the button to remove an 'applies' entry" + "message": "Rimuovi" }, "appliesSpecify": { - "message": "Specifica", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specifica" }, "appliesToEverything": { - "message": "Tutto", - "description": "Text displayed for styles that apply to all sites" + "message": "Tutto" }, "appliesUrlPrefixOption": { - "message": "URL che iniziano con", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL che iniziano con" }, "applyAllUpdates": { - "message": "Applica tutti gli aggiornamenti", - "description": "Label for the button to apply all detected updates" + "message": "Applica tutti gli aggiornamenti" }, "author": { - "message": "Autore", - "description": "Label for the style author" + "message": "Autore" }, "backupMessage": { - "message": "Seleziona un file o trascinalo in questa pagina.", - "description": "Message for backup" + "message": "Seleziona un file o trascinalo in questa pagina." }, "bckpInstStyles": { - "message": "Esporta stili", - "description": "" + "message": "Esporta stili" }, "checkAllUpdates": { - "message": "Verifica la disponibilità di aggiornamenti per tutti gli stili", - "description": "Label for the button to check all styles for updates" + "message": "Verifica la disponibilità di aggiornamenti per tutti gli stili" }, "checkAllUpdatesForce": { - "message": "Controlla di nuovo, non ho modificato nessuno stile!", - "description": "Label for the button to apply all detected updates" + "message": "Controlla di nuovo, non ho modificato nessuno stile!" }, "checkForUpdate": { - "message": "Verifica la presenza di aggiornamenti", - "description": "Label for the button to check a single style for an update" + "message": "Verifica la presenza di aggiornamenti" }, "checkingForUpdate": { - "message": "Verifica in corso...", - "description": "Text to display when checking a style for an update" + "message": "Verifica in corso..." }, "clickToUninstall": { - "message": "Clicca per disinstallare", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Clicca per disinstallare" }, "cm_autoCloseBrackets": { - "message": "Chiudi automaticamente parentesi e virgolette", - "description": "Label for the checkbox in the style editor." + "message": "Chiudi automaticamente parentesi e virgolette" }, "cm_autoCloseBracketsTooltip": { - "message": "Aggiungi automaticamente il simbolo di chiusura quando apri ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Aggiungi automaticamente il simbolo di chiusura quando apri ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Completamento automatico durante digitazione", - "description": "Label for the checkbox in the style editor." + "message": "Completamento automatico durante digitazione" }, "cm_colorpicker": { - "message": "Selezionatore colore per colori CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Selezionatore colore per colori CSS" }, "cm_indentWithTabs": { - "message": "Usa tabulazioni con indentazione intellingente", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Usa tabulazioni con indentazione intellingente" }, "cm_keyMap": { - "message": "Mappa caratteri", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Mappa caratteri" }, "cm_matchHighlight": { - "message": "Evidenzia", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Evidenzia" }, "cm_matchHighlightSelection": { - "message": "Solo selezione", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Solo selezione" }, "cm_matchHighlightToken": { - "message": "Token sotto il puntatore", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token sotto il puntatore" }, "cm_resizeGripHint": { - "message": "Doppio click per massimizzare/ripristinare l'altezza", - "description": "Tooltip for the resize grip in style editor" + "message": "Doppio click per massimizzare/ripristinare l'altezza" }, "cm_selectByTokens": { - "message": "Doppio click seleziona i token", - "description": "Label for the checkbox in the editor." + "message": "Doppio click seleziona i token" }, "cm_selectByTokensTooltip": { - "message": "Esempi di token: foo-bar-2 #aabbcc 0.32 !important\nQuando disabilitato: vengono selezionate le parole delimitate dalla punteggiatura.", - "description": "" + "message": "Esempi di token: foo-bar-2 #aabbcc 0.32 !important\nQuando disabilitato: vengono selezionate le parole delimitate dalla punteggiatura." }, "cm_smartIndent": { - "message": "Usa indentazione intelligente", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Usa indentazione intelligente" }, "cm_tabSize": { - "message": "Dimensione tabulazione", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Dimensione tabulazione" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" }, "colorpickerTooltip": { - "message": "Apri selettore colore", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Apri selettore colore" }, "configOnChange": { - "message": "su modifica", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "su modifica" }, "configOnChangeTooltip": { - "message": "Salva e applica modifiche automaticamente", - "description": "" + "message": "Salva e applica modifiche automaticamente" }, "configureStyle": { - "message": "Configura", - "description": "Label for the button to configure usercss userstyle" + "message": "Configura" }, "configureStyleOnHomepage": { - "message": "Configura su homepage", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configura su homepage" }, "confirmCancel": { - "message": "Annulla", - "description": "" + "message": "Annulla" }, "confirmClose": { - "message": "Chiudi", - "description": "'Close' button in a confirm dialog" + "message": "Chiudi" }, "confirmDefault": { - "message": "Utilizza predefinito", - "description": "'Set to default' button in a confirm dialog" + "message": "Utilizza predefinito" }, "confirmDelete": { - "message": "Elimina", - "description": "" + "message": "Elimina" }, "confirmDiscardChanges": { - "message": "Scartare le modifiche?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Scartare le modifiche?" }, "confirmSave": { - "message": "Salva", - "description": "'Save' button in a confirm dialog" + "message": "Salva" }, "confirmYes": { - "message": "Si", - "description": "'Yes' button in a confirm dialog" + "message": "Si" }, "dateInstalled": { - "message": "Data installazione", - "description": "Option text for the user to sort the style by install date" + "message": "Data installazione" }, "dateUpdated": { - "message": "Data aggiornata", - "description": "Option text for the user to sort the style by last update date" + "message": "Data aggiornata" }, "dbError": { - "message": "Si è verificato un errore durante l'utilizzo del database Stylus. Vuoi visitare una pagina web con le possibili soluzioni?", - "description": "Prompt when a DB error is encountered" + "message": "Si è verificato un errore durante l'utilizzo del database Stylus. Vuoi visitare una pagina web con le possibili soluzioni?" }, "defaultTheme": { - "message": "predefinito", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "predefinito" }, "deleteStyleConfirm": { - "message": "Vuoi eliminare questo stile?", - "description": "Confirmation before deleting a style" + "message": "Vuoi eliminare questo stile?" }, "deleteStyleLabel": { - "message": "Elimina", - "description": "Label for the button to delete a style" + "message": "Elimina" }, "description": { - "message": "Modifica lo stile del Web con Stylus, un gestore di stili utente. Stylus consente di installare facilmente temi e skin per Google, Facebook, YouTube, Orkut e moltissimi altri siti.", - "description": "Extension description" + "message": "Modifica lo stile del Web con Stylus, un gestore di stili utente. Stylus consente di installare facilmente temi e skin per Google, Facebook, YouTube, Orkut e moltissimi altri siti." }, "disableAllStyles": { - "message": "Disattiva tutti gli stili", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Disattiva tutti gli stili" }, "disableStyleLabel": { - "message": "Disattiva", - "description": "Label for the button to disable a style" + "message": "Disattiva" }, "editDeleteText": { - "message": "Elimina", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Elimina" }, "editGotoLine": { - "message": "Vai alla riga (oppure riga:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Vai alla riga (oppure riga:col)" }, "editStyleHeading": { - "message": "Modifica di stili", - "description": "Title of the page for editing styles" + "message": "Modifica di stili" }, "editStyleLabel": { - "message": "Modifica", - "description": "Label for the button to go to the edit style page" + "message": "Modifica" }, "editStyleTitle": { "message": "Modifica dello stile $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -274,196 +208,150 @@ } }, "enableStyleLabel": { - "message": "Attiva", - "description": "Label for the button to enable a style" + "message": "Attiva" }, "exportLabel": { - "message": "Esporta", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Esporta" }, "externalLink": { - "message": "Link esterno", - "description": "Label for external links" + "message": "Link esterno" }, "externalSupport": { - "message": "Supporto", - "description": "Label for the external link to style's support site" + "message": "Supporto" }, "externalUsercssDocument": { - "message": "Documentazione per Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentazione per Usercss" }, "filteredStyles": { "message": "$numShown$ mostrati di $numTotal$ totali", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Nessuno stile corrispondente ai filtri applicati", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Nessuno stile corrispondente ai filtri applicati" }, "findStyles": { - "message": "Trova stili", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Trova stili" }, "findStylesForSite": { - "message": "Trova più stili per questo sito", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Trova più stili per questo sito" }, "findStylesInlineTooltip": { - "message": "Visualizza risultati in questa finestra.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Visualizza risultati in questa finestra." }, "genericAdd": { - "message": "Aggiungi", - "description": "Used in various places for an action that adds something" + "message": "Aggiungi" }, "genericClone": { - "message": "Clona", - "description": "Used in various places for an action that clones something" + "message": "Clona" }, "genericDisabledLabel": { - "message": "Disattivato", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Disattivato" }, "genericEnabledLabel": { - "message": "Attivato", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Attivato" }, "genericError": { - "message": "Errore", - "description": "Used in various places to indicate some error occurred." + "message": "Errore" }, "genericHistoryLabel": { - "message": "Cronologia", - "description": "Used in various places to show a history log of something" + "message": "Cronologia" }, "genericNext": { - "message": "Successivo", - "description": "Used in various places to select/perform the next step/action" + "message": "Successivo" }, "genericPrevious": { - "message": "Precedente", - "description": "Used in various places to select/perform the previous step/action" + "message": "Precedente" }, "genericResetLabel": { - "message": "Reimposta", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Reimposta" }, "genericSavedMessage": { - "message": "Salvato", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Salvato" }, "genericTitle": { - "message": "Titolo", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Titolo" }, "genericUnknown": { - "message": "Sconosciuto", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Sconosciuto" }, "helpAlt": { - "message": "Guida", - "description": "Alternate text for help buttons" + "message": "Guida" }, "helpKeyMapCommand": { - "message": "Inserisci il nome di un comando", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Inserisci il nome di un comando" }, "helpKeyMapHotkey": { - "message": "Digita una scorciatoia", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Digita una scorciatoia" }, "importAppendLabel": { - "message": "Aggiungi ad uno stile", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Aggiungi ad uno stile" }, "importAppendTooltip": { - "message": "Aggiungi lo stile importato a quello corrente", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Aggiungi lo stile importato a quello corrente" }, "importLabel": { - "message": "Importa", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importa" }, "importReplaceLabel": { - "message": "Sovrascrivi stile", - "description": "Label for the button to import and overwrite current style" + "message": "Sovrascrivi stile" }, "importReplaceTooltip": { - "message": "Scarta i contenuti dello stile corrente e sovrascrivili con quelli dello stile importato", - "description": "Label for the button to import and overwrite current style" + "message": "Scarta i contenuti dello stile corrente e sovrascrivili con quelli dello stile importato" }, "importReportLegendAdded": { - "message": "aggiunto", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "aggiunto" }, "importReportLegendIdentical": { - "message": "identico saltato", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identico saltato" }, "importReportLegendInvalid": { - "message": "invalido saltato", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "invalido saltato" }, "importReportLegendUpdatedBoth": { - "message": "info meta e codice aggiornati", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "info meta e codice aggiornati" }, "importReportLegendUpdatedCode": { - "message": "codice aggiornato", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "codice aggiornato" }, "importReportLegendUpdatedMeta": { - "message": "info meta aggiornate", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "info meta aggiornate" }, "importReportTitle": { - "message": "Importazione stili terminata", - "description": "Title of the report shown after importing styles" + "message": "Importazione stili terminata" }, "importReportUnchanged": { - "message": "Non è stato cambiato nulla.", - "description": "Message in the report shown after importing styles" + "message": "Non è stato cambiato nulla." }, "importReportUndone": { - "message": "gli stili sono stati ripristinati", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "gli stili sono stati ripristinati" }, "importReportUndoneTitle": { - "message": "Importazione annullata", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importazione annullata" }, "installButton": { - "message": "Installa stile", - "description": "Label for install button" + "message": "Installa stile" }, "installButtonInstalled": { - "message": "Stile installato", - "description": "Text displayed when the style is successfully installed" + "message": "Stile installato" }, "installButtonReinstall": { - "message": "Reinstalla stile", - "description": "Label for reinstall button" + "message": "Reinstalla stile" }, "installButtonUpdate": { - "message": "Aggiorna stile", - "description": "Label for update button" + "message": "Aggiorna stile" }, "installUpdate": { - "message": "Installa aggiornamento", - "description": "Label for the button to install an update for a single style" + "message": "Installa aggiornamento" }, "installUpdateFrom": { "message": "Attualmente lo stile è aggiornato da $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -471,32 +359,25 @@ } }, "installUpdateFromLabel": { - "message": "Controlla aggiornamenti", - "description": "Label for the checkbox to save current URL for update check" + "message": "Controlla aggiornamenti" }, "license": { - "message": "Licenza", - "description": "Label for the license" + "message": "Licenza" }, "linkGetHelp": { - "message": "Otteini aiuto", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Otteini aiuto" }, "linkGetStyles": { - "message": "Ottieni stili", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Ottieni stili" }, "linkTranslate": { - "message": "Traduci", - "description": "Transifex link text on the manage page" + "message": "Traduci" }, "linterCSSLintSettings": { - "message": "(Imposta regola: 0 = disabilitata; 1 = warning; 2 = errore)", - "description": "CSSLint rule config values" + "message": "(Imposta regola: 0 = disabilitata; 1 = warning; 2 = errore)" }, "linterConfigPopupTitle": { "message": "Imposta configurazione delle regole di $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -504,92 +385,70 @@ } }, "linterInvalidConfigError": { - "message": "Non salvato a causa di queste impostazioni di configurazione non valide:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Non salvato a causa di queste impostazioni di configurazione non valide:" }, "linterIssues": { - "message": "Problemi", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problemi" }, "linterJSONError": { - "message": "Formato JSON non valido", - "description": "Setting linter config with invalid JSON" + "message": "Formato JSON non valido" }, "linterRulesLink": { - "message": "Vedi una lista completa di regole", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Vedi una lista completa di regole" }, "liveReloadLabel": { - "message": "Ricaricamento live", - "description": "The label of live-reload feature" + "message": "Ricaricamento live" }, "manageFaviconsHelp": { - "message": "Stylus utilizza un servizio esterno https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus utilizza un servizio esterno https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtri", - "description": "Label for filters container" + "message": "Filtri" }, "manageHeading": { - "message": "Stili installati", - "description": "Heading for the manage page" + "message": "Stili installati" }, "manageNewStyleAsUsercss": { - "message": "come Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "come Usercss" }, "manageNewUI": { - "message": "Nuovo layout Gestione UI", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nuovo layout Gestione UI" }, "manageOnlyDisabled": { - "message": "Solo stili disattivati", - "description": "Checkbox to show only disabled styles" + "message": "Solo stili disattivati" }, "manageOnlyEnabled": { - "message": "Solo stili attivati", - "description": "Checkbox to show only enabled styles" + "message": "Solo stili attivati" }, "manageOnlyExternal": { - "message": "Solo stili esterni", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Solo stili esterni" }, "manageOnlyLocal": { - "message": "Solo stili creati localmente", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Solo stili creati localmente" }, "manageOnlyNonUsercss": { - "message": "Solo stili non-Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Solo stili non-Usercss" }, "manageOnlyUpdates": { - "message": "Solo con aggiornamenti o problemi", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Solo con aggiornamenti o problemi" }, "manageOnlyUsercss": { - "message": "Solo stili Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "Solo stili Usercss" }, "menuShowBadge": { - "message": "Mostra contatore stili attivi", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Mostra contatore stili attivi" }, "meta_invalidNumber": { - "message": "Atteso un numero", - "description": "Error displayed when the value is expected to be a number" + "message": "Atteso un numero" }, "meta_invalidString": { - "message": "Attesa una stringa tra apici", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Attesa una stringa tra apici" }, "meta_invalidWord": { - "message": "Attesa una parola", - "description": "Error displayed when the value is expected to be a word" + "message": "Attesa una parola" }, "meta_missingChar": { "message": "Attesi caratteri: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -597,12 +456,10 @@ } }, "meta_missingEOT": { - "message": "Atteso EOT", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Atteso EOT" }, "meta_missingMandatory": { "message": "Manca metadata obbligatorio: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -611,7 +468,6 @@ }, "meta_unknownJSONLiteral": { "message": "JSON non valido: $literal$ non è un letterale JSON valido", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -620,7 +476,6 @@ }, "meta_unknownMeta": { "message": "metadata sconosciuto: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" @@ -628,260 +483,193 @@ } }, "noStylesForSite": { - "message": "Nessuno stile installato per questo sito.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nessuno stile installato per questo sito." }, "openManage": { - "message": "Gestisci gli stili installati", - "description": "Link to open the manage page." + "message": "Gestisci gli stili installati" }, "openStylesManager": { - "message": "Apri gestore stili", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Apri gestore stili" }, "optionsActions": { - "message": "Azioni", - "description": "" + "message": "Azioni" }, "optionsAdvanced": { - "message": "Avanzato", - "description": "" + "message": "Avanzato" }, "optionsAdvancedContextDelete": { - "message": "Aggiungi 'Elimina' al menu contestuale dell'editor", - "description": "" + "message": "Aggiungi 'Elimina' al menu contestuale dell'editor" }, "optionsBadgeDisabled": { - "message": "Colore sfondo quanto disattivato", - "description": "" + "message": "Colore sfondo quanto disattivato" }, "optionsBadgeNormal": { - "message": "Colore sfondo", - "description": "" + "message": "Colore sfondo" }, "optionsCheck": { - "message": "Aggiorna stili", - "description": "" + "message": "Aggiorna stili" }, "optionsCheckUpdate": { - "message": "Controlla e installa gli aggiornamenti disponibili", - "description": "" + "message": "Controlla e installa gli aggiornamenti disponibili" }, "optionsCustomizeUpdate": { - "message": "Aggiornamenti", - "description": "" + "message": "Aggiornamenti" }, "optionsHeading": { - "message": "Opzioni", - "description": "Heading for options section on manage page." + "message": "Opzioni" }, "optionsIconDark": { - "message": "Temi browser scuri", - "description": "" + "message": "Temi browser scuri" }, "optionsIconLight": { - "message": "Temi browser chiari", - "description": "" + "message": "Temi browser chiari" }, "optionsOpen": { - "message": "Apri", - "description": "" + "message": "Apri" }, "optionsOpenManager": { - "message": "Organizza stili", - "description": "" + "message": "Organizza stili" }, "optionsPopupWidth": { - "message": "Larghezza popup (in pixel)", - "description": "" + "message": "Larghezza popup (in pixel)" }, "optionsReset": { - "message": "Reimposta le opzioni ai valori predefiniti", - "description": "" + "message": "Reimposta le opzioni ai valori predefiniti" }, "optionsResetButton": { - "message": "Reimposta opzioni", - "description": "" + "message": "Reimposta opzioni" }, "optionsSubheading": { - "message": "Più Opzioni", - "description": "Subheading for options section on manage page." + "message": "Più Opzioni" }, "optionsUpdateImportNote": { - "message": "Quando importi backup di stili da una vecchia versione di Stylish, esegui un controllo una tantum manualmente nel gestore stili per assicurarti che siano tutti aggiornati.", - "description": "" + "message": "Quando importi backup di stili da una vecchia versione di Stylish, esegui un controllo una tantum manualmente nel gestore stili per assicurarti che siano tutti aggiornati." }, "paginationCurrent": { - "message": "Pagina corrente", - "description": "Tooltip for the current page index in search results" + "message": "Pagina corrente" }, "paginationEstimated": { - "message": "Numero stimato di pagine", - "description": "Tooltip for the total page count in search results" + "message": "Numero stimato di pagine" }, "paginationNext": { - "message": "Pagine successiva", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Pagine successiva" }, "paginationPrevious": { - "message": "Pagine precedente", - "description": "Tooltip for the '<-' button in search results" + "message": "Pagine precedente" }, "paginationTotal": { - "message": "Totale pagine", - "description": "" + "message": "Totale pagine" }, "popupBorders": { - "message": "Aggiungi bordi bianchi sui lati", - "description": "" + "message": "Aggiungi bordi bianchi sui lati" }, "popupBordersTooltip": { - "message": "Utile per temi scuri nelle nuove versioni di Chrome dato che non colora più i bordi laterali", - "description": "" + "message": "Utile per temi scuri nelle nuove versioni di Chrome dato che non colora più i bordi laterali" }, "popupHotkeysTooltip": { - "message": "Click per visualizzare le scorciatoie disponibili", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Click per visualizzare le scorciatoie disponibili" }, "popupManageTooltip": { - "message": "Shift-click o click destro apre il gestore con gli stili applicabili per il sito corrente", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift-click o click destro apre il gestore con gli stili applicabili per il sito corrente" }, "popupOpenEditInWindow": { - "message": "Apri editor in una nuova finestra", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Apri editor in una nuova finestra" }, "prefShowBadge": { - "message": "Stili attivi per il sito attuale", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Stili attivi per il sito attuale" }, "previewLabel": { - "message": "Anteprima live", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Anteprima live" }, "previewTooltip": { - "message": "Applica temporaneamente le modifiche senza salvarle.\nSalva lo stile per rendere le modifiche permanenti.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Applica temporaneamente le modifiche senza salvarle.\nSalva lo stile per rendere le modifiche permanenti." }, "replace": { - "message": "Sostituisci", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Sostituisci" }, "replaceAll": { - "message": "Sostituisci tutto", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Sostituisci tutto" }, "replaceWith": { - "message": "Sostituisci con", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Sostituisci con" }, "retrieveBckp": { - "message": "Importa stili", - "description": "" + "message": "Importa stili" }, "search": { - "message": "Cerca", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Cerca" }, "searchNumberOfResults": { - "message": "Numero di occorrenze", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Numero di occorrenze" }, "searchResultInstallCount": { - "message": "Installazioni totali", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Installazioni totali" }, "searchResultNoneFound": { - "message": "Nessuno stile trovato per questo sito.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nessuno stile trovato per questo sito." }, "searchResultRating": { - "message": "Valutazioni", - "description": "Text for label that shows the search result's rating" + "message": "Valutazioni" }, "searchResultUpdated": { - "message": "Aggiornato", - "description": "Text for label that shows the search result's last update date" + "message": "Aggiornato" }, "searchResultWeeklyCount": { - "message": "Installazioni settimanali", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Contenuti ricerca", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "Installazioni settimanali" }, "sectionAdd": { - "message": "Aggiungi un'altra sezione", - "description": "Label for the button to add a section" + "message": "Aggiungi un'altra sezione" }, "sectionCode": { - "message": "Codice", - "description": "Label for the code for a section" + "message": "Codice" }, "sectionRemove": { - "message": "Rimuovi sezione", - "description": "Label for the button to remove a section" + "message": "Rimuovi sezione" }, "shortcuts": { - "message": "Scorciatoie", - "description": "Go to shortcut configuration" + "message": "Scorciatoie" }, "shortcutsNote": { - "message": "Definisci scorciatoie da tastiera", - "description": "" + "message": "Definisci scorciatoie da tastiera" }, "sortDateNewestFirst": { - "message": "prima i più recenti", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "prima i più recenti" }, "sortDateOldestFirst": { - "message": "prima i più vecchi", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "prima i più vecchi" }, "sortLabel": { - "message": "Seleziona come ordinare gli stili installati", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Seleziona come ordinare gli stili installati" }, "sortLabelTitleDesc": { - "message": "Titolo Discendente", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Titolo Discendente" }, "sortStylesHelpTitle": { - "message": "Ordina contenuti", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Ordina contenuti" }, "styleBadRegexp": { - "message": "Regexp non valida.", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp non valida." }, "styleBeautifyPreserveNewlines": { - "message": "Mantieni gli \"a capo\"", - "description": "CSS-beautifier option" + "message": "Mantieni gli \"a capo\"" }, "styleCancelEditLabel": { - "message": "Torna a gestione", - "description": "Label for cancel button for style editing" + "message": "Torna a gestione" }, "styleChangesNotSaved": { - "message": "Hai apportato modifiche a questo stile senza salvare.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Hai apportato modifiche a questo stile senza salvare." }, "styleEnabledLabel": { - "message": "Attivato", - "description": "Label for the enabled state of styles" + "message": "Attivato" }, "styleFromMozillaFormatError": { - "message": "Importazione da formato Mozilla fallita", - "description": "Label for the import error" + "message": "Importazione da formato Mozilla fallita" }, "styleFromMozillaFormatPrompt": { - "message": "Incolla il codice formato Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Incolla il codice formato Mozilla" }, "styleInstall": { "message": "Installare \"$stylename$\" in Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -890,7 +678,6 @@ }, "styleInstallFailed": { "message": "Installazione stile fallita!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -899,62 +686,50 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' è già installato. Vuoi sovrascriverlo?\nVersione: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Inserisci un nome", - "description": "Error displayed when user saves without providing a name" + "message": "Inserisci un nome" }, "styleMozillaFormatHeading": { - "message": "Formato Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Formato Mozilla" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Lo stile non è stato applicato a causa dell'uso errato di 'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Lo stile non è stato applicato a causa dell'uso errato di 'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "Qualche regola 'regexp()' che non può essere compilata.", - "description": "" + "message": "Qualche regola 'regexp()' che non può essere compilata." }, "styleRegexpProblemTooltip": { - "message": "Numero di sezioni non applicato a causa dell'uso errato di 'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Numero di sezioni non applicato a causa dell'uso errato di 'regexp()'" }, "styleRegexpTestButton": { - "message": "Test RegExp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Test RegExp" }, "styleRegexpTestInvalid": { - "message": "Regexp invalida ignorata", - "description": "RegExp test report: label for the invalid expressions" + "message": "Regexp invalida ignorata" }, "styleSaveLabel": { - "message": "Salva", - "description": "Label for save button for style editing" + "message": "Salva" }, "styleToMozillaFormatHelp": { - "message": "Il formato Mozilla del codice può essere utilizzato con Stylish per Firefox e può essere inviato a userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Il formato Mozilla del codice può essere utilizzato con Stylish per Firefox e può essere inviato a userstyles.org." }, "styleToMozillaFormatTitle": { - "message": "Stile in formato Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Stile in formato Mozilla" }, "styleUpdate": { "message": "Sei sicuro di voler aggiornare '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -962,44 +737,31 @@ } }, "stylusUnavailableForURL": { - "message": "Stylus non funziona in pagine come questa.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus non funziona in pagine come questa." }, "syncStorageErrorSaving": { - "message": "Il valore non può essere salvato. Prova a ridurre la quantità di testo.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Il valore non può essere salvato. Prova a ridurre la quantità di testo." }, "undo": { - "message": "Annulla", - "description": "Button label" + "message": "Annulla" }, "undoGlobal": { - "message": "Annulla in tutte le sezioni", - "description": "CSS-beautify global Undo button label" + "message": "Annulla in tutte le sezioni" }, "unreachableAMO": { - "message": "Firefox proibisce l'accesso al sito.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" - }, - "unreachableAMOHintOldFF": { - "message": "Solo Firefox 59 e successivi possono essere configurati per consentire alle WebExtensions di aggiungere elementi degli stili su siti CSP-protected come questo.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Firefox proibisce l'accesso al sito." }, "unreachableContentScript": { - "message": "Impossibile comunicare con la pagina. Prova a ricaricare la scheda.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Impossibile comunicare con la pagina. Prova a ricaricare la scheda." }, "updateAllCheckSucceededNoUpdate": { - "message": "Nessun aggiornamento trovato", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Nessun aggiornamento trovato" }, "updateAllCheckSucceededSomeEdited": { - "message": "Alcuni aggiornamenti di stili non sono stati controllati per evitare la perdita di modifiche locali. Gli aggiornamenti possono essere forzati individualmente, o eseguendo un ulteriore controllo per tutti gli stili (le modifiche locali saranno sovrascritte).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Alcuni aggiornamenti di stili non sono stati controllati per evitare la perdita di modifiche locali. Gli aggiornamenti possono essere forzati individualmente, o eseguendo un ulteriore controllo per tutti gli stili (le modifiche locali saranno sovrascritte)." }, "updateCheckFailBadResponseCode": { "message": "Aggiornamento non riuscito: il server ha risposto con il codice $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1007,51 +769,39 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Aggiornamento non riuscito: server non raggiungibile.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Aggiornamento non riuscito: server non raggiungibile." }, "updateCheckHistory": { - "message": "Cronologia controlli aggiornamento", - "description": "" + "message": "Cronologia controlli aggiornamento" }, "updateCheckManualUpdateForce": { - "message": "Installa aggiornamento (le modifiche locali verranno sovrascritte)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Installa aggiornamento (le modifiche locali verranno sovrascritte)" }, "updateCheckManualUpdateHint": { - "message": "Forzare un aggiornamento sovrascriverà tutte le modifiche locali", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Forzare un aggiornamento sovrascriverà tutte le modifiche locali" }, "updateCheckSkippedLocallyEdited": { - "message": "Questo stile è stato editato localmente.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Questo stile è stato editato localmente." }, "updateCheckSucceededNoUpdate": { - "message": "Lo stile è aggiornato.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Lo stile è aggiornato." }, "updateCompleted": { - "message": "Aggiornamento completato.", - "description": "Text that displays when an update completed" + "message": "Aggiornamento completato." }, "updatesCurrentlyInstalled": { - "message": "Aggiornamenti installati:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." + "message": "Aggiornamenti installati:" }, "usercssReplaceTemplateSectionBody": { - "message": "Inserisci codice qui...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" + "message": "Inserisci codice qui..." }, "versionInvalidOlder": { - "message": "La versione dello stile è più vecchia di quella installata.", - "description": "Displayed when the version of style is older than the installed one" + "message": "La versione dello stile è più vecchia di quella installata." }, "writeStyleFor": { - "message": "Scrivi stile per:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Scrivi stile per:" }, "writeStyleForURL": { - "message": "questo URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "questo URL" } } diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json index b76c741f..c282ef9b 100644 --- a/_locales/ja/messages.json +++ b/_locales/ja/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylusにはアクセスできないファイル形式があります(例えばpdfやjsonファイル等)。" + }, "addStyleLabel": { - "message": "新スタイルを作成", - "description": "Label for the button to go to the add style page" + "message": "新スタイルを作成" }, "addStyleTitle": { - "message": "スタイルを追加", - "description": "Title of the page for adding styles" + "message": "スタイルを追加" }, "alphaChannel": { - "message": "透明度", - "description": "Label of color's opacity" + "message": "透明度" }, "appliesAdd": { - "message": "追加", - "description": "Label for the button to add an 'applies' entry" + "message": "追加" }, "appliesDisplay": { "message": "適用先: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,288 +23,232 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "さらに表示", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "さらに表示" }, "appliesDomainOption": { - "message": "ドメイン上の URL", - "description": "Option to make the style apply to the entered string as a domain" + "message": "ドメイン上の URL" }, "appliesHelp": { - "message": "「適用先」を使用すると、このセクションのコードが適用される URL を制限することができます。", - "description": "Help text for 'applies to' section" + "message": "「適用先」を使用すると、このセクションのコードが適用される URL を制限することができます。" }, "appliesLabel": { - "message": "適用先", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "適用先" }, "appliesLineWidgetLabel": { - "message": "「適用先」の情報を表示", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "「適用先」の情報を表示" }, "appliesLineWidgetWarning": { - "message": "圧縮されたCSSでは機能しません", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "圧縮されたCSSでは機能しません" }, "appliesRegexpOption": { - "message": "正規表現に一致する URL", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "正規表現に一致する URL" }, "appliesRemove": { - "message": "削除", - "description": "Label for the button to remove an 'applies' entry" + "message": "削除" }, "appliesRemoveError": { - "message": "「適用先」の最後の項目を削除することはできません", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "「適用先」の最後の項目を削除することはできません" }, "appliesSpecify": { - "message": "個別指定", - "description": "Label for the button to make a style apply only to specific sites" + "message": "個別指定" }, "appliesToEverything": { - "message": "すべて", - "description": "Text displayed for styles that apply to all sites" + "message": "すべて" }, "appliesUrlPrefixOption": { - "message": "次で始まる URL", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "次で始まる URL" }, "applyAllUpdates": { - "message": "すべての更新を適用", - "description": "Label for the button to apply all detected updates" + "message": "すべての更新を適用" }, "author": { - "message": "作者", - "description": "Label for the style author" + "message": "作者" }, "backupButtons": { - "message": "バックアップ", - "description": "Heading for backup" + "message": "バックアップ" }, "backupMessage": { - "message": "ファイルを選択するか、このページにドラッグ&ドロップしてください。", - "description": "Message for backup" + "message": "ファイルを選択するか、このページにドラッグ&ドロップしてください。" }, "bckpInstStyles": { - "message": "スタイルをエクスポート", - "description": "" + "message": "スタイルをエクスポート" }, "checkAllUpdates": { - "message": "全スタイルの更新をチェック", - "description": "Label for the button to check all styles for updates" + "message": "全スタイルの更新をチェック" }, "checkAllUpdatesForce": { - "message": "全スタイルを再チェックします。私はスタイルを編集していません!", - "description": "Label for the button to apply all detected updates" + "message": "全スタイルを再チェックします。私はスタイルを編集していません!" }, "checkForUpdate": { - "message": "更新をチェック", - "description": "Label for the button to check a single style for an update" + "message": "更新をチェック" }, "checkingForUpdate": { - "message": "チェック中...", - "description": "Text to display when checking a style for an update" + "message": "チェック中..." }, "clickToUninstall": { - "message": "クリックでアンインストール", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "クリックでアンインストール" }, "cm_autoCloseBrackets": { - "message": "括弧と引用符を自動的に閉じる", - "description": "Label for the checkbox in the style editor." + "message": "括弧と引用符を自動的に閉じる" }, "cm_autoCloseBracketsTooltip": { - "message": "()[]{}''\"\" の開き括弧/引用符の入力時に、対応する閉じ括弧/引用符を自動的に追加します", - "description": "Label for the checkbox in the style editor." + "message": "()[]{}''\"\" の開き括弧/引用符の入力時に、対応する閉じ括弧/引用符を自動的に追加します" }, "cm_autocompleteOnTyping": { - "message": "入力の自動補完を有効にする", - "description": "Label for the checkbox in the style editor." + "message": "入力の自動補完を有効にする" }, "cm_colorpicker": { - "message": "CSSの色選択ツールを使用する", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "CSSの色選択ツールを使用する" }, "cm_indentWithTabs": { - "message": "スマートインデントにタブ文字を使用", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "スマートインデントにタブ文字を使用" }, "cm_keyMap": { - "message": "キーマップ", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "キーマップ" }, "cm_lineWrapping": { - "message": "ワードラップを有効にする", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "ワードラップを有効にする" }, "cm_matchHighlight": { - "message": "ハイライト", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "ハイライト" }, "cm_matchHighlightSelection": { - "message": "選択した単語のみ", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "選択した単語のみ" }, "cm_matchHighlightToken": { - "message": "カーソル下の単語", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "カーソル下の単語" }, "cm_resizeGripHint": { - "message": "ダブルクリックで高さを最大化/元に戻す", - "description": "Tooltip for the resize grip in style editor" + "message": "ダブルクリックで高さを最大化/元に戻す" }, "cm_selectByTokens": { - "message": "ダブルクリックでトークンを選択する", - "description": "Label for the checkbox in the editor." + "message": "ダブルクリックでトークンを選択する" }, "cm_selectByTokensTooltip": { - "message": "トークンの例: .foo-bar-2 #aabbcc 0.32 !important\n無効にすると、記号で区切られた範囲で単語が選択されます。", - "description": "" + "message": "トークンの例: .foo-bar-2 #aabbcc 0.32 !important\n無効にすると、記号で区切られた範囲で単語が選択されます。" }, "cm_smartIndent": { - "message": "スマートインデントを使用する", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "スマートインデントを使用する" }, "cm_tabSize": { - "message": "タブサイズ", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "タブサイズ" }, "cm_theme": { - "message": "テーマ", - "description": "Label for the style editor's CSS theme." + "message": "テーマ" + }, + "colorpickerPaletteHint": { + "message": "見本を右クリックして対応するソース行を選択します" }, "colorpickerSwitchFormatTooltip": { - "message": "フォーマット切り替え: HEX -> RGB -> HSL\nシフトを押しながらクリックすると逆向きに切り替えます。\nまた、PgUp (PageUp), PgDn (PageDown) キーも使用できます。", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "フォーマット切り替え: HEX -> RGB -> HSL\nシフトを押しながらクリックすると逆向きに切り替えます。\nまた、PgUp (PageUp), PgDn (PageDown) キーも使用できます。" }, "colorpickerTooltip": { - "message": "色選択ツールを開きます", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "色選択ツールを開きます" }, "configOnChange": { - "message": "変更時", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "変更時" }, "configOnChangeTooltip": { - "message": "自動保存して変更を自動的に適用します", - "description": "" + "message": "自動保存して変更を自動的に適用します" }, "configureStyle": { - "message": "設定", - "description": "Label for the button to configure usercss userstyle" + "message": "設定" }, "configureStyleOnHomepage": { - "message": "ホームページ上で設定", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "ホームページ上で設定" }, "confirmCancel": { - "message": "キャンセル", - "description": "" + "message": "キャンセル" }, "confirmClose": { - "message": "閉じる", - "description": "'Close' button in a confirm dialog" + "message": "閉じる" }, "confirmDefault": { - "message": "デフォルトを使用", - "description": "'Set to default' button in a confirm dialog" + "message": "デフォルトを使用" }, "confirmDelete": { - "message": "削除", - "description": "" + "message": "削除" }, "confirmDiscardChanges": { - "message": "変更を破棄しますか?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "変更を破棄しますか?" }, "confirmNo": { - "message": "いいえ", - "description": "'No' button in a confirm dialog" + "message": "いいえ" }, "confirmSave": { - "message": "保存", - "description": "'Save' button in a confirm dialog" + "message": "保存" }, "confirmStop": { - "message": "中止", - "description": "'Stop' button in a confirm dialog" + "message": "中止" }, "confirmYes": { - "message": "はい", - "description": "'Yes' button in a confirm dialog" + "message": "はい" + }, + "connectingDropbox": { + "message": "Dropboxに接続中..." + }, + "connectingDropboxNotAllowed": { + "message": "Dropboxへの接続は、webstoreから直接インストールしたアプリ内でのみ可能です" }, "copied": { - "message": "クリップボードへコピーしました", - "description": "Message shown when content has been copied to the clipboard" + "message": "クリップボードへコピーしました" }, "copy": { - "message": "クリップボードへコピー", - "description": "Tooltip for elements which can be copied" + "message": "クリップボードへコピー" + }, + "customNameHint": { + "message": "(更新を妨げない)UI 上でのみ有効なスタイルのカスタム名を入力してください" + }, + "customNameResetHint": { + "message": "カスタム名の使用をやめ、スタイル自身の名称に切り替えます" }, "dateInstalled": { - "message": "インストール日", - "description": "Option text for the user to sort the style by install date" + "message": "インストール日" }, "dateUpdated": { - "message": "更新日", - "description": "Option text for the user to sort the style by last update date" + "message": "更新日" }, "dbError": { - "message": "Stylusのデータベース使用中にエラーが発生しました。考えられる解決策を記載したWebページを開きますか?", - "description": "Prompt when a DB error is encountered" + "message": "Stylusのデータベース使用中にエラーが発生しました。考えられる解決策を記載したWebページを開きますか?" }, "defaultTheme": { - "message": "デフォルト", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "デフォルト" }, "deleteStyleConfirm": { - "message": "このスタイルを削除してもよろしいですか?", - "description": "Confirmation before deleting a style" + "message": "このスタイルを削除してもよろしいですか?" }, "deleteStyleLabel": { - "message": "削除", - "description": "Label for the button to delete a style" + "message": "削除" }, "description": { - "message": "Stylus でウェブのデザインを変更しましょう。これは、ユーザースタイルを管理するツールです。Stylus を利用すると、多くの人気サイト向けのテーマやスキンを簡単にインストールできます。", - "description": "Extension description" + "message": "Stylus でウェブのデザインを変更しましょう。これは、ユーザースタイルを管理するツールです。Stylus を利用すると、多くの人気サイト向けのテーマやスキンを簡単にインストールできます。" }, "disableAllStyles": { - "message": "すべてのスタイルをオフにする", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "すべてのスタイルをオフにする" }, "disableStyleLabel": { - "message": "無効化", - "description": "Label for the button to disable a style" + "message": "無効化" }, "dragDropMessage": { - "message": "このページの任意の場所にバックアップファイルをドロップしてインポートします。", - "description": "Drag'n'drop message" + "message": "このページの任意の場所にバックアップファイルをドロップしてインポートします。" }, "dragDropUsercssTabstrip": { - "message": "ファイルをインストールするときは、タブ(タイトルが表示されている領域)にドロップしてください。", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "ファイルをインストールするときは、タブ(タイトルが表示されている領域)にドロップしてください。" }, "editDeleteText": { - "message": "削除", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "削除" }, "editGotoLine": { - "message": "行(または行:列)に移動", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "行(または行:列)に移動" }, "editStyleHeading": { - "message": "スタイルを編集", - "description": "Title of the page for editing styles" + "message": "スタイルを編集" }, "editStyleLabel": { - "message": "編集", - "description": "Label for the button to go to the edit style page" + "message": "編集" }, "editStyleTitle": { "message": "スタイル「$stylename$」を編集", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -314,220 +256,183 @@ } }, "enableStyleLabel": { - "message": "有効化", - "description": "Label for the button to enable a style" + "message": "有効化" }, "excludeStyleByDomainLabel": { - "message": "現在のドメインを除外", - "description": "" + "message": "現在のドメインを除外" }, "excludeStyleByUrlLabel": { - "message": "現在のURLを除外", - "description": "" + "message": "現在のURLを除外" }, "exportLabel": { - "message": "エクスポート", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "エクスポート" + }, + "exportSavedSuccess": { + "message": "ファイルをセーブしました" }, "externalFeedback": { - "message": "フィードバック", - "description": "Label for the external link to send feedback for the style" + "message": "フィードバック" }, "externalHomepage": { - "message": "ホームページ", - "description": "Label for the external link to style's homepage" + "message": "ホームページ" }, "externalLink": { - "message": "外部リンク", - "description": "Label for external links" + "message": "外部リンク" }, "externalSupport": { - "message": "サポート", - "description": "Label for the external link to style's support site" + "message": "サポート" }, "externalUsercssDocument": { - "message": "Usercssの文書", - "description": "Label for the external link to usercss documentation" + "message": "Usercssの文書" }, "filteredStyles": { "message": "$numTotal$ 件中の $numShown$ 件を表示", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "現在のフィルターにマッチするスタイルはありません", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "現在のフィルターにマッチするスタイルはありません" }, "findStyles": { - "message": "スタイルを検索", - "description": "Text for a link that gets a list of styles for the current site" + "message": "スタイルを検索" }, "findStylesForSite": { - "message": "このサイト用のスタイルを検索", - "description": "Text for a link that gets a list of styles for the current site" + "message": "このサイト用のスタイルを検索" }, "findStylesInline": { - "message": "結果を下に表示", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "結果を下に表示" }, "findStylesInlineTooltip": { - "message": "検索結果をこのウィンドウに表示", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "検索結果をこのウィンドウに表示" }, "genericAdd": { - "message": "追加", - "description": "Used in various places for an action that adds something" + "message": "追加" }, "genericClone": { - "message": "複製", - "description": "Used in various places for an action that clones something" + "message": "複製" + }, + "genericDescription": { + "message": "記述" }, "genericDisabledLabel": { - "message": "無効化", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "無効化" }, "genericEnabledLabel": { - "message": "有効", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "有効" }, "genericError": { - "message": "エラー", - "description": "Used in various places to indicate some error occurred." + "message": "エラー" }, "genericHistoryLabel": { - "message": "履歴", - "description": "Used in various places to show a history log of something" + "message": "履歴" }, "genericNext": { - "message": "次", - "description": "Used in various places to select/perform the next step/action" + "message": "次" }, "genericPrevious": { - "message": "前", - "description": "Used in various places to select/perform the previous step/action" + "message": "前" }, "genericResetLabel": { - "message": "リセット", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "リセット" }, "genericSavedMessage": { - "message": "保存しました", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "保存しました" }, "genericTitle": { - "message": "タイトル", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "タイトル" }, "genericUnknown": { - "message": "不明", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "不明" + }, + "gettingStyles": { + "message": "全スタイルを取得中..." }, "helpAlt": { - "message": "ヘルプ", - "description": "Alternate text for help buttons" + "message": "ヘルプ" }, "helpKeyMapCommand": { - "message": "コマンド名を入力", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "コマンド名を入力" }, "helpKeyMapHotkey": { - "message": "ホットキーを押す", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "ホットキーを押す" }, "hostDisabled": { - "message": "使用中のブラウザの現在のバージョンの不具合のため、このホストは無効にされています", - "description": "Tooltip for cloud host disabled" + "message": "使用中のブラウザの現在のバージョンの不具合のため、このホストは無効にされています" }, "importAppendLabel": { - "message": "スタイルに追加", - "description": "Label for the button to import a style and append to the existing sections" + "message": "スタイルに追加" }, "importAppendTooltip": { - "message": "インポートされたスタイルを現在のスタイルに追加する", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "インポートされたスタイルを現在のスタイルに追加する" }, "importLabel": { - "message": "インポート", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "インポート" + }, + "importPreprocessor": { + "message": "@preprocessorを含むスタイルは、クラシックモードでは機能しません。エディタをUsercssモードにしてください : 1) スタイルマネージャーを開きます, 2)「Usercssとして」チェックボックスをONにします, 3)「新スタイルを作成」をクリックします" + }, + "importPreprocessorTitle": { + "message": "@preprocessorの潜在的な問題" }, "importReplaceLabel": { - "message": "スタイルを上書き", - "description": "Label for the button to import and overwrite current style" + "message": "スタイルを上書き" }, "importReplaceTooltip": { - "message": "現在のスタイルの内容を破棄し、インポートされたスタイルで上書きする", - "description": "Label for the button to import and overwrite current style" + "message": "現在のスタイルの内容を破棄し、インポートされたスタイルで上書きする" }, "importReportLegendAdded": { - "message": "件のスタイルを追加しました", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "件のスタイルを追加しました" }, "importReportLegendIdentical": { - "message": "件の同一のスタイルをスキップしました", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "件の同一のスタイルをスキップしました" }, "importReportLegendInvalid": { - "message": "件の無効なスタイルをスキップしました", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "件の無効なスタイルをスキップしました" }, "importReportLegendUpdatedBoth": { - "message": "件のメタ情報とコードを更新しました", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "件のメタ情報とコードを更新しました" }, "importReportLegendUpdatedCode": { - "message": "件のコードを更新しました", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "件のコードを更新しました" }, "importReportLegendUpdatedMeta": { - "message": "件のメタ情報を更新しました", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "件のメタ情報を更新しました" }, "importReportTitle": { - "message": "スタイルのインポートが終了しました", - "description": "Title of the report shown after importing styles" + "message": "スタイルのインポートが終了しました" }, "importReportUnchanged": { - "message": "変更がありませんでした。", - "description": "Message in the report shown after importing styles" + "message": "変更がありませんでした。" }, "importReportUndone": { - "message": "件のスタイルを元に戻しました", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "件のスタイルを元に戻しました" }, "importReportUndoneTitle": { - "message": "インポートが取り消されました", - "description": "Title of the message box shown after undoing the import of styles" + "message": "インポートが取り消されました" }, "installButton": { - "message": "インストール", - "description": "Label for install button" + "message": "インストール" }, "installButtonInstalled": { - "message": "インストール済み", - "description": "Text displayed when the style is successfully installed" + "message": "スタイルがインストールされています" }, "installButtonReinstall": { - "message": "再インストール", - "description": "Label for reinstall button" + "message": "再インストール" }, "installButtonUpdate": { - "message": "更新", - "description": "Label for update button" + "message": "更新" }, "installUpdate": { - "message": "更新をインストール", - "description": "Label for the button to install an update for a single style" + "message": "更新をインストール" }, "installUpdateFrom": { "message": "現在、このスタイルは「$url$」から更新されます", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -535,32 +440,34 @@ } }, "installUpdateFromLabel": { - "message": "更新をチェック", - "description": "Label for the checkbox to save current URL for update check" + "message": "更新をチェック" }, "license": { - "message": "ライセンス", - "description": "Label for the license" + "message": "ライセンス" }, "linkGetHelp": { - "message": "ヘルプ", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "ヘルプ" + }, + "linkGetShareStyles": { + "message": "スタイルを取得し共有する" + }, + "linkGetShareStylesInfo": { + "message": "新しいコミュニティ主導の userstyles.world サイトが、ユーザースタイルの作者達によって、既存の userstyles.org を置き換えるために作成されました。userstyle.org はこの1年の間、かなり遅くて応答性が悪くなっていたため、多くの作者がスタイルの更新をやめていました。" }, "linkGetStyles": { - "message": "スタイルを取得", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "スタイルを取得" + }, + "linkGetStylesInfo": { + "message": "このアーカイブサイトは、ユーザースタイルのコミュニティメンバーにより、遅くて応答性の悪い userstyles.org のバックアップ用として作成されました。アーカイブの内容は、おおよそ1日1回更新されます。" }, "linkStylusWiki": { - "message": "ウィキ", - "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" + "message": "ウィキ" }, "linkTranslate": { - "message": "翻訳", - "description": "Transifex link text on the manage page" + "message": "翻訳" }, "linterCSSLintIncompatible": { "message": "CSSLintは「$preprocessorname$」プリプロセッサをサポートしていません", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -568,12 +475,10 @@ } }, "linterCSSLintSettings": { - "message": "(次のようにルールを設定してください: 0=無効, 1=警告, 2=エラー)", - "description": "CSSLint rule config values" + "message": "(次のようにルールを設定してください: 0=無効, 1=警告, 2=エラー)" }, "linterConfigPopupTitle": { "message": "$linter$ のルールを設定する", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -581,20 +486,16 @@ } }, "linterConfigTooltip": { - "message": "Linterの設定を行うときはクリックしてください", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Linterの設定を行うときはクリックしてください" }, "linterInvalidConfigError": { - "message": "これらの不正な設定のために保存されませんでした:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "これらの不正な設定のために保存されませんでした:" }, "linterIssues": { - "message": "問題点", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "問題点" }, "linterIssuesHelp": { "message": "$link$ によってこれらの問題点が見つかりました:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -602,144 +503,93 @@ } }, "linterJSONError": { - "message": "不正なJSONフォーマットです", - "description": "Setting linter config with invalid JSON" + "message": "不正なJSONフォーマットです" }, "linterResetMessage": { - "message": "予期しないリセットを復旧するには、テキストボックス内で Ctrl-Z(または Cmd-Z)を押してください", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "予期しないリセットを復旧するには、テキストボックス内で Ctrl-Z(または Cmd-Z)を押してください" }, "linterRulesLink": { - "message": "ルールの完全なリストを見る", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "ルールの完全なリストを見る" }, "liveReloadError": { - "message": "ファイルの監視中にエラーが発生しました", - "description": "The label of live-reload error" + "message": "ファイルの監視中にエラーが発生しました" }, "liveReloadInstallHint": { - "message": "外部の変更時にスタイルを自動更新する場合は、このタブを開いたままにしておいてください。", - "description": "The label of live-reload feature" + "message": "外部の変更時にスタイルを自動更新する場合は、このタブを開いたままにしておいてください。" }, "liveReloadInstallHintFF": { - "message": "外部の変更時にスタイルを自動更新する場合は、このタブと元のタブを開いたままにしておいてください。", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "外部の変更時にスタイルを自動更新する場合は、このタブと元のタブを開いたままにしておいてください。" }, "liveReloadLabel": { - "message": "自動リロード", - "description": "The label of live-reload feature" + "message": "自動リロード" }, "manageFavicons": { - "message": "適用先欄のファビコン", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "適用先欄のファビコン" }, "manageFaviconsGray": { - "message": "グレー表示", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "ファビコンをグレー表示" }, "manageFaviconsHelp": { - "message": "Stylusは外部サービスを使用します https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylusは外部サービスを使用します https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "フィルター", - "description": "Label for filters container" + "message": "フィルター" }, "manageHeading": { - "message": "インストール済みスタイル", - "description": "Heading for the manage page" + "message": "インストール済みスタイル" }, "manageMaxTargets": { - "message": "適用先欄の表示件数", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "適用先欄の表示件数" }, "manageNewStyleAsUsercss": { - "message": "Usercssとして", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "Usercssとして" }, "manageNewUI": { - "message": "新しい管理UIレイアウト", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "新しい管理UIレイアウト" }, "manageOnlyDisabled": { - "message": "無効なスタイルのみ", - "description": "Checkbox to show only disabled styles" + "message": "無効なスタイルのみ" }, "manageOnlyEnabled": { - "message": "有効なスタイルのみ", - "description": "Checkbox to show only enabled styles" + "message": "有効なスタイルのみ" }, "manageOnlyExternal": { - "message": "外部取得スタイルのみ", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "外部取得スタイルのみ" }, "manageOnlyLocal": { - "message": "ローカル作成スタイルのみ", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "ローカル作成スタイルのみ" }, "manageOnlyLocalTooltip": { - "message": "(userstyles.orgのページからインストールされていないスタイル)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(userstyles.orgのページからインストールされていないスタイル)" }, "manageOnlyNonUsercss": { - "message": "非Usercssスタイルのみ", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "非Usercssスタイルのみ" }, "manageOnlyUpdates": { - "message": "更新もしくは問題があるスタイルのみ", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "更新もしくは問題があるスタイルのみ" }, "manageOnlyUsercss": { - "message": "Usercssスタイルのみ", - "description": "Checkbox to show only Usercss styles" + "message": "Usercssスタイルのみ" }, "menuShowBadge": { - "message": "アクティブなスタイルの数を表示する", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "アクティブなスタイルの数を表示する" }, "meta_invalidCheckboxDefault": { - "message": "不正な @var チェックボックス: 値は0か1である必要があります", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "不正な @var チェックボックス: 値は0か1である必要があります" }, "meta_invalidColor": { "message": "不正な @var 色: $color$は有効な色ではありません", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "数値を入力してください" + }, "meta_invalidRange": { "message": "不正な @var $type$: 値は数値か配列である必要があります", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "不正な @var $type$: 複数の単位が定義されています", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "不正な @var $type$: 配列の要素が多すぎます", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "不正な @var $type$: 配列の要素は、数値,文字列またはnullである必要があります", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -748,16 +598,6 @@ }, "meta_invalidRangeDefault": { "message": "不正な @var $type$: デフォルト値がnullです", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "不正な @var $type$: デフォルト値が最小値を下回っています", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -766,7 +606,22 @@ }, "meta_invalidRangeMax": { "message": "不正な @var $type$: デフォルト値が最大値を上回っています", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "不正な @var $type$: デフォルト値が最小値を下回っています", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "不正な @var $type$: 複数の単位が定義されています", "placeholders": { "type": { "content": "$1" @@ -775,7 +630,14 @@ }, "meta_invalidRangeStep": { "message": "不正な @var $type$: デフォルト値がステップ値の倍数になっていません", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "不正な @var $type$: 配列の要素が多すぎます", "placeholders": { "type": { "content": "$1" @@ -784,7 +646,6 @@ }, "meta_invalidRangeUnits": { "message": "不正な @var $type$: '$units$' は有効な単位ではありません", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -794,37 +655,40 @@ } } }, - "meta_invalidSelect": { - "message": "不正な @var 選択: デフォルト値は、配列またはオブジェクトである必要があります", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "不正な @var $type$: 配列の要素は、数値,文字列またはnullである必要があります", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "不正な @var 選択: 配列/オブジェクト内の値は文字列である必要があります", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "不正な @var 選択: デフォルト値は、配列またはオブジェクトである必要があります" }, "meta_invalidSelectEmptyOptions": { - "message": "不正な @var 選択: オプションのリストが空です", - "description": "Error displayed when the value of @var select is invalid" + "message": "不正な @var 選択: オプションのリストが空です" }, "meta_invalidSelectLabel": { - "message": "不正な @var 選択: オプションのラベルが空です", - "description": "Error displayed when the value of @var select is invalid" + "message": "不正な @var 選択: オプションのラベルが空です" }, "meta_invalidSelectMultipleDefaults": { - "message": "不正な @var 選択: 複数のデフォルトオプションが定義されています", - "description": "Error displayed when the value of @var select is invalid" + "message": "不正な @var 選択: 複数のデフォルトオプションが定義されています" }, "meta_invalidSelectNameDuplicated": { - "message": "不正な @var 選択: オプション名が重複しています", - "description": "Error displayed when the value of @var select is invalid" + "message": "不正な @var 選択: オプション名が重複しています" + }, + "meta_invalidSelectValue": { + "message": "不正な @var 選択: 配列/オブジェクト内の値は文字列である必要があります" }, "meta_invalidSelectValueMismatch": { - "message": "不正な @var 選択: 値がオプションのリストに存在しません", - "description": "Error displayed when the value of @var select is invalid" + "message": "不正な @var 選択: 値がオプションのリストに存在しません" + }, + "meta_invalidString": { + "message": "クォートで囲まれた文字列を入力してください" }, "meta_invalidURLProtocol": { "message": "不正なURLプロトコル。httpかhttpsのみ許可されています: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -832,29 +696,13 @@ } }, "meta_invalidVersion": { - "message": "不正なバージョン番号。値がバージョン番号のパターンに合っていません: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "数値を入力してください", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "クォートで囲まれた文字列を入力してください", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "不正なバージョン番号" }, "meta_invalidWord": { - "message": "単語を入力してください", - "description": "Error displayed when the value is expected to be a word" + "message": "単語を入力してください" }, "meta_missingChar": { "message": "文字を入力してください: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -862,12 +710,10 @@ } }, "meta_missingEOT": { - "message": "EOTデータを入力してください", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "EOTデータを入力してください" }, "meta_missingMandatory": { "message": "必須のメタデータがありません: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -876,7 +722,6 @@ }, "meta_unknownJSONLiteral": { "message": "不正なJSON: $literal$ は有効なJSONデータではありません", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -885,16 +730,33 @@ }, "meta_unknownMeta": { "message": "不明なメタデータ: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "@$keyOk$の誤り? 不明なメタデータ: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "不明な @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "不明な @$varkey$ タイプ: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -904,158 +766,137 @@ } } }, - "meta_unknownPreprocessor": { - "message": "不明な @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "スタイルをインポートするには、まずエクスポートする必要があります。" }, "noStylesForSite": { - "message": "該当するスタイルはありません。", - "description": "Text displayed when no styles are installed for the current site" + "message": "該当するスタイルはありません。" + }, + "numberedLine": { + "message": "行:" }, "openManage": { - "message": "管理", - "description": "Link to open the manage page." + "message": "管理" }, "openOptions": { - "message": "オプション", - "description": "Go to Options UI" + "message": "オプション" }, "openStylesManager": { - "message": "スタイルマネージャーを開く", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "スタイルマネージャーを開く" }, "optionsActions": { - "message": "アクション", - "description": "" + "message": "アクション" }, "optionsAdvanced": { - "message": "上級者向け", - "description": "" + "message": "上級者向け" }, "optionsAdvancedContextDelete": { - "message": "エディタのコンテキストメニューに「削除」を追加する", - "description": "" + "message": "エディタのコンテキストメニューに「削除」を追加する" }, "optionsAdvancedExposeIframes": { - "message": "HTML[stylus-iframe] によってiframeへのアクセスを可能にする", - "description": "" + "message": "HTML[stylus-iframe] によってiframeへのアクセスを可能にする" }, "optionsAdvancedExposeIframesNote": { - "message": "各iframeにトップサイトドメインを公開します。\n次のようにiframe用のCSSを書くことができるようになります:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "各iframeにトップサイトドメインを公開します。\n次のようにiframe用のCSSを書くことができるようになります:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "新しいスタイルを usercss として作成します", - "description": "" + "message": "新しいスタイルを usercss として作成します" + }, + "optionsAdvancedPatchCsp": { + "message": "スタイルのアセットを許可するためにCSPにパッチを当てる" + }, + "optionsAdvancedPatchCspNote": { + "message": "厳格なCSP(Content-Security-Policy)を持つサイトで、ロードできない画像やフォントを含んだスタイルの場合に、これを有効にします。\n\nこの設定を有効にすると、CSPの制限をゆるめて、必要なコンテンツのロードを許可します。このオプションは、潜在的なセキュリティへの影響を理解し、許可しているコンテンツを監視する責任を持つことができる上級ユーザーのみを対象としています。 詳細については、CSSベースの攻撃に関する資料をお読みください。\n\nまた、インストールされている別の拡張機能が最初にネットワークの応答を変更した場合、この特別な設定が有効になるとは限らないことに注意してください。" + }, + "optionsAdvancedStyleViaXhr": { + "message": "即時更新モード" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "閲覧時に、スタイルの指定されていないコンテンツが点滅するような場合に有効にしてください。これは、ダークテーマで特に目立つことがあります。\n\n技術的な原因は、Chrome/Chromium が拡張機能との非同期通信を遅延することです。これは(無意味なことが多いですが)ページのロード時間の短縮のために行われ、スタイルの適用を遅延する場合があります。これを回避するため(web拡張自体は同期通信APIを提供していないので)、Stylusは「非推奨」の XMLHttpRequest web API をスタイルの読み込みに使用するオプションを提供しています。サーバからページがダウンロードされている間に、リクエストは数ミリ秒で終了するため、悪影響はありません。\n\nそれでも、Chromium は、開発者ツールのコンソールに警告を出力します。 警告を右クリックして非表示にすると、以後は警告を表示しないようにすることができます。" }, "optionsBadgeDisabled": { - "message": "無効にしたときの背景色", - "description": "" + "message": "無効にしたときの背景色" }, "optionsBadgeNormal": { - "message": "背景色", - "description": "" + "message": "背景色" }, "optionsCheck": { - "message": "スタイルを更新", - "description": "" + "message": "スタイルを更新" }, "optionsCheckUpdate": { - "message": "使用可能なすべての更新を確認してインストールする", - "description": "" + "message": "使用可能なすべての更新を確認してインストールする" }, "optionsCustomizeBadge": { - "message": "アイコンの修飾", - "description": "" + "message": "アイコンの修飾" }, "optionsCustomizeIcon": { - "message": "ツールバーアイコン", - "description": "" + "message": "ツールバーアイコン" }, "optionsCustomizePopup": { - "message": "ポップアップ", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "更新設定", - "description": "" + "message": "ポップアップ" }, "optionsCustomizeSync": { - "message": "クラウドとの同期", - "description": "" + "message": "クラウドとの同期" + }, + "optionsCustomizeUpdate": { + "message": "更新設定" }, "optionsHeading": { - "message": "オプション", - "description": "Heading for options section on manage page." + "message": "オプション" }, "optionsIconDark": { - "message": "暗いブラウザのテーマ", - "description": "" + "message": "暗いブラウザのテーマ" }, "optionsIconLight": { - "message": "明るいブラウザのテーマ", - "description": "" + "message": "明るいブラウザのテーマ" }, "optionsOpen": { - "message": "開く", - "description": "" + "message": "開く" }, "optionsOpenManager": { - "message": "スタイルを管理", - "description": "" + "message": "スタイルを管理" }, "optionsPopupWidth": { - "message": "ポップアップの幅(ピクセル単位)", - "description": "" + "message": "ポップアップの幅(ピクセル単位)" }, "optionsReset": { - "message": "オプションをデフォルト値にリセットする", - "description": "" + "message": "オプションをデフォルト値にリセットする" }, "optionsResetButton": { - "message": "オプションをリセット", - "description": "" + "message": "オプションをリセット" + }, + "optionsStylusThemes": { + "message": "StylusのUIテーマを見つける" }, "optionsSubheading": { - "message": "その他のオプション", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "旧バージョンまたはStylishからスタイルのバックアップをインポートする場合は、スタイルマネージャで一度手動で更新チェックを行い、すべてのスタイルが確実に更新されるようにしてください。", - "description": "" - }, - "optionsUpdateInterval": { - "message": "ユーザースタイルの自動更新間隔(時間単位)(0を指定すると更新しません)", - "description": "" - }, - "optionsSyncNone": { - "message": "未選択", - "description": "" + "message": "その他のオプション" }, "optionsSyncConnect": { - "message": "接続", - "description": "" + "message": "接続" }, "optionsSyncDisconnect": { - "message": "切断", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "すぐに同期", - "description": "" + "message": "切断" }, "optionsSyncLogin": { - "message": "ログイン", - "description": "" + "message": "ログイン" + }, + "optionsSyncNone": { + "message": "未選択" + }, + "optionsSyncStatusConnected": { + "message": "接続状態" + }, + "optionsSyncStatusConnecting": { + "message": "接続中..." + }, + "optionsSyncStatusDisconnected": { + "message": "切断状態" + }, + "optionsSyncStatusDisconnecting": { + "message": "切断中..." }, "optionsSyncStatusPull": { "message": "スタイルをダウンロード中 ( $loaded$/ $total$)", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1067,7 +908,6 @@ }, "optionsSyncStatusPush": { "message": "スタイルをアップロード中( $loaded$/ $total$)", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1077,265 +917,257 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "セッションの期限が切れました。ログインし直してください。" + }, "optionsSyncStatusSyncing": { - "message": "同期中...", - "description": "" + "message": "同期中..." }, - "optionsSyncStatusConnecting": { - "message": "接続中...", - "description": "" + "optionsSyncSyncNow": { + "message": "すぐに同期" }, - "optionsSyncStatusConnected": { - "message": "接続状態", - "description": "" + "optionsUpdateImportNote": { + "message": "旧バージョンまたはStylishからスタイルのバックアップをインポートする場合は、スタイルマネージャで一度手動で更新チェックを行い、すべてのスタイルが確実に更新されるようにしてください。" }, - "optionsSyncStatusDisconnecting": { - "message": "切断中...", - "description": "" + "optionsUpdateInterval": { + "message": "ユーザースタイルの自動更新間隔(時間単位)(0を指定すると更新しません)" }, - "optionsSyncStatusDisconnected": { - "message": "切断状態", - "description": "" + "overwriteFileExport": { + "message": "存在するファイルを上書きしてよろしいですか?" }, "paginationCurrent": { - "message": "現在のページ", - "description": "Tooltip for the current page index in search results" + "message": "現在のページ" }, "paginationEstimated": { - "message": "推定ページ数", - "description": "Tooltip for the total page count in search results" + "message": "推定ページ数" }, "paginationNext": { - "message": "次ページ", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "次ページ" }, "paginationPrevious": { - "message": "前ページ", - "description": "Tooltip for the '<-' button in search results" + "message": "前ページ" }, "paginationTotal": { - "message": "総ページ数", - "description": "" + "message": "総ページ数" }, "parseUsercssError": { - "message": "Stylusはusercssの解析に失敗しました: ", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylusはusercssの解析に失敗しました: " }, "popupAutoResort": { - "message": "ポップアップのスタイルをソートして表示", - "description": "Label for the checkbox controlling popup resorting." + "message": "ポップアップ内のスタイルをソートして表示" }, "popupBorders": { - "message": "横に白い境界線を追加する", - "description": "" + "message": "横に白い境界線を追加する" }, "popupBordersTooltip": { - "message": "新しいChromeが横の境界線を描かなくなったため、暗いテーマで有効です", - "description": "" + "message": "新しいChromeが横の境界線を描かなくなったため、暗いテーマで有効です" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, または数字パッドキーにより、N番目のスタイルの有効/無効を切り替えます(0は10番目を意味します)\n- は、その文字で始まる先頭のスタイルの有効/無効を切り替えます\n を併用すると、切り替えではなくエディタを開きます\n は、リストのスタイルをすべて有効にします\n は、リストのスタイルをすべて無効にします\n と <`>(バッククォート)は、初期状態が有効なスタイルのみを切り替えます。すなわち ポップアップ上で後から有効にしたスタイルは切り替えません。例えば、テスト後に初期の選択に戻すには、全解除してから切り替えてください(すなわち の順に押してください)\n詳細については wiki を参照ください", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, または数字パッドキーにより、N番目のスタイルの有効/無効を切り替えます(0は10番目を意味します)\n- は、その文字で始まる先頭のスタイルの有効/無効を切り替えます\n を併用すると、切り替えではなくエディタを開きます\n は、リストのスタイルをすべて有効にします\n は、リストのスタイルをすべて無効にします\n と <`>(バッククォート)は、初期状態が有効なスタイルのみを切り替えます。すなわち ポップアップ上で後から有効にしたスタイルは切り替えません。例えば、テスト後に初期の選択に戻すには、全解除してから切り替えてください(すなわち の順に押してください)\n詳細については wiki を参照ください" }, "popupHotkeysTooltip": { - "message": "クリックすると使用可能なホットキーを表示します", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "クリックすると使用可能なホットキーを表示します" }, "popupManageTooltip": { - "message": "シフトを押しながらクリック または 右クリック で、現在のサイトに適用可能なスタイルの管理画面を開きます", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "シフトを押しながらクリック または 右クリック で、現在のサイトに適用可能なスタイルの管理画面を開きます" }, "popupMenuButtonTooltip": { - "message": "アクションメニュー", - "description": "Tooltip for menu button in popup." + "message": "アクションメニュー" + }, + "popupOpenEditInPopup": { + "message": "(アドレスバーのない)シンプルなウィンドウを使用" }, "popupOpenEditInWindow": { - "message": "新しいウィンドウでエディタを開く", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "新しいウィンドウでエディタを開く" }, "popupOpenEditInWindowTooltip": { - "message": "エディタのタブをブラウザのウィンドウから切り離すことでも有効になります。\nそして、分離したエディタのタブを他のブラウザのウィンドウに結合すれば無効になります。", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "エディタのタブをブラウザのウィンドウから切り離すことでも有効になります。\nそして、分離したエディタのタブを他のブラウザのウィンドウに結合すれば無効になります。" }, "popupStylesFirst": { - "message": "スタイル一覧をコマンドボタンより上に表示", - "description": "Label for the checkbox controlling section order in the popup." + "message": "スタイル一覧をコマンドボタンより上に表示" }, "prefShowBadge": { - "message": "現在のサイトで有効なスタイルの数を表示", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "現在のサイトで有効なスタイルの数を表示" }, "previewLabel": { - "message": "自動プレビュー", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "自動プレビュー" }, "previewTooltip": { - "message": "変更を保存しないで一時的に適用します。\n変更を確定する場合には、スタイルを保存してください。", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "変更を保存しないで一時的に適用します。\n変更を確定する場合には、スタイルを保存してください。" + }, + "publish": { + "message": "公開" + }, + "publishPush": { + "message": "変更を送信" + }, + "publishReconnect": { + "message": "切断して再度公開を試みる" + }, + "publishRetry": { + "message": "Stylusはスタイルの公開を試みていますが、もし認証確認やポップアップが表示されない場合は、リトライすることができます。すぐにリトライしますか?" + }, + "publishStyle": { + "message": "スタイルを公開" + }, + "publishUsw": { + "message": " の使用" + }, + "readingStyles": { + "message": "スタイルを読み込み中..." }, "reload": { - "message": "Stylus拡張をリロードする", - "description": "Context menu reload" + "message": "Stylus拡張をリロードする" }, "replace": { - "message": "置換", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "置換" }, "replaceAll": { - "message": "すべて置換", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "すべて置換" }, "replaceWith": { - "message": "次に置換", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "次に置換" }, "retrieveBckp": { - "message": "スタイルをインポート", - "description": "" + "message": "スタイルをインポート" + }, + "retrieveDropboxSync": { + "message": "Dropboxからインポート" }, "search": { - "message": "検索", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "検索" }, "searchCaseSensitive": { - "message": "大文字小文字を区別する", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "大文字小文字を区別する" + }, + "searchGlobalStyles": { + "message": "グローバルスタイルも検索" }, "searchNumberOfResults": { - "message": "マッチ数", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "マッチ数" }, "searchNumberOfResults2": { - "message": "コードおよび適用先欄のマッチ数", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "コードおよび適用先欄のマッチ数" }, "searchRegexp": { - "message": "正規表現検索には /re/ を使用してください", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "正規表現検索には /re/ を使用してください" }, "searchResultInstallCount": { - "message": "総インストール数", - "description": "Text for label that shows the number of times a search result was installed" + "message": "総インストール数" }, "searchResultNoneFound": { - "message": "該当するスタイルはありません。", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "該当するスタイルはありません。" + }, + "searchResultNotMatching": { + "message": "スタイルはインストールされますが、現在のサイトのURLには適用されません。" + }, + "searchResultNotMatchingNote": { + "message": "このユーザースタイルの作者に、URLの追加について確認してみてください。\nあなた自身が、管理画面でこのスタイルを開いて編集することは可能です。\nしかし、このスタイルの自動更新は無効になることに注意してください。" }, "searchResultRating": { - "message": "評価", - "description": "Text for label that shows the search result's rating" + "message": "評価" }, "searchResultUpdated": { - "message": "更新日", - "description": "Text for label that shows the search result's last update date" + "message": "更新日" }, "searchResultWeeklyCount": { - "message": "週間インストール数", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "週間インストール数" }, - "searchStyles": { - "message": "コンテンツの検索", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "スタイル名を大文字小文字の区別なく検索します:\n複数の単語 - 全単語を順番の区別なく検索します\n\"複数の単語からなるフレーズ\" - 正確なフレーズを (引用符は除いて) 検索します\n2020 - このように数値 (年) を指定すると、2020年に更新されたスタイルも結果に表示します" + }, + "searchStylesAll": { + "message": "すべて" + }, + "searchStylesCode": { + "message": "CSSコード" }, "searchStylesHelp": { - "message": " キーで検索欄に移動します。\n文字列検索 : 名前、コード、適用先のURL/サイト名を検索します。3文字より短い単語は無視されます。\nURL検索 : 検索文字列の前に を付けてください。例. \n正規表現検索 : 検索文字列にスラッシュとフラグを含めてください。例. \n正確な文字列検索 : 検索文字列をダブルクォートで囲んでください。例. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": " または キーで検索欄に移動します。\nデフォルトモードは、空白で区切られたすべての単語を任意の順番で探す文字列検索です。\n正確な文字列検索 : 検索文字列をダブルクォートで囲んでください。例. <\".header ~ div\">\n正規表現検索 : 検索文字列にスラッシュとフラグを含めてください。例. \nスコープセレクタで「URLによる」を選択 : 指定されたURLに適用されるスタイルを見つけます。例. https://www.example.org/\nスコープセレクタで「メタデータ」を選択 : 名前、「適用先」指定子、インストールURL、アップデートURL、そして usercss スタイルのメタデータブロック全体を検索します。" + }, + "searchStylesMatchUrl": { + "message": "URLによる" + }, + "searchStylesMeta": { + "message": "メタデータ" + }, + "searchStylesName": { + "message": "名前" }, "sectionAdd": { - "message": "他のセクションを追加", - "description": "Label for the button to add a section" + "message": "他のセクションを追加" }, "sectionCode": { - "message": "コード", - "description": "Label for the code for a section" + "message": "コード" }, "sectionRemove": { - "message": "セクションを削除", - "description": "Label for the button to remove a section" + "message": "セクションを削除" }, "sectionRestore": { - "message": "削除したセクションを復旧", - "description": "Label for the button to restore a removed section" + "message": "削除したセクションを復旧" + }, + "sections": { + "message": "セクション" }, "shortcuts": { - "message": "ショートカット", - "description": "Go to shortcut configuration" + "message": "ショートカット" }, "shortcutsNote": { - "message": "キーボードショートカットを定義する", - "description": "" + "message": "キーボードショートカットを定義する" }, "sortDateNewestFirst": { - "message": "新しい順", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "新しい順" }, "sortDateOldestFirst": { - "message": "古い順", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "古い順" }, "sortLabel": { - "message": "インストール済みスタイルの並べ替え", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "インストール済みスタイルの並べ替え" }, "sortLabelTitleAsc": { - "message": "タイトル昇順", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "タイトル昇順" }, "sortLabelTitleDesc": { - "message": "タイトル降順", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "タイトル降順" }, "sortStylesHelp": { - "message": "インストール済みの項目の並べ替え方法を、ドロップダウンリストで選択してください。デフォルト設定は、タイトルの昇順(AからZへ)になっています。「タイトル降順」を選択すると、タイトルの降順(ZからAへ)に並べ替えます。\n他に、複数の基準で項目の並べ替えを行う設定もあります。これは、複数の列を持つ表の並べ替えと考えられ、(プラス記号を挟んで)選択された各カテゴリーは、対応する列またはグループを表します。\n例えば、「有効(1番目)+タイトル」という設定の場合、すべての有効な項目がリストの先頭に並べられ、次にタイトルの昇順(AからZへ)で有効/無効な項目がそれぞれ並べられます。", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "インストール済みの項目の並べ替え方法を、ドロップダウンリストで選択してください。デフォルト設定は、タイトルの昇順(AからZへ)になっています。「タイトル降順」を選択すると、タイトルの降順(ZからAへ)に並べ替えます。\n他に、複数の基準で項目の並べ替えを行う設定もあります。これは、複数の列を持つ表の並べ替えと考えられ、(プラス記号を挟んで)選択された各カテゴリーは、対応する列またはグループを表します。\n例えば、「有効(1番目)+タイトル」という設定の場合、すべての有効な項目がリストの先頭に並べられ、次にタイトルの昇順(AからZへ)で有効/無効な項目がそれぞれ並べられます。" }, "sortStylesHelpTitle": { - "message": "コンテンツの並べ替え", - "description": "Label for the sort info popup on the Manage styles page" + "message": "コンテンツの並べ替え" }, "styleBadRegexp": { - "message": "正規表現は無効です。", - "description": "Validation message for a bad regexp in a style" + "message": "正規表現は無効です。" }, "styleBeautify": { - "message": "書式整形", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "書式整形" }, "styleBeautifyHint": { - "message": "ヒント: 書式整形ボタンを右クリックするか、下で設定したキーボードショートカットを使用すると、このパネルを表示せずに書式設定が行えます", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "ヒント: 書式整形ボタンを右クリックするか、下で設定したキーボードショートカットを使用すると、このパネルを表示せずに書式設定が行えます" }, "styleBeautifyIndentConditional": { - "message": "@media, @supports をインデント", - "description": "CSS-beautifier option" + "message": "@media, @supports をインデント" }, "styleBeautifyPreserveNewlines": { - "message": "改行を保存", - "description": "CSS-beautifier option" + "message": "改行を保存" }, "styleCancelEditLabel": { - "message": "管理画面に戻る", - "description": "Label for cancel button for style editing" + "message": "管理画面に戻る" }, "styleChangesNotSaved": { - "message": "このスタイルは変更されていますが、保存されていません。", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "このスタイルは変更されていますが、保存されていません。" }, "styleEnabledLabel": { - "message": "有効", - "description": "Label for the enabled state of styles" + "message": "有効" }, "styleFromMozillaFormatError": { - "message": "Mozilla形式のインポートに失敗しました", - "description": "Label for the import error" + "message": "Mozilla形式のインポートに失敗しました" }, "styleFromMozillaFormatPrompt": { - "message": "Mozilla形式のコードを貼り付ける", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Mozilla形式のコードを貼り付ける" }, "styleInstall": { "message": "「$stylename$」を Stylus にインストールしますか?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1344,7 +1176,6 @@ }, "styleInstallFailed": { "message": "ユーザースタイルのインストールに失敗しました!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1353,82 +1184,68 @@ }, "styleInstallOverwrite": { "message": "「$stylename$」はすでにインストール済みです。上書きしますか?\nバージョン: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "名前を入力してください", - "description": "Error displayed when user saves without providing a name" + "message": "名前を入力してください" + }, + "styleName": { + "message": "スタイル名" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "'regexp()' の誤った使用のためスタイルを適用できませんでした", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "'regexp()' の誤った使用のためスタイルを適用できませんでした" }, "styleRegexpInvalidExplanation": { - "message": "いくつかの 'regexp()' のルールはコンパイルできませんでした", - "description": "" + "message": "いくつかの 'regexp()' のルールはコンパイルできませんでした" }, "styleRegexpPartialExplanation": { - "message": "このスタイルは、完全なURLの一致を要求する CSS4 @document 仕様 に違反した部分一致の正規表現を使用しています。影響を受けるCSSセクションはページに適用されませんでした。このスタイルは、'regexp()' のルールを誤ってチェックしていた かなり初期のバージョンの Stylish-for-Chrome で作成された可能性があります(既知のバグです)。", - "description": "" + "message": "このスタイルは、完全なURLの一致を要求する CSS4 @document 仕様 に違反した部分一致の正規表現を使用しています。影響を受けるCSSセクションはページに適用されませんでした。このスタイルは、'regexp()' のルールを誤ってチェックしていた かなり初期のバージョンの Stylish-for-Chrome で作成された可能性があります(既知のバグです)。" }, "styleRegexpProblemTooltip": { - "message": "'regexp()' の誤った使用のためいくつかのセクションを適用できませんでした", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "'regexp()' の誤った使用のためいくつかのセクションを適用できませんでした" }, "styleRegexpTestButton": { - "message": "正規表現をテスト", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "正規表現をテスト" }, "styleRegexpTestFull": { - "message": "一致するタブ", - "description": "RegExp test report: label for the fully matching expressions" + "message": "一致するタブ" }, "styleRegexpTestInvalid": { - "message": "無効な正規表現がスキップされました", - "description": "RegExp test report: label for the invalid expressions" + "message": "無効な正規表現がスキップされました" }, "styleRegexpTestNone": { - "message": "一致するタブはありません", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "一致するタブはありません" }, "styleRegexpTestNote": { - "message": "注: 正規表現の入力欄でエスケープする場合には、「\\」1個を使用してください。それは、CSSでの引用符で囲まれた文字列の仕様に従い、スタイルコード内で自動的に「\\\\」に変換されます。", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "注: 正規表現の入力欄でエスケープする場合には、「\\」1個を使用してください。それは、CSSでの引用符で囲まれた文字列の仕様に従い、スタイルコード内で自動的に「\\\\」に変換されます。" }, "styleRegexpTestPartial": { - "message": "完全に一致しないため、スキップされました", - "description": "RegExp test report: label for the partially matching expressions" + "message": "完全に一致しないため、スキップされました" }, "styleRegexpTestTitle": { - "message": "一致する開いているタブのリスト(URLをクリックするとそのタブに移動します)", - "description": "RegExp test report: title of the report" + "message": "一致する開いているタブのリスト(URLをクリックするとそのタブに移動します)" }, "styleSaveLabel": { - "message": "保存", - "description": "Label for save button for style editing" + "message": "保存" }, "styleToMozillaFormatHelp": { - "message": "Mozilla形式のコードは、userstyles.org に投稿することができ、また従来の Stylish for Firefox でも使用できます", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla形式のコードは、userstyles.org に投稿することができ、また従来の Stylish for Firefox でも使用できます" }, "styleToMozillaFormatTitle": { - "message": "Mozilla形式のスタイル", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla形式のスタイル" }, "styleUpdate": { "message": "「$stylename$」を更新してもよろしいですか?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1436,72 +1253,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "このスタイルはエディタの外部で変更されました。このスタイルをリロードしますか?", - "description": "Confirmation to update the style in the editor" + "message": "このスタイルはエディタの外部で変更されました。このスタイルをリロードしますか?" }, "stylusUnavailableForURL": { - "message": "このページではStylusは動作しません。", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "このページではStylusは動作しません。" }, "stylusUnavailableForURLdetails": { - "message": "セキュリティ上の予防措置として、ブラウザは拡張機能がビルトイン ページ(chrome://version, Chrome 61 の標準の新しいタブページ, about:addons 等)に影響を与えることを禁止しています。これは他の拡張機能のページについても同様です。各ブラウザはまた、自身の拡張機能ギャラリーへのアクセスについても制限しています(Chrome Web ストア や AMO 等)。", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "セキュリティ上の予防措置として、ブラウザは拡張機能がビルトイン ページ(chrome://version, Chrome 61 の標準の新しいタブページ, about:addons 等)に影響を与えることを禁止しています。これは他の拡張機能のページについても同様です。各ブラウザはまた、自身の拡張機能ギャラリーへのアクセスについても制限しています(Chrome Web ストア や AMO 等)。" + }, + "syncDropboxDeprecated": { + "message": "Dropboxへのインポート/エクスポート機能は、オプションページにある より進歩したスタイル同期機能 へ移行しました。" + }, + "syncDropboxStyles": { + "message": "Dropboxにエクスポート" + }, + "syncError": { + "message": "同期に失敗" + }, + "syncErrorRelogin": { + "message": "同期に失敗しました。\nStylusのオプション画面で、再ログインしてください :\n(「切断」をクリック後、「接続」をクリック)" }, "syncStorageErrorSaving": { - "message": "値を保存できません。テキストの量を減らしてください。", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "値を保存できません。テキストの量を減らしてください。" }, "toggleStyle": { - "message": "スタイルの有効/無効の切り替え", - "description": "Label for the checkbox to enable/disable a style" + "message": "スタイルの有効/無効の切り替え" }, "undo": { - "message": "元に戻す", - "description": "Button label" + "message": "元に戻す" }, "undoGlobal": { - "message": "すべてのセクションで元に戻す", - "description": "CSS-beautify global Undo button label" + "message": "すべてのセクションで元に戻す" }, "unreachableAMO": { - "message": "Firefoxはこのサイトへのアクセスを禁止しています。", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefoxはこのサイトへのアクセスを禁止しています。" }, "unreachableAMOHint": { - "message": "アクセスを許可するには、 を開き、リストを右クリックして「新規作成」-「真偽値」をクリックし、 を貼り付けてOKをクリックし、 を選択してOKをクリックし、その後、 ページをリロードしてください。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "Firefox 60 以降では、からAMOのドメインを削除する必要があるかもしれません。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Firefox 59 以降のみが、「WebExtensionがこのようなCSPプロテクトされたサイトにスタイル要素を追加すること」を許可する設定を行えます。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "アクセスを許可するには、 を開き、リストを右クリックして「新規作成」-「真偽値」をクリックし、 を貼り付けてOKをクリックし、 を選択してOKをクリックし、その後、 ページをリロードしてください。" }, "unreachableContentScript": { - "message": "ページと通信できませんでした。タブを再読み込みしてみてください。", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "ページと通信できませんでした。タブを再読み込みしてみてください。" }, "unreachableFileHint": { - "message": "chrome://extensions ページでStylus拡張機能の当該チェックボックスを有効にした場合にのみ、Stylusは file:// URLにアクセスできます。", - "description": "Note in the toolbar popup for file:// URLs" + "message": "chrome://extensions ページでStylus拡張機能の当該チェックボックスを有効にした場合にのみ、Stylusは file:// URLにアクセスできます。" }, - "InaccessibleFileHint": { - "message": "Stylusにはアクセスできないファイル形式があります(例えばpdfやjsonファイル等)。", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "Firefox 60 以降では、内のから、このドメインを削除する必要があります。" + }, + "unreachableMozSiteHintOldFF": { + "message": "このようなCSPで保護されたサイトへのスタイル要素の追加を、Web拡張機能に許可するためには、Firefox 59 以降が必要です。" + }, + "unzipStyles": { + "message": "スタイルをZip解凍中..." }, "updateAllCheckSucceededNoUpdate": { - "message": "更新は見つかりませんでした。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "更新は見つかりませんでした。" }, "updateAllCheckSucceededSomeEdited": { - "message": "いくつかの更新可能なスタイルは、ローカルでの編集内容が失われることを避けるために、チェックされませんでした。更新を強制的に行うには、個別のチェック、もしくは、全スタイルに対する再チェックを実行してください(この場合、ローカルでの編集内容は上書きされます)。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "いくつかの更新可能なスタイルは、ローカルでの編集内容が失われることを避けるために、チェックされませんでした。更新を強制的に行うには、個別のチェック、もしくは、全スタイルに対する再チェックを実行してください(この場合、ローカルでの編集内容は上書きされます)。" }, "updateCheckFailBadResponseCode": { "message": "更新に失敗しました: サーバーが応答コード「$code$」を返しています。", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1509,127 +1321,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "更新に失敗しました: サーバーに到達できません。", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "更新に失敗しました: サーバーに到達できません。" }, "updateCheckHistory": { - "message": "更新チェックの履歴", - "description": "" + "message": "更新チェックの履歴" }, "updateCheckManualUpdateForce": { - "message": "更新をインストール(ローカルでの編集内容は上書きされます)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "更新をインストール(ローカルでの編集内容は上書きされます)" }, "updateCheckManualUpdateHint": { - "message": "更新を強制すると、すべてのローカルでの編集内容が上書きされます。", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "更新を強制すると、すべてのローカルでの編集内容が上書きされます。" }, "updateCheckSkippedLocallyEdited": { - "message": "このスタイルはローカルで編集されました。", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "このスタイルはローカルで編集されました。" }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "このスタイルはローカルで編集されている可能性があります。", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "このスタイルはローカルで編集されている可能性があります。" }, "updateCheckSucceededNoUpdate": { - "message": "スタイルは最新の状態です。", - "description": "Text that displays when an update check completed and no update is available" + "message": "スタイルは最新の状態です。" }, "updateCompleted": { - "message": "更新が完了しました。", - "description": "Text that displays when an update completed" + "message": "更新が完了しました。" }, "updatesCurrentlyInstalled": { - "message": "更新がインストールされました:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "既存のスタイルの上書きを避けるために、@name または @namespace の値を変更してください。", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "設定ダイアログの表示後に、スタイルが更新または削除されました。スタイルのメタデータの破損を避けるため、これらの変数は保存されませんでした:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "コードで@nameを指定してください", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "現在のコードで、新しいUsercssスタイルのデフォルト・テンプレートを置き換えますか?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "@name を空にすると、デフォルト・テンプレートを置き換えます", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "ここにコードを挿入...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "インストール済みのスタイルより古いバージョンです。", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "次のスタイルを書く:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "このURL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropboxにエクスポート", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Dropboxへのインポート/エクスポート機能は、オプションページにある より進歩したスタイル同期機能 へ移行しました。", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropboxからインポート", - "description": "" - }, - "overwriteFileExport": { - "message": "存在するファイルを上書きしてよろしいですか?", - "description": "" - }, - "exportSavedSuccess": { - "message": "ファイルをセーブしました", - "description": "" - }, - "noFileToImport": { - "message": "スタイルをインポートするには、まずエクスポートする必要があります。", - "description": "" - }, - "connectingDropbox": { - "message": "Dropboxに接続中...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Dropboxへの接続は、webstoreから直接インストールしたアプリ内でのみ可能です", - "description": "" - }, - "gettingStyles": { - "message": "全スタイルを取得中...", - "description": "" - }, - "zipStyles": { - "message": "スタイルをZip圧縮中...", - "description": "" - }, - "unzipStyles": { - "message": "スタイルをZip解凍中...", - "description": "" - }, - "readingStyles": { - "message": "スタイルを読み込み中...", - "description": "" + "message": "更新がインストールされました:" }, "uploadingFile": { - "message": "スタイルをアップロード中...", - "description": "" + "message": "スタイルをアップロード中..." + }, + "usercssAvoidOverwriting": { + "message": "既存のスタイルの上書きを避けるために、@name または @namespace の値を変更してください。" + }, + "usercssConfigIncomplete": { + "message": "設定ダイアログの表示後に、スタイルが更新または削除されました。スタイルのメタデータの破損を避けるため、これらの変数は保存されませんでした:" + }, + "usercssEditorNamePlaceholder": { + "message": "コードで@nameを指定してください" + }, + "usercssReplaceTemplateConfirmation": { + "message": "現在のコードで、新しいUsercssスタイルのデフォルト・テンプレートを置き換えますか?" + }, + "usercssReplaceTemplateName": { + "message": "@name が指定されていません" + }, + "usercssReplaceTemplateSectionBody": { + "message": "ここにコードを挿入..." + }, + "versionInvalidOlder": { + "message": "インストール済みのスタイルより古いバージョンです。" + }, + "writeStyleFor": { + "message": "次のスタイルを書く:" + }, + "writeStyleForURL": { + "message": "このURL" + }, + "zipStyles": { + "message": "スタイルをZip圧縮中..." } } diff --git a/_locales/ko/messages.json b/_locales/ko/messages.json index 26a35640..a95cd11f 100644 --- a/_locales/ko/messages.json +++ b/_locales/ko/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus는 일부 파일 형식(예: pdf, json 파일 등)에 접근할 수 없습니다." + }, "addStyleLabel": { - "message": "새 스타일 작성", - "description": "Label for the button to go to the add style page" + "message": "새 스타일 작성" }, "addStyleTitle": { - "message": "스타일 추가", - "description": "Title of the page for adding styles" + "message": "스타일 추가" }, "alphaChannel": { - "message": "투명도", - "description": "Label of color's opacity" + "message": "투명도" }, "appliesAdd": { - "message": "추가", - "description": "Label for the button to add an 'applies' entry" + "message": "추가" }, "appliesDisplay": { "message": "적용 대상: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,292 +23,232 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "그 이상", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "그 이상" }, "appliesDomainOption": { - "message": "URL의 도메인이 다음과 같음", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL의 도메인이 다음과 같음" }, "appliesHelp": { - "message": "'적용 대상'은 이 섹션에 작성한 스타일을 어느 URL에 적용할지 정합니다", - "description": "Help text for 'applies to' section" + "message": "'적용 대상'은 이 섹션에 작성한 스타일을 어느 URL에 적용할지 정합니다" }, "appliesLabel": { - "message": "적용 대상", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "적용 대상" }, "appliesLineWidgetLabel": { - "message": "'적용 대상' 정보 표시", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "'적용 대상' 정보 표시" }, "appliesLineWidgetWarning": { - "message": "경량화(Minify) 된 CSS에선 작동하지 않습니다.", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "경량화(Minify) 된 CSS에선 작동하지 않습니다." }, "appliesRegexpOption": { - "message": "URL이 다음 정규 표현식과 일치함", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL이 다음 정규 표현식과 일치함" }, "appliesRemove": { - "message": "제거", - "description": "Label for the button to remove an 'applies' entry" + "message": "제거" }, "appliesRemoveError": { - "message": "마지막 '적용 대상' 항목은 제거할 수 없습니다", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "마지막 '적용 대상' 항목은 제거할 수 없습니다" }, "appliesSpecify": { - "message": "개별 지정", - "description": "Label for the button to make a style apply only to specific sites" + "message": "개별 지정" }, "appliesToEverything": { - "message": "전부", - "description": "Text displayed for styles that apply to all sites" + "message": "전부" }, "appliesUrlPrefixOption": { - "message": "URL의 앞부분이 다음과 같음", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL의 앞부분이 다음과 같음" }, "applyAllUpdates": { - "message": "모든 업데이트 적용", - "description": "Label for the button to apply all detected updates" + "message": "모든 업데이트 적용" }, "author": { - "message": "작성자", - "description": "Label for the style author" + "message": "작성자" }, "backupButtons": { - "message": "백업", - "description": "Heading for backup" + "message": "백업" }, "backupMessage": { - "message": "파일을 선택하거나, 이 페이지로 파일을 드래그앤드롭하세요.", - "description": "Message for backup" + "message": "파일을 선택하거나, 이 페이지로 파일을 드래그앤드롭하세요." }, "bckpInstStyles": { - "message": "스타일 내보내기", - "description": "" + "message": "스타일 내보내기" }, "checkAllUpdates": { - "message": "모든 스타일 업데이트 확인", - "description": "Label for the button to check all styles for updates" + "message": "모든 스타일 업데이트 확인" }, "checkAllUpdatesForce": { - "message": "한 번 더 확인해보세요. 아직 아무것도 수정하지 않았답니다!", - "description": "Label for the button to apply all detected updates" + "message": "한 번 더 확인해보세요. 아직 아무것도 수정하지 않았답니다!" }, "checkForUpdate": { - "message": "업데이트 확인", - "description": "Label for the button to check a single style for an update" + "message": "업데이트 확인" }, "checkingForUpdate": { - "message": "확인 중...", - "description": "Text to display when checking a style for an update" + "message": "확인 중..." }, "clickToUninstall": { - "message": "클릭하여 제거", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "클릭하여 제거" }, "cm_autoCloseBrackets": { - "message": "괄호 및 따옴표 자동으로 닫기", - "description": "Label for the checkbox in the style editor." + "message": "괄호 및 따옴표 자동으로 닫기" }, "cm_autoCloseBracketsTooltip": { - "message": "()[]''\"\"의 여는 기호를 입력할 시, 닫는 기호를 자동으로 추가합니다", - "description": "Label for the checkbox in the style editor." + "message": "()[]''\"\"의 여는 기호를 입력할 시, 닫는 기호를 자동으로 추가합니다" }, "cm_autocompleteOnTyping": { - "message": "타이핑 자동완성", - "description": "Label for the checkbox in the style editor." + "message": "타이핑 자동완성" }, "cm_colorpicker": { - "message": "CSS 색상에 Colorpicker(색상 선택기) 표시", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "CSS 색상에 Colorpicker(색상 선택기) 표시" }, "cm_indentWithTabs": { - "message": "자동 들여쓰기 시 탭 사용", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "자동 들여쓰기 시 탭 사용" }, "cm_keyMap": { - "message": "키 매핑", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "키 매핑" }, "cm_lineWrapping": { - "message": "자동 줄바끔", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "자동 줄바끔" }, "cm_matchHighlight": { - "message": "하이라이트", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "하이라이트" }, "cm_matchHighlightSelection": { - "message": "선택된 것만", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "선택된 것만" }, "cm_matchHighlightToken": { - "message": "커서 위치의 토큰", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "커서 위치의 토큰" }, "cm_resizeGripHint": { - "message": "더블 클릭으로 높이 최대화/이전 높이로 복구할 수 있습니다", - "description": "Tooltip for the resize grip in style editor" + "message": "더블 클릭으로 높이 최대화/이전 높이로 복구할 수 있습니다" }, "cm_selectByTokens": { - "message": "더블 클릭으로 토큰 선택", - "description": "Label for the checkbox in the editor." + "message": "더블 클릭으로 토큰 선택" }, "cm_selectByTokensTooltip": { - "message": "토큰 예시: .foo-bar-2 #aabbcc 0.32 !important\n비활성화 시: 문장 부호로 구분된 단어 선택", - "description": "" + "message": "토큰 예시: .foo-bar-2 #aabbcc 0.32 !important\n비활성화 시: 문장 부호로 구분된 단어 선택" }, "cm_smartIndent": { - "message": "자동 들여쓰기", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "자동 들여쓰기" }, "cm_tabSize": { - "message": "탭 크기", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "탭 크기" }, "cm_theme": { - "message": "테마", - "description": "Label for the style editor's CSS theme." + "message": "테마" }, "colorpickerSwitchFormatTooltip": { - "message": "16 진수-> RGB -> HSL 순서로 형식을 변환합니다.\nShift+클릭을 이용해 역순으로 변환할 수 있습니다.\nPgUp(PageUp), PgDn(PageDown) 키도 사용 가능합니다.", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "16 진수-> RGB -> HSL 순서로 형식을 변환합니다.\nShift+클릭을 이용해 역순으로 변환할 수 있습니다.\nPgUp(PageUp), PgDn(PageDown) 키도 사용 가능합니다." }, "colorpickerTooltip": { - "message": "색상 선택기 열기", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "색상 선택기 열기" }, "configOnChange": { - "message": "변경 시", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "변경 시" }, "configOnChangeTooltip": { - "message": "자동으로 변경 사항 저장 및 적용", - "description": "" + "message": "자동으로 변경 사항 저장 및 적용" }, "configureStyle": { - "message": "설정", - "description": "Label for the button to configure usercss userstyle" + "message": "설정" }, "configureStyleOnHomepage": { - "message": "홈페이지에서 설정", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "홈페이지에서 설정" }, "confirmCancel": { - "message": "취소", - "description": "" + "message": "취소" }, "confirmClose": { - "message": "닫기", - "description": "'Close' button in a confirm dialog" + "message": "닫기" }, "confirmDefault": { - "message": "기본값 사용", - "description": "'Set to default' button in a confirm dialog" + "message": "기본값 사용" }, "confirmDelete": { - "message": "삭제", - "description": "" + "message": "삭제" }, "confirmDiscardChanges": { - "message": "변경 사항을 무시하시겠습니까?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "변경 사항을 무시하시겠습니까?" }, "confirmNo": { - "message": "아니오", - "description": "'No' button in a confirm dialog" + "message": "아니오" }, "confirmOK": { - "message": "확인", - "description": "" + "message": "확인" }, "confirmSave": { - "message": "저장", - "description": "'Save' button in a confirm dialog" + "message": "저장" }, "confirmStop": { - "message": "중지", - "description": "'Stop' button in a confirm dialog" + "message": "중지" }, "confirmYes": { - "message": "예", - "description": "'Yes' button in a confirm dialog" + "message": "예" + }, + "connectingDropbox": { + "message": "Dropbox 연결 중..." + }, + "connectingDropboxNotAllowed": { + "message": "Dropbox 연결은 웹 스토어에서 직접 설치한 앱에서만 가능합니다." }, "copied": { - "message": "클립보드에 복사됨", - "description": "Message shown when content has been copied to the clipboard" + "message": "클립보드에 복사됨" }, "copy": { - "message": "클립보드에 복사", - "description": "Tooltip for elements which can be copied" + "message": "클립보드에 복사" + }, + "customNameHint": { + "message": "사용자 정의 이름을 여기에 입력하여 업데이트 중단 없이 UI에서 스타일의 이름을 바꾸세요" + }, + "customNameResetHint": { + "message": "사용자 정의 이름의 사용을 중단하고, 스타일의 자체 이름으로 전환하세요" }, "dateInstalled": { - "message": "설치된 날짜", - "description": "Option text for the user to sort the style by install date" + "message": "설치된 날짜" }, "dateUpdated": { - "message": "변경된 날짜", - "description": "Option text for the user to sort the style by last update date" + "message": "변경된 날짜" }, "dbError": { - "message": "Stylus 데이터베이스를 사용하던 중 오류가 발생했습니다. 해결 방법 안내 웹페이지를 여시겠습니까?", - "description": "Prompt when a DB error is encountered" + "message": "Stylus 데이터베이스를 사용하던 중 오류가 발생했습니다. 해결 방법 안내 웹페이지를 여시겠습니까?" }, "defaultTheme": { - "message": "기본", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "기본" }, "deleteStyleConfirm": { - "message": "이 스타일을 정말 삭제하시겠습니까?", - "description": "Confirmation before deleting a style" + "message": "이 스타일을 정말 삭제하시겠습니까?" }, "deleteStyleLabel": { - "message": "삭제", - "description": "Label for the button to delete a style" + "message": "삭제" }, "description": { - "message": "Stylus로 웹페이지를 새롭게 디자인해보세요. 유명한 사이트의 테마, 스킨도 간단하게 설치할 수 있는 사용자 스타일 관리자입니다.", - "description": "Extension description" + "message": "Stylus로 웹페이지를 새롭게 디자인해보세요. 유명한 사이트의 테마, 스킨도 간단하게 설치할 수 있는 사용자 스타일 관리자입니다." }, "disableAllStyles": { - "message": "모든 스타일 비활성화", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "모든 스타일 비활성화" }, "disableStyleLabel": { - "message": "비활성화", - "description": "Label for the button to disable a style" + "message": "비활성화" }, "dragDropMessage": { - "message": "이 페이지 아무 곳에나 백업 파일을 놓으세요.", - "description": "Drag'n'drop message" + "message": "이 페이지 아무 곳에나 백업 파일을 놓으세요." }, "dragDropUsercssTabstrip": { - "message": "파일을 설치하려면, 파일을 탭 표시줄(탭 제목이 표시되는 영역)에 놓으세요.", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "파일을 설치하려면, 파일을 탭 표시줄(탭 제목이 표시되는 영역)에 놓으세요." }, "editDeleteText": { - "message": "삭제", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "삭제" }, "editGotoLine": { - "message": "줄 이동", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "줄 이동" }, "editStyleHeading": { - "message": "스타일 수정", - "description": "Title of the page for editing styles" + "message": "스타일 수정" }, "editStyleLabel": { - "message": "수정", - "description": "Label for the button to go to the edit style page" + "message": "수정" }, "editStyleTitle": { "message": " $stylename$ 스타일 수정", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -318,220 +256,180 @@ } }, "enableStyleLabel": { - "message": "활성화", - "description": "Label for the button to enable a style" + "message": "활성화" }, "excludeStyleByDomainLabel": { - "message": "현재 도메인 제외", - "description": "" + "message": "현재 도메인 제외" }, "excludeStyleByUrlLabel": { - "message": "현재 URL 제외", - "description": "" + "message": "현재 URL 제외" }, "exportLabel": { - "message": "내보내기", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "내보내기" + }, + "exportSavedSuccess": { + "message": "파일 저장에 성공했습니다." }, "externalFeedback": { - "message": "피드백", - "description": "Label for the external link to send feedback for the style" + "message": "피드백" }, "externalHomepage": { - "message": "홈페이지", - "description": "Label for the external link to style's homepage" + "message": "홈페이지" }, "externalLink": { - "message": "외부 링크", - "description": "Label for external links" + "message": "외부 링크" }, "externalSupport": { - "message": "지원", - "description": "Label for the external link to style's support site" + "message": "지원" }, "externalUsercssDocument": { - "message": "Usercss 안내 문서", - "description": "Label for the external link to usercss documentation" + "message": "Usercss 안내 문서" }, "filteredStyles": { "message": "$numTotal$개 중 $numShown$개 표시", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "현재 적용된 필터와 일치하는 스타일이 없습니다", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "현재 적용된 필터와 일치하는 스타일이 없습니다" }, "findStyles": { - "message": "스타일 찾기", - "description": "Text for a link that gets a list of styles for the current site" + "message": "스타일 찾기" }, "findStylesForSite": { - "message": "현재 사이트에 맞는 스타일 찾기", - "description": "Text for a link that gets a list of styles for the current site" + "message": "현재 사이트에 맞는 스타일 찾기" }, "findStylesInline": { - "message": "팝업창 내에서", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "팝업창 내에서" }, "findStylesInlineTooltip": { - "message": "이 창에서 검색 결과 표시", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "이 창에서 검색 결과 표시" }, "genericAdd": { - "message": "추가", - "description": "Used in various places for an action that adds something" + "message": "추가" }, "genericClone": { - "message": "복제", - "description": "Used in various places for an action that clones something" + "message": "복제" }, "genericDisabledLabel": { - "message": "비활성화됨", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "비활성화됨" }, "genericEnabledLabel": { - "message": "활성화됨", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "활성화됨" }, "genericError": { - "message": "에러", - "description": "Used in various places to indicate some error occurred." + "message": "에러" }, "genericHistoryLabel": { - "message": "기록", - "description": "Used in various places to show a history log of something" + "message": "기록" }, "genericNext": { - "message": "다음", - "description": "Used in various places to select/perform the next step/action" + "message": "다음" }, "genericPrevious": { - "message": "이전", - "description": "Used in various places to select/perform the previous step/action" + "message": "이전" }, "genericResetLabel": { - "message": "초기화", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "초기화" }, "genericSavedMessage": { - "message": "저장됨", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "저장됨" }, "genericTitle": { - "message": "제목", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "제목" }, "genericUnknown": { - "message": "알 수 없음", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "알 수 없음" + }, + "gettingStyles": { + "message": "모든 스타일 가져오는 중..." }, "helpAlt": { - "message": "도움말", - "description": "Alternate text for help buttons" + "message": "도움말" }, "helpKeyMapCommand": { - "message": "명령어를 입력하세요", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "명령어를 입력하세요" }, "helpKeyMapHotkey": { - "message": "단축키를 입력하세요", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "단축키를 입력하세요" }, "hostDisabled": { - "message": "이 호스트는 현재 사용 중인 브라우저 버전의 버그로 인해 비활성화되었습니다", - "description": "Tooltip for cloud host disabled" + "message": "이 호스트는 현재 사용 중인 브라우저 버전의 버그로 인해 비활성화되었습니다" }, "importAppendLabel": { - "message": "스타일에 추가", - "description": "Label for the button to import a style and append to the existing sections" + "message": "스타일에 추가" }, "importAppendTooltip": { - "message": "가져온 스타일을 현재 스타일에 추가", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "가져온 스타일을 현재 스타일에 추가" }, "importLabel": { - "message": "가져오기", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "가져오기" + }, + "importPreprocessor": { + "message": "@preprocessor가 있는 스타일은 고전 모드에서 동작하지 않을 것입니다. Usercss 모드로 편집기를 전환할 수 있습니다: 1) 스타일 관리자 열기, 2) “Usercss로” 확인란 활성화하기, 3) “새 스타일 쓰기”\n\n지금 바로 가져오기?" + }, + "importPreprocessorTitle": { + "message": "@preprocessor로 인한 잠재적 문제가 있습니다" }, "importReplaceLabel": { - "message": "스타일 덮어쓰기", - "description": "Label for the button to import and overwrite current style" + "message": "스타일 덮어쓰기" }, "importReplaceTooltip": { - "message": "현재 스타일을 버리고, 가져온 스타일로 덮어씁니다.", - "description": "Label for the button to import and overwrite current style" + "message": "현재 스타일을 버리고, 가져온 스타일로 덮어씁니다." }, "importReportLegendAdded": { - "message": "추가됨", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "추가됨" }, "importReportLegendIdentical": { - "message": "중복 생략됨", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "중복 생략됨" }, "importReportLegendInvalid": { - "message": "유효하지 않아 생략됨", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "유효하지 않아 생략됨" }, "importReportLegendUpdatedBoth": { - "message": "메타데이터, 코드 모두 업데이트됨", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "메타데이터, 코드 모두 업데이트됨" }, "importReportLegendUpdatedCode": { - "message": "코드가 업데이트됨", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "코드가 업데이트됨" }, "importReportLegendUpdatedMeta": { - "message": "메타데이터 업데이트됨", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "메타데이터 업데이트됨" }, "importReportTitle": { - "message": "스타일 가져오기 완료", - "description": "Title of the report shown after importing styles" + "message": "스타일 가져오기 완료" }, "importReportUnchanged": { - "message": "변경사항 없음", - "description": "Message in the report shown after importing styles" + "message": "변경사항 없음" }, "importReportUndone": { - "message": "스타일 되돌려짐", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "스타일 되돌려짐" }, "importReportUndoneTitle": { - "message": "가져오기가 취소되었습니다.", - "description": "Title of the message box shown after undoing the import of styles" + "message": "가져오기가 취소되었습니다." }, "installButton": { - "message": "스타일 설치", - "description": "Label for install button" + "message": "스타일 설치" }, "installButtonInstalled": { - "message": "스타일 설치됨", - "description": "Text displayed when the style is successfully installed" + "message": "스타일 설치됨" }, "installButtonReinstall": { - "message": "스타일 재설치", - "description": "Label for reinstall button" + "message": "스타일 재설치" }, "installButtonUpdate": { - "message": "스타일 업데이트", - "description": "Label for update button" + "message": "스타일 업데이트" }, "installUpdate": { - "message": "업데이트 설치", - "description": "Label for the button to install an update for a single style" + "message": "업데이트 설치" }, "installUpdateFrom": { "message": "현재 스타일은 $url$에서 업데이트되었습니다", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -539,32 +437,25 @@ } }, "installUpdateFromLabel": { - "message": "업데이트 확인", - "description": "Label for the checkbox to save current URL for update check" + "message": "업데이트 확인" }, "license": { - "message": "라이센스", - "description": "Label for the license" + "message": "라이센스" }, "linkGetHelp": { - "message": "도움말", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "도움말" }, "linkGetStyles": { - "message": "스타일 찾기", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "스타일 찾기" }, "linkStylusWiki": { - "message": "위키", - "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" + "message": "위키" }, "linkTranslate": { - "message": "번역", - "description": "Transifex link text on the manage page" + "message": "번역" }, "linterCSSLintIncompatible": { "message": "CSSLint는 $preprocessorname$ 전처리기를 지원하지 않습니다.", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -572,12 +463,10 @@ } }, "linterCSSLintSettings": { - "message": "(규칙 설정: 0 = 비활성화, 1 = 경고(warning), 2 = 에러)", - "description": "CSSLint rule config values" + "message": "(규칙 설정: 0 = 비활성화, 1 = 경고(warning), 2 = 에러)" }, "linterConfigPopupTitle": { "message": "$linter$ 규칙 설정", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -585,20 +474,16 @@ } }, "linterConfigTooltip": { - "message": "현재 Linter를 설정하려면 클릭하세요", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "현재 Linter를 설정하려면 클릭하세요" }, "linterInvalidConfigError": { - "message": "유효하지 않은 설정으로 인해 저장할 수 없음:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "유효하지 않은 설정으로 인해 저장할 수 없음:" }, "linterIssues": { - "message": "문제점", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "문제점" }, "linterIssuesHelp": { "message": "이 문제점은 $link$에 의해 발견됨:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -606,144 +491,93 @@ } }, "linterJSONError": { - "message": "유효하지 않은 JSON 형식입니다", - "description": "Setting linter config with invalid JSON" + "message": "유효하지 않은 JSON 형식입니다" }, "linterResetMessage": { - "message": "실수로 초기화한 경우, 텍스트 박스 내에서 Ctrl+Z (혹은 Cmd+Z)를 눌러 취소할 수 있습니다", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "실수로 초기화한 경우, 텍스트 박스 내에서 Ctrl+Z (혹은 Cmd+Z)를 눌러 취소할 수 있습니다" }, "linterRulesLink": { - "message": "전체 규칙 목록 보기", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "전체 규칙 목록 보기" }, "liveReloadError": { - "message": "파일을 주시하는 동안 오류가 발생함", - "description": "The label of live-reload error" + "message": "파일을 주시하는 동안 오류가 발생함" }, "liveReloadInstallHint": { - "message": "외부 요인으로 인한 변경 시 스타일을 자동으로 업데이트하려면 이 탭을 열어두세요.", - "description": "The label of live-reload feature" + "message": "외부 요인으로 인한 변경 시 스타일을 자동으로 업데이트하려면 이 탭을 열어두세요." }, "liveReloadInstallHintFF": { - "message": "외부 요인으로 인한 변경 시 스타일을 자동으로 업데이트하려면 이 탭과 원래 탭을 모두 열어두세요.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "외부 요인으로 인한 변경 시 스타일을 자동으로 업데이트하려면 이 탭과 원래 탭을 모두 열어두세요." }, "liveReloadLabel": { - "message": "실시간 리로드", - "description": "The label of live-reload feature" + "message": "실시간 리로드" }, "manageFavicons": { - "message": "적용 대상 열에 Favicon(사이트 아이콘) 표시", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "적용 대상 열에 Favicon(사이트 아이콘) 표시" }, "manageFaviconsGray": { - "message": "회색으로 표시", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "회색으로 표시" }, "manageFaviconsHelp": { - "message": "Stylus는 https://www.google.com/s2/favicons 외부 서비스를 이용합니다", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus는 https://www.google.com/s2/favicons 외부 서비스를 이용합니다" }, "manageFilters": { - "message": "필터", - "description": "Label for filters container" + "message": "필터" }, "manageHeading": { - "message": "설치한 스타일 목록", - "description": "Heading for the manage page" + "message": "설치한 스타일 목록" }, "manageMaxTargets": { - "message": "적용 대상 항목 수", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "적용 대상 항목 수" }, "manageNewStyleAsUsercss": { - "message": "Usercss로 작성", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "Usercss로 작성" }, "manageNewUI": { - "message": "새로운 관리 페이지 UI 레이아웃", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "새로운 관리 페이지 UI 레이아웃" }, "manageOnlyDisabled": { - "message": "비활성화된 스타일만", - "description": "Checkbox to show only disabled styles" + "message": "비활성화된 스타일만" }, "manageOnlyEnabled": { - "message": "활성화된 스타일만", - "description": "Checkbox to show only enabled styles" + "message": "활성화된 스타일만" }, "manageOnlyExternal": { - "message": "외부에서 설치한 스타일만", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "외부에서 설치한 스타일만" }, "manageOnlyLocal": { - "message": "로컬에서 생성한 스타일만", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "로컬에서 생성한 스타일만" }, "manageOnlyLocalTooltip": { - "message": "(userstyles.org 페이지에서 설치하지 않은 스타일)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(userstyles.org 페이지에서 설치하지 않은 스타일)" }, "manageOnlyNonUsercss": { - "message": "Usercss가 아닌 스타일만", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Usercss가 아닌 스타일만" }, "manageOnlyUpdates": { - "message": "업데이트 혹은 문제점이 있는 것만", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "업데이트 혹은 문제점이 있는 것만" }, "manageOnlyUsercss": { - "message": "Usercss 스타일만", - "description": "Checkbox to show only Usercss styles" + "message": "Usercss 스타일만" }, "menuShowBadge": { - "message": "활성화된 스타일 개수 표시", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "활성화된 스타일 개수 표시" }, "meta_invalidCheckboxDefault": { - "message": "@var 체크박스가 유효하지 않습니다. 값은 0, 1중 하나여야 합니다.", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "@var 체크박스가 유효하지 않습니다. 값은 0, 1중 하나여야 합니다." }, "meta_invalidColor": { "message": "@var 색상이 유효하지 않습니다. $color$은(는) 색상이 아닙니다.", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "숫자를 입력하세요" + }, "meta_invalidRange": { "message": "@var $type$이(가) 유효하지 않습니다. 값은 숫자나 배열이어야 합니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "@var $type$이(가) 유효하지 않습니다. 구성단위가 여러 개 정의되었습니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "@var $type$이(가) 유효하지 않습니다. 배열의 요소가 너무 많습니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "@var $type$이(가) 유효하지 않습니다. 배열 요소는 숫자, 문자열, null 중 하나여야 합니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -752,16 +586,6 @@ }, "meta_invalidRangeDefault": { "message": "@var $type$이(가) 유효하지 않습니다. 기본 값이 null입니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "@var $type$이(가) 유효하지 않습니다. 기본값이 최솟값보다 작습니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -770,7 +594,22 @@ }, "meta_invalidRangeMax": { "message": "@var $type$이(가) 유효하지 않습니다. 기본값이 최댓값보다 큽니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "@var $type$이(가) 유효하지 않습니다. 기본값이 최솟값보다 작습니다.", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "@var $type$이(가) 유효하지 않습니다. 구성단위가 여러 개 정의되었습니다.", "placeholders": { "type": { "content": "$1" @@ -779,7 +618,14 @@ }, "meta_invalidRangeStep": { "message": "@var $type$이(가) 유효하지 않습니다. 기본값이 단계의 변수가 아닙니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "@var $type$이(가) 유효하지 않습니다. 배열의 요소가 너무 많습니다.", "placeholders": { "type": { "content": "$1" @@ -788,7 +634,6 @@ }, "meta_invalidRangeUnits": { "message": "@var $type$이(가) 유효하지 않습니다. '$units$'은(는) 유효한 구성단위가 아닙니다.", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -798,37 +643,40 @@ } } }, - "meta_invalidSelect": { - "message": "유효하지 않은 @var 선택입니다. 기본 값은 배열이나 오브젝트여야 합니다.", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "@var $type$이(가) 유효하지 않습니다. 배열 요소는 숫자, 문자열, null 중 하나여야 합니다.", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "유효하지 않은 @var 선택입니다. 배열, 오브젝트 내 값은 문자열이어야 합니다.", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "유효하지 않은 @var 선택입니다. 기본 값은 배열이나 오브젝트여야 합니다." }, "meta_invalidSelectEmptyOptions": { - "message": "유효하지 않은 @var 선택입니다. 옵션 목록이 비었습니다.", - "description": "Error displayed when the value of @var select is invalid" + "message": "유효하지 않은 @var 선택입니다. 옵션 목록이 비었습니다." }, "meta_invalidSelectLabel": { - "message": "유효하지 않은 @var 선택입니다. 옵션 라벨이 비었습니다.", - "description": "Error displayed when the value of @var select is invalid" + "message": "유효하지 않은 @var 선택입니다. 옵션 라벨이 비었습니다." }, "meta_invalidSelectMultipleDefaults": { - "message": "유효하지 않은 @var 선택입니다. 기본 옵션이 여러 번 정의되었습니다.", - "description": "Error displayed when the value of @var select is invalid" + "message": "유효하지 않은 @var 선택입니다. 기본 옵션이 여러 번 정의되었습니다." }, "meta_invalidSelectNameDuplicated": { - "message": "유효하지 않은 @var 선택입니다. 옵션명이 중복되었습니다.", - "description": "Error displayed when the value of @var select is invalid" + "message": "유효하지 않은 @var 선택입니다. 옵션명이 중복되었습니다." + }, + "meta_invalidSelectValue": { + "message": "유효하지 않은 @var 선택입니다. 배열, 오브젝트 내 값은 문자열이어야 합니다." }, "meta_invalidSelectValueMismatch": { - "message": "유효하지 않은 @var 선택입니다. 옵션 목록에 값이 존재하지 않습니다.", - "description": "Error displayed when the value of @var select is invalid" + "message": "유효하지 않은 @var 선택입니다. 옵션 목록에 값이 존재하지 않습니다." + }, + "meta_invalidString": { + "message": "따옴표로 묶인 문자열을 입력하세요" }, "meta_invalidURLProtocol": { "message": "$protocol$은(는) 유효하지 않은 URL 프로토콜입니다. http, https만 허용됩니다.", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -836,29 +684,13 @@ } }, "meta_invalidVersion": { - "message": "유효하지 않은 버전 숫자입니다. $version$은(는) 유의적 버전 패턴과 일치하지 않습니다.", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "숫자를 입력하세요", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "따옴표로 묶인 문자열을 입력하세요", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "유효하지 않은 버전 숫자입니다" }, "meta_invalidWord": { - "message": "단어를 입력하세요", - "description": "Error displayed when the value is expected to be a word" + "message": "단어를 입력하세요" }, "meta_missingChar": { "message": "$chars$ 문자를 입력하세요", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -866,12 +698,10 @@ } }, "meta_missingEOT": { - "message": "EOT 데이터를 입력하세요", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "EOT 데이터를 입력하세요" }, "meta_missingMandatory": { "message": "필수 메타 데이터인 $keys$이(가) 누락되었습니다", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -880,7 +710,6 @@ }, "meta_unknownJSONLiteral": { "message": "유효하지 않은 JSON입니다. $literal$은(는) 유효한 JSON 리터럴이 아닙니다.", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -889,16 +718,22 @@ }, "meta_unknownMeta": { "message": "알 수 없는 메타데이터 $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownPreprocessor": { + "message": "알 수 없는 @preprocessor $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "알 수 없는 @$varkey$ 타입: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -908,158 +743,131 @@ } } }, - "meta_unknownPreprocessor": { - "message": "알 수 없는 @preprocessor $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "스타일을 가져오려면, 먼저 내보내야 합니다." }, "noStylesForSite": { - "message": "현재 사이트에 설치한 스타일이 없습니다.", - "description": "Text displayed when no styles are installed for the current site" + "message": "현재 사이트에 설치한 스타일이 없습니다." + }, + "numberedLine": { + "message": "행:" }, "openManage": { - "message": "관리", - "description": "Link to open the manage page." + "message": "관리" }, "openOptions": { - "message": "옵션", - "description": "Go to Options UI" + "message": "옵션" }, "openStylesManager": { - "message": "스타일 관리자 열기", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "스타일 관리자 열기" }, "optionsActions": { - "message": "동작", - "description": "" + "message": "동작" }, "optionsAdvanced": { - "message": "고급", - "description": "" + "message": "고급" }, "optionsAdvancedContextDelete": { - "message": "편집기 컨텍스트 메뉴에 '삭제' 추가", - "description": "" + "message": "편집기 컨텍스트 메뉴에 '삭제' 추가" }, "optionsAdvancedExposeIframes": { - "message": "iframe을 HTML[stylus-iframe]으로 노출", - "description": "" + "message": "iframe을 HTML[stylus-iframe]으로 노출" }, "optionsAdvancedExposeIframesNote": { - "message": "최상위 사이트 도메인을 각 iframe에 노출합니다.\n다음과 같이 iframe용 CSS를 작성할 수 있습니다:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "최상위 사이트 도메인을 각 iframe에 노출합니다.\n다음과 같이 iframe용 CSS를 작성할 수 있습니다:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "새로운 스타일을 Usercss로 작성", - "description": "" + "message": "새로운 스타일을 Usercss로 작성" + }, + "optionsAdvancedPatchCsp": { + "message": "스타일 자원을 허용하도록 CSP패치하기" + }, + "optionsAdvancedStyleViaXhr": { + "message": "즉시 주입 모드" }, "optionsBadgeDisabled": { - "message": "비활성화 시의 배경 색", - "description": "" + "message": "비활성화 시의 배경 색" }, "optionsBadgeNormal": { - "message": "배경 색", - "description": "" + "message": "배경 색" }, "optionsCheck": { - "message": "스타일 업데이트", - "description": "" + "message": "스타일 업데이트" }, "optionsCheckUpdate": { - "message": "사용 가능한 모든 업데이트 확인 및 설치", - "description": "" + "message": "사용 가능한 모든 업데이트 확인 및 설치" }, "optionsCustomizeBadge": { - "message": "툴바 아이콘 뱃지", - "description": "" + "message": "툴바 아이콘 뱃지" }, "optionsCustomizeIcon": { - "message": "툴바 아이콘", - "description": "" + "message": "툴바 아이콘" }, "optionsCustomizePopup": { - "message": "팝업", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "업데이트", - "description": "" + "message": "팝업" }, "optionsCustomizeSync": { - "message": "클라우드에 동기화", - "description": "" + "message": "클라우드에 동기화" + }, + "optionsCustomizeUpdate": { + "message": "업데이트" }, "optionsHeading": { - "message": "옵션", - "description": "Heading for options section on manage page." + "message": "옵션" }, "optionsIconDark": { - "message": "어두운 브라우저 테마", - "description": "" + "message": "어두운 브라우저 테마" }, "optionsIconLight": { - "message": "밝은 브라우저 테마", - "description": "" + "message": "밝은 브라우저 테마" }, "optionsOpen": { - "message": "열기", - "description": "" + "message": "열기" }, "optionsOpenManager": { - "message": "스타일 관리", - "description": "" + "message": "스타일 관리" }, "optionsPopupWidth": { - "message": "팝업 너비 (픽셀 단위)", - "description": "" + "message": "팝업 너비 (픽셀 단위)" }, "optionsReset": { - "message": "기본 값으로 설정 초기화", - "description": "" + "message": "기본 값으로 설정 초기화" }, "optionsResetButton": { - "message": "설정 초기화", - "description": "" + "message": "설정 초기화" + }, + "optionsStylusThemes": { + "message": "스타일러스 UI 테마 찾기" }, "optionsSubheading": { - "message": "추가 옵션", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Stylish나 구버전 스타일 백업을 가져왔을 경우, 스타일들을 최신 버전으로 유지하려면 스타일 매니저에서 한 번씩 수동으로 업데이트 검사를 진행해 주세요.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Userstyle 자동 업데이트 간격 (시간 단위, 0일시 업데이트하지 않음)", - "description": "" - }, - "optionsSyncNone": { - "message": "없음", - "description": "" + "message": "추가 옵션" }, "optionsSyncConnect": { - "message": "연결", - "description": "" + "message": "연결" }, "optionsSyncDisconnect": { - "message": "연결 끊기", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "지금 동기화", - "description": "" + "message": "연결 끊기" }, "optionsSyncLogin": { - "message": "로그인", - "description": "" + "message": "로그인" + }, + "optionsSyncNone": { + "message": "없음" + }, + "optionsSyncStatusConnected": { + "message": "연결됨" + }, + "optionsSyncStatusConnecting": { + "message": "연결 중..." + }, + "optionsSyncStatusDisconnected": { + "message": "연결 끊김" + }, + "optionsSyncStatusDisconnecting": { + "message": "연결 끊는 중..." }, "optionsSyncStatusPull": { "message": "스타일 다운로드 중 ($loaded$/$total$)", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1071,7 +879,6 @@ }, "optionsSyncStatusPush": { "message": "스타일 업로드 중 ($loaded$/$total$)", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1081,257 +888,230 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "세션의 유효기간이 지났습니다. 다시 로그인하기 바랍니다." + }, "optionsSyncStatusSyncing": { - "message": "동기화 중...", - "description": "" + "message": "동기화 중..." }, - "optionsSyncStatusConnecting": { - "message": "연결 중...", - "description": "" + "optionsSyncSyncNow": { + "message": "지금 동기화" }, - "optionsSyncStatusConnected": { - "message": "연결됨", - "description": "" + "optionsUpdateImportNote": { + "message": "Stylish나 구버전 스타일 백업을 가져왔을 경우, 스타일들을 최신 버전으로 유지하려면 스타일 매니저에서 한 번씩 수동으로 업데이트 검사를 진행해 주세요." }, - "optionsSyncStatusDisconnecting": { - "message": "연결 끊는 중...", - "description": "" + "optionsUpdateInterval": { + "message": "Userstyle 자동 업데이트 간격 (시간 단위, 0일시 업데이트하지 않음)" }, - "optionsSyncStatusDisconnected": { - "message": "연결 끊김", - "description": "" + "overwriteFileExport": { + "message": "기존 파일을 덮어쓰시겠습니까?" }, "paginationCurrent": { - "message": "현재 페이지", - "description": "Tooltip for the current page index in search results" + "message": "현재 페이지" }, "paginationEstimated": { - "message": "예상 페이지 수", - "description": "Tooltip for the total page count in search results" + "message": "예상 페이지 수" }, "paginationNext": { - "message": "다음 페이지", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "다음 페이지" }, "paginationPrevious": { - "message": "이전 페이지", - "description": "Tooltip for the '<-' button in search results" + "message": "이전 페이지" }, "paginationTotal": { - "message": "총 페이지 수", - "description": "" + "message": "총 페이지 수" }, "parseUsercssError": { - "message": "Stylus가 Usercss 데이터를 해석하는데 실패했습니다:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus가 Usercss 데이터를 해석하는데 실패했습니다:" }, "popupAutoResort": { - "message": "팝업 내에서 스타일 토글 시 재정렬", - "description": "Label for the checkbox controlling popup resorting." + "message": "팝업 내에서 스타일 토글 시 재정렬" }, "popupBorders": { - "message": "양옆에 흰색 테두리 추가", - "description": "" + "message": "양옆에 흰색 테두리 추가" }, "popupBordersTooltip": { - "message": "측면 테두리를 칠하지 않으므로 새로운 Chrome의 다크 테마에서 유용합니다", - "description": "" + "message": "측면 테두리를 칠하지 않으므로 새로운 Chrome의 다크 테마에서 유용합니다" }, "popupHotkeysInfo": { - "message": "<1>-<9>,<0> (숫자패드 포함) - N번째 스타일 토글 (0은 10)\n- 해당 글자로 시작하는 첫 번째 스타일 토글\n 토글 대신 편집기 열기\n 나열된 스타일 활성화\n 나열된 스타일 비활성화\n, <`> (백틱) - 처음에 활성화한 스타일을 토글합니다. 팝업이 열려 있는 동안에는 나중에 활성화한 스타일에 적용되지 않습니다. 따라서 검사 후 초기 선택 항목을 복원할 수 있습니다. 간단하게, 모두 비활성화한 다음 로 다시 전환하세요.\n자세한 내용은 위키를 참고 바랍니다", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>,<0> (숫자패드 포함) - N번째 스타일 토글 (0은 10)\n- 해당 글자로 시작하는 첫 번째 스타일 토글\n 토글 대신 편집기 열기\n 나열된 스타일 활성화\n 나열된 스타일 비활성화\n, <`> (백틱) - 처음에 활성화한 스타일을 토글합니다. 팝업이 열려 있는 동안에는 나중에 활성화한 스타일에 적용되지 않습니다. 따라서 검사 후 초기 선택 항목을 복원할 수 있습니다. 간단하게, 모두 비활성화한 다음 로 다시 전환하세요.\n자세한 내용은 위키를 참고 바랍니다" }, "popupHotkeysTooltip": { - "message": "사용 가능한 단축키를 확인하려면 클릭하세요", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "사용 가능한 단축키를 확인하려면 클릭하세요" }, "popupManageTooltip": { - "message": "Shift+클릭이나 우클릭으로 스타일 관리자를 열면 현재 사이트에 적용 가능한 스타일들이 표시됩니다.", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift+클릭이나 우클릭으로 스타일 관리자를 열면 현재 사이트에 적용 가능한 스타일들이 표시됩니다." }, "popupMenuButtonTooltip": { - "message": "상호작용 메뉴", - "description": "Tooltip for menu button in popup." + "message": "상호작용 메뉴" + }, + "popupOpenEditInPopup": { + "message": "단순 윈도우(옴니상자 없음) 사용하기" }, "popupOpenEditInWindow": { - "message": "새 창에서 편집기 열기", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "새 창에서 편집기 열기" }, "popupOpenEditInWindowTooltip": { - "message": "이 옵션은 편집기가 열린 탭을 브라우저 창에서 분리함으로써 활성화할 수도 있습니다.\n편집기 탭만 다른 브라우저 창으로 합치면 비활성화됩니다.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "이 옵션은 편집기가 열린 탭을 브라우저 창에서 분리함으로써 활성화할 수도 있습니다.\n편집기 탭만 다른 브라우저 창으로 합치면 비활성화됩니다." }, "popupStylesFirst": { - "message": "스타일 목록을 커맨드 버튼 상단에 표시", - "description": "Label for the checkbox controlling section order in the popup." + "message": "스타일 목록을 커맨드 버튼 상단에 표시" }, "prefShowBadge": { - "message": "현재 사이트에서 활성화된 스타일 개수", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "현재 사이트에서 활성화된 스타일 개수" }, "previewLabel": { - "message": "실시간 미리보기", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "실시간 미리보기" }, "previewTooltip": { - "message": "변경 사항은 저장되지 않고 일시적으로 적용됩니다.\n영구적으로 변경하려면 스타일을 저장하세요.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "변경 사항은 저장되지 않고 일시적으로 적용됩니다.\n영구적으로 변경하려면 스타일을 저장하세요." + }, + "readingStyles": { + "message": "스타일 읽어들이는 중..." }, "reload": { - "message": "Stylus 확장 프로그램 리로드", - "description": "Context menu reload" + "message": "Stylus 확장 프로그램 리로드" }, "replace": { - "message": "바꾸기", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "바꾸기" }, "replaceAll": { - "message": "모두 바꾸기", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "모두 바꾸기" }, "replaceWith": { - "message": "바꿀 내용", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "바꿀 내용" }, "retrieveBckp": { - "message": "스타일 가져오기", - "description": "" + "message": "스타일 가져오기" + }, + "retrieveDropboxSync": { + "message": "Dropbox 가져오기" }, "search": { - "message": "검색", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "검색" }, "searchCaseSensitive": { - "message": "대소문자 구분", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "대소문자 구분" + }, + "searchGlobalStyles": { + "message": "전역 스타일도 검색하기" }, "searchNumberOfResults": { - "message": "일치하는 개수", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "일치하는 개수" }, "searchNumberOfResults2": { - "message": "코드 및 적용 대상 값 내에서 일치하는 개수", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "코드 및 적용 대상 값 내에서 일치하는 개수" }, "searchRegexp": { - "message": "정규 표현식 검색은 /re/ 문법을 사용합니다", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "정규 표현식 검색은 /re/ 문법을 사용합니다" }, "searchResultInstallCount": { - "message": "총 설치 수", - "description": "Text for label that shows the number of times a search result was installed" + "message": "총 설치 수" }, "searchResultNoneFound": { - "message": "이 사이트에 맞는 스타일을 찾지 못했습니다.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "이 사이트에 맞는 스타일을 찾지 못했습니다." + }, + "searchResultNotMatching": { + "message": "스타일을 설치했지만 현 사이트 URL에는 적용하지 않습니다." + }, + "searchResultNotMatchingNote": { + "message": "이 userstyle 작성자에게 URL을 넣어달라고 요청합니다.\n\n관리자에서 스타일을 열고 직접 편집할 수도 있지만,\n이 스타일의 자동 업데이트를 활성 해제할 수도 있으니 주의하세요." }, "searchResultRating": { - "message": "평가", - "description": "Text for label that shows the search result's rating" + "message": "평가" }, "searchResultUpdated": { - "message": "업데이트됨", - "description": "Text for label that shows the search result's last update date" + "message": "업데이트됨" }, "searchResultWeeklyCount": { - "message": "주간 설치 수", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "주간 설치 수" }, - "searchStyles": { - "message": "검색 내용", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStylesAll": { + "message": "모두" }, - "searchStylesHelp": { - "message": " 키를 누르면 검색 상자로 포커스가 이동합니다.\n일반 텍스트: 이름, 코드, 홈페이지 및 적용 대상 URL을 대상으로 검색합니다. 3 글자 미만의 단어는 무시됩니다.\n전체 URL에 일치하는 스타일: 접두사를 붙여서 검색하세요. 예시: \n정규 표현식: 슬래시 및 플래그를 포함하세요. 예시: \n단어와 정확히 일치: 쿼리를 큰따옴표로 묶으세요. 예시: <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "searchStylesCode": { + "message": "CSS 코드" + }, + "searchStylesMatchUrl": { + "message": "URL별" + }, + "searchStylesMeta": { + "message": "메타데이터" + }, + "searchStylesName": { + "message": "이름" }, "sectionAdd": { - "message": "섹션 추가", - "description": "Label for the button to add a section" + "message": "섹션 추가" }, "sectionCode": { - "message": "코드", - "description": "Label for the code for a section" + "message": "코드" }, "sectionRemove": { - "message": "섹션 제거", - "description": "Label for the button to remove a section" + "message": "섹션 제거" }, "sectionRestore": { - "message": "제거된 섹션 복구", - "description": "Label for the button to restore a removed section" + "message": "제거된 섹션 복구" + }, + "sections": { + "message": "섹션" }, "shortcuts": { - "message": "단축키", - "description": "Go to shortcut configuration" + "message": "단축키" }, "shortcutsNote": { - "message": "키보드 단축키 정의", - "description": "" + "message": "키보드 단축키 정의" }, "sortDateNewestFirst": { - "message": "최신 순으로", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "최신 순으로" }, "sortDateOldestFirst": { - "message": "오래된 순으로", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "오래된 순으로" }, "sortLabel": { - "message": "설치한 스타일들을 어떻게 정렬할지 선택합니다", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "설치한 스타일들을 어떻게 정렬할지 선택합니다" }, "sortLabelTitleAsc": { - "message": "제목 오름차순", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "제목 오름차순" }, "sortLabelTitleDesc": { - "message": "제목 내림차순", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "제목 내림차순" }, "sortStylesHelp": { - "message": "설치한 스타일들을 정렬할 방식을 드롭 다운 목록에서 선택합니다. 기본 설정은 각 제목을 오름차순(A to Z)으로 정렬하고, \"제목 내림차순\" 을 선택 시 내림차순(Z to A)으로 정렬합니다.\n여러 기준에 따라 항목을 정렬할 수 있는 다른 사전 설정도 있습니다. 여러 개의 열이 있는 테이블을 정렬하고, 각 선택 옵션 내의 카테고리들이(+ 기호 사이) 열 또는 그룹을 나타낸다고 생각해보세요.\n예를 들어, 설정이 \"활성화됨 (first) + 제목\"인 경우, 모든 활성화된 항목이 목록의 맨 위에 정렬되도록 정렬된 후, Entry 제목 오름차순 정렬(A to Z)이 활성화된 항목과 비활성화된 항목 모두에 별도로 적용됩니다.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "설치한 스타일들을 정렬할 방식을 드롭 다운 목록에서 선택합니다. 기본 설정은 각 제목을 오름차순(A to Z)으로 정렬하고, \"제목 내림차순\" 을 선택 시 내림차순(Z to A)으로 정렬합니다.\n여러 기준에 따라 항목을 정렬할 수 있는 다른 사전 설정도 있습니다. 여러 개의 열이 있는 테이블을 정렬하고, 각 선택 옵션 내의 카테고리들이(+ 기호 사이) 열 또는 그룹을 나타낸다고 생각해보세요.\n예를 들어, 설정이 \"활성화됨 (first) + 제목\"인 경우, 모든 활성화된 항목이 목록의 맨 위에 정렬되도록 정렬된 후, Entry 제목 오름차순 정렬(A to Z)이 활성화된 항목과 비활성화된 항목 모두에 별도로 적용됩니다." }, "sortStylesHelpTitle": { - "message": "내용 정렬", - "description": "Label for the sort info popup on the Manage styles page" + "message": "내용 정렬" }, "styleBadRegexp": { - "message": "유효하지 않은 정규 표현식입니다.", - "description": "Validation message for a bad regexp in a style" + "message": "유효하지 않은 정규 표현식입니다." + }, + "styleBeautifyHint": { + "message": "힌트: “Beautify” 버튼을 우클릭 하거나 아래 지정한 키보드 단축키를 사용하면 이 패널을 숨기면서 “Beautify”를 활성화 합니다" }, "styleBeautifyIndentConditional": { - "message": "@media, @supports 들여쓰기", - "description": "CSS-beautifier option" + "message": "@media, @supports 들여쓰기" }, "styleBeautifyPreserveNewlines": { - "message": "개행 문자 유지", - "description": "CSS-beautifier option" + "message": "개행 문자 유지" }, "styleCancelEditLabel": { - "message": "관리 페이지로 돌아가기", - "description": "Label for cancel button for style editing" + "message": "관리 페이지로 돌아가기" }, "styleChangesNotSaved": { - "message": "스타일의 변경 사항을 저장하지 않았습니다.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "스타일의 변경 사항을 저장하지 않았습니다." }, "styleEnabledLabel": { - "message": "활성화됨", - "description": "Label for the enabled state of styles" + "message": "활성화됨" }, "styleFromMozillaFormatError": { - "message": "Mozilla 형식 데이터를 가져오는데 실패했습니다", - "description": "Label for the import error" + "message": "Mozilla 형식 데이터를 가져오는데 실패했습니다" }, "styleFromMozillaFormatPrompt": { - "message": "Mozilla 형식의 코드를 붙여넣으세요", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Mozilla 형식의 코드를 붙여넣으세요" }, "styleInstall": { "message": "Stylus에 '$stylename$'을(를) 설치하시겠습니까?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1340,7 +1120,6 @@ }, "styleInstallFailed": { "message": "userstyle 설치에 실패했습니다.\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1349,86 +1128,68 @@ }, "styleInstallOverwrite": { "message": "'$stylename$'은(는) 이미 설치되어 있습니다. 덮어쓰시겠습니까?\n버전: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "이름을 입력하세요", - "description": "Error displayed when user saves without providing a name" + "message": "이름을 입력하세요" }, "styleMozillaFormatHeading": { - "message": "Mozilla 형식", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla 형식" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "잘못된 'regexp()'의 사용으로 인해 스타일을 적용할 수 없습니다", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "잘못된 'regexp()'의 사용으로 인해 스타일을 적용할 수 없습니다" }, "styleRegexpInvalidExplanation": { - "message": "일부 `regexp()` 규칙은 컴파일할 수 없습니다.", - "description": "" + "message": "일부 `regexp()` 규칙은 컴파일할 수 없습니다." }, "styleRegexpPartialExplanation": { - "message": "이 스타일은 부분 일치 정규 표현식을 사용합니다. CSS4 @document 사양은 전체 URL 일치를 사용할 것을 강제하고 있으므로, 해당 CSS 섹션은 페이지에 적용되지 않았습니다. 이 스타일은 초기부터 `regexp()` 규칙을 바르게 확인하지 않는 것으로 알려진 Stylish-for-Chrome에서 생성되었을 것으로 추정됩니다.", - "description": "" + "message": "이 스타일은 부분 일치 정규 표현식을 사용합니다. CSS4 @document 사양은 전체 URL 일치를 사용할 것을 강제하고 있으므로, 해당 CSS 섹션은 페이지에 적용되지 않았습니다. 이 스타일은 초기부터 `regexp()` 규칙을 바르게 확인하지 않는 것으로 알려진 Stylish-for-Chrome에서 생성되었을 것으로 추정됩니다." }, "styleRegexpProblemTooltip": { - "message": "잘못된 'regexp()' 사용으로 인해 몇몇 섹션을 적용할 수 없습니다.", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "잘못된 'regexp()' 사용으로 인해 몇몇 섹션을 적용할 수 없습니다." }, "styleRegexpTestButton": { - "message": "정규 표현식 테스트", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "정규 표현식 테스트" }, "styleRegexpTestFull": { - "message": "일치하는 탭 목록", - "description": "RegExp test report: label for the fully matching expressions" + "message": "일치하는 탭 목록" }, "styleRegexpTestInvalid": { - "message": "유효하지 않은 정규 표현식 생략됨", - "description": "RegExp test report: label for the invalid expressions" + "message": "유효하지 않은 정규 표현식 생략됨" }, "styleRegexpTestNone": { - "message": "일치하는 탭 없음", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "일치하는 탭 없음" }, "styleRegexpTestNote": { - "message": "참고: 정규 표현식 입력 필드에서 이스케이프 처리는 단일 \\ 를 사용하세요. CSS에서 따옴표로 묶인 문자열의 사양에 따라 스타일 코드에서 자동으로 \\\\ 로 변환됩니다. ", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "참고: 정규 표현식 입력 필드에서 이스케이프 처리는 단일 \\ 를 사용하세요. CSS에서 따옴표로 묶인 문자열의 사양에 따라 스타일 코드에서 자동으로 \\\\ 로 변환됩니다. " }, "styleRegexpTestPartial": { - "message": "완전히 일치하지는 않으므로 생략됨", - "description": "RegExp test report: label for the partially matching expressions" + "message": "완전히 일치하지는 않으므로 생략됨" }, "styleRegexpTestTitle": { - "message": "열린 탭 중 일치하는 목록 (URL 클릭 시 해당 탭으로 이동)", - "description": "RegExp test report: title of the report" + "message": "열린 탭 중 일치하는 목록 (URL 클릭 시 해당 탭으로 이동)" }, "styleSaveLabel": { - "message": "저장", - "description": "Label for save button for style editing" + "message": "저장" }, "styleToMozillaFormatHelp": { - "message": "Mozilla 형식 코드는 userstyles.org에 올리거나 기존 Firefox용 Stylish에 사용할 수 있습니다", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla 형식 코드는 userstyles.org에 올리거나 기존 Firefox용 Stylish에 사용할 수 있습니다" }, "styleToMozillaFormatTitle": { - "message": "Mozilla 형식으로 변환한 스타일", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla 형식으로 변환한 스타일" }, "styleUpdate": { "message": "'$stylename$'을(를) 정말 수정하시겠습니까?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1436,72 +1197,58 @@ } }, "styleUpdateDiscardChanges": { - "message": "이 스타일은 편집기 외부에서 변경되었습니다. 스타일을 다시 로딩하시겠습니까?", - "description": "Confirmation to update the style in the editor" + "message": "이 스타일은 편집기 외부에서 변경되었습니다. 스타일을 다시 로딩하시겠습니까?" }, "stylusUnavailableForURL": { - "message": "Stylus는 이러한 페이지에서는 작동할 수 없습니다.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus는 이러한 페이지에서는 작동할 수 없습니다." }, "stylusUnavailableForURLdetails": { - "message": "브라우저 보안 상의 이유로, 확장 프로그램은 브라우저 내장 페이지(chrome://version, Chrome 61의 표준 새 탭 페이지, about:addons 등)나 타 확장 프로그램의 페이지에 영향을 미칠 수 없습니다. 각 브라우저의 확장 프로그램 스토어(Chrome 웹 스토어, AMO 등) 접근 또한 마찬가지입니다.", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "브라우저 보안 상의 이유로, 확장 프로그램은 브라우저 내장 페이지(chrome://version, Chrome 61의 표준 새 탭 페이지, about:addons 등)나 타 확장 프로그램의 페이지에 영향을 미칠 수 없습니다. 각 브라우저의 확장 프로그램 스토어(Chrome 웹 스토어, AMO 등) 접근 또한 마찬가지입니다." + }, + "syncDropboxDeprecated": { + "message": "Dropbox 가져오기/내보내기는 옵션 페이지의 더 발전된 스타일 동기화 기능으로 대체되었습니다." + }, + "syncDropboxStyles": { + "message": "Dropbox 내보내기" + }, + "syncError": { + "message": "동기화를 실패했습니다" }, "syncStorageErrorSaving": { - "message": "값을 저장할 수 없습니다. 텍스트의 양을 줄이세요.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "값을 저장할 수 없습니다. 텍스트의 양을 줄이세요." }, "toggleStyle": { - "message": "스타일 토글", - "description": "Label for the checkbox to enable/disable a style" + "message": "스타일 토글" }, "undo": { - "message": "취소", - "description": "Button label" + "message": "취소" }, "undoGlobal": { - "message": "모든 섹션에서 실행 취소", - "description": "CSS-beautify global Undo button label" + "message": "모든 섹션에서 실행 취소" }, "unreachableAMO": { - "message": "Firefox가 해당 사이트의 접근을 금지했습니다.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox가 해당 사이트의 접근을 금지했습니다." }, "unreachableAMOHint": { - "message": "접근을 허용하려면 를 열고, 목록을 우클릭 한 후, '새로 만들기'를 클릭하고, '불린값'을 선택하고, 을 붙여 넣고 확인을 누르고, , 확인 후 페이지를 새로 고침하세요.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "Firefox 60 이상 버전에서는 내의 에서 AMO 도메인을 제거해야 합니다.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Firefox 59 버전 이상에서만 이처럼 CSP 보호 정책이 적용된 사이트에 웹 확장 기능으로 스타일 요소를 추가할 수 있도록 설정 가능합니다.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "접근을 허용하려면 를 열고, 목록을 우클릭 한 후, '새로 만들기'를 클릭하고, '불린값'을 선택하고, 을 붙여 넣고 확인을 누르고, , 확인 후 페이지를 새로 고침하세요." }, "unreachableContentScript": { - "message": "페이지와 통신할 수 없습니다. 탭을 다시 로딩(새로 고침) 해보세요.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "페이지와 통신할 수 없습니다. 탭을 다시 로딩(새로 고침) 해보세요." }, "unreachableFileHint": { - "message": "Stylus가 file:// URL에 접근할 수 있도록 하려면 chrome://extensions 페이지에서 파일 URL에 대한 액세스를 허용해야 합니다.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus가 file:// URL에 접근할 수 있도록 하려면 chrome://extensions 페이지에서 파일 URL에 대한 액세스를 허용해야 합니다." }, - "InaccessibleFileHint": { - "message": "Stylus는 일부 파일 형식(예: pdf, json 파일 등)에 접근할 수 없습니다.", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unzipStyles": { + "message": "스타일 압축 푸는 중..." }, "updateAllCheckSucceededNoUpdate": { - "message": "이용 가능한 업데이트가 없습니다.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "이용 가능한 업데이트가 없습니다." }, "updateAllCheckSucceededSomeEdited": { - "message": "로컬 수정 사항이 사라지는 것을 방지하기 위해, 일부 업데이트 가능한 스타일이 선택에서 누락되었을 수 있습니다. 이를 강제로 업데이트하려면 각각을 직접 선택하거나, 다른 전체 스타일 검사(따로 수정한 사항은 덮어씌워집니다)를 시행하세요.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "로컬 수정 사항이 사라지는 것을 방지하기 위해, 일부 업데이트 가능한 스타일이 선택에서 누락되었을 수 있습니다. 이를 강제로 업데이트하려면 각각을 직접 선택하거나, 다른 전체 스타일 검사(따로 수정한 사항은 덮어씌워집니다)를 시행하세요." }, "updateCheckFailBadResponseCode": { "message": "업데이트 실패. 서버의 응답 에러코드는 $code$입니다.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1509,127 +1256,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "업데이트 실패. 서버와 연결할 수 없습니다.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "업데이트 실패. 서버와 연결할 수 없습니다." }, "updateCheckHistory": { - "message": "업데이트 검사 기록", - "description": "" + "message": "업데이트 검사 기록" }, "updateCheckManualUpdateForce": { - "message": "업데이트 설치 (로컬 수정 사항은 덮어씌워집니다)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "업데이트 설치 (로컬 수정 사항은 덮어씌워집니다)" }, "updateCheckManualUpdateHint": { - "message": "로컬 수정 사항을 무시하고 업데이트를 덮어씌웁니다.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "로컬 수정 사항을 무시하고 업데이트를 덮어씌웁니다." }, "updateCheckSkippedLocallyEdited": { - "message": "이 스타일은 로컬에서 수정되었습니다.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "이 스타일은 로컬에서 수정되었습니다." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "이 스타일은 로컬에서 수정되었을 수 있습니다.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "이 스타일은 로컬에서 수정되었을 수 있습니다." }, "updateCheckSucceededNoUpdate": { - "message": "스타일이 최신 상태입니다.", - "description": "Text that displays when an update check completed and no update is available" + "message": "스타일이 최신 상태입니다." }, "updateCompleted": { - "message": "업데이트가 완료됐습니다.", - "description": "Text that displays when an update completed" + "message": "업데이트가 완료됐습니다." }, "updatesCurrentlyInstalled": { - "message": "설치된 업데이트:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "기존에 존재하는 스타일이 덮어씌워지는 것을 방지하려면 @name이나 @namespace 값을 변경하세요.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "설정 대화상자가 열리고 나서 스타일이 수정되거나 삭제되었습니다. 스타일의 메타 데이터와 충돌이 일어나는 것을 방지하기 위해, 현재 변수들은 저장되지 않습니다:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "코드에 @name을 지정하세요", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "현재 코드로 새 Usercss 스타일의 기본 템플릿을 대체하시겠습니까?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "@name을 비우면 기본 템플릿이 대체됩니다.", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "코드를 여기 입력하세요", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "설치되어 있는 스타일이 더 높은 버전입니다.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "스타일 작성 대상:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "현재 URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropbox 내보내기", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Dropbox 가져오기/내보내기는 옵션 페이지의 더 발전된 스타일 동기화 기능으로 대체되었습니다.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox 가져오기", - "description": "" - }, - "overwriteFileExport": { - "message": "기존 파일을 덮어쓰시겠습니까?", - "description": "" - }, - "exportSavedSuccess": { - "message": "파일 저장에 성공했습니다.", - "description": "" - }, - "noFileToImport": { - "message": "스타일을 가져오려면, 먼저 내보내야 합니다.", - "description": "" - }, - "connectingDropbox": { - "message": "Dropbox 연결 중...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Dropbox 연결은 웹 스토어에서 직접 설치한 앱에서만 가능합니다.", - "description": "" - }, - "gettingStyles": { - "message": "모든 스타일 가져오는 중...", - "description": "" - }, - "zipStyles": { - "message": "스타일 압축 중...", - "description": "" - }, - "unzipStyles": { - "message": "스타일 압축 푸는 중...", - "description": "" - }, - "readingStyles": { - "message": "스타일 읽어들이는 중...", - "description": "" + "message": "설치된 업데이트:" }, "uploadingFile": { - "message": "파일 업로드 중...", - "description": "" + "message": "파일 업로드 중..." + }, + "usercssAvoidOverwriting": { + "message": "기존에 존재하는 스타일이 덮어씌워지는 것을 방지하려면 @name이나 @namespace 값을 변경하세요." + }, + "usercssConfigIncomplete": { + "message": "설정 대화상자가 열리고 나서 스타일이 수정되거나 삭제되었습니다. 스타일의 메타 데이터와 충돌이 일어나는 것을 방지하기 위해, 현재 변수들은 저장되지 않습니다:" + }, + "usercssEditorNamePlaceholder": { + "message": "코드에 @name을 지정하세요" + }, + "usercssReplaceTemplateConfirmation": { + "message": "현재 코드로 새 Usercss 스타일의 기본 템플릿을 대체하시겠습니까?" + }, + "usercssReplaceTemplateName": { + "message": "@name을 비우면 기본 템플릿이 대체됩니다." + }, + "usercssReplaceTemplateSectionBody": { + "message": "코드를 여기 입력하세요" + }, + "versionInvalidOlder": { + "message": "설치되어 있는 스타일이 더 높은 버전입니다." + }, + "writeStyleFor": { + "message": "스타일 작성 대상:" + }, + "writeStyleForURL": { + "message": "현재 URL" + }, + "zipStyles": { + "message": "스타일 압축 중..." } } diff --git a/_locales/nl/messages.json b/_locales/nl/messages.json index 677c39cd..8b3d5542 100644 --- a/_locales/nl/messages.json +++ b/_locales/nl/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus heeft geen toegang tot sommige bestandstypen (bv. pdf- en json-bestanden)." + }, "addStyleLabel": { - "message": "Nieuwe stijl schrijven", - "description": "Label for the button to go to the add style page" + "message": "Nieuwe stijl schrijven" }, "addStyleTitle": { - "message": "Stijl toevoegen", - "description": "Title of the page for adding styles" + "message": "Stijl toevoegen" }, "alphaChannel": { - "message": "Doorzichtigheid", - "description": "Label of color's opacity" + "message": "Doorzichtigheid" }, "appliesAdd": { - "message": "Toevoegen", - "description": "Label for the button to add an 'applies' entry" + "message": "Toevoegen" }, "appliesDisplay": { "message": "Van toepassing op: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,292 +23,251 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "en meer", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "en meer" }, "appliesDomainOption": { - "message": "URL’s op het domein", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL’s op het domein" }, "appliesHelp": { - "message": "Gebruik de ‘Van toepassing op’-functies om de URL’s voor de code in deze sectie te beperken.", - "description": "Help text for 'applies to' section" + "message": "Gebruik de ‘Van toepassing op’-functies om de URL’s voor de code in deze sectie te beperken." }, "appliesLabel": { - "message": "Van toepassing op", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Van toepassing op" }, "appliesLineWidgetLabel": { - "message": "‘Van toepassing op’-info weergeven", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "‘Van toepassing op’-info weergeven" }, "appliesLineWidgetWarning": { - "message": "Werkt niet met verkleinde CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Werkt niet met verkleinde CSS" }, "appliesRegexpOption": { - "message": "URL’s overeenkomend met de regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL’s overeenkomend met de regexp" }, "appliesRemove": { - "message": "Verwijderen", - "description": "Label for the button to remove an 'applies' entry" + "message": "Verwijderen" }, "appliesRemoveError": { - "message": "Kan laatste ‘Van toepassing op’-item niet verwijderen", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Kan laatste ‘Van toepassing op’-item niet verwijderen" }, "appliesSpecify": { - "message": "Specificeren", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specificeren" }, "appliesToEverything": { - "message": "Alles", - "description": "Text displayed for styles that apply to all sites" + "message": "Alles" }, "appliesUrlPrefixOption": { - "message": "URL’s beginnend met", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL’s beginnend met" }, "applyAllUpdates": { - "message": "Alle updates toepassen", - "description": "Label for the button to apply all detected updates" + "message": "Alle updates toepassen" }, "author": { - "message": "Auteur", - "description": "Label for the style author" + "message": "Auteur" }, "backupButtons": { - "message": "Back-up", - "description": "Heading for backup" + "message": "Back-up" }, "backupMessage": { - "message": "Selecteer een bestand of sleep het naar deze pagina.", - "description": "Message for backup" + "message": "Selecteer een bestand of sleep het naar deze pagina." }, "bckpInstStyles": { - "message": "Stijlen exporteren", - "description": "" + "message": "Stijlen exporteren" }, "checkAllUpdates": { - "message": "Alle stijlen controleren op updates", - "description": "Label for the button to check all styles for updates" + "message": "Alle stijlen controleren op updates" }, "checkAllUpdatesForce": { - "message": "Ik heb geen stijlen bewerkt; opnieuw controleren!", - "description": "Label for the button to apply all detected updates" + "message": "Ik heb geen stijlen bewerkt; opnieuw controleren!" }, "checkForUpdate": { - "message": "Controleren op update", - "description": "Label for the button to check a single style for an update" + "message": "Controleren op update" }, "checkingForUpdate": { - "message": "Controleren...", - "description": "Text to display when checking a style for an update" + "message": "Controleren..." }, "clickToUninstall": { - "message": "Klik om te de-installeren", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Klik om te de-installeren" }, "cm_autoCloseBrackets": { - "message": "Haakjes en aanhalingstekens automatisch sluiten", - "description": "Label for the checkbox in the style editor." + "message": "Haakjes en aanhalingstekens automatisch sluiten" }, "cm_autoCloseBracketsTooltip": { - "message": "Automatisch sluitingsteken toevoegen bij typen van een openingsteken uit ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Automatisch sluitingsteken toevoegen bij typen van een openingsteken uit ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Automatisch aanvullen tijdens typen", - "description": "Label for the checkbox in the style editor." + "message": "Automatisch aanvullen tijdens typen" }, "cm_colorpicker": { - "message": "Kleurkiezer voor CSS-kleuren", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Kleurkiezer voor CSS-kleuren" }, "cm_indentWithTabs": { - "message": "Tabs met slimme inspringing gebruiken", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Tabs met slimme inspringing gebruiken" }, "cm_keyMap": { - "message": "Toetsenbordindeling", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Toetsenbordindeling" }, "cm_lineWrapping": { - "message": "Tekstterugloop", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Tekstterugloop" }, "cm_linter": { - "message": "CSS-linter", - "description": "Select the linter to check for CSS issues" + "message": "CSS-linter" }, "cm_matchHighlight": { - "message": "Markeren", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Markeren" }, "cm_matchHighlightSelection": { - "message": "Alleen selectie", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Alleen selectie" }, "cm_matchHighlightToken": { - "message": "Token onder cursor", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token onder cursor" }, "cm_resizeGripHint": { - "message": "Dubbelklik om de hoogte te maximaliseren/herstellen", - "description": "Tooltip for the resize grip in style editor" + "message": "Dubbelklik om de hoogte te maximaliseren/herstellen" }, "cm_selectByTokens": { - "message": "Dubbelklikken selecteert tokens", - "description": "Label for the checkbox in the editor." + "message": "Dubbelklikken selecteert tokens" }, "cm_selectByTokensTooltip": { - "message": "Voorbeelden van tokens: .foo-bar-2 #aabbcc 0.32 !important\nWanneer uitgeschakeld: door interpunctie gescheiden woorden worden geselecteerd.", - "description": "" + "message": "Voorbeelden van tokens: .foo-bar-2 #aabbcc 0.32 !important\nWanneer uitgeschakeld: door interpunctie gescheiden woorden worden geselecteerd." }, "cm_smartIndent": { - "message": "Slimme inspringing gebruiken", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Slimme inspringing gebruiken" }, "cm_tabSize": { - "message": "Tabgrootte", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tabgrootte" }, "cm_theme": { - "message": "Thema", - "description": "Label for the style editor's CSS theme." + "message": "Thema" + }, + "colorpickerPaletteHint": { + "message": "Klik met de rechtermuisknop op een kleurstaal om de bronregels ervan te doorlopen" }, "colorpickerSwitchFormatTooltip": { - "message": "Indelingen omschakelen: HEX -> RGB -> HSL.\nShift-klik om de volgorde om te keren.\nWerkt ook met de toetsen PgUp (PageUp) en PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Indelingen omschakelen: HEX -> RGB -> HSL.\nShift-klik om de volgorde om te keren.\nWerkt ook met de toetsen PgUp (PageUp) en PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Kleurkiezer openen", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Kleurkiezer openen" }, "configOnChange": { - "message": "bij wijzigingen", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "bij wijzigingen" }, "configOnChangeTooltip": { - "message": "Wijzigingen automatisch opslaan en toepassen", - "description": "" + "message": "Wijzigingen automatisch opslaan en toepassen" }, "configureStyle": { - "message": "Configureren", - "description": "Label for the button to configure usercss userstyle" + "message": "Configureren" }, "configureStyleOnHomepage": { - "message": "Configureren op startpagina", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configureren op startpagina" }, "confirmCancel": { - "message": "Annuleren", - "description": "" + "message": "Annuleren" }, "confirmClose": { - "message": "Sluiten", - "description": "'Close' button in a confirm dialog" + "message": "Sluiten" }, "confirmDefault": { - "message": "Standaard gebruiken", - "description": "'Set to default' button in a confirm dialog" + "message": "Standaard gebruiken" }, "confirmDelete": { - "message": "Verwijderen", - "description": "" + "message": "Verwijderen" }, "confirmDiscardChanges": { - "message": "Wijzigingen verwerpen?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Wijzigingen verwerpen?" }, "confirmNo": { - "message": "Nee", - "description": "'No' button in a confirm dialog" + "message": "Nee" }, "confirmSave": { - "message": "Opslaan", - "description": "'Save' button in a confirm dialog" + "message": "Opslaan" }, "confirmStop": { - "message": "Stoppen", - "description": "'Stop' button in a confirm dialog" + "message": "Stoppen" }, "confirmYes": { - "message": "Ja", - "description": "'Yes' button in a confirm dialog" + "message": "Ja" + }, + "connectingDropbox": { + "message": "Dropbox koppelen..." + }, + "connectingDropboxNotAllowed": { + "message": "Koppelen met Dropbox is alleen beschikbaar in apps die direct vanuit de webstore zijn geïnstalleerd" }, "copied": { - "message": "Gekopieerd naar klembord", - "description": "Message shown when content has been copied to the clipboard" + "message": "Gekopieerd naar klembord" }, "copy": { - "message": "Kopiëren naar klembord", - "description": "Tooltip for elements which can be copied" + "message": "Kopiëren naar klembord" + }, + "customNameHint": { + "message": "Voer hier een aangepaste naam in om de stijl in de UI te hernoemen zonder updates ervan te beschadigen" + }, + "customNameResetHint": { + "message": "Geen aangepaste naam meer gebruiken, wisselen naar eigen naam van de stijl" + }, + "dateAbbrHour": { + "message": "$value$u", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$j", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "Installatiedatum", - "description": "Option text for the user to sort the style by install date" + "message": "Installatiedatum" }, "dateUpdated": { - "message": "Bijwerkdatum", - "description": "Option text for the user to sort the style by last update date" + "message": "Bijwerkdatum" }, "dbError": { - "message": "Er is een fout opgetreden bij het gebruiken van de Stylus-database. Wilt u een webpagina met mogelijke oplossingen bezoeken?", - "description": "Prompt when a DB error is encountered" + "message": "Er is een fout opgetreden bij het gebruiken van de Stylus-database. Wilt u een webpagina met mogelijke oplossingen bezoeken?" }, "defaultTheme": { - "message": "standaard", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "standaard" }, "deleteStyleConfirm": { - "message": "Weet u zeker dat u deze stijl wilt verwijderen?", - "description": "Confirmation before deleting a style" + "message": "Weet u zeker dat u deze stijl wilt verwijderen?" }, "deleteStyleLabel": { - "message": "Verwijderen", - "description": "Label for the button to delete a style" + "message": "Verwijderen" }, "description": { - "message": "Voorzie het web van een ander uiterlijk met Stylus, een gebruikersstijlbeheerder. Met Stylus kunt u eenvoudig thema’s en stijlen voor veel populaire websites installeren.", - "description": "Extension description" + "message": "Voorzie het web van een ander uiterlijk met Stylus, een gebruikersstijlbeheerder. Met Stylus kunt u eenvoudig thema’s en stijlen voor veel populaire websites installeren." }, "disableAllStyles": { - "message": "Alle stijlen uitschakelen", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Alle stijlen uitschakelen" }, "disableStyleLabel": { - "message": "Uitschakelen", - "description": "Label for the button to disable a style" + "message": "Uitschakelen" }, "dragDropMessage": { - "message": "Sleep uw back-upbestand naar deze pagina om het te importeren.", - "description": "Drag'n'drop message" + "message": "Sleep uw back-upbestand naar deze pagina om het te importeren." }, "dragDropUsercssTabstrip": { - "message": "Sleep het bestand naar de tabbladenstrook (het gebied waar de tabbladtitels worden getoond) om het te installeren.", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Sleep het bestand naar de tabbladenstrook (het gebied waar de tabbladtitels worden getoond) om het te installeren." }, "editDeleteText": { - "message": "Verwijderen", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Verwijderen" }, "editGotoLine": { - "message": "Ga naar regel (of regel:kolom)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Ga naar regel (of regel:kolom)" }, "editStyleHeading": { - "message": "Stijl bewerken", - "description": "Title of the page for editing styles" + "message": "Stijl bewerken" }, "editStyleLabel": { - "message": "Bewerken", - "description": "Label for the button to go to the edit style page" + "message": "Bewerken" }, "editStyleTitle": { "message": "Stijl $stylename$ bewerken", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -318,212 +275,177 @@ } }, "enableStyleLabel": { - "message": "Inschakelen", - "description": "Label for the button to enable a style" + "message": "Inschakelen" }, "excludeStyleByDomainLabel": { - "message": "Het huidige domein uitsluiten", - "description": "" + "message": "Het huidige domein uitsluiten" }, "excludeStyleByUrlLabel": { - "message": "De huidige URL uitsluiten", - "description": "" + "message": "De huidige URL uitsluiten" }, "exportLabel": { - "message": "Exporteren", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exporteren" + }, + "exportSavedSuccess": { + "message": "Bestand opgeslagen" }, "externalHomepage": { - "message": "Startpagina", - "description": "Label for the external link to style's homepage" + "message": "Startpagina" }, "externalLink": { - "message": "Externe koppeling", - "description": "Label for external links" + "message": "Externe koppeling" }, "externalSupport": { - "message": "Ondersteuning", - "description": "Label for the external link to style's support site" + "message": "Ondersteuning" }, "externalUsercssDocument": { - "message": "Documentatie voor Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentatie voor Usercss" }, "filteredStyles": { "message": "$numShown$ van de $numTotal$ getoond", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Geen overeenkomende stijlen met de momenteel toegepaste filters", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Geen overeenkomende stijlen met de momenteel toegepaste filters" }, "findStyles": { - "message": "Stijlen zoeken", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Stijlen zoeken" }, "findStylesForSite": { - "message": "Meer stijlen voor deze website zoeken", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Meer stijlen voor deze website zoeken" }, "findStylesInlineTooltip": { - "message": "Zoekresultaten binnen dit venster weergeven", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Zoekresultaten binnen dit venster weergeven" }, "genericAdd": { - "message": "Toevoegen", - "description": "Used in various places for an action that adds something" + "message": "Toevoegen" }, "genericClone": { - "message": "Dupliceren", - "description": "Used in various places for an action that clones something" + "message": "Dupliceren" + }, + "genericDescription": { + "message": "Omschrijving" }, "genericDisabledLabel": { - "message": "Uitgeschakeld", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Uitgeschakeld" }, "genericEnabledLabel": { - "message": "Ingeschakeld", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Ingeschakeld" }, "genericError": { - "message": "Fout", - "description": "Used in various places to indicate some error occurred." + "message": "Fout" }, "genericHistoryLabel": { - "message": "Geschiedenis", - "description": "Used in various places to show a history log of something" + "message": "Geschiedenis" }, "genericNext": { - "message": "Volgende", - "description": "Used in various places to select/perform the next step/action" + "message": "Volgende" }, "genericPrevious": { - "message": "Vorige", - "description": "Used in various places to select/perform the previous step/action" + "message": "Vorige" }, "genericResetLabel": { - "message": "Standaardwaarden", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Standaardwaarden" }, "genericSavedMessage": { - "message": "Opgeslagen", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Opgeslagen" }, "genericTitle": { - "message": "Titel", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Titel" }, "genericUnknown": { - "message": "Onbekend", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Onbekend" + }, + "gettingStyles": { + "message": "Alle stijlen ophalen..." }, "helpAlt": { - "message": "Hulp", - "description": "Alternate text for help buttons" + "message": "Hulp" }, "helpKeyMapCommand": { - "message": "Typ een opdrachtnaam", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Typ een opdrachtnaam" }, "helpKeyMapHotkey": { - "message": "Druk op een sneltoets", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Druk op een sneltoets" }, "hostDisabled": { - "message": "Deze host is uitgeschakeld vanwege een bug in de huidige versie van de gebruikte browser", - "description": "Tooltip for cloud host disabled" + "message": "Deze host is uitgeschakeld vanwege een bug in de huidige versie van de gebruikte browser" }, "importAppendLabel": { - "message": "Toevoegen aan stijl", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Toevoegen aan stijl" }, "importAppendTooltip": { - "message": "Geïmporteerde stijl toevoegen aan huidige stijl", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Geïmporteerde stijl toevoegen aan huidige stijl" }, "importLabel": { - "message": "Importeren", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importeren" + }, + "importPreprocessor": { + "message": "Stijlen met een @preprocessor werken niet in de klassieke modus. U kunt de editor omschakelen naar Usercss-modus: 1) open de stijlbeheerder, 2) vink het selectievakje ‘als Usercss’ aan, 3) klik op ‘Nieuwe stijl schrijven’\n\nToch nu importeren?" + }, + "importPreprocessorTitle": { + "message": "Mogelijk probleem vanwege @preprocessor" }, "importReplaceLabel": { - "message": "Stijl overschrijven", - "description": "Label for the button to import and overwrite current style" + "message": "Stijl overschrijven" }, "importReplaceTooltip": { - "message": "Inhoud van huidige stijl verwerpen en met de geïmporteerde stijl overschrijven", - "description": "Label for the button to import and overwrite current style" + "message": "Inhoud van huidige stijl verwerpen en met de geïmporteerde stijl overschrijven" }, "importReportLegendAdded": { - "message": "toegevoegd", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "toegevoegd" }, "importReportLegendIdentical": { - "message": "gelijke overgeslagen", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "gelijke overgeslagen" }, "importReportLegendInvalid": { - "message": "ongeldige overgeslagen", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "ongeldige overgeslagen" }, "importReportLegendUpdatedBoth": { - "message": "meta-informatie en code bijgewerkt", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "meta-informatie en code bijgewerkt" }, "importReportLegendUpdatedCode": { - "message": "code bijgewerkt", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "code bijgewerkt" }, "importReportLegendUpdatedMeta": { - "message": "meta-informatie bijgewerkt", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "meta-informatie bijgewerkt" }, "importReportTitle": { - "message": "Stijlen importeren voltooid", - "description": "Title of the report shown after importing styles" + "message": "Stijlen importeren voltooid" }, "importReportUnchanged": { - "message": "Er is niets gewijzigd.", - "description": "Message in the report shown after importing styles" + "message": "Er is niets gewijzigd." }, "importReportUndone": { - "message": "stijlen zijn teruggezet", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "stijlen zijn teruggezet" }, "importReportUndoneTitle": { - "message": "Importeren is ongedaan gemaakt", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importeren is ongedaan gemaakt" }, "installButton": { - "message": "Stijl installeren", - "description": "Label for install button" + "message": "Stijl installeren" }, "installButtonInstalled": { - "message": "Stijl geïnstalleerd", - "description": "Text displayed when the style is successfully installed" + "message": "Stijl is geïnstalleerd" }, "installButtonReinstall": { - "message": "Stijl herinstalleren", - "description": "Label for reinstall button" + "message": "Stijl herinstalleren" }, "installButtonUpdate": { - "message": "Stijl bijwerken", - "description": "Label for update button" + "message": "Stijl bijwerken" }, "installUpdate": { - "message": "Update installeren", - "description": "Label for the button to install an update for a single style" + "message": "Update installeren" }, "installUpdateFrom": { "message": "De stijl wordt momenteel bijgewerkt vanaf $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -531,28 +453,31 @@ } }, "installUpdateFromLabel": { - "message": "Controleren op updates", - "description": "Label for the checkbox to save current URL for update check" + "message": "Controleren op updates" }, "license": { - "message": "Licentie", - "description": "Label for the license" + "message": "Licentie" }, "linkGetHelp": { - "message": "Hulp verkrijgen", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Hulp verkrijgen" + }, + "linkGetShareStyles": { + "message": "Stijlen verkrijgen en delen" + }, + "linkGetShareStylesInfo": { + "message": "De nieuwe door de gemeenschap mogelijk gemaakte website userstyles.world is gemaakt door schrijvers van gebruikersstijlen ter vervanging van userstyles.org, dat het afgelopen jaar zó traag was en slecht reageerde dat veel schrijvers hun stijlen niet meer hebben bijgewerkt." }, "linkGetStyles": { - "message": "Stijlen verkrijgen", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Stijlen verkrijgen" + }, + "linkGetStylesInfo": { + "message": "Deze archiefwebsite is gemaakt door een lid van de gemeenschap van gebruikersstijlen als back-up van de trage en niet-reagerende website userstyles.org. Het archief werkt de inhoud ervan ongeveer eenmaal per dag bij." }, "linkTranslate": { - "message": "Vertalen", - "description": "Transifex link text on the manage page" + "message": "Vertalen" }, "linterCSSLintIncompatible": { "message": "CSSLint heeft geen ondersteuning voor $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -560,12 +485,10 @@ } }, "linterCSSLintSettings": { - "message": "(stel regel als volgt in: 0 = uitgeschakeld; 1 = waarschuwing; 2 = fout)", - "description": "CSSLint rule config values" + "message": "(stel regel als volgt in: 0 = uitgeschakeld; 1 = waarschuwing; 2 = fout)" }, "linterConfigPopupTitle": { "message": "$linter$-regelconfiguratie instellen", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -573,20 +496,16 @@ } }, "linterConfigTooltip": { - "message": "Klik om deze linter te configureren", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Klik om deze linter te configureren" }, "linterInvalidConfigError": { - "message": "Niet opgeslagen vanwege deze ongeldige configuratie-instellingen:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Niet opgeslagen vanwege deze ongeldige configuratie-instellingen:" }, "linterIssues": { - "message": "Problemen", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problemen" }, "linterIssuesHelp": { "message": "De door stylelint gevonden problemen, $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -594,140 +513,90 @@ } }, "linterJSONError": { - "message": "Ongeldige JSON-opmaak", - "description": "Setting linter config with invalid JSON" + "message": "Ongeldige JSON-opmaak" }, "linterResetMessage": { - "message": "Druk op Ctrl-Z (of Cmd-Z) in het tekstvak om ongedaan te maken", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Druk op Ctrl-Z (of Cmd-Z) in het tekstvak om ongedaan te maken" }, "linterRulesLink": { - "message": "Volledige regellijst bekijken", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Volledige regellijst bekijken" }, "liveReloadError": { - "message": "Er is een fout opgetreden tijdens het bekijken van het bestand", - "description": "The label of live-reload error" + "message": "Er is een fout opgetreden tijdens het bekijken van het bestand" }, "liveReloadInstallHint": { - "message": "Houd dit tabblad geopend om de stijl automatisch bij te werken bij externe wijzigingen.", - "description": "The label of live-reload feature" + "message": "Houd dit tabblad geopend om de stijl automatisch bij te werken bij externe wijzigingen." }, "liveReloadInstallHintFF": { - "message": "Houd zowel dit tabblad als het oorspronkelijke tabblad geopend om de stijl automatisch bij te werken bij externe wijzigingen.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "Houd zowel dit tabblad als het oorspronkelijke tabblad geopend om de stijl automatisch bij te werken bij externe wijzigingen." }, "liveReloadLabel": { - "message": "Live herladen", - "description": "The label of live-reload feature" + "message": "Live herladen" }, "manageFavicons": { - "message": "Favicons in kolom ‘Van toepassing op’", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons in kolom ‘Van toepassing op’" }, "manageFaviconsGray": { - "message": "Niet beschikbaar", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Niet beschikbaar" }, "manageFaviconsHelp": { - "message": "Stylus gebruikt een externe dienst: https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus gebruikt een externe dienst: https://www.google.com/s2/favicons" }, "manageHeading": { - "message": "Geïnstalleerde stijlen", - "description": "Heading for the manage page" + "message": "Geïnstalleerde stijlen" }, "manageMaxTargets": { - "message": "Aantal ‘Van toepassing op’-items", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Aantal ‘Van toepassing op’-items" }, "manageNewStyleAsUsercss": { - "message": "als Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "als Usercss" }, "manageNewUI": { - "message": "Nieuwe indeling van beheerscherm", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nieuwe indeling van beheerscherm" }, "manageOnlyDisabled": { - "message": "Alleen uitgeschakelde stijlen", - "description": "Checkbox to show only disabled styles" + "message": "Alleen uitgeschakelde stijlen" }, "manageOnlyEnabled": { - "message": "Alleen ingeschakelde stijlen", - "description": "Checkbox to show only enabled styles" + "message": "Alleen ingeschakelde stijlen" }, "manageOnlyExternal": { - "message": "Alleen externe stijlen", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Alleen externe stijlen" }, "manageOnlyLocal": { - "message": "Alleen lokaal aangemaakte stijlen", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Alleen lokaal aangemaakte stijlen" }, "manageOnlyLocalTooltip": { - "message": "(de stijlen die niet via userstyles.org zijn geïnstalleerd)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(de stijlen die niet via userstyles.org zijn geïnstalleerd)" }, "manageOnlyNonUsercss": { - "message": "Alleen niet-Usercss-stijlen", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Alleen niet-Usercss-stijlen" }, "manageOnlyUpdates": { - "message": "Alleen bij updates of problemen", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Alleen bij updates of problemen" }, "manageOnlyUsercss": { - "message": "Alleen Usercss-stijlen", - "description": "Checkbox to show only Usercss styles" + "message": "Alleen Usercss-stijlen" }, "menuShowBadge": { - "message": "Aantal actieve stijlen tonen", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Aantal actieve stijlen tonen" }, "meta_invalidCheckboxDefault": { - "message": "Ongeldig @var-selectievakje: waarde moet 0 of 1 zijn", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Ongeldig @var-selectievakje: waarde moet 0 of 1 zijn" }, "meta_invalidColor": { "message": "Ongeldige @var-kleur: $color$ is geen geldige kleur", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Getal verwacht" + }, "meta_invalidRange": { "message": "Ongeldige @var $type$: waarde moet een getal of reeks zijn", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Ongeldige @var $type$: meerdere eenheden opgegeven", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Ongeldige @var $type$: de reeks bevat te veel items", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Ongeldige @var $type$: items in de reeks moeten een getal, string of null zijn", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -736,16 +605,6 @@ }, "meta_invalidRangeDefault": { "message": "Ongeldige @var $type$: standaardwaarde is null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Ongeldige @var $type$: standaardwaarde is lager dan het minimum", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -754,7 +613,22 @@ }, "meta_invalidRangeMax": { "message": "Ongeldige @var $type$: standaardwaarde is hoger dan het maximum", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Ongeldige @var $type$: standaardwaarde is lager dan het minimum", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Ongeldige @var $type$: meerdere eenheden opgegeven", "placeholders": { "type": { "content": "$1" @@ -763,7 +637,14 @@ }, "meta_invalidRangeStep": { "message": "Ongeldge @var $type$: standaardwaarde is geen vermeerdering van de stap", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Ongeldige @var $type$: de reeks bevat te veel items", "placeholders": { "type": { "content": "$1" @@ -771,8 +652,7 @@ } }, "meta_invalidRangeUnits": { - "message": "Ongeldige @var $type$: '$units$' is geen geldige eenheid", - "description": "Error displayed when the value of @var range or @var number is invalid", + "message": "Ongeldige @var $type$: ‘$units$’ is geen geldige eenheid", "placeholders": { "type": { "content": "$1" @@ -782,37 +662,40 @@ } } }, - "meta_invalidSelect": { - "message": "Ongeldige @var-select: de standaardwaarde moet een reeks of object zijn", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Ongeldige @var $type$: items in de reeks moeten een getal, string of null zijn", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Ongeldige @var-select: waarden binnen de reeks/het object moeten een string zijn", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Ongeldige @var-select: de standaardwaarde moet een reeks of object zijn" }, "meta_invalidSelectEmptyOptions": { - "message": "Ongeldige @var-select: optielijst is leeg", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ongeldige @var-select: optielijst is leeg" }, "meta_invalidSelectLabel": { - "message": "Ongeldige @var-select: optielabel is leeg", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ongeldige @var-select: optielabel is leeg" }, "meta_invalidSelectMultipleDefaults": { - "message": "Ongeldige @var-select: meerdere standaardopties opgegeven", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ongeldige @var-select: meerdere standaardopties opgegeven" }, "meta_invalidSelectNameDuplicated": { - "message": "Ongeldige @var-select: optienaam is een duplicaat", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ongeldige @var-select: optienaam is een duplicaat" + }, + "meta_invalidSelectValue": { + "message": "Ongeldige @var-select: waarden binnen de reeks/het object moeten een string zijn" }, "meta_invalidSelectValueMismatch": { - "message": "Ongeldige @var-select: waarde staat niet op de optielijst", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ongeldige @var-select: waarde staat niet op de optielijst" + }, + "meta_invalidString": { + "message": "Citaatstring verwacht" }, "meta_invalidURLProtocol": { "message": "Ongeldig URL-protocol. Alleen http en https zijn toegestaan: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -820,29 +703,13 @@ } }, "meta_invalidVersion": { - "message": "Ongeldig versienummer. De waarde komt niet overeen met het SemVer-patroon:$version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Getal verwacht", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Citaatstring verwacht", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Ongeldig versienummer" }, "meta_invalidWord": { - "message": "Woord verwacht", - "description": "Error displayed when the value is expected to be a word" + "message": "Woord verwacht" }, "meta_missingChar": { "message": "Tekens verwacht: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -850,12 +717,10 @@ } }, "meta_missingEOT": { - "message": "EOT-gegevens verwacht", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "EOT-gegevens verwacht" }, "meta_missingMandatory": { "message": "Ontbrekende vereiste metagegevens: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -864,7 +729,6 @@ }, "meta_unknownJSONLiteral": { "message": "Ongeldige JSON: $literal$ is geen geldige JSON-literal", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -873,16 +737,33 @@ }, "meta_unknownMeta": { "message": "Onbekende metagegevens: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "Wellicht @$keyOk$? Onbekende metagegevens: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "Onbekende @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Onbekend @$varkey$-type: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -892,154 +773,134 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Onbekende @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Als u uw stijlen wilt importeren, dient u deze eerst te exporteren." }, "noStylesForSite": { - "message": "Geen geïnstalleerde stijlen voor deze website.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Geen geïnstalleerde stijlen voor deze website." + }, + "numberedLine": { + "message": "Regel:" }, "openManage": { - "message": "Beheren", - "description": "Link to open the manage page." + "message": "Beheren" }, "openOptions": { - "message": "Opties", - "description": "Go to Options UI" + "message": "Opties" }, "openStylesManager": { - "message": "Stijlbeheerder openen", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Stijlbeheerder openen" }, "optionsActions": { - "message": "Acties", - "description": "" + "message": "Acties" }, "optionsAdvanced": { - "message": "Geavanceerd", - "description": "" + "message": "Geavanceerd" }, "optionsAdvancedContextDelete": { - "message": "‘Verwijderen’ toevoegen in contextmenu van editor", - "description": "" + "message": "‘Verwijderen’ toevoegen in contextmenu van editor" }, "optionsAdvancedExposeIframes": { - "message": "iframes blootleggen via HTML[stylus-iframe]", - "description": "" + "message": "iframes blootleggen via HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Legt het bovenliggende domein van de website bloot in elk iframe.\nSchakelt schrijven in voor iframe-specifieke CSS, zoals:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Legt het bovenliggende domein van de website bloot in elk iframe.\nSchakelt schrijven in voor iframe-specifieke CSS, zoals:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Nieuwe stijl schrijven als usercss", - "description": "" + "message": "Nieuwe stijl schrijven als usercss" + }, + "optionsAdvancedPatchCsp": { + "message": "CSP corrigeren om stijlmiddelen toe te staan" + }, + "optionsAdvancedPatchCspNote": { + "message": "Schakel dit in als stijlen afbeeldingen of lettertypen bevatten die niet worden geladen op websites met een streng CSP (inhoudsbeveiligingsbeleid).\n\nHet inschakelen van deze instelling versoepelt CSP-restricties, waardoor essentiële stijlinhoud kan worden geladen. Deze optie is alleen bedoeld voor gevorderde gebruikers die de mogelijke gevolgen op beveiligingsgebied begrijpen, en die de verantwoordelijkheid voor het monitoren van de toegestane inhoud accepteren. Lees meer over CSS-gebaseerde aanvallen voor meer informatie.\n\nHoud er ook rekening mee dat deze specifieke instelling geen garantie geeft op een goede werking als een andere geïnstalleerde extensie eerst het netwerkantwoord aanpast." + }, + "optionsAdvancedStyleViaXhr": { + "message": "Directe-injectiemodus" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "Schakel dit in als u knipperende inhoud zonder stijlen (‘FOUC’) ondervindt tijdens het browsen, wat met name bij donkere thema’s opvalt.\n\nDe technische reden is dat Chrome/Chromium asynchrone communicatie van extensies uitstelt, doorgaans om te proberen paginalaadsnelheden te verbeteren, waardoor stijlen mogelijk te laat worden toegepast. Om dit te omzeilen, en aangezien er voor webextensies geen synchrone API wordt aangeboden, biedt Stylus deze optie om de ‘verouderde’ synchrone XMLHttpRequest-web-API voor het ophalen van toepasbare stijlen te gebruiken. Er zouden geen nadelige effecten mogen zijn, omdat de aanvraag binnen enkele milliseconden wordt behandeld terwijl de pagina nog van de server wordt gedownload.\n\nNiettemin toont Chromium een waarschuwing in de console van devtools. Door met de rechtermuisknop op een waarschuwing te klikken en deze te verbergen, worden toekomstige waarschuwingen niet meer getoond." }, "optionsBadgeDisabled": { - "message": "Achtergrondkleur wanneer uitgeschakeld", - "description": "" + "message": "Achtergrondkleur wanneer uitgeschakeld" }, "optionsBadgeNormal": { - "message": "Achtergrondkleur", - "description": "" + "message": "Achtergrondkleur" }, "optionsCheck": { - "message": "Stijlen bijwerken", - "description": "" + "message": "Stijlen bijwerken" }, "optionsCheckUpdate": { - "message": "Controleren op updates en deze installeren", - "description": "" + "message": "Controleren op updates en deze installeren" }, "optionsCustomizeBadge": { - "message": "Badge op het werkbalkpictogram", - "description": "" + "message": "Badge op het werkbalkpictogram" }, "optionsCustomizeIcon": { - "message": "Werkbalkpictogram", - "description": "" + "message": "Werkbalkpictogram" }, "optionsCustomizePopup": { - "message": "Pop-up", - "description": "" + "message": "Pop-up" }, "optionsCustomizeSync": { - "message": "Synchroniseren met cloud", - "description": "" + "message": "Synchroniseren met cloud" }, "optionsHeading": { - "message": "Opties", - "description": "Heading for options section on manage page." + "message": "Opties" }, "optionsIconDark": { - "message": "Donkere browserthema’s", - "description": "" + "message": "Donkere browserthema’s" }, "optionsIconLight": { - "message": "Lichte browserthema’s", - "description": "" + "message": "Lichte browserthema’s" }, "optionsOpen": { - "message": "Openen", - "description": "" + "message": "Openen" }, "optionsOpenManager": { - "message": "Stijlen beheren", - "description": "" + "message": "Stijlen beheren" }, "optionsPopupWidth": { - "message": "Pop-upbreedte (in pixels)", - "description": "" + "message": "Pop-upbreedte (in pixels)" }, "optionsReset": { - "message": "Opties terugzetten naar standaardwaarden", - "description": "" + "message": "Opties terugzetten naar standaardwaarden" }, "optionsResetButton": { - "message": "Standaardwaarden", - "description": "" + "message": "Standaardwaarden" + }, + "optionsStylusThemes": { + "message": "Een UI-thema voor Stylus zoeken" }, "optionsSubheading": { - "message": "Meer opties", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Als u stijlen vanuit een oudere versie of vanuit Stylish importeert, controleer dan eenmalig op updates in de stijlbeheerder om er zeker van te zijn dat alle stijlen zijn bijgewerkt.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Interval voor automatisch bijwerken van gebruikersstijlen in uren (geef 0 op om dit uit te schakelen)", - "description": "" - }, - "optionsSyncNone": { - "message": "Geen", - "description": "" + "message": "Meer opties" }, "optionsSyncConnect": { - "message": "Koppelen", - "description": "" + "message": "Koppelen" }, "optionsSyncDisconnect": { - "message": "Ontkoppelen", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Nu synchroniseren", - "description": "" + "message": "Ontkoppelen" }, "optionsSyncLogin": { - "message": "Aanmelden", - "description": "" + "message": "Aanmelden" + }, + "optionsSyncNone": { + "message": "Geen" + }, + "optionsSyncStatusConnected": { + "message": "Gekoppeld" + }, + "optionsSyncStatusConnecting": { + "message": "Koppelen..." + }, + "optionsSyncStatusDisconnected": { + "message": "Ontkoppeld" + }, + "optionsSyncStatusDisconnecting": { + "message": "Ontkoppelen..." }, "optionsSyncStatusPull": { "message": "Stijl $loaded$ van $total$ ophalen", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1051,7 +912,6 @@ }, "optionsSyncStatusPush": { "message": "Stijl $loaded$ van $total$ uploaden", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1061,261 +921,254 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "Sessie verlopen, meld u opnieuw aan." + }, "optionsSyncStatusSyncing": { - "message": "Synchroniseren...", - "description": "" + "message": "Synchroniseren..." }, - "optionsSyncStatusConnecting": { - "message": "Koppelen...", - "description": "" + "optionsSyncSyncNow": { + "message": "Nu synchroniseren" }, - "optionsSyncStatusConnected": { - "message": "Gekoppeld", - "description": "" + "optionsUpdateImportNote": { + "message": "Als u stijlen vanuit een oudere versie of vanuit Stylish importeert, controleer dan eenmalig op updates in de stijlbeheerder om er zeker van te zijn dat alle stijlen zijn bijgewerkt." }, - "optionsSyncStatusDisconnecting": { - "message": "Ontkoppelen...", - "description": "" + "optionsUpdateInterval": { + "message": "Interval voor automatisch bijwerken van gebruikersstijlen in uren (geef 0 op om dit uit te schakelen)" }, - "optionsSyncStatusDisconnected": { - "message": "Ontkoppeld", - "description": "" + "overwriteFileExport": { + "message": "Wilt u een bestaand bestand overschrijven?" }, "paginationCurrent": { - "message": "Huidige pagina", - "description": "Tooltip for the current page index in search results" + "message": "Huidige pagina" }, "paginationEstimated": { - "message": "Geschatte aantal pagina’s", - "description": "Tooltip for the total page count in search results" + "message": "Geschatte aantal pagina’s" }, "paginationNext": { - "message": "Volgende pagina", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Volgende pagina" }, "paginationPrevious": { - "message": "Vorige pagina", - "description": "Tooltip for the '<-' button in search results" + "message": "Vorige pagina" }, "paginationTotal": { - "message": "Totale aantal pagina’s", - "description": "" + "message": "Totale aantal pagina’s" }, "parseUsercssError": { - "message": "Stylus kan de usercss niet verwerken:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus kan de usercss niet verwerken:" }, "popupAutoResort": { - "message": "Stijlen opnieuw sorteren in pop-up na omschakelen", - "description": "Label for the checkbox controlling popup resorting." + "message": "Stijlen opnieuw sorteren in pop-up na omschakelen" }, "popupBorders": { - "message": "Witte randen toevoegen aan zijkanten", - "description": "" + "message": "Witte randen toevoegen aan zijkanten" }, "popupBordersTooltip": { - "message": "Handig voor donkere thema’s in Chrome, omdat zijranden niet meer worden gerenderd", - "description": "" + "message": "Handig voor donkere thema’s in Chrome, omdat zijranden niet meer worden gerenderd" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, ook op het numerieke toetsenbord - schakelt naar de Ne stijl (0 is 10)\n- schakelt naar de eerste stijl die met de letter begint\n opent de editor i.p.v. deze in/uit te schakelen\n schakelt opgesomde stijlen in\n schakelt opgesomde stijlen uit\n en <`> (accent grave) - schakelt tussen initieel ingeschakelde stijlen; niet van toepassing op stijlen die zijn ingeschakeld met het pop-upvenster geopend, zodat u na het uitproberen de initiële selectie kunt herstellen: schakel alles uit en schakel dan om, m.a.w. \nMeer info is te vinden in de wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, ook op het numerieke toetsenbord - schakelt naar de Ne stijl (0 is 10)\n- schakelt naar de eerste stijl die met de letter begint\n opent de editor i.p.v. deze in/uit te schakelen\n schakelt opgesomde stijlen in\n schakelt opgesomde stijlen uit\n en <`> (accent grave) - schakelt tussen initieel ingeschakelde stijlen; niet van toepassing op stijlen die zijn ingeschakeld met het pop-upvenster geopend, zodat u na het uitproberen de initiële selectie kunt herstellen: schakel alles uit en schakel dan om, m.a.w. \nMeer info is te vinden in de wiki" }, "popupHotkeysTooltip": { - "message": "Klik om beschikbare sneltoetsen te tonen", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Klik om beschikbare sneltoetsen te tonen" }, "popupManageTooltip": { - "message": "Shift-klik of rechtsklik opent de beheerder met stijlen die op de huidige website van toepassing zijn", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift-klik of rechtsklik opent de beheerder met stijlen die op de huidige website van toepassing zijn" }, "popupMenuButtonTooltip": { - "message": "Actiemenu", - "description": "Tooltip for menu button in popup." + "message": "Actiemenu" + }, + "popupOpenEditInPopup": { + "message": "Een eenvoudig venster gebruiken (geen omnibox)" }, "popupOpenEditInWindow": { - "message": "Editor openen in nieuw venster", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Editor openen in nieuw venster" }, "popupOpenEditInWindowTooltip": { - "message": "Wordt tevens ingeschakeld door het losmaken van het editor-tabblad,\nen uitgeschakeld door het vastmaken van een los editor-tabblad aan een ander venster.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Wordt tevens ingeschakeld door het losmaken van het editor-tabblad,\nen uitgeschakeld door het vastmaken van een los editor-tabblad aan een ander venster." }, "popupStylesFirst": { - "message": "Stijlen vóór opdrachten", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Stijlen vóór opdrachten" }, "prefShowBadge": { - "message": "Aantal actieve stijlen voor de huidige website", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Aantal actieve stijlen voor de huidige website" }, "previewLabel": { - "message": "Live-voorbeeld", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Live-voorbeeld" }, "previewTooltip": { - "message": "Past de wijzigingen tijdelijk toe zonder deze op te slaan.\nSla de stijl op om de wijzigingen permanent te maken.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Past de wijzigingen tijdelijk toe zonder deze op te slaan.\nSla de stijl op om de wijzigingen permanent te maken." + }, + "publish": { + "message": "Publiceren" + }, + "publishPush": { + "message": "Update indienen" + }, + "publishReconnect": { + "message": "Probeer de verbinding te verbreken en dan opnieuw te publiceren" + }, + "publishRetry": { + "message": "Stylus probeert deze stijl nog steeds te publiceren, maar u kunt het opnieuw proberen als u geen authenticatieactiviteit of pop-ups ziet. Nu opnieuw proberen?" + }, + "publishStyle": { + "message": "Stijl publiceren" + }, + "publishUsw": { + "message": "Op " + }, + "readingStyles": { + "message": "Stijlen lezen..." }, "reload": { - "message": "Stylus-extensie herladen", - "description": "Context menu reload" + "message": "Stylus-extensie herladen" }, "replace": { - "message": "Vervangen", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Vervangen" }, "replaceAll": { - "message": "Alle vervangen", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Alle vervangen" }, "replaceWith": { - "message": "Vervangen door", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Vervangen door" }, "retrieveBckp": { - "message": "Stijlen importeren", - "description": "" + "message": "Stijlen importeren" + }, + "retrieveDropboxSync": { + "message": "Dropbox - Importeren" }, "search": { - "message": "Zoeken", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Zoeken" }, "searchCaseSensitive": { - "message": "Hoofdlettergevoelig", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Hoofdlettergevoelig" + }, + "searchGlobalStyles": { + "message": "Ook globale stijlen doorzoeken" }, "searchNumberOfResults": { - "message": "Aantal overeenkomsten", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Aantal overeenkomsten" }, "searchNumberOfResults2": { - "message": "Aantal overeenkomsten in code en ‘Van toepassing op’-waarden", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Aantal overeenkomsten in code en ‘Van toepassing op’-waarden" }, "searchRegexp": { - "message": "Gebruik /re/-syntaxis voor regexp-zoeken", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Gebruik /re/-syntaxis voor regexp-zoeken" }, "searchResultInstallCount": { - "message": "Totale aantal installaties", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Totale aantal installaties" }, "searchResultNoneFound": { - "message": "Geen stijlen voor deze website gevonden.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Geen stijlen voor deze website gevonden." + }, + "searchResultNotMatching": { + "message": "De stijl is geïnstalleerd, maar wordt niet op de huidige website-URL toegepast." + }, + "searchResultNotMatchingNote": { + "message": "Probeer de maker van deze gebruikersstijl te vragen de URL toe te voegen.\n\nU kunt de stijl ook in de beheerder openen en deze zelf bewerken,\nmaar pas op dat dit automatische updates voor deze stijl uitschakelt." }, "searchResultRating": { - "message": "Waardering", - "description": "Text for label that shows the search result's rating" + "message": "Waardering" }, "searchResultUpdated": { - "message": "Bijgewerkt", - "description": "Text for label that shows the search result's last update date" + "message": "Bijgewerkt" }, "searchResultWeeklyCount": { - "message": "Wekelijks aantal installaties", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Wekelijks aantal installaties" }, - "searchStyles": { - "message": "Inhoud doorzoeken", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "Stijlnamen niet hoofdlettergevoelig doorzoeken:\nbepaalde woorden - alle woorden in willekeurige volgorde\n\"bepaalde woordgroep\" - deze exacte woordgroep zonder aanhalingstekens\n2020 - een jaar als dit toont ook stijlen die in 2020 zijn bijgewerkt" + }, + "searchStylesAll": { + "message": "Alles" + }, + "searchStylesCode": { + "message": "CSS-code" }, "searchStylesHelp": { - "message": "-toets legt de focus in het zoekvak.\nPlatte tekst: zoeken in de naam, code, website-URL en de websites waarop het wordt toegepast. Woorden met minder dan 3 letters worden genegeerd.\nStijlen die met een volledige URL overeenkomen: begin de zoekopdracht met , bv. \nReguliere expressies: voeg schuine strepen en vlaggen toe, bv. \nExacte woorden: gebruik dubbele aanhalingstekens in de zoekterm, bv. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": " of de toets legt de focus op het zoekveld.\nDe standaardmodus is zoeken naar platte tekst op alle door spaties gescheiden termen in willekeurige volgorde.\nExacte woorden: zet de zoekopdracht tussen dubbele (rechte) aanhalingstekens, bv. <\".header ~ div\">.\nReguliere expressies: inclusief schuine strepen en vlaggen, bv. .\n'Op URL' in de scopekiezer: vindt stijlen die op een volledig opgegeven URL van toepassing zijn, zoals https://www.example.org/.\n'Metagegevens' in de scopekiezer: zoekt in namen, 'van toepassing op'-aanduidingen, installatie-URL, update-URL, en het volledige metagegevensblok voor usercss-stijlen." + }, + "searchStylesMatchUrl": { + "message": "Op URL" + }, + "searchStylesMeta": { + "message": "Metagegevens" + }, + "searchStylesName": { + "message": "Naam" }, "sectionAdd": { - "message": "Nog een sectie toevoegen", - "description": "Label for the button to add a section" + "message": "Nog een sectie toevoegen" }, "sectionRemove": { - "message": "Sectie verwijderen", - "description": "Label for the button to remove a section" + "message": "Sectie verwijderen" }, "sectionRestore": { - "message": "Verwijderde sectie herstellen", - "description": "Label for the button to restore a removed section" + "message": "Verwijderde sectie herstellen" + }, + "sections": { + "message": "Secties" }, "shortcuts": { - "message": "Sneltoetsen", - "description": "Go to shortcut configuration" + "message": "Sneltoetsen" }, "shortcutsNote": { - "message": "Sneltoetsen definiëren", - "description": "" + "message": "Sneltoetsen definiëren" }, "sortDateNewestFirst": { - "message": "nieuwste eerst", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "nieuwste eerst" }, "sortDateOldestFirst": { - "message": "oudste eerst", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "oudste eerst" }, "sortLabel": { - "message": "Selecteer een sorteermethode om op geïnstalleerde stijlen toe te passen", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Selecteer een sorteermethode om op geïnstalleerde stijlen toe te passen" }, "sortLabelTitleAsc": { - "message": "Titel - Oplopend", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Titel - Oplopend" }, "sortLabelTitleDesc": { - "message": "Titel - Aflopend", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Titel - Aflopend" }, "sortStylesHelp": { - "message": "Kies de toe te passen sorteermethode voor de geïnstalleerde items vanuit het vervolgkeuzemenu. De standaardinstelling past een oplopende sortering (A-Z) op de itemtitels toe. Sorteren op ‘Titel - Aflopend’ past het omgekeerde (Z-A) toe.\nAndere keuzes laten u items sorteren op basis van meerdere criteria. Denk hierbij aan het sorteren van een tabel met meerdere kolommen, en elke categorie in een selectie (tussen de plustekens) stelt een kolom of groep voor.\nVoorbeeld: als de instelling ‘Ingeschakeld (eerst) + Titel’ is, worden de ingeschakelde items bovenaan geplaatst en worden zowel de in- als uitgeschakelde items apart oplopend gesorteerd (A-Z).", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Kies de toe te passen sorteermethode voor de geïnstalleerde items vanuit het vervolgkeuzemenu. De standaardinstelling past een oplopende sortering (A-Z) op de itemtitels toe. Sorteren op ‘Titel - Aflopend’ past het omgekeerde (Z-A) toe.\nAndere keuzes laten u items sorteren op basis van meerdere criteria. Denk hierbij aan het sorteren van een tabel met meerdere kolommen, en elke categorie in een selectie (tussen de plustekens) stelt een kolom of groep voor.\nVoorbeeld: als de instelling ‘Ingeschakeld (eerst) + Titel’ is, worden de ingeschakelde items bovenaan geplaatst en worden zowel de in- als uitgeschakelde items apart oplopend gesorteerd (A-Z)." }, "sortStylesHelpTitle": { - "message": "Inhoud sorteren", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Inhoud sorteren" }, "styleBadRegexp": { - "message": "Regexp is ongeldig.", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp is ongeldig." }, "styleBeautify": { - "message": "Mooier maken", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Mooier maken" }, "styleBeautifyHint": { - "message": "Hint: klik met de rechtermuisknop op de knop ‘Mooier maken’ of gebruik de hieronder gedefinieerde sneltoets om iets mooier te maken zonder dit paneel te tonen", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "Hint: klik met de rechtermuisknop op de knop ‘Mooier maken’ of gebruik de hieronder gedefinieerde sneltoets om iets mooier te maken zonder dit paneel te tonen" }, "styleBeautifyIndentConditional": { - "message": "@media, @supports inspringen", - "description": "CSS-beautifier option" + "message": "@media, @supports inspringen" }, "styleBeautifyPreserveNewlines": { - "message": "Nieuwe regels behouden", - "description": "CSS-beautifier option" + "message": "Nieuwe regels behouden" }, "styleCancelEditLabel": { - "message": "Terug naar beheren", - "description": "Label for cancel button for style editing" + "message": "Terug naar beheren" }, "styleChangesNotSaved": { - "message": "U hebt wijzigingen in deze stijl aangebracht zonder op te slaan.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "U hebt wijzigingen in deze stijl aangebracht zonder op te slaan." }, "styleEnabledLabel": { - "message": "Ingeschakeld", - "description": "Label for the enabled state of styles" + "message": "Ingeschakeld" }, "styleFromMozillaFormatError": { - "message": "Importeren vanuit Mozilla-opmaak mislukt", - "description": "Label for the import error" + "message": "Importeren vanuit Mozilla-opmaak mislukt" }, "styleFromMozillaFormatPrompt": { - "message": "Plak de code in Mozilla-opmaak", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Plak de code in Mozilla-opmaak" }, "styleInstall": { "message": "‘$stylename$’ installeren in Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1324,7 +1177,6 @@ }, "styleInstallFailed": { "message": "Installeren van gebruikersstijl mislukt!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1333,86 +1185,71 @@ }, "styleInstallOverwrite": { "message": "‘$stylename$’ is al geïnstalleerd. Overschrijven?\nVersie: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Voer een naam in", - "description": "Error displayed when user saves without providing a name" + "message": "Voer een naam in" }, "styleMozillaFormatHeading": { - "message": "Mozilla-opmaak", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla-opmaak" + }, + "styleName": { + "message": "Stijlnaam" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Stijl is niet toegepast vanwege onjuist gebruik van ‘regexp()’", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Stijl is niet toegepast vanwege onjuist gebruik van ‘regexp()’" }, "styleRegexpInvalidExplanation": { - "message": "Sommige ‘regexp()’-regels konden niet worden gecompileerd.", - "description": "" + "message": "Sommige ‘regexp()’-regels konden niet worden gecompileerd." }, "styleRegexpPartialExplanation": { - "message": "Deze stijl gebruikt gedeeltelijk overeenkomende regexps. Dit is in strijd met de CSS4 @document-specificatie, die een volledige URL-overeenkomst vereist. De getroffen CSS-secties zijn niet op de pagina toegepast. Deze stijl is waarschijnlijk met Stylish-for-Chrome gemaakt, dat sinds de allereerste versie op een onjuiste manier ‘regexp()’-regels controleert (bekende fout).", - "description": "" + "message": "Deze stijl gebruikt gedeeltelijk overeenkomende regexps. Dit is in strijd met de CSS4 @document-specificatie, die een volledige URL-overeenkomst vereist. De getroffen CSS-secties zijn niet op de pagina toegepast. Deze stijl is waarschijnlijk met Stylish-for-Chrome gemaakt, dat sinds de allereerste versie op een onjuiste manier ‘regexp()’-regels controleert (bekende fout)." }, "styleRegexpProblemTooltip": { - "message": "Aantal secties dat niet wordt toegepast vanwege onjuist gebruik van ‘regexp()’", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Aantal secties dat niet wordt toegepast vanwege onjuist gebruik van ‘regexp()’" }, "styleRegexpTestButton": { - "message": "RegExp-test", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "RegExp-test" }, "styleRegexpTestFull": { - "message": "Overeenkomende tabbladen", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Overeenkomende tabbladen" }, "styleRegexpTestInvalid": { - "message": "Ongeldige regexps overgeslagen", - "description": "RegExp test report: label for the invalid expressions" + "message": "Ongeldige regexps overgeslagen" }, "styleRegexpTestNone": { - "message": "Geen overeenkomende tabbladen", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Geen overeenkomende tabbladen" }, "styleRegexpTestNote": { - "message": "Let op: gebruik een enkele \\ voor het gebruik van escapetekens in het regexp-invoerveld. Deze worden automatisch omgezet naar \\\\ in de stijlcode volgens de specificatie voor tekenreeksen tussen aanhalingstekens in CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Let op: gebruik een enkele \\ voor het gebruik van escapetekens in het regexp-invoerveld. Deze worden automatisch omgezet naar \\\\ in de stijlcode volgens de specificatie voor tekenreeksen tussen aanhalingstekens in CSS." }, "styleRegexpTestPartial": { - "message": "Niet volledig overeenkomend, dus overgeslagen", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Niet volledig overeenkomend, dus overgeslagen" }, "styleRegexpTestTitle": { - "message": "Lijst van overeenkomende geopende tabbladen (klik op de URL om de focus op het tabblad te leggen)", - "description": "RegExp test report: title of the report" + "message": "Lijst van overeenkomende geopende tabbladen (klik op de URL om de focus op het tabblad te leggen)" }, "styleSaveLabel": { - "message": "Opslaan", - "description": "Label for save button for style editing" + "message": "Opslaan" }, "styleToMozillaFormatHelp": { - "message": "De Mozilla-opmaak van de code kan bij userstyles.org worden ingediend en met het klassieke Stylish voor Firefox worden gebruikt.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "De Mozilla-opmaak van de code kan bij userstyles.org worden ingediend en met het klassieke Stylish voor Firefox worden gebruikt." }, "styleToMozillaFormatTitle": { - "message": "Stijl in Mozilla-opmaak", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Stijl in Mozilla-opmaak" }, "styleUpdate": { "message": "Weet u zeker dat u ‘$stylename$’ wilt bijwerken?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1420,72 +1257,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "Deze stijl is buiten de editor om gewijzigd. Wilt u de stijl opnieuw laden?", - "description": "Confirmation to update the style in the editor" + "message": "Deze stijl is buiten de editor om gewijzigd. Wilt u de stijl opnieuw laden?" }, "stylusUnavailableForURL": { - "message": "Stylus werkt niet op pagina’s als deze.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus werkt niet op pagina’s als deze." }, "stylusUnavailableForURLdetails": { - "message": "Als beveiligingsmaatregel verbiedt de browser dat extensies effect hebben op ingebouwde pagina’s (zoals chrome://version, de standaard nieuw-tabbladpagina sinds Chrome 61, about:addons, enz.), evenals op pagina’s van andere extensies. Ook beperkt elke browser toegang tot de eigen extensiegalerij (zoals de Chrome Web Store of AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Als beveiligingsmaatregel verbiedt de browser dat extensies effect hebben op ingebouwde pagina’s (zoals chrome://version, de standaard nieuw-tabbladpagina sinds Chrome 61, about:addons, enz.), evenals op pagina’s van andere extensies. Ook beperkt elke browser toegang tot de eigen extensiegalerij (zoals de Chrome Web Store of AMO)." + }, + "syncDropboxDeprecated": { + "message": "Importeren/exporteren via Dropbox is vervangen door een meer geavanceerde stijlsynchronisatie in de optiespagina." + }, + "syncDropboxStyles": { + "message": "Dropbox - Exporteren" + }, + "syncError": { + "message": "Synchronisatie mislukt" + }, + "syncErrorRelogin": { + "message": "Synchronisatie mislukt.\nProbeer u opnieuw aan te melden in de Stylus-opties:\nklik eerst op ‘ontkoppelen’, daarna op ‘koppelen’." }, "syncStorageErrorSaving": { - "message": "De waarde kan niet worden opgeslagen. Probeer de hoeveelheid tekst te verminderen.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "De waarde kan niet worden opgeslagen. Probeer de hoeveelheid tekst te verminderen." }, "toggleStyle": { - "message": "Stijl in-/uitschakelen", - "description": "Label for the checkbox to enable/disable a style" + "message": "Stijl in-/uitschakelen" }, "undo": { - "message": "Ongedaan maken", - "description": "Button label" + "message": "Ongedaan maken" }, "undoGlobal": { - "message": "Ongedaan maken (alle secties)", - "description": "CSS-beautify global Undo button label" + "message": "Ongedaan maken (alle secties)" }, "unreachableAMO": { - "message": "Firefox blokkeert de toegang tot deze website.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox blokkeert de toegang tot deze website." }, "unreachableAMOHint": { - "message": "Toestemming verlenen: open , klik met de rechtermuisknop op de lijst, klik op ‘Nieuw’ -> ‘Boolean’ en plak . Klik daarna op OK -> -> OK en vernieuw de pagina .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "In Firefox 60 en hoger moet u ook het AMO-domein uit verwijderen in .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Alleen Firefox 59 en hoger kunnen worden geconfigureerd om WebExtensions stijlelementen te laten toevoegen op door CSP beveiligde websites zoals deze.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Toestemming verlenen: open , klik met de rechtermuisknop op de lijst, klik op ‘Nieuw’ -> ‘Boolean’ en plak . Klik daarna op OK -> -> OK en vernieuw de pagina ." }, "unreachableContentScript": { - "message": "Kon niet met de pagina communiceren. Probeer het tabblad te vernieuwen.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Kon niet met de pagina communiceren. Probeer het tabblad te vernieuwen." }, "unreachableFileHint": { - "message": "Stylus kan URL’s die met file:// beginnen alleen benaderen als u het selectievakje hiervoor op de pagina chrome://extensions aanvinkt.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus kan URL’s die met file:// beginnen alleen benaderen als u het selectievakje hiervoor op de pagina chrome://extensions aanvinkt." }, - "InaccessibleFileHint": { - "message": "Stylus heeft geen toegang tot sommige bestandstypen (bv. pdf- en json-bestanden).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "In Firefox 60 en hoger moet u ook het AMO-domein uit verwijderen in ." + }, + "unreachableMozSiteHintOldFF": { + "message": "Alleen Firefox 59 en hoger kunnen worden geconfigureerd om WebExtensions stijlelementen te laten toevoegen op door CSP beveiligde websites zoals deze." + }, + "unzipStyles": { + "message": "Stijlen uitpakken..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Geen updates gevonden.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Geen updates gevonden." }, "updateAllCheckSucceededSomeEdited": { - "message": "Sommige stijlen die kunnen worden bijgewerkt zijn niet gecontroleerd, om mogelijke lokale bewerkingen te behouden. Updates kunnen worden geforceerd door de stijlen individueel te controleren, of door alle stijlen opnieuw te controleren (lokale bewerkingen worden overschreven).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Sommige stijlen die kunnen worden bijgewerkt zijn niet gecontroleerd, om mogelijke lokale bewerkingen te behouden. Updates kunnen worden geforceerd door de stijlen individueel te controleren, of door alle stijlen opnieuw te controleren (lokale bewerkingen worden overschreven)." }, "updateCheckFailBadResponseCode": { "message": "Update mislukt: server gaf code $code$ als antwoord.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1493,127 +1325,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Update mislukt: server onbereikbaar.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Update mislukt: server onbereikbaar." }, "updateCheckHistory": { - "message": "Geschiedenis van updatecontroles", - "description": "" + "message": "Geschiedenis van updatecontroles" }, "updateCheckManualUpdateForce": { - "message": "Update installeren (lokale bewerkingen worden overschreven)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Update installeren (lokale bewerkingen worden overschreven)" }, "updateCheckManualUpdateHint": { - "message": "Een update forceren zal lokale bewerkingen overschrijven.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Een update forceren zal lokale bewerkingen overschrijven." }, "updateCheckSkippedLocallyEdited": { - "message": "Deze stijl is lokaal bewerkt.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Deze stijl is lokaal bewerkt." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Deze stijl is mogelijk lokaal bewerkt.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Deze stijl is mogelijk lokaal bewerkt." }, "updateCheckSucceededNoUpdate": { - "message": "Stijl is up-to-date.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Stijl is up-to-date." }, "updateCompleted": { - "message": "Update voltooid.", - "description": "Text that displays when an update completed" + "message": "Update voltooid." }, "updatesCurrentlyInstalled": { - "message": "Geïnstalleerde updates:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Wijzig de waarde van @name of @namespace om te voorkomen dat een bestaande stijl wordt overschreven.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "De stijl is bijgewerkt of verwijderd nadat het configuratievenster werd getoond. Om beschadiging van metagegevens van de extensie te voorkomen, zijn deze variabelen niet opgeslagen:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Specificeer @name in de code", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Wilt u de standaardsjabloon voor nieuwe Usercss-stijlen vervangen door de huidige code?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Lege @name vervangt de standaardsjabloon", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Voer hier code in...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "De versie is ouder dan de geïnstalleerde stijl.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Stijl schrijven voor:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "deze URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropbox - Exporteren", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Importeren/exporteren via Dropbox is vervangen door een meer geavanceerde stijlsynchronisatie in de optiespagina.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox - Importeren", - "description": "" - }, - "overwriteFileExport": { - "message": "Wilt u een bestaand bestand overschrijven?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Bestand opgeslagen", - "description": "" - }, - "noFileToImport": { - "message": "Als u uw stijlen wilt importeren, dient u deze eerst te exporteren.", - "description": "" - }, - "connectingDropbox": { - "message": "Dropbox koppelen...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Koppelen met Dropbox is alleen beschikbaar in apps die direct vanuit de webstore zijn geïnstalleerd", - "description": "" - }, - "gettingStyles": { - "message": "Alle stijlen ophalen...", - "description": "" - }, - "zipStyles": { - "message": "Stijlen inpakken...", - "description": "" - }, - "unzipStyles": { - "message": "Stijlen uitpakken...", - "description": "" - }, - "readingStyles": { - "message": "Stijlen lezen...", - "description": "" + "message": "Geïnstalleerde updates:" }, "uploadingFile": { - "message": "Bestand uploaden...", - "description": "" + "message": "Bestand uploaden..." + }, + "usercssAvoidOverwriting": { + "message": "Wijzig de waarde van @name of @namespace om te voorkomen dat een bestaande stijl wordt overschreven." + }, + "usercssConfigIncomplete": { + "message": "De stijl is bijgewerkt of verwijderd nadat het configuratievenster werd getoond. Om beschadiging van metagegevens van de stijl te voorkomen, zijn deze variabelen niet opgeslagen:" + }, + "usercssEditorNamePlaceholder": { + "message": "Specificeer @name in de code" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Wilt u de standaardsjabloon voor nieuwe Usercss-stijlen vervangen door de huidige code?" + }, + "usercssReplaceTemplateName": { + "message": "Lege @name vervangt de standaardsjabloon" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Voer hier code in..." + }, + "versionInvalidOlder": { + "message": "De versie is ouder dan de geïnstalleerde stijl." + }, + "writeStyleFor": { + "message": "Stijl schrijven voor:" + }, + "writeStyleForURL": { + "message": "deze URL" + }, + "zipStyles": { + "message": "Stijlen inpakken..." } } diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index f24ce9e9..666cd899 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus nie ma dostępu do niektórych typów plików (na przykład plików pdf i json)." + }, "addStyleLabel": { - "message": "Napisz nowy styl", - "description": "Label for the button to go to the add style page" + "message": "Napisz nowy styl" }, "addStyleTitle": { - "message": "Dodaj styl", - "description": "Title of the page for adding styles" + "message": "Dodaj styl" }, "alphaChannel": { - "message": "Nieprzezroczystość", - "description": "Label of color's opacity" + "message": "Nieprzezroczystość" }, "appliesAdd": { - "message": "Dodaj", - "description": "Label for the button to add an 'applies' entry" + "message": "Dodaj" }, "appliesDisplay": { "message": "Dotyczy: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +23,270 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "i więcej", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "i więcej" }, "appliesDomainOption": { - "message": "Adresy URL w domenie", - "description": "Option to make the style apply to the entered string as a domain" + "message": "Adresy URL w domenie" }, "appliesHelp": { - "message": "Użyj przycisków \"Dotyczy\", aby ograniczyć adresy URL, których dotyczy kod w tej sekcji.", - "description": "Help text for 'applies to' section" + "message": "Użyj przycisków \"Dotyczy\", aby ograniczyć adresy URL, których dotyczy kod w tej sekcji." }, "appliesLabel": { - "message": "Dotyczy", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Dotyczy" }, "appliesLineWidgetLabel": { - "message": "Wyświetl informacje 'Dotyczy'", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Wyświetl informacje 'Dotyczy'" }, "appliesLineWidgetWarning": { - "message": "Nie działa ze zminifikowanym CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Nie działa ze zminifikowanym CSS" }, "appliesRegexpOption": { - "message": "Adresy URL pasujące do regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Adresy URL pasujące do regexp" }, "appliesRemove": { - "message": "Usuń", - "description": "Label for the button to remove an 'applies' entry" + "message": "Usuń" }, "appliesRemoveError": { - "message": "Nie można usunąć ostatniego wpisu 'dotyczy'", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Nie można usunąć ostatniego wpisu 'dotyczy'" }, "appliesSpecify": { - "message": "Sprecyzuj", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Sprecyzuj" }, "appliesToEverything": { - "message": "Wszystkie", - "description": "Text displayed for styles that apply to all sites" + "message": "Wszystkie" }, "appliesUrlOption": { - "message": "Adres URL", - "description": "Option to make the style apply to the entered string as a URL" + "message": "Adres URL" }, "appliesUrlPrefixOption": { - "message": "Adresy URL zaczynające się od", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "Adresy URL zaczynające się od" }, "applyAllUpdates": { - "message": "Zastosuj wszystkie aktualizacje", - "description": "Label for the button to apply all detected updates" + "message": "Zastosuj wszystkie aktualizacje" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Kopia zapasowa", - "description": "Heading for backup" + "message": "Kopia zapasowa" }, "backupMessage": { - "message": "Wybierz plik lub przeciągnij i upuść go na tę stronę.", - "description": "Message for backup" + "message": "Wybierz plik lub przeciągnij i upuść go na tę stronę." }, "bckpInstStyles": { - "message": "Eksportuj style", - "description": "" + "message": "Eksportuj style" }, "checkAllUpdates": { - "message": "Sprawdź aktualizacje wszystkich stylów", - "description": "Label for the button to check all styles for updates" + "message": "Sprawdź aktualizacje wszystkich stylów" }, "checkAllUpdatesForce": { - "message": "Sprawdź ponownie, nie edytowałem żadnych stylów!", - "description": "Label for the button to apply all detected updates" + "message": "Sprawdź ponownie, nie edytowałem żadnych stylów!" }, "checkForUpdate": { - "message": "Sprawdź aktualizacje", - "description": "Label for the button to check a single style for an update" + "message": "Sprawdź aktualizacje" }, "checkingForUpdate": { - "message": "Sprawdzanie...", - "description": "Text to display when checking a style for an update" + "message": "Sprawdzanie..." }, "clickToUninstall": { - "message": "Kliknij, aby odinstalować", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Kliknij, aby odinstalować" }, "cm_autoCloseBrackets": { - "message": "Automatyczne zamykanie nawiasów i cytatów", - "description": "Label for the checkbox in the style editor." + "message": "Automatyczne zamykanie nawiasów i cytatów" }, "cm_autoCloseBracketsTooltip": { - "message": "Automatycznie dodawaj zamknięcie pary podczas pisania jednego z otwarcia ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Automatycznie dodawaj zamknięcie pary podczas pisania jednego z otwarcia ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Autouzupełnianie podczas pisania", - "description": "Label for the checkbox in the style editor." + "message": "Autouzupełnianie podczas pisania" }, "cm_colorpicker": { - "message": "Próbniki kolorów CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Próbniki kolorów CSS" }, "cm_indentWithTabs": { - "message": "Użyj tabulacji z inteligentnym wcięciem", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Użyj tabulacji z inteligentnym wcięciem" }, "cm_keyMap": { - "message": "Mapa klawiszy", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Mapa klawiszy" }, "cm_lineWrapping": { - "message": "Zawijanie tekstu", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Zawijanie tekstu" }, "cm_linter": { - "message": "Linter CSS", - "description": "Select the linter to check for CSS issues" + "message": "Linter CSS" }, "cm_matchHighlight": { - "message": "Wyróżnienie", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Wyróżnienie" }, "cm_matchHighlightSelection": { - "message": "Tylko zaznaczenie", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Tylko zaznaczenie" }, "cm_matchHighlightToken": { - "message": "Token pod kursorem", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token pod kursorem" }, "cm_resizeGripHint": { - "message": "Kliknij dwukrotnie, aby zmaksymalizować lub przywrócić wysokość", - "description": "Tooltip for the resize grip in style editor" + "message": "Kliknij dwukrotnie, aby zmaksymalizować lub przywrócić wysokość" }, "cm_selectByTokens": { - "message": "Dwukrotne kliknięcie wybiera tokeny", - "description": "Label for the checkbox in the editor." + "message": "Dwukrotne kliknięcie wybiera tokeny" }, "cm_selectByTokensTooltip": { - "message": "Przykłady tokenów: .foo-bar-2 #aabbcc 0.32 !important\nPo wyłączeniu: wyrazy rozdzielone przecinkami są wybrane.", - "description": "" + "message": "Przykłady tokenów: .foo-bar-2 #aabbcc 0.32 !important\nPo wyłączeniu: wyrazy rozdzielone przecinkami są wybrane." }, "cm_smartIndent": { - "message": "Użyj inteligentnego wcięcia", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Użyj inteligentnego wcięcia" }, "cm_tabSize": { - "message": "Szerokość tabulacji", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Szerokość tabulacji" }, "cm_theme": { - "message": "Motyw", - "description": "Label for the style editor's CSS theme." + "message": "Motyw" + }, + "colorpickerPaletteHint": { + "message": "Kliknij prawym przyciskiem myszy próbkę, aby przejść przez jej wiersze kodu" }, "colorpickerSwitchFormatTooltip": { - "message": "Zmiana formatu: HEX -> RGB -> HSL.\nShift i kliknięcie do odwrócenia kierunku.\nTakże klawiszami PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Zmiana formatu: HEX -> RGB -> HSL.\nShift i kliknięcie do odwrócenia kierunku.\nTakże klawiszami PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Otwórz próbnik kolorów", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Otwórz próbnik kolorów" }, "configOnChange": { - "message": "przy zmianie", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "przy zmianie" }, "configOnChangeTooltip": { - "message": "Autozapisuj i stosuj zmiany automatycznie", - "description": "" + "message": "Autozapisuj i stosuj zmiany automatycznie" }, "configureStyle": { - "message": "Skonfiguruj", - "description": "Label for the button to configure usercss userstyle" + "message": "Skonfiguruj" }, "configureStyleOnHomepage": { - "message": "Skonfiguruj na stronie głównej", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Skonfiguruj na stronie głównej" }, "confirmCancel": { - "message": "Anuluj", - "description": "" + "message": "Anuluj" }, "confirmClose": { - "message": "Zamknij", - "description": "'Close' button in a confirm dialog" + "message": "Zamknij" }, "confirmDefault": { - "message": "Użyj domyślnych", - "description": "'Set to default' button in a confirm dialog" + "message": "Użyj domyślnych" }, "confirmDelete": { - "message": "Usuń", - "description": "" + "message": "Usuń" }, "confirmDiscardChanges": { - "message": "Odrzucić zmiany?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Odrzucić zmiany?" }, "confirmNo": { - "message": "Nie", - "description": "'No' button in a confirm dialog" + "message": "Nie" }, "confirmSave": { - "message": "Zapisz", - "description": "'Save' button in a confirm dialog" + "message": "Zapisz" }, "confirmStop": { - "message": "Zatrzymaj", - "description": "'Stop' button in a confirm dialog" + "message": "Zatrzymaj" }, "confirmYes": { - "message": "Tak", - "description": "'Yes' button in a confirm dialog" + "message": "Tak" + }, + "connectingDropbox": { + "message": "Łączenie z Dropboksem..." + }, + "connectingDropboxNotAllowed": { + "message": "Nawiązywanie połączeń z Dropboksem jest dostępne tylko w aplikacjach zainstalowanych bezpośrednio ze sklepu internetowego" }, "copied": { - "message": "Skopiowane do schowka", - "description": "Message shown when content has been copied to the clipboard" + "message": "Skopiowane do schowka" }, "copy": { - "message": "Skopiuj do schowka", - "description": "Tooltip for elements which can be copied" + "message": "Skopiuj do schowka" + }, + "customNameHint": { + "message": "Podaj tutaj niestandardową nazwę, aby zmienić nazwę stylu w interfejsie użytkownika bez przerywania jego aktualizacji" + }, + "customNameResetHint": { + "message": "Przestań używać niestandardowej nazwy, przełącz na własną nazwę stylu" + }, + "dateAbbrDay": { + "message": "$value$d.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$g.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$mies.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$r.", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "Data zainstalowania", - "description": "Option text for the user to sort the style by install date" + "message": "Data zainstalowania" }, "dateUpdated": { - "message": "Data aktualizacji", - "description": "Option text for the user to sort the style by last update date" + "message": "Data aktualizacji" }, "dbError": { - "message": "Podczas używania bazy danych Stylus wystąpił błąd. Czy chcesz odwiedzić stronę internetową z możliwymi rozwiązaniami?", - "description": "Prompt when a DB error is encountered" + "message": "Podczas używania bazy danych Stylus wystąpił błąd. Czy chcesz odwiedzić stronę internetową z możliwymi rozwiązaniami?" }, "defaultTheme": { - "message": "domyślny", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "domyślny" }, "deleteStyleConfirm": { - "message": "Czy na pewno chcesz usunąć ten styl?", - "description": "Confirmation before deleting a style" + "message": "Czy na pewno chcesz usunąć ten styl?" }, "deleteStyleLabel": { - "message": "Usuń", - "description": "Label for the button to delete a style" + "message": "Usuń" }, "description": { - "message": "Przeprojektuj sieć za pomocą Stylusa – menedżera stylów użytkownika. Stylus umożliwia łatwe instalowanie motywów i skórek dla wielu popularnych witryn.", - "description": "Extension description" + "message": "Przeprojektuj sieć za pomocą Stylusa – menedżera stylów użytkownika. Stylus umożliwia łatwe instalowanie motywów i skórek dla wielu popularnych witryn." }, "disableAllStyles": { - "message": "Wyłącz wszystkie style", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Wyłącz wszystkie style" }, "disableStyleLabel": { - "message": "Wyłącz", - "description": "Label for the button to disable a style" + "message": "Wyłącz" }, "dragDropMessage": { - "message": "Upuść twój plik kopii zapasowej gdziekolwiek na tej stronie, aby zaimportować.", - "description": "Drag'n'drop message" + "message": "Upuść twój plik kopii zapasowej gdziekolwiek na tej stronie, aby zaimportować." }, "dragDropUsercssTabstrip": { - "message": "Aby zainstalować plik, upuść go na pasku kart (obszar, w którym wyświetlane są tytuły kart).", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Aby zainstalować plik, upuść go na pasku kart (obszar, w którym wyświetlane są tytuły kart)." }, "editDeleteText": { - "message": "Usuń", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Usuń" }, "editGotoLine": { - "message": "Przejdź do linii (lub linii:kol)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Przejdź do wiersza (lub wiersz:kol)" }, "editStyleHeading": { - "message": "Edytuj styl", - "description": "Title of the page for editing styles" + "message": "Edytuj styl" }, "editStyleLabel": { - "message": "Edytuj", - "description": "Label for the button to go to the edit style page" + "message": "Edytuj" }, "editStyleTitle": { "message": "Edytuj styl $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,220 +294,183 @@ } }, "enableStyleLabel": { - "message": "Włącz", - "description": "Label for the button to enable a style" + "message": "Włącz" }, "excludeStyleByDomainLabel": { - "message": "Wyklucz bieżącą domenę", - "description": "" + "message": "Wyklucz bieżącą domenę" }, "excludeStyleByUrlLabel": { - "message": "Wyklucz bieżący adres URL", - "description": "" + "message": "Wyklucz bieżący adres URL" }, "exportLabel": { - "message": "Eksportuj", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Eksportuj" + }, + "exportSavedSuccess": { + "message": "Plik zapisany z powodzeniem" }, "externalFeedback": { - "message": "Prześlij opinię", - "description": "Label for the external link to send feedback for the style" + "message": "Prześlij opinię" }, "externalHomepage": { - "message": "Strona główna", - "description": "Label for the external link to style's homepage" + "message": "Strona główna" }, "externalLink": { - "message": "Link zewnętrzny", - "description": "Label for external links" + "message": "Link zewnętrzny" }, "externalSupport": { - "message": "Wsparcie", - "description": "Label for the external link to style's support site" + "message": "Wsparcie" }, "externalUsercssDocument": { - "message": "Dokumentacja Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Dokumentacja Usercss" }, "filteredStyles": { "message": "Pokazano $numShown$ z sumy $numTotal$", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Aktualnie stosowane filtry nie pasują do żadnego stylu", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Aktualnie stosowane filtry nie pasują do żadnego stylu" }, "findStyles": { - "message": "Znajdź style", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Znajdź style" }, "findStylesForSite": { - "message": "Znajdź więcej stylów dla tej strony", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Znajdź więcej stylów dla tej strony" }, "findStylesInline": { - "message": "Wstawka", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Wstawka" }, "findStylesInlineTooltip": { - "message": "Wyświetlaj wyniki wyszukiwania w tym oknie.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Wyświetlaj wyniki wyszukiwania w tym oknie." }, "genericAdd": { - "message": "Dodaj", - "description": "Used in various places for an action that adds something" + "message": "Dodaj" }, "genericClone": { - "message": "Sklonuj", - "description": "Used in various places for an action that clones something" + "message": "Sklonuj" + }, + "genericDescription": { + "message": "Opis" }, "genericDisabledLabel": { - "message": "Wyłączone", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Wyłączone" }, "genericEnabledLabel": { - "message": "Włączone", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Włączone" }, "genericError": { - "message": "Błąd", - "description": "Used in various places to indicate some error occurred." + "message": "Błąd" }, "genericHistoryLabel": { - "message": "Historia", - "description": "Used in various places to show a history log of something" + "message": "Historia" }, "genericNext": { - "message": "Dalej", - "description": "Used in various places to select/perform the next step/action" + "message": "Dalej" }, "genericPrevious": { - "message": "Wstecz", - "description": "Used in various places to select/perform the previous step/action" + "message": "Wstecz" }, "genericResetLabel": { - "message": "Resetuj", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Resetuj" }, "genericSavedMessage": { - "message": "Zapisano", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Zapisano" }, "genericTitle": { - "message": "Tytuł", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Tytuł" }, "genericUnknown": { - "message": "Nieznane", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Nieznane" + }, + "gettingStyles": { + "message": "Uzyskiwanie wszystkich stylów..." }, "helpAlt": { - "message": "Pomoc", - "description": "Alternate text for help buttons" + "message": "Pomoc" }, "helpKeyMapCommand": { - "message": "Wpisz nazwę polecenia", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Wpisz nazwę polecenia" }, "helpKeyMapHotkey": { - "message": "Naciśnij klawisz skrótu", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Naciśnij klawisz skrótu" }, "hostDisabled": { - "message": "Ten host został wyłączony z powodu błędu w bieżącej wersji używanej przeglądarki", - "description": "Tooltip for cloud host disabled" + "message": "Ten host został wyłączony z powodu błędu w bieżącej wersji używanej przeglądarki" }, "importAppendLabel": { - "message": "Dołącz do stylu", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Dołącz do stylu" }, "importAppendTooltip": { - "message": "Dołącz importowany styl do bieżącego stylu", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Dołącz importowany styl do bieżącego stylu" }, "importLabel": { - "message": "Importuj", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importuj" + }, + "importPreprocessor": { + "message": "Styl z @preprocessor nie będzie działać w trybie klasycznym. Możesz przełączyć edytor w tryb Usercss: 1) otwórz menedżer stylów, 2) zaznacz pole wyboru \"jako Usercss\", 3) kliknij \"Napisz nowy styl\"\n\nCzy mimo to zaimportować teraz?" + }, + "importPreprocessorTitle": { + "message": "Potencjalny problem związany z @preprocessor" }, "importReplaceLabel": { - "message": "Nadpisz styl", - "description": "Label for the button to import and overwrite current style" + "message": "Nadpisz styl" }, "importReplaceTooltip": { - "message": "Odrzuć zawartość bieżącego stylu i nadpisz go przy użyciu importowanego stylu", - "description": "Label for the button to import and overwrite current style" + "message": "Odrzuć zawartość bieżącego stylu i nadpisz go przy użyciu importowanego stylu" }, "importReportLegendAdded": { - "message": "dodano", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "dodano" }, "importReportLegendIdentical": { - "message": "identyczne pominięte", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identyczne pominięte" }, "importReportLegendInvalid": { - "message": "nieprawidłowe pominięte", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "nieprawidłowe pominięte" }, "importReportLegendUpdatedBoth": { - "message": "zaktualizowano meta info i kod", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "zaktualizowano meta info i kod" }, "importReportLegendUpdatedCode": { - "message": "zaktualizowany kod", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "zaktualizowany kod" }, "importReportLegendUpdatedMeta": { - "message": "zaktualizowano meta info", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "zaktualizowano meta info" }, "importReportTitle": { - "message": "Ukończono importowanie stylów", - "description": "Title of the report shown after importing styles" + "message": "Ukończono importowanie stylów" }, "importReportUnchanged": { - "message": "Nic nie zostało zmienione.", - "description": "Message in the report shown after importing styles" + "message": "Nic nie zostało zmienione." }, "importReportUndone": { - "message": "style zostały przywrócone", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "style zostały przywrócone" }, "importReportUndoneTitle": { - "message": "Importowanie zostało cofnięte", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importowanie zostało cofnięte" }, "installButton": { - "message": "Zainstaluj styl", - "description": "Label for install button" + "message": "Zainstaluj styl" }, "installButtonInstalled": { - "message": "Styl zainstalowano", - "description": "Text displayed when the style is successfully installed" + "message": "Styl jest zainstalowany" }, "installButtonReinstall": { - "message": "Przeinstaluj styl", - "description": "Label for reinstall button" + "message": "Przeinstaluj styl" }, "installButtonUpdate": { - "message": "Zaktualizuj styl", - "description": "Label for update button" + "message": "Zaktualizuj styl" }, "installUpdate": { - "message": "Zainstaluj aktualizację", - "description": "Label for the button to install an update for a single style" + "message": "Zainstaluj aktualizację" }, "installUpdateFrom": { "message": "Obecnie styl jest aktualizowany z $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -543,28 +478,31 @@ } }, "installUpdateFromLabel": { - "message": "Sprawdź aktualizacje", - "description": "Label for the checkbox to save current URL for update check" + "message": "Sprawdź aktualizacje" }, "license": { - "message": "Licencja", - "description": "Label for the license" + "message": "Licencja" }, "linkGetHelp": { - "message": "Uzyskaj pomoc", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Uzyskaj pomoc" + }, + "linkGetShareStyles": { + "message": "Pobieraj i udostępniaj style" + }, + "linkGetShareStylesInfo": { + "message": "Nowa witryna userstyles.world jest tworzona przez autorów stylów użytkownika w celu zastąpienia userstyles.org, która przez ostatni rok była tak powolna i nieodpowiadająca, że wielu autorów przestało aktualizować swoje style." }, "linkGetStyles": { - "message": "Pobierz style", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Pobierz style" + }, + "linkGetStylesInfo": { + "message": "Ta witryna archiwum została utworzona przez członka społeczności stylów użytkownika, aby wykonać kopię zapasową powolnej i nieodpowiadającej userstyles.org. Archiwum aktualizuje swoją zawartość mniej więcej raz dziennie." }, "linkTranslate": { - "message": "Tłumacz", - "description": "Transifex link text on the manage page" + "message": "Tłumacz" }, "linterCSSLintIncompatible": { "message": "CSSLint nie obsługuje preprocesora $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -572,12 +510,10 @@ } }, "linterCSSLintSettings": { - "message": "(Ustaw regułę jako: 0 = wyłączone; 1 = ostrzeżenie; 2 = błąd)", - "description": "CSSLint rule config values" + "message": "(Ustaw regułę jako: 0 = wyłączone; 1 = ostrzeżenie; 2 = błąd)" }, "linterConfigPopupTitle": { "message": "Ustaw konfigurację reguł $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -585,20 +521,16 @@ } }, "linterConfigTooltip": { - "message": "Kliknij, aby skonfigurować ten linter", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Kliknij, aby skonfigurować ten linter" }, "linterInvalidConfigError": { - "message": "Nie zapisano z powodu tych nieprawidłowych ustawień konfiguracji:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Nie zapisano z powodu tych nieprawidłowych ustawień konfiguracji:" }, "linterIssues": { - "message": "Problemy", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problemy" }, "linterIssuesHelp": { "message": "Te problemy zostały znalezione przez $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -606,144 +538,93 @@ } }, "linterJSONError": { - "message": "Nieprawidłowy format JSON", - "description": "Setting linter config with invalid JSON" + "message": "Nieprawidłowy format JSON" }, "linterResetMessage": { - "message": "Aby cofnąć przypadkowe zresetowanie, w polu tekstowym naciśnij Ctrl-Z (lub Cmd-Z)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Aby cofnąć przypadkowe zresetowanie, w polu tekstowym naciśnij Ctrl-Z (lub Cmd-Z)" }, "linterRulesLink": { - "message": "Zobacz pełną listę reguł", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Zobacz pełną listę reguł" }, "liveReloadError": { - "message": "Wystąpił błąd podczas oglądania pliku", - "description": "The label of live-reload error" + "message": "Wystąpił błąd podczas oglądania pliku" }, "liveReloadInstallHint": { - "message": "Pozostaw tę kartę otwartą, aby automatycznie aktualizować styl w przypadku zmian zewnętrznych.", - "description": "The label of live-reload feature" + "message": "Pozostaw tę kartę otwartą, aby automatycznie aktualizować styl w przypadku zmian zewnętrznych." }, "liveReloadInstallHintFF": { - "message": "Pozostaw zarówno tę kartę, jak i kartę pierwotną otwarte, aby automatycznie aktualizować styl w przypadku zmian zewnętrznych.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "Pozostaw zarówno tę kartę, jak i kartę pierwotną otwarte, aby automatycznie aktualizować styl w przypadku zmian zewnętrznych." }, "liveReloadLabel": { - "message": "Przeładuj na żywo", - "description": "The label of live-reload feature" + "message": "Przeładuj na żywo" }, "manageFavicons": { - "message": "Ikony ulubionych w kolumnie dotyczących", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Ikony ulubionych w kolumnie dotyczących" }, "manageFaviconsGray": { - "message": "Wyszarzone", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Wyszarzone" }, "manageFaviconsHelp": { - "message": "Stylus korzysta z usługi zewnętrznej https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus korzysta z usługi zewnętrznej https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtry", - "description": "Label for filters container" + "message": "Filtry" }, "manageHeading": { - "message": "Zainstalowane style", - "description": "Heading for the manage page" + "message": "Zainstalowane style" }, "manageMaxTargets": { - "message": "Liczba dotyczących elementów ", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Liczba dotyczących elementów " }, "manageNewStyleAsUsercss": { - "message": "jako Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "jako Usercss" }, "manageNewUI": { - "message": "Nowy układ interfejsu zarządzania", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nowy układ interfejsu zarządzania" }, "manageOnlyDisabled": { - "message": "Tylko wyłączone style", - "description": "Checkbox to show only disabled styles" + "message": "Tylko wyłączone style" }, "manageOnlyEnabled": { - "message": "Tylko włączone style", - "description": "Checkbox to show only enabled styles" + "message": "Tylko włączone style" }, "manageOnlyExternal": { - "message": "Tylko zewnętrzne style", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Tylko zewnętrzne style" }, "manageOnlyLocal": { - "message": "Tylko style stworzone lokalnie", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Tylko style stworzone lokalnie" }, "manageOnlyLocalTooltip": { - "message": "(style nie zainstalowane poprzez stronę userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(style nie zainstalowane poprzez stronę userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Tylko style nie-Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Tylko style nie-Usercss" }, "manageOnlyUpdates": { - "message": "Tylko z aktualizacjami lub problemami", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Tylko z aktualizacjami lub problemami" }, "manageOnlyUsercss": { - "message": "Tylko style Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "Tylko style Usercss" }, "menuShowBadge": { - "message": "Pokaż liczbę aktywnych stylów", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Pokaż liczbę aktywnych stylów" }, "meta_invalidCheckboxDefault": { - "message": "Nieprawidłowe pole wyboru @var: wartość musi wynosić 0 lub 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Nieprawidłowe pole wyboru @var: wartość musi wynosić 0 lub 1" }, "meta_invalidColor": { "message": "Nieprawidłowy kolor @var: $color$ nie jest kolorem", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Spodziewana liczba" + }, "meta_invalidRange": { "message": "Nieprawidłowa @var $type$: wartość musi być liczbą lub tablicą", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Nieprawidłowa @var $type$: określono wiele jednostek", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Nieprawidłowa @var $type$: tablica zawiera zbyt wiele elementów", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Nieprawidłowa @var $type$: elementy w tablicy muszą być liczbą, łańcuchem lub wartością null", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -752,16 +633,6 @@ }, "meta_invalidRangeDefault": { "message": "Nieprawidłowa @var $type$: wartość domyślna jest wartością null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Nieprawidłowa @var $type$: wartość domyślna jest niższa niż minimalna", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -770,7 +641,22 @@ }, "meta_invalidRangeMax": { "message": "Nieprawidłowa @var $type$: domyślna wartość jest większa niż maksymalna", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Nieprawidłowa @var $type$: wartość domyślna jest niższa niż minimalna", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Nieprawidłowa @var $type$: określono wiele jednostek", "placeholders": { "type": { "content": "$1" @@ -779,7 +665,14 @@ }, "meta_invalidRangeStep": { "message": "Nieprawidłowa @var $type$: wartość domyślna nie jest wielokrotnością kroku", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Nieprawidłowa @var $type$: tablica zawiera zbyt wiele elementów", "placeholders": { "type": { "content": "$1" @@ -788,7 +681,6 @@ }, "meta_invalidRangeUnits": { "message": "Nieprawidłowa @var $type$: '$units$' nie jest prawidłową jednostką", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -798,37 +690,40 @@ } } }, - "meta_invalidSelect": { - "message": "Nieprawidłowa @var select: domyślną wartością musi być tablica lub obiekt", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Nieprawidłowa @var $type$: elementy w tablicy muszą być liczbą, łańcuchem lub wartością null", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Nieprawidłowa @var select: wartości wewnątrz tablicy/obiektu muszą być ciągami", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Nieprawidłowa @var select: domyślną wartością musi być tablica lub obiekt" }, "meta_invalidSelectEmptyOptions": { - "message": "Nieprawidłowa @var select: lista opcji jest pusta", - "description": "Error displayed when the value of @var select is invalid" + "message": "Nieprawidłowa @var select: lista opcji jest pusta" }, "meta_invalidSelectLabel": { - "message": "Nieprawidłowa @var select: etykieta opcji jest pusta", - "description": "Error displayed when the value of @var select is invalid" + "message": "Nieprawidłowa @var select: etykieta opcji jest pusta" }, "meta_invalidSelectMultipleDefaults": { - "message": "Nieprawidłowa @var select: określono wiele domyślnych opcji", - "description": "Error displayed when the value of @var select is invalid" + "message": "Nieprawidłowa @var select: określono wiele domyślnych opcji" }, "meta_invalidSelectNameDuplicated": { - "message": "Nieprawidłowa @var select: nazwa opcji jest zduplikowana", - "description": "Error displayed when the value of @var select is invalid" + "message": "Nieprawidłowa @var select: nazwa opcji jest zduplikowana" + }, + "meta_invalidSelectValue": { + "message": "Nieprawidłowa @var select: wartości wewnątrz tablicy/obiektu muszą być ciągami" }, "meta_invalidSelectValueMismatch": { - "message": "Nieprawidłowa @var select: wartość nie istnieje na liście opcji", - "description": "Error displayed when the value of @var select is invalid" + "message": "Nieprawidłowa @var select: wartość nie istnieje na liście opcji" + }, + "meta_invalidString": { + "message": "Spodziewany cytowany ciąg" }, "meta_invalidURLProtocol": { "message": "Nieprawidłowy protokół URL. Dozwolone są tylko http i https: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -836,29 +731,13 @@ } }, "meta_invalidVersion": { - "message": "Nieprawidłowy numer wersji. Wartość nie pasuje do wzorca SemVer: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Spodziewana liczba", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Spodziewany cytowany ciąg", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Nieprawidłowy numer wersji" }, "meta_invalidWord": { - "message": "Spodziewane słowo", - "description": "Error displayed when the value is expected to be a word" + "message": "Spodziewane słowo" }, "meta_missingChar": { "message": "Spodziewane znaki: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -866,12 +745,10 @@ } }, "meta_missingEOT": { - "message": "Spodziewane dane EOT", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Spodziewane dane EOT" }, "meta_missingMandatory": { "message": "Brakujące obowiązkowe metadane: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -880,7 +757,6 @@ }, "meta_unknownJSONLiteral": { "message": "Nieprawidłowy JSON: $literal$ nie jest prawidłowym literałem JSON", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -889,16 +765,33 @@ }, "meta_unknownMeta": { "message": "Nieznane metadane: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "Może @$keyOk$? Nieznane metadane: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "Nieznany @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Nieznany typ @$varkey$: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -908,158 +801,137 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Nieznany @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Aby zaimportować style, należy je najpierw wyeksportować." }, "noStylesForSite": { - "message": "Nie ma zainstalownych stylów dla tej witryny.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nie ma zainstalownych stylów dla tej witryny." + }, + "numberedLine": { + "message": "Wiersz:" }, "openManage": { - "message": "Zarządzaj", - "description": "Link to open the manage page." + "message": "Zarządzaj" }, "openOptions": { - "message": "Opcje", - "description": "Go to Options UI" + "message": "Opcje" }, "openStylesManager": { - "message": "Otwórz menedżera stylów", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Otwórz menedżera stylów" }, "optionsActions": { - "message": "Akcje", - "description": "" + "message": "Akcje" }, "optionsAdvanced": { - "message": "Zaawansowane", - "description": "" + "message": "Zaawansowane" }, "optionsAdvancedContextDelete": { - "message": "Dodaj 'Usuń' do menu kontekstowego edytora", - "description": "" + "message": "Dodaj 'Usuń' do menu kontekstowego edytora" }, "optionsAdvancedExposeIframes": { - "message": "Odsłoń ramki pływające za pomocą HTML[stylus-iframe]", - "description": "" + "message": "Odsłoń ramki pływające za pomocą HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Odsłania domenę najwyższego poziomu w każdym elemencie iframe.\nWłącza pisanie CSS specyficznych dla iframe w taki sposób:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Odsłania domenę najwyższego poziomu w każdym elemencie iframe.\nWłącza pisanie CSS specyficznych dla iframe w taki sposób:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Napisz nowy styl jako usercss", - "description": "" + "message": "Napisz nowy styl jako usercss" + }, + "optionsAdvancedPatchCsp": { + "message": "Załataj CSP, aby zezwolić na zasoby stylu" + }, + "optionsAdvancedPatchCspNote": { + "message": "Włącz tę opcję, jeśli style zawierają obrazy lub czcionki, które nie ładują się w witrynach ze ścisłymCSP (Content-Security-Policy).\n\nWłączenie tego ustawienia złagodzi ograniczenia CSP, umożliwiając załadowanie podstawowej zawartości stylu. Ta opcja jest przeznaczona tylko dla zaawansowanych użytkowników, którzy rozumieją potencjalne konsekwencje dla bezpieczeństwa i przyjmują odpowiedzialność za monitorowanie treści, na które zezwalają. Przeczytaj o atakach opartych na CSS, aby uzyskać więcej informacji.\n\nNależy również pamiętać, że to szczególne ustawienie nie jest gwarantowane, jeśli inne zainstalowane rozszerzenie zmodyfikuje najpierw odpowiedź sieci." + }, + "optionsAdvancedStyleViaXhr": { + "message": "Tryb natychmiastowego wstrzyknięcia" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "Włącz tę opcję, jeśli napotkasz miganie niestylizowanej treści (FOUC) podczas przeglądania, co jest szczególnie zauważalne w przypadku ciemnych motywów.\n\nTechnicznym powodem jest to, że Chrome/Chromium odracza asynchroniczną komunikację rozszerzeń, co zwykle jest bezsensowną próbą przyspieszenia ładowania strony i może powodować spóźnienie zastosowania stylów. Aby to obejść, ponieważ rozszerzenia internetowe nie mają synchronicznego interfejsu API, Stylus udostępnia tę opcję, która umożliwia wykorzystanie \"przestarzałego\" synchronicznego sieciowego API XMLHttpRequest do pobierania odpowiednich stylów. Nie powinno to mieć żadnych negatywnych skutków, ponieważ żądanie jest realizowane w ciągu kilku milisekund, podczas gdy strona jest nadal pobierana z serwera.\n\nNiemniej jednak Chromium wyświetli ostrzeżenie w konsoli narzędzi dla programistów. Kliknięcie ostrzeżenia prawym przyciskiem myszy i ukrycie go zapobiegnie wyświetlaniu przyszłych ostrzeżeń." }, "optionsBadgeDisabled": { - "message": "Kolor tła po wyłączeniu", - "description": "" + "message": "Kolor tła po wyłączeniu" }, "optionsBadgeNormal": { - "message": "Kolor tła", - "description": "" + "message": "Kolor tła" }, "optionsCheck": { - "message": "Aktualizuj style", - "description": "" + "message": "Aktualizuj style" }, "optionsCheckUpdate": { - "message": "Sprawdź i zainstaluj wszystkie dostępne aktualizacje", - "description": "" + "message": "Sprawdź i zainstaluj wszystkie dostępne aktualizacje" }, "optionsCustomizeBadge": { - "message": "Emblemat na ikonie paska narzędzi", - "description": "" + "message": "Emblemat na ikonie paska narzędzi" }, "optionsCustomizeIcon": { - "message": "Ikona paska narzędzi", - "description": "" + "message": "Ikona paska narzędzi" }, "optionsCustomizePopup": { - "message": "Okno podręczne", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Aktualizacje", - "description": "" + "message": "Okno podręczne" }, "optionsCustomizeSync": { - "message": "Synchronizuj z chmurą", - "description": "" + "message": "Synchronizuj z chmurą" + }, + "optionsCustomizeUpdate": { + "message": "Aktualizacje" }, "optionsHeading": { - "message": "Opcje", - "description": "Heading for options section on manage page." + "message": "Opcje" }, "optionsIconDark": { - "message": "Ciemne motywy przeglądarki", - "description": "" + "message": "Ciemne motywy przeglądarki" }, "optionsIconLight": { - "message": "Jasne motywy przeglądarki", - "description": "" + "message": "Jasne motywy przeglądarki" }, "optionsOpen": { - "message": "Otwórz", - "description": "" + "message": "Otwórz" }, "optionsOpenManager": { - "message": "Zarządzaj stylami", - "description": "" + "message": "Zarządzaj stylami" }, "optionsPopupWidth": { - "message": "Szerokość okna (w pikselach)", - "description": "" + "message": "Szerokość okna (w pikselach)" }, "optionsReset": { - "message": "Zresetuj opcje do wartości domyślnych", - "description": "" + "message": "Zresetuj opcje do wartości domyślnych" }, "optionsResetButton": { - "message": "Resetuj opcje", - "description": "" + "message": "Resetuj opcje" + }, + "optionsStylusThemes": { + "message": "Znajdź motyw interfejsu Stylusa" }, "optionsSubheading": { - "message": "Więcej opcji", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "Podczas importowania kopii zapasowych stylu ze starej wersji lub ze Stylish jednorazowo sprawdź aktualizacje ręcznie w menedżerze stylów, aby upewnić się, że wszystkie style są zaktualizowane.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Interwał automatycznej aktualizacji stylu w godzinach (podaj 0, aby wyłączyć)", - "description": "" - }, - "optionsSyncNone": { - "message": "Brak", - "description": "" + "message": "Więcej opcji" }, "optionsSyncConnect": { - "message": "Połącz", - "description": "" + "message": "Połącz" }, "optionsSyncDisconnect": { - "message": "Rozłącz", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Synchronizuj teraz", - "description": "" + "message": "Rozłącz" }, "optionsSyncLogin": { - "message": "Logowanie", - "description": "" + "message": "Logowanie" + }, + "optionsSyncNone": { + "message": "Brak" + }, + "optionsSyncStatusConnected": { + "message": "Połączono" + }, + "optionsSyncStatusConnecting": { + "message": "Łączenie..." + }, + "optionsSyncStatusDisconnected": { + "message": "Rozłączono" + }, + "optionsSyncStatusDisconnecting": { + "message": "Rozłączanie..." }, "optionsSyncStatusPull": { "message": "Przyciąganie stylu $loaded$ z $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1071,7 +943,6 @@ }, "optionsSyncStatusPush": { "message": "Dostarczanie stylu $loaded$ z $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1081,265 +952,257 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "Sesja wygasła, proszę zalogować się ponownie." + }, "optionsSyncStatusSyncing": { - "message": "Synchronizowanie...", - "description": "" + "message": "Synchronizowanie..." }, - "optionsSyncStatusConnecting": { - "message": "Łączenie...", - "description": "" + "optionsSyncSyncNow": { + "message": "Synchronizuj teraz" }, - "optionsSyncStatusConnected": { - "message": "Połączono", - "description": "" + "optionsUpdateImportNote": { + "message": "Podczas importowania kopii zapasowych stylu ze starej wersji lub ze Stylish jednorazowo sprawdź aktualizacje ręcznie w menedżerze stylów, aby upewnić się, że wszystkie style są zaktualizowane." }, - "optionsSyncStatusDisconnecting": { - "message": "Rozłączanie...", - "description": "" + "optionsUpdateInterval": { + "message": "Interwał automatycznej aktualizacji stylu w godzinach (podaj 0, aby wyłączyć)" }, - "optionsSyncStatusDisconnected": { - "message": "Rozłączono", - "description": "" + "overwriteFileExport": { + "message": "Czy chcesz zastąpić istniejący plik?" }, "paginationCurrent": { - "message": "Bieżąca strona", - "description": "Tooltip for the current page index in search results" + "message": "Bieżąca strona" }, "paginationEstimated": { - "message": "Szacowana liczba stron", - "description": "Tooltip for the total page count in search results" + "message": "Szacowana liczba stron" }, "paginationNext": { - "message": "Następna strona", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Następna strona" }, "paginationPrevious": { - "message": "Poprzednia strona", - "description": "Tooltip for the '<-' button in search results" + "message": "Poprzednia strona" }, "paginationTotal": { - "message": "Wszystkie strony", - "description": "" + "message": "Wszystkie strony" }, "parseUsercssError": { - "message": "Stylusowi nie udało się sparsować usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylusowi nie udało się sparsować usercss:" }, "popupAutoResort": { - "message": "Przesortuj style w oknie podręcznym po przełączeniu", - "description": "Label for the checkbox controlling popup resorting." + "message": "Przesortuj style w oknie podręcznym po przełączeniu" }, "popupBorders": { - "message": "Dodaj białe obramowania po bokach", - "description": "" + "message": "Dodaj białe obramowania po bokach" }, "popupBordersTooltip": { - "message": "Przydaje się do ciemnych motywów w nowym Chrome, ponieważ nie maluje już bocznych krawędzi", - "description": "" + "message": "Przydaje się do ciemnych motywów w nowym Chrome, ponieważ nie maluje już bocznych krawędzi" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, również na klawiaturze numerycznej - przełącza n-ty styl (0 to 10)\n- przełącza pierwszy styl z nazwą zaczynającą się na literę\n otwiera edytor zamiast przełączać\n włącza wymienione style\n wyłącza wymienione style\n oraz <`> (grawis) - przełącza początkowo włączone style; nie ma zastosowania do później włączonych stylów, podczas gdy okienko podręczne jest otwarte, więc możesz przywrócić początkowy wybór po przetestowaniu: po prostu wyłącz wszystkie, a następnie przełącz, np. \nWięcej informacji na wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, również na klawiaturze numerycznej - przełącza n-ty styl (0 to 10)\n- przełącza pierwszy styl z nazwą zaczynającą się na literę\n otwiera edytor zamiast przełączać\n włącza wymienione style\n wyłącza wymienione style\n oraz <`> (grawis) - przełącza początkowo włączone style; nie ma zastosowania do później włączonych stylów, podczas gdy okienko podręczne jest otwarte, więc możesz przywrócić początkowy wybór po przetestowaniu: po prostu wyłącz wszystkie, a następnie przełącz, np. \nWięcej informacji na wiki" }, "popupHotkeysTooltip": { - "message": "Kliknij, aby zobaczyć dostępne skróty klawiszowe", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Kliknij, aby zobaczyć dostępne skróty klawiszowe" }, "popupManageTooltip": { - "message": "Shift + kliknięcie lub kliknięcie prawym przyciskiem otwiera menedżera ze stylami obowiązującymi dla bieżącej witryny", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift + kliknięcie lub kliknięcie prawym przyciskiem otwiera menedżera ze stylami obowiązującymi dla bieżącej witryny" }, "popupMenuButtonTooltip": { - "message": "Menu akcji", - "description": "Tooltip for menu button in popup." + "message": "Menu akcji" + }, + "popupOpenEditInPopup": { + "message": "Użyj prostego okna (bez omniboksu)" }, "popupOpenEditInWindow": { - "message": "Otwórz edytor w nowym oknie", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Otwórz edytor w nowym oknie" }, "popupOpenEditInWindowTooltip": { - "message": "Także włączone przez odłączenie karty edytora od okna przeglądarki,\nwyłączone przez dołączenie pojedynczej karty edytora do innego okna.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Także włączone przez odłączenie karty edytora od okna przeglądarki,\nwyłączone przez dołączenie pojedynczej karty edytora do innego okna." }, "popupStylesFirst": { - "message": "Style przed poleceniami", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Style przed poleceniami" }, "prefShowBadge": { - "message": "Liczba aktywnych stylów dla bieżącej witryny", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Liczba aktywnych stylów dla bieżącej witryny" }, "previewLabel": { - "message": "Podgląd na żywo", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Podgląd na żywo" }, "previewTooltip": { - "message": "Tymczasowo stosuje zmiany bez zapisywania.\nZapisz styl, aby zmiany stały się trwałe.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Tymczasowo stosuje zmiany bez zapisywania.\nZapisz styl, aby zmiany stały się trwałe." + }, + "publish": { + "message": "Opublikuj" + }, + "publishPush": { + "message": "Prześlij aktualizację" + }, + "publishReconnect": { + "message": "Spróbuj się rozłączyć, a następnie opublikuj ponownie" + }, + "publishRetry": { + "message": "Stylus nadal próbuje opublikować ten styl, ale możesz spróbować ponownie, jeśli nie widzisz żadnych działań związanych z uwierzytelnianiem ani wyskakujących okienek. Ponowić teraz?" + }, + "publishStyle": { + "message": "Opublikuj styl" + }, + "publishUsw": { + "message": "Używanie " + }, + "readingStyles": { + "message": "Odczytywanie stylów..." }, "reload": { - "message": "Przeładuj rozszerzenie Stylus", - "description": "Context menu reload" + "message": "Przeładuj rozszerzenie Stylus" }, "replace": { - "message": "Zamień", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Zamień" }, "replaceAll": { - "message": "Zamień wszystkie", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Zamień wszystkie" }, "replaceWith": { - "message": "Zamień na", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Zamień na" }, "retrieveBckp": { - "message": "Importuj style", - "description": "" + "message": "Importuj style" + }, + "retrieveDropboxSync": { + "message": "Importuj z Dropboksa" }, "search": { - "message": "Szukaj", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Szukaj" }, "searchCaseSensitive": { - "message": "Rozróżnianie wielkości liter", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Rozróżnianie wielkości liter" + }, + "searchGlobalStyles": { + "message": "Przeszukuj także style globalne" }, "searchNumberOfResults": { - "message": "Liczba dopasowań", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Liczba dopasowań" }, "searchNumberOfResults2": { - "message": "Liczba dopasowań w kodzie oraz dotyczących wartości", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Liczba dopasowań w kodzie oraz dotyczących wartości" }, "searchRegexp": { - "message": "Użyj składni /re/ dla wyszukiwania regexp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Użyj składni /re/ dla wyszukiwania regexp" }, "searchResultInstallCount": { - "message": "Całkowita liczba instalacji", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Całkowita liczba instalacji" }, "searchResultNoneFound": { - "message": "Nie znaleziono stylów dla tej witryny.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nie znaleziono stylów dla tej witryny." + }, + "searchResultNotMatching": { + "message": "Styl jest zainstalowany, ale nie ma zastosowania do bieżącego adresu URL witryny." + }, + "searchResultNotMatchingNote": { + "message": "Poproś autora tego stylu użytkownika o dodanie adresu URL.\n\nMożesz także otworzyć styl w menedżerze i samodzielnie go edytować,\nale pamiętaj, że wyłącza to automatyczne aktualizacje tego stylu." }, "searchResultRating": { - "message": "Ocena", - "description": "Text for label that shows the search result's rating" + "message": "Ocena" }, "searchResultUpdated": { - "message": "Zaktualizowano", - "description": "Text for label that shows the search result's last update date" + "message": "Zaktualizowano" }, "searchResultWeeklyCount": { - "message": "Tygodniowa liczba instalacji", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Tygodniowa liczba instalacji" }, - "searchStyles": { - "message": "Szukaj treści", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "Szukaj nazw stylów bez rozróżniania wielkości liter:\njakieś słowa - wszystkie słowa w dowolnej kolejności\n\"jakieś zdanie\" - dokładnie to zdanie bez cudzysłowów\n2020 - rok jak ten pokazuje również style zaktualizowane w 2020" + }, + "searchStylesAll": { + "message": "Wszystkie" + }, + "searchStylesCode": { + "message": "Kod CSS" }, "searchStylesHelp": { - "message": "Klawisz uaktywnia pole wyszukiwania.\nZwykły tekst: szukaj w nazwie, kodzie, adresie URL strony głównej oraz stosownych witrynach. Słowa zawierające mniej niż 3 litery są ignorowane.\nStyle pasujące do pełnego adresu URL: szukaj przy pomocy przedrostka , np. \nWyrażenia regularne: umieść ukośniki i flagi, np. \nDokładne słowa: zawiń zapytanie w podwójny cudzysłów, np. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Klawisz lub uaktywnia pole wyszukiwania.\nTryb domyślny to wyszukiwanie zwykłego tekstu dla wszystkich terminów oddzielonych spacjami w dowolnej kolejności.\nDokładne słowa: zawiń zapytanie w podwójne cudzysłowy, np. <\".header ~ div\">\nWyrażenia regularne: uwzględnij ukośniki i flagi, np. \n\"Według adresu URL\" w selektorze zakresu: znajduje style, które mają zastosowanie do w pełni określonego adresu URL, np. https://www.example.org/\n\"Metadane\" w selektorze zakresu: wyszukuje w nazwach, specyfikatorach „dotyczy”, adresie URL instalacji, adresie URL aktualizacji i całym bloku metadanych dla stylów usercss." + }, + "searchStylesMatchUrl": { + "message": "Według adresu URL" + }, + "searchStylesMeta": { + "message": "Metadane" + }, + "searchStylesName": { + "message": "Nazwa" }, "sectionAdd": { - "message": "Dodaj następną sekcję", - "description": "Label for the button to add a section" + "message": "Dodaj następną sekcję" }, "sectionCode": { - "message": "Kod", - "description": "Label for the code for a section" + "message": "Kod" }, "sectionRemove": { - "message": "Usuń sekcję", - "description": "Label for the button to remove a section" + "message": "Usuń sekcję" }, "sectionRestore": { - "message": "Przywróć usuniętą sekcję", - "description": "Label for the button to restore a removed section" + "message": "Przywróć usuniętą sekcję" + }, + "sections": { + "message": "Sekcje" }, "shortcuts": { - "message": "Skróty", - "description": "Go to shortcut configuration" + "message": "Skróty" }, "shortcutsNote": { - "message": "Zdefiniuj skróty klawiaturowe", - "description": "" + "message": "Zdefiniuj skróty klawiaturowe" }, "sortDateNewestFirst": { - "message": "najpierw najnowsze", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "najpierw najnowsze" }, "sortDateOldestFirst": { - "message": "najpierw najstarsze", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "najpierw najstarsze" }, "sortLabel": { - "message": "Wybierz sortowanie do zastosowania w zainstalowanych stylach", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Wybierz sortowanie do zastosowania w zainstalowanych stylach" }, "sortLabelTitleAsc": { - "message": "Tytuł rosnąco", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Tytuł rosnąco" }, "sortLabelTitleDesc": { - "message": "Tytuł malejąco", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Tytuł malejąco" }, "sortStylesHelp": { - "message": "Wybierz rodzaj sortowania, który zostanie zastosowany do zainstalowanych wpisów z listy sortowania. Ustawienie domyślne stosuje sortowanie rosnące (od A do Z) do tytułów wpisów. Sortowania w grupie \"Tytuł malejąco\" zastosują sortowanie malejące (od Z do A) do tytułu.\nIstnieją inne ustawienia, które umożliwiają sortowanie wpisów według wielu kryteriów. Pomyśl o tym jako o sortowaniu tabeli z wieloma kolumnami, a każda kategoria w zaznaczeniu (między znakami plus) reprezentuje kolumnę lub grupę.\nNa przykład, jeśli ustawienie ma wartość \"Włączone (pierwsze) + tytuł\", wpisy zostaną uporządkowane, tak aby wszystkie włączone pozycje zostały posortowane na początek listy, a następnie do każdego z nich zostanie dodane oddzielnie sortowanie tytułu rosnąco (od A do Z) włączonych i wyłączonych wpisów.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Wybierz rodzaj sortowania, który zostanie zastosowany do zainstalowanych wpisów z listy sortowania. Ustawienie domyślne stosuje sortowanie rosnące (od A do Z) do tytułów wpisów. Sortowania w grupie \"Tytuł malejąco\" zastosują sortowanie malejące (od Z do A) do tytułu.\nIstnieją inne ustawienia, które umożliwiają sortowanie wpisów według wielu kryteriów. Pomyśl o tym jako o sortowaniu tabeli z wieloma kolumnami, a każda kategoria w zaznaczeniu (między znakami plus) reprezentuje kolumnę lub grupę.\nNa przykład, jeśli ustawienie ma wartość \"Włączone (pierwsze) + tytuł\", wpisy zostaną uporządkowane, tak aby wszystkie włączone pozycje zostały posortowane na początek listy, a następnie do każdego z nich zostanie dodane oddzielnie sortowanie tytułu rosnąco (od A do Z) włączonych i wyłączonych wpisów." }, "sortStylesHelpTitle": { - "message": "Sortuj zawartość", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Sortuj zawartość" }, "styleBadRegexp": { - "message": "Regexp jest nieprawidłowe.", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp jest nieprawidłowe." }, "styleBeautify": { - "message": "Upiększ", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Upiększ" }, "styleBeautifyHint": { - "message": "Wskazówka: kliknij prawym przyciskiem myszy przycisk “Upiększ” lub użyj zdefiniowanego poniżej skrótu klawiaturowego, aby upiększyć bez pokazywania tego panelu", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "Wskazówka: kliknij prawym przyciskiem myszy przycisk “Upiększ” lub użyj zdefiniowanego poniżej skrótu klawiaturowego, aby upiększyć bez pokazywania tego panelu" }, "styleBeautifyIndentConditional": { - "message": "Wcięcie @media, @supports", - "description": "CSS-beautifier option" + "message": "Wcięcie @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Zachowaj nowe linie", - "description": "CSS-beautifier option" + "message": "Zachowaj nowe wiersze" }, "styleCancelEditLabel": { - "message": "Powróć do zarządzania", - "description": "Label for cancel button for style editing" + "message": "Powróć do zarządzania" }, "styleChangesNotSaved": { - "message": "Wprowadzono zmiany w tym stylu bez zapisywania.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Wprowadzono zmiany w tym stylu bez zapisywania." }, "styleEnabledLabel": { - "message": "Włączony", - "description": "Label for the enabled state of styles" + "message": "Włączony" }, "styleFromMozillaFormatError": { - "message": "Nie udało się zaimportować z formatu Mozilla", - "description": "Label for the import error" + "message": "Nie udało się zaimportować z formatu Mozilla" }, "styleFromMozillaFormatPrompt": { - "message": "Wprowadź kod w formacie Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Wprowadź kod w formacie Mozilla" }, "styleInstall": { "message": "Zainstalować '$stylename$' do Stylusa?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1348,7 +1211,6 @@ }, "styleInstallFailed": { "message": "Nie udało się zainstalować stylu!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1357,86 +1219,71 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' jest już zainstalowany. Zastąpić?\nWersja: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Wpisz nazwę", - "description": "Error displayed when user saves without providing a name" + "message": "Wpisz nazwę" }, "styleMozillaFormatHeading": { - "message": "Format Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Format Mozilla" + }, + "styleName": { + "message": "Nazwa stylu" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Styl nie został zastosowany z powodu nieprawidłowego użycia 'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Styl nie został zastosowany z powodu nieprawidłowego użycia 'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "Niektóre reguły 'regexp()', których nie można było w ogóle skompilować.", - "description": "" + "message": "Niektóre reguły 'regexp()', których nie można było w ogóle skompilować." }, "styleRegexpPartialExplanation": { - "message": "Ten styl wykorzystuje częściowo dopasowane regexpy z naruszeniem specyfikacji CSS4 @document, która wymaga pełnego dopasowania adresów URL. Dotyczących sekcji CSS nie zastosowano do strony. Ten styl prawdopodobnie powstał w Stylish-dla-Chrome, który nieprawidłowo sprawdza reguły 'regexp()' od pierwszej wersji (znany błąd).", - "description": "" + "message": "Ten styl wykorzystuje częściowo dopasowane regexpy z naruszeniem specyfikacji CSS4 @document, która wymaga pełnego dopasowania adresów URL. Dotyczących sekcji CSS nie zastosowano do strony. Ten styl prawdopodobnie powstał w Stylish-dla-Chrome, który nieprawidłowo sprawdza reguły 'regexp()' od pierwszej wersji (znany błąd)." }, "styleRegexpProblemTooltip": { - "message": "Liczba sekcji, które nie zostały zastosowane z powodu nieprawidłowego użycia 'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Liczba sekcji, które nie zostały zastosowane z powodu nieprawidłowego użycia 'regexp()'" }, "styleRegexpTestButton": { - "message": "Test RegExp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Test RegExp" }, "styleRegexpTestFull": { - "message": "Dopasowane karty", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Dopasowane karty" }, "styleRegexpTestInvalid": { - "message": "Nieprawidłowe regexpy pominięto", - "description": "RegExp test report: label for the invalid expressions" + "message": "Nieprawidłowe regexpy pominięto" }, "styleRegexpTestNone": { - "message": "Brak dopasowanych kart", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Brak dopasowanych kart" }, "styleRegexpTestNote": { - "message": "Uwaga: w polu wejściowym regexp użyj pojedynczego \\ jako znaku ucieczki, który zgodnie ze specyfikacją dla cudzysłowów w CSS zostanie automatycznie zamieniony na \\\\ w kodzie stylu.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Uwaga: w polu wejściowym regexp użyj pojedynczego \\ jako znaku ucieczki, który zgodnie ze specyfikacją dla cudzysłowów w CSS zostanie automatycznie zamieniony na \\\\ w kodzie stylu." }, "styleRegexpTestPartial": { - "message": "Niedopasowane zupełnie, więc pominięte", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Niedopasowane zupełnie, więc pominięte" }, "styleRegexpTestTitle": { - "message": "Lista dopasowanych otwartych kart (kliknij URL, aby ustawić kartę)", - "description": "RegExp test report: title of the report" + "message": "Lista dopasowanych otwartych kart (kliknij URL, aby ustawić kartę)" }, "styleSaveLabel": { - "message": "Zapisz", - "description": "Label for save button for style editing" + "message": "Zapisz" }, "styleToMozillaFormatHelp": { - "message": "Kod w formacie Mozilla może być przesłany do userstyles.org i użyty z klasycznym dodatkiem Stylish dla Firefoksa", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Kod w formacie Mozilla może być przesłany do userstyles.org i użyty z klasycznym dodatkiem Stylish dla Firefoksa" }, "styleToMozillaFormatTitle": { - "message": "Styl w formacie Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Styl w formacie Mozilla" }, "styleUpdate": { "message": "Czy na pewno chcesz zaktualizować '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1444,72 +1291,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "Styl zmieniono poza edytorem. Czy chcesz przeładować styl?", - "description": "Confirmation to update the style in the editor" + "message": "Styl zmieniono poza edytorem. Czy chcesz przeładować styl?" }, "stylusUnavailableForURL": { - "message": "Stylus nie działa na takich stronach.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus nie działa na takich stronach." }, "stylusUnavailableForURLdetails": { - "message": "Ze względów bezpieczeństwa przeglądarka nie zezwala, aby rozszerzenia wpływały na wbudowane strony (np. chrome://version, standardowa strona nowej karty od Chrome 61, about:addons itd.), a także na inne strony rozszerzeń. Każda przeglądarka ogranicza również dostęp do własnej galerii rozszerzeń (np. Chrome Web Store lub AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Ze względów bezpieczeństwa przeglądarka nie zezwala, aby rozszerzenia wpływały na wbudowane strony (np. chrome://version, standardowa strona nowej karty od Chrome 61, about:addons itd.), a także na inne strony rozszerzeń. Każda przeglądarka ogranicza również dostęp do własnej galerii rozszerzeń (np. Chrome Web Store lub AMO)." + }, + "syncDropboxDeprecated": { + "message": "Importowanie i eksportowanie związane z Dropboksem zostaje zastąpione bardziej zaawansowaną synchronizacją stylów na stronie opcji." + }, + "syncDropboxStyles": { + "message": "Eksportuj do Dropboksa" + }, + "syncError": { + "message": "Synchronizacja nie powiodła się" + }, + "syncErrorRelogin": { + "message": "Synchronizacja nie powiodła się.\nSpróbuj ponownie zalogować się w opcjach Stylusa:\nkliknij najpierw 'rozłącz' , następnie 'połącz'." }, "syncStorageErrorSaving": { - "message": "Nie można zapisać wartości. Spróbuj zmniejszyć ilość tekstu.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Nie można zapisać wartości. Spróbuj zmniejszyć ilość tekstu." }, "toggleStyle": { - "message": "Przełącz styl", - "description": "Label for the checkbox to enable/disable a style" + "message": "Przełącz styl" }, "undo": { - "message": "Cofnij", - "description": "Button label" + "message": "Cofnij" }, "undoGlobal": { - "message": "Cofnij we wszystkich sekcjach", - "description": "CSS-beautify global Undo button label" + "message": "Cofnij we wszystkich sekcjach" }, "unreachableAMO": { - "message": "Firefox zabrania dostępu do witryny.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox zabrania dostępu do witryny." }, "unreachableAMOHint": { - "message": "Aby umożliwić dostęp, otwórz , kliknij listę prawym przyciskiem myszy, kliknij 'Dodaj ustawienie typu', następnie 'Wartość logiczna (Boolean)', wklej i kliknij OK, , OK, przeładuj stronę .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "W Firefox 60 lub nowszym będziesz musiał również usunąć domenę AMO z w .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Tylko Firefox 59 i nowsze wersje mogą zostać skonfigurowane, aby umożliwić rozszerzeniom WebExtension dodawanie elementów stylu na stronach chronionych przez CSP takich jak ta.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Aby umożliwić dostęp, otwórz , kliknij listę prawym przyciskiem myszy, kliknij 'Dodaj ustawienie typu', następnie 'Wartość logiczna (Boolean)', wklej i kliknij OK, , OK, przeładuj stronę ." }, "unreachableContentScript": { - "message": "Nie można połączyć się ze stroną. Spróbuj przeładować kartę.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Nie można połączyć się ze stroną. Spróbuj przeładować kartę." }, "unreachableFileHint": { - "message": "Stylus może uzyskać dostęp do adresów URL file:// tylko po włączeniu odpowiedniego pola wyboru rozszerzenia Stylus na stronie chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus może uzyskać dostęp do adresów URL file:// tylko po włączeniu odpowiedniego pola wyboru rozszerzenia Stylus na stronie chrome://extensions." }, - "InaccessibleFileHint": { - "message": "Stylus nie ma dostępu do niektórych typów plików (na przykład plików pdf i json).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "W Firefox 60 i nowszych musisz usunąć tę domenę z w ." + }, + "unreachableMozSiteHintOldFF": { + "message": "Tylko Firefox 59 i nowsze mogą być skonfigurowane tak, aby zezwalały WebExtensions na dodawanie elementów stylu w witrynach chronionych przez CSP, takich jak ta." + }, + "unzipStyles": { + "message": "Wypakowanie stylów..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Nie znaleziono aktualizacji.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Nie znaleziono aktualizacji." }, "updateAllCheckSucceededSomeEdited": { - "message": "Niektóre, nadające się do aktualizacji, style nie były sprawdzone, aby uniknąć ewentualnej utraty lokalnych zmian. Aktualizacje mogą być wymuszone przez sprawdzanie pojedynczo lub przez uruchomienie innego sprawdzenia wszystkich stylów (lokalne zmiany zostaną nadpisane).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Niektóre, nadające się do aktualizacji, style nie były sprawdzone, aby uniknąć ewentualnej utraty lokalnych zmian. Aktualizacje mogą być wymuszone przez sprawdzanie pojedynczo lub przez uruchomienie innego sprawdzenia wszystkich stylów (lokalne zmiany zostaną nadpisane)." }, "updateCheckFailBadResponseCode": { "message": "Aktualizacja się nie powiodła: serwer odpowiedział kodem $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1517,127 +1359,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Aktualizacja się nie powiodła: serwer nieosiągalny.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Aktualizacja się nie powiodła: serwer nieosiągalny." }, "updateCheckHistory": { - "message": "Historia sprawdzania aktualizacji", - "description": "" + "message": "Historia sprawdzania aktualizacji" }, "updateCheckManualUpdateForce": { - "message": "Zainstaluj aktualizację (lokalne zmiany zostaną nadpisane)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Zainstaluj aktualizację (lokalne zmiany zostaną nadpisane)" }, "updateCheckManualUpdateHint": { - "message": "Wymuszenie aktualizacji spowoduje nadpisanie wszelkich lokalnych zmian.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Wymuszenie aktualizacji spowoduje nadpisanie wszelkich lokalnych zmian." }, "updateCheckSkippedLocallyEdited": { - "message": "Ten styl był edytowany lokalnie.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Ten styl był edytowany lokalnie." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Ten styl mógł być edytowany lokalnie.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Ten styl mógł być edytowany lokalnie." }, "updateCheckSucceededNoUpdate": { - "message": "Styl jest aktualny.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Styl jest aktualny." }, "updateCompleted": { - "message": "Aktualizacja zakończona.", - "description": "Text that displays when an update completed" + "message": "Aktualizacja zakończona." }, "updatesCurrentlyInstalled": { - "message": "Zainstalowane aktualizacje:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Proszę zmienić wartość @name lub @namespace, aby uniknąć nadpisania istniejącego stylu.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Styl został zaktualizowany lub usunięty po wyświetleniu okna dialogowego konfiguracji. Te zmienne nie zostały zapisane, aby uniknąć uszkodzenia metadanych stylu:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Określ @name w kodzie", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Zastąpić domyślny szablon dla nowych stylów Usercss aktualnym kodem?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Puste @name zastępuje szablon domyślny", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Wstaw kod tutaj...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Wersja jest starsza niż zainstalowany styl.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Napisz styl dla:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "tego adresu URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Eksportuj do Dropboksa", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Importowanie i eksportowanie związane z Dropboksem zostaje zastąpione bardziej zaawansowaną synchronizacją stylów na stronie opcji.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Importuj z Dropboksa", - "description": "" - }, - "overwriteFileExport": { - "message": "Czy chcesz zastąpić istniejący plik?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Plik zapisany z powodzeniem", - "description": "" - }, - "noFileToImport": { - "message": "Aby zaimportować style, należy je najpierw wyeksportować.", - "description": "" - }, - "connectingDropbox": { - "message": "Łączenie z Dropboksem...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Nawiązywanie połączeń z Dropboksem jest dostępne tylko w aplikacjach zainstalowanych bezpośrednio ze sklepu internetowego", - "description": "" - }, - "gettingStyles": { - "message": "Uzyskiwanie wszystkich stylów...", - "description": "" - }, - "zipStyles": { - "message": "Pakowanie stylów...", - "description": "" - }, - "unzipStyles": { - "message": "Wypakowanie stylów...", - "description": "" - }, - "readingStyles": { - "message": "Odczytywanie stylów...", - "description": "" + "message": "Zainstalowane aktualizacje:" }, "uploadingFile": { - "message": "Wysyłanie stylów...", - "description": "" + "message": "Wysyłanie stylów..." + }, + "usercssAvoidOverwriting": { + "message": "Proszę zmienić wartość @name lub @namespace, aby uniknąć nadpisania istniejącego stylu." + }, + "usercssConfigIncomplete": { + "message": "Styl został zaktualizowany lub usunięty po wyświetleniu okna dialogowego konfiguracji. Te zmienne nie zostały zapisane, aby uniknąć uszkodzenia metadanych stylu:" + }, + "usercssEditorNamePlaceholder": { + "message": "Określ @name w kodzie" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Zastąpić domyślny szablon dla nowych stylów Usercss aktualnym kodem?" + }, + "usercssReplaceTemplateName": { + "message": "Puste @name zastępuje szablon domyślny" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Wstaw kod tutaj..." + }, + "versionInvalidOlder": { + "message": "Wersja jest starsza niż zainstalowany styl." + }, + "writeStyleFor": { + "message": "Napisz styl dla:" + }, + "writeStyleForURL": { + "message": "tego adresu URL" + }, + "zipStyles": { + "message": "Pakowanie stylów..." } } diff --git a/_locales/pt_BR/messages.json b/_locales/pt_BR/messages.json index ba33f129..24a7bbf4 100644 --- a/_locales/pt_BR/messages.json +++ b/_locales/pt_BR/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus não pode acessar alguns tipos de arquivos (ex: arquivos pdf e json)." + }, "addStyleLabel": { - "message": "Gravar novo estilo", - "description": "Label for the button to go to the add style page" + "message": "Escrever novo estilo" }, "addStyleTitle": { - "message": "Adicionar estilo", - "description": "Title of the page for adding styles" + "message": "Adicionar estilo" }, "alphaChannel": { - "message": "Opacidade", - "description": "Label of color's opacity" + "message": "Opacidade" }, "appliesAdd": { - "message": "Adicionar", - "description": "Label for the button to add an 'applies' entry" + "message": "Adicionar" }, "appliesDisplay": { "message": "Aplica-se a: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,172 +23,237 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "e mais", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "e mais" }, "appliesDomainOption": { - "message": "URLs no domínio", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs no domínio" }, "appliesHelp": { - "message": "Use os controles \"Aplica-se a\" para limitar a quais URLs o código desta seção se aplica.", - "description": "Help text for 'applies to' section" + "message": "Use os controles \"Aplica-se a\" para limitar a quais URLs o código desta seção se aplica." }, "appliesLabel": { - "message": "Aplica-se a", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Aplica-se a" + }, + "appliesLineWidgetLabel": { + "message": "Mostrar informações de \"Aplica-se a\"" + }, + "appliesLineWidgetWarning": { + "message": "Não funciona com CSS minificado" }, "appliesRegexpOption": { - "message": "URLs que correspondem a regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs que correspondem a regexp" }, "appliesRemove": { - "message": "Remover", - "description": "Label for the button to remove an 'applies' entry" + "message": "Remover" + }, + "appliesRemoveError": { + "message": "Não é possível remover a última entrada de 'aplica-se a'" }, "appliesSpecify": { - "message": "Especificar", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Especificar" }, "appliesToEverything": { - "message": "Tudo", - "description": "Text displayed for styles that apply to all sites" + "message": "Tudo" }, "appliesUrlPrefixOption": { - "message": "URLs que começam com", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLs que começam com" }, "applyAllUpdates": { - "message": "Aplicar todas as atualizações", - "description": "Label for the button to apply all detected updates" + "message": "Aplicar todas as atualizações" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupMessage": { - "message": "Selecione um arquivo ou arraste e solte nessa página.", - "description": "Message for backup" + "message": "Selecione um arquivo ou arraste e solte nessa página." }, "bckpInstStyles": { - "message": "Exportar estilos", - "description": "" + "message": "Exportar estilos" }, "checkAllUpdates": { - "message": "Verificar atualizações para todos os estilos", - "description": "Label for the button to check all styles for updates" + "message": "Verificar atualizações para todos os estilos" }, "checkAllUpdatesForce": { - "message": "Check novamente, eu não editei nenhum estilo! ", - "description": "Label for the button to apply all detected updates" + "message": "Check novamente, eu não editei nenhum estilo! " }, "checkForUpdate": { - "message": "Verificar atualizações", - "description": "Label for the button to check a single style for an update" + "message": "Verificar atualizações" }, "checkingForUpdate": { - "message": "Verificando...", - "description": "Text to display when checking a style for an update" + "message": "Verificando..." }, "clickToUninstall": { - "message": "Clique para desistalar", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Clique para desistalar" + }, + "cm_autoCloseBrackets": { + "message": "Auto fechar parênteses, colchetes e aspas" + }, + "cm_autoCloseBracketsTooltip": { + "message": "Adicione automaticamente um par de fechamento ao digitar uma abertura de ()[]{}''\"\"" + }, + "cm_autocompleteOnTyping": { + "message": "Autocompletar ao digitar" + }, + "cm_colorpicker": { + "message": "Colorpickers para cores CSS" + }, + "cm_indentWithTabs": { + "message": "Usar tabs com indentação inteligente" + }, + "cm_keyMap": { + "message": "Mapeamentos de teclado" + }, + "cm_lineWrapping": { + "message": "Quebra de linha" + }, + "cm_linter": { + "message": "Linter CSS" + }, + "cm_matchHighlight": { + "message": "Destaque" + }, + "cm_matchHighlightSelection": { + "message": "Somente seleção" + }, + "cm_matchHighlightToken": { + "message": "Token sob cursor" + }, + "cm_resizeGripHint": { + "message": "Duplo clique para maximizar/restaurar a altura" + }, + "cm_selectByTokens": { + "message": "Clicar duas vezes seleciona tokens" + }, + "cm_smartIndent": { + "message": "Usar indentação inteligente" + }, + "cm_tabSize": { + "message": "Tamanho da guia" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" + }, + "colorpickerPaletteHint": { + "message": "Clique com o botão direito em uma amostra para percorrer suas linhas de código" + }, + "colorpickerSwitchFormatTooltip": { + "message": "Inverter formatos: HEX -> RGB -> HSL.\nShift-click para inverter a direção.\nTambém por meio das teclas PgUp (PageUp), PgDn (PageDown)." + }, + "colorpickerTooltip": { + "message": "Abrir seletor de cores" + }, + "configOnChange": { + "message": "ao alterar" + }, + "configOnChangeTooltip": { + "message": "Salvar e aplicar mudanças automaticamente" }, "configureStyle": { - "message": "Configurar", - "description": "Label for the button to configure usercss userstyle" + "message": "Configurar" }, "configureStyleOnHomepage": { - "message": "Configurar a página inicial", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configurar a página inicial" }, "confirmCancel": { - "message": "Cancelar", - "description": "" + "message": "Cancelar" }, "confirmClose": { - "message": "Fechar", - "description": "'Close' button in a confirm dialog" + "message": "Fechar" }, "confirmDefault": { - "message": "Usar padrão ", - "description": "'Set to default' button in a confirm dialog" + "message": "Usar padrão " }, "confirmDelete": { - "message": "Deletar", - "description": "" + "message": "Deletar" }, "confirmDiscardChanges": { - "message": "Descartar as mudanças?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Descartar as mudanças?" }, "confirmNo": { - "message": "Não", - "description": "'No' button in a confirm dialog" + "message": "Não" }, "confirmSave": { - "message": "Salvar", - "description": "'Save' button in a confirm dialog" + "message": "Salvar" }, "confirmStop": { - "message": "Parar", - "description": "'Stop' button in a confirm dialog" + "message": "Parar" }, "confirmYes": { - "message": "Sim", - "description": "'Yes' button in a confirm dialog" + "message": "Sim" + }, + "connectingDropbox": { + "message": "Conectando ao Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Conectar ao Dropbox somente é disponível em apps instalados diretamente da loja web" + }, + "copied": { + "message": "Copiado para a área de transferência" + }, + "copy": { + "message": "Copiar para a área de transferência" + }, + "customNameHint": { + "message": "Digite um nome personalizado para renomear o estilo na UI sem quebrar suas atualizações" + }, + "customNameResetHint": { + "message": "Deixar de usar o nome personalizado, usar o próprio nome do estilo" + }, + "dateAbbrYear": { + "message": "$value$a", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "Data instalada ", - "description": "Option text for the user to sort the style by install date" + "message": "Data instalada " }, "dateUpdated": { - "message": "Data atualizada", - "description": "Option text for the user to sort the style by last update date" + "message": "Data atualizada" + }, + "dbError": { + "message": "Não foi possível usar a base de dados do Stylus. Deseja visitar uma página da web com possíveis soluções?" }, "defaultTheme": { - "message": "padrão", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "padrão" }, "deleteStyleConfirm": { - "message": "Tem certeza de que deseja excluir este estilo?", - "description": "Confirmation before deleting a style" + "message": "Tem certeza de que deseja excluir este estilo?" }, "deleteStyleLabel": { - "message": "Excluir", - "description": "Label for the button to delete a style" + "message": "Excluir" }, "description": { - "message": "Mude o estilo da web com o Stylus, um gerenciador de estilos do usuário. O Stylus permite instalar facilmente temas e skins para Google, Facebook, YouTube, Orkut e muitos, muitos outros sites.", - "description": "Extension description" + "message": "Mude o estilo da web com o Stylus, um gerenciador de estilos do usuário. O Stylus permite instalar facilmente temas e skins para vários sites populares." }, "disableAllStyles": { - "message": "Desativar todos os estilos", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Desativar todos os estilos" }, "disableStyleLabel": { - "message": "Desativar", - "description": "Label for the button to disable a style" + "message": "Desativar" + }, + "dragDropMessage": { + "message": "Arraste seu arquivo de backup em qualquer lugar nessa página para importá-lo." + }, + "dragDropUsercssTabstrip": { + "message": "Para instalar o arquivo, solte-o na linha das abas (a área onde os títulos das abas são mostrados)." + }, + "editDeleteText": { + "message": "Apagar" }, "editGotoLine": { - "message": "Ir para linha (ou linha:coluna)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Ir para linha (ou linha:coluna)" }, "editStyleHeading": { - "message": "Editar estilo", - "description": "Title of the page for editing styles" + "message": "Editar estilo" }, "editStyleLabel": { - "message": "Editar", - "description": "Label for the button to go to the edit style page" + "message": "Editar" }, "editStyleTitle": { "message": "Editar estilo $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -198,144 +261,477 @@ } }, "enableStyleLabel": { - "message": "Ativar", - "description": "Label for the button to enable a style" + "message": "Ativar" + }, + "excludeStyleByDomainLabel": { + "message": "Excluir o domínio atual" + }, + "excludeStyleByUrlLabel": { + "message": "Excluir a URL atual" }, "exportLabel": { - "message": "Exportar ", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportar " + }, + "exportSavedSuccess": { + "message": "Arquivo salvo com sucesso" + }, + "externalFeedback": { + "message": "Comentários" + }, + "externalHomepage": { + "message": "Página inicial" + }, + "externalLink": { + "message": "Link externo" + }, + "externalSupport": { + "message": "Suporte" + }, + "externalUsercssDocument": { + "message": "Documentação do UserCSS" + }, + "filteredStyles": { + "message": "$numShown$ mostrados de $numTotal$ total", + "placeholders": { + "numShown": { + "content": "$1" + }, + "numTotal": { + "content": "$2" + } + } + }, + "filteredStylesAllHidden": { + "message": "Filtros aplicados não correspondem a nenhum estilo" + }, + "findStyles": { + "message": "Encontrar estilos" }, "findStylesForSite": { - "message": "Procurar mais estilos para este site", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Procurar mais estilos para este site" + }, + "findStylesInline": { + "message": "Em linha" + }, + "findStylesInlineTooltip": { + "message": "Mostrar resultados dentro dessa janela" + }, + "genericAdd": { + "message": "Adicionar" + }, + "genericClone": { + "message": "Clonar" + }, + "genericDisabledLabel": { + "message": "Desativado" + }, + "genericEnabledLabel": { + "message": "Ativado" + }, + "genericError": { + "message": "Erro" + }, + "genericHistoryLabel": { + "message": "Histórico" + }, + "genericNext": { + "message": "Próximo" + }, + "genericPrevious": { + "message": "Anterior" + }, + "genericResetLabel": { + "message": "Redefinir" + }, + "genericSavedMessage": { + "message": "Salvo" + }, + "genericTitle": { + "message": "Título" + }, + "genericUnknown": { + "message": "Desconhecido" + }, + "gettingStyles": { + "message": "Obtendo todos os estilos..." }, "helpAlt": { - "message": "Ajuda", - "description": "Alternate text for help buttons" + "message": "Ajuda" + }, + "helpKeyMapCommand": { + "message": "Digite um comando aqui" + }, + "helpKeyMapHotkey": { + "message": "Pressione uma tecla de atalho" + }, + "hostDisabled": { + "message": "Este hospedeiro foi desabilitado devido a um bug na versão atual que o navegador utilizado se encontra" }, "importAppendLabel": { - "message": "Anexar ao estilo", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Anexar ao estilo" }, "importAppendTooltip": { - "message": "Anexar o estilo importado ao atual", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Anexar o estilo importado ao atual" }, "importLabel": { - "message": "Importar", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importar" + }, + "importPreprocessor": { + "message": "Estilos com @preprocessor não irão funcionar no modo clássico. Você pode trocar o editor para o modo UserCSS: 1) abre o gerenciador de estilos, 2) ative a caixa \"como UserCSS\", 3) clique \"Escrever novo estilo\"\n\nDeseja importar mesmo assim?" + }, + "importPreprocessorTitle": { + "message": "Possível problema causado pelo @preprocessor" }, "importReplaceLabel": { - "message": "Sobrescrever estilo", - "description": "Label for the button to import and overwrite current style" + "message": "Sobrescrever estilo" + }, + "importReplaceTooltip": { + "message": "Descartar conteúdo do estilo atual e sobrescreve-lo com o estilo importado" + }, + "importReportLegendAdded": { + "message": "adicionado" + }, + "importReportLegendIdentical": { + "message": "idênticos pulados" + }, + "importReportLegendInvalid": { + "message": "inválidos pulados" + }, + "importReportLegendUpdatedBoth": { + "message": "tiveram o meta e código atualizados" + }, + "importReportLegendUpdatedCode": { + "message": "código atualizado" + }, + "importReportLegendUpdatedMeta": { + "message": "tiveram o meta atualizados" + }, + "importReportTitle": { + "message": "Importação de estilos finalizada" + }, + "importReportUnchanged": { + "message": "Nada foi alterado." + }, + "importReportUndone": { + "message": "estilos foram revertidos" + }, + "importReportUndoneTitle": { + "message": "A importação foi desfeita" + }, + "installButton": { + "message": "Instalar estilo" + }, + "installButtonInstalled": { + "message": "Estilo instalado" + }, + "installButtonReinstall": { + "message": "Reinstalar estilo" + }, + "installButtonUpdate": { + "message": "Atualizar estilo" }, "installUpdate": { - "message": "Instalar atualização", - "description": "Label for the button to install an update for a single style" + "message": "Instalar atualização" + }, + "installUpdateFrom": { + "message": "Atualmente, o estilo é atualizado de $url$", + "placeholders": { + "url": { + "content": "$1" + } + } + }, + "installUpdateFromLabel": { + "message": "Verificar se há atualizações" + }, + "license": { + "message": "Licensa" + }, + "linkGetHelp": { + "message": "Buscar ajuda" + }, + "linkGetStyles": { + "message": "Obter estilos" + }, + "linkTranslate": { + "message": "Traduzir" + }, + "linterCSSLintIncompatible": { + "message": "CSSLint não suporta o pré-processador $preprocessorname$", + "placeholders": { + "preprocessorname": { + "content": "$1" + } + } + }, + "linterCSSLintSettings": { + "message": "(Definir regra como: 0 = desativado; 1 = aviso; 2 = erro)" + }, + "linterConfigPopupTitle": { + "message": "Configurar regras do $linter$", + "placeholders": { + "linter": { + "content": "$1" + } + } + }, + "linterConfigTooltip": { + "message": "Clique para configurar esse linter" + }, + "linterInvalidConfigError": { + "message": "Não foi possível salvar devido às seguintes configurações inválidas:" + }, + "linterIssues": { + "message": "Problemas" + }, + "linterIssuesHelp": { + "message": "Esses problemas foram encontrados por $link$:", + "placeholders": { + "link": { + "content": "$1" + } + } + }, + "linterJSONError": { + "message": "Formato JSON inválido" + }, + "linterResetMessage": { + "message": "Para desfazer redefinições acidentais, pressione Ctrl-Z (ou Cmd-Z) na caixa de texto" + }, + "linterRulesLink": { + "message": "Ver uma lista completa de regras" + }, + "liveReloadError": { + "message": "Não foi possível assistir o arquivo" + }, + "liveReloadInstallHint": { + "message": "Mantenha esta guia aberta para atualizar automaticamente o estilo sob mudanças externas." + }, + "liveReloadInstallHintFF": { + "message": "Mantenha juntamente esta guia e a guia original abertas para atualizar automaticamente o estilo sob mudanças externas." + }, + "manageFilters": { + "message": "Filtros" }, "manageHeading": { - "message": "Estilos instalados", - "description": "Heading for the manage page" + "message": "Estilos instalados" + }, + "manageNewStyleAsUsercss": { + "message": "como UserCSS" + }, + "manageOnlyDisabled": { + "message": "Somente estilos desativados" + }, + "manageOnlyEnabled": { + "message": "Apenas estilos habilitados" + }, + "manageOnlyNonUsercss": { + "message": "Apenas estilos sem UserCSS" + }, + "manageOnlyUsercss": { + "message": "Apenas estilos com UserCSS" + }, + "meta_invalidNumber": { + "message": "Espera-se um número" + }, + "meta_invalidRange": { + "message": "@var inválido $type$: valor deve ser um número ou um vetor", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidString": { + "message": "Espera-se um texto entre aspas" + }, + "meta_invalidWord": { + "message": "Espera-se uma palavra" + }, + "meta_missingChar": { + "message": "Caracteres esperados: $chars$", + "placeholders": { + "chars": { + "content": "$1" + } + } + }, + "meta_missingMandatory": { + "message": "Metadata obrigatório não encontrado: $keys$", + "placeholders": { + "keys": { + "content": "$1" + } + } + }, + "meta_unknownMeta": { + "message": "Metadata desconhecido: $key$", + "placeholders": { + "key": { + "content": "$1" + } + } + }, + "meta_unknownVarType": { + "message": "Tipo desconhecido da variável @$varkey$: $vartype$", + "placeholders": { + "varkey": { + "content": "$1" + }, + "vartype": { + "content": "$2" + } + } + }, + "noFileToImport": { + "message": "Para importar seus estilos, você deve exportar primeiro." }, "noStylesForSite": { - "message": "Nenhum estilo instalado para este site.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nenhum estilo instalado para este site." }, "openManage": { - "message": "Gerenciar estilos instalados", - "description": "Link to open the manage page." + "message": "Gerenciar estilos instalados" + }, + "openOptions": { + "message": "Opções" + }, + "openStylesManager": { + "message": "Abrir gerenciador de estilos" }, "optionsActions": { - "message": "Ações", - "description": "" + "message": "Ações" + }, + "optionsAdvancedNewStyleAsUsercss": { + "message": "Escrever novo estilo como UserCSS" }, "optionsBadgeDisabled": { - "message": "Cor de fundo quando desativado", - "description": "" + "message": "Cor de fundo quando desativado" }, "optionsBadgeNormal": { - "message": "Cor de fundo", - "description": "" + "message": "Cor de fundo" }, "optionsCheck": { - "message": "Atualizar estilos", - "description": "" + "message": "Atualizar estilos" + }, + "optionsCheckUpdate": { + "message": "Verifique e instale todas as atualizações disponíveis" + }, + "optionsCustomizeSync": { + "message": "Sincronizar para a nuvem" + }, + "optionsCustomizeUpdate": { + "message": "Atualizações" }, "optionsHeading": { - "message": "Opções", - "description": "Heading for options section on manage page." + "message": "Opções" }, "optionsOpen": { - "message": "Abrir", - "description": "" + "message": "Abrir" + }, + "optionsOpenManager": { + "message": "Gerenciar estilos" + }, + "optionsPopupWidth": { + "message": "Largura do popup (em pixels)" }, "optionsSubheading": { - "message": "Mais Opções", - "description": "Subheading for options section on manage page." + "message": "Mais Opções" + }, + "optionsSyncConnect": { + "message": "Conectar" + }, + "optionsSyncDisconnect": { + "message": "Desconectar" + }, + "optionsSyncNone": { + "message": "Nenhum" + }, + "optionsSyncStatusConnected": { + "message": "Conectado" + }, + "optionsSyncStatusConnecting": { + "message": "Conectando..." + }, + "optionsSyncStatusDisconnected": { + "message": "Desconectado" + }, + "optionsSyncStatusDisconnecting": { + "message": "Desconectando..." + }, + "optionsSyncStatusSyncing": { + "message": "Sincronizando..." + }, + "optionsSyncSyncNow": { + "message": "Sincronizar agora" + }, + "overwriteFileExport": { + "message": "Você gostaria de substituir um arquivo existente?" + }, + "parseUsercssError": { + "message": "Não foi possível analisar o UserCSS:" }, "prefShowBadge": { - "message": "Show number of styles active for the current site on the toolbar button", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Número de estilos ativos para o site atual" + }, + "readingStyles": { + "message": "Lendo estilos..." + }, + "reload": { + "message": "Recarregar a extensão do Stylus" }, "replace": { - "message": "Substituir", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Substituir" }, "replaceAll": { - "message": "Substituir todos", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Substituir todos" }, "replaceWith": { - "message": "Substituir com", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Substituir com" }, "retrieveBckp": { - "message": "Importar estilos", - "description": "" + "message": "Importar estilos" + }, + "retrieveDropboxSync": { + "message": "Importar do Dropbox" }, "search": { - "message": "Buscar", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Buscar" }, - "searchStyles": { - "message": "Buscar conteúdos", - "description": "Label for the search filter textbox on the Manage styles page" + "searchRegexp": { + "message": "Use a sintaxe /re/ para busca por regexp" }, "sectionAdd": { - "message": "Adicionar outra seção", - "description": "Label for the button to add a section" + "message": "Adicionar outra seção" }, "sectionCode": { - "message": "Código", - "description": "Label for the code for a section" + "message": "Código" }, "sectionRemove": { - "message": "Remover seção", - "description": "Label for the button to remove a section" + "message": "Remover seção" + }, + "shortcuts": { + "message": "Atalhos" }, "styleBadRegexp": { - "message": "Expressão regular é inválida", - "description": "Validation message for a bad regexp in a style" + "message": "Expressão regular é inválida" }, "styleBeautify": { - "message": "Embelezar", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Embelezar" + }, + "styleBeautifyHint": { + "message": "Dica: clique com o botão direito no botão \"Embelezar\" ou use o atalho de teclado definido para embelezar sem mostrar esse painel" }, "styleCancelEditLabel": { - "message": "Voltar ao gerenciamento", - "description": "Label for cancel button for style editing" + "message": "Voltar ao gerenciamento" }, "styleChangesNotSaved": { - "message": "Você fez alterações neste estilo sem salvar.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Você fez alterações neste estilo sem salvar." }, "styleEnabledLabel": { - "message": "Ativado", - "description": "Label for the enabled state of styles" + "message": "Ativado" }, "styleInstall": { "message": "Instalar \"$stylename$\" no Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -343,36 +739,42 @@ } }, "styleMissingName": { - "message": "Insira um nome", - "description": "Error displayed when user saves without providing a name" + "message": "Insira um nome" }, "styleMozillaFormatHeading": { - "message": "Formato Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Formato Mozilla" }, "styleSaveLabel": { - "message": "Salvar", - "description": "Label for save button for style editing" + "message": "Salvar" }, "styleToMozillaFormatHelp": { - "message": "O formato Mozilla do código pode ser usado com o Stylish para Firefox e pode ser enviado para userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "O formato Mozilla do código pode ser usado com o Stylish para Firefox e pode ser enviado para userstyles.org." + }, + "styleUpdate": { + "message": "Você tem certeza que quer atualizar '$stylename$'?", + "placeholders": { + "stylename": { + "content": "$1" + } + } + }, + "syncDropboxStyles": { + "message": "Exportar para Dropbox" }, "undo": { - "message": "Desfazer", - "description": "Button label" + "message": "Desfazer" }, "undoGlobal": { - "message": "Desfazer todas as seções", - "description": "CSS-beautify global Undo button label" + "message": "Desfazer todas as seções" + }, + "unzipStyles": { + "message": "Descompactando estilos..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Nenhuma atualização encontrada.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Nenhuma atualização encontrada." }, "updateCheckFailBadResponseCode": { "message": "A atualização falhou: o servidor respondeu com código $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -380,91 +782,48 @@ } }, "updateCheckFailServerUnreachable": { - "message": "A atualização falhou: servidor inacessível.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "A atualização falhou: servidor inacessível." + }, + "updateCheckManualUpdateHint": { + "message": "Forçar uma atualização irá sobrescrever qualquer alteração local." + }, + "updateCheckSkippedLocallyEdited": { + "message": "Esse estilo foi editado localmente." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Este estilo parece ter sido editado localmente.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Este estilo parece ter sido editado localmente." }, "updateCheckSucceededNoUpdate": { - "message": "O estilo está atualizado.", - "description": "Text that displays when an update check completed and no update is available" + "message": "O estilo está atualizado." }, "updateCompleted": { - "message": "Atualização concluída.", - "description": "Text that displays when an update completed" + "message": "Atualização concluída." }, "updatesCurrentlyInstalled": { - "message": "Updates instalados:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssReplaceTemplateName": { - "message": "@nome vazio substitui o template padrão", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Insira o código aqui...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "A versão é mais velha que o estilo instalado.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Escrever um estilo para:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "Essa URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Exportar para Dropbox", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Importar do Dropbox", - "description": "" - }, - "overwriteFileExport": { - "message": "Você gostaria de substituir um arquivo existente?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Arquivo salvo com sucesso", - "description": "" - }, - "noFileToImport": { - "message": "Para importar seus estilos, você deve exportar primeiro.", - "description": "" - }, - "connectingDropbox": { - "message": "Conectando ao Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Conectar ao Dropbox somente é disponível em apps instalados diretamente da lojaweb", - "description": "" - }, - "gettingStyles": { - "message": "Obtendo todos estilos...", - "description": "" - }, - "zipStyles": { - "message": "Zipando estilos...", - "description": "" - }, - "unzipStyles": { - "message": "Unzipando estilos...", - "description": "" - }, - "readingStyles": { - "message": "Lendo estilos...", - "description": "" + "message": "Updates instalados:" }, "uploadingFile": { - "message": "Enviando arquivo...", - "description": "" + "message": "Enviando arquivo..." + }, + "usercssReplaceTemplateConfirmation": { + "message": "Substituir o template padrão por novos estilos com UserCSS com o código atual?" + }, + "usercssReplaceTemplateName": { + "message": "@nome vazio substitui o template padrão" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Insira o código aqui..." + }, + "versionInvalidOlder": { + "message": "A versão é mais velha que o estilo instalado." + }, + "writeStyleFor": { + "message": "Escrever um estilo para:" + }, + "writeStyleForURL": { + "message": "Essa URL" + }, + "zipStyles": { + "message": "Compactando estilos..." } -} \ No newline at end of file +} diff --git a/_locales/pt_PT/messages.json b/_locales/pt_PT/messages.json index cf3cee05..356d2914 100644 --- a/_locales/pt_PT/messages.json +++ b/_locales/pt_PT/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Escrever novo estilo", - "description": "Label for the button to go to the add style page" + "message": "Escrever novo estilo" }, "addStyleTitle": { - "message": "Adicionar estilo", - "description": "Title of the page for adding styles" + "message": "Adicionar estilo" }, "alphaChannel": { - "message": "Opacidade", - "description": "Label of color's opacity" + "message": "Opacidade" }, "appliesAdd": { - "message": "Adicionar", - "description": "Label for the button to add an 'applies' entry" + "message": "Adicionar" }, "appliesDisplay": { "message": "Aplica-se a: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,276 +20,208 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "e mais", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "e mais" }, "appliesDomainOption": { - "message": "URLs no domínio", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs no domínio" }, "appliesHelp": { - "message": "Use os controlos \"Aplica-se a\" para limitar a que URLs o código nesta secção se aplica.", - "description": "Help text for 'applies to' section" + "message": "Use os controlos \"Aplica-se a\" para limitar a que URLs o código nesta secção se aplica." }, "appliesLabel": { - "message": "Aplica-se a", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Aplica-se a" }, "appliesLineWidgetLabel": { - "message": "Apresentar \"Aplica-se a\" info", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Apresentar \"Aplica-se a\" info" }, "appliesLineWidgetWarning": { - "message": "Não funciona com CSS minificado", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Não funciona com CSS minificado" }, "appliesRegexpOption": { - "message": "URLs correspondentes ao regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs correspondentes ao regexp" }, "appliesRemove": { - "message": "Remover", - "description": "Label for the button to remove an 'applies' entry" + "message": "Remover" }, "appliesRemoveError": { - "message": "Não é possível remover a última 'aplica-se a' entrada", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Não é possível remover a última 'aplica-se a' entrada" }, "appliesSpecify": { - "message": "Especificar", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Especificar" }, "appliesToEverything": { - "message": "Tudo", - "description": "Text displayed for styles that apply to all sites" + "message": "Tudo" }, "appliesUrlPrefixOption": { - "message": "URLs a começar com", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URLs a começar com" }, "applyAllUpdates": { - "message": "Aplicar todas as atualizações", - "description": "Label for the button to apply all detected updates" + "message": "Aplicar todas as atualizações" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupButtons": { - "message": "Cópia de segurança", - "description": "Heading for backup" + "message": "Cópia de segurança" }, "backupMessage": { - "message": "Selecione um ficheiro ou arraste e solte-o nesta página.", - "description": "Message for backup" + "message": "Selecione um ficheiro ou arraste e solte-o nesta página." }, "bckpInstStyles": { - "message": "Exportar estilos", - "description": "" + "message": "Exportar estilos" }, "checkAllUpdates": { - "message": "Verificar todos os estilos por atualizações", - "description": "Label for the button to check all styles for updates" + "message": "Verificar todos os estilos por atualizações" }, "checkAllUpdatesForce": { - "message": "Verifique outra vez, eu não editei nenhum estilo!", - "description": "Label for the button to apply all detected updates" + "message": "Verifique outra vez, eu não editei nenhum estilo!" }, "checkForUpdate": { - "message": "Procurar atualizações", - "description": "Label for the button to check a single style for an update" + "message": "Procurar atualizações" }, "checkingForUpdate": { - "message": "A verificar...", - "description": "Text to display when checking a style for an update" + "message": "A verificar..." }, "clickToUninstall": { - "message": "Clique para desinstalar", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Clique para desinstalar" }, "cm_autoCloseBrackets": { - "message": "Auto-fechar colchetes e aspas", - "description": "Label for the checkbox in the style editor." + "message": "Auto-fechar colchetes e aspas" }, "cm_autoCloseBracketsTooltip": { - "message": "Adicionar automaticamente um par para fechar ao escrever um () [] {} '' \"\" de abertura", - "description": "Label for the checkbox in the style editor." + "message": "Adicionar automaticamente um par para fechar ao escrever um () [] {} '' \"\" de abertura" }, "cm_autocompleteOnTyping": { - "message": "Conclusão automática em datilografar ", - "description": "Label for the checkbox in the style editor." + "message": "Conclusão automática em datilografar " }, "cm_colorpicker": { - "message": "Selecionador de cores para cores CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Selecionador de cores para cores CSS" }, "cm_indentWithTabs": { - "message": "Usar tabulação com indentação inteligente", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Usar tabulação com indentação inteligente" }, "cm_keyMap": { - "message": "Mapa de teclado", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Mapa de teclado" }, "cm_lineWrapping": { - "message": "Moldar o texto", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Moldar o texto" }, "cm_matchHighlight": { - "message": "Realçar", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Realçar" }, "cm_matchHighlightSelection": { - "message": "Apenas a seleção", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Apenas a seleção" }, "cm_matchHighlightToken": { - "message": "Token embaixo do cursor", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token embaixo do cursor" }, "cm_resizeGripHint": { - "message": "Duplo-clique para maximizar/restaurar a altura", - "description": "Tooltip for the resize grip in style editor" + "message": "Duplo-clique para maximizar/restaurar a altura" }, "cm_selectByTokens": { - "message": "O duplo-clique seleciona os tokens", - "description": "Label for the checkbox in the editor." + "message": "O duplo-clique seleciona os tokens" }, "cm_selectByTokensTooltip": { - "message": "Exemplos de tokens: .foo-bar-2 #aabbcc 0.32 !Important\nQuando desativado: as palavras delimitadas por pontuação são selecionadas.", - "description": "" + "message": "Exemplos de tokens: .foo-bar-2 #aabbcc 0.32 !Important\nQuando desativado: as palavras delimitadas por pontuação são selecionadas." }, "cm_smartIndent": { - "message": "Use indentação inteligente", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Use indentação inteligente" }, "cm_tabSize": { - "message": "Tamanho da tabulação", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tamanho da tabulação" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" }, "colorpickerSwitchFormatTooltip": { - "message": "Mudar formatos: HEX -> RGB -> HSL.\nShift-clique para inverter a direção.\nTambém através das teclas PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Mudar formatos: HEX -> RGB -> HSL.\nShift-clique para inverter a direção.\nTambém através das teclas PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Abrir o selecionador de cores", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Abrir o selecionador de cores" }, "configOnChange": { - "message": "em mudança", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "em mudança" }, "configOnChangeTooltip": { - "message": "Auto-guarda e aplicar alterações automaticamente", - "description": "" + "message": "Auto-guarda e aplicar alterações automaticamente" }, "configureStyle": { - "message": "Configurar", - "description": "Label for the button to configure usercss userstyle" + "message": "Configurar" }, "configureStyleOnHomepage": { - "message": "Configurar na homepage", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Configurar na homepage" }, "confirmCancel": { - "message": "Cancelar", - "description": "" + "message": "Cancelar" }, "confirmClose": { - "message": "Fechar", - "description": "'Close' button in a confirm dialog" + "message": "Fechar" }, "confirmDefault": { - "message": "Use predefinição", - "description": "'Set to default' button in a confirm dialog" + "message": "Use predefinição" }, "confirmDelete": { - "message": "Apagar", - "description": "" + "message": "Apagar" }, "confirmDiscardChanges": { - "message": "Descartar as alterações?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Descartar as alterações?" }, "confirmNo": { - "message": "Não", - "description": "'No' button in a confirm dialog" + "message": "Não" }, "confirmSave": { - "message": "Guardar", - "description": "'Save' button in a confirm dialog" + "message": "Guardar" }, "confirmStop": { - "message": "Parar", - "description": "'Stop' button in a confirm dialog" + "message": "Parar" }, "confirmYes": { - "message": "Sim", - "description": "'Yes' button in a confirm dialog" + "message": "Sim" }, "dateInstalled": { - "message": "Data de instalação", - "description": "Option text for the user to sort the style by install date" + "message": "Data de instalação" }, "dateUpdated": { - "message": "Data da atualização", - "description": "Option text for the user to sort the style by last update date" + "message": "Data da atualização" }, "dbError": { - "message": "Ocorreu um erro ao usar a base de dados do Stylus. Gostaria de visitar uma página web com soluções possíveis?", - "description": "Prompt when a DB error is encountered" + "message": "Ocorreu um erro ao usar a base de dados do Stylus. Gostaria de visitar uma página web com soluções possíveis?" }, "defaultTheme": { - "message": "predefinição", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "predefinição" }, "deleteStyleConfirm": { - "message": "Tem a certeza que quer apagar este estilo?", - "description": "Confirmation before deleting a style" + "message": "Tem a certeza que quer apagar este estilo?" }, "deleteStyleLabel": { - "message": "Apagar", - "description": "Label for the button to delete a style" + "message": "Apagar" }, "description": { - "message": "Reestruturar a web com o Stylus, um gestor de estilos do utilizador. O Stylus permite-te instalar facilmente temas e skins para muitos sites populares.", - "description": "Extension description" + "message": "Reestruturar a web com o Stylus, um gestor de estilos do utilizador. O Stylus permite-te instalar facilmente temas e skins para muitos sites populares." }, "disableAllStyles": { - "message": "Desligar todos os estilos", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Desligar todos os estilos" }, "disableStyleLabel": { - "message": "Desativar", - "description": "Label for the button to disable a style" + "message": "Desativar" }, "dragDropMessage": { - "message": "Solte o ficheiro da sua cópia de segurança em qualquer sítio nesta página para importar.", - "description": "Drag'n'drop message" + "message": "Solte o ficheiro da sua cópia de segurança em qualquer sítio nesta página para importar." }, "editDeleteText": { - "message": "Eliminar", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Eliminar" }, "editGotoLine": { - "message": "Ir para a linha (ou linha:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Ir para a linha (ou linha:col)" }, "editStyleHeading": { - "message": "Editar Estilo", - "description": "Title of the page for editing styles" + "message": "Editar Estilo" }, "editStyleLabel": { - "message": "Editar", - "description": "Label for the button to go to the edit style page" + "message": "Editar" }, "editStyleTitle": { "message": "Editar Estilo $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -302,196 +229,150 @@ } }, "enableStyleLabel": { - "message": "Ativar", - "description": "Label for the button to enable a style" + "message": "Ativar" }, "exportLabel": { - "message": "Exportar", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportar" }, "externalLink": { - "message": "Hiperligação externa", - "description": "Label for external links" + "message": "Hiperligação externa" }, "externalSupport": { - "message": "Suporte", - "description": "Label for the external link to style's support site" + "message": "Suporte" }, "externalUsercssDocument": { - "message": "Documentação para Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentação para Usercss" }, "filteredStyles": { "message": "$numShown$ apresentado(s) de $numTotal$total", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Os filtros aplicados atualmente não correspondem a estilos", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Os filtros aplicados atualmente não correspondem a estilos" }, "findStyles": { - "message": "Localizar estilos", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Localizar estilos" }, "findStylesForSite": { - "message": "Encontrar mais estilos para este site", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Encontrar mais estilos para este site" }, "findStylesInline": { - "message": "inline", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "inline" }, "findStylesInlineTooltip": { - "message": "Exibir os resultados da pesquisa dentro desta janela.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Exibir os resultados da pesquisa dentro desta janela." }, "genericAdd": { - "message": "Adicionar", - "description": "Used in various places for an action that adds something" + "message": "Adicionar" }, "genericDisabledLabel": { - "message": "Desativado", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Desativado" }, "genericEnabledLabel": { - "message": "Habilitado", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Habilitado" }, "genericError": { - "message": "Erro", - "description": "Used in various places to indicate some error occurred." + "message": "Erro" }, "genericHistoryLabel": { - "message": "Histórico", - "description": "Used in various places to show a history log of something" + "message": "Histórico" }, "genericNext": { - "message": "Próximo", - "description": "Used in various places to select/perform the next step/action" + "message": "Próximo" }, "genericPrevious": { - "message": "Anterior", - "description": "Used in various places to select/perform the previous step/action" + "message": "Anterior" }, "genericResetLabel": { - "message": "Repor", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Repor" }, "genericSavedMessage": { - "message": "Guardado", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Guardado" }, "genericTitle": { - "message": "Título", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Título" }, "genericUnknown": { - "message": "Desconhecido", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Desconhecido" }, "helpAlt": { - "message": "Ajuda", - "description": "Alternate text for help buttons" + "message": "Ajuda" }, "helpKeyMapCommand": { - "message": "Escreva um nome de comando", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Escreva um nome de comando" }, "helpKeyMapHotkey": { - "message": "Prima uma tecla de atalho", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Prima uma tecla de atalho" }, "importAppendLabel": { - "message": "Acrescentar ao estilo", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Acrescentar ao estilo" }, "importAppendTooltip": { - "message": "Acrescentar o estilo importado ao estilo atual", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Acrescentar o estilo importado ao estilo atual" }, "importLabel": { - "message": "Importar", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importar" }, "importReplaceLabel": { - "message": "Sobrescrever estilo", - "description": "Label for the button to import and overwrite current style" + "message": "Sobrescrever estilo" }, "importReplaceTooltip": { - "message": "Rejeitar conteúdos do estilo atual e sobrescrever com o estilo importado", - "description": "Label for the button to import and overwrite current style" + "message": "Rejeitar conteúdos do estilo atual e sobrescrever com o estilo importado" }, "importReportLegendAdded": { - "message": "adicionado", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "adicionado" }, "importReportLegendIdentical": { - "message": "idênticos excluídos", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "idênticos excluídos" }, "importReportLegendInvalid": { - "message": "inválido(s) ignorado(s)", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "inválido(s) ignorado(s)" }, "importReportLegendUpdatedBoth": { - "message": "meta info e código atualizados", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "meta info e código atualizados" }, "importReportLegendUpdatedCode": { - "message": "código atualizado", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "código atualizado" }, "importReportLegendUpdatedMeta": { - "message": "meta info atualizada", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "meta info atualizada" }, "importReportTitle": { - "message": "Importação de estilos finalizada", - "description": "Title of the report shown after importing styles" + "message": "Importação de estilos finalizada" }, "importReportUnchanged": { - "message": "Nada foi alterado.", - "description": "Message in the report shown after importing styles" + "message": "Nada foi alterado." }, "importReportUndone": { - "message": "os estilos foram revertidos", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "os estilos foram revertidos" }, "importReportUndoneTitle": { - "message": "A Importação foi anulada", - "description": "Title of the message box shown after undoing the import of styles" + "message": "A Importação foi anulada" }, "installButton": { - "message": "Instalar estilo", - "description": "Label for install button" + "message": "Instalar estilo" }, "installButtonInstalled": { - "message": "Estilo instalado", - "description": "Text displayed when the style is successfully installed" + "message": "Estilo instalado" }, "installButtonReinstall": { - "message": "Reinstale o estilo", - "description": "Label for reinstall button" + "message": "Reinstale o estilo" }, "installButtonUpdate": { - "message": "Atualizar o estilo", - "description": "Label for update button" + "message": "Atualizar o estilo" }, "installUpdate": { - "message": "Instalar atualização", - "description": "Label for the button to install an update for a single style" + "message": "Instalar atualização" }, "installUpdateFrom": { "message": "Atualmente o estilo é atualizado a partir de $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -499,28 +380,22 @@ } }, "installUpdateFromLabel": { - "message": "Procurar atualizações", - "description": "Label for the checkbox to save current URL for update check" + "message": "Procurar atualizações" }, "license": { - "message": "Licença", - "description": "Label for the license" + "message": "Licença" }, "linkGetHelp": { - "message": "Obter ajuda", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Obter ajuda" }, "linkGetStyles": { - "message": "Obter estilos", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Obter estilos" }, "linkTranslate": { - "message": "Traduzir", - "description": "Transifex link text on the manage page" + "message": "Traduzir" }, "linterCSSLintIncompatible": { "message": "O CSSLint não suporta $preprocessorname$pré-processador", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -528,12 +403,10 @@ } }, "linterCSSLintSettings": { - "message": "(Definir a regra como : 0 = desabilitado; 1 = aviso ; 2 = erro)", - "description": "CSSLint rule config values" + "message": "(Definir a regra como : 0 = desabilitado; 1 = aviso ; 2 = erro)" }, "linterConfigPopupTitle": { "message": "Definir as regras de configuração para $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -541,20 +414,16 @@ } }, "linterConfigTooltip": { - "message": "Clique para configurar este linter", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Clique para configurar este linter" }, "linterInvalidConfigError": { - "message": "Não foi guardado devido a estas configurações inválidas:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Não foi guardado devido a estas configurações inválidas:" }, "linterIssues": { - "message": "Problemas", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problemas" }, "linterIssuesHelp": { "message": "Estes problemas foram encontradas por$link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -562,420 +431,310 @@ } }, "linterJSONError": { - "message": "Formato JSON inválido", - "description": "Setting linter config with invalid JSON" + "message": "Formato JSON inválido" }, "linterResetMessage": { - "message": "Para anular a redefinição acidental, prima Ctrl-Z (ou Cmd-Z) na caixa de texto", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Para anular a redefinição acidental, prima Ctrl-Z (ou Cmd-Z) na caixa de texto" }, "linterRulesLink": { - "message": "Veja uma lista completa de regras", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Veja uma lista completa de regras" }, "liveReloadError": { - "message": "Ocorreu um erro ao vigiar o arquivo", - "description": "The label of live-reload error" + "message": "Ocorreu um erro ao vigiar o arquivo" }, "liveReloadLabel": { - "message": "Recarregamento dinâmico", - "description": "The label of live-reload feature" + "message": "Recarregamento dinâmico" }, "manageFavicons": { - "message": "Favicons em colunas de aplica-se a", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons em colunas de aplica-se a" }, "manageFaviconsGray": { - "message": "Acinzentado(s)", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Acinzentado(s)" }, "manageFaviconsHelp": { - "message": "O Stylus usa um serviço externo https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "O Stylus usa um serviço externo https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtros", - "description": "Label for filters container" + "message": "Filtros" }, "manageHeading": { - "message": "Estilos Instalados", - "description": "Heading for the manage page" + "message": "Estilos Instalados" }, "manageMaxTargets": { - "message": "Número de aplica-se a itens", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Número de aplica-se a itens" }, "manageNewStyleAsUsercss": { - "message": "como Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "como Usercss" }, "manageNewUI": { - "message": "Nova interface do gestor", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Nova interface do gestor" }, "manageOnlyDisabled": { - "message": "Apenas estilos desativados", - "description": "Checkbox to show only disabled styles" + "message": "Apenas estilos desativados" }, "manageOnlyEnabled": { - "message": "Apenas estilos ativados", - "description": "Checkbox to show only enabled styles" + "message": "Apenas estilos ativados" }, "manageOnlyExternal": { - "message": "Apenas estilos externos", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Apenas estilos externos" }, "manageOnlyLocal": { - "message": "Apenas estilos criados localmente", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Apenas estilos criados localmente" }, "manageOnlyLocalTooltip": { - "message": "(os estilos não instalados através de uma página userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(os estilos não instalados através de uma página userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Apenas estilos não-Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Apenas estilos não-Usercss" }, "manageOnlyUpdates": { - "message": "Apenas com atualizações ou problemas", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Apenas com atualizações ou problemas" }, "manageOnlyUsercss": { - "message": "Apenas estilos Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "Apenas estilos Usercss" }, "menuShowBadge": { - "message": "Mostrar a contagem de estilos ativados", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Mostrar a contagem de estilos ativados" }, "noStylesForSite": { - "message": "Nenhum estilo instalado para este site.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nenhum estilo instalado para este site." }, "openManage": { - "message": "Gerir", - "description": "Link to open the manage page." + "message": "Gerir" }, "openStylesManager": { - "message": "Abrir gestor de estilos", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Abrir gestor de estilos" }, "optionsActions": { - "message": "Ações", - "description": "" + "message": "Ações" }, "optionsAdvanced": { - "message": "Avançadas", - "description": "" + "message": "Avançadas" }, "optionsAdvancedContextDelete": { - "message": "Adicionar 'Eliminar' no menu de contexto do editor", - "description": "" + "message": "Adicionar 'Eliminar' no menu de contexto do editor" }, "optionsAdvancedExposeIframes": { - "message": "Expor iframes via HTML[stylus-iframe]", - "description": "" + "message": "Expor iframes via HTML[stylus-iframe]" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Escrever novo estilo como usercss", - "description": "" + "message": "Escrever novo estilo como usercss" }, "optionsBadgeDisabled": { - "message": "Cor de fundo quando desativado", - "description": "" + "message": "Cor de fundo quando desativado" }, "optionsBadgeNormal": { - "message": "Cor de fundo", - "description": "" + "message": "Cor de fundo" }, "optionsCheck": { - "message": "Atualizar estilos", - "description": "" + "message": "Atualizar estilos" }, "optionsCheckUpdate": { - "message": "Procurar para e instalar todas as atualizações disponíveis", - "description": "" + "message": "Procurar para e instalar todas as atualizações disponíveis" }, "optionsCustomizeBadge": { - "message": "Distintivo no ícone da barra de ferramentas", - "description": "" + "message": "Distintivo no ícone da barra de ferramentas" }, "optionsCustomizeIcon": { - "message": "Ícone da barra de ferramentas", - "description": "" + "message": "Ícone da barra de ferramentas" }, "optionsCustomizeUpdate": { - "message": "Atualizações", - "description": "" + "message": "Atualizações" }, "optionsHeading": { - "message": "Opções", - "description": "Heading for options section on manage page." + "message": "Opções" }, "optionsIconDark": { - "message": "Temas escuros do browser", - "description": "" + "message": "Temas escuros do browser" }, "optionsIconLight": { - "message": "Temas claros do browser", - "description": "" + "message": "Temas claros do browser" }, "optionsOpen": { - "message": "Abrir", - "description": "" + "message": "Abrir" }, "optionsOpenManager": { - "message": "Gerir estilos", - "description": "" + "message": "Gerir estilos" }, "optionsPopupWidth": { - "message": "Popup largura (em pixeis)", - "description": "" + "message": "Popup largura (em pixeis)" }, "optionsReset": { - "message": "Restabelecer as opções aos valores predefinidos", - "description": "" + "message": "Restabelecer as opções aos valores predefinidos" }, "optionsResetButton": { - "message": "Restabelecer opções", - "description": "" + "message": "Restabelecer opções" }, "optionsSubheading": { - "message": "Mais Opções", - "description": "Subheading for options section on manage page." + "message": "Mais Opções" }, "optionsUpdateImportNote": { - "message": "Ao importar uma cópia de segurança de estilo da versão antiga ou do Stylish, faça uma verificação única de atualizações manualmente no gestor de estilos para garantir que todos os estilos sejam atualizados.", - "description": "" + "message": "Ao importar uma cópia de segurança de estilo da versão antiga ou do Stylish, faça uma verificação única de atualizações manualmente no gestor de estilos para garantir que todos os estilos sejam atualizados." }, "optionsUpdateInterval": { - "message": "Intervalo de atualização automática do estilo de usuário em horas (especifique 0 para desativar)", - "description": "" + "message": "Intervalo de atualização automática do estilo de usuário em horas (especifique 0 para desativar)" }, "paginationCurrent": { - "message": "Pagina atual", - "description": "Tooltip for the current page index in search results" + "message": "Pagina atual" }, "paginationEstimated": { - "message": "Número estimado de páginas", - "description": "Tooltip for the total page count in search results" + "message": "Número estimado de páginas" }, "paginationNext": { - "message": "Próxima página", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Próxima página" }, "paginationPrevious": { - "message": "Pagina anterior", - "description": "Tooltip for the '<-' button in search results" + "message": "Pagina anterior" }, "paginationTotal": { - "message": "Páginas totais", - "description": "" + "message": "Páginas totais" }, "parseUsercssError": { - "message": "O Stylus falhou ao analisar o usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "O Stylus falhou ao analisar o usercss:" }, "popupBorders": { - "message": "Adicionar margens laterais brancas ", - "description": "" + "message": "Adicionar margens laterais brancas " }, "popupBordersTooltip": { - "message": "Útil para temas escuros no novo Chrome, já que não pinta mais as margens laterais", - "description": "" + "message": "Útil para temas escuros no novo Chrome, já que não pinta mais as margens laterais" }, "popupHotkeysInfo": { - "message": "<1>- <9>,<0>, também no teclado numérico - alterna o Nth estilo (0 é 10)\n- alterna o primeiro estilo com um nome que começa com a letra\nabre o editor em vez de alternar\nativa estilos listados\ndesativa estilos listados\ne <`> (backtick) - alterna os estilos inicialmente ativados; não se aplica a estilos habilitados subsequentemente enquanto o popup está aberto, para que você possa restaurar a seleção inicial depois de testar o material: basta desabilitar todos e, em seguida, alternar, i.e. \nMais informações no wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>- <9>,<0>, também no teclado numérico - alterna o Nth estilo (0 é 10)\n- alterna o primeiro estilo com um nome que começa com a letra\nabre o editor em vez de alternar\nativa estilos listados\ndesativa estilos listados\ne <`> (backtick) - alterna os estilos inicialmente ativados; não se aplica a estilos habilitados subsequentemente enquanto o popup está aberto, para que você possa restaurar a seleção inicial depois de testar o material: basta desabilitar todos e, em seguida, alternar, i.e. \nMais informações no wiki" }, "popupHotkeysTooltip": { - "message": "Clique para ver as teclas de atalho disponíveis", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Clique para ver as teclas de atalho disponíveis" }, "popupManageTooltip": { - "message": "Shift-clique ou clique com o botão direito abre o gestor com estilos aplicáveis ao site atual", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift-clique ou clique com o botão direito abre o gestor com estilos aplicáveis ao site atual" }, "popupOpenEditInWindow": { - "message": "Abra o editor em uma nova janela", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Abra o editor em uma nova janela" }, "popupOpenEditInWindowTooltip": { - "message": "Também ativado ao desanexar o separador do editor de uma janela do browser, e desativado por anexar um separador único do editor a outra janela.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Também ativado ao desanexar o separador do editor de uma janela do browser, e desativado por anexar um separador único do editor a outra janela." }, "popupStylesFirst": { - "message": "Estilos antes de comandos", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Estilos antes de comandos" }, "prefShowBadge": { - "message": "Número de estilos ativadas para o site atual", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Número de estilos ativadas para o site atual" }, "previewLabel": { - "message": "Pré-visualização dinâmica", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Pré-visualização dinâmica" }, "previewTooltip": { - "message": "Temporariamente aplica as alterações sem guardar.\nGuarde o estilo para tornar as alterações permanentes.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Temporariamente aplica as alterações sem guardar.\nGuarde o estilo para tornar as alterações permanentes." }, "replace": { - "message": "Substituir", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Substituir" }, "replaceAll": { - "message": "Substituir todos", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Substituir todos" }, "replaceWith": { - "message": "Substituir com", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Substituir com" }, "retrieveBckp": { - "message": "Importar estilos", - "description": "" + "message": "Importar estilos" }, "search": { - "message": "Pesquisar", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Pesquisar" }, "searchCaseSensitive": { - "message": "Sensível a maiúsculas e minúsculas", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Sensível a maiúsculas e minúsculas" }, "searchNumberOfResults": { - "message": "Número de correspondências", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Número de correspondências" }, "searchNumberOfResults2": { - "message": "Número de correspondências no código e aplica-se a valores", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Número de correspondências no código e aplica-se a valores" }, "searchRegexp": { - "message": "Usa a sintaxe /re/ para pesquisas regexp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Usa a sintaxe /re/ para pesquisas regexp" }, "searchResultInstallCount": { - "message": "Instalações totais", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Instalações totais" }, "searchResultNoneFound": { - "message": "Nenhum estilo encontrado para este site.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nenhum estilo encontrado para este site." }, "searchResultRating": { - "message": "Classificação", - "description": "Text for label that shows the search result's rating" + "message": "Classificação" }, "searchResultUpdated": { - "message": "Atualizado", - "description": "Text for label that shows the search result's last update date" + "message": "Atualizado" }, "searchResultWeeklyCount": { - "message": "Instalações semanais", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Pesquisar conteúdos", - "description": "Label for the search filter textbox on the Manage styles page" - }, - "searchStylesHelp": { - "message": "A tecla foca o campo de pesquisa.\nTexto simples: pesquisa dentro do nome, código, URL da homepage e aplica-se a sites . Palavras com menos de 3 letras são ignoradas.\nEstilos que correspondem a um URL completo: prefixe a pesquisa com, e.g. \nExpressões regulares: inclua barras e sinalizadores, e.g. \nPalavras exatas: envolva a consulta entre aspas duplas, e.g. <\". header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Instalações semanais" }, "sectionAdd": { - "message": "Adicionar outra secção", - "description": "Label for the button to add a section" + "message": "Adicionar outra secção" }, "sectionCode": { - "message": "Código", - "description": "Label for the code for a section" + "message": "Código" }, "sectionRemove": { - "message": "Remover secção", - "description": "Label for the button to remove a section" + "message": "Remover secção" }, "sectionRestore": { - "message": "Restaurar secção removida", - "description": "Label for the button to restore a removed section" + "message": "Restaurar secção removida" }, "shortcuts": { - "message": "Atalhos", - "description": "Go to shortcut configuration" + "message": "Atalhos" }, "shortcutsNote": { - "message": "Definir atalhos de teclado", - "description": "" + "message": "Definir atalhos de teclado" }, "sortDateNewestFirst": { - "message": "mais recente primeiro", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "mais recente primeiro" }, "sortDateOldestFirst": { - "message": "mais antigos primeiro", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "mais antigos primeiro" }, "sortLabel": { - "message": "Selecione uma ordenação para aplicar aos estilos instalados", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Selecione uma ordenação para aplicar aos estilos instalados" }, "sortLabelTitleAsc": { - "message": "Título Ascendente", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Título Ascendente" }, "sortLabelTitleDesc": { - "message": "Título Descendente", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Título Descendente" }, "sortStylesHelp": { - "message": "Escolha o tipo de ordenação a ser aplicado às entradas instaladas na lista suspensa de ordenação. A configuração predefinida aplica uma ordem crescente (A a Z) aos títulos de entrada. As ordenações dentro do grupo \"Título Decrescente\" aplicarão uma classificação decrescente (Z a A) ao título. Existem outras predefinições que permitirão classificar as entradas por vários critérios. Pense sobre isso como ordenar uma tabela com várias colunas e cada categoria em cada seleção (entre os sinais de mais) representa uma coluna ou grupo. Por exemplo, se a configuração for \"Ativado (primeiro) + Título\", as entradas serão ordenadas de modo que todas as entradas ativadas sejam classificadas no topo da lista, então uma classificação crescente de título de entrada (A a Z) será aplicada a ambas as entradas ativadas e desativadas separadamente.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Escolha o tipo de ordenação a ser aplicado às entradas instaladas na lista suspensa de ordenação. A configuração predefinida aplica uma ordem crescente (A a Z) aos títulos de entrada. As ordenações dentro do grupo \"Título Decrescente\" aplicarão uma classificação decrescente (Z a A) ao título. Existem outras predefinições que permitirão classificar as entradas por vários critérios. Pense sobre isso como ordenar uma tabela com várias colunas e cada categoria em cada seleção (entre os sinais de mais) representa uma coluna ou grupo. Por exemplo, se a configuração for \"Ativado (primeiro) + Título\", as entradas serão ordenadas de modo que todas as entradas ativadas sejam classificadas no topo da lista, então uma classificação crescente de título de entrada (A a Z) será aplicada a ambas as entradas ativadas e desativadas separadamente." }, "sortStylesHelpTitle": { - "message": "Ordenar conteúdos", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Ordenar conteúdos" }, "styleBadRegexp": { - "message": "Regexp é inválido", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp é inválido" }, "styleBeautify": { - "message": "Embelezar", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Embelezar" }, "styleBeautifyIndentConditional": { - "message": "Indentar @media, @supports", - "description": "CSS-beautifier option" + "message": "Indentar @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Preserve novas linhas", - "description": "CSS-beautifier option" + "message": "Preserve novas linhas" }, "styleCancelEditLabel": { - "message": "Voltar para gerir", - "description": "Label for cancel button for style editing" + "message": "Voltar para gerir" }, "styleChangesNotSaved": { - "message": "Fizeste alterações a este estilo sem as guardar.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Fizeste alterações a este estilo sem as guardar." }, "styleEnabledLabel": { - "message": "Ativado", - "description": "Label for the enabled state of styles" + "message": "Ativado" }, "styleFromMozillaFormatError": { - "message": "Falha ao importar do formato Mozilla", - "description": "Label for the import error" + "message": "Falha ao importar do formato Mozilla" }, "styleFromMozillaFormatPrompt": { - "message": "Colar o código formato-Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Colar o código formato-Mozilla" }, "styleInstall": { "message": "Instalar '$stylename$' no Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -984,7 +743,6 @@ }, "styleInstallFailed": { "message": "Falha ao instalar o estilo de usuário!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -993,86 +751,68 @@ }, "styleInstallOverwrite": { "message": "$stylename$já está instalado. Substituir?\nVersão:$oldVersion$-> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Introduzir um nome", - "description": "Error displayed when user saves without providing a name" + "message": "Introduzir um nome" }, "styleMozillaFormatHeading": { - "message": "Formato Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Formato Mozilla" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "O estilo não foi aplicado devido ao uso incorreto de 'regexp ()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "O estilo não foi aplicado devido ao uso incorreto de 'regexp ()'" }, "styleRegexpInvalidExplanation": { - "message": "Algumas regras de 'regexp()' que não puderam ser compiladas.", - "description": "" + "message": "Algumas regras de 'regexp()' que não puderam ser compiladas." }, "styleRegexpPartialExplanation": { - "message": "Este estilo usa regexps parcialmente correspondentes em violação da CSS4 @document specification que requer um URL correspondente inteiro. As secções de CSS afetadas não foram aplicadas nesta página. Este estilo foi provavelmente criado no Stylish-for-Chrome o qual verifica incorretamente as regras 'regexp()' desde a primeira versão (bug conhecido).", - "description": "" + "message": "Este estilo usa regexps parcialmente correspondentes em violação da CSS4 @document specification que requer um URL correspondente inteiro. As secções de CSS afetadas não foram aplicadas nesta página. Este estilo foi provavelmente criado no Stylish-for-Chrome o qual verifica incorretamente as regras 'regexp()' desde a primeira versão (bug conhecido)." }, "styleRegexpProblemTooltip": { - "message": "Número de secções não aplicadas devido ao uso incorreto de 'regexp ()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Número de secções não aplicadas devido ao uso incorreto de 'regexp ()'" }, "styleRegexpTestButton": { - "message": "Testar RegExp", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Testar RegExp" }, "styleRegexpTestFull": { - "message": "Separadores correspondentes", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Separadores correspondentes" }, "styleRegexpTestInvalid": { - "message": "Regexps inválidos ignorados", - "description": "RegExp test report: label for the invalid expressions" + "message": "Regexps inválidos ignorados" }, "styleRegexpTestNone": { - "message": "Nenhum separador correspondente", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Nenhum separador correspondente" }, "styleRegexpTestNote": { - "message": "Nota: use um único \\ para escapar no campo de entrada regexp, que será automaticamente convertido para \\\\ no código de estilo conforme especificação para strings entre aspas em CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Nota: use um único \\ para escapar no campo de entrada regexp, que será automaticamente convertido para \\\\ no código de estilo conforme especificação para strings entre aspas em CSS." }, "styleRegexpTestPartial": { - "message": "Não corresponde totalmente, portanto ignorado", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Não corresponde totalmente, portanto ignorado" }, "styleRegexpTestTitle": { - "message": "Lista de separadores correspondentes abertos (clique no URL para focar no separador)", - "description": "RegExp test report: title of the report" + "message": "Lista de separadores correspondentes abertos (clique no URL para focar no separador)" }, "styleSaveLabel": { - "message": "Guardar", - "description": "Label for save button for style editing" + "message": "Guardar" }, "styleToMozillaFormatHelp": { - "message": "O formato Mozilla do código pode ser submetido aouserstyles.org e usado com o clássico Stylish para o Firefox", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "O formato Mozilla do código pode ser submetido aouserstyles.org e usado com o clássico Stylish para o Firefox" }, "styleToMozillaFormatTitle": { - "message": "Estilo no formato Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Estilo no formato Mozilla" }, "styleUpdate": { "message": "Tem a certeza que quer atualizar '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1080,68 +820,46 @@ } }, "styleUpdateDiscardChanges": { - "message": "O estilo é alterado fora do editor. Gostaria de recarregar o estilo?", - "description": "Confirmation to update the style in the editor" + "message": "O estilo é alterado fora do editor. Gostaria de recarregar o estilo?" }, "stylusUnavailableForURL": { - "message": "O Stylus não funciona em páginas como esta.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "O Stylus não funciona em páginas como esta." }, "stylusUnavailableForURLdetails": { - "message": "Como precaução de segurança, o browser proíbe extensões de afetar as páginas embutidas (como chrome://version, a página de novo separador predefinido no Chrome 61, about:addons, e assim sucessivamente) tal como páginas de outras extensões. Cada browser também restringe acesso à sua própria galeria de extensões (como Chrome Web Store ou AMO)", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Como precaução de segurança, o browser proíbe extensões de afetar as páginas embutidas (como chrome://version, a página de novo separador predefinido no Chrome 61, about:addons, e assim sucessivamente) tal como páginas de outras extensões. Cada browser também restringe acesso à sua própria galeria de extensões (como Chrome Web Store ou AMO)" }, "syncStorageErrorSaving": { - "message": "O valor não pode ser guardado. Tente reduzir a quantidade de texto.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "O valor não pode ser guardado. Tente reduzir a quantidade de texto." }, "toggleStyle": { - "message": "Alternar estilo", - "description": "Label for the checkbox to enable/disable a style" + "message": "Alternar estilo" }, "undo": { - "message": "Anular", - "description": "Button label" + "message": "Anular" }, "undoGlobal": { - "message": "Anular em todas as secções", - "description": "CSS-beautify global Undo button label" + "message": "Anular em todas as secções" }, "unreachableAMO": { - "message": "O Firefox proíbe o acesso ao site.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "O Firefox proíbe o acesso ao site." }, "unreachableAMOHint": { - "message": "Para permitir o acesso abra,clique com o botão direito na lista, clique em \"Novo\", depois em \"Booleano\", cole e clique em OK,,OK, recarregue a página .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "No Firefox 60 e mais recente, você também terá que remover o domínio AMO de em .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Somente o Firefox 59 e o mais recente podem ser configurados para permitir que WebExtensions incluam elementos de estilo em sites protegidos por CSP como este.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Para permitir o acesso abra,clique com o botão direito na lista, clique em \"Novo\", depois em \"Booleano\", cole e clique em OK,,OK, recarregue a página ." }, "unreachableContentScript": { - "message": "Não foi possível comunicar com a página. Tente recarregar o separador.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Não foi possível comunicar com a página. Tente recarregar o separador." }, "unreachableFileHint": { - "message": "O Stylus pode aceder URLs file:// apenas se ativar a checkbox correspondente para a extensão Stylus na página chrome://extensions", - "description": "Note in the toolbar popup for file:// URLs" + "message": "O Stylus pode aceder URLs file:// apenas se ativar a checkbox correspondente para a extensão Stylus na página chrome://extensions" }, "updateAllCheckSucceededNoUpdate": { - "message": "Nenhuma atualização encontrada.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Nenhuma atualização encontrada." }, "updateAllCheckSucceededSomeEdited": { - "message": "Alguns estilos que podem ser atualizados não foram verificados para evitar perder possíveis edições locais. As atualizações podem ser forçadas ao verificar individualmente, ou fazendo outra verificação para todos os estilos (edições locais vão ser sobrescrevidas)", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Alguns estilos que podem ser atualizados não foram verificados para evitar perder possíveis edições locais. As atualizações podem ser forçadas ao verificar individualmente, ou fazendo outra verificação para todos os estilos (edições locais vão ser sobrescrevidas)" }, "updateCheckFailBadResponseCode": { "message": "A atualização falhou: o servidor respondeu com o código $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1149,75 +867,57 @@ } }, "updateCheckFailServerUnreachable": { - "message": "A atualização falhou: servidor inacessível.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "A atualização falhou: servidor inacessível." }, "updateCheckHistory": { - "message": "Histórico de verificação de atualizações", - "description": "" + "message": "Histórico de verificação de atualizações" }, "updateCheckManualUpdateForce": { - "message": "Instalar atualização (edições locais vão ser sobrescritas)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Instalar atualização (edições locais vão ser sobrescritas)" }, "updateCheckManualUpdateHint": { - "message": "Forçando uma atualização vai substituir qualquer edição local.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Forçando uma atualização vai substituir qualquer edição local." }, "updateCheckSkippedLocallyEdited": { - "message": "Este estilo foi editado localmente.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Este estilo foi editado localmente." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Este estilo pode ter sido editado localmente", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Este estilo pode ter sido editado localmente" }, "updateCheckSucceededNoUpdate": { - "message": "O estilo está atualizado.", - "description": "Text that displays when an update check completed and no update is available" + "message": "O estilo está atualizado." }, "updateCompleted": { - "message": "Atualização completa.", - "description": "Text that displays when an update completed" + "message": "Atualização completa." }, "updatesCurrentlyInstalled": { - "message": "Atualizações instaladas:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." + "message": "Atualizações instaladas:" }, "usercssAvoidOverwriting": { - "message": "Por favor modifique o valor de @name ou @namespace para evitar sobrescrever um estilo existente.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." + "message": "Por favor modifique o valor de @name ou @namespace para evitar sobrescrever um estilo existente." }, "usercssConfigIncomplete": { - "message": "O estilo foi atualizado ou eliminado após a exibição do diálogo de configuração. Essas variáveis não foram guardadas para evitar corromper os metadados do estilo:", - "description": "" + "message": "O estilo foi atualizado ou eliminado após a exibição do diálogo de configuração. Essas variáveis não foram guardadas para evitar corromper os metadados do estilo:" }, "usercssEditorNamePlaceholder": { - "message": "Especificar @name no código", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" + "message": "Especificar @name no código" }, "usercssReplaceTemplateConfirmation": { - "message": "Substituir o modelo predefinido para novos estilos de Usercss com o código atual?", - "description": "" + "message": "Substituir o modelo predefinido para novos estilos de Usercss com o código atual?" }, "usercssReplaceTemplateName": { - "message": "@name vazio substitui o modelo predefinido", - "description": "The text shown after @name when creating a new Usercss style" + "message": "@name vazio substitui o modelo predefinido" }, "usercssReplaceTemplateSectionBody": { - "message": "Insira o código aqui...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" + "message": "Insira o código aqui..." }, "versionInvalidOlder": { - "message": "A versão é mais antiga que o estilo instalado.", - "description": "Displayed when the version of style is older than the installed one" + "message": "A versão é mais antiga que o estilo instalado." }, "writeStyleFor": { - "message": "Escrever estilo para:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Escrever estilo para:" }, "writeStyleForURL": { - "message": "este URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "este URL" } } diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index 703d0f54..7d3922c0 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Scrieți o temă nouă", - "description": "Label for the button to go to the add style page" + "message": "Scrieți o temă nouă" }, "addStyleTitle": { - "message": "Adăugați o temă", - "description": "Title of the page for adding styles" + "message": "Adăugați o temă" }, "alphaChannel": { - "message": "Opacitate", - "description": "Label of color's opacity" + "message": "Opacitate" }, "appliesAdd": { - "message": "Adăugați", - "description": "Label for the button to add an 'applies' entry" + "message": "Adăugați" }, "appliesDisplay": { "message": "Aplicabil pentru: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,244 +20,184 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "mai mult", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "mai mult" }, "appliesDomainOption": { - "message": "URLs din domain", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URLs din domain" }, "appliesHelp": { - "message": "Folosiți 'Aplicabil pentru' pentru a limita pe ce URLs va fi aplicată temă.", - "description": "Help text for 'applies to' section" + "message": "Folosiți 'Aplicabil pentru' pentru a limita pe ce URLs va fi aplicată temă." }, "appliesLabel": { - "message": "Aplicabil pentru", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Aplicabil pentru" }, "appliesLineWidgetLabel": { - "message": "Arată informații despre 'Aplicabil pentru'", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Arată informații despre 'Aplicabil pentru'" }, "appliesLineWidgetWarning": { - "message": "Nu funcționează cu CSS minimizat", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Nu funcționează cu CSS minimizat" }, "appliesRegexpOption": { - "message": "URLs găsite cu regexp", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URLs găsite cu regexp" }, "appliesRemove": { - "message": "Ștergeți", - "description": "Label for the button to remove an 'applies' entry" + "message": "Ștergeți" }, "appliesRemoveError": { - "message": "Nu se poate șterge 'aplicabil pentru'", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Nu se poate șterge 'aplicabil pentru'" }, "appliesSpecify": { - "message": "Specificați", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specificați" }, "appliesToEverything": { - "message": "Totul", - "description": "Text displayed for styles that apply to all sites" + "message": "Totul" }, "appliesUrlPrefixOption": { - "message": "URL-uri începănd cu", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL-uri începănd cu" }, "applyAllUpdates": { - "message": "Aplicați toate update-urile", - "description": "Label for the button to apply all detected updates" + "message": "Aplicați toate update-urile" }, "author": { - "message": "Autor", - "description": "Label for the style author" + "message": "Autor" }, "backupMessage": { - "message": "Selectați un fișier sau drag-and-drop aici", - "description": "Message for backup" + "message": "Selectați un fișier sau drag-and-drop aici" }, "bckpInstStyles": { - "message": "Exportați teme", - "description": "" + "message": "Exportați teme" }, "checkAllUpdates": { - "message": "Verificați toate temele pentru update-uri", - "description": "Label for the button to check all styles for updates" + "message": "Verificați toate temele pentru update-uri" }, "checkAllUpdatesForce": { - "message": "Verifică iar, nu am modificat temele!", - "description": "Label for the button to apply all detected updates" + "message": "Verifică iar, nu am modificat temele!" }, "checkForUpdate": { - "message": "Verificați pentru update-uri", - "description": "Label for the button to check a single style for an update" + "message": "Verificați pentru update-uri" }, "checkingForUpdate": { - "message": "Verficare...", - "description": "Text to display when checking a style for an update" + "message": "Verficare..." }, "clickToUninstall": { - "message": "Click pentru dezinstalare", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Click pentru dezinstalare" }, "cm_autoCloseBrackets": { - "message": "Închideți automat parantezele și ghilimelele", - "description": "Label for the checkbox in the style editor." + "message": "Închideți automat parantezele și ghilimelele" }, "cm_autoCloseBracketsTooltip": { - "message": "Închideți automat când deschizideți una dintre ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Închideți automat când deschizideți una dintre ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Autocompletare în timpul scrierii", - "description": "Label for the checkbox in the style editor." + "message": "Autocompletare în timpul scrierii" }, "cm_colorpicker": { - "message": "Alegere de culori pentru CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Alegere de culori pentru CSS" }, "cm_indentWithTabs": { - "message": "Folosiți tab-uri cu autoindentare", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Folosiți tab-uri cu autoindentare" }, "cm_matchHighlightSelection": { - "message": "Doar selecție", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Doar selecție" }, "cm_matchHighlightToken": { - "message": "Token-ul de sub cursor", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token-ul de sub cursor" }, "cm_resizeGripHint": { - "message": "Dublu click pentru a maximiza sau restaura înălțimea", - "description": "Tooltip for the resize grip in style editor" + "message": "Dublu click pentru a maximiza sau restaura înălțimea" }, "cm_selectByTokens": { - "message": "Dublu-click pentru a selecta simbolurile", - "description": "Label for the checkbox in the editor." + "message": "Dublu-click pentru a selecta simbolurile" }, "cm_selectByTokensTooltip": { - "message": "Exemple de simboluri: .foo-bar-2 #aabbcc 0.32 !important\nCand inactiv: cuvinte delimitate cu punctuatie sunt selectate.", - "description": "" + "message": "Exemple de simboluri: .foo-bar-2 #aabbcc 0.32 !important\nCand inactiv: cuvinte delimitate cu punctuatie sunt selectate." }, "cm_smartIndent": { - "message": "Folosiți indentare inteligentă", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Folosiți indentare inteligentă" }, "cm_tabSize": { - "message": "Mărimea tab-urilor", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Mărimea tab-urilor" }, "cm_theme": { - "message": "Temă pentru cod", - "description": "Label for the style editor's CSS theme." + "message": "Temă pentru cod" }, "colorpickerSwitchFormatTooltip": { - "message": "Schimbați formatul: HEX -> RGB -> HSL.\nShift-click pentru inversarea direcției.\nDe asemenea cu PgUp (PageUp), PgDn (PageDown).", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Schimbați formatul: HEX -> RGB -> HSL.\nShift-click pentru inversarea direcției.\nDe asemenea cu PgUp (PageUp), PgDn (PageDown)." }, "colorpickerTooltip": { - "message": "Deschideți color picker", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Deschideți color picker" }, "configOnChange": { - "message": "la schimbare", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "la schimbare" }, "configOnChangeTooltip": { - "message": "Autosalvare și aplicare a modificărilor automată", - "description": "" + "message": "Autosalvare și aplicare a modificărilor automată" }, "configureStyle": { - "message": "Modificați", - "description": "Label for the button to configure usercss userstyle" + "message": "Modificați" }, "configureStyleOnHomepage": { - "message": "Modificați pe pagina homepage", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Modificați pe pagina homepage" }, "confirmDefault": { - "message": "Folosiți default", - "description": "'Set to default' button in a confirm dialog" + "message": "Folosiți default" }, "confirmDelete": { - "message": "Ștergeți", - "description": "" + "message": "Ștergeți" }, "confirmDiscardChanges": { - "message": "Pierdeți modificările?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Pierdeți modificările?" }, "confirmNo": { - "message": "Nu", - "description": "'No' button in a confirm dialog" + "message": "Nu" }, "confirmSave": { - "message": "Salvați", - "description": "'Save' button in a confirm dialog" + "message": "Salvați" }, "confirmYes": { - "message": "Da", - "description": "'Yes' button in a confirm dialog" + "message": "Da" }, "dateInstalled": { - "message": "Data instalării", - "description": "Option text for the user to sort the style by install date" + "message": "Data instalării" }, "dateUpdated": { - "message": "Data updatării", - "description": "Option text for the user to sort the style by last update date" + "message": "Data updatării" }, "dbError": { - "message": "O eroare în baza de date a apărut. Doriți să vizitați pagina web pentru o soluție?", - "description": "Prompt when a DB error is encountered" + "message": "O eroare în baza de date a apărut. Doriți să vizitați pagina web pentru o soluție?" }, "deleteStyleConfirm": { - "message": "Sunteți sigur că doriți să ștergeți această temă?", - "description": "Confirmation before deleting a style" + "message": "Sunteți sigur că doriți să ștergeți această temă?" }, "deleteStyleLabel": { - "message": "Ștergeți", - "description": "Label for the button to delete a style" + "message": "Ștergeți" }, "description": { - "message": "Stilizați internetul cu Stylus, un manager de teme. Stylus vă permite să instalați cu ușurință teme pentru multe site-uri populare.", - "description": "Extension description" + "message": "Stilizați internetul cu Stylus, un manager de teme. Stylus vă permite să instalați cu ușurință teme pentru multe site-uri populare." }, "disableAllStyles": { - "message": "Dezactivați toate temele", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Dezactivați toate temele" }, "disableStyleLabel": { - "message": "Dezactivați", - "description": "Label for the button to disable a style" + "message": "Dezactivați" }, "dragDropMessage": { - "message": "Drag and drop backup-ul oriunde pentru import.", - "description": "Drag'n'drop message" + "message": "Drag and drop backup-ul oriunde pentru import." }, "editDeleteText": { - "message": "Ștergeți", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Ștergeți" }, "editGotoLine": { - "message": "Mergeți la linia", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Mergeți la linia" }, "editStyleHeading": { - "message": "Modificați tema", - "description": "Title of the page for editing styles" + "message": "Modificați tema" }, "editStyleLabel": { - "message": "Modificați", - "description": "Label for the button to go to the edit style page" + "message": "Modificați" }, "editStyleTitle": { "message": "Modificați tema $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -270,184 +205,141 @@ } }, "enableStyleLabel": { - "message": "Activați", - "description": "Label for the button to enable a style" + "message": "Activați" }, "externalLink": { - "message": "Link extern", - "description": "Label for external links" + "message": "Link extern" }, "externalSupport": { - "message": "Suport", - "description": "Label for the external link to style's support site" + "message": "Suport" }, "externalUsercssDocument": { - "message": "Documentație pentru Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Documentație pentru Usercss" }, "filteredStyles": { "message": "$numShown$ vizualizabile din $numTotal$ ", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Filtrele aplicate nu au găsit nicio temă", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Filtrele aplicate nu au găsit nicio temă" }, "findStyles": { - "message": "Găsiți teme", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Găsiți teme" }, "findStylesForSite": { - "message": "Gasiți mai multe teme pentru acest site.", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Gasiți mai multe teme pentru acest site." }, "findStylesInlineTooltip": { - "message": "Arătați rezultatele căutării în această pagină.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Arătați rezultatele căutării în această pagină." }, "genericAdd": { - "message": "Adaugă", - "description": "Used in various places for an action that adds something" + "message": "Adaugă" }, "genericClone": { - "message": "Clonează", - "description": "Used in various places for an action that clones something" + "message": "Clonează" }, "genericDisabledLabel": { - "message": "Dezactivat", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Dezactivat" }, "genericEnabledLabel": { - "message": "Activat", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Activat" }, "genericError": { - "message": "Eroare", - "description": "Used in various places to indicate some error occurred." + "message": "Eroare" }, "genericHistoryLabel": { - "message": "Historic", - "description": "Used in various places to show a history log of something" + "message": "Historic" }, "genericNext": { - "message": "Următor", - "description": "Used in various places to select/perform the next step/action" + "message": "Următor" }, "genericPrevious": { - "message": "Precedent", - "description": "Used in various places to select/perform the previous step/action" + "message": "Precedent" }, "genericResetLabel": { - "message": "Resetați", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Resetați" }, "genericSavedMessage": { - "message": "Salvat", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Salvat" }, "genericTitle": { - "message": "Titlu", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Titlu" }, "genericUnknown": { - "message": "Necunoscut", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Necunoscut" }, "helpAlt": { - "message": "Ajutor", - "description": "Alternate text for help buttons" + "message": "Ajutor" }, "helpKeyMapCommand": { - "message": "Tastați un nume de comandă", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Tastați un nume de comandă" }, "helpKeyMapHotkey": { - "message": "Tastați o hotkey", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Tastați o hotkey" }, "importAppendLabel": { - "message": "Concatenare la temă", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Concatenare la temă" }, "importAppendTooltip": { - "message": "Concatenați tema importată la cea curentă", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Concatenați tema importată la cea curentă" }, "importReplaceLabel": { - "message": "Scrieți peste tema curentă", - "description": "Label for the button to import and overwrite current style" + "message": "Scrieți peste tema curentă" }, "importReplaceTooltip": { - "message": "Scrieți peste tema curentă conținutul temei importate", - "description": "Label for the button to import and overwrite current style" + "message": "Scrieți peste tema curentă conținutul temei importate" }, "importReportLegendAdded": { - "message": "adăugat", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "adăugat" }, "importReportLegendIdentical": { - "message": "cele identice au fost sărite", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "cele identice au fost sărite" }, "importReportLegendInvalid": { - "message": "cele invalide au fost ignorate", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "cele invalide au fost ignorate" }, "importReportLegendUpdatedBoth": { - "message": "meta info și codul au fost updatate", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "meta info și codul au fost updatate" }, "importReportLegendUpdatedCode": { - "message": "cod updatat", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "cod updatat" }, "importReportLegendUpdatedMeta": { - "message": "meta info updatată", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "meta info updatată" }, "importReportTitle": { - "message": "Importul temelor finalizat", - "description": "Title of the report shown after importing styles" + "message": "Importul temelor finalizat" }, "importReportUnchanged": { - "message": "Nimic nu a fost schimbat.", - "description": "Message in the report shown after importing styles" + "message": "Nimic nu a fost schimbat." }, "importReportUndone": { - "message": "temele au fost înlocuite cu variantele precedente", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "temele au fost înlocuite cu variantele precedente" }, "importReportUndoneTitle": { - "message": "Importarea a fost anulată", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importarea a fost anulată" }, "installButton": { - "message": "Instalați tema", - "description": "Label for install button" + "message": "Instalați tema" }, "installButtonInstalled": { - "message": "Tema a fost instalată", - "description": "Text displayed when the style is successfully installed" + "message": "Tema a fost instalată" }, "installButtonReinstall": { - "message": "Reinstalați tema", - "description": "Label for reinstall button" + "message": "Reinstalați tema" }, "installUpdate": { - "message": "Instalați update-uri", - "description": "Label for the button to install an update for a single style" + "message": "Instalați update-uri" }, "installUpdateFrom": { "message": "Tema este updatată de la $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -455,28 +347,22 @@ } }, "installUpdateFromLabel": { - "message": "Verificați update-urile", - "description": "Label for the checkbox to save current URL for update check" + "message": "Verificați update-urile" }, "license": { - "message": "Licență", - "description": "Label for the license" + "message": "Licență" }, "linkGetHelp": { - "message": "Găsiți ajutor", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Găsiți ajutor" }, "linkGetStyles": { - "message": "Căutați teme", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Căutați teme" }, "linkTranslate": { - "message": "Traduce", - "description": "Transifex link text on the manage page" + "message": "Traduce" }, "linterCSSLintIncompatible": { "message": "CSSLint nu suportă preprocesorul $preprocessorname$ ", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -484,12 +370,10 @@ } }, "linterCSSLintSettings": { - "message": "(Setați regula ca: 0 = dezactivat; 1 = avertisment; 2 = eroare)", - "description": "CSSLint rule config values" + "message": "(Setați regula ca: 0 = dezactivat; 1 = avertisment; 2 = eroare)" }, "linterConfigPopupTitle": { "message": "Setați $linter$ pentru configurarea regulilor", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -497,20 +381,16 @@ } }, "linterConfigTooltip": { - "message": "Click pentru a configura linter-ul", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Click pentru a configura linter-ul" }, "linterInvalidConfigError": { - "message": "Nu a fost salvat din cauza acestor setări invalide:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Nu a fost salvat din cauza acestor setări invalide:" }, "linterIssues": { - "message": "Probleme", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Probleme" }, "linterIssuesHelp": { "message": "Aceste probleme au fost găsite te $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -518,388 +398,286 @@ } }, "linterResetMessage": { - "message": "Pentru a reveni la varianta precedentă, apăsați Ctrl-Z (sau Cmd-Z) în text box", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Pentru a reveni la varianta precedentă, apăsați Ctrl-Z (sau Cmd-Z) în text box" }, "linterRulesLink": { - "message": "Vizualizați lista completă de reguli", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Vizualizați lista completă de reguli" }, "liveReloadError": { - "message": "A avut loc o eroare în timpul monitorizării acestui fișier", - "description": "The label of live-reload error" + "message": "A avut loc o eroare în timpul monitorizării acestui fișier" }, "manageFavicons": { - "message": "Favicons în coloana 'se aplică la'", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons în coloana 'se aplică la'" }, "manageFaviconsGray": { - "message": "Hașurat", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Hașurat" }, "manageFaviconsHelp": { - "message": "Stylus folosește un serviciu extern https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus folosește un serviciu extern https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtre", - "description": "Label for filters container" + "message": "Filtre" }, "manageHeading": { - "message": "Teme instalate", - "description": "Heading for the manage page" + "message": "Teme instalate" }, "manageMaxTargets": { - "message": "Numărul obiectelor la care se aplică", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Numărul obiectelor la care se aplică" }, "manageNewUI": { - "message": "UI layout pentru mesajele noi", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "UI layout pentru mesajele noi" }, "manageOnlyDisabled": { - "message": "Doar teme dezactivate", - "description": "Checkbox to show only disabled styles" + "message": "Doar teme dezactivate" }, "manageOnlyEnabled": { - "message": "Doar temele activate", - "description": "Checkbox to show only enabled styles" + "message": "Doar temele activate" }, "manageOnlyExternal": { - "message": "Doar teme externe", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Doar teme externe" }, "manageOnlyLocal": { - "message": "Doar temele create local", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Doar temele create local" }, "manageOnlyLocalTooltip": { - "message": "(temele neinstalate prin userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(temele neinstalate prin userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Doar teme non-Usercss", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Doar teme non-Usercss" }, "manageOnlyUpdates": { - "message": "Doar cu update-uri sau erori", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Doar cu update-uri sau erori" }, "manageOnlyUsercss": { - "message": "Doar teme Usercss", - "description": "Checkbox to show only Usercss styles" + "message": "Doar teme Usercss" }, "menuShowBadge": { - "message": "Afișați numărul temelor active", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Afișați numărul temelor active" }, "noStylesForSite": { - "message": "Nicio temă instalată pentru acest site.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Nicio temă instalată pentru acest site." }, "openManage": { - "message": "Managerul", - "description": "Link to open the manage page." + "message": "Managerul" }, "openStylesManager": { - "message": "Deschideți managerul de teme", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Deschideți managerul de teme" }, "optionsActions": { - "message": "Acțiuni", - "description": "" + "message": "Acțiuni" }, "optionsAdvanced": { - "message": "Avansat", - "description": "" + "message": "Avansat" }, "optionsAdvancedContextDelete": { - "message": "Adaugați 'Ștergeți' în meniul de click dreapta", - "description": "" + "message": "Adaugați 'Ștergeți' în meniul de click dreapta" }, "optionsAdvancedExposeIframes": { - "message": "Expuneți iframes via HTML[stylus-iframe]", - "description": "" + "message": "Expuneți iframes via HTML[stylus-iframe]" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Scrieți temă nouă în formatul usercss", - "description": "" + "message": "Scrieți temă nouă în formatul usercss" }, "optionsBadgeDisabled": { - "message": "Culoare de fundal pentru modul inactiv", - "description": "" + "message": "Culoare de fundal pentru modul inactiv" }, "optionsBadgeNormal": { - "message": "Culoare de fundal", - "description": "" + "message": "Culoare de fundal" }, "optionsCheck": { - "message": "Updatați temele", - "description": "" + "message": "Updatați temele" }, "optionsCheckUpdate": { - "message": "Verificați și instalează toate update-urile", - "description": "" + "message": "Verificați și instalează toate update-urile" }, "optionsCustomizeBadge": { - "message": "Bulinuța de pe iconița din toolbar", - "description": "" + "message": "Bulinuța de pe iconița din toolbar" }, "optionsCustomizeUpdate": { - "message": "Update-uri", - "description": "" + "message": "Update-uri" }, "optionsHeading": { - "message": "Opțiuni", - "description": "Heading for options section on manage page." + "message": "Opțiuni" }, "optionsIconDark": { - "message": "Teme întunecate pentru browser", - "description": "" + "message": "Teme întunecate pentru browser" }, "optionsIconLight": { - "message": "Teme albe pentru browser", - "description": "" + "message": "Teme albe pentru browser" }, "optionsOpen": { - "message": "Deschideți", - "description": "" + "message": "Deschideți" }, "optionsOpenManager": { - "message": "Managerul de teme", - "description": "" + "message": "Managerul de teme" }, "optionsPopupWidth": { - "message": "Mărimea ferestrei popup (în pixeli)", - "description": "" + "message": "Mărimea ferestrei popup (în pixeli)" }, "optionsReset": { - "message": "Resetați opțiunile", - "description": "" + "message": "Resetați opțiunile" }, "optionsResetButton": { - "message": "Resetați opțiunile", - "description": "" + "message": "Resetați opțiunile" }, "optionsSubheading": { - "message": "Mai multe opțiuni", - "description": "Subheading for options section on manage page." + "message": "Mai multe opțiuni" }, "optionsUpdateImportNote": { - "message": "Atunci când sunt importate teme din backup-uri din versiuni mai vechi sau din Stylish, verifică upate-urile manual pentru a fi sigur că toate temele sunt la zi.", - "description": "" + "message": "Atunci când sunt importate teme din backup-uri din versiuni mai vechi sau din Stylish, verifică upate-urile manual pentru a fi sigur că toate temele sunt la zi." }, "optionsUpdateInterval": { - "message": "Intervalul de autoupdate în ore (0 pentru dezactivat)", - "description": "" + "message": "Intervalul de autoupdate în ore (0 pentru dezactivat)" }, "paginationCurrent": { - "message": "Pagina curentă", - "description": "Tooltip for the current page index in search results" + "message": "Pagina curentă" }, "paginationEstimated": { - "message": "Număr estimat de pagini", - "description": "Tooltip for the total page count in search results" + "message": "Număr estimat de pagini" }, "paginationNext": { - "message": "Pagina următoare", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Pagina următoare" }, "paginationPrevious": { - "message": "Pagina precedentă", - "description": "Tooltip for the '<-' button in search results" + "message": "Pagina precedentă" }, "paginationTotal": { - "message": "Număr total de pagini", - "description": "" + "message": "Număr total de pagini" }, "parseUsercssError": { - "message": "Stylus nu a putut analiza usercss-ul", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus nu a putut analiza usercss-ul" }, "popupBorders": { - "message": "Adăugați bordură albă pe margini", - "description": "" + "message": "Adăugați bordură albă pe margini" }, "popupBordersTooltip": { - "message": "Folositor pentru teme întunecate in noul Chrome deoarece nu mai colorează bordurile", - "description": "" + "message": "Folositor pentru teme întunecate in noul Chrome deoarece nu mai colorează bordurile" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, de asemenea îm numpad - activează/dezactivează tema numărul N (0 este 10)\n- activează/dezactivează prima temă cu un nume care începe cu o litera\n deschide editorul și nu activează/dezactivează ceva\n activează temele listate\n dezactiveaza temele listate\n și <`> (backtick) - activează/dezactivează temele activate inițial; nu se aplică altor teme activate când popup-ul este deschid pentru a permite restaurarea seleției inițiale pentru a permite testări; dezactivează tot, apoi activează/dezactivează, spre exemplu \nMai multe informații sunt avabile în wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, de asemenea îm numpad - activează/dezactivează tema numărul N (0 este 10)\n- activează/dezactivează prima temă cu un nume care începe cu o litera\n deschide editorul și nu activează/dezactivează ceva\n activează temele listate\n dezactiveaza temele listate\n și <`> (backtick) - activează/dezactivează temele activate inițial; nu se aplică altor teme activate când popup-ul este deschid pentru a permite restaurarea seleției inițiale pentru a permite testări; dezactivează tot, apoi activează/dezactivează, spre exemplu \nMai multe informații sunt avabile în wiki" }, "popupHotkeysTooltip": { - "message": "Click pentru a vedea hotkeys avabile", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Click pentru a vedea hotkeys avabile" }, "popupManageTooltip": { - "message": "Shift-click sau right-click pentru a deschide managerurl cu teme aplicabile site-ului curent", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift-click sau right-click pentru a deschide managerurl cu teme aplicabile site-ului curent" }, "popupOpenEditInWindow": { - "message": "Deschide editorul în alt window", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Deschide editorul în alt window" }, "popupOpenEditInWindowTooltip": { - "message": "Activ când tabul editorului este detașat de browser,\nși dezactivat când un singur tab cu editor este atașat la alt window.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Activ când tabul editorului este detașat de browser,\nși dezactivat când un singur tab cu editor este atașat la alt window." }, "popupStylesFirst": { - "message": "Temele înaintea comenzilor", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Temele înaintea comenzilor" }, "prefShowBadge": { - "message": "Numărul de teme active pentru site-ul curent", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Numărul de teme active pentru site-ul curent" }, "previewTooltip": { - "message": "Aplică temporar modificările fără a salva.\nSalvează tema pentru a face schimbările permanente.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Aplică temporar modificările fără a salva.\nSalvează tema pentru a face schimbările permanente." }, "replace": { - "message": "Înlocuiți", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Înlocuiți" }, "replaceAll": { - "message": "Înlocuiți tot", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Înlocuiți tot" }, "replaceWith": { - "message": "Înlocuiți cu", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Înlocuiți cu" }, "retrieveBckp": { - "message": "Importați teme", - "description": "" + "message": "Importați teme" }, "search": { - "message": "Căutați", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Căutați" }, "searchNumberOfResults": { - "message": "Număr de rezultate", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Număr de rezultate" }, "searchNumberOfResults2": { - "message": "Număr de rezultate în cod și în 'aplicabil pentru'", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Număr de rezultate în cod și în 'aplicabil pentru'" }, "searchRegexp": { - "message": "Folosiți sintaxă /re/ pentru căutare tip regexp", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Folosiți sintaxă /re/ pentru căutare tip regexp" }, "searchResultInstallCount": { - "message": "Număr total de instalări", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Număr total de instalări" }, "searchResultNoneFound": { - "message": "Nicio tema găsită pentru acest site.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Nicio tema găsită pentru acest site." }, "searchResultUpdated": { - "message": "Updatate", - "description": "Text for label that shows the search result's last update date" + "message": "Updatate" }, "searchResultWeeklyCount": { - "message": "Instalări săptămânale", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "Conținutul căutării", - "description": "Label for the search filter textbox on the Manage styles page" - }, - "searchStylesHelp": { - "message": " aduce în focus bara de căutare.\nText simplu: caută în nume, cod, homepage URL și site-uri la care se aplică tema. Cuvinte cu mai puțin de 3 litere sunt ignorate.\nURL găsit: adaugă căutarea ca prefix , ex. \nExpresii obișnuite: include slashes și flags, ex. \nCuvinte exacte: introduceți între ghilimele, ex. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": "Instalări săptămânale" }, "sectionAdd": { - "message": "Adăugați o altă secțiune", - "description": "Label for the button to add a section" + "message": "Adăugați o altă secțiune" }, "sectionCode": { - "message": "Cod", - "description": "Label for the code for a section" + "message": "Cod" }, "sectionRemove": { - "message": "Ștergeți secțiunea", - "description": "Label for the button to remove a section" + "message": "Ștergeți secțiunea" }, "sectionRestore": { - "message": "Restaurează o secțiune ștearsă", - "description": "Label for the button to restore a removed section" + "message": "Restaurează o secțiune ștearsă" }, "shortcutsNote": { - "message": "Creeați keyboard shortcuts", - "description": "" + "message": "Creeați keyboard shortcuts" }, "sortDateNewestFirst": { - "message": "cele mai noi la început", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "cele mai noi la început" }, "sortDateOldestFirst": { - "message": "cel mai vechi la început", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "cel mai vechi la început" }, "sortLabel": { - "message": "Alegeți o sortare care să fie aplicată temelor instalate", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Alegeți o sortare care să fie aplicată temelor instalate" }, "sortLabelTitleAsc": { - "message": "Titlu crescător", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Titlu crescător" }, "sortLabelTitleDesc": { - "message": "Titlu descrescător", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Titlu descrescător" }, "sortStylesHelp": { - "message": "Alegeți ce fel de sortare doriți să fie aplicată temelor instalate, din cadrul meniului dropdown. În mod implicit se aplică sortare alfabetică (A la Z) titlurilor temelor. Sortarea de tip \"Titlu descrescător\" va aplica sortare descrescătoare (Z la A) titlurilor.\nSunt alte presets care permit sortări după mai multe criterii. Este ca și cum ați sorta un tabel cu mai multe coloane iar fiecare categorie (între semnele +) reprezintă o coloană, sau un grup..\nSpre exemplu, dacă se alege \"Activată (prima) + Titlu\", atunci toate temele vor fi grupate astfel încât cele active sunt cap de listă, iar apoi temele sunt sortate alfabetic.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Alegeți ce fel de sortare doriți să fie aplicată temelor instalate, din cadrul meniului dropdown. În mod implicit se aplică sortare alfabetică (A la Z) titlurilor temelor. Sortarea de tip \"Titlu descrescător\" va aplica sortare descrescătoare (Z la A) titlurilor.\nSunt alte presets care permit sortări după mai multe criterii. Este ca și cum ați sorta un tabel cu mai multe coloane iar fiecare categorie (între semnele +) reprezintă o coloană, sau un grup..\nSpre exemplu, dacă se alege \"Activată (prima) + Titlu\", atunci toate temele vor fi grupate astfel încât cele active sunt cap de listă, iar apoi temele sunt sortate alfabetic." }, "sortStylesHelpTitle": { - "message": "Sortare conținut", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Sortare conținut" }, "styleBadRegexp": { - "message": "Regexp invalid.", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp invalid." }, "styleBeautify": { - "message": "Înfrumusețați", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Înfrumusețați" }, "styleBeautifyIndentConditional": { - "message": "Indentare @media, @supports", - "description": "CSS-beautifier option" + "message": "Indentare @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Menține linii noi", - "description": "CSS-beautifier option" + "message": "Menține linii noi" }, "styleCancelEditLabel": { - "message": "Înapoi la manager", - "description": "Label for cancel button for style editing" + "message": "Înapoi la manager" }, "styleChangesNotSaved": { - "message": "Ați modificat tema fără a o salva.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Ați modificat tema fără a o salva." }, "styleEnabledLabel": { - "message": "Activat", - "description": "Label for the enabled state of styles" + "message": "Activat" }, "styleFromMozillaFormatError": { - "message": "Importul din formatul Mozilla eșuat", - "description": "Label for the import error" + "message": "Importul din formatul Mozilla eșuat" }, "styleFromMozillaFormatPrompt": { - "message": "Paste cod în format Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Paste cod în format Mozilla" }, "styleInstall": { "message": "Instalați '$stylename$' în Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -908,7 +686,6 @@ }, "styleInstallFailed": { "message": "Instalarea temei eșuată!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -917,82 +694,65 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' este deja instalată. Scrieți peste?\nVersiune: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Introduceți un nume", - "description": "Error displayed when user saves without providing a name" + "message": "Introduceți un nume" }, "styleMozillaFormatHeading": { - "message": "Format Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Format Mozilla" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Tema nu a fost aplicată din cauza incorectei aplicări a 'regexp()'", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Tema nu a fost aplicată din cauza incorectei aplicări a 'regexp()'" }, "styleRegexpInvalidExplanation": { - "message": "Unele reguli 'regexp()' care nu au putut fi compilate.", - "description": "" + "message": "Unele reguli 'regexp()' care nu au putut fi compilate." }, "styleRegexpPartialExplanation": { - "message": "Această temă folosește regexp parțiale care încalcă specificațiile CSS4 @document care are nevoie de o potrivire regexp exactă. Părțile afectate de CSS nu au fost aplicate paginii. Cel mai probabil tema a fost creată în Stylish-for-Chrome care verifică incorect 'regexp()' de la prima sa versiune (bug cunoscut).", - "description": "" + "message": "Această temă folosește regexp parțiale care încalcă specificațiile CSS4 @document care are nevoie de o potrivire regexp exactă. Părțile afectate de CSS nu au fost aplicate paginii. Cel mai probabil tema a fost creată în Stylish-for-Chrome care verifică incorect 'regexp()' de la prima sa versiune (bug cunoscut)." }, "styleRegexpProblemTooltip": { - "message": " Numărul de secțiuni care nu au fost aplicate din cauza utilizării incorecte a 'regexp()'", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": " Numărul de secțiuni care nu au fost aplicate din cauza utilizării incorecte a 'regexp()'" }, "styleRegexpTestFull": { - "message": "Taburi găsite", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Taburi găsite" }, "styleRegexpTestInvalid": { - "message": "Invalid regexps au fost sărite", - "description": "RegExp test report: label for the invalid expressions" + "message": "Invalid regexps au fost sărite" }, "styleRegexpTestNone": { - "message": "Niciun tab nu se potrivește căutării", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Niciun tab nu se potrivește căutării" }, "styleRegexpTestNote": { - "message": "Notă: folosiți \\ pentru ignorarea caracterelor speciale în regexp, care va fi transformat automat în \\\\ în codul temei, urmând specificațiile pentru text citat în CSS.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Notă: folosiți \\ pentru ignorarea caracterelor speciale în regexp, care va fi transformat automat în \\\\ în codul temei, urmând specificațiile pentru text citat în CSS." }, "styleRegexpTestPartial": { - "message": "Potrivire parțială, deci ignorată", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Potrivire parțială, deci ignorată" }, "styleRegexpTestTitle": { - "message": "Listă cu taburi deschise care se potrivesc căutării (click URL pentru a activa tabul)", - "description": "RegExp test report: title of the report" + "message": "Listă cu taburi deschise care se potrivesc căutării (click URL pentru a activa tabul)" }, "styleSaveLabel": { - "message": "Salvați", - "description": "Label for save button for style editing" + "message": "Salvați" }, "styleToMozillaFormatHelp": { - "message": "Formatul Mozilla al codului poate fi uploadat pe userstyles.org și folosit de clasicul Stylish pentru Firefox.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Formatul Mozilla al codului poate fi uploadat pe userstyles.org și folosit de clasicul Stylish pentru Firefox." }, "styleToMozillaFormatTitle": { - "message": "Scrieți în format Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Scrieți în format Mozilla" }, "styleUpdate": { "message": "Sunteți sigur că doriți să faceți update la '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1000,64 +760,43 @@ } }, "styleUpdateDiscardChanges": { - "message": "Tema a fost modificată în afara editorului. Doriți să reâncărcați tema?", - "description": "Confirmation to update the style in the editor" + "message": "Tema a fost modificată în afara editorului. Doriți să reâncărcați tema?" }, "stylusUnavailableForURL": { - "message": "Stylus nu funcționează în astfel de pagini.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus nu funcționează în astfel de pagini." }, "stylusUnavailableForURLdetails": { - "message": "Ca o măsură de securitate, browser-ul împiedică extensiile să afecteze paginile corespunzătoare browser-ului (precum chrome://version, adresa unui nou tab începând cu Chrome 61, about:addons, în Firefox etc) și de asemenea paginile altor extensii. De asemenea este restricționat accesul la galeriile de extensii (Chrome Web Store sau AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Ca o măsură de securitate, browser-ul împiedică extensiile să afecteze paginile corespunzătoare browser-ului (precum chrome://version, adresa unui nou tab începând cu Chrome 61, about:addons, în Firefox etc) și de asemenea paginile altor extensii. De asemenea este restricționat accesul la galeriile de extensii (Chrome Web Store sau AMO)." }, "syncStorageErrorSaving": { - "message": "Valoarea nu a putut fi salvată. Încercați să reduceți dimensiunea textului.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Valoarea nu a putut fi salvată. Încercați să reduceți dimensiunea textului." }, "toggleStyle": { - "message": "Activați/Dezactivați tema", - "description": "Label for the checkbox to enable/disable a style" + "message": "Activați/Dezactivați tema" }, "undoGlobal": { - "message": "Undo în toate secțiunile", - "description": "CSS-beautify global Undo button label" + "message": "Undo în toate secțiunile" }, "unreachableAMO": { - "message": "Firefox împiedică accesul la site.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox împiedică accesul la site." }, "unreachableAMOHint": { - "message": "Pentru a permite accesul deschideți , right-click pe listă, click 'New', apoi 'Boolean', paste și click OK, , OK, reâncărcați pagina .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "În Firefox 60+ va trebui sa fie șters domain-ul AMO din din .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Doar Firefox 59 sau mai nou poate fi configurat să permită WebExtension-urilor să adauge elemente la site-uri CSP-protected precum acesta.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Pentru a permite accesul deschideți , right-click pe listă, click 'New', apoi 'Boolean', paste și click OK, , OK, reâncărcați pagina ." }, "unreachableContentScript": { - "message": "Nu s-a putut comunica cu pagina. Reîncărcați tabul.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Nu s-a putut comunica cu pagina. Reîncărcați tabul." }, "unreachableFileHint": { - "message": "Stylus poate accesa file:// URLs doar când este activată opțiunea respectivă din pagina cu setări chrome://extensions", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus poate accesa file:// URLs doar când este activată opțiunea respectivă din pagina cu setări chrome://extensions" }, "updateAllCheckSucceededNoUpdate": { - "message": "Niciun update găsit.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Niciun update găsit." }, "updateAllCheckSucceededSomeEdited": { - "message": "Unele teme care au update-uri nu au fost updatate pentru a nu pierde modificări locale. Update-urile pot fi forțate individual sau prin a reverifica update-urile pentru toate temele (modificările locale vor fi pierdute).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Unele teme care au update-uri nu au fost updatate pentru a nu pierde modificări locale. Update-urile pot fi forțate individual sau prin a reverifica update-urile pentru toate temele (modificările locale vor fi pierdute)." }, "updateCheckFailBadResponseCode": { "message": "Update eșuat: server-ul a răspuns cu acest cod $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1065,75 +804,57 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Update eșuat: server-ul nu este avabil.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Update eșuat: server-ul nu este avabil." }, "updateCheckHistory": { - "message": "Historicul update-urilor", - "description": "" + "message": "Historicul update-urilor" }, "updateCheckManualUpdateForce": { - "message": "Instalați update-urile (modificările locale vor fi șterse)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Instalați update-urile (modificările locale vor fi șterse)" }, "updateCheckManualUpdateHint": { - "message": "Update-ul forțat va șterge toate modificările locale.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Update-ul forțat va șterge toate modificările locale." }, "updateCheckSkippedLocallyEdited": { - "message": "Tema a fost editată local.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Tema a fost editată local." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Tema poate a fost modificată local.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Tema poate a fost modificată local." }, "updateCheckSucceededNoUpdate": { - "message": "Tema este cu update-urile la zi.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Tema este cu update-urile la zi." }, "updateCompleted": { - "message": "Update realizat.", - "description": "Text that displays when an update completed" + "message": "Update realizat." }, "updatesCurrentlyInstalled": { - "message": "Update-uri instalate:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." + "message": "Update-uri instalate:" }, "usercssAvoidOverwriting": { - "message": "Vă rugăm să modificați valoarea @name și @namespace pentru a împiedica scrierea peste o temă existentă.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." + "message": "Vă rugăm să modificați valoarea @name și @namespace pentru a împiedica scrierea peste o temă existentă." }, "usercssConfigIncomplete": { - "message": "Tema a fost updatată sau ștearsă după ce configurațiile au fost afișate. Aceste variabile nu au fost salvate pentru a nu corupe metadata temei.", - "description": "" + "message": "Tema a fost updatată sau ștearsă după ce configurațiile au fost afișate. Aceste variabile nu au fost salvate pentru a nu corupe metadata temei." }, "usercssEditorNamePlaceholder": { - "message": "Specificați @name", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" + "message": "Specificați @name" }, "usercssReplaceTemplateConfirmation": { - "message": "Înlocuiți tema de bază a formatului Usercss cu acest cod?", - "description": "" + "message": "Înlocuiți tema de bază a formatului Usercss cu acest cod?" }, "usercssReplaceTemplateName": { - "message": "@name este gol și înlocuiețte valoarea de bază", - "description": "The text shown after @name when creating a new Usercss style" + "message": "@name este gol și înlocuiețte valoarea de bază" }, "usercssReplaceTemplateSectionBody": { - "message": "Introduce cod aici...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" + "message": "Introduce cod aici..." }, "versionInvalidOlder": { - "message": "Versiunea este mai veche decât cea instalată.", - "description": "Displayed when the version of style is older than the installed one" + "message": "Versiunea este mai veche decât cea instalată." }, "writeStyleFor": { - "message": "Scrieți temă pentru: ", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Scrieți temă pentru: " }, "writeStyleForURL": { - "message": "acest URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "acest URL" } } diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index 2334e357..4340c0ae 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus не может получить доступ к некоторым типам файлов (например, файлы PDF и JSON)." + }, "addStyleLabel": { - "message": "Создать стиль", - "description": "Label for the button to go to the add style page" + "message": "Создать стиль" }, "addStyleTitle": { - "message": "Добавление стиля", - "description": "Title of the page for adding styles" + "message": "Добавление стиля" }, "alphaChannel": { - "message": "Прозрачность", - "description": "Label of color's opacity" + "message": "Прозрачность" }, "appliesAdd": { - "message": "Добавить", - "description": "Label for the button to add an 'applies' entry" + "message": "Добавить" }, "appliesDisplay": { "message": "Применить к: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +23,270 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "и другие", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "и другие" }, "appliesDomainOption": { - "message": "URL в домене", - "description": "Option to make the style apply to the entered string as a domain" + "message": "URL в домене" }, "appliesHelp": { - "message": "Чтобы указать, к каким URL относится код в этом разделе, воспользуйтесь параметром \"Применить к\".", - "description": "Help text for 'applies to' section" + "message": "Чтобы указать, к каким URL относится код в этом разделе, воспользуйтесь параметром \"Применить к\"." }, "appliesLabel": { - "message": "Применить к:", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Применить к:" }, "appliesLineWidgetLabel": { - "message": "Показать целевые сайты секций", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Показать целевые сайты секций" }, "appliesLineWidgetWarning": { - "message": "Не работает с минифицированным CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Не работает с минифицированным CSS" }, "appliesRegexpOption": { - "message": "URL, соответствующим регулярному выражению", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "URL, соответствующим регулярному выражению" }, "appliesRemove": { - "message": "Удалить", - "description": "Label for the button to remove an 'applies' entry" + "message": "Удалить" }, "appliesRemoveError": { - "message": "Нельзя удалить последний элемент", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Нельзя удалить последний элемент" }, "appliesSpecify": { - "message": "Указать", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Указать" }, "appliesToEverything": { - "message": "Все", - "description": "Text displayed for styles that apply to all sites" + "message": "Все" }, "appliesUrlPrefixOption": { - "message": "URL, начинающимся с", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "URL, начинающимся с" }, "applyAllUpdates": { - "message": "Применить все обновления", - "description": "Label for the button to apply all detected updates" + "message": "Применить все обновления" }, "author": { - "message": "Автор", - "description": "Label for the style author" + "message": "Автор" }, "backupButtons": { - "message": "Резервное копирование", - "description": "Heading for backup" + "message": "Резервное копирование" }, "backupMessage": { - "message": "Нажмите Импорт чтобы выбрать файл или просто перетащите его на эту страницу", - "description": "Message for backup" + "message": "Нажмите «Импорт», чтобы выбрать файл или просто перетащите его на эту страницу" }, "bckpInstStyles": { - "message": "Экспорт стилей", - "description": "" + "message": "Экспорт стилей" }, "checkAllUpdates": { - "message": "Найти обновления всех стилей", - "description": "Label for the button to check all styles for updates" + "message": "Проверить обновления всех стилей" }, "checkAllUpdatesForce": { - "message": "Я не менял стили, проверить заново!", - "description": "Label for the button to apply all detected updates" + "message": "Я не менял стили, проверить заново!" }, "checkForUpdate": { - "message": "Проверить обновление", - "description": "Label for the button to check a single style for an update" + "message": "Проверить обновление" }, "checkingForUpdate": { - "message": "Проверка…", - "description": "Text to display when checking a style for an update" + "message": "Проверка…" }, "clickToUninstall": { - "message": "Нажмите, чтобы удалить стиль", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Нажмите, чтобы удалить стиль" }, "cm_autoCloseBrackets": { - "message": "Закрывать скобки/кавычки при наборе", - "description": "Label for the checkbox in the style editor." + "message": "Закрывать скобки/кавычки при наборе" }, "cm_autoCloseBracketsTooltip": { - "message": "Автоматически вставлять закрывающий символ при наборе открывающего из ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Автоматически вставлять закрывающий символ при наборе открывающего из ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Подсказки при наборе кода", - "description": "Label for the checkbox in the style editor." + "message": "Подсказки при наборе кода" }, "cm_colorpicker": { - "message": "Раскрашивать цвета в CSS", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Раскрашивать цвета в CSS" }, "cm_indentWithTabs": { - "message": "Умные отступы при помощи табуляции", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Умные отступы при помощи табуляции" }, "cm_keyMap": { - "message": "Раскладка", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Раскладка" }, "cm_lineWrapping": { - "message": "Перенос по словам", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Перенос по словам" }, "cm_linter": { - "message": "Проверка CSS", - "description": "Select the linter to check for CSS issues" + "message": "Проверка CSS" }, "cm_matchHighlight": { - "message": "Подсветка", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Подсветка" }, "cm_matchHighlightSelection": { - "message": "Выделенный текст", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Выделенный текст" }, "cm_matchHighlightToken": { - "message": "Элемент под курсором", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Элемент под курсором" }, "cm_resizeGripHint": { - "message": "Двойной клик = переключить максимальный размер", - "description": "Tooltip for the resize grip in style editor" + "message": "Двойное нажатие = переключить максимальный размер" }, "cm_selectByTokens": { - "message": "Двойной клик выделяет лексемы", - "description": "Label for the checkbox in the editor." + "message": "Двойное нажатие выделяет лексемы" }, "cm_selectByTokensTooltip": { - "message": "Образцы лексем: .foo-bar-2 #aabbcc 0.32 !important\nПри выключении: выделение по знакам препинания т.е. по словам.", - "description": "" + "message": "Образцы лексем: .foo-bar-2 #aabbcc 0.32 !important\nПри выключении: выделение по знакам препинания т.е. по словам." }, "cm_smartIndent": { - "message": "Умные отступы", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Умные отступы" }, "cm_tabSize": { - "message": "Размер табуляции", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Размер табуляции" }, "cm_theme": { - "message": "Тема", - "description": "Label for the style editor's CSS theme." + "message": "Тема" + }, + "colorpickerPaletteHint": { + "message": "Щёлкните правой кнопкой мыши по образцу, чтобы просмотреть его исходные строки" }, "colorpickerSwitchFormatTooltip": { - "message": "Сменить формат: #FFF -> RGB -> HSL.\nКлик с Shift меняет в обратном направлении.\nТакже клавишами PgUp, PgDn (\"Страница вверх\" и \"Страница вниз\").", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Сменить формат: #FFF -> RGB -> HSL.\nКлик с Shift меняет в обратном направлении.\nТакже клавишами PgUp, PgDn (\"Страница вверх\" и \"Страница вниз\")." }, "colorpickerTooltip": { - "message": "Изменить цвет", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Изменить цвет" }, "configOnChange": { - "message": "сразу", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "сразу" }, "configOnChangeTooltip": { - "message": "Сохранять и применять изменения автоматически", - "description": "" + "message": "Сохранять и применять изменения автоматически" }, "configureStyle": { - "message": "Настроить", - "description": "Label for the button to configure usercss userstyle" + "message": "Настроить" }, "configureStyleOnHomepage": { - "message": "Настроить на домашней странице", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Настроить на главной странице" }, "confirmCancel": { - "message": "Отмена", - "description": "" + "message": "Отмена" }, "confirmClose": { - "message": "Закрыть", - "description": "'Close' button in a confirm dialog" + "message": "Закрыть" }, "confirmDefault": { - "message": "По умолчанию", - "description": "'Set to default' button in a confirm dialog" + "message": "По умолчанию" }, "confirmDelete": { - "message": "Удалить", - "description": "" + "message": "Удалить" }, "confirmDiscardChanges": { - "message": "Отказаться от изменений?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Отказаться от изменений?" }, "confirmNo": { - "message": "Нет", - "description": "'No' button in a confirm dialog" + "message": "Нет" }, "confirmOK": { - "message": "ОК", - "description": "" + "message": "ОК" }, "confirmSave": { - "message": "Сохранить", - "description": "'Save' button in a confirm dialog" + "message": "Сохранить" }, "confirmStop": { - "message": "Стоп", - "description": "'Stop' button in a confirm dialog" + "message": "Стоп" }, "confirmYes": { - "message": "Да", - "description": "'Yes' button in a confirm dialog" + "message": "Да" + }, + "connectingDropbox": { + "message": "Подключение Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Подключение к Dropbox доступно только в приложениях, установленных прямо из интернет-магазина" }, "copied": { - "message": "Скопировано в буфер обмена", - "description": "Message shown when content has been copied to the clipboard" + "message": "Скопировано в буфер обмена" }, "copy": { - "message": "Скопировать в буфер обмена", - "description": "Tooltip for elements which can be copied" + "message": "Скопировать в буфер обмена" + }, + "customNameHint": { + "message": "Введите здесь пользовательское название, чтобы переименовать стиль в пользовательском интерфейсе, не нарушая его обновления" + }, + "customNameResetHint": { + "message": "Прекратить использовать пользовательское название, перейдите на собственное название стиля" + }, + "dateAbbrDay": { + "message": "$value$д.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$ч.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$м.", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$г.", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "Дата установки", - "description": "Option text for the user to sort the style by install date" + "message": "Дата установки" }, "dateUpdated": { - "message": "Дата обновления", - "description": "Option text for the user to sort the style by last update date" + "message": "Дата обновления" }, "dbError": { - "message": "Возникла ошибка доступа к базе данных Stylus. Хотите перейти на страницу с возможными способами решения?", - "description": "Prompt when a DB error is encountered" + "message": "Возникла ошибка доступа к базе данных Stylus. Хотите перейти на страницу с возможными способами решения?" }, "defaultTheme": { - "message": "по-умолчанию", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "по умолчанию" }, "deleteStyleConfirm": { - "message": "Удалить этот стиль?", - "description": "Confirmation before deleting a style" + "message": "Удалить этот стиль?" }, "deleteStyleLabel": { - "message": "Удалить", - "description": "Label for the button to delete a style" + "message": "Удалить" }, "description": { - "message": "Настраивайте стили веб-сайтов с помощью менеджера стилей Stylus. Он позволяет легко установить темы и изменить внешний вид сайтов Google, Facebook, YouTube, Orkut и множества других веб-страниц.", - "description": "Extension description" + "message": "Настраивайте стили веб-сайтов с помощью менеджера стилей Stylus. Он позволяет легко установить темы и изменить внешний вид сайтов Google, Facebook, YouTube, Orkut и множества других веб-страниц." }, "disableAllStyles": { - "message": "Выключить все стили", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Выключить все стили" }, "disableStyleLabel": { - "message": "Отключить", - "description": "Label for the button to disable a style" + "message": "Отключить" }, "dragDropMessage": { - "message": "Перетащите файл с резервной копией стилей в любое место этой страницы, чтобы импортировать его.", - "description": "Drag'n'drop message" + "message": "Перетащите файл с резервной копией стилей в любое место этой страницы, чтобы импортировать его." }, "dragDropUsercssTabstrip": { - "message": "Чтобы установить файл, поместите его на вкладку (область, где отображаются заголовки вкладок).", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Чтобы установить файл, поместите его на вкладку (область, где отображаются заголовки вкладок)." }, "editDeleteText": { - "message": "Удалить", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Удалить" }, "editGotoLine": { - "message": "Перейти к строке (или строке:колонке)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Перейти к строке (или строке:колонке)" }, "editStyleHeading": { - "message": "Изменение стиля", - "description": "Title of the page for editing styles" + "message": "Изменение стиля" }, "editStyleLabel": { - "message": "Изменить", - "description": "Label for the button to go to the edit style page" + "message": "Изменить" }, "editStyleTitle": { "message": "Изменение стиля \"$stylename$\"", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,220 +294,183 @@ } }, "enableStyleLabel": { - "message": "Включить", - "description": "Label for the button to enable a style" + "message": "Включить" }, "excludeStyleByDomainLabel": { - "message": "Исключить текущий домен", - "description": "" + "message": "Исключить текущий домен" }, "excludeStyleByUrlLabel": { - "message": "Исключить текущий URL", - "description": "" + "message": "Исключить текущий URL" }, "exportLabel": { - "message": "Экспорт", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Экспорт" + }, + "exportSavedSuccess": { + "message": "Файл успешно сохранён" }, "externalFeedback": { - "message": "Отзывы", - "description": "Label for the external link to send feedback for the style" + "message": "Отзывы" }, "externalHomepage": { - "message": "Домашняя страницы", - "description": "Label for the external link to style's homepage" + "message": "Главная страница" }, "externalLink": { - "message": "Внешняя ссылка", - "description": "Label for external links" + "message": "Внешняя ссылка" }, "externalSupport": { - "message": "Поддержка", - "description": "Label for the external link to style's support site" + "message": "Поддержка" }, "externalUsercssDocument": { - "message": "Документация по usercss", - "description": "Label for the external link to usercss documentation" + "message": "Документация по Usercss" }, "filteredStyles": { "message": "найдено $numShown$ из $numTotal$всего", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Примененные фильтры не соответствуют ни одному стилю", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Применённые фильтры не соответствуют ни одному стилю" }, "findStyles": { - "message": "Найти стили", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Найти стили" }, "findStylesForSite": { - "message": "Найти еще стили для этого веб-сайта", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Найти ещё стили для этого веб-сайта" }, "findStylesInline": { - "message": "и показать здесь", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "и показать здесь" }, "findStylesInlineTooltip": { - "message": "Показывать найденные стили в этом окне.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Показывать найденные стили в этом окне." }, "genericAdd": { - "message": "Добавить", - "description": "Used in various places for an action that adds something" + "message": "Добавить" }, "genericClone": { - "message": "Клонировать", - "description": "Used in various places for an action that clones something" + "message": "Клонировать" + }, + "genericDescription": { + "message": "Описание" }, "genericDisabledLabel": { - "message": "Отключен", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Отключён" }, "genericEnabledLabel": { - "message": "Активные", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Активен" }, "genericError": { - "message": "Ошибка", - "description": "Used in various places to indicate some error occurred." + "message": "Ошибка" }, "genericHistoryLabel": { - "message": "История", - "description": "Used in various places to show a history log of something" + "message": "История" }, "genericNext": { - "message": "Следующий", - "description": "Used in various places to select/perform the next step/action" + "message": "Следующий" }, "genericPrevious": { - "message": "Предыдущий", - "description": "Used in various places to select/perform the previous step/action" + "message": "Предыдущий" }, "genericResetLabel": { - "message": "Сброс", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Сброс" }, "genericSavedMessage": { - "message": "Сохранено", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Сохранено" }, "genericTitle": { - "message": "Имя", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Имя" }, "genericUnknown": { - "message": "Неизвестно", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Неизвестно" + }, + "gettingStyles": { + "message": "Получение всех стилей..." }, "helpAlt": { - "message": "Справка", - "description": "Alternate text for help buttons" + "message": "Справка" }, "helpKeyMapCommand": { - "message": "Введите имя команды", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Введите имя команды" }, "helpKeyMapHotkey": { - "message": "Нажмите клавишу", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Нажмите клавишу" }, "hostDisabled": { - "message": "Этот хост был отключен из-за ошибки в текущей версии используемого браузера", - "description": "Tooltip for cloud host disabled" + "message": "Этот хост был отключён из-за ошибки в текущей версии используемого браузера" }, "importAppendLabel": { - "message": "Добавить к стилю", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Добавить к стилю" }, "importAppendTooltip": { - "message": "Добавить импортируемый стиль к редактируемому", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Добавить импортируемый стиль к редактируемому" }, "importLabel": { - "message": "Импорт", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Импорт" + }, + "importPreprocessor": { + "message": "Стиль с @preprocessor не будет работать в классическом режиме. Вы можете переключить редактор в режим Usercss: 1) откройте менеджер стилей, 2) включить флажок \"в виде Usercss\", 3) нажмите на \"Создать стиль\"\n\nИмпортировать сейчас?" + }, + "importPreprocessorTitle": { + "message": "Потенциальная проблема из-за @preprocessor" }, "importReplaceLabel": { - "message": "Заменить стиль", - "description": "Label for the button to import and overwrite current style" + "message": "Заменить стиль" }, "importReplaceTooltip": { - "message": "Удалить содержимое редактируемого стиля и заменить его на импортируемый стиль", - "description": "Label for the button to import and overwrite current style" + "message": "Удалить содержимое редактируемого стиля и заменить его на импортируемый стиль" }, "importReportLegendAdded": { - "message": "добавлено", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "добавлено" }, "importReportLegendIdentical": { - "message": "идентичные пропущены", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "идентичные пропущены" }, "importReportLegendInvalid": { - "message": "некорректных пропущено", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "некорректных пропущено" }, "importReportLegendUpdatedBoth": { - "message": "обновлены мета-данные и код", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "обновлены мета-данные и код" }, "importReportLegendUpdatedCode": { - "message": "обновлен код", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "обновлён код" }, "importReportLegendUpdatedMeta": { - "message": "обновлены мета-данные", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "обновлены мета-данные" }, "importReportTitle": { - "message": "Импорт стилей завершен", - "description": "Title of the report shown after importing styles" + "message": "Импорт стилей завершён" }, "importReportUnchanged": { - "message": "Ничего не изменилось.", - "description": "Message in the report shown after importing styles" + "message": "Ничего не изменилось." }, "importReportUndone": { - "message": "восстановленных стилей", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "восстановленных стилей" }, "importReportUndoneTitle": { - "message": "Откат импорта завершен", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Откат импорта завершён" }, "installButton": { - "message": "Установить стиль", - "description": "Label for install button" + "message": "Установить стиль" }, "installButtonInstalled": { - "message": "Стиль установлен", - "description": "Text displayed when the style is successfully installed" + "message": "Стиль установлен" }, "installButtonReinstall": { - "message": "Переустановить стиль", - "description": "Label for reinstall button" + "message": "Переустановить стиль" }, "installButtonUpdate": { - "message": "Обновить стиль", - "description": "Label for update button" + "message": "Обновить стиль" }, "installUpdate": { - "message": "Установить обновление", - "description": "Label for the button to install an update for a single style" + "message": "Установить обновление" }, "installUpdateFrom": { "message": "Источник обновления стиля: $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -543,32 +478,25 @@ } }, "installUpdateFromLabel": { - "message": "Проверить обновления", - "description": "Label for the checkbox to save current URL for update check" + "message": "Проверить обновления" }, "license": { - "message": "Лицензия", - "description": "Label for the license" + "message": "Лицензия" }, "linkGetHelp": { - "message": "Помощь", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Помощь" }, "linkGetStyles": { - "message": "Скачать стили", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Скачать стили" }, "linkStylusWiki": { - "message": "Инфо", - "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" + "message": "Вики" }, "linkTranslate": { - "message": "Перевод", - "description": "Transifex link text on the manage page" + "message": "Перевод" }, "linterCSSLintIncompatible": { "message": "CSSLint не поддерживает препроцессор $preprocessorname$", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -576,12 +504,10 @@ } }, "linterCSSLintSettings": { - "message": "(значения: 0 = выключить, 1 = предупреждение; 2 = ошибка)", - "description": "CSSLint rule config values" + "message": "(значения: 0 = выключить, 1 = предупреждение; 2 = ошибка)" }, "linterConfigPopupTitle": { "message": "Установить конфиграцию правил $linter$", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -589,20 +515,16 @@ } }, "linterConfigTooltip": { - "message": "Настроить проверку CSS", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "Настроить проверку CSS" }, "linterInvalidConfigError": { - "message": "Не сохранено из-за неправильных настроек ниже:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Не сохранено из-за неправильных настроек ниже:" }, "linterIssues": { - "message": "Проблемы", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Проблемы" }, "linterIssuesHelp": { "message": "Проблемы, найденные правилами $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -610,144 +532,93 @@ } }, "linterJSONError": { - "message": "Ошибка формата JSON", - "description": "Setting linter config with invalid JSON" + "message": "Ошибка формата JSON" }, "linterResetMessage": { - "message": "Для отмены случайного сброса нажмите Ctrl-Z (или Cmd-Z) в окне ввода", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "Для отмены случайного сброса нажмите Ctrl-Z (или Cmd-Z) в окне ввода" }, "linterRulesLink": { - "message": "Открыть полный список правил", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Открыть полный список правил" }, "liveReloadError": { - "message": "Ошибка слежения за файлом", - "description": "The label of live-reload error" + "message": "Ошибка слежения за файлом" }, "liveReloadInstallHint": { - "message": "Держите эту вкладку открытой, чтобы автоматически обновлять стиль при внешних изменениях.", - "description": "The label of live-reload feature" + "message": "Держите эту вкладку открытой, чтобы автоматически обновлять стиль при внешних изменениях." }, "liveReloadInstallHintFF": { - "message": "Оставьте эту вкладку и исходную вкладку открытой, чтобы автоматически обновлять стиль при внешних изменениях.", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "Оставьте эту вкладку и исходную вкладку открытой, чтобы автоматически обновлять стиль при внешних изменениях." }, "liveReloadLabel": { - "message": "Автозагрузка изменений", - "description": "The label of live-reload feature" + "message": "Автозагрузка изменений" }, "manageFavicons": { - "message": "Пиктограммы для целевых сайтов", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Пиктограммы для целевых сайтов" }, "manageFaviconsGray": { - "message": "Обесцвечивать", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Обесцвечивать" }, "manageFaviconsHelp": { - "message": "Используется сторонний сервис https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Используется сторонний сервис https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Фильтры", - "description": "Label for filters container" + "message": "Фильтры" }, "manageHeading": { - "message": "Менеджер стилей", - "description": "Heading for the manage page" + "message": "Менеджер стилей" }, "manageMaxTargets": { - "message": "Кол-во целевых сайтов/выражений", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Кол-во целевых сайтов/выражений" }, "manageNewStyleAsUsercss": { - "message": "в виде Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "в виде Usercss" }, "manageNewUI": { - "message": "Новый интерфейс", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Новый интерфейс" }, "manageOnlyDisabled": { - "message": "Только неактивные стили", - "description": "Checkbox to show only disabled styles" + "message": "Только неактивные стили" }, "manageOnlyEnabled": { - "message": "Только включенные стили", - "description": "Checkbox to show only enabled styles" + "message": "Только включенные стили" }, "manageOnlyExternal": { - "message": "Только сторонние стили", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Только сторонние стили" }, "manageOnlyLocal": { - "message": "Только локально созданные стили", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Только локально созданные стили" }, "manageOnlyLocalTooltip": { - "message": "(т.е. стили, не установленные посредством сайта userstyles.org)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(т.е. стили, не установленные посредством сайта userstyles.org)" }, "manageOnlyNonUsercss": { - "message": "Спрятать Usercss стили", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Спрятать Usercss стили" }, "manageOnlyUpdates": { - "message": "Только обновляемые и проблемные", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Только обновляемые и проблемные" }, "manageOnlyUsercss": { - "message": "Только Usercss стили", - "description": "Checkbox to show only Usercss styles" + "message": "Только Usercss стили" }, "menuShowBadge": { - "message": "Число активных стилей", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Число активных стилей" }, "meta_invalidCheckboxDefault": { - "message": "Неверный флажок @var: значение должно быть 0 или 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Неверный флажок @var: значение должно быть 0 или 1" }, "meta_invalidColor": { "message": "Неверный цвет @var: $color$ это не цвет", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Ожидание числа" + }, "meta_invalidRange": { "message": "Неверный @var$type$: значение должно быть числом или массивом ", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Неверный @var $type$: несколько единиц определены", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Неверный @var $type$: массив содержит слишком много элементов", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Неверный @var $type$: элементы в массиве должны быть числом, строкой или нулем", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -756,16 +627,6 @@ }, "meta_invalidRangeDefault": { "message": "Неверный @var $type$: значение по умолчанию равно нулю", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Неверный @var $type$: значение по умолчанию ниже минимального", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -774,7 +635,22 @@ }, "meta_invalidRangeMax": { "message": "Неверный @var $type$: значение по умолчанию больше максимального", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Неверный @var $type$: значение по умолчанию ниже минимального", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Неверный @var $type$: несколько единиц определены", "placeholders": { "type": { "content": "$1" @@ -783,7 +659,14 @@ }, "meta_invalidRangeStep": { "message": "Неверный @var $type$: значение по умолчанию не является кратным шага", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Неверный @var $type$: массив содержит слишком много элементов", "placeholders": { "type": { "content": "$1" @@ -792,7 +675,6 @@ }, "meta_invalidRangeUnits": { "message": "Неверный @var $type$: '$units$' не является действительной единицей", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -802,37 +684,40 @@ } } }, - "meta_invalidSelect": { - "message": "Неверный @var select: значением по умолчанию должен быть массив или объект", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Неверный @var $type$: элементы в массиве должны быть числом, строкой или нулем", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Неверный @var select: значения внутри массива/объекта должны быть строкой", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Неверный @var select: значением по умолчанию должен быть массив или объект" }, "meta_invalidSelectEmptyOptions": { - "message": "Неверный @var select: список опций пуст", - "description": "Error displayed when the value of @var select is invalid" + "message": "Неверный @var select: список опций пуст" }, "meta_invalidSelectLabel": { - "message": "Неверный @var select: ярлык опции пуст", - "description": "Error displayed when the value of @var select is invalid" + "message": "Неверный @var select: ярлык опции пуст" }, "meta_invalidSelectMultipleDefaults": { - "message": "Неверный @var select: определены несколько параметров по умолчанию", - "description": "Error displayed when the value of @var select is invalid" + "message": "Неверный @var select: определены несколько параметров по умолчанию" }, "meta_invalidSelectNameDuplicated": { - "message": "Неверный @var select: имя опции дублируется", - "description": "Error displayed when the value of @var select is invalid" + "message": "Неверный @var select: имя опции дублируется" + }, + "meta_invalidSelectValue": { + "message": "Неверный @var select: значения внутри массива/объекта должны быть строкой" }, "meta_invalidSelectValueMismatch": { - "message": "Неверный @var select: значение не существует в списке опций", - "description": "Error displayed when the value of @var select is invalid" + "message": "Неверный @var select: значение не существует в списке опций" + }, + "meta_invalidString": { + "message": "Ожидание строки в кавычках" }, "meta_invalidURLProtocol": { "message": "Неверный протокол URL. Разрешены только http и https: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -840,29 +725,13 @@ } }, "meta_invalidVersion": { - "message": "Неверный номер версии. Значение не соответствует шаблону SemVer: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "Ожидание числа", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Ожидание строки в кавычках", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "Неверный номер версии" }, "meta_invalidWord": { - "message": "Ожидание слова", - "description": "Error displayed when the value is expected to be a word" + "message": "Ожидание слова" }, "meta_missingChar": { "message": "Ожидание символа: $chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -870,12 +739,10 @@ } }, "meta_missingEOT": { - "message": "Ожидание данной EOT", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "Ожидание данной EOT" }, "meta_missingMandatory": { "message": "Отсутствуют обязательные метаданные: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -884,7 +751,6 @@ }, "meta_unknownJSONLiteral": { "message": "Неверный JSON: $literal$ не является допустимым литералом JSON", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -893,16 +759,33 @@ }, "meta_unknownMeta": { "message": "Неизвестные метаданные: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "Может быть, @$keyOk$? Неизвестные метаданные: @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "Неизвестный @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Неизвестый @$varkey$ тип: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -912,158 +795,137 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Неизвестный @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "Чтобы импортировать ваши стили, вы должны сначала экспортировать их." }, "noStylesForSite": { - "message": "Для этого веб-сайта не установлено ни одного стиля.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Для этого веб-сайта не установлено ни одного стиля." + }, + "numberedLine": { + "message": "Строка:" }, "openManage": { - "message": "Менеджер", - "description": "Link to open the manage page." + "message": "Менеджер" }, "openOptions": { - "message": "Опции", - "description": "Go to Options UI" + "message": "Опции" }, "openStylesManager": { - "message": "Менеджер стилей", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Менеджер стилей" }, "optionsActions": { - "message": "Другие действия", - "description": "" + "message": "Другие действия" }, "optionsAdvanced": { - "message": "Другое", - "description": "" + "message": "Другое" }, "optionsAdvancedContextDelete": { - "message": "Показывать команду \"Удалить\" в контекстном меню редактора", - "description": "" + "message": "Показывать команду \"Удалить\" в контекстном меню редактора" }, "optionsAdvancedExposeIframes": { - "message": "Выявлять iframe путем добавления HTML[stylus-iframe]", - "description": "" + "message": "Выявлять iframe путём добавления HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Выставляет верхний домен сайта в каждом iframe.\nПозволяет писать iframe-specific CSS следующим образом:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Выставляет верхний домен сайта в каждом iframe.\nПозволяет писать iframe-specific CSS следующим образом:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Создавать стили в формате usercss", - "description": "" + "message": "Создавать стили в формате usercss" + }, + "optionsAdvancedPatchCsp": { + "message": "Исправление CSP для обеспечения возможности использования стилевых материалов" + }, + "optionsAdvancedPatchCspNote": { + "message": "Включите эту опцию, если стили содержат изображения или шрифты, которые не загружаются на сайтах со строгой CSP (политикой защиты контента).\n\nВключение этой опции ослабит ограничения CSP, позволяя загружать содержимое основного стиля. Эта опция предназначена только для опытных пользователей, которые понимают потенциальные последствия для безопасности и берут на себя ответственность за контроль содержимого, которое они разрешают. Для получения дополнительной информации читайте об атаках на основе CSS.\n\nТакже имейте в виду, что эта конкретная опция не гарантированно вступит в силу, если другое установленное расширение первым изменит ответ сети." + }, + "optionsAdvancedStyleViaXhr": { + "message": "Режим мгновенного ввода" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "Включите эту опцию, если при просмотре веб-страниц вы сталкиваетесь с флэш-файлом с неохваченным содержимым (FOUC) или же миганием страницы, что особенно заметно при использовании тёмных тем.\n\nТехническая причина заключается в том, что Chrome/Chromium откладывает асинхронное взаимодействие расширений в обычно бессмысленной попытке улучшить скорость загрузки страницы, что может привести к задержке применения стилей. Чтобы обойти это, поскольку веб-расширения не имеют синхронного API, Stylus предоставляет возможность использовать \"устаревший\" синхронный XMLHttpRequest для получения стилей. Это не должно иметь никаких негативных последствий, поскольку запрос выполняется в течение нескольких миллисекунд, в то время как страница всё ещё загружается с сервера.\n\nТем не менее, Chromium выведет предупреждение в консоли devtools. Щёлкнув правой кнопкой мыши на предупреждении и скрыв его, вы предотвратите отображение предупреждений в будущем." }, "optionsBadgeDisabled": { - "message": "Цвет фона в неактивном состоянии", - "description": "" + "message": "Цвет фона в неактивном состоянии" }, "optionsBadgeNormal": { - "message": "Цвет фона", - "description": "" + "message": "Цвет фона" }, "optionsCheck": { - "message": "Обновить стили", - "description": "" + "message": "Обновить стили" }, "optionsCheckUpdate": { - "message": "Найти и установить обновления стилей", - "description": "" + "message": "Найти и установить обновления стилей" }, "optionsCustomizeBadge": { - "message": "Бейдж на пиктограмме в тулбаре", - "description": "" + "message": "Значок на пиктограмме в панели" }, "optionsCustomizeIcon": { - "message": "Значок в панели", - "description": "" + "message": "Значок в панели" }, "optionsCustomizePopup": { - "message": "Всплывающее окно", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Обновления", - "description": "" + "message": "Всплывающее окно" }, "optionsCustomizeSync": { - "message": "Синхронизация с облаком", - "description": "" + "message": "Синхронизация с облаком" + }, + "optionsCustomizeUpdate": { + "message": "Обновления" }, "optionsHeading": { - "message": "Настройки", - "description": "Heading for options section on manage page." + "message": "Настройки" }, "optionsIconDark": { - "message": "Тёмный интерфейс браузера", - "description": "" + "message": "Тёмный интерфейс браузера" }, "optionsIconLight": { - "message": "Светлый интерфейс браузера", - "description": "" + "message": "Светлый интерфейс браузера" }, "optionsOpen": { - "message": "Открыть", - "description": "" + "message": "Открыть" }, "optionsOpenManager": { - "message": "Менеджер стилей", - "description": "" + "message": "Менеджер стилей" }, "optionsPopupWidth": { - "message": "Ширина всплывающего окна (в пикселах)", - "description": "" + "message": "Ширина всплывающего окна (в пикселях)" }, "optionsReset": { - "message": "Сброс настроек к значениям по-умолчанию", - "description": "" + "message": "Сброс настроек к значениям по умолчанию" }, "optionsResetButton": { - "message": "Сброс настроек", - "description": "" + "message": "Сброс настроек" + }, + "optionsStylusThemes": { + "message": "Найти тему интерфейса Stylus" }, "optionsSubheading": { - "message": "Дополнительно", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "После импорта базы стилей из старой версии или из Stylish запустите проверку на обновления из менеджера стилей, чтобы удостовериться в обновлении всех стилей.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Интервал обновления стилей, в часах (укажите 0 для выключения)", - "description": "" - }, - "optionsSyncNone": { - "message": "Ничего", - "description": "" + "message": "Дополнительно" }, "optionsSyncConnect": { - "message": "Подключить", - "description": "" + "message": "Подключить" }, "optionsSyncDisconnect": { - "message": "Отсоединить", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Синхронизировать", - "description": "" + "message": "Отсоединить" }, "optionsSyncLogin": { - "message": "Логин", - "description": "" + "message": "Логин" + }, + "optionsSyncNone": { + "message": "Ничего" + }, + "optionsSyncStatusConnected": { + "message": "Подключено" + }, + "optionsSyncStatusConnecting": { + "message": "Подключение…" + }, + "optionsSyncStatusDisconnected": { + "message": "Отсоединено" + }, + "optionsSyncStatusDisconnecting": { + "message": "Отсоединение…" }, "optionsSyncStatusPull": { "message": "Загружено стилей $loaded$ из $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1075,7 +937,6 @@ }, "optionsSyncStatusPush": { "message": "Загружено стилей $loaded$ из $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1085,261 +946,257 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "Сессия истекла, пожалуйста, войдите снова." + }, "optionsSyncStatusSyncing": { - "message": "Синхронизация", - "description": "" + "message": "Синхронизация" }, - "optionsSyncStatusConnecting": { - "message": "Подключение…", - "description": "" + "optionsSyncSyncNow": { + "message": "Синхронизировать" }, - "optionsSyncStatusConnected": { - "message": "Подключено", - "description": "" + "optionsUpdateImportNote": { + "message": "После импорта базы стилей из старой версии или из Stylish запустите проверку на обновления из менеджера стилей, чтобы удостовериться в обновлении всех стилей." }, - "optionsSyncStatusDisconnecting": { - "message": "Отсоединение…", - "description": "" + "optionsUpdateInterval": { + "message": "Интервал обновления стилей, в часах (укажите 0 для отключения)" }, - "optionsSyncStatusDisconnected": { - "message": "Отсоединено", - "description": "" + "overwriteFileExport": { + "message": "Хотите перезаписать существующий файл?" }, "paginationCurrent": { - "message": "Текущая страница", - "description": "Tooltip for the current page index in search results" + "message": "Текущая страница" }, "paginationEstimated": { - "message": "Предположительное количество страниц", - "description": "Tooltip for the total page count in search results" + "message": "Предположительное количество страниц" }, "paginationNext": { - "message": "Следующая страница", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Следующая страница" }, "paginationPrevious": { - "message": "Предыдущая страница", - "description": "Tooltip for the '<-' button in search results" + "message": "Предыдущая страница" }, "paginationTotal": { - "message": "Всего страниц", - "description": "" + "message": "Всего страниц" }, "parseUsercssError": { - "message": "Stylus не смог распарсить usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus не смог разобрать usercss:" }, "popupAutoResort": { - "message": "Курортные стили в всплывающем окне после переключения", - "description": "Label for the checkbox controlling popup resorting." + "message": "Сортировать стили после переключения" }, "popupBorders": { - "message": "Добавить белый бордюр по бокам", - "description": "" + "message": "Добавить белую рамку по бокам" }, "popupBordersTooltip": { - "message": "Полезно для темных тем оформления т.к. новый Chrome не рисует боковые бордюры", - "description": "" + "message": "Полезно для тёмных тем оформления т.к. новый Chrome отображает рамки по бокам" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, и цифровой блок - переключает стиль по номеру (0 это 10)\n- переключает стиль начинающийся с нажатой буквы\n открывает в редакторе вместо переключения\n включает стили в списке\n выключает стили в списке\n и <`> (обратный апостроф) - переключает изначально включенные стили вне зависимости от последующего переключения других ранее не включенных стилей, так что можно потестировать и восстановить исходный список нажав \nПодробнее на вики.", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0>, и цифровой блок - переключает стиль по номеру (0 это 10)\n- переключает стиль, начинающийся с нажатой буквы\n открывает в редакторе вместо переключения\n включает стили в списке\n выключает стили в списке\n и <`> (обратный апостроф) - переключает изначально включенные стили вне зависимости от последующего переключения других ранее не включенных стилей, так что можно протестировать и восстановить исходный список, нажав \nПодробнее на вики." }, "popupHotkeysTooltip": { - "message": "Показать клавиатурные сочетания", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Показать горячие клавиши" }, "popupManageTooltip": { - "message": "Shift-клик или правый клик откроет менеджер с стилями только для этого сайта.", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift-ЛКМ или ПКМ откроет менеджер с стилями только для этого сайта." }, "popupMenuButtonTooltip": { - "message": "Меню действий", - "description": "Tooltip for menu button in popup." + "message": "Меню действий" + }, + "popupOpenEditInPopup": { + "message": "Использовать простое окно (без омнибокса)" }, "popupOpenEditInWindow": { - "message": "Открывать редактор в новом окне", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Открывать редактор в новом окне" }, "popupOpenEditInWindowTooltip": { - "message": "Также включается вытаскиванием вкладки из окна браузера\nи выключается перетаскиванием вкладки в другое окно браузера.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Также включается вытаскиванием вкладки из окна браузера\nи выключается перетаскиванием вкладки в другое окно браузера." }, "popupStylesFirst": { - "message": "Список стилей сверху", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Список стилей сверху" }, "prefShowBadge": { - "message": "Показывать количество активных стилей для открытого сайта", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Показывать количество активных стилей для открытого сайта" }, "previewLabel": { - "message": "Предпросмотр", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Предпросмотр" }, "previewTooltip": { - "message": "Временно применяет стиль пока вы его редактируете.\nСохраните стиль, чтобы сделать изменения постоянными.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Временно применяет стиль пока вы его редактируете.\nСохраните стиль, чтобы сделать изменения постоянными." + }, + "publish": { + "message": "Опубликовать" + }, + "publishPush": { + "message": "Выпустить обновление" + }, + "publishReconnect": { + "message": "Попробуйте отключить, а затем опубликовать снова" + }, + "publishRetry": { + "message": "Stylus всё ещё пытается опубликовать этот стиль, но вы можете повторить попытку, если не видите активности аутентификации или всплывающих окон. Повторить попытку сейчас?" + }, + "publishStyle": { + "message": "Опубликовать стиль" + }, + "publishUsw": { + "message": "Использует " + }, + "readingStyles": { + "message": "Чтение стилей..." }, "reload": { - "message": "Перезагрузить расширение Stylus", - "description": "Context menu reload" + "message": "Перезагрузить расширение Stylus" }, "replace": { - "message": "Заменить", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Заменить" }, "replaceAll": { - "message": "Заменить все", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Заменить все" }, "replaceWith": { - "message": "Заменить на", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Заменить на" }, "retrieveBckp": { - "message": "Импорт стилей", - "description": "" + "message": "Импорт стилей" + }, + "retrieveDropboxSync": { + "message": "Импорт Dropbox" }, "search": { - "message": "Искать", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Поиск" }, "searchCaseSensitive": { - "message": "Учитывать регистр букв", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Учитывать регистр букв" + }, + "searchGlobalStyles": { + "message": "Также искать глобальные стили" }, "searchNumberOfResults": { - "message": "Количество совпадений", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Количество совпадений" }, "searchNumberOfResults2": { - "message": "Количество совпадений в коде и целевых сайтах", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Количество совпадений в коде и целевых сайтах" }, "searchRegexp": { - "message": "Используйте нотацию /re/ для поиска регулярными выражениями", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Используйте нотацию /re/ для поиска регулярными выражениями" }, "searchResultInstallCount": { - "message": "Всего загрузок", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Всего загрузок" }, "searchResultNoneFound": { - "message": "Стилей для сайта не найдено.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Стилей для сайта не найдено." + }, + "searchResultNotMatching": { + "message": "Стиль установлен, но он не применяется к текущему URL сайта." + }, + "searchResultNotMatchingNote": { + "message": "Попробуйте попросить автора этого пользовательского стиля добавить URL.\n\nВы также можете открыть стиль в менеджере и отредактировать его самостоятельно,\nно имейте в виду, что при этом отключается автоматическое обновление этого стиля." }, "searchResultRating": { - "message": "Рейтинг", - "description": "Text for label that shows the search result's rating" + "message": "Рейтинг" }, "searchResultUpdated": { - "message": "Обновлен", - "description": "Text for label that shows the search result's last update date" + "message": "Обновлён" }, "searchResultWeeklyCount": { - "message": "Загрузок за неделю", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Загрузок за неделю" }, - "searchStyles": { - "message": "Искать по содержимому", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "Поиск стилистических имён по падежам:\nнекоторые слова - все слова в любом порядке\n\"какая-то фраза\" - именно эта фраза без кавычек\n2020 - такой год также показывает стили, обновлённые в 2020 году" + }, + "searchStylesAll": { + "message": "Все" + }, + "searchStylesCode": { + "message": "CSS-код" }, "searchStylesHelp": { - "message": "Клавиша переходит к строке поиска.\nОбычный поиск: ищет в имени, тексте, адресе установки, целевых сайтах. Слова короче трех символов игнорируются.\nСтили для сайта: укажите перед полным адресом сайта, т.е. \nРегулярки: заключите в слэши, добавьте флаги, т.е. \nТочный поиск: заключите в двойные кавычки, т.е. <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": " или клавиша фокусируется в поле поиска.\nРежим по умолчанию - поиск обычного текста по всем терминам, разделённым пробелами, в любом порядке.\nТочные слова: заключите запрос в двойные кавычки, например <\".header ~ div\">\nРегулярные выражения: включают косые черты и флаги, напр: \n\"По URL\" в выборе области видимости: находит стили, которые применяются к полностью указанному URL, например https://www.example.org/\n\"Метаданные\" в выборе области видимости: поиск по именам, спецификаторам \"Применить к\", URL установки, URL обновления и всему блоку метаданных для стилей usercss." + }, + "searchStylesMatchUrl": { + "message": "По URL" + }, + "searchStylesMeta": { + "message": "Метаданные" + }, + "searchStylesName": { + "message": "Имя" }, "sectionAdd": { - "message": "Добавить раздел", - "description": "Label for the button to add a section" + "message": "Добавить раздел" }, "sectionCode": { - "message": "Код", - "description": "Label for the code for a section" + "message": "Код" }, "sectionRemove": { - "message": "Удалить раздел", - "description": "Label for the button to remove a section" + "message": "Удалить раздел" }, "sectionRestore": { - "message": "Восстановить удаленный раздел", - "description": "Label for the button to restore a removed section" + "message": "Восстановить удалённый раздел" + }, + "sections": { + "message": "Разделы" }, "shortcuts": { - "message": "Клавиши", - "description": "Go to shortcut configuration" + "message": "Клавиши" }, "shortcutsNote": { - "message": "Назначить клавишу", - "description": "" + "message": "Назначить клавишу" }, "sortDateNewestFirst": { - "message": "новые сверху", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "новые сверху" }, "sortDateOldestFirst": { - "message": "старые сверху", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "старые сверху" }, "sortLabel": { - "message": "Порядок сортировки списка стилей", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Порядок сортировки списка стилей" }, "sortLabelTitleAsc": { - "message": "Название в алфавитном порядке", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Название в алфавитном порядке" }, "sortLabelTitleDesc": { - "message": "Название в обратном порядке", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Название в обратном порядке" }, "sortStylesHelp": { - "message": "Эта настройка позволяет выбрать порядок сортировки списка стилей. По умолчанию названия выводятся в алфавитном порядке. Можно выбрать обратный порядок.\nТакже можно выбрать составной критерий сортировки – отдельные критерии разделены знаком \"+\" и ведут себя примерно как колонки в таблице.\nНапример, при выборе «Активные + Имя» все активные стили будут сгруппированы вверху списка, неактивные внизу, а внутри каждой группы строки будут отсортированы по имени.", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "Эта настройка позволяет выбрать порядок сортировки списка стилей. По умолчанию названия выводятся в алфавитном порядке. Можно выбрать обратный порядок.\nТакже можно выбрать составной критерий сортировки – отдельные критерии разделены знаком \"+\" и ведут себя примерно как колонки в таблице.\nНапример, при выборе «Активные + Имя» все активные стили будут сгруппированы вверху списка, неактивные внизу, а внутри каждой группы строки будут отсортированы по имени." }, "sortStylesHelpTitle": { - "message": "Сортировка", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Сортировка" }, "styleBadRegexp": { - "message": "Ошибка в регулярном выражении.", - "description": "Validation message for a bad regexp in a style" + "message": "Ошибка в регулярном выражении." }, "styleBeautify": { - "message": "Причесать", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Причесать" + }, + "styleBeautifyHint": { + "message": "Подсказка: щёлкните правой кнопкой мыши на кнопке \"Причесать\" или используйте комбинацию клавиш, указанную ниже, чтобы выполнить реформатирование без отображения этой панели" }, "styleBeautifyIndentConditional": { - "message": "Отступ внутри @media, @supports", - "description": "CSS-beautifier option" + "message": "Отступ внутри @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "Беречь пустые строки", - "description": "CSS-beautifier option" + "message": "Беречь пустые строки" }, "styleCancelEditLabel": { - "message": "Все стили", - "description": "Label for cancel button for style editing" + "message": "Все стили" }, "styleChangesNotSaved": { - "message": "Вы изменили этот стиль, но не сохранили его.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Вы изменили этот стиль, но не сохранили его." }, "styleEnabledLabel": { - "message": "Включено", - "description": "Label for the enabled state of styles" + "message": "Включено" }, "styleFromMozillaFormatError": { - "message": "Ошибка импорта формата Mozilla", - "description": "Label for the import error" + "message": "Ошибка импорта формата Mozilla" }, "styleFromMozillaFormatPrompt": { - "message": "Вставьте содержимое стиля в формате Mozilla", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Вставьте содержимое стиля в формате Mozilla" }, "styleInstall": { "message": "Установить \"$stylename$\" в Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1348,7 +1205,6 @@ }, "styleInstallFailed": { "message": "Ошибка установки стиля!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1357,86 +1213,71 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' уже установлен. Обновить?\nВерсии: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Введите название", - "description": "Error displayed when user saves without providing a name" + "message": "Введите название" }, "styleMozillaFormatHeading": { - "message": "Формат Mozilla", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Формат Mozilla" + }, + "styleName": { + "message": "Название стиля" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Стиль не был применен из-за некорректного regexp()", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Стиль не был применён из-за некорректного regexp()" }, "styleRegexpInvalidExplanation": { - "message": "Некоторые 'regexp()' выражения не удалось скомпилировать.", - "description": "" + "message": "Некоторые 'regexp()' выражения не удалось скомпилировать." }, "styleRegexpPartialExplanation": { - "message": "В стиле используются regexp-выражения, которые соответствуют лишь части адреса, что нарушает спецификацию CSS4 @document, требующую соответствия всего адреса целиком. Секции стиля с такими regexp не были применены к странице. Вероятно, этот стиль был создан в \"Stylish для Chrome\", который некорректно проверяет regexp (известный баг).", - "description": "" + "message": "В стиле используются regexp-выражения, которые соответствуют лишь части адреса, что нарушает спецификацию CSS4 @document, требующую соответствия всего адреса целиком. Разделы стиля с такими regexp не были применены к странице. Вероятно, этот стиль был создан в \"Stylish для Chrome\", который некорректно проверяет regexp (известная ошибка)." }, "styleRegexpProblemTooltip": { - "message": "Кол-во пропущенных секций из-за неправильного regexp()", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Кол-во пропущенных разделов из-за неправильного regexp()" }, "styleRegexpTestButton": { - "message": "Тест регулярки", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "Тест регулярки" }, "styleRegexpTestFull": { - "message": "Соответствующие вкладки", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Соответствующие вкладки" }, "styleRegexpTestInvalid": { - "message": "Пропущены некомпилируемые регулярки", - "description": "RegExp test report: label for the invalid expressions" + "message": "Пропущены некомпилируемые регулярки" }, "styleRegexpTestNone": { - "message": "Нет соответствующих вкладок", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Нет соответствующих вкладок" }, "styleRegexpTestNote": { - "message": "Полезная информация: используйте одиночный \\ в строке ввода regexp, т.к. он автомачески преобразуется в двойной \\\\ в тексте стиля согласно спецификации CSS для строк в кавычках.", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "Полезная информация: используйте одиночный \\ в строке ввода regexp, т.к. он автомачески преобразуется в двойной \\\\ в тексте стиля согласно спецификации CSS для строк в кавычках." }, "styleRegexpTestPartial": { - "message": "Не применено, т.к. соответствие не полное", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Не применено, т.к. соответствие не полное" }, "styleRegexpTestTitle": { - "message": "Список соответствующих вкладок (щелкните на адресе, чтобы активировать)", - "description": "RegExp test report: title of the report" + "message": "Список соответствующих вкладок (щелкните на адресе, чтобы активировать)" }, "styleSaveLabel": { - "message": "Сохранить", - "description": "Label for save button for style editing" + "message": "Сохранить" }, "styleToMozillaFormatHelp": { - "message": "Формат кода Mozilla можно отправлять на сайт userstyles.org и использовать в дополнении Stylish для Firefox.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Формат кода Mozilla можно отправлять на сайт userstyles.org и использовать в дополнении Stylish для Firefox." }, "styleToMozillaFormatTitle": { - "message": "Стиль в формате Mozilla", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Стиль в формате Mozilla" }, "styleUpdate": { "message": "Подтвердите обновление стиля '$stylename$'.", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1444,72 +1285,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "Стиль был изменен вне редактора. Перезагрузить?", - "description": "Confirmation to update the style in the editor" + "message": "Стиль был изменён вне редактора. Перезагрузить?" }, "stylusUnavailableForURL": { - "message": "Такие адреса не поддерживаются.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Такие адреса не поддерживаются." }, "stylusUnavailableForURLdetails": { - "message": "В целях обеспечения безопасности браузер запрещает расширениям изменять встроенные страницы (например, chrome://version, стандартная страница новой вкладки начиная с Chrome 61, about:addons и т.д.), страницы других расширений и \"магазин\" расширений (Chrome Web Store в chromium-браузерах, AMO в Firefox и т.д.)", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "В целях обеспечения безопасности браузер запрещает расширениям изменять встроенные страницы (например, chrome://version, стандартная страница новой вкладки начиная с Chrome 61, about:addons и т.д.), страницы других расширений и \"магазин\" расширений (интернет-магазин Chrome в chromium-браузерах, AMO в Firefox и т.д.)" + }, + "syncDropboxDeprecated": { + "message": "Импорт/экспорт Dropbox заменен более продвинутой синхронизацией стилей на странице параметров." + }, + "syncDropboxStyles": { + "message": "Экспорт Dropbox" + }, + "syncError": { + "message": "Сбой синхронизации" + }, + "syncErrorRelogin": { + "message": "Синхронизация не удалась.\nПопробуйте повторно войти в систему в опциях Stylus:\nсначала нажмите \"отсоединить\", затем \"подключить\"." }, "syncStorageErrorSaving": { - "message": "Ошибка сохранения. Попробуйте уменьшить количество текста.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Ошибка сохранения. Попробуйте уменьшить количество текста." }, "toggleStyle": { - "message": "Включить/выключить стиль", - "description": "Label for the checkbox to enable/disable a style" + "message": "Включить/выключить стиль" }, "undo": { - "message": "Отменить", - "description": "Button label" + "message": "Отменить" }, "undoGlobal": { - "message": "Отменить (глобально)", - "description": "CSS-beautify global Undo button label" + "message": "Отменить (глобально)" }, "unreachableAMO": { - "message": "Браузер запрещает доступ к сайту", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Браузер запрещает доступ к сайту" }, "unreachableAMOHint": { - "message": "Чтобы разрешить доступ, перейдите на адрес , нажмите правой кнопкой в списке, потом «Создать», потом «Логическое», вставьте текст и нажмите OK, , OK, перезагрузите страницу .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "Начиная с Firefox 60 нужно также удалить адрес этого сайта из в .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Только Firefox 59 и новее можно настроить так, чтобы разрешиь веб-расширениям добавлять стили на этом защищенном сайте.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "Чтобы разрешить доступ, перейдите на адрес , нажмите правой кнопкой в списке, потом «Создать», потом «Логическое», вставьте текст и нажмите OK, , OK, перезагрузите страницу ." }, "unreachableContentScript": { - "message": "Нет связи со страницей. Попробуйте перезагрузить вкладку.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Нет связи со страницей. Попробуйте перезагрузить вкладку." }, "unreachableFileHint": { - "message": "Доступ к адресам file:// возможен только если включить соответствующую опцию для Stylus на странице chrome://extensions.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Доступ к адресам file:// возможен только, если включить соответствующую опцию для Stylus на странице chrome://extensions." }, - "InaccessibleFileHint": { - "message": "Stylus не может получить доступ к некоторым типам файлов (например, файлы PDF и JSON).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "В Firefox 60 и новее вам нужно удалить этот домен из в ." + }, + "unreachableMozSiteHintOldFF": { + "message": "Только Firefox 59 и более новые версии могут быть настроены на разрешение WebExtensions добавлять элементы стиля на сайтах, защищённых CSP, таких как этот." + }, + "unzipStyles": { + "message": "Распаковка стилей..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Обновлений нет.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Обновлений нет." }, "updateAllCheckSucceededSomeEdited": { - "message": "Не все стили были проверены, чтобы не потерять возможные локальные изменения. Форсировать обновление стиля можно индивидуально или запустив перепроверку всех обновляемых стилей (локальные изменения будут утеряны).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Не все стили были проверены, чтобы не потерять возможные локальные изменения. Принудительное обновление стиля можно запустить индивидуально или запустив перепроверку всех обновляемых стилей (локальные изменения будут утеряны)." }, "updateCheckFailBadResponseCode": { "message": "Ошибка обновления: сервер вернул код $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1517,127 +1353,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Ошибка обновления: сервер недоступен.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Ошибка обновления: сервер недоступен." }, "updateCheckHistory": { - "message": "История проверок обновлений", - "description": "" + "message": "История проверок обновлений" }, "updateCheckManualUpdateForce": { - "message": "Установить обновление (локальные изменения будут утеряны)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Установить обновление (локальные изменения будут утеряны)" }, "updateCheckManualUpdateHint": { - "message": "Форсирование обновления удалит локальные изменения.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Принудительное обновления удалит локальные изменения." }, "updateCheckSkippedLocallyEdited": { - "message": "Стиль был изменен локально.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Стиль был изменён локально." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Возможно был изменен локально.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Возможно, был изменён локально." }, "updateCheckSucceededNoUpdate": { - "message": "Нет обновлений.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Нет обновлений." }, "updateCompleted": { - "message": "Обновление завершено.", - "description": "Text that displays when an update completed" + "message": "Обновление завершено." }, "updatesCurrentlyInstalled": { - "message": "Установлено обновлений:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Измените значение @name или @namespace, пожалуйста, чтобы предотвратить перезапись существующего стиля.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Стиль был обновлен или удален после вызова окна настройки. Следующие настройки не были сохранены, чтобы не повредить метаданные стиля:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Укажите имя после @name в коде", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Заменить шаблон по умолчанию для нового стиля в формате Usercss текущим кодом?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Пустой @name заменяет шаблон по умолчанию", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Место для CSS кода...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Версия меньше установленной.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Создать стиль для:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "этого адреса", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Экспорт Dropbox", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Импорт/экспорт Dropbox заменен более продвинутой синхронизацией стилей на странице параметров.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Импорт Dropbox", - "description": "" - }, - "overwriteFileExport": { - "message": "Хотите перезаписать существующий файл?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Файл успешно сохранен", - "description": "" - }, - "noFileToImport": { - "message": "Чтобы импортировать ваши стили, вы должны сначала экспортировать их.", - "description": "" - }, - "connectingDropbox": { - "message": "Подключение Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Подключение к Dropbox доступно только в приложениях, установленных прямо из интернет-магазина", - "description": "" - }, - "gettingStyles": { - "message": "Получение всех стилей...", - "description": "" - }, - "zipStyles": { - "message": "Запаковка стилей...", - "description": "" - }, - "unzipStyles": { - "message": "Распаковка стилей...", - "description": "" - }, - "readingStyles": { - "message": "Чтение стилей...", - "description": "" + "message": "Установлено обновлений:" }, "uploadingFile": { - "message": "Загрузка файла...", - "description": "" + "message": "Загрузка файла..." + }, + "usercssAvoidOverwriting": { + "message": "Измените значение @name или @namespace, пожалуйста, чтобы предотвратить перезапись существующего стиля." + }, + "usercssConfigIncomplete": { + "message": "Стиль был обновлён или удалён после вызова окна настройки. Следующие настройки не были сохранены, чтобы не повредить метаданные стиля:" + }, + "usercssEditorNamePlaceholder": { + "message": "Укажите имя после @name в коде" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Заменить шаблон по умолчанию для нового стиля в формате Usercss текущим кодом?" + }, + "usercssReplaceTemplateName": { + "message": "Пустой @name заменяет шаблон по умолчанию" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Место для CSS кода..." + }, + "versionInvalidOlder": { + "message": "Версия старее установленной." + }, + "writeStyleFor": { + "message": "Создать стиль для:" + }, + "writeStyleForURL": { + "message": "этого адреса" + }, + "zipStyles": { + "message": "Запаковка стилей..." } } diff --git a/_locales/sr/messages.json b/_locales/sr/messages.json index bceed035..a91ccc35 100644 --- a/_locales/sr/messages.json +++ b/_locales/sr/messages.json @@ -1,19 +1,15 @@ { "addStyleLabel": { - "message": "Упиши нови стил", - "description": "Label for the button to go to the add style page" + "message": "Упиши нови стил" }, "addStyleTitle": { - "message": "Додај стил", - "description": "Title of the page for adding styles" + "message": "Додај стил" }, "appliesAdd": { - "message": "Додај", - "description": "Label for the button to add an 'applies' entry" + "message": "Додај" }, "appliesDisplay": { "message": "Примењује се на: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -21,140 +17,106 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "и још", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "и још" }, "appliesDomainOption": { - "message": "УРЛ адресе на домену", - "description": "Option to make the style apply to the entered string as a domain" + "message": "УРЛ адресе на домену" }, "appliesHelp": { - "message": "Употреба 'Примењује се на' одређује опсег УРЛ адреса на које се код у овом одељку примењује.", - "description": "Help text for 'applies to' section" + "message": "Употреба 'Примењује се на' одређује опсег УРЛ адреса на које се код у овом одељку примењује." }, "appliesLabel": { - "message": "Примењује се на", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Примењује се на" }, "appliesRegexpOption": { - "message": "УРЛ адресе које одговарају регуларном изразу", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "УРЛ адресе које одговарају регуларном изразу" }, "appliesRemove": { - "message": "Уклони", - "description": "Label for the button to remove an 'applies' entry" + "message": "Уклони" }, "appliesSpecify": { - "message": "Детаљније", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Детаљније" }, "appliesToEverything": { - "message": "Све", - "description": "Text displayed for styles that apply to all sites" + "message": "Све" }, "appliesUrlOption": { - "message": "УРЛ", - "description": "Option to make the style apply to the entered string as a URL" + "message": "УРЛ" }, "appliesUrlPrefixOption": { - "message": "УРЛ адресе које почињу са", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "УРЛ адресе које почињу са" }, "applyAllUpdates": { - "message": "Примени сва ажурирања", - "description": "Label for the button to apply all detected updates" + "message": "Примени сва ажурирања" }, "checkAllUpdates": { - "message": "Проверите ажурирања за све стилове", - "description": "Label for the button to check all styles for updates" + "message": "Проверите ажурирања за све стилове" }, "checkForUpdate": { - "message": "Проверите ажурирање", - "description": "Label for the button to check a single style for an update" + "message": "Проверите ажурирање" }, "checkingForUpdate": { - "message": "Проверавање...", - "description": "Text to display when checking a style for an update" + "message": "Проверавање..." }, "cm_indentWithTabs": { - "message": "Користи картице са паметним увлачењем редова", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Користи картице са паметним увлачењем редова" }, "cm_keyMap": { - "message": "Мапа тастера", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Мапа тастера" }, "cm_lineWrapping": { - "message": "Преламање текста", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Преламање текста" }, "cm_smartIndent": { - "message": "Користи паметно увлачење редова", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Користи паметно увлачење редова" }, "cm_tabSize": { - "message": "Величина картице", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Величина картице" }, "cm_theme": { - "message": "Тема", - "description": "Label for the style editor's CSS theme." + "message": "Тема" }, "confirmNo": { - "message": "Не", - "description": "'No' button in a confirm dialog" + "message": "Не" }, "confirmStop": { - "message": "Заустави", - "description": "'Stop' button in a confirm dialog" + "message": "Заустави" }, "confirmYes": { - "message": "Да", - "description": "'Yes' button in a confirm dialog" + "message": "Да" }, "dbError": { - "message": "Дошло је до грешке користећи Stylus базу података. Да ли желите да посетите веб страницу са могућим решењима?", - "description": "Prompt when a DB error is encountered" + "message": "Дошло је до грешке користећи Stylus базу података. Да ли желите да посетите веб страницу са могућим решењима?" }, "defaultTheme": { - "message": "подразумевано", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "подразумевано" }, "deleteStyleConfirm": { - "message": "Да ли сте сигурни да желите да избришете овај стил?", - "description": "Confirmation before deleting a style" + "message": "Да ли сте сигурни да желите да избришете овај стил?" }, "deleteStyleLabel": { - "message": "Избриши", - "description": "Label for the button to delete a style" + "message": "Избриши" }, "description": { - "message": "Измените стил интернет мреже управљачем корисничких стилова. Stylus вам омогућава да лако инсталирате теме и скинове за многе популарне сајтове.", - "description": "Extension description" + "message": "Измените стил интернет мреже управљачем корисничких стилова. Stylus вам омогућава да лако инсталирате теме и скинове за многе популарне сајтове." }, "disableAllStyles": { - "message": "Искључи све стилове", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Искључи све стилове" }, "disableStyleLabel": { - "message": "Онемогући", - "description": "Label for the button to disable a style" + "message": "Онемогући" }, "editGotoLine": { - "message": "Иди на ред (или line:col)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Иди на ред (или line:col)" }, "editStyleHeading": { - "message": "Уреди стил", - "description": "Title of the page for editing styles" + "message": "Уреди стил" }, "editStyleLabel": { - "message": "Уреди", - "description": "Label for the button to go to the edit style page" + "message": "Уреди" }, "editStyleTitle": { "message": "Уреди стил $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -162,68 +124,52 @@ } }, "enableStyleLabel": { - "message": "Омогући", - "description": "Label for the button to enable a style" + "message": "Омогући" }, "exportLabel": { - "message": "Извези", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Извези" }, "findStylesForSite": { - "message": "Пронађи још стилова за овај сајт", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Пронађи још стилова за овај сајт" }, "helpAlt": { - "message": "Помоћ", - "description": "Alternate text for help buttons" + "message": "Помоћ" }, "helpKeyMapCommand": { - "message": "Укуцај име команде", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Укуцај име команде" }, "helpKeyMapHotkey": { - "message": "Притисни пречицу", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Притисни пречицу" }, "importAppendLabel": { - "message": "Додај стилу", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Додај стилу" }, "importAppendTooltip": { - "message": "Додај увезени стил тренутном стилу", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Додај увезени стил тренутном стилу" }, "importLabel": { - "message": "Увези", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Увези" }, "importReplaceLabel": { - "message": "Упиши преко стила", - "description": "Label for the button to import and overwrite current style" + "message": "Упиши преко стила" }, "importReplaceTooltip": { - "message": "Одбаци садржај тренутног стила и упиши преко њега увезени стил", - "description": "Label for the button to import and overwrite current style" + "message": "Одбаци садржај тренутног стила и упиши преко њега увезени стил" }, "installUpdate": { - "message": "Инсталирај ажурирање", - "description": "Label for the button to install an update for a single style" + "message": "Инсталирај ажурирање" }, "linkGetHelp": { - "message": "Помоћ", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Помоћ" }, "linkGetStyles": { - "message": "Преузмите стилове", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Преузмите стилове" }, "linterIssues": { - "message": "Проблеми", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Проблеми" }, "linterIssuesHelp": { "message": "Проблем пронађен од стране $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -231,104 +177,76 @@ } }, "manageFilters": { - "message": "Филтери", - "description": "Label for filters container" + "message": "Филтери" }, "manageHeading": { - "message": "Инсталирани стилови", - "description": "Heading for the manage page" + "message": "Инсталирани стилови" }, "manageOnlyEnabled": { - "message": "Само омогућени стилови", - "description": "Checkbox to show only enabled styles" + "message": "Само омогућени стилови" }, "menuShowBadge": { - "message": "Прикажи број активних стилова", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Прикажи број активних стилова" }, "noStylesForSite": { - "message": "Нема инсталираних стилова за овај сајт.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Нема инсталираних стилова за овај сајт." }, "openManage": { - "message": "Управљај инсталираним стиловима", - "description": "Link to open the manage page." + "message": "Управљај инсталираним стиловима" }, "optionsHeading": { - "message": "Опције", - "description": "Heading for options section on manage page." + "message": "Опције" }, "popupStylesFirst": { - "message": "Излистај стилове пре команди у менију дугмета на алатној траци", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Излистај стилове пре команди у менију дугмета на алатној траци" }, "prefShowBadge": { - "message": "Прикажи број активних стилова за тренутни сајт на дугмету на алатној траци", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Прикажи број активних стилова за тренутни сајт на дугмету на алатној траци" }, "replace": { - "message": "Замени", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Замени" }, "replaceAll": { - "message": "Замени све", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Замени све" }, "replaceWith": { - "message": "Замени са", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Замени са" }, "search": { - "message": "Претражи", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Претражи" }, "searchRegexp": { - "message": "Користи /re/ синтаксу за претрагу регуларним изразом", - "description": "Label after the search input field in the editor shown on Ctrl-F" - }, - "searchStyles": { - "message": "Претражи садржај", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "Користи /re/ синтаксу за претрагу регуларним изразом" }, "sectionAdd": { - "message": "Додај нови одељак", - "description": "Label for the button to add a section" + "message": "Додај нови одељак" }, "sectionCode": { - "message": "Код", - "description": "Label for the code for a section" + "message": "Код" }, "sectionRemove": { - "message": "Уклони одељак", - "description": "Label for the button to remove a section" + "message": "Уклони одељак" }, "styleBadRegexp": { - "message": "Регуларни израз је неисправан.", - "description": "Validation message for a bad regexp in a style" + "message": "Регуларни израз је неисправан." }, "styleBeautify": { - "message": "Улепшај", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Улепшај" }, "styleCancelEditLabel": { - "message": "Назад на управљање", - "description": "Label for cancel button for style editing" + "message": "Назад на управљање" }, "styleChangesNotSaved": { - "message": "Направили сте измене овог стила које нисте сачували.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Направили сте измене овог стила које нисте сачували." }, "styleEnabledLabel": { - "message": "Омогућено", - "description": "Label for the enabled state of styles" + "message": "Омогућено" }, "styleFromMozillaFormatPrompt": { - "message": "Налепи код у Mozilla формату", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Налепи код у Mozilla формату" }, "styleInstall": { "message": "Инсталирати '$stylename$' у Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -336,28 +254,22 @@ } }, "styleMissingName": { - "message": "Унесите назив", - "description": "Error displayed when user saves without providing a name" + "message": "Унесите назив" }, "styleMozillaFormatHeading": { - "message": "Mozilla формат", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla формат" }, "styleSaveLabel": { - "message": "Сачувај", - "description": "Label for save button for style editing" + "message": "Сачувај" }, "styleToMozillaFormatHelp": { - "message": "Mozilla формат кода се може користити у Stylish за Firefox и може се послати на userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla формат кода се може користити у Stylish за Firefox и може се послати на userstyles.org." }, "styleToMozillaFormatTitle": { - "message": "Стил у Mozilla формату", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Стил у Mozilla формату" }, "styleUpdate": { "message": "Да ли сте сигурни да желите да ажурирате '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -365,24 +277,19 @@ } }, "stylusUnavailableForURL": { - "message": "Stylus не ради на страницама као што је ова.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus не ради на страницама као што је ова." }, "undo": { - "message": "Опозови", - "description": "Button label" + "message": "Опозови" }, "undoGlobal": { - "message": "Опозови (свеобухватно)", - "description": "CSS-beautify global Undo button label" + "message": "Опозови (свеобухватно)" }, "updateAllCheckSucceededNoUpdate": { - "message": "Сви стилови су ажурирани.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Сви стилови су ажурирани." }, "updateCheckFailBadResponseCode": { "message": "Ажурирање није успело: сервер је одговорио кодом $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -390,23 +297,18 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Ажурирање није успело: сервер није доступан.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Ажурирање није успело: сервер није доступан." }, "updateCheckSucceededNoUpdate": { - "message": "Стил је ажуриран.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Стил је ажуриран." }, "updateCompleted": { - "message": "Ажурирање је комплетирано.", - "description": "Text that displays when an update completed" + "message": "Ажурирање је комплетирано." }, "writeStyleFor": { - "message": "Упиши стил за:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" + "message": "Упиши стил за:" }, "writeStyleForURL": { - "message": "ову УРЛ адресу", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" + "message": "ову УРЛ адресу" } -} \ No newline at end of file +} diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index d800b825..4025ec7e 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus kan inte komma åt vissa filtyper (t.ex. pdf- & json-filer)." + }, "addStyleLabel": { - "message": "Skriv ny stil", - "description": "Label for the button to go to the add style page" + "message": "Skriv ny stil" }, "addStyleTitle": { - "message": "Lägg till stil", - "description": "Title of the page for adding styles" + "message": "Lägg till stil" }, "alphaChannel": { - "message": "Opacitet", - "description": "Label of color's opacity" + "message": "Opacitet" }, "appliesAdd": { - "message": "Lägg till", - "description": "Label for the button to add an 'applies' entry" + "message": "Lägg till" }, "appliesDisplay": { "message": "Tillämpad för: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,284 +23,223 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "och mer", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "och mer" }, "appliesDomainOption": { - "message": "URL:er på domänen", - "description": "Option to make the style apply to the entered string as a domain" + "message": "Webbadresser på domänen" }, "appliesHelp": { - "message": "Använd 'Tillämpad för' alternativet för att begränsa vilka URL:er koden i denna sektion gäller för.", - "description": "Help text for 'applies to' section" + "message": "Använd 'Tillämpad för' alternativet för att begränsa vilka webbadresser koden i denna sektion gäller för." }, "appliesLabel": { - "message": "Tillämpad för", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Tillämpad för" }, "appliesLineWidgetLabel": { - "message": "Visa \"Tillämpad för\" information", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "Visa \"Tillämpad för\" information" }, "appliesLineWidgetWarning": { - "message": "Fungerar inte med minified CSS", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Fungerar inte med minified CSS" }, "appliesRegexpOption": { - "message": "URL:er som matchar regexp:en", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "Webbadresser som matchar regexp:en" }, "appliesRemove": { - "message": "Ta bort", - "description": "Label for the button to remove an 'applies' entry" + "message": "Ta bort" }, "appliesRemoveError": { - "message": "Kan inte ta bort senaste \"tillämpad för\" post", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "Kan inte ta bort senaste \"tillämpad för\" post" }, "appliesSpecify": { - "message": "Specificera", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Specificera" }, "appliesToEverything": { - "message": "Allt", - "description": "Text displayed for styles that apply to all sites" + "message": "Allt" + }, + "appliesUrlOption": { + "message": "Webbadress" }, "appliesUrlPrefixOption": { - "message": "URL:er som börjar på", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "Webbadresser som börjar på" }, "applyAllUpdates": { - "message": "Verkställ alla uppdateringar", - "description": "Label for the button to apply all detected updates" + "message": "Tillämpa alla uppdateringar" }, "author": { - "message": "Författare", - "description": "Label for the style author" + "message": "Författare" }, "backupButtons": { - "message": "Säkerhetskopiera", - "description": "Heading for backup" + "message": "Säkerhetskopiera" }, "backupMessage": { - "message": "Välj en fil eller dra och släpp till den här sidan.", - "description": "Message for backup" + "message": "Välj en fil eller dra och släpp till den här sidan." }, "bckpInstStyles": { - "message": "Exportera stilar", - "description": "" + "message": "Exportera stilar" }, "checkAllUpdates": { - "message": "Sök efter uppdateringar", - "description": "Label for the button to check all styles for updates" + "message": "Sök efter uppdateringar" }, "checkAllUpdatesForce": { - "message": "Kolla igen, jag redigerade inte några stilar!", - "description": "Label for the button to apply all detected updates" + "message": "Kontrollera igen, jag redigerade inte några stilar!" }, "checkForUpdate": { - "message": "Leta efter uppdatering", - "description": "Label for the button to check a single style for an update" + "message": "Sök efter uppdatering" }, "checkingForUpdate": { - "message": "Letar...", - "description": "Text to display when checking a style for an update" + "message": "Letar..." }, "clickToUninstall": { - "message": "Klicka för att avinstallera", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Klicka för att avinstallera" }, "cm_autoCloseBrackets": { - "message": "Stäng automatiskt parenteser och citat", - "description": "Label for the checkbox in the style editor." + "message": "Stäng automatiskt parenteser och citat" }, "cm_autoCloseBracketsTooltip": { - "message": "Lägg automatiskt till ett slutpar när du skriver en öppning av ()[]{}''\"\"", - "description": "Label for the checkbox in the style editor." + "message": "Lägg automatiskt till ett slutpar när du skriver en öppning av ()[]{}''\"\"" }, "cm_autocompleteOnTyping": { - "message": "Komplettera automatiskt när du skriver", - "description": "Label for the checkbox in the style editor." + "message": "Komplettera automatiskt när du skriver" }, "cm_colorpicker": { - "message": "Färgväljare för CSS färger", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "Färgväljare för CSS-färger" }, "cm_indentWithTabs": { - "message": "Använd tabbar med smart indrag", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Använd tabbar med smarta indrag" }, "cm_keyMap": { - "message": "Nyckelkarta", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Tangentkarta" }, "cm_lineWrapping": { - "message": "Radbrytning", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Radbrytning" }, "cm_matchHighlight": { - "message": "Markera", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Markera" }, "cm_matchHighlightSelection": { - "message": "Endast urval", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Endast urval" }, "cm_matchHighlightToken": { - "message": "Token under markör", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "Token under markör" }, "cm_resizeGripHint": { - "message": "Dubbelklicka för att maximera/återställa höjden", - "description": "Tooltip for the resize grip in style editor" + "message": "Dubbelklicka för att maximera/återställa höjden" }, "cm_selectByTokens": { - "message": "Dubbelklickning väljer token", - "description": "Label for the checkbox in the editor." + "message": "Dubbelklickning väljer token" }, "cm_selectByTokensTooltip": { - "message": "Exempel på token: .foo-bar-2 #aabbcc 0.32 !important\nNär inaktiverad: skiljetecken-avgränsade ord väljs.", - "description": "" + "message": "Exempel på token: .foo-bar-2 #aabbcc 0.32 !important\nNär inaktiverad: skiljetecken-avgränsade ord väljs." }, "cm_smartIndent": { - "message": "Använd smart indrag", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Använd smarta indrag" }, "cm_tabSize": { - "message": "Tabbstorlek", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tabbstorlek" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" }, "colorpickerSwitchFormatTooltip": { - "message": "Växla format: HEX -> RGB -> HSL.\nSkift-klicka för att vända riktningen.\nÄven via PgUp (PageUp), PgDn (PageDown) nycklar.", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Växla format: HEX -> RGB -> HSL.\nSkift-klicka för att vända riktningen.\nÄven via PgUp (PageUp), PgDn (PageDown) tangenter." }, "colorpickerTooltip": { - "message": "Öppen färgväljaren", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Öppen färgväljaren" }, "configOnChange": { - "message": "vid förändring", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "vid förändring" }, "configOnChangeTooltip": { - "message": "Spara automatiskt och tillämpa ändringar automatiskt", - "description": "" + "message": "Spara automatiskt och tillämpa ändringar automatiskt" }, "configureStyle": { - "message": "Konfigurera", - "description": "Label for the button to configure usercss userstyle" + "message": "Konfigurera" }, "configureStyleOnHomepage": { - "message": "Konfigurera på webbplatsen", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Konfigurera på webbplatsen" }, "confirmCancel": { - "message": "Avbryt", - "description": "" + "message": "Avbryt" }, "confirmClose": { - "message": "Stäng", - "description": "'Close' button in a confirm dialog" + "message": "Stäng" }, "confirmDefault": { - "message": "Använd standard", - "description": "'Set to default' button in a confirm dialog" + "message": "Använd standard" }, "confirmDelete": { - "message": "Ta bort", - "description": "" + "message": "Ta bort" }, "confirmDiscardChanges": { - "message": "Kassera ändringarna?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Kassera ändringarna?" }, "confirmNo": { - "message": "Nej", - "description": "'No' button in a confirm dialog" + "message": "Nej" }, "confirmSave": { - "message": "Spara", - "description": "'Save' button in a confirm dialog" + "message": "Spara" }, "confirmStop": { - "message": "Stoppa", - "description": "'Stop' button in a confirm dialog" + "message": "Stoppa" }, "confirmYes": { - "message": "Ja", - "description": "'Yes' button in a confirm dialog" + "message": "Ja" + }, + "connectingDropbox": { + "message": "Ansluter Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "Anslutning till Dropbox är endast tillgänglig i appar installerade direkt från webbutiken" }, "copied": { - "message": "Kopierad till urklipp", - "description": "Message shown when content has been copied to the clipboard" + "message": "Kopierad till urklipp" }, "copy": { - "message": "Kopiera till urklipp", - "description": "Tooltip for elements which can be copied" + "message": "Kopiera till urklipp" }, "dateInstalled": { - "message": "Installerat datum", - "description": "Option text for the user to sort the style by install date" + "message": "Installerat datum" }, "dateUpdated": { - "message": "Datumet uppdaterat", - "description": "Option text for the user to sort the style by last update date" + "message": "Datumet uppdaterat" }, "dbError": { - "message": "Ett fel inträffades vid hanteringen av Stylus-databasen. Skulle du vilja besöka en sida med eventuella lösningar?", - "description": "Prompt when a DB error is encountered" + "message": "Ett fel inträffades vid hanteringen av Stylus-databasen. Skulle du vilja besöka en sida med eventuella lösningar?" }, "defaultTheme": { - "message": "standard", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "standard" }, "deleteStyleConfirm": { - "message": "Är du säker på att du vill ta bort denna stil?", - "description": "Confirmation before deleting a style" + "message": "Är du säker på att du vill ta bort denna stil?" }, "deleteStyleLabel": { - "message": "Ta bort", - "description": "Label for the button to delete a style" + "message": "Ta bort" }, "description": { - "message": "Style:a om webben med Stylus, en användarstils-hanterare. Stylus låter dig enkelt installera teman och skal för många populära sidor.", - "description": "Extension description" + "message": "Designa om webben med Stylus, en användarstilshanterare. Stylus låter dig enkelt installera teman och skal för många populära webbplatser." }, "disableAllStyles": { - "message": "Stäng av alla stilar", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Stäng av alla stilar" }, "disableStyleLabel": { - "message": "Inaktivera", - "description": "Label for the button to disable a style" + "message": "Inaktivera" }, "dragDropMessage": { - "message": "Släpp din säkerhetskopieringsfil någonstans på den här sidan för att importera.", - "description": "Drag'n'drop message" + "message": "Släpp din säkerhetskopieringsfil någonstans på den här sidan för att importera." }, "editDeleteText": { - "message": "Ta bort", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Ta bort" }, "editGotoLine": { - "message": "Gå till rad (eller rad:kol)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Gå till rad (eller rad:kol)" }, "editStyleHeading": { - "message": "Ändra i Stil", - "description": "Title of the page for editing styles" + "message": "Ändra stil" }, "editStyleLabel": { - "message": "Ändra", - "description": "Label for the button to go to the edit style page" + "message": "Ändra" }, "editStyleTitle": { - "message": "Ändra i Stil $stylename$", - "description": "Title of the page for editing styles", + "message": "Ändra stilen $stylename$", "placeholders": { "stylename": { "content": "$1" @@ -310,204 +247,165 @@ } }, "enableStyleLabel": { - "message": "Aktivera", - "description": "Label for the button to enable a style" + "message": "Aktivera" }, "excludeStyleByDomainLabel": { - "message": "Uteslut den aktuella domänen", - "description": "" + "message": "Uteslut den aktuella domänen" }, "excludeStyleByUrlLabel": { - "message": "Uteslut den aktuella webbadressen", - "description": "" + "message": "Uteslut den aktuella webbadressen" }, "exportLabel": { - "message": "Exportera", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Exportera" + }, + "exportSavedSuccess": { + "message": "Filen sparades" }, "externalFeedback": { - "message": "Återkoppling", - "description": "Label for the external link to send feedback for the style" + "message": "Återkoppling" }, "externalHomepage": { - "message": "Webbplats", - "description": "Label for the external link to style's homepage" + "message": "Webbplats" }, "externalLink": { - "message": "Extern länk", - "description": "Label for external links" + "message": "Extern länk" }, "externalUsercssDocument": { - "message": "Dokumentation för Usercss", - "description": "Label for the external link to usercss documentation" + "message": "Dokumentation för Usercss" }, "filteredStyles": { "message": "$numShown$ visade av $numTotal$ totalt", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "För närvarande tillämpade filter matchar inga stilar", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "För närvarande tillämpade filter matchar inga stilar" }, "findStyles": { - "message": "Hitta stilar", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Hitta stilar" }, "findStylesForSite": { - "message": "Hitta fler stilar för denna sida", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Hitta fler stilar för denna webbplats" }, "findStylesInlineTooltip": { - "message": "Visa sökresultat i det här fönstret.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Visa sökresultat i det här fönstret." }, "genericAdd": { - "message": "Lägg till", - "description": "Used in various places for an action that adds something" + "message": "Lägg till" }, "genericClone": { - "message": "Klona", - "description": "Used in various places for an action that clones something" + "message": "Klona" }, "genericDisabledLabel": { - "message": "Inaktiverad", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Inaktiverad" }, "genericEnabledLabel": { - "message": "Aktiverad", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Aktiverad" }, "genericError": { - "message": "Fel", - "description": "Used in various places to indicate some error occurred." + "message": "Fel" }, "genericHistoryLabel": { - "message": "Historik", - "description": "Used in various places to show a history log of something" + "message": "Historik" }, "genericNext": { - "message": "Nästa", - "description": "Used in various places to select/perform the next step/action" + "message": "Nästa" }, "genericPrevious": { - "message": "Föregående", - "description": "Used in various places to select/perform the previous step/action" + "message": "Föregående" }, "genericResetLabel": { - "message": "Återställ", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Återställ" }, "genericSavedMessage": { - "message": "Sparad", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Sparad" }, "genericTitle": { - "message": "Titel", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Titel" }, "genericUnknown": { - "message": "Okänd", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Okänd" + }, + "gettingStyles": { + "message": "Hämtar alla format..." }, "helpAlt": { - "message": "Hjälp", - "description": "Alternate text for help buttons" + "message": "Hjälp" }, "helpKeyMapCommand": { - "message": "Skriv ett kommandonamn", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Skriv ett kommandonamn" }, "helpKeyMapHotkey": { - "message": "Tryck på en snabbtangent", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Tryck på en snabbtangent" }, "importAppendLabel": { - "message": "Lägg till i stil", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Lägg till i stilen" }, "importAppendTooltip": { - "message": "Lägg till den importerad stilen i aktuell stil", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "Lägg till den importerade stilen i aktuell stil" }, "importLabel": { - "message": "Importera", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "Importera" + }, + "importPreprocessorTitle": { + "message": "Potentiellt problem på grund av @preprocessor" }, "importReplaceLabel": { - "message": "Ersätt stil", - "description": "Label for the button to import and overwrite current style" + "message": "Ersätt stil" }, "importReportLegendAdded": { - "message": "tillagd", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "tillagd" }, "importReportLegendIdentical": { - "message": "identisk hoppade över", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "identisk hoppade över" }, "importReportLegendInvalid": { - "message": "ogiltig hoppades över", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "ogiltig hoppades över" }, "importReportLegendUpdatedBoth": { - "message": "uppdaterade både metainfo och kod", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "uppdaterade både metainfo och kod" }, "importReportLegendUpdatedCode": { - "message": "uppdaterad kod", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "uppdaterad kod" }, "importReportLegendUpdatedMeta": { - "message": "uppdaterad metainfo", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "uppdaterad metainfo" }, "importReportTitle": { - "message": "Importerat stilar", - "description": "Title of the report shown after importing styles" + "message": "Importerade stilar" }, "importReportUnchanged": { - "message": "Ingenting förändrades.", - "description": "Message in the report shown after importing styles" + "message": "Ingenting förändrades." }, "importReportUndone": { - "message": "stilar återställdes", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "stilar återställdes" }, "importReportUndoneTitle": { - "message": "Importen har ångrats", - "description": "Title of the message box shown after undoing the import of styles" + "message": "Importen har ångrats" }, "installButton": { - "message": "Installera stil", - "description": "Label for install button" + "message": "Installera stil" }, "installButtonInstalled": { - "message": "Stilen installerad", - "description": "Text displayed when the style is successfully installed" + "message": "Stilen installerad" }, "installButtonReinstall": { - "message": "Installera om stilen", - "description": "Label for reinstall button" + "message": "Installera om stilen" }, "installButtonUpdate": { - "message": "Uppdatera stil", - "description": "Label for update button" + "message": "Uppdatera stil" }, "installUpdate": { - "message": "Installera uppdatering", - "description": "Label for the button to install an update for a single style" + "message": "Installera uppdatering" }, "installUpdateFrom": { "message": "För närvarande är stilen uppdaterad från $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -515,28 +413,22 @@ } }, "installUpdateFromLabel": { - "message": "Sök efter uppdateringar", - "description": "Label for the checkbox to save current URL for update check" + "message": "Sök efter uppdateringar" }, "license": { - "message": "Licens", - "description": "Label for the license" + "message": "Licens" }, "linkGetHelp": { - "message": "Hjälp", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Hjälp" }, "linkGetStyles": { - "message": "Skaffa stilar", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "Skaffa stilar" }, "linkTranslate": { - "message": "Översätt", - "description": "Transifex link text on the manage page" + "message": "Översätt" }, "linterCSSLintIncompatible": { "message": "CSSLint stöder inte $preprocessorname$-preprocessor", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -544,12 +436,10 @@ } }, "linterCSSLintSettings": { - "message": "(Ange regel som: 0 = inaktiverad; 1 = varning; 2 = fel)", - "description": "CSSLint rule config values" + "message": "(Ange regel som: 0 = inaktiverad; 1 = varning; 2 = fel)" }, "linterConfigPopupTitle": { "message": "Ställ in $linter$ regler konfiguration", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -557,16 +447,13 @@ } }, "linterInvalidConfigError": { - "message": "Inte sparat på grund av dessa ogiltiga konfigurationsinställningar:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "Inte sparat på grund av dessa ogiltiga konfigurationsinställningar:" }, "linterIssues": { - "message": "Problem", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Problem" }, "linterIssuesHelp": { "message": "Dessa problem hittades av $link$:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -574,136 +461,87 @@ } }, "linterJSONError": { - "message": "Ogiltigt JSON-format", - "description": "Setting linter config with invalid JSON" + "message": "Ogiltigt JSON-format" }, "linterResetMessage": { - "message": "För att ångra oavsiktlig återställning, tryck Ctrl-Z (eller CMD-Z) i textrutan", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "För att ångra oavsiktlig återställning, tryck Ctrl-Z (eller CMD-Z) i textrutan" }, "linterRulesLink": { - "message": "Se en fullständig lista över regler", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "Se en fullständig lista över regler" }, "liveReloadError": { - "message": "Ett fel uppstod medan du tittade på filen", - "description": "The label of live-reload error" + "message": "Ett fel uppstod medan du tittade på filen" }, "liveReloadLabel": { - "message": "Uppdaterar i realtid", - "description": "The label of live-reload feature" + "message": "Uppdaterar i realtid" }, "manageFavicons": { - "message": "Ikoner i 'Tillämpad för' kolumnen", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Ikoner i 'Tillämpad för' kolumnen" }, "manageFaviconsGray": { - "message": "Nedtonade", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "Nedtonade" }, "manageFaviconsHelp": { - "message": "Stylus använder en extern tjänst https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus använder en extern tjänst https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filter", - "description": "Label for filters container" + "message": "Filter" }, "manageHeading": { - "message": "Installerade Stilar", - "description": "Heading for the manage page" + "message": "Installerade stilar" }, "manageMaxTargets": { - "message": "Antal tillämpad-för objekt", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "Antal tillämpad-för objekt" }, "manageNewStyleAsUsercss": { - "message": "som Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "som Usercss" }, "manageNewUI": { - "message": "Ny hantera UI layout", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "Ny hantera UI layout" }, "manageOnlyDisabled": { - "message": "Endast inaktiverade stilar", - "description": "Checkbox to show only disabled styles" + "message": "Endast inaktiverade stilar" }, "manageOnlyEnabled": { - "message": "Endast aktiverade stilar", - "description": "Checkbox to show only enabled styles" + "message": "Endast aktiverade stilar" }, "manageOnlyExternal": { - "message": "Endast externa stilar", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "Endast externa stilar" }, "manageOnlyLocal": { - "message": "Endast lokalt skapade stilar", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "Endast lokalt skapade stilar" }, "manageOnlyLocalTooltip": { - "message": "(stilarna som inte är installerade via en userstyles.org sida)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(stilen som inte är installerade via en userstyles.org-sida)" }, "manageOnlyNonUsercss": { - "message": "Endast icke-Usercss stilar", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "Endast icke-Usercss-stilar" }, "manageOnlyUpdates": { - "message": "Endast med uppdateringar eller problem", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "Endast med uppdateringar eller problem" }, "manageOnlyUsercss": { - "message": "Endast Usercss stilar", - "description": "Checkbox to show only Usercss styles" + "message": "Endast Usercss-stilar" }, "menuShowBadge": { - "message": "Visa antalet aktiva stilar", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Visa antalet aktiva stilar" }, "meta_invalidCheckboxDefault": { - "message": "Ogiltig @var-kryssruta: värdet måste vara 0 eller 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "Ogiltig @var-kryssruta: värdet måste vara 0 eller 1" }, "meta_invalidColor": { "message": "Ogiltig @var-färg: $color$ är inte en färg", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "Förvänta dig ett nummer" + }, "meta_invalidRange": { "message": "Ogiltig @var-$type$: värdet måste vara ett tal eller en matris", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "Ogiltig @var-$type$: flera enheter definieras", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "Ogiltig @var-$type$: matrisen innehåller för många objekt", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "Ogiltig @var-$type$: objekt i matrisen måste vara nummer, sträng eller null", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -712,16 +550,6 @@ }, "meta_invalidRangeDefault": { "message": "Ogiltig @var-$type$: standardvärdet är null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "Ogiltig @var-$type$: standardvärdet är lägre än det lägsta", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -730,7 +558,22 @@ }, "meta_invalidRangeMax": { "message": "Ogiltig @var-$type$: standardvärdet är större än det maximala", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "Ogiltig @var-$type$: standardvärdet är lägre än det lägsta", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "Ogiltig @var-$type$: flera enheter definieras", "placeholders": { "type": { "content": "$1" @@ -739,7 +582,14 @@ }, "meta_invalidRangeStep": { "message": "Ogiltig @var-$type$: standardvärdet är inte en multipel av steget", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "Ogiltig @var-$type$: matrisen innehåller för många objekt", "placeholders": { "type": { "content": "$1" @@ -748,7 +598,6 @@ }, "meta_invalidRangeUnits": { "message": "Ogiltig @var-$type$: \"$units$\" är inte en giltig enhet", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -758,37 +607,40 @@ } } }, - "meta_invalidSelect": { - "message": "Ogiltig @var-markering: standardvärdet måste vara en matris eller ett objekt", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "Ogiltig @var-$type$: objekt i matrisen måste vara nummer, sträng eller null", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "Ogiltig @var-markering: värden inuti matrisen/objektet måste vara en sträng", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "Ogiltig @var-markering: standardvärdet måste vara en matris eller ett objekt" }, "meta_invalidSelectEmptyOptions": { - "message": "Ogiltig @var-markering: alternativlistan är tom", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ogiltig @var-markering: alternativlistan är tom" }, "meta_invalidSelectLabel": { - "message": "Ogiltig @var-markering: alternativetikett är tom", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ogiltig @var-markering: alternativetikett är tom" }, "meta_invalidSelectMultipleDefaults": { - "message": "Ogiltig @var-markering: flera standardalternativ definieras", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ogiltig @var-markering: flera standardalternativ definieras" }, "meta_invalidSelectNameDuplicated": { - "message": "Ogiltig @var-markering: alternativnamn dupliceras", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ogiltig @var-markering: alternativnamn dupliceras" + }, + "meta_invalidSelectValue": { + "message": "Ogiltig @var-markering: värden inuti matrisen/objektet måste vara en sträng" }, "meta_invalidSelectValueMismatch": { - "message": "Ogiltig @var-markering: värdet finns inte i alternativlistan", - "description": "Error displayed when the value of @var select is invalid" + "message": "Ogiltig @var-markering: värdet finns inte i alternativlistan" + }, + "meta_invalidString": { + "message": "Förvänta dig en citerad sträng" }, "meta_invalidURLProtocol": { - "message": "Ogiltigt URL-protokoll. Endast http och https är tillåtna: $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", + "message": "Ogiltigt webbadressprotokoll. Endast http och https är tillåtna: $protocol$", "placeholders": { "protocol": { "content": "$1" @@ -796,47 +648,56 @@ } }, "meta_invalidVersion": { - "message": "Ogiltigt versionsnummer. Värdet matchar inte SemVer-mönstret: $version$", - "description": "Error displayed when @version is invalid", + "message": "Ogiltigt versionsnummer" + }, + "meta_invalidWord": { + "message": "Förvänta dig ett ord" + }, + "meta_missingChar": { + "message": "Förvänta tecken: $chars$", "placeholders": { - "version": { + "chars": { "content": "$1" } } }, - "meta_invalidNumber": { - "message": "Förvänta dig ett nummer", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "Förvänta dig en citerad sträng", - "description": "Error displayed when the value is expected to be a quoted string" - }, - "meta_invalidWord": { - "message": "Förvänta dig ett ord", - "description": "Error displayed when the value is expected to be a word" + "meta_missingEOT": { + "message": "Förvänta EOT-data" }, "meta_missingMandatory": { "message": "Obligatoriska metadata saknas: $keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" } } }, + "meta_unknownJSONLiteral": { + "message": "Ogiltig JSON: $literal$ är inte en giltig JSON-bokstav", + "placeholders": { + "literal": { + "content": "$1" + } + } + }, "meta_unknownMeta": { "message": "Okända metadata: $key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownPreprocessor": { + "message": "Okänd @preprocessor: $preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "Okänd @$varkey$ typ: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -846,386 +707,314 @@ } } }, - "meta_unknownPreprocessor": { - "message": "Okänd @preprocessor: $preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "För att importera dina stilar bör du exportera dem först." }, "noStylesForSite": { - "message": "Inga stilar installerade för denna sida.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Inga stilar installerade för denna webbplats." + }, + "numberedLine": { + "message": "Rad:" }, "openManage": { - "message": "Hantera installerade stilar", - "description": "Link to open the manage page." + "message": "Hantera" + }, + "openOptions": { + "message": "Alternativ" }, "openStylesManager": { - "message": "Öppna stilhanteraren", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Öppna stilhanteraren" }, "optionsActions": { - "message": "Åtgärder", - "description": "" + "message": "Åtgärder" }, "optionsAdvanced": { - "message": "Avancerat", - "description": "" + "message": "Avancerat" }, "optionsAdvancedContextDelete": { - "message": "Lägg till \"Ta bort\" i redigeringsmenyn", - "description": "" + "message": "Lägg till \"Ta bort\" i redigeringsmenyn" }, "optionsAdvancedExposeIframes": { - "message": "Exponera Iframes via HTML[stylus-iframe]", - "description": "" + "message": "Exponera Iframes via HTML[stylus-iframe]" }, "optionsAdvancedExposeIframesNote": { - "message": "Exponerar toppdomänen i varje iframe.\nAktiverar skriva Iframe-specifik CSS så här:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "Exponerar toppdomänen i varje iframe.\nAktiverar skriva Iframe-specifik CSS så här:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "Skriv ny stil som Usercss", - "description": "" + "message": "Skriv ny stil som Usercss" }, "optionsBadgeDisabled": { - "message": "Bakgrundsfärg när inaktiverad", - "description": "" + "message": "Bakgrundsfärg när inaktiverad" }, "optionsBadgeNormal": { - "message": "Bakgrundsfärg", - "description": "" + "message": "Bakgrundsfärg" }, "optionsCheck": { - "message": "Uppdatera stilar", - "description": "" + "message": "Uppdatera stilar" }, "optionsCheckUpdate": { - "message": "Leta efter och installera alla tillgängliga uppdateringar", - "description": "" + "message": "Leta efter och installera alla tillgängliga uppdateringar" }, "optionsCustomizeBadge": { - "message": "Bricka på verktygsfältsikonen", - "description": "" + "message": "Bricka på verktygsfältsikonen" }, "optionsCustomizeIcon": { - "message": "Ikon i verktygsfältet", - "description": "" - }, - "optionsCustomizePopup": { - "message": "Poppupp", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "Uppdateringar", - "description": "" + "message": "Ikon i verktygsfältet" }, "optionsCustomizeSync": { - "message": "Synkronisera till molnet", - "description": "" + "message": "Synkronisera till molnet" + }, + "optionsCustomizeUpdate": { + "message": "Uppdateringar" }, "optionsHeading": { - "message": "Alternativ", - "description": "Heading for options section on manage page." + "message": "Alternativ" }, "optionsIconDark": { - "message": "Mörk webbläsare teman", - "description": "" + "message": "Mörka webbläsarteman" }, "optionsIconLight": { - "message": "Ljus webbläsare teman", - "description": "" + "message": "Ljusa webbläsarteman" }, "optionsOpen": { - "message": "Öppna", - "description": "" + "message": "Öppna" }, "optionsOpenManager": { - "message": "Hantera stilar", - "description": "" + "message": "Hantera stilar" }, "optionsPopupWidth": { - "message": "Poppuppbredd (i pixlar)", - "description": "" + "message": "Bredd på popup (i pixlar)" }, "optionsReset": { - "message": "Återställ alternativen till standard", - "description": "" + "message": "Återställ alternativen till standard" }, "optionsResetButton": { - "message": "Återställ alternativ", - "description": "" + "message": "Återställ alternativ" }, "optionsSubheading": { - "message": "Mer alternativ", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "När du importerar säkerhetskopior av stil från gammal version eller från Stylish, gör en engångskontroll för uppdateringar manuellt i styles-hanteraren för att säkerställa att alla stilar uppdateras.", - "description": "" - }, - "optionsUpdateInterval": { - "message": "Userstyle automatisk uppdateringsintervall i timmar (ange 0 för att inaktivera)", - "description": "" - }, - "optionsSyncNone": { - "message": "Inga", - "description": "" + "message": "Mer alternativ" }, "optionsSyncConnect": { - "message": "Anslut", - "description": "" + "message": "Anslut" }, "optionsSyncDisconnect": { - "message": "Koppla från", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "Synkronisera nu", - "description": "" + "message": "Koppla från" }, "optionsSyncLogin": { - "message": "Logga in", - "description": "" + "message": "Logga in" }, - "optionsSyncStatusSyncing": { - "message": "Synkroniserar...", - "description": "" - }, - "optionsSyncStatusConnecting": { - "message": "Ansluter..", - "description": "" + "optionsSyncNone": { + "message": "Inga" }, "optionsSyncStatusConnected": { - "message": "Ansluten", - "description": "" + "message": "Ansluten" }, - "optionsSyncStatusDisconnecting": { - "message": "Kopplar från...", - "description": "" + "optionsSyncStatusConnecting": { + "message": "Ansluter.." }, "optionsSyncStatusDisconnected": { - "message": "Frånkopplad", - "description": "" + "message": "Frånkopplad" + }, + "optionsSyncStatusDisconnecting": { + "message": "Kopplar från..." + }, + "optionsSyncStatusSyncing": { + "message": "Synkroniserar..." + }, + "optionsSyncSyncNow": { + "message": "Synkronisera nu" + }, + "optionsUpdateImportNote": { + "message": "När du importerar säkerhetskopior av stilar från gammal version eller från Stylish, gör en engångskontroll för uppdateringar manuellt i stilhanteraren för att säkerställa att alla stilar uppdateras." + }, + "optionsUpdateInterval": { + "message": "Userstyle automatisk uppdateringsintervall i timmar (ange 0 för att inaktivera)" + }, + "overwriteFileExport": { + "message": "Vill du skriva över en befintlig fil?" }, "paginationCurrent": { - "message": "Aktuell sida", - "description": "Tooltip for the current page index in search results" + "message": "Aktuell sida" }, "paginationEstimated": { - "message": "Uppskattat antal sidor", - "description": "Tooltip for the total page count in search results" + "message": "Uppskattat antal sidor" }, "paginationNext": { - "message": "Nästa sida", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Nästa sida" }, "paginationPrevious": { - "message": "Föregående sida", - "description": "Tooltip for the '<-' button in search results" + "message": "Föregående sida" }, "paginationTotal": { - "message": "Totalt sidor", - "description": "" + "message": "Totalt sidor" }, "parseUsercssError": { - "message": "Stylus misslyckades med att tolka usercss:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus misslyckades med att tolka Usercss:" }, "popupAutoResort": { - "message": "Sortera om stilar i poppupp efter växling", - "description": "Label for the checkbox controlling popup resorting." + "message": "Sortera om format i popup efter växling" }, "popupBorders": { - "message": "Lägg till vita kanter på sidorna", - "description": "" + "message": "Lägg till vita kanter på sidorna" }, "popupBordersTooltip": { - "message": "Användbar för mörka teman i nya Chrome eftersom det inte längre målar sidokanterna", - "description": "" + "message": "Användbar för mörka teman i nya Chrome eftersom det inte längre målar sidokanterna" }, "popupHotkeysTooltip": { - "message": "Klicka för att se tillgängliga snabbtangenter", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "Klicka för att se tillgängliga snabbtangenter" }, "popupManageTooltip": { - "message": "Skift-klick eller högerklick öppnar hanteraren med stilar som gäller för aktuell webbplats", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Skift-klick eller högerklick öppnar hanteraren med stilar som gäller för aktuell webbplats" }, "popupMenuButtonTooltip": { - "message": "Åtgärdsmeny", - "description": "Tooltip for menu button in popup." + "message": "Åtgärdsmeny" }, "popupOpenEditInWindow": { - "message": "Öppna redigeraren i ett nytt fönster", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Öppna redigeraren i ett nytt fönster" }, "popupOpenEditInWindowTooltip": { - "message": "Också aktiverad genom att ta bort redigeringsfliken från ett webbläsarfönster,\noch inaktiverad genom att fästa en enda redigeringsflik i ett annat fönster.", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "Också aktiverad genom att ta bort redigeringsfliken från ett webbläsarfönster,\noch inaktiverad genom att fästa en enda redigeringsflik i ett annat fönster." }, "popupStylesFirst": { - "message": "Lista stilar före kommandon i verktygsfältets knappmeny", - "description": "Label for the checkbox controlling section order in the popup." + "message": "Stilar före kommandon" }, "prefShowBadge": { - "message": "Visa antalet aktiva stilar för den nuvarande sidan på verktygsfältsikonen", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "Antalet aktiva stilar för den nuvarande webbplatsen" }, "previewLabel": { - "message": "Förhandsvisning i realtid", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Förhandsvisning i realtid" }, "previewTooltip": { - "message": "Tillfälligt tillämpar ändringarna utan att spara.\nSpara stilen för att göra ändringarna permanenta.", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "Tillämpar tillfälligt ändringarna utan att spara.\nSpara stilen för att göra ändringarna permanenta." + }, + "readingStyles": { + "message": "Läsar format..." }, "replace": { - "message": "Ersätt", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Ersätt" }, "replaceAll": { - "message": "Ersätt alla", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Ersätt alla" }, "replaceWith": { - "message": "Ersätt med", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Ersätt med" }, "retrieveBckp": { - "message": "Importera stilar", - "description": "" + "message": "Importera stilar" + }, + "retrieveDropboxSync": { + "message": "Dropbox importering" }, "search": { - "message": "Sök", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Sök" }, "searchCaseSensitive": { - "message": "Skiftlägeskänslig", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "Skiftlägeskänslig" }, "searchNumberOfResults": { - "message": "Antal matchningar", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Antal matchningar" }, "searchNumberOfResults2": { - "message": "Antal matchningar i kod och tillämpad-för-värden", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "Antal matchningar i kod och tillämpad-för-värden" }, "searchRegexp": { - "message": "Använd /re/ för regexp-sökning", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "Använd /re/ för regexp-sökning" }, "searchResultInstallCount": { - "message": "Installationer totalt", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Installationer totalt" }, "searchResultNoneFound": { - "message": "Inga stilar hittades för denna webbplats.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Inga stilar hittades för denna webbplats." + }, + "searchResultNotMatching": { + "message": "Formatet är installerat men den gäller inte den aktuella webbadressen." }, "searchResultRating": { - "message": "Betyg", - "description": "Text for label that shows the search result's rating" + "message": "Betyg" }, "searchResultUpdated": { - "message": "Uppdaterad", - "description": "Text for label that shows the search result's last update date" + "message": "Uppdaterad" }, "searchResultWeeklyCount": { - "message": "Installationer veckovis", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "Installationer veckovis" }, - "searchStyles": { - "message": "Sök innehåll", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStylesAll": { + "message": "Alla" + }, + "searchStylesCode": { + "message": "CSS-kod" + }, + "searchStylesMatchUrl": { + "message": "Efter webbadress" + }, + "searchStylesName": { + "message": "Namn" }, "sectionAdd": { - "message": "Lägg till ytterligare en sektion", - "description": "Label for the button to add a section" + "message": "Lägg till ytterligare en sektion" }, "sectionCode": { - "message": "Kod", - "description": "Label for the code for a section" + "message": "Kod" }, "sectionRemove": { - "message": "Ta bort sektion", - "description": "Label for the button to remove a section" + "message": "Ta bort sektion" }, "sectionRestore": { - "message": "Återställ borttagen sektion", - "description": "Label for the button to restore a removed section" + "message": "Återställ borttagen sektion" }, "shortcuts": { - "message": "Genvägar", - "description": "Go to shortcut configuration" + "message": "Genvägar" }, "shortcutsNote": { - "message": "Ställ in tangentbordsgenvägar", - "description": "" + "message": "Ställ in tangentbordsgenvägar" }, "sortDateNewestFirst": { - "message": "Nyaste först", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "Nyaste först" }, "sortDateOldestFirst": { - "message": "äldsta först", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "äldsta först" }, "sortLabel": { - "message": "Välj en sort som ska tillämpas på de installerade stilarna", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "Välj en sort som ska tillämpas på de installerade stilarna" }, "sortLabelTitleAsc": { - "message": "Titel stigande", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "Titel stigande" }, "sortLabelTitleDesc": { - "message": "Titel fallande", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "Titel fallande" }, "sortStylesHelpTitle": { - "message": "Sortera innehåll", - "description": "Label for the sort info popup on the Manage styles page" + "message": "Sortera innehåll" }, "styleBadRegexp": { - "message": "Regexp:en är ogiltig", - "description": "Validation message for a bad regexp in a style" + "message": "Regexp:en är ogiltig" }, "styleBeautify": { - "message": "Försköna", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Försköna" + }, + "styleBeautifyHint": { + "message": "Tips: högerklicka på knappen \"Försköna\" eller använd tangentbordsgenvägen som definieras nedan för att försköna utan att visa denna panel" }, "styleBeautifyPreserveNewlines": { - "message": "Bevara nya rader", - "description": "CSS-beautifier option" + "message": "Bevara nya rader" }, "styleCancelEditLabel": { - "message": "Återgå till hantera", - "description": "Label for cancel button for style editing" + "message": "Återgå till hantera" }, "styleChangesNotSaved": { - "message": "Du har gjort ändringar i denna stil utan att spara.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Du har gjort ändringar i denna stil utan att spara." }, "styleEnabledLabel": { - "message": "Aktiverad", - "description": "Label for the enabled state of styles" + "message": "Aktiverad" }, "styleFromMozillaFormatError": { - "message": "Import av Mozilla-format misslyckades", - "description": "Label for the import error" + "message": "Import av Mozilla-format misslyckades" }, "styleFromMozillaFormatPrompt": { - "message": "Klistra in koden i Mozilla-formatet", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Klistra in Mozilla-formatkoden" }, "styleInstall": { "message": "Installera '$stylename$' in i Stylus?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1234,7 +1023,6 @@ }, "styleInstallFailed": { "message": "Det gick inte att installera userstyle!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1243,82 +1031,65 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' är redan installerad. Skriva över?\nVersion: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "Ange ett namn", - "description": "Error displayed when user saves without providing a name" + "message": "Ange ett namn" }, "styleMozillaFormatHeading": { - "message": "Mozilla-format", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla-format" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "Stil tillämpades inte på grund av felaktig användning av \"regexp()\"", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "Stil tillämpades inte på grund av felaktig användning av \"regexp()\"" }, "styleRegexpInvalidExplanation": { - "message": "Några \"regexp()\"-regler som inte alls kunde sammanställas.", - "description": "" + "message": "Några \"regexp()\"-regler som inte alls kunde sammanställas." }, "styleRegexpPartialExplanation": { - "message": "Denna stil använder delvis matchande regexps i strid med CSS4 @dokumentspecifikation som kräver en fullständig webbadressmatchning. De berörda CSS-sektionerna tillämpades inte på sidan. Den här stilen skapades förmodligen i Stylish-for-Chrome som felaktigt kontrollerar 'regexp()'-regler sedan den allra första versionen (känt fel).", - "description": "" + "message": "Denna stil använder delvis matchande regexps i strid med CSS4 @dokumentspecifikation som kräver en fullständig webbadressmatchning. De berörda CSS-sektionerna tillämpades inte på sidan. Denna stil skapades förmodligen i Stylish-for-Chrome som felaktigt kontrollerar 'regexp()'-regler sedan den allra första versionen (känt fel)." }, "styleRegexpProblemTooltip": { - "message": "Antal avsnitt som inte tillämpas på grund av felaktig användning av \"regexp()\"", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "Antal avsnitt som inte tillämpas på grund av felaktig användning av \"regexp()\"" }, "styleRegexpTestButton": { - "message": "RegExp-test", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "RegExp-test" }, "styleRegexpTestFull": { - "message": "Matchande flikar", - "description": "RegExp test report: label for the fully matching expressions" + "message": "Matchande flikar" }, "styleRegexpTestInvalid": { - "message": "Ogiltiga regexps hoppades över", - "description": "RegExp test report: label for the invalid expressions" + "message": "Ogiltiga regexps hoppades över" }, "styleRegexpTestNone": { - "message": "Inga matchande flikar", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "Inga matchande flikar" }, "styleRegexpTestPartial": { - "message": "Matchar inte helt, hoppades därför över", - "description": "RegExp test report: label for the partially matching expressions" + "message": "Matchar inte helt, hoppades därför över" }, "styleRegexpTestTitle": { - "message": "Lista över matchande öppnade flikar (klicka på webbadressen för att fokusera på dess flik)", - "description": "RegExp test report: title of the report" + "message": "Lista över matchande öppnade flikar (klicka på webbadressen för att fokusera på dess flik)" }, "styleSaveLabel": { - "message": "Spara", - "description": "Label for save button for style editing" + "message": "Spara" }, "styleToMozillaFormatHelp": { - "message": "Mozilla-formatet av koden fungerar i Stylish till Firefox samt vid uppladdandet till userstyles.org.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla-formatet av koden kan skickas till userstyle.org och användas med klassikern Stylish för Firefox" }, "styleToMozillaFormatTitle": { - "message": "Stil i Mozilla-format", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Stil i Mozilla-format" }, "styleUpdate": { "message": "Är du säker på att du vill uppdatera '$stylename$'?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1326,72 +1097,55 @@ } }, "styleUpdateDiscardChanges": { - "message": "Stilen ändras utanför redigeraren. Vill du uppdatera stilen?", - "description": "Confirmation to update the style in the editor" + "message": "Stilen ändras utanför redigeraren. Vill du uppdatera stilen?" }, "stylusUnavailableForURL": { - "message": "Stylus fungerar inte på sidor som denna.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus fungerar inte på sidor som denna." }, "stylusUnavailableForURLdetails": { - "message": "Som en säkerhetsåtgärd förbjuder webbläsaren tillägg från att påverka dess inbyggda sidor (som chrome://version, den vanliga nya fliksidan från Chrome 61, about:addons och så vidare) samt andra tilläggssidor. Varje webbläsare begränsar också tillgången till sina egna tilläggsgalleri (som Chrome Web Store eller AMO).", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Som en säkerhetsåtgärd förbjuder webbläsaren tillägg från att påverka dess inbyggda sidor (som chrome://version, den vanliga nya fliksidan från Chrome 61, about:addons och så vidare) samt andra tilläggssidor. Varje webbläsare begränsar också tillgången till sina egna tilläggsgalleri (som Chrome Web Store eller AMO)." + }, + "syncDropboxDeprecated": { + "message": "Import/export av Dropbox ersätts av en mer avancerad synkronisering av format på sidan med alternativ." + }, + "syncDropboxStyles": { + "message": "Dropbox exportering" }, "syncStorageErrorSaving": { - "message": "Värdet kan inte sparas. Försök att minska mängden text.", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "Värdet kan inte sparas. Försök att minska mängden text." }, "toggleStyle": { - "message": "Växla stil", - "description": "Label for the checkbox to enable/disable a style" + "message": "Växla stil" }, "undo": { - "message": "Ångra", - "description": "Button label" + "message": "Ångra" }, "undoGlobal": { - "message": "Ångra i alla sektioner", - "description": "CSS-beautify global Undo button label" + "message": "Ångra i alla sektioner" }, "unreachableAMO": { - "message": "Firefox förbjuder åtkomst till webbplatsen.", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox förbjuder åtkomst till webbplatsen." }, "unreachableAMOHint": { - "message": "För att tillåta åtkomst öppna , högerklicka på listan, klicka på \"Ny\", sedan \"Boolean\", klistra in och klicka på OK, , OK, uppdatera -sidan.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "I Firefox 60 och senare måste du också ta bort AMO-domän från i .", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "Endast Firefox 59 och nyare kan konfigureras för att tillåta WebExtensions att lägga till stilelement på CSP-skyddade webbplatser som den här.", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "För att tillåta åtkomst öppna , högerklicka på listan, klicka på \"Ny\", sedan \"Boolean\", klistra in och klicka på OK, , OK, uppdatera -sidan." }, "unreachableContentScript": { - "message": "Kunde inte kommunicera med sidan. Uppdatera fliken.", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "Kunde inte kommunicera med sidan. Uppdatera fliken." }, "unreachableFileHint": { - "message": "Stylus kan endast komma åt fil:// webbadresser om du aktiverar motsvarande kryssruta för Stylus-tillägg på chrome://extensions-sidan.", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus kan endast komma åt fil:// webbadresser om du aktiverar motsvarande kryssruta för Stylus-tillägg på chrome://extensions-sidan." }, - "InaccessibleFileHint": { - "message": "Stylus kan inte komma åt vissa filtyper (t.ex. pdf- & json-filer).", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unzipStyles": { + "message": "Packar upp stilar..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Inga uppdateringar hittades.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Inga uppdateringar hittades." }, "updateAllCheckSucceededSomeEdited": { - "message": "Vissa uppdaterbara stilar kontrollerades inte för att undvika att förlora eventuella lokala redigeringar. Uppdateringar kan tvingas genom att kontrollera individuellt, eller genom att köra en annan check för alla stilar (lokala redigeringar kommer att skrivas över).", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Vissa uppdaterbara stilar kontrollerades inte för att undvika att förlora eventuella lokala redigeringar. Uppdateringar kan tvingas genom att kontrollera individuellt, eller genom att köra en annan kontroll för alla stilar (lokala redigeringar kommer att skrivas över)." }, "updateCheckFailBadResponseCode": { "message": "Uppdateringen misslyckades: servern svarade med kod $code$.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1399,123 +1153,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Uppdateringen misslyckades: server onåbar.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Uppdateringen misslyckades: server onåbar." }, "updateCheckHistory": { - "message": "Historik över uppdateringskontroller", - "description": "" + "message": "Historik över uppdateringskontroller" }, "updateCheckManualUpdateForce": { - "message": "Installera uppdatering (lokala redigeringar kommer att skrivas över)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Installera uppdatering (lokala redigeringar kommer att skrivas över)" }, "updateCheckManualUpdateHint": { - "message": "Att tvinga en uppdatering kommer att skriva över alla lokala ändringar.", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "Att tvinga en uppdatering kommer att skriva över alla lokala ändringar." }, "updateCheckSkippedLocallyEdited": { - "message": "Denna stil redigerades lokalt.", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "Denna stil redigerades lokalt." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Denna stil kan ha redigerats lokalt.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Denna stil kan ha redigerats lokalt." }, "updateCheckSucceededNoUpdate": { - "message": "Stilen är uppdaterad.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Stilen är uppdaterad." }, "updateCompleted": { - "message": "Uppdatering slutförd.", - "description": "Text that displays when an update completed" + "message": "Uppdatering slutförd." }, "updatesCurrentlyInstalled": { - "message": "Uppdateringar installerade:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Vänligen ändra värdet på @name eller @ namespace för att undvika att skriva över en befintlig stil.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Stilen uppdaterades eller togs bort efter att konfigurationsdialogrutan visades. Dessa variabler sparades inte för att undvika att förstöra stilens metadata:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Ange @name i koden", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Ersätt standardmallen för nya användar CSS-format med den aktuella koden?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Tom @name ersätter standardmallen", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Lägg in kod här...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Versionen är äldre än den installerade stilen.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Skriv stil för:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "denna URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropbox exportering", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox importering", - "description": "" - }, - "overwriteFileExport": { - "message": "Vill du skriva över en befintlig fil?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Filen sparades", - "description": "" - }, - "noFileToImport": { - "message": "För att importera dina stilar bör du exportera dem först.", - "description": "" - }, - "connectingDropbox": { - "message": "Ansluter Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Anslutning till Dropbox är endast tillgänglig i appar installerade direkt från webbutiken", - "description": "" - }, - "gettingStyles": { - "message": "Hämtar alla stilar...", - "description": "" - }, - "zipStyles": { - "message": "Packar stilar...", - "description": "" - }, - "unzipStyles": { - "message": "Packar upp stilar...", - "description": "" - }, - "readingStyles": { - "message": "Läsar stilar...", - "description": "" + "message": "Uppdateringar installerade:" }, "uploadingFile": { - "message": "Skickar filen...", - "description": "" + "message": "Skickar filen..." + }, + "usercssAvoidOverwriting": { + "message": "Vänligen ändra värdet på @name eller @ namespace för att undvika att skriva över en befintlig stil." + }, + "usercssConfigIncomplete": { + "message": "Stilen uppdaterades eller togs bort efter att konfigurationsdialogrutan visades. Dessa variabler sparades inte för att undvika att förstöra stilens metadata:" + }, + "usercssEditorNamePlaceholder": { + "message": "Ange @name i koden" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Ersätt standardmallen för nya Usercss-stilar med den aktuella koden?" + }, + "usercssReplaceTemplateName": { + "message": "Tom @name ersätter standardmallen" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Lägg in kod här..." + }, + "versionInvalidOlder": { + "message": "Versionen är äldre än den installerade stilen." + }, + "writeStyleFor": { + "message": "Skriv stil för:" + }, + "writeStyleForURL": { + "message": "denna webbadress" + }, + "zipStyles": { + "message": "Packar stilar..." } } diff --git a/_locales/te/messages.json b/_locales/te/messages.json index 5bdcd57f..be748eb3 100644 --- a/_locales/te/messages.json +++ b/_locales/te/messages.json @@ -1,15 +1,12 @@ { "addStyleLabel": { - "message": "క్రొత్త స్టైల్ వ్రాయండి", - "description": "Label for the button to go to the add style page" + "message": "క్రొత్త స్టైల్ వ్రాయండి" }, "appliesAdd": { - "message": "చేర్చు", - "description": "Label for the button to add an 'applies' entry" + "message": "చేర్చు" }, "appliesDisplay": { "message": "వేటికి వర్తిస్తుంది; $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -17,51 +14,39 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "ఇంకా మరిన్ని", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "ఇంకా మరిన్ని" }, "appliesRemove": { - "message": "తొలగించు", - "description": "Label for the button to remove an 'applies' entry" + "message": "తొలగించు" }, "appliesToEverything": { - "message": "అన్నిటికీ", - "description": "Text displayed for styles that apply to all sites" + "message": "అన్నిటికీ" }, "deleteStyleConfirm": { - "message": "మీరు నజంగానే ఈ శైలిని తొలగించాలనుకుంటున్నారా?", - "description": "Confirmation before deleting a style" + "message": "మీరు నజంగానే ఈ శైలిని తొలగించాలనుకుంటున్నారా?" }, "deleteStyleLabel": { - "message": "తొలగించు", - "description": "Label for the button to delete a style" + "message": "తొలగించు" }, "disableStyleLabel": { - "message": "అచేతనించు", - "description": "Label for the button to disable a style" + "message": "అచేతనించు" }, "editStyleLabel": { - "message": "మార్చు", - "description": "Label for the button to go to the edit style page" + "message": "మార్చు" }, "enableStyleLabel": { - "message": "చేతనించు", - "description": "Label for the button to enable a style" + "message": "చేతనించు" }, "helpAlt": { - "message": "సహాయం", - "description": "Alternate text for help buttons" + "message": "సహాయం" }, "manageHeading": { - "message": "స్థాపిత శైలులు", - "description": "Heading for the manage page" + "message": "స్థాపిత శైలులు" }, "manageTitle": { - "message": "స్టైలిష్", - "description": "Title for the manage page" + "message": "స్టైలిష్" }, "styleSaveLabel": { - "message": "భద్రపరచు", - "description": "Label for save button for style editing" + "message": "భద్రపరచు" } -} \ No newline at end of file +} diff --git a/_locales/tr/messages.json b/_locales/tr/messages.json index 1dedf52b..2320d65c 100644 --- a/_locales/tr/messages.json +++ b/_locales/tr/messages.json @@ -1,23 +1,18 @@ { "addStyleLabel": { - "message": "Yeni stil oluşturun", - "description": "Label for the button to go to the add style page" + "message": "Yeni stil oluşturun" }, "addStyleTitle": { - "message": "Stil Ekleyin", - "description": "Title of the page for adding styles" + "message": "Stil Ekleyin" }, "alphaChannel": { - "message": "Opaklık", - "description": "Label of color's opacity" + "message": "Opaklık" }, "appliesAdd": { - "message": "Ekleyin", - "description": "Label for the button to add an 'applies' entry" + "message": "Ekleyin" }, "appliesDisplay": { "message": "Şuraya uygulanır: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,284 +20,220 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "ve diğerleri", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "ve diğerleri" }, "appliesDomainOption": { - "message": "Alan adındaki URLler", - "description": "Option to make the style apply to the entered string as a domain" + "message": "Alan adındaki URLler" }, "appliesHelp": { - "message": "Bu bölümdeki kodun hangi URLlere uygulanacağını sınırlamak için 'Şuraya uygulanır' denetimlerini kullanın.", - "description": "Help text for 'applies to' section" + "message": "Bu bölümdeki kodun hangi URLlere uygulanacağını sınırlamak için 'Şuraya uygulanır' denetimlerini kullanın." }, "appliesLabel": { - "message": "Şuraya uygulanır", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "Şuraya uygulanır" }, "appliesLineWidgetWarning": { - "message": "Küçültülmüş CSS ile çalışmaz", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "Küçültülmüş CSS ile çalışmaz" }, "appliesRegexpOption": { - "message": "regexp ile eşleşen URL'ler", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "regexp ile eşleşen URL'ler" }, "appliesRemove": { - "message": "Kaldır", - "description": "Label for the button to remove an 'applies' entry" + "message": "Kaldır" }, "appliesSpecify": { - "message": "Belirt", - "description": "Label for the button to make a style apply only to specific sites" + "message": "Belirt" }, "appliesToEverything": { - "message": "Her şey", - "description": "Text displayed for styles that apply to all sites" + "message": "Her şey" }, "appliesUrlPrefixOption": { - "message": "Şununla başlayan URL'ler:", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "Şununla başlayan URL'ler:" }, "applyAllUpdates": { - "message": "Tüm güncellemeleri uygula", - "description": "Label for the button to apply all detected updates" + "message": "Tüm güncellemeleri uygula" }, "author": { - "message": "Yazar", - "description": "Label for the style author" + "message": "Yazar" }, "backupButtons": { - "message": "Yedek", - "description": "Heading for backup" + "message": "Yedek" }, "backupMessage": { - "message": "Bir dosya seçin veya bu sayfaya sürükleyip bırakın.", - "description": "Message for backup" + "message": "Bir dosya seçin veya bu sayfaya sürükleyip bırakın." }, "bckpInstStyles": { - "message": "Dışa aktar", - "description": "" + "message": "Dışa aktar" }, "checkAllUpdates": { - "message": "Tüm stiller için güncellemeleri denetle", - "description": "Label for the button to check all styles for updates" + "message": "Tüm stiller için güncellemeleri denetle" }, "checkAllUpdatesForce": { - "message": "Tekrar kontrol et, herhangi bir stil düzenlemedim!", - "description": "Label for the button to apply all detected updates" + "message": "Tekrar kontrol et, herhangi bir stil düzenlemedim!" }, "checkForUpdate": { - "message": "Güncellemeleri denetle", - "description": "Label for the button to check a single style for an update" + "message": "Güncellemeleri denetle" }, "checkingForUpdate": { - "message": "Kontrol ediliyor...", - "description": "Text to display when checking a style for an update" + "message": "Kontrol ediliyor..." }, "clickToUninstall": { - "message": "Kaldırmak için tıklayın", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "Kaldırmak için tıklayın" }, "cm_autoCloseBrackets": { - "message": "Parantezleri ve tırnak işaretlerini otomatik olarak kapat", - "description": "Label for the checkbox in the style editor." + "message": "Parantezleri ve tırnak işaretlerini otomatik olarak kapat" }, "cm_autoCloseBracketsTooltip": { - "message": "()[]{}''\"\" Açılışlarından birini yazarken otomatik olarak bir kapanış çifti ekleyin", - "description": "Label for the checkbox in the style editor." + "message": "()[]{}''\"\" Açılışlarından birini yazarken otomatik olarak bir kapanış çifti ekleyin" }, "cm_autocompleteOnTyping": { - "message": "Yazarken tamamla", - "description": "Label for the checkbox in the style editor." + "message": "Yazarken tamamla" }, "cm_colorpicker": { - "message": "CSS renk seçicileri", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "CSS renk seçicileri" }, "cm_indentWithTabs": { - "message": "Akıllı girintili tab kullan", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "Akıllı girintili tab kullan" }, "cm_keyMap": { - "message": "Tuşeşlem", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "Tuşeşlem" }, "cm_lineWrapping": { - "message": "Kelime kaydırma", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "Kelime kaydırma" }, "cm_matchHighlight": { - "message": "Vurgulama", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "Vurgulama" }, "cm_matchHighlightSelection": { - "message": "Yalnızca seçim", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "Yalnızca seçim" }, "cm_matchHighlightToken": { - "message": "İmleç altındaki token", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "İmleç altındaki token" }, "cm_resizeGripHint": { - "message": "Yüksekliği en üst düzeye çıkarmak/geri yüklemek için çift tıklayın", - "description": "Tooltip for the resize grip in style editor" + "message": "Yüksekliği en üst düzeye çıkarmak/geri yüklemek için çift tıklayın" }, "cm_selectByTokens": { - "message": "Çift tıklamak tokenleri seçer", - "description": "Label for the checkbox in the editor." + "message": "Çift tıklamak tokenleri seçer" }, "cm_selectByTokensTooltip": { - "message": "Token örnekleri: .foo-bar-2 #aabbcc 0.32 !important\nDevre dışı bırakıldığında: noktalama işareti ile ayrılmış kelimeler seçilir.", - "description": "" + "message": "Token örnekleri: .foo-bar-2 #aabbcc 0.32 !important\nDevre dışı bırakıldığında: noktalama işareti ile ayrılmış kelimeler seçilir." }, "cm_smartIndent": { - "message": "Akıllı girinti kullanma", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "Akıllı girinti kullanma" }, "cm_tabSize": { - "message": "Tab büyüklüğü", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tab büyüklüğü" }, "cm_theme": { - "message": "Tema", - "description": "Label for the style editor's CSS theme." + "message": "Tema" }, "colorpickerSwitchFormatTooltip": { - "message": "Format değişimleri: HEX -> RGB -> HSL.\nYönü ters çevirmek için Shift tuşunu basılı tutup tıklatın.\nAyrıca PgUp (PageUp), PgDn (PageDown) tuşları ile.", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "Format değişimleri: HEX -> RGB -> HSL.\nYönü ters çevirmek için Shift tuşunu basılı tutup tıklatın.\nAyrıca PgUp (PageUp), PgDn (PageDown) tuşları ile." }, "colorpickerTooltip": { - "message": "Renk seçiciyi aç", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "Renk seçiciyi aç" }, "configOnChange": { - "message": "değişiklikte", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "değişiklikte" }, "configOnChangeTooltip": { - "message": "Otomatik kaydetme ve değişiklikleri otomatik olarak uygulama", - "description": "" + "message": "Otomatik kaydetme ve değişiklikleri otomatik olarak uygulama" }, "configureStyle": { - "message": "Yapılandır", - "description": "Label for the button to configure usercss userstyle" + "message": "Yapılandır" }, "configureStyleOnHomepage": { - "message": "Ana sayfada yapılandır", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "Ana sayfada yapılandır" }, "confirmCancel": { - "message": "İptal", - "description": "" + "message": "İptal" }, "confirmClose": { - "message": "Kapat", - "description": "'Close' button in a confirm dialog" + "message": "Kapat" }, "confirmDefault": { - "message": "Öntanımlıyı kullan", - "description": "'Set to default' button in a confirm dialog" + "message": "Öntanımlıyı kullan" }, "confirmDelete": { - "message": "Sil", - "description": "" + "message": "Sil" }, "confirmDiscardChanges": { - "message": "Değişiklikleri iptal et?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "Değişiklikleri iptal et?" }, "confirmNo": { - "message": "Hayır", - "description": "'No' button in a confirm dialog" + "message": "Hayır" }, "confirmOK": { - "message": "Tamam", - "description": "" + "message": "Tamam" }, "confirmSave": { - "message": "Kaydet", - "description": "'Save' button in a confirm dialog" + "message": "Kaydet" }, "confirmStop": { - "message": "Dur", - "description": "'Stop' button in a confirm dialog" + "message": "Dur" }, "confirmYes": { - "message": "Evet", - "description": "'Yes' button in a confirm dialog" + "message": "Evet" + }, + "connectingDropbox": { + "message": "Dropbox'a bağlanıyor..." + }, + "connectingDropboxNotAllowed": { + "message": "Dropbox'a bağlanmak yalnızca doğrudan web mağazasından yüklenen uygulamalarda kullanılabilir" }, "copied": { - "message": "Kopyalandı", - "description": "Message shown when content has been copied to the clipboard" + "message": "Kopyalandı" }, "copy": { - "message": "Kopyala", - "description": "Tooltip for elements which can be copied" + "message": "Kopyala" }, "dateInstalled": { - "message": "Kurulum tarihi", - "description": "Option text for the user to sort the style by install date" + "message": "Kurulum tarihi" }, "dateUpdated": { - "message": "Güncelleme tarihi", - "description": "Option text for the user to sort the style by last update date" + "message": "Güncelleme tarihi" }, "dbError": { - "message": "Stylus veritabanı kullanılırken bir hata oluştu. Olası çözümler içeren bir web sayfasını ziyaret etmek ister misiniz?", - "description": "Prompt when a DB error is encountered" + "message": "Stylus veritabanı kullanılırken bir hata oluştu. Olası çözümler içeren bir web sayfasını ziyaret etmek ister misiniz?" }, "defaultTheme": { - "message": "öntanımlı", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "öntanımlı" }, "deleteStyleConfirm": { - "message": "Bu stili silmek istediğinizden emin misiniz?", - "description": "Confirmation before deleting a style" + "message": "Bu stili silmek istediğinizden emin misiniz?" }, "deleteStyleLabel": { - "message": "Sil", - "description": "Label for the button to delete a style" + "message": "Sil" }, "description": { - "message": "Kullanıcı stil yöneticisi Stylus ile Web'in stilini yenileyin. Stylus Google, Facebook, YouTube, Orkut ve diğer pek çok site için temalar ve görünüm yüklemenize imkân tanır.", - "description": "Extension description" + "message": "Kullanıcı stil yöneticisi Stylus ile Web'in stilini yenileyin. Stylus Google, Facebook, YouTube, Orkut ve diğer pek çok site için temalar ve görünüm yüklemenize imkân tanır." }, "disableAllStyles": { - "message": "Tüm stilleri kapat", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "Tüm stilleri kapat" }, "disableStyleLabel": { - "message": "Devre dışı bırak", - "description": "Label for the button to disable a style" + "message": "Devre dışı bırak" }, "dragDropMessage": { - "message": "İçe aktarmak için yedek dosyanızı bu sayfada herhangi bir yere bırakın.", - "description": "Drag'n'drop message" + "message": "İçe aktarmak için yedek dosyanızı bu sayfada herhangi bir yere bırakın." }, "dragDropUsercssTabstrip": { - "message": "Dosyayı yüklemek için sekme şeridine (sekme başlıklarının gösterildiği alan) bırakın.", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "Dosyayı yüklemek için sekme şeridine (sekme başlıklarının gösterildiği alan) bırakın." }, "editDeleteText": { - "message": "Sil", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "Sil" }, "editGotoLine": { - "message": "Satıra git (veya satır:sütun)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "Satıra git (veya satır:sütun)" }, "editStyleHeading": { - "message": "Stili Düzenle", - "description": "Title of the page for editing styles" + "message": "Stili Düzenle" }, "editStyleLabel": { - "message": "Düzenle", - "description": "Label for the button to go to the edit style page" + "message": "Düzenle" }, "editStyleTitle": { "message": "$stylename$ Stilini Düzenleyin", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -310,420 +241,411 @@ } }, "enableStyleLabel": { - "message": "Etkinleştir", - "description": "Label for the button to enable a style" + "message": "Etkinleştir" }, "excludeStyleByDomainLabel": { - "message": "Mevcut alan adını hariç tut", - "description": "" + "message": "Mevcut alan adını hariç tut" }, "excludeStyleByUrlLabel": { - "message": "Mevcut URL'yi hariç tut", - "description": "" + "message": "Mevcut URL'yi hariç tut" }, "exportLabel": { - "message": "Dışa aktar", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "Dışa aktar" + }, + "exportSavedSuccess": { + "message": "Dosya başarıyla kaydedildi" }, "externalFeedback": { - "message": "Geribildirim", - "description": "Label for the external link to send feedback for the style" + "message": "Geribildirim" }, "externalHomepage": { - "message": "Anasayfa", - "description": "Label for the external link to style's homepage" + "message": "Anasayfa" }, "externalLink": { - "message": "Harici bağlantı", - "description": "Label for external links" + "message": "Harici bağlantı" }, "externalSupport": { - "message": "Destek", - "description": "Label for the external link to style's support site" + "message": "Destek" }, "externalUsercssDocument": { - "message": "Usercss belgeleri", - "description": "Label for the external link to usercss documentation" + "message": "Usercss belgeleri" }, "filteredStyles": { "message": "Toplam $numTotal$ gösterilen $numShown$", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "Şu anda uygulanan filtreler hiçbir stille eşleşmiyor", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "Şu anda uygulanan filtreler hiçbir stille eşleşmiyor" }, "findStyles": { - "message": "Stil bul", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Stil bul" }, "findStylesForSite": { - "message": "Bu site için başka stiller bul", - "description": "Text for a link that gets a list of styles for the current site" + "message": "Bu site için başka stiller bul" }, "findStylesInline": { - "message": "Hizada", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "Hizada" }, "findStylesInlineTooltip": { - "message": "Arama sonuçlarını bu pencerede görüntüleyin.", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "Arama sonuçlarını bu pencerede görüntüleyin." }, "genericAdd": { - "message": "Ekle", - "description": "Used in various places for an action that adds something" + "message": "Ekle" }, "genericClone": { - "message": "Klon", - "description": "Used in various places for an action that clones something" + "message": "Klon" }, "genericDisabledLabel": { - "message": "Devre dışı", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "Devre dışı" }, "genericEnabledLabel": { - "message": "Etkin", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "Etkin" }, "genericError": { - "message": "Hata", - "description": "Used in various places to indicate some error occurred." + "message": "Hata" }, "genericHistoryLabel": { - "message": "Geçmiş", - "description": "Used in various places to show a history log of something" + "message": "Geçmiş" }, "genericNext": { - "message": "Sonraki", - "description": "Used in various places to select/perform the next step/action" + "message": "Sonraki" }, "genericPrevious": { - "message": "Önceki", - "description": "Used in various places to select/perform the previous step/action" + "message": "Önceki" }, "genericResetLabel": { - "message": "Yenile", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "Yenile" }, "genericSavedMessage": { - "message": "Kaydedildi", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "Kaydedildi" }, "genericTitle": { - "message": "Başlık", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "Başlık" }, "genericUnknown": { - "message": "Bilinmiyor", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "Bilinmiyor" + }, + "gettingStyles": { + "message": "Tüm stiller alınıyor..." }, "helpAlt": { - "message": "Yardım", - "description": "Alternate text for help buttons" + "message": "Yardım" }, "helpKeyMapCommand": { - "message": "Bir komut adı yazın", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Bir komut adı yazın" }, "helpKeyMapHotkey": { - "message": "Bir kısayol tuşuna basın", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "Bir kısayol tuşuna basın" }, "hostDisabled": { - "message": "Bu ana bilgisayar, kullanılan tarayıcının mevcut sürümündeki bir hata nedeniyle devre dışı bırakıldı", - "description": "Tooltip for cloud host disabled" + "message": "Bu ana bilgisayar, kullanılan tarayıcının mevcut sürümündeki bir hata nedeniyle devre dışı bırakıldı" }, "importAppendLabel": { - "message": "Stile ekle", - "description": "Label for the button to import a style and append to the existing sections" + "message": "Stile ekle" }, "importAppendTooltip": { - "message": "İçe aktarılan stili geçerli stile ekleme", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "İçe aktarılan stili geçerli stile ekleme" }, "importLabel": { - "message": "İçe aktar", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "İçe aktar" }, "importReplaceLabel": { - "message": "Stilin üzerine yaz", - "description": "Label for the button to import and overwrite current style" + "message": "Stilin üzerine yaz" }, "importReplaceTooltip": { - "message": "Geçerli stilin içeriğini atın ve içe aktarılan stil ile üzerine yazın", - "description": "Label for the button to import and overwrite current style" + "message": "Geçerli stilin içeriğini atın ve içe aktarılan stil ile üzerine yazın" }, "importReportLegendAdded": { - "message": "eklendi", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "eklendi" + }, + "importReportLegendIdentical": { + "message": "Özdeş olan atlandı" + }, + "importReportLegendInvalid": { + "message": "geçersiz olan atlandı" }, "importReportLegendUpdatedBoth": { - "message": "hem meta bilgi hem de kod güncellendi", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "hem meta bilgi hem de kod güncellendi" }, "importReportLegendUpdatedCode": { - "message": "güncellenmiş kod", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "güncellenmiş kod" + }, + "importReportTitle": { + "message": "Stillerin içeri aktarılması tamamlandı." + }, + "importReportUnchanged": { + "message": "Hiçbir şey değiştirilmedi." + }, + "importReportUndone": { + "message": "stiller geri çevrildi" }, "importReportUndoneTitle": { - "message": "İçe aktarma geri alındı", - "description": "Title of the message box shown after undoing the import of styles" + "message": "İçe aktarma geri alındı" }, "installButton": { - "message": "Stil kur", - "description": "Label for install button" + "message": "Stil kur" }, "installButtonInstalled": { - "message": "Stil kuruldu", - "description": "Text displayed when the style is successfully installed" + "message": "Stil kuruldu" }, "installButtonReinstall": { - "message": "Stili yeniden kur", - "description": "Label for reinstall button" + "message": "Stili yeniden kur" }, "installButtonUpdate": { - "message": "Stili güncelle", - "description": "Label for update button" + "message": "Stili güncelle" }, "installUpdate": { - "message": "Güncellemeyi yükle", - "description": "Label for the button to install an update for a single style" + "message": "Güncellemeyi yükle" }, "installUpdateFromLabel": { - "message": "Güncellemeleri denetle", - "description": "Label for the checkbox to save current URL for update check" + "message": "Güncellemeleri denetle" }, "license": { - "message": "Lisans", - "description": "Label for the license" + "message": "Lisans" }, "linkGetHelp": { - "message": "Destek al", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "Destek al" }, "linkStylusWiki": { - "message": "Viki", - "description": "Wiki link text on the manage page e.g. https://github.com/openstyles/stylus/wiki" + "message": "Viki" }, "linkTranslate": { - "message": "Çevir", - "description": "Transifex link text on the manage page" + "message": "Çevir" }, "linterIssues": { - "message": "Sorunlar", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "Sorunlar" + }, + "manageFaviconsGray": { + "message": "Gri renkte" + }, + "manageFaviconsHelp": { + "message": "Stylus harici bir servis kullanır https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "Filtreler", - "description": "Label for filters container" + "message": "Filtreler" }, "manageHeading": { - "message": "Yüklü Stiller", - "description": "Heading for the manage page" + "message": "Yüklü Stiller" + }, + "manageMaxTargets": { + "message": "Uygulanan ögelerin sayısı" + }, + "manageNewUI": { + "message": "Yeni yönetim ara yüzü düzeni" }, "manageOnlyEnabled": { - "message": "Yalnızca etkin stiller", - "description": "Checkbox to show only enabled styles" + "message": "Yalnızca etkin stiller" + }, + "manageOnlyLocal": { + "message": "Yalnızca yerelde oluşturulmuş stiller" + }, + "manageOnlyLocalTooltip": { + "message": "Stiller, bir userstyles.org sayfası üzerinden yülenmemiş." + }, + "manageOnlyUpdates": { + "message": "Sadece güncellemeler ya da sorunlar ile" }, "menuShowBadge": { - "message": "Etkin stil sayısını göster", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "Etkin stil sayısını göster" + }, + "noFileToImport": { + "message": "Stillerinizi içe aktarmak için önce dışa aktarmanız gerekir." }, "noStylesForSite": { - "message": "Bu site için hiçbir stil yüklenmedi.", - "description": "Text displayed when no styles are installed for the current site" + "message": "Bu site için hiçbir stil yüklenmedi." }, "openManage": { - "message": "Yüklü stilleri yönet", - "description": "Link to open the manage page." + "message": "Yüklü stilleri yönet" }, "openStylesManager": { - "message": "Stil yöneticisini aç", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "Stil yöneticisini aç" }, "optionsActions": { - "message": "İşlemler", - "description": "" + "message": "İşlemler" + }, + "optionsAdvanced": { + "message": "Gelişmiş" + }, + "optionsAdvancedContextDelete": { + "message": "Editör bağlam menüsüne 'Sil' seçeneği ekle" + }, + "optionsAdvancedExposeIframes": { + "message": "HTML[stylus-iframe] vasıtasıyla iframe'leri gösterin" }, "optionsBadgeDisabled": { - "message": "Etkin değilken arkaplan rengi", - "description": "" + "message": "Etkin değilken arkaplan rengi" }, "optionsBadgeNormal": { - "message": "Arkaplan rengi", - "description": "" + "message": "Arkaplan rengi" }, "optionsCheck": { - "message": "Stilleri güncelle", - "description": "" + "message": "Stilleri güncelle" + }, + "optionsCheckUpdate": { + "message": "Uygun tüm güncellemeleri kontrol et ve yükle." + }, + "optionsCustomizePopup": { + "message": "Açılır pencere" + }, + "optionsCustomizeUpdate": { + "message": "Güncellemeler" }, "optionsHeading": { - "message": "Seçenekler", - "description": "Heading for options section on manage page." + "message": "Seçenekler" }, "optionsOpen": { - "message": "Aç", - "description": "" + "message": "Aç" }, "optionsOpenManager": { - "message": "Stilleri yönet", - "description": "" + "message": "Stilleri yönet" + }, + "optionsPopupWidth": { + "message": "Popup genişliği (piksel cinsinden)" + }, + "optionsReset": { + "message": "Ayarları varsayılanlara sıfırla." + }, + "optionsResetButton": { + "message": "Sıfırlama seçenekleri" }, "optionsSubheading": { - "message": "Daha Fazla Seçenek", - "description": "Subheading for options section on manage page." + "message": "Daha Fazla Seçenek" }, "optionsSyncConnect": { - "message": "Bağlan", - "description": "" + "message": "Bağlan" }, "optionsSyncDisconnect": { - "message": "Bağlantıyı kes", - "description": "" + "message": "Bağlantıyı kes" }, "optionsSyncLogin": { - "message": "Giriş yap", - "description": "" - }, - "optionsSyncStatusConnecting": { - "message": "Bağlanılıyor...", - "description": "" + "message": "Giriş yap" }, "optionsSyncStatusConnected": { - "message": "Bağlandı", - "description": "" + "message": "Bağlandı" }, - "optionsSyncStatusDisconnecting": { - "message": "Bağlantı kesiliyor...", - "description": "" + "optionsSyncStatusConnecting": { + "message": "Bağlanılıyor..." }, "optionsSyncStatusDisconnected": { - "message": "Bağlantı kesildi", - "description": "" + "message": "Bağlantı kesildi" + }, + "optionsSyncStatusDisconnecting": { + "message": "Bağlantı kesiliyor..." + }, + "optionsUpdateImportNote": { + "message": "Eski versiyonlardan ya da Stylish'ten stil yedeklerini içeri aktarırken, hepsinin güncel olduğundan emin olmak için stil yöneticisinden bir defa elle güncelleme kontrolü yapın" + }, + "optionsUpdateInterval": { + "message": "Saat cinsinden kullanıcı stili otomatik güncelleme aralığı (devre dışı bırakmak için 0 yazın) " + }, + "overwriteFileExport": { + "message": "Mevcut bir dosyanın üzerine yazmak istiyor musunuz?" }, "paginationCurrent": { - "message": "Şimdiki sayfa", - "description": "Tooltip for the current page index in search results" + "message": "Şimdiki sayfa" }, "paginationEstimated": { - "message": "Tahmini sayfa sayısı", - "description": "Tooltip for the total page count in search results" + "message": "Tahmini sayfa sayısı" }, "paginationNext": { - "message": "Sonraki sayfa", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "Sonraki sayfa" }, "paginationPrevious": { - "message": "Önceki sayfa", - "description": "Tooltip for the '<-' button in search results" + "message": "Önceki sayfa" }, "paginationTotal": { - "message": "Toplam sayfa", - "description": "" + "message": "Toplam sayfa" + }, + "prefShowBadge": { + "message": "Şu an açık olan site için aktif olan stil sayısı" }, "previewLabel": { - "message": "Canlı önizleme", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "Canlı önizleme" + }, + "readingStyles": { + "message": "Stiller okunuyor..." }, "replace": { - "message": "Değiştir", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "Değiştir" }, "replaceAll": { - "message": "Hepsini değiştir", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "Hepsini değiştir" }, "replaceWith": { - "message": "Şununla değiştir", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "Şununla değiştir" }, "retrieveBckp": { - "message": "Stilleri içe aktar", - "description": "" + "message": "Stilleri içe aktar" + }, + "retrieveDropboxSync": { + "message": "Dropbox'a aktar" }, "search": { - "message": "Ara", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "Ara" + }, + "searchRegexp": { + "message": "Regexp araması için /re/ sözdizimini (syntax) kullanın." }, "searchResultInstallCount": { - "message": "Toplam kurulum sayısı", - "description": "Text for label that shows the number of times a search result was installed" + "message": "Toplam kurulum sayısı" }, "searchResultNoneFound": { - "message": "Bu site için stil bulunamadı.", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "Bu site için stil bulunamadı." }, "searchResultWeeklyCount": { - "message": "Haftalık kurulum sayısı", - "description": "Text for label that shows the number of times a search result was installed during last week" - }, - "searchStyles": { - "message": "İçerikleri ara", - "description": "Label for the search filter textbox on the Manage styles page" + "message": "Haftalık kurulum sayısı" }, "sectionAdd": { - "message": "Başka bölüm ekle", - "description": "Label for the button to add a section" + "message": "Başka bölüm ekle" }, "sectionCode": { - "message": "Kod", - "description": "Label for the code for a section" + "message": "Kod" }, "sectionRemove": { - "message": "Bölümü kaldır", - "description": "Label for the button to remove a section" + "message": "Bölümü kaldır" }, "shortcuts": { - "message": "Kısayollar", - "description": "Go to shortcut configuration" + "message": "Kısayollar" }, "shortcutsNote": { - "message": "Klavye kısayolları tanımla", - "description": "" + "message": "Klavye kısayolları tanımla" }, "sortDateNewestFirst": { - "message": "önce en yeniler", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "önce en yeniler" }, "sortDateOldestFirst": { - "message": "önce en eskiler", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "önce en eskiler" }, "sortStylesHelpTitle": { - "message": "İçeriği sırala", - "description": "Label for the sort info popup on the Manage styles page" + "message": "İçeriği sırala" + }, + "styleBadRegexp": { + "message": "Regexp geçerli değil." }, "styleBeautify": { - "message": "Güzelleştir", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "Güzelleştir" }, "styleCancelEditLabel": { - "message": "Yönetim sayfasına dön", - "description": "Label for cancel button for style editing" + "message": "Yönetim sayfasına dön" }, "styleChangesNotSaved": { - "message": "Bu stilde yaptığınız, kaydedilmemiş değişiklikler var.", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "Bu stilde yaptığınız, kaydedilmemiş değişiklikler var." }, "styleEnabledLabel": { - "message": "Etkin", - "description": "Label for the enabled state of styles" + "message": "Etkin" }, "styleFromMozillaFormatPrompt": { - "message": "Mozilla biçemiyle yazılmış kodu yapıştır", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "Mozilla biçemiyle yazılmış kodu yapıştır" }, "styleInstall": { "message": "'$stylename$' Stylus'e yüklensin mi?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -731,28 +653,46 @@ } }, "styleMissingName": { - "message": "Bir ad girin", - "description": "Error displayed when user saves without providing a name" + "message": "Bir ad girin" }, "styleMozillaFormatHeading": { - "message": "Mozilla Biçemi", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla Biçemi" + }, + "styleRegexpInvalidExplanation": { + "message": "Hiç derlenemeyen bazı 'regexp ()' kuralları." + }, + "styleRegexpProblemTooltip": { + "message": "'Regexp ()' yanlış kullanımı nedeniyle uygulanmayan bölüm sayısı" + }, + "styleRegexpTestButton": { + "message": "RegExp testi" + }, + "styleRegexpTestFull": { + "message": "Eşleşen sekmeler" + }, + "styleRegexpTestInvalid": { + "message": "Geçersiz regexp'ler atlandı" + }, + "styleRegexpTestNone": { + "message": "Eşleşen sekme yok" + }, + "styleRegexpTestPartial": { + "message": "Tam olarak eşleşmediğinden atlandı" + }, + "styleRegexpTestTitle": { + "message": "Eşleşen açık sekmelerin listesi (sekmesine gitmek için URL'ye tıklayın)" }, "styleSaveLabel": { - "message": "Kaydet", - "description": "Label for save button for style editing" + "message": "Kaydet" }, "styleToMozillaFormatHelp": { - "message": "Kodun Mozilla biçimi, Firefox için Stylish ile kullanılabilir ve userstyles.org sitesine gönderilebilir.", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Kodun Mozilla biçimi, Firefox için Stylish ile kullanılabilir ve userstyles.org sitesine gönderilebilir." }, "styleToMozillaFormatTitle": { - "message": "Mozilla biçeminde bir stil", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla biçeminde bir stil" }, "styleUpdate": { "message": "\";$stylename$\" stilini güncelleştirmek istiyor musunuz?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -760,20 +700,40 @@ } }, "stylusUnavailableForURL": { - "message": "Stylus bunun gibi sayfalarda çalışmaz.", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus bunun gibi sayfalarda çalışmaz." + }, + "stylusUnavailableForURLdetails": { + "message": "Bir güvenlik önlemi olarak tarayıcı eklentilerin, kendinin yerleşik sayfalarını (chrome://version, Chrome 61'den itibaren standart yeni sekme sayfası, about: addons vb.) ve diğer uzantı sayfalarını etkilemesini engeller. Ayrıca her tarayıcı kendi uzantı galerisine (Chrome Web Mağazası veya AMO gibi) erişimi de kısıtlar. " + }, + "syncDropboxDeprecated": { + "message": "Dropbox içe/dışa aktarma, seçenekler sayfasında daha gelişmiş bir stil senkronizasyonu ile değiştirilir." + }, + "syncDropboxStyles": { + "message": "Dropbox'tan aktar" + }, + "toggleStyle": { + "message": "Stili değiştir" }, "undo": { - "message": "Geri al", - "description": "Button label" + "message": "Geri al" + }, + "undoGlobal": { + "message": "Tüm bölümlerde geri alma işlemi uygula." + }, + "unreachableContentScript": { + "message": "Sayfayla iletişim kurulamadı. Sekmeyi yeniden yüklemeyi deneyin." + }, + "unreachableFileHint": { + "message": "Stylus, eğer siz Stylus chrome://extensions sayfasından ilgili onay kutusunu işaretlerseniz file:// adreslerine erişebilir." + }, + "unzipStyles": { + "message": "Stiller açılıyor..." }, "updateAllCheckSucceededNoUpdate": { - "message": "Güncelleme bulunamadı.", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "Güncelleme bulunamadı." }, "updateCheckFailBadResponseCode": { "message": "Güncellenemedi: sunucu yanıt olarak $code$ kodunu gönderdi.", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -781,115 +741,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "Güncellenemedi: sunucuya erişilemiyor.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "Güncellenemedi: sunucuya erişilemiyor." }, "updateCheckHistory": { - "message": "Güncelleme kontrolü geçmişi", - "description": "" + "message": "Güncelleme kontrolü geçmişi" + }, + "updateCheckManualUpdateForce": { + "message": "Güncellemeyi kur (yerel düzenlemelerin üzerine yazılacak)" + }, + "updateCheckManualUpdateHint": { + "message": "Bir güncellemeyi zorla yapmak yerel düzenlemelerin üstüne yazacaktır." + }, + "updateCheckSkippedLocallyEdited": { + "message": "Bu stil yerel olarak düzenlendi." }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "Bu stil yerel olarak düzenlenmiş olabilir.", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "Bu stil yerel olarak düzenlenmiş olabilir." }, "updateCheckSucceededNoUpdate": { - "message": "Stil güncel.", - "description": "Text that displays when an update check completed and no update is available" + "message": "Stil güncel." }, "updateCompleted": { - "message": "Güncelleme tamamlandı.", - "description": "Text that displays when an update completed" + "message": "Güncelleme tamamlandı." }, "updatesCurrentlyInstalled": { - "message": "Kurulan güncellemeler:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "Mevcut bir stilin üzerine yazmaktan kaçınmak için lütfen @name veya @ ad alanının değerini değiştirin.", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "Stil, yapılandırma iletişim kutusu gösterildikten sonra güncellendi veya silindi. Bu değişkenler, stilin meta verilerini bozmamak için kaydedilmedi:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "Kodda @name belirtin", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "Yeni Usercss stilleri için varsayılan şablonu geçerli kodla değiştir?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "Boş @name, varsayılan şablonun yerini alır", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "Kodu buraya ekle...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "Sürüm, kurulu stillerden daha eski.", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "Şunun için stil yaz:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "bu URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropbox'tan aktar", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Dropbox içe/dışa aktarma, seçenekler sayfasında daha gelişmiş bir stil senkronizasyonu ile değiştirilir.", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox'a aktar", - "description": "" - }, - "overwriteFileExport": { - "message": "Mevcut bir dosyanın üzerine yazmak istiyor musunuz?", - "description": "" - }, - "exportSavedSuccess": { - "message": "Dosya başarıyla kaydedildi", - "description": "" - }, - "noFileToImport": { - "message": "Stillerinizi içe aktarmak için önce dışa aktarmanız gerekir.", - "description": "" - }, - "connectingDropbox": { - "message": "Dropbox'a bağlanıyor...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "Dropbox'a bağlanmak yalnızca doğrudan web mağazasından yüklenen uygulamalarda kullanılabilir", - "description": "" - }, - "gettingStyles": { - "message": "Tüm stiller alınıyor...", - "description": "" - }, - "zipStyles": { - "message": "Stiller sıkıştırılıyor...", - "description": "" - }, - "unzipStyles": { - "message": "Stiller açılıyor...", - "description": "" - }, - "readingStyles": { - "message": "Stiller okunuyor...", - "description": "" + "message": "Kurulan güncellemeler:" }, "uploadingFile": { - "message": "Dosya Yükleniyor...", - "description": "" + "message": "Dosya Yükleniyor..." + }, + "usercssAvoidOverwriting": { + "message": "Mevcut bir stilin üzerine yazmaktan kaçınmak için lütfen @name veya @ ad alanının değerini değiştirin." + }, + "usercssConfigIncomplete": { + "message": "Stil, yapılandırma iletişim kutusu gösterildikten sonra güncellendi veya silindi. Bu değişkenler, stilin meta verilerini bozmamak için kaydedilmedi:" + }, + "usercssEditorNamePlaceholder": { + "message": "Kodda @name belirtin" + }, + "usercssReplaceTemplateConfirmation": { + "message": "Yeni Usercss stilleri için varsayılan şablonu geçerli kodla değiştir?" + }, + "usercssReplaceTemplateName": { + "message": "Boş @name, varsayılan şablonun yerini alır" + }, + "usercssReplaceTemplateSectionBody": { + "message": "Kodu buraya ekle..." + }, + "versionInvalidOlder": { + "message": "Sürüm, kurulu stillerden daha eski." + }, + "writeStyleFor": { + "message": "Şunun için stil yaz:" + }, + "writeStyleForURL": { + "message": "bu URL" + }, + "zipStyles": { + "message": "Stiller sıkıştırılıyor..." } } diff --git a/_locales/uk/messages.json b/_locales/uk/messages.json new file mode 100644 index 00000000..84ed2c44 --- /dev/null +++ b/_locales/uk/messages.json @@ -0,0 +1,234 @@ +{ + "InaccessibleFileHint": { + "message": "Stylus не може отримати доступ до деяких типів файлів (наприклад, файли PDF і JSON)." + }, + "addStyleLabel": { + "message": "Написати новий стиль" + }, + "addStyleTitle": { + "message": "Додати стиль" + }, + "alphaChannel": { + "message": "Прозорість" + }, + "appliesAdd": { + "message": "Додати" + }, + "appliesDisplay": { + "message": "Застосувати до $applies$", + "placeholders": { + "applies": { + "content": "$1" + } + } + }, + "appliesDisplayTruncatedSuffix": { + "message": "та інші" + }, + "appliesDomainOption": { + "message": "URL в домені" + }, + "appliesHelp": { + "message": "Щоб вказати, до яких URL відноситься код в цьому розділі, скористайтеся параметром \"Застосувати до\"." + }, + "appliesLabel": { + "message": "Застосувати до" + }, + "appliesLineWidgetLabel": { + "message": "Показати цільові сайти секцій" + }, + "appliesRemove": { + "message": "Видалити" + }, + "appliesRemoveError": { + "message": "Не можна видалити останній елемент" + }, + "appliesSpecify": { + "message": "Вказати" + }, + "appliesToEverything": { + "message": "Все" + }, + "appliesUrlPrefixOption": { + "message": "URL, що починаються з " + }, + "applyAllUpdates": { + "message": "Застосувати всі оновлення" + }, + "author": { + "message": "Автор" + }, + "backupButtons": { + "message": "Резервне копіювання" + }, + "backupMessage": { + "message": "Виберіть файл або перетягніть на цю сторінку." + }, + "bckpInstStyles": { + "message": "Експорт стилів" + }, + "checkingForUpdate": { + "message": "Перевірка ... " + }, + "clickToUninstall": { + "message": "Натисніть, щоб видалити " + }, + "cm_selectByTokensTooltip": { + "message": "Приклади токенов: .foo-бар-2 #aabbcc 0,32 !important\nЯкщо вимкнено: вибираються слова, розділені розділовими знаками." + }, + "confirmCancel": { + "message": "Скасувати " + }, + "confirmDelete": { + "message": "Видалити " + }, + "confirmNo": { + "message": "Ні" + }, + "confirmSave": { + "message": "Зберегти" + }, + "confirmStop": { + "message": "Зупинити" + }, + "confirmYes": { + "message": "Так" + }, + "deleteStyleLabel": { + "message": "Видалити" + }, + "disableStyleLabel": { + "message": "Вимкнути" + }, + "findStyles": { + "message": "Знайти стилі" + }, + "findStylesForSite": { + "message": "Знайти більше стилів для цього сайту" + }, + "findStylesInline": { + "message": "і показати тут" + }, + "findStylesInlineTooltip": { + "message": "Показувати знайдені стилі в цьому вікні." + }, + "genericAdd": { + "message": "Додати" + }, + "genericDescription": { + "message": "Опис" + }, + "genericDisabledLabel": { + "message": "Відключено" + }, + "genericEnabledLabel": { + "message": "Увімкнено" + }, + "genericError": { + "message": "Помилка" + }, + "genericHistoryLabel": { + "message": "Історія" + }, + "genericNext": { + "message": "Наступний " + }, + "genericPrevious": { + "message": "Попередній" + }, + "genericResetLabel": { + "message": "Скинути" + }, + "genericSavedMessage": { + "message": "Збережено" + }, + "genericTitle": { + "message": "Ім'я" + }, + "genericUnknown": { + "message": "Невідомо" + }, + "gettingStyles": { + "message": "Отримання всіх стилів ..." + }, + "helpAlt": { + "message": "Довідка" + }, + "helpKeyMapCommand": { + "message": "Введіть ім'я команди" + }, + "helpKeyMapHotkey": { + "message": "Натисніть клавішу" + }, + "hostDisabled": { + "message": "Цей хост вимкнено через помилку в поточній версії браузера, що використовується" + }, + "importLabel": { + "message": "Імпорт" + }, + "importReplaceLabel": { + "message": "Замінити стиль" + }, + "importReportLegendIdentical": { + "message": "ідентичні пропущені" + }, + "importReportLegendInvalid": { + "message": "недісних пропущено" + }, + "importReportTitle": { + "message": "Імпорт стилів закінчено" + }, + "manageFavicons": { + "message": "Піктограми для цільових сайтів" + }, + "manageNewUI": { + "message": "Новий інтерфейс" + }, + "meta_unknownJSONLiteral": { + "message": "Невірний JSON: $literal$не є дійсним літералом JSON", + "placeholders": { + "literal": { + "content": "$1" + } + } + }, + "openManage": { + "message": "Менеджер" + }, + "optionsReset": { + "message": "Скидання налаштувань до значень за замовчуванням" + }, + "optionsResetButton": { + "message": "Скинути параметри" + }, + "optionsSubheading": { + "message": "Додатково" + }, + "optionsSyncLogin": { + "message": "Логін" + }, + "retrieveBckp": { + "message": "Імпорт стилів" + }, + "sectionCode": { + "message": "Код" + }, + "sections": { + "message": "Розділи" + }, + "styleBeautify": { + "message": "Облагородити" + }, + "styleCancelEditLabel": { + "message": "Всі стилі" + }, + "syncErrorRelogin": { + "message": "Помилка синхронізації.\nСпробуйте повторно ввійти в налаштування Stylus:\nнатисніть спочатку «від’єднати», а потім «підключити». " + }, + "toggleStyle": { + "message": "Включити/виключити стиль" + }, + "zipStyles": { + "message": "Запаковування стилів ... " + } +} diff --git a/_locales/zh/messages.json b/_locales/zh/messages.json index 6206dc3e..8dc4cbac 100644 --- a/_locales/zh/messages.json +++ b/_locales/zh/messages.json @@ -1,19 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus 无法访问某些文件格式(例如 pdf 或 json 文件)。" + }, "addStyleLabel": { - "message": "编写新的样式", - "description": "Label for the button to go to the add style page" + "message": "新建样式" }, "addStyleTitle": { - "message": "添加样式", - "description": "Title of the page for adding styles" + "message": "添加样式" + }, + "alphaChannel": { + "message": "透明度" }, "appliesAdd": { - "message": "添加", - "description": "Label for the button to add an 'applies' entry" + "message": "添加部分" }, "appliesDisplay": { - "message": "应用到: $applies$", - "description": "Text on the manage screen to describe what the style applies to", + "message": "应用于:$applies$", "placeholders": { "applies": { "content": "$1" @@ -21,84 +23,273 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "以及更多", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "更多" }, "appliesDomainOption": { - "message": "指定域上的URL", - "description": "Option to make the style apply to the entered string as a domain" + "message": "域名" }, "appliesHelp": { - "message": "使用“应用到”来控制这个样式应用到哪些地址上。", - "description": "Help text for 'applies to' section" + "message": "〔URL〕⠅ 具体固定网址。URL可额外匹配到URL#hash,但反之不行。\n〔前缀〕⠅ url-prefix 以此前缀为起始开头的任何链接。\n〔域名〕⠅ domain 也默认匹配旗下子域名, 域名下任何链接。\n〔正则〕⠅ RegExp 1) 这里的正则会隐形附加 ^ $ 故只能为完整匹配模式, 且在使用懒惰正则也要注意这点;\n      2) 可以不转义 / (导出导入也会自动CSS转义符)\n\n⚠ 1) 这里不支持 * 通配符; 2) 黑名单排除也可到Popup里的 ⠇ 菜单里操作; 3) 在匹配时也要注意iframe框架URL与地址栏URL是不同的哦。\n详见github.com/openstyles/stylus/wiki/Writing-styles" }, "appliesLabel": { - "message": "应用到", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "应用于:" + }, + "appliesLineWidgetLabel": { + "message": "显示应用于部件" + }, + "appliesLineWidgetWarning": { + "message": "对经过压缩的 CSS 无效" }, "appliesRegexpOption": { - "message": "匹配正则的URL", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "正则" }, "appliesRemove": { - "message": "移除", - "description": "Label for the button to remove an 'applies' entry" + "message": "删除" + }, + "appliesRemoveError": { + "message": "无法移除最后一个“应用于”项目" }, "appliesSpecify": { - "message": "指定站点", - "description": "Label for the button to make a style apply only to specific sites" + "message": "指定" }, "appliesToEverything": { - "message": "所有站点", - "description": "Text displayed for styles that apply to all sites" + "message": "所有页面" }, "appliesUrlOption": { - "message": "地址", - "description": "Option to make the style apply to the entered string as a URL" + "message": "URL " }, "appliesUrlPrefixOption": { - "message": "以指定地址开始", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "前缀" + }, + "applyAllUpdates": { + "message": "应用全部更新" + }, + "author": { + "message": "作者" + }, + "backupButtons": { + "message": "备份" + }, + "backupMessage": { + "message": "拖拽JSON备份文件到本页面也可导入。" + }, + "bckpInstStyles": { + "message": "导出所有样式" }, "checkAllUpdates": { - "message": "检查所有样式的更新", - "description": "Label for the button to check all styles for updates" + "message": "检测全部更新" + }, + "checkAllUpdatesForce": { + "message": "我没有修改过任何样式,再检查一次!" }, "checkForUpdate": { - "message": "检查更新", - "description": "Label for the button to check a single style for an update" + "message": "检查更新" }, "checkingForUpdate": { - "message": "检查中...", - "description": "Text to display when checking a style for an update" + "message": "正在检查更新..." + }, + "clickToUninstall": { + "message": "点击卸载" + }, + "cm_autoCloseBrackets": { + "message": "括弧配对" + }, + "cm_autoCloseBracketsTooltip": { + "message": "在键入 () [] {} '' \"\" 时自动完成另一半配对" + }, + "cm_autocompleteOnTyping": { + "message": "自动完成" + }, + "cm_colorpicker": { + "message": "颜色器" + }, + "cm_indentWithTabs": { + "message": "用Tab智能缩进" + }, + "cm_keyMap": { + "message": "键盘映射" + }, + "cm_lineWrapping": { + "message": "自动换行" + }, + "cm_linter": { + "message": "Linter" + }, + "cm_matchHighlight": { + "message": "高亮" + }, + "cm_matchHighlightSelection": { + "message": "仅选择区域" + }, + "cm_matchHighlightToken": { + "message": "光标token字段" + }, + "cm_resizeGripHint": { + "message": "双击可最大化/恢复高度" + }, + "cm_selectByTokens": { + "message": "双击选中token字段" + }, + "cm_selectByTokensTooltip": { + "message": "token字段示例 .foo-bar-2\nON: 按CSS语法 双击全选中\nOFF:按\\w+常规语法 双击分别选中 foo、bar、2\n技巧: Sublime键盘映射下配合Ctrl+D来\\w+常规选中" + }, + "cm_smartIndent": { + "message": "智能缩进" + }, + "cm_tabSize": { + "message": "缩进宽度" + }, + "cm_theme": { + "message": "主题" + }, + "colorpickerPaletteHint": { + "message": "右击: 循环跳转到所在行" + }, + "colorpickerSwitchFormatTooltip": { + "message": "转换格式: HEX → RGB → HSL\n反向转换: Shift+单击 或 PgUp/PgDn" + }, + "colorpickerTooltip": { + "message": "打开颜色器" + }, + "configOnChange": { + "message": "即时生效" + }, + "configOnChangeTooltip": { + "message": "实时预览+自动保存" + }, + "configureStyle": { + "message": "配置" + }, + "configureStyleOnHomepage": { + "message": "通过userstyles.org配置选项" + }, + "confirmCancel": { + "message": "取消" + }, + "confirmClose": { + "message": "关闭" + }, + "confirmDefault": { + "message": "使用默认值" + }, + "confirmDelete": { + "message": "删除" + }, + "confirmDiscardChanges": { + "message": "确定要放弃修改吗?" + }, + "confirmNo": { + "message": "否" + }, + "confirmOK": { + "message": "确认" + }, + "confirmSave": { + "message": "保存" + }, + "confirmStop": { + "message": "停止" + }, + "confirmYes": { + "message": "是" + }, + "connectingDropbox": { + "message": "正在连接至 Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "连接到 Dropbox 功能仅适用于直接从 Webstore 安装的应用程序" + }, + "copied": { + "message": "已复制到粘贴板" + }, + "copy": { + "message": "复制到粘贴板" + }, + "customNameHint": { + "message": "在此自定义本地名称才不影响在线更新" + }, + "customNameResetHint": { + "message": "切换为样式的原始名称" + }, + "dateAbbrDay": { + "message": "$value$天前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$时前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$月前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$年前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateInstalled": { + "message": "安装日期" + }, + "dateUpdated": { + "message": "更新日期" + }, + "dbError": { + "message": "访问 Stylus 数据库时发生了一个错误。您想访问含有可能的解决方案的网页吗?" + }, + "defaultTheme": { + "message": "默认" }, "deleteStyleConfirm": { - "message": "确定要删除这个样式吗?", - "description": "Confirmation before deleting a style" + "message": "确定要删除此样式吗 ??" }, "deleteStyleLabel": { - "message": "删除", - "description": "Label for the button to delete a style" + "message": "删除" }, "description": { - "message": "Stylus,一个用户样式管理器,帮助您重新定义网页样式。Stylus易于为Google,Facebook,Youtube,Orkut以及其它各类型网站安装样式和主题。", - "description": "Extension description" + "message": "Stylus 是广受好评的 CSS&UserCSS 用户样式容器! 能够自定义网页样式和在线安装分享等等..." + }, + "disableAllStyles": { + "message": "禁用所有样式" }, "disableStyleLabel": { - "message": "禁用", - "description": "Label for the button to disable a style" + "message": "禁用" + }, + "dragDropMessage": { + "message": "拖放JSON备份文件到管理器页面即可导入!" + }, + "dragDropUsercssTabstrip": { + "message": "要安装文件,就将其放在选项卡条(显示选项卡标题的区域)上。" + }, + "editDeleteText": { + "message": "删除" + }, + "editGotoLine": { + "message": "跳转至行(或行:列)" }, "editStyleHeading": { - "message": "编辑样式", - "description": "Title of the page for editing styles" + "message": "编辑样式" }, "editStyleLabel": { - "message": "编辑", - "description": "Label for the button to go to the edit style page" + "message": "编辑" }, "editStyleTitle": { - "message": "编辑样式 $stylename$", - "description": "Title of the page for editing styles", + "message": "修改样式“$stylename$”", "placeholders": { "stylename": { "content": "$1" @@ -106,90 +297,1002 @@ } }, "enableStyleLabel": { - "message": "启用", - "description": "Label for the button to enable a style" + "message": "启用" + }, + "excludeStyleByDomainLabel": { + "message": "排除当前域名" + }, + "excludeStyleByUrlLabel": { + "message": "排除当前链接" + }, + "exportLabel": { + "message": "导出" + }, + "exportSavedSuccess": { + "message": "文件保存成功" + }, + "externalFeedback": { + "message": "反馈" + }, + "externalHomepage": { + "message": "主页" + }, + "externalLink": { + "message": "外部链接" + }, + "externalSupport": { + "message": "支持" + }, + "externalUsercssDocument": { + "message": "UserCSS 外部文档" + }, + "filteredStyles": { + "message": "共$numTotal$个,已显示 $numShown$ 个", + "placeholders": { + "numShown": { + "content": "$1" + }, + "numTotal": { + "content": "$2" + } + } + }, + "filteredStylesAllHidden": { + "message": "没有样式匹配当前的过滤器选项" + }, + "findStyles": { + "message": "查找样式" }, "findStylesForSite": { - "message": "查找更多适合此站点的样式", - "description": "Text for a link that gets a list of styles for the current site" + "message": "查找该域名的在线样式" + }, + "findStylesInline": { + "message": "嵌入此页" + }, + "findStylesInlineTooltip": { + "message": "将搜索结果嵌入到此页面显示" + }, + "genericAdd": { + "message": "添加" + }, + "genericClone": { + "message": "创建副本" + }, + "genericDisabledLabel": { + "message": "禁用" + }, + "genericEnabledLabel": { + "message": "已启用" + }, + "genericError": { + "message": "错误" + }, + "genericHistoryLabel": { + "message": "历史" + }, + "genericNext": { + "message": "下一个" + }, + "genericPrevious": { + "message": "上一个" + }, + "genericResetLabel": { + "message": "重置" + }, + "genericSavedMessage": { + "message": "已保存" + }, + "genericTitle": { + "message": "标题" + }, + "genericUnknown": { + "message": "未知" + }, + "gettingStyles": { + "message": "正在获取所有样式..." }, "helpAlt": { - "message": "帮助", - "description": "Alternate text for help buttons" + "message": "帮助" + }, + "helpKeyMapCommand": { + "message": "输入命令名称" + }, + "helpKeyMapHotkey": { + "message": "按下热键" + }, + "hostDisabled": { + "message": "由于当前使用的浏览器版本中存在的错误,此主机已被禁用" + }, + "importAppendLabel": { + "message": "追加导入" + }, + "importAppendTooltip": { + "message": "以追加的方式来导入" + }, + "importLabel": { + "message": "导入" + }, + "importPreprocessor": { + "message": "带有 @preprocessor 样式不适合于当前的常规CSS模式下。\n您应该把它粘贴到 UserCSS 的编辑器模式去。\n1)打开管理器页面 2)勾选 “新建为UserCSS” 3)点击 \"新建新样式\"\n\n仍然导入吗?" + }, + "importPreprocessorTitle": { + "message": "潜在问题之 @preprocessor 预处理" + }, + "importReplaceLabel": { + "message": "覆盖替换导入" + }, + "importReplaceTooltip": { + "message": "完全覆盖的替换导入" + }, + "importReportLegendAdded": { + "message": "个样式已被添加" + }, + "importReportLegendIdentical": { + "message": "已忽略相同样式" + }, + "importReportLegendInvalid": { + "message": "忽略无效的代码" + }, + "importReportLegendUpdatedBoth": { + "message": "已更新的所有信息和代码" + }, + "importReportLegendUpdatedCode": { + "message": "代码已更新" + }, + "importReportLegendUpdatedMeta": { + "message": "升级信息" + }, + "importReportTitle": { + "message": "样式导入完成" + }, + "importReportUnchanged": { + "message": "导入的样式无效。" + }, + "importReportUndone": { + "message": "个样式被还原" + }, + "importReportUndoneTitle": { + "message": "样式导入被取消" + }, + "installButton": { + "message": "安装样式" + }, + "installButtonInstalled": { + "message": "样式安装完成" + }, + "installButtonReinstall": { + "message": "重新安装样式" + }, + "installButtonUpdate": { + "message": "更新样式" }, "installUpdate": { - "message": "安装更新", - "description": "Label for the button to install an update for a single style" + "message": "安装更新" + }, + "installUpdateFrom": { + "message": "当前样式更新自 $url$", + "placeholders": { + "url": { + "content": "$1" + } + } + }, + "installUpdateFromLabel": { + "message": "检查更新" + }, + "license": { + "message": "许可证" + }, + "linkGetHelp": { + "message": "帮助" + }, + "linkGetStyles": { + "message": "获取样式" + }, + "linkTranslate": { + "message": "翻译" + }, + "linterCSSLintIncompatible": { + "message": "CSSLint 不支持 $preprocessorname$ 预处理器", + "placeholders": { + "preprocessorname": { + "content": "$1" + } + } + }, + "linterCSSLintSettings": { + "message": "(设置规则为:0 = 禁用; 1 = 警告; 2 = 错误)" + }, + "linterConfigPopupTitle": { + "message": "设置 $linter$ 规则", + "placeholders": { + "linter": { + "content": "$1" + } + } + }, + "linterConfigTooltip": { + "message": "配置此Linter" + }, + "linterInvalidConfigError": { + "message": "由于配置无效所以未保存:" + }, + "linterIssues": { + "message": "问题" + }, + "linterIssuesHelp": { + "message": "$link$ 找到了这些问题:", + "placeholders": { + "link": { + "content": "$1" + } + } + }, + "linterJSONError": { + "message": "无效的 JSON 格式" + }, + "linterResetMessage": { + "message": "想要恢复意外的重置,在文本框中按下 Ctrl-Z (或 Cmd-Z)" + }, + "linterRulesLink": { + "message": "查看完整的规则清单" + }, + "liveReloadError": { + "message": "查看文件时发生错误" + }, + "liveReloadInstallHint": { + "message": "保持此选项卡为打开状态,将在外部更改后自动更新样式。" + }, + "liveReloadInstallHintFF": { + "message": "保持此选项卡和原始选项卡处于打开状态,将在外部更改时自动重新更新样式。" + }, + "liveReloadLabel": { + "message": "动态刷新" + }, + "manageFavicons": { + "message": "显示 \"应用于\" 的favicon图标" + }, + "manageFaviconsGray": { + "message": "显示为灰色图标" + }, + "manageFaviconsHelp": { + "message": "Stylus 使用外部服务 https://www.google.com/s2/favicons 来获取图标" + }, + "manageFilters": { + "message": "过滤器" }, "manageHeading": { - "message": "已安装的样式", - "description": "Heading for the manage page" + "message": "样式管理器" + }, + "manageMaxTargets": { + "message": "显示 \"应用于\" 的数量" + }, + "manageNewStyleAsUsercss": { + "message": "新建为UserCSS" + }, + "manageNewUI": { + "message": "新版管理器" + }, + "manageOnlyDisabled": { + "message": "只显示 未启用 " + }, + "manageOnlyEnabled": { + "message": "只显示 已启用 " + }, + "manageOnlyExternal": { + "message": "只显示 外部安装" + }, + "manageOnlyLocal": { + "message": "只显示 本地创建" + }, + "manageOnlyLocalTooltip": { + "message": "(此样式无法通过 userstyles.org 页面进行安装)" + }, + "manageOnlyNonUsercss": { + "message": "只显示 非UserCSS" + }, + "manageOnlyUpdates": { + "message": "只显示 可升级的 " + }, + "manageOnlyUsercss": { + "message": "只显示 UserCSS" + }, + "manageTitle": { + "message": "Stylus管理器" + }, + "menuShowBadge": { + "message": "计数器角标" + }, + "meta_invalidCheckboxDefault": { + "message": "无效 @var 复选框:赋值必须为 0 或 1 " + }, + "meta_invalidColor": { + "message": "无效 @var 颜色:$color$不是颜色", + "placeholders": { + "color": { + "content": "$1" + } + } + }, + "meta_invalidNumber": { + "message": "需要一个数字" + }, + "meta_invalidRange": { + "message": "无效 @var $type$:必须是单个数字或数组", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeDefault": { + "message": "无效 @var $type$:默认值为空", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMax": { + "message": "无效的 @var $type$: 默认值大于最大值", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "无效的 @var $type$: 默认值低于最小值", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "无效 @var $type$:多个单位被定义", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeStep": { + "message": "无效的 @var $type$: 默认值不是一个数字或范围", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "无效的 @var $type$: 数组中包含了过多项", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeUnits": { + "message": "无效的 @var $type$: '$units$' 不是有效的单位", + "placeholders": { + "type": { + "content": "$1" + }, + "units": { + "content": "$2" + } + } + }, + "meta_invalidRangeValue": { + "message": "无效的 @var $type$: 数组中的项必须为数字、字符 或 null", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidSelect": { + "message": "无效的 @var 选择: 默认值必须是数组或对象" + }, + "meta_invalidSelectEmptyOptions": { + "message": "无效的 @var 选择: 列表项为空" + }, + "meta_invalidSelectLabel": { + "message": "无效的 @var 选择: 项的标签为空" + }, + "meta_invalidSelectMultipleDefaults": { + "message": "无效的 @var 选择: 定义了多个默认项" + }, + "meta_invalidSelectNameDuplicated": { + "message": "无效的 @var 选择: 项的名称是重复的" + }, + "meta_invalidSelectValue": { + "message": "无效的 @var 选择: 数组或对象内的值类型必须为字符" + }, + "meta_invalidSelectValueMismatch": { + "message": "无效的 @var 选择: 列表中不存在任何项" + }, + "meta_invalidString": { + "message": "需要一个带引号的字符串" + }, + "meta_invalidURLProtocol": { + "message": "无效的 URL 协议,目前只允许 http 和 https : $protocol$", + "placeholders": { + "protocol": { + "content": "$1" + } + } + }, + "meta_invalidVersion": { + "message": "无效的版本号" + }, + "meta_invalidWord": { + "message": "需要一个单词" + }, + "meta_missingChar": { + "message": "需要字母:$chars$", + "placeholders": { + "chars": { + "content": "$1" + } + } + }, + "meta_missingEOT": { + "message": "需要 EOT 数据" + }, + "meta_missingMandatory": { + "message": "缺少必要的元数据:$keys$", + "placeholders": { + "keys": { + "content": "$1" + } + } + }, + "meta_unknownJSONLiteral": { + "message": "无效 JSON:$literal$ 不是一个有效的 JSON 字面量(Literal)", + "placeholders": { + "literal": { + "content": "$1" + } + } + }, + "meta_unknownMeta": { + "message": "未知的元数据:$key$", + "placeholders": { + "key": { + "content": "$1" + } + } + }, + "meta_unknownPreprocessor": { + "message": "未知的预处理器 @preprocessor:$preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, + "meta_unknownVarType": { + "message": "未知的 @$varkey$ 类型: $vartype$", + "placeholders": { + "varkey": { + "content": "$1" + }, + "vartype": { + "content": "$2" + } + } + }, + "noFileToImport": { + "message": "要导入你的样式,你应该先导出。" }, "noStylesForSite": { - "message": "当前站点上没有已安装的样式", - "description": "Text displayed when no styles are installed for the current site" + "message": "此网站没有样式。" + }, + "numberedLine": { + "message": "行:" }, "openManage": { - "message": "管理已安装样式", - "description": "Link to open the manage page." + "message": "管理器" + }, + "openOptions": { + "message": "选项" + }, + "openStylesManager": { + "message": "打开管理器" + }, + "optionsActions": { + "message": "操作" + }, + "optionsAdvanced": { + "message": "高级设置" + }, + "optionsAdvancedContextDelete": { + "message": "向编辑器右键菜单添加“删除”" + }, + "optionsAdvancedExposeIframes": { + "message": "给 iframe 注入 stylus-iframe=\"父域名\"" + }, + "optionsAdvancedExposeIframesNote": { + "message": "给每个iframe内嵌框架的html注入 stylus-iframe=\"父域名hostname\" 属性(值),\n\n用途: 用作iframe选择器来一键确定 iframe 父窗(window.top) 页面 的唯一选择器.\n\n示例 html[stylus-iframe] 或 html[stylus-iframe$=\"twitter.com\"] h1 {...}\n\n详见源码:github.com/openstyles/stylus/blob/master/content/apply.js#L270" + }, + "optionsAdvancedNewStyleAsUsercss": { + "message": "将新样式的格式设为UserCSS" + }, + "optionsAdvancedPatchCsp": { + "message": "启用CSP补丁以使样式资源生效" + }, + "optionsAdvancedPatchCspNote": { + "message": "如果在带有严格CSPContent-Security-Policy)的网站上无法加载样式中包含的图像或字体,请启用此补丁选项。 \n\n启用此补丁选项将会放宽CSP限制,从而允许加载基本样式内容。⚠此选项仅适用于了解潜在安全隐患的高级用户, 并自行承担负责监视其被允许的内容。请阅读有关基于CSS攻击的更多信息以做决定。\n\n另请注意,如果另一个已安装的扩展首先修改了网络响应,则不能保证此特定选项一定会生效。" + }, + "optionsAdvancedStyleViaXhr": { + "message": "XHR即时注入模式" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "如果在网站加载时常看到一闪而过的样式闪烁晃眼(术语叫FOUC) 、特别是在深色主题下会感知得更明显,请启用此选项。\n\n技术上的原因是 Chrome内核通常以 无意义的尝试 来延迟扩展的异步通信,以提高页面加载速度,这可能会导致样式慢了半拍才被应用。\n为了避免这种情况,且由于谷歌也没有提供Web扩展的样式同步的API接口,因此Stylus提供了此选项来变相实现, 利用 “已弃用的” XMLHttpRequest 这个同步API来获取适用的样式。 它几乎没有任何副作用,因为样式请求在几毫秒内就OK了, 而网页此时仍在从服务器下载中.\n有关FOUC报告,你可以查看此讨论https://crbug.com/853986\n\n尽管如此,但 Chrome DevTools 仍会在 Console 中显示警告。 不过也可以手动搞定: 右键单击警告并将其隐藏,将防止再次显示警告。" + }, + "optionsBadgeDisabled": { + "message": "计数器背景色 (一键全禁用时)" + }, + "optionsBadgeNormal": { + "message": "计数器背景色" + }, + "optionsCheck": { + "message": "检查样式更新" + }, + "optionsCheckUpdate": { + "message": "检查并安装所有可用的更新" + }, + "optionsCustomizeBadge": { + "message": "计数器角标" + }, + "optionsCustomizeIcon": { + "message": "图标风格" + }, + "optionsCustomizePopup": { + "message": "Popup " + }, + "optionsCustomizeSync": { + "message": "同步到云端" + }, + "optionsCustomizeUpdate": { + "message": "检测更新" + }, + "optionsHeading": { + "message": "选项" + }, + "optionsIconDark": { + "message": "高对比度暗色图标" + }, + "optionsIconLight": { + "message": "低对比度亮色图标" + }, + "optionsOpen": { + "message": "打开" + }, + "optionsOpenManager": { + "message": "管理器" + }, + "optionsPopupWidth": { + "message": "Popup 弹框的宽度(px)" + }, + "optionsReset": { + "message": "重置所有选项为默认值" + }, + "optionsResetButton": { + "message": "恢复默认值" + }, + "optionsStylusThemes": { + "message": "查找 Stylus UI 主题ᐝ" + }, + "optionsSubheading": { + "message": "附加选项" + }, + "optionsSyncConnect": { + "message": "连接" + }, + "optionsSyncDisconnect": { + "message": "断开连接" + }, + "optionsSyncLogin": { + "message": "登录" + }, + "optionsSyncNone": { + "message": "无" + }, + "optionsSyncStatusConnected": { + "message": "已连接" + }, + "optionsSyncStatusConnecting": { + "message": "连接中..." + }, + "optionsSyncStatusDisconnected": { + "message": "已断开连接" + }, + "optionsSyncStatusDisconnecting": { + "message": "正在断开连接..." + }, + "optionsSyncStatusPull": { + "message": "正在获取样式 $loaded$ 中的 $total$", + "placeholders": { + "loaded": { + "content": "$1" + }, + "total": { + "content": "$2" + } + } + }, + "optionsSyncStatusPush": { + "message": "正在上传样式 $loaded$ 中的 $total$", + "placeholders": { + "loaded": { + "content": "$1" + }, + "total": { + "content": "$2" + } + } + }, + "optionsSyncStatusSyncing": { + "message": "同步中..." + }, + "optionsSyncSyncNow": { + "message": "现在同步" + }, + "optionsUpdateImportNote": { + "message": "从旧版的 Stylus 或 Stylish 中导入备份样式时,\n请手动检测升级一次,以确保所有样式都可更新到最新版本。" + }, + "optionsUpdateInterval": { + "message": "每隔 N 小时 自动检测更新(0 为禁用)" + }, + "overwriteFileExport": { + "message": "是否覆盖现有文件?" + }, + "paginationCurrent": { + "message": "当前页数" + }, + "paginationEstimated": { + "message": "已找到的样式总页数" + }, + "paginationNext": { + "message": "下一页" + }, + "paginationPrevious": { + "message": "上一页" + }, + "paginationTotal": { + "message": "总页面" + }, + "parseUsercssError": { + "message": "Stylus 未能成功解析 UserCSS:" + }, + "popupAutoResort": { + "message": "样式切换后实时排序" + }, + "popupBorders": { + "message": "在两边增加白色边框" + }, + "popupBordersTooltip": { + "message": "对于新 Chrome 中的暗色主题很有用,因为它不再绘制边框" + }, + "popupHotkeysInfo": { + "message": "<1>-<9>, <0> 按第1 - 10个列表 来ON/OFF\n- 按英文首字母 来ON/OFF\n附加: 打开对应列表的编辑器\n ON 全部列表\n OFF 全部列表\n 或 <`> 仅针对Popup弹出时的初始ON列表, 它只会ON/OFF初始ON列表, 故:\n 能快速恢复初始状态.\n 更多信息见Wiki" + }, + "popupHotkeysTooltip": { + "message": "查看Popup列表快捷键" + }, + "popupManageTooltip": { + "message": "右击 || Shift+左击: 打开管理器且筛选当前URL(不含iframe)" + }, + "popupMenuButtonTooltip": { + "message": "操作菜单" + }, + "popupOpenEditInPopup": { + "message": "使用简易编辑器窗口(无omnibox栏)" + }, + "popupOpenEditInWindow": { + "message": "新窗口打开编辑器(或直接拖拽ꖅ)" + }, + "popupOpenEditInWindowTooltip": { + "message": "此选项可不管,只因它能动态跟随记忆\n编辑器标签页的拖出/拖入的状态 即:\n拖出单独窗口时, ON 该选项.\n拖入合并窗口时, OFF该选项.\n\"简易编辑器窗口\" 只在新窗口才简易简洁" + }, + "popupStylesFirst": { + "message": "样式列表置顶" + }, + "prefShowBadge": { + "message": "计数器角标 (或图标右键)" + }, + "previewLabel": { + "message": "实时预览" + }, + "previewTooltip": { + "message": "无需保存即可临时预览样式效果" + }, + "readingStyles": { + "message": "正在读取样式..." + }, + "reload": { + "message": "重启 Stylus" + }, + "replace": { + "message": "替换" + }, + "replaceAll": { + "message": "全部替换" + }, + "replaceWith": { + "message": "替换为" + }, + "retrieveBckp": { + "message": "导入所有样式" + }, + "retrieveDropboxSync": { + "message": "从 Dropbox 导入" + }, + "search": { + "message": "搜索" + }, + "searchCaseSensitive": { + "message": "大小写敏感" + }, + "searchGlobalStyles": { + "message": "全局搜索" + }, + "searchNumberOfResults": { + "message": "已找到" + }, + "searchNumberOfResults2": { + "message": "在代码和应用中匹配的数量" + }, + "searchRegexp": { + "message": "/regex/ 用 / 包裹语法来正则搜索" + }, + "searchResultInstallCount": { + "message": "总的安装次数" + }, + "searchResultNoneFound": { + "message": "没有找到与此页面相关的样式。" + }, + "searchResultRating": { + "message": "评价" + }, + "searchResultUpdated": { + "message": "最后更新日期" + }, + "searchResultWeeklyCount": { + "message": "本周安装次数" + }, + "searchStyleQueryHint": { + "message": "空格多词 -- 同时精确匹配(无需双引号)\n2020 -- 也含更新日期的匹配结果\n大小写不敏感" + }, + "searchStylesAll": { + "message": "全部" + }, + "searchStylesCode": { + "message": "代码" + }, + "searchStylesHelp": { + "message": " 或 聚焦搜索框;    清空搜索框\n焦点在页面时, 也支持样式名的英文首字母索引。\n\n●搜索语法:\n空格隔开 : \"且\" 同时包含,不分顺序。\n 要用 \"或\" 包含, 请使用正则 /A|B/\n\"精确搜索\" :用双引号包裹(跟网页搜索一样) 如 <\"head ~ div\">\n/正则搜索/ :js语法 用 / / 包裹及正则属性标记 如\n\n●搜索范围选择器\n`元数据`: 包含有 样式名称、“应用于”、安装/更新URL、以及UserCSS中整个元数据块(即==UserStyle==那些)。\n\n`按URL`: 查找适用于完全指定URL的样式,如 http://www.example.org/" + }, + "searchStylesMatchUrl": { + "message": "按URL" + }, + "searchStylesMeta": { + "message": "元数据" + }, + "searchStylesName": { + "message": "名称" }, "sectionAdd": { - "message": "添加新节", - "description": "Label for the button to add a section" + "message": "添加新部分" }, "sectionCode": { - "message": "代码", - "description": "Label for the code for a section" + "message": "代码" }, "sectionRemove": { - "message": "移除节", - "description": "Label for the button to remove a section" + "message": "删除此部分" + }, + "sectionRestore": { + "message": "撤销删除" + }, + "sections": { + "message": "章节" + }, + "shortcuts": { + "message": "快捷键" + }, + "shortcutsNote": { + "message": "设置快捷键" + }, + "sortDateNewestFirst": { + "message": "最新的优先" + }, + "sortDateOldestFirst": { + "message": "最旧的优先" + }, + "sortLabel": { + "message": "选择对已安装的样式应用的排序规则" + }, + "sortLabelTitleAsc": { + "message": "标题升序" + }, + "sortLabelTitleDesc": { + "message": "标题降序" + }, + "sortStylesHelp": { + "message": "默认用「标题升序」排序(A - Z)\n反之, 「标题降序」则是(Z - A)\n还有很多其它排序方式,可以通过多个条件进行排序。\n你也可以想象,在对一个多列的表格进行排序,并且选择可能带有(+)号的一组条件或单个条件进行排序。\n例如,若设为 \"启用(优先)+ 标题\",将会把所有已启用的项目都排列在顶部,然后再以标题升序排列 (A - Z)的顺序应用到以启用和未启用的项目。" + }, + "sortStylesHelpTitle": { + "message": "自定义排序帮助信息" + }, + "styleBadRegexp": { + "message": "正则表达式无效。" + }, + "styleBeautify": { + "message": "格式化" + }, + "styleBeautifyHint": { + "message": "右键格式化按钮 或 下面的快捷键\n可实现一键格式化而不显示此弹框" + }, + "styleBeautifyIndentConditional": { + "message": "缩进 @media、@supports" + }, + "styleBeautifyPreserveNewlines": { + "message": "保留新增空行" }, "styleCancelEditLabel": { - "message": "返回到管理", - "description": "Label for cancel button for style editing" + "message": "返回管理器" }, "styleChangesNotSaved": { - "message": "您已经修改了此样式,但尚未保存", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "您已对此样式进行了更改,但尚未保存。" }, "styleEnabledLabel": { - "message": "已启用", - "description": "Label for the enabled state of styles" + "message": "启用" + }, + "styleFromMozillaFormatError": { + "message": "导入 Mozilla 格式失败" + }, + "styleFromMozillaFormatPrompt": { + "message": "粘贴 Mozilla 格式代码" }, "styleInstall": { - "message": "安装 '$stylename$' 到 Stylus?", - "description": "Confirmation when installing a style", + "message": "要将“$stylename$”安装到 Stylus 中吗?", "placeholders": { "stylename": { "content": "$1" } } }, + "styleInstallFailed": { + "message": "安装用户样式失败!\n$error$", + "placeholders": { + "error": { + "content": "$1" + } + } + }, + "styleInstallOverwrite": { + "message": "'$stylename$' 已经安装,要覆盖吗?\n版本: $oldVersion$ -> $newVersion$", + "placeholders": { + "newVersion": { + "content": "$3" + }, + "oldVersion": { + "content": "$2" + }, + "stylename": { + "content": "$1" + } + } + }, "styleMissingName": { - "message": "请输入名称", - "description": "Error displayed when user saves without providing a name" + "message": "输入名称" + }, + "styleMozillaFormatHeading": { + "message": "Mozilla 格式" + }, + "styleNotAppliedRegexpProblemTooltip": { + "message": "正则表达式错误,样式无法正常运行" + }, + "styleRegexpInvalidExplanation": { + "message": "部分正则表达式无法生效。" + }, + "styleRegexpPartialExplanation": { + "message": "这个样式有一部分正则表达式与 CSS4 @document specification完整的 URL 不匹配。这部分样式将被忽略,可能这个样式是基于 Stylish 编写的,请尝试在 Stylus 重新编写该样式。" + }, + "styleRegexpProblemTooltip": { + "message": "多个部分代码无法正常处理正则表达式" + }, + "styleRegexpTestButton": { + "message": "正则测试" + }, + "styleRegexpTestFull": { + "message": "匹配到标签页的正则" + }, + "styleRegexpTestInvalid": { + "message": "忽略无效的正则表达式" + }, + "styleRegexpTestNone": { + "message": "没有匹配到标签页的正则" + }, + "styleRegexpTestNote": { + "message": "注意: 在正则表达式中使用单个 \\ 进行转义,其将会根据 CSS 中引用字符串的自动转换为 \\\\。" + }, + "styleRegexpTestPartial": { + "message": "没有完全匹配,因此忽略" + }, + "styleRegexpTestTitle": { + "message": "已打开标签页的正则匹配(点击URL可跳转)" }, "styleSaveLabel": { - "message": "保存", - "description": "Label for save button for style editing" + "message": "保存" }, "styleToMozillaFormatHelp": { - "message": "用于Firefox上的Stylish的Mozilla格式样式代码可以在 userstyles.org 上提交", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "导入 FireFox 格式即 @-moz-document ...的 CSS 代码后,会自动转换成 Stylus 使用的分段式 CSS 代码。\n反过来,分段式的 CSS 也可以导出为 FireFox 格式。\n需要注意的是,如果你要向 userstyles.org 提交你的代码,则必须使用 FireFox 格式。\n\n导入快捷键: 剪贴板含有 @-moz-document ....代码,则可以直接在编辑器里 Ctrl+V 会自动弹出导入对话框" + }, + "styleToMozillaFormatTitle": { + "message": "Mozilla 格式的样式" }, "styleUpdate": { - "message": "你確定要更新 '$stylename$' 嗎?", - "description": "Confirmation when updating a style", + "message": "是否更新 “$stylename$”?", "placeholders": { "stylename": { "content": "$1" } } }, + "styleUpdateDiscardChanges": { + "message": "样式已经在编辑器外被修改。需要重新加载样式吗?" + }, + "stylusUnavailableForURL": { + "message": "Stylus 无法介入到此类页面" + }, + "stylusUnavailableForURLdetails": { + "message": "浏览器出于安全而限制扩展介入到\n非自身的chrome-extension://、chrome://、官方扩展商店页" + }, + "syncDropboxDeprecated": { + "message": "在选项页面中, Dropbox 导入/导出 已经替换为更高级的样式同步方式。" + }, + "syncDropboxStyles": { + "message": "导出至 Dropbox" + }, + "syncStorageErrorSaving": { + "message": "不能保存该值,请尝试减少文本数量。" + }, + "toggleStyle": { + "message": "切换ON/OFF" + }, + "undo": { + "message": "撤销" + }, + "undoGlobal": { + "message": "撤销 (全局)" + }, + "unreachableAMO": { + "message": "Firefox 禁止访问该站点。" + }, + "unreachableAMOHint": { + "message": "若要允许存取,打开 ,在列表上单击右键,点击新增,然后再点击 'Boolean',粘贴  并点击确定 -> -> 确定,然后重新刷新 页面。" + }, + "unreachableContentScript": { + "message": "无法介入到此页面" + }, + "unreachableFileHint": { + "message": "! Stylus 无法介入到官方商店页面 !\n若是文件页面 或 小号无痕页面 请检查:\n1) 右键 - Stylus图标 并点击-\"管理扩展程序\"\n2) 勾选 - \"允许访问文件网址\" 以在 file:// 工作\n3) 勾选 - \"在无痕模式下启用\" 以在无痕页面和小号标签页工作 (有的浏览器带有小号功能、如CentBrowser)" + }, + "unzipStyles": { + "message": "正在解压样式..." + }, + "updateAllCheckSucceededNoUpdate": { + "message": "没有找到更新。" + }, + "updateAllCheckSucceededSomeEdited": { + "message": "如果你修改过一些样式,那它们可能被忽略更新,你可以单独检测这些样式强制升级,也可以 再次检测所有样式强制更新。" + }, "updateCheckFailBadResponseCode": { - "message": "更新失败: 服务器了返回代码 $code$。", - "description": "Text that displays when an update check failed because the response code indicates an error", + "message": "更新失败: 服务器响应代码为 $code$。", "placeholders": { "code": { "content": "$1" @@ -197,15 +1300,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "更新失败: 服务器无法访问.", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "更新失败: 无法访问服务器。" + }, + "updateCheckHistory": { + "message": "检测升级的历史记录" + }, + "updateCheckManualUpdateForce": { + "message": "安装更新(将覆盖本地修改的样式)" + }, + "updateCheckManualUpdateHint": { + "message": "强制升级将覆盖所有本地修改的样式" + }, + "updateCheckSkippedLocallyEdited": { + "message": "此样式已在本地修改过。" + }, + "updateCheckSkippedMaybeLocallyEdited": { + "message": "这个样式可能在本地修改过,如果强制升级更新则会覆盖修改的内容。" }, "updateCheckSucceededNoUpdate": { - "message": "已经是最新的.", - "description": "Text that displays when an update check completed and no update is available" + "message": "样式已是最新版本。" }, "updateCompleted": { - "message": "更新完成.", - "description": "Text that displays when an update completed" + "message": "更新已完成。" + }, + "updatesCurrentlyInstalled": { + "message": "更新已安装:" + }, + "uploadingFile": { + "message": "正在上传文件..." + }, + "usercssAvoidOverwriting": { + "message": "请修改 @name 或 @namespace 的值以免覆盖现有样式。" + }, + "usercssConfigIncomplete": { + "message": "在显示了配置对话框后,样式被修改或删除,这些变数将不会被保存,以免损坏元数据:" + }, + "usercssEditorNamePlaceholder": { + "message": "在代码中指定 @name 来设置名称" + }, + "usercssReplaceTemplateConfirmation": { + "message": "使用当前的 UserStyle 替换为新的UserCSS默认模板 ??" + }, + "usercssReplaceTemplateName": { + "message": "该赋值为空的保存可设置默认模板" + }, + "usercssReplaceTemplateSectionBody": { + "message": "在此插入代码..." + }, + "versionInvalidOlder": { + "message": "当前样式版本比已安装样式版本旧。" + }, + "writeStyleFor": { + "message": "新建样式给:" + }, + "writeStyleForURL": { + "message": "URL" + }, + "zipStyles": { + "message": "正在压缩样式..." } -} \ No newline at end of file +} diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index 04e56f37..0f0f252c 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus 无法访问某些文件格式(例如 pdf 或 json 文件)。" + }, "addStyleLabel": { - "message": "编写新样式", - "description": "Label for the button to go to the add style page" + "message": "新建样式" }, "addStyleTitle": { - "message": "添加样式", - "description": "Title of the page for adding styles" + "message": "添加样式" }, "alphaChannel": { - "message": "透明度", - "description": "Label of color's opacity" + "message": "透明度" }, "appliesAdd": { - "message": "添加", - "description": "Label for the button to add an 'applies' entry" + "message": "添加部分" }, "appliesDisplay": { "message": "应用于:$applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +23,270 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "更多", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "更多" }, "appliesDomainOption": { - "message": "域名", - "description": "Option to make the style apply to the entered string as a domain" + "message": "域名" }, "appliesHelp": { - "message": "使用“应用于”控件来限制此段代码所应用到的链接。", - "description": "Help text for 'applies to' section" + "message": "使用「应用于」控件来控制此部分代码应用于哪些 URL。" }, "appliesLabel": { - "message": "应用于:", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "应用于:" }, "appliesLineWidgetLabel": { - "message": "显示被应用对象的信息", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "显示应用于部件" }, "appliesLineWidgetWarning": { - "message": "对经过压缩的 CSS 无效", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "对经过压缩的 CSS 无效" }, "appliesRegexpOption": { - "message": "正则表达式", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "正则" }, "appliesRemove": { - "message": "删除", - "description": "Label for the button to remove an 'applies' entry" + "message": "删除" }, "appliesRemoveError": { - "message": "无法移除最后一个“应用于”项目", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "无法移除最后一个“应用于”项目" }, "appliesSpecify": { - "message": "指定", - "description": "Label for the button to make a style apply only to specific sites" + "message": "指定" }, "appliesToEverything": { - "message": "所有页面", - "description": "Text displayed for styles that apply to all sites" + "message": "所有页面" }, "appliesUrlOption": { - "message": "链接", - "description": "Option to make the style apply to the entered string as a URL" + "message": "URL " }, "appliesUrlPrefixOption": { - "message": "链接前缀", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "前缀" }, "applyAllUpdates": { - "message": "应用全部更新", - "description": "Label for the button to apply all detected updates" + "message": "应用全部更新" }, "author": { - "message": "作者", - "description": "Label for the style author" + "message": "作者" }, "backupButtons": { - "message": "备份", - "description": "Heading for backup" + "message": "备份" }, "backupMessage": { - "message": "选择备份文件,或将 JSON 备份文件拖放到本页面,即可导入备份。", - "description": "Message for backup" + "message": "选择备份文件,或将 JSON 备份文件拖放到本页面,即可导入备份。" }, "bckpInstStyles": { - "message": "导出所有样式", - "description": "" + "message": "导出所有样式" }, "checkAllUpdates": { - "message": "全部检查更新", - "description": "Label for the button to check all styles for updates" + "message": "全部检查更新" }, "checkAllUpdatesForce": { - "message": "我没有修改过任何样式,再检查一次!", - "description": "Label for the button to apply all detected updates" + "message": "我没有修改过任何样式,再检查一次!" }, "checkForUpdate": { - "message": "检查更新", - "description": "Label for the button to check a single style for an update" + "message": "检查更新" }, "checkingForUpdate": { - "message": "正在检查更新...", - "description": "Text to display when checking a style for an update" + "message": "正在检查更新..." }, "clickToUninstall": { - "message": "点击卸载", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "点击卸载" }, "cm_autoCloseBrackets": { - "message": "自动补全括号与引号", - "description": "Label for the checkbox in the style editor." + "message": "括弧配对" }, "cm_autoCloseBracketsTooltip": { - "message": "在输入 () [] {} '' \"\" 时自动补全", - "description": "Label for the checkbox in the style editor." + "message": "在键入 () [] {} '' \"\" 时自动完成另一半配对" }, "cm_autocompleteOnTyping": { - "message": "输入时自动补全", - "description": "Label for the checkbox in the style editor." + "message": "键入时自动补全" }, "cm_colorpicker": { - "message": "CSS 颜色选择器", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "CSS颜色器" }, "cm_indentWithTabs": { - "message": "使用Tab智能缩进", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "使用 Tab 智能缩进" }, "cm_keyMap": { - "message": "键盘映射", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "键盘映射" }, "cm_lineWrapping": { - "message": "自动换行", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "自动换行" }, "cm_matchHighlight": { - "message": "高亮", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "高亮" }, "cm_matchHighlightSelection": { - "message": "选择区域", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "仅选择区域" }, "cm_matchHighlightToken": { - "message": "光标所在token字段", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "光标处 token 字段" }, "cm_resizeGripHint": { - "message": "双击以最大化或恢复高度", - "description": "Tooltip for the resize grip in style editor" + "message": "双击以最大化或恢复高度" }, "cm_selectByTokens": { - "message": "双击选中 token 字段", - "description": "Label for the checkbox in the editor." + "message": "双击选中 token" }, "cm_selectByTokensTooltip": { - "message": "token 字段示例:.foo-bar-2 #aabbcc 0.32 !important\n未启用时:会选中按空格或标点符号分隔的字词段,如 .foo-bar-2 中的 foo、bar 和 2。", - "description": "" + "message": "token 示例 .foo-bar-2\n禁用:按 \\w+ 常规语法 双击分别选中 foo、bar、2\n启用: 按CSS语法 双击全选中\n技巧: Sublime键盘映射下配合 Ctrl+D 来常规选中 \\w+" }, "cm_smartIndent": { - "message": "智能缩进", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "智能缩进" }, "cm_tabSize": { - "message": "缩进宽度", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "缩进宽度" }, "cm_theme": { - "message": "主题", - "description": "Label for the style editor's CSS theme." + "message": "主题" + }, + "colorpickerPaletteHint": { + "message": "右击:循环跳转到所在行" }, "colorpickerSwitchFormatTooltip": { - "message": "颜色格式转换:HEX -> RGB -> HSL 。\nShift + 单击则反向转换。\n也可以使用 PgUp (PageUp) 与 PgDn (PageDown) 键。", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "点击转换颜色格式: HEX -> RGB -> HSL\nShift+单击 或 PgUp/PgDn 则反向转换" }, "colorpickerTooltip": { - "message": "打开颜色选择器", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "打开颜色选择器" }, "configOnChange": { - "message": "正在变更", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "实时变更" }, "configOnChangeTooltip": { - "message": "自动保存并应用修改", - "description": "" + "message": "自动保存并应用修改" }, "configureStyle": { - "message": "配置", - "description": "Label for the button to configure usercss userstyle" + "message": "配置" }, "configureStyleOnHomepage": { - "message": "通过 userstyles.org  配置", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "通过 userstyles.org 配置选项" }, "confirmCancel": { - "message": "取消", - "description": "" + "message": "取消" }, "confirmClose": { - "message": "关闭", - "description": "'Close' button in a confirm dialog" + "message": "关闭" }, "confirmDefault": { - "message": "使用默认值", - "description": "'Set to default' button in a confirm dialog" + "message": "使用默认值" }, "confirmDelete": { - "message": "删除", - "description": "" + "message": "删除" }, "confirmDiscardChanges": { - "message": "确定要放弃修改吗?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "确定要放弃修改吗?" }, "confirmNo": { - "message": "否", - "description": "'No' button in a confirm dialog" + "message": "否" }, "confirmOK": { - "message": "确认", - "description": "" + "message": "确认" }, "confirmSave": { - "message": "保存", - "description": "'Save' button in a confirm dialog" + "message": "保存" }, "confirmStop": { - "message": "停止", - "description": "'Stop' button in a confirm dialog" + "message": "停止" }, "confirmYes": { - "message": "是", - "description": "'Yes' button in a confirm dialog" + "message": "是" + }, + "connectingDropbox": { + "message": "正在连接至 Dropbox..." + }, + "connectingDropboxNotAllowed": { + "message": "连接到 Dropbox 功能仅适用于直接从 Webstore 安装的应用程序" }, "copied": { - "message": "已复制到粘贴板", - "description": "Message shown when content has been copied to the clipboard" + "message": "已复制到粘贴板" }, "copy": { - "message": "复制到粘贴板", - "description": "Tooltip for elements which can be copied" + "message": "复制到粘贴板" + }, + "customNameHint": { + "message": "在此自定义本地名称才不影响在线更新" + }, + "customNameResetHint": { + "message": "切换为样式的原始名称" + }, + "dateAbbrDay": { + "message": "$value$天前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$时前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$月前", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$年前", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "安装日期", - "description": "Option text for the user to sort the style by install date" + "message": "安装日期" }, "dateUpdated": { - "message": "更新日期", - "description": "Option text for the user to sort the style by last update date" + "message": "更新日期" }, "dbError": { - "message": "访问 Stylus 数据库时发生了一个错误。您想访问含有可能的解决方案的网页吗?", - "description": "Prompt when a DB error is encountered" + "message": "访问 Stylus 数据库时发生了一个错误。您想访问含有可能的解决方案的网页吗?" }, "defaultTheme": { - "message": "默认", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "默认" }, "deleteStyleConfirm": { - "message": "确定要删除此样式吗?", - "description": "Confirmation before deleting a style" + "message": "确定要删除此样式吗?" }, "deleteStyleLabel": { - "message": "删除", - "description": "Label for the button to delete a style" + "message": "删除" }, "description": { - "message": "Stylus 是一个调整网页外观的用户样式管理器。它可让您轻松地为许多热门网站网站安装主题和皮肤。", - "description": "Extension description" + "message": "Stylus 是一个调整网页外观的用户样式管理器。它可让您轻松地为许多热门网站网站安装主题和皮肤。" }, "disableAllStyles": { - "message": "禁用所有样式", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "禁用所有样式" }, "disableStyleLabel": { - "message": "禁用", - "description": "Label for the button to disable a style" + "message": "禁用" }, "dragDropMessage": { - "message": "把 JSON 备份文件拖放到页面的任意位置,即可导入", - "description": "Drag'n'drop message" + "message": "把 JSON 备份文件拖放到该页面任意位置即可导入" }, "dragDropUsercssTabstrip": { - "message": "要安装文件,就将其放在选项卡条(显示选项卡标题的区域)上。", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "要安装文件,就将其放在选项卡条(显示选项卡标题的区域)上。" }, "editDeleteText": { - "message": "删除", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "删除" }, "editGotoLine": { - "message": "跳转至行(或行:列)", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "跳转至行(或行:列)" }, "editStyleHeading": { - "message": "修改样式", - "description": "Title of the page for editing styles" + "message": "编辑样式" }, "editStyleLabel": { - "message": "修改", - "description": "Label for the button to go to the edit style page" + "message": "编辑" }, "editStyleTitle": { "message": "修改样式“$stylename$”", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,220 +294,183 @@ } }, "enableStyleLabel": { - "message": "启用", - "description": "Label for the button to enable a style" + "message": "启用" }, "excludeStyleByDomainLabel": { - "message": "排除当前域名", - "description": "" + "message": "排除当前域名" }, "excludeStyleByUrlLabel": { - "message": "排除当前链接", - "description": "" + "message": "排除当前链接" }, "exportLabel": { - "message": "导出", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "导出" + }, + "exportSavedSuccess": { + "message": "文件保存成功" }, "externalFeedback": { - "message": "反馈", - "description": "Label for the external link to send feedback for the style" + "message": "反馈" }, "externalHomepage": { - "message": "主页", - "description": "Label for the external link to style's homepage" + "message": "主页" }, "externalLink": { - "message": "外部链接", - "description": "Label for external links" + "message": "外部链接" }, "externalSupport": { - "message": "支持", - "description": "Label for the external link to style's support site" + "message": "支持" }, "externalUsercssDocument": { - "message": "UserCSS 外部文档", - "description": "Label for the external link to usercss documentation" + "message": "UserCSS 文档" }, "filteredStyles": { - "message": "已显示 $numShown$ 个,总共 $numTotal$ 个", - "description": "TL note - make this message short", + "message": "共 $numTotal$ 个,已显示 $numShown$ 个", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "没有样式匹配当前的过滤器选项", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "没有样式匹配当前的过滤器选项" }, "findStyles": { - "message": "查找更多样式", - "description": "Text for a link that gets a list of styles for the current site" + "message": "查找更多样式" }, "findStylesForSite": { - "message": "查找适合此网站的更多样式", - "description": "Text for a link that gets a list of styles for the current site" + "message": "查找适合此网站的更多样式" }, "findStylesInline": { - "message": "嵌入到此页面", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "嵌入到此页面" }, "findStylesInlineTooltip": { - "message": "将搜索结果嵌入到此页面显示", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "在此弹窗内显示搜索结果。" }, "genericAdd": { - "message": "添加", - "description": "Used in various places for an action that adds something" + "message": "添加" }, "genericClone": { - "message": "创建副本", - "description": "Used in various places for an action that clones something" + "message": "创建副本" + }, + "genericDescription": { + "message": "描述" }, "genericDisabledLabel": { - "message": "未启用", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "已禁用" }, "genericEnabledLabel": { - "message": "已启用", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "已启用" }, "genericError": { - "message": "错误", - "description": "Used in various places to indicate some error occurred." + "message": "错误" }, "genericHistoryLabel": { - "message": "历史", - "description": "Used in various places to show a history log of something" + "message": "历史" }, "genericNext": { - "message": "继续", - "description": "Used in various places to select/perform the next step/action" + "message": "继续" }, "genericPrevious": { - "message": "后退", - "description": "Used in various places to select/perform the previous step/action" + "message": "后退" }, "genericResetLabel": { - "message": "重置", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "重置" }, "genericSavedMessage": { - "message": "已保存", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "已保存" }, "genericTitle": { - "message": "标题", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "标题" }, "genericUnknown": { - "message": "未知", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "未知" + }, + "gettingStyles": { + "message": "正在获取所有样式..." }, "helpAlt": { - "message": "帮助", - "description": "Alternate text for help buttons" + "message": "帮助" }, "helpKeyMapCommand": { - "message": "输入命令名称", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "输入命令名称" }, "helpKeyMapHotkey": { - "message": "按下热键", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "按下热键" }, "hostDisabled": { - "message": "由于当前使用的浏览器版本中存在的错误,此主机已被禁用", - "description": "Tooltip for cloud host disabled" + "message": "由于当前使用的浏览器版本中存在的错误,此主机已被禁用" }, "importAppendLabel": { - "message": "追加到样式", - "description": "Label for the button to import a style and append to the existing sections" + "message": "追加导入" }, "importAppendTooltip": { - "message": "将被导入样式附加至当前样式", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "以追加的方式来导入" }, "importLabel": { - "message": "导入", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "导入" + }, + "importPreprocessor": { + "message": "带有 @preprocessor 样式不适合于当前的常规CSS模式下。\n您应该把它粘贴到 UserCSS 的编辑器模式去。\n1)打开管理器页面 2)勾选 “新建为UserCSS” 3)点击 \"新建新样式\"\n\n仍然导入吗?" + }, + "importPreprocessorTitle": { + "message": "潜在问题之 @preprocessor 预处理" }, "importReplaceLabel": { - "message": "覆盖样式", - "description": "Label for the button to import and overwrite current style" + "message": "覆盖替换导入" }, "importReplaceTooltip": { - "message": "放弃当前样式的内容,使用已导入样式覆盖它", - "description": "Label for the button to import and overwrite current style" + "message": "放弃当前样式的内容,使用已导入样式覆盖它" }, "importReportLegendAdded": { - "message": "个样式已添加", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "个样式已被添加" }, "importReportLegendIdentical": { - "message": "已忽略相同样式", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "已忽略相同样式" }, "importReportLegendInvalid": { - "message": "忽略无效的代码", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "忽略无效的代码" }, "importReportLegendUpdatedBoth": { - "message": "已更新的所有信息和代码", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "已更新的所有信息和代码" }, "importReportLegendUpdatedCode": { - "message": "代码已更新", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "代码已更新" }, "importReportLegendUpdatedMeta": { - "message": "升级信息", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "升级信息" }, "importReportTitle": { - "message": "样式导入完成", - "description": "Title of the report shown after importing styles" + "message": "样式导入完成" }, "importReportUnchanged": { - "message": "导入的样式无效。", - "description": "Message in the report shown after importing styles" + "message": "导入的样式无效。" }, "importReportUndone": { - "message": "个样式被还原", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "个样式被还原" }, "importReportUndoneTitle": { - "message": "样式导入被取消", - "description": "Title of the message box shown after undoing the import of styles" + "message": "样式导入被取消" }, "installButton": { - "message": "安装样式", - "description": "Label for install button" + "message": "安装样式" }, "installButtonInstalled": { - "message": "样式安装完成", - "description": "Text displayed when the style is successfully installed" + "message": "样式安装完成" }, "installButtonReinstall": { - "message": "重新安装样式", - "description": "Label for reinstall button" + "message": "重新安装样式" }, "installButtonUpdate": { - "message": "更新样式", - "description": "Label for update button" + "message": "更新样式" }, "installUpdate": { - "message": "安装更新", - "description": "Label for the button to install an update for a single style" + "message": "安装更新" }, "installUpdateFrom": { "message": "当前样式更新自 $url$", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -543,28 +478,31 @@ } }, "installUpdateFromLabel": { - "message": "检查更新", - "description": "Label for the checkbox to save current URL for update check" + "message": "检查更新" }, "license": { - "message": "许可证", - "description": "Label for the license" + "message": "许可证" }, "linkGetHelp": { - "message": "帮助", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "帮助" + }, + "linkGetShareStyles": { + "message": "获取|分享 样式" + }, + "linkGetShareStylesInfo": { + "message": "由社区驱动的新站点 userstyles.world 是由 userstyle 作者创建的,目的是取代 userstyles.org,该站点在过去一年中缓慢且反应迟钝,以至于许多作者停止更新他们的样式。" }, "linkGetStyles": { - "message": "获取样式", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "获取样式" + }, + "linkGetStylesInfo": { + "message": "该存档站点由 userstyle 社区成员创建,约每天更新一次其内容,用于备份缓慢且无响应的 userstyles.org。 " }, "linkTranslate": { - "message": "翻译", - "description": "Transifex link text on the manage page" + "message": "翻译" }, "linterCSSLintIncompatible": { "message": "CSSLint 不支持 $preprocessorname$ 预处理器", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -572,12 +510,10 @@ } }, "linterCSSLintSettings": { - "message": "(设置规则为:0 = 禁用; 1 = 警告; 2 = 错误)", - "description": "CSSLint rule config values" + "message": "(设置规则为:0 = 禁用; 1 = 警告; 2 = 错误)" }, "linterConfigPopupTitle": { "message": "设置 $linter$ 规则", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -585,20 +521,16 @@ } }, "linterConfigTooltip": { - "message": "点击以配置此 Linter", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "点击以配置此 Linter" }, "linterInvalidConfigError": { - "message": "由于配置无效所以未保存:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "由于配置无效所以未保存:" }, "linterIssues": { - "message": "问题", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "问题" }, "linterIssuesHelp": { "message": "$link$ 找到了这些问题:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -606,144 +538,93 @@ } }, "linterJSONError": { - "message": "无效的 JSON 格式", - "description": "Setting linter config with invalid JSON" + "message": "无效的 JSON 格式" }, "linterResetMessage": { - "message": "想要恢复意外的重置,在文本框中按下 Ctrl-Z (或 Cmd-Z)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "想要恢复意外的重置,在文本框中按下 Ctrl-Z (或 Cmd-Z)" }, "linterRulesLink": { - "message": "查看完整的规则清单", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "查看完整的规则清单" }, "liveReloadError": { - "message": "查看文件时发生错误", - "description": "The label of live-reload error" + "message": "查看文件时发生错误" }, "liveReloadInstallHint": { - "message": "保持此选项卡为打开状态,将在外部更改后自动更新样式。", - "description": "The label of live-reload feature" + "message": "保持此选项卡为打开状态,将在外部更改后自动更新样式。" }, "liveReloadInstallHintFF": { - "message": "保持此选项卡和原始选项卡处于打开状态,将在外部更改时自动重新更新样式。", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "保持此选项卡和原始选项卡处于打开状态,将在外部更改时自动重新更新样式。" }, "liveReloadLabel": { - "message": "动态刷新", - "description": "The label of live-reload feature" + "message": "动态刷新" }, "manageFavicons": { - "message": "显示已应用的图标", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "显示 \"应用于\" 的favicon图标" }, "manageFaviconsGray": { - "message": "灰色图标", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "显示为灰色图标" }, "manageFaviconsHelp": { - "message": "Stylus 使用外部服务 https://www.google.com/s2/favicons 来获取图标", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus 使用外部服务 https://www.google.com/s2/favicons 来获取图标" }, "manageFilters": { - "message": "过滤器", - "description": "Label for filters container" + "message": "过滤器" }, "manageHeading": { - "message": "已安装的样式", - "description": "Heading for the manage page" + "message": "已安装的样式" }, "manageMaxTargets": { - "message": "显示应用的规则列表数量", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "显示 \"应用于\" 的数量" }, "manageNewStyleAsUsercss": { - "message": "作为 UserCSS 样式", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "作为 UserCSS" }, "manageNewUI": { - "message": "新版管理器", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "新版样式管理 UI 布局" }, "manageOnlyDisabled": { - "message": "只显示未启用的样式", - "description": "Checkbox to show only disabled styles" + "message": "只显示已禁用的样式" }, "manageOnlyEnabled": { - "message": "只显示已启用的样式", - "description": "Checkbox to show only enabled styles" + "message": "只显示已启用的样式" }, "manageOnlyExternal": { - "message": "只显示外部安装的样式", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "只显示外部安装的样式" }, "manageOnlyLocal": { - "message": "只显示本地创建的样式", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "只显示本地创建的样式" }, "manageOnlyLocalTooltip": { - "message": "(此样式无法通过 userstyles.org 页面进行安装)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(此样式无法通过 userstyles.org 页面进行安装)" }, "manageOnlyNonUsercss": { - "message": "只显示非 UserCSS 样式", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "只显示非 UserCSS 样式" }, "manageOnlyUpdates": { - "message": "只显示可升级的样式", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "只显示已更新或更新时有问题的样式" }, "manageOnlyUsercss": { - "message": "只显示仅 UserCSS 样式", - "description": "Checkbox to show only Usercss styles" + "message": "只显示 UserCSS 样式" }, "menuShowBadge": { - "message": "显示生效的样式计数", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "显示计数器角标" }, "meta_invalidCheckboxDefault": { - "message": "无效 @var 复选框:赋值必须为 0 或 1 ", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "无效 @var 复选框:赋值必须为 0 或 1 " }, "meta_invalidColor": { "message": "无效 @var 颜色:$color$不是颜色", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "需要一个数字" + }, "meta_invalidRange": { "message": "无效 @var $type$:必须是单个数字或数组", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "无效 @var $type$:多个单位被定义", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "无效的 @var $type$: 数组中包含了过多项", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "无效的 @var $type$: 数组中的项必须为数字、字符 或 null", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -752,16 +633,6 @@ }, "meta_invalidRangeDefault": { "message": "无效 @var $type$:默认值为空", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "无效的 @var $type$: 默认值低于最小值", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -770,7 +641,22 @@ }, "meta_invalidRangeMax": { "message": "无效的 @var $type$: 默认值大于最大值", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "无效的 @var $type$: 默认值低于最小值", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "无效 @var $type$:多个单位被定义", "placeholders": { "type": { "content": "$1" @@ -779,7 +665,14 @@ }, "meta_invalidRangeStep": { "message": "无效的 @var $type$: 默认值不是一个数字或范围", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "无效的 @var $type$: 数组中包含了过多项", "placeholders": { "type": { "content": "$1" @@ -788,7 +681,6 @@ }, "meta_invalidRangeUnits": { "message": "无效的 @var $type$: '$units$' 不是有效的单位", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -798,37 +690,40 @@ } } }, - "meta_invalidSelect": { - "message": "无效的 @var 选择: 默认值必须是数组或对象", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "无效的 @var $type$: 数组中的项必须为数字、字符 或 null", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "无效的 @var 选择: 数组或对象内的值类型必须为字符", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "无效的 @var 选择: 默认值必须是数组或对象" }, "meta_invalidSelectEmptyOptions": { - "message": "无效的 @var 选择: 列表项为空", - "description": "Error displayed when the value of @var select is invalid" + "message": "无效的 @var 选择: 列表项为空" }, "meta_invalidSelectLabel": { - "message": "无效的 @var 选择: 项的标签为空", - "description": "Error displayed when the value of @var select is invalid" + "message": "无效的 @var 选择: 项的标签为空" }, "meta_invalidSelectMultipleDefaults": { - "message": "无效的 @var 选择: 定义了多个默认项", - "description": "Error displayed when the value of @var select is invalid" + "message": "无效的 @var 选择: 定义了多个默认项" }, "meta_invalidSelectNameDuplicated": { - "message": "无效的 @var 选择: 项的名称是重复的", - "description": "Error displayed when the value of @var select is invalid" + "message": "无效的 @var 选择: 项的名称是重复的" + }, + "meta_invalidSelectValue": { + "message": "无效的 @var 选择: 数组或对象内的值类型必须为字符" }, "meta_invalidSelectValueMismatch": { - "message": "无效的 @var 选择: 列表中不存在任何项", - "description": "Error displayed when the value of @var select is invalid" + "message": "无效的 @var 选择: 列表中不存在任何项" + }, + "meta_invalidString": { + "message": "需要一个带引号的字符串" }, "meta_invalidURLProtocol": { "message": "无效的 URL 协议,目前只允许 http 和 https : $protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -836,29 +731,13 @@ } }, "meta_invalidVersion": { - "message": "无效的版本号. 值与 SemVer 规则不匹配: $version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "需要一个数字", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "需要一个带引号的字符串", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "无效的版本号" }, "meta_invalidWord": { - "message": "需要一个单词", - "description": "Error displayed when the value is expected to be a word" + "message": "需要一个单词" }, "meta_missingChar": { "message": "需要字母:$chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -866,12 +745,10 @@ } }, "meta_missingEOT": { - "message": "需要 EOT 数据", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "需要 EOT 数据" }, "meta_missingMandatory": { "message": "缺少必要的元数据:$keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -880,7 +757,6 @@ }, "meta_unknownJSONLiteral": { "message": "无效 JSON:$literal$ 不是一个有效的 JSON 字面量(Literal)", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -889,16 +765,33 @@ }, "meta_unknownMeta": { "message": "未知的元数据:$key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "可能的 @$keyOk$ ? 未知元数据 @$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "未知的预处理器 @preprocessor:$preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "未知的 @$varkey$ 类型: $vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -908,158 +801,137 @@ } } }, - "meta_unknownPreprocessor": { - "message": "未知的预处理器 @preprocessor:$preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "要导入你的样式,你应该先导出。" }, "noStylesForSite": { - "message": "此网站没有样式。", - "description": "Text displayed when no styles are installed for the current site" + "message": "此网站没有样式。" + }, + "numberedLine": { + "message": "行:" }, "openManage": { - "message": "管理样式", - "description": "Link to open the manage page." + "message": "管理样式" }, "openOptions": { - "message": "选项", - "description": "Go to Options UI" + "message": "选项" }, "openStylesManager": { - "message": "打开样式管理器", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "打开样式管理器" }, "optionsActions": { - "message": "接下来要做什么", - "description": "" + "message": "操作" }, "optionsAdvanced": { - "message": "高级设置", - "description": "" + "message": "高级设置" }, "optionsAdvancedContextDelete": { - "message": "向编辑器右键菜单添加“删除”", - "description": "" + "message": "向编辑器右键菜单添加“删除”" }, "optionsAdvancedExposeIframes": { - "message": "通过 HTML[stylus-iframe] 确定 iframe 父页面", - "description": "" + "message": "通过 HTML[stylus-iframe] 确定 iframe 父页面" }, "optionsAdvancedExposeIframesNote": { - "message": "为每个 iframe 页面的 html 添加 stylus-iframe 属性,以便在 iframe 页面中暴露其顶级父页面的顶级域名。\n允许像这样编写针对属于特定页面的 iframe 的 CSS:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }\n详见源代码:https://github.com/openstyles/stylus/blob/master/content/apply.js#L270", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "给每个iframe框架的html注入window.top父域名的内联属性(值)\n即 html[stylus-iframe=\"hostname\"] \n\n用途: 确定或排除 iframe选择器以避免伤及无辜.\nhtml:not([stylus-iframe]) {...}\nhtml[stylus-iframe] 或 html[stylus-iframe$=\"twitter.com\"] h1 {...}\n\ngithub.com/openstyles/stylus/blob/master/content/apply.js#L270" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "将新样式的格式设为 UserCSS", - "description": "" + "message": "将新样式的格式设为 UserCSS" + }, + "optionsAdvancedPatchCsp": { + "message": "启用CSP补丁以使样式资源生效" + }, + "optionsAdvancedPatchCspNote": { + "message": "如果在带有严格CSPContent-Security-Policy)的网站上无法加载样式中包含的图像或字体,请启用此补丁选项。 \n\n启用此补丁选项将会放宽CSP限制,从而允许加载基本样式内容。⚠此选项仅适用于了解潜在安全隐患的高级用户, 并自行承担负责监视其被允许的内容。请阅读有关基于CSS攻击的更多信息以做决定。\n\n另请注意,如果另一个已安装的扩展首先修改了网络响应,则不能保证此特定选项一定会生效。" + }, + "optionsAdvancedStyleViaXhr": { + "message": "XHR 即时注入模式" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "如果在网站加载时常看到一闪而过的样式闪烁晃眼(FOUC) 、特别是在深色主题下会感知得更明显,请启用此选项。\n\n技术上的原因是 Chrome 内核通常以 无意义的尝试 来延迟扩展的异步通信,以提高页面加载速度,这可能会导致样式慢了半拍才被应用。\n为了避免这种情况,且由于谷歌也没有提供 Web 扩展的样式同步的 API 接口,因此 Stylus 提供了此选项来变相实现, 利用「已弃用」的 XMLHttpRequest 这个同步 API 来获取适用的样式。 它几乎没有任何副作用,因为样式请求在几毫秒内就完成了, 此时网页还在从服务器下载。\n\n尽管如此,但 Chrome DevTools 仍会在 Console 中显示警告。右键单击警告并将其隐藏,将防止再次显示警告。" }, "optionsBadgeDisabled": { - "message": "禁用时的背景颜色", - "description": "" + "message": "禁用所有样式时的背景颜色" }, "optionsBadgeNormal": { - "message": "背景颜色", - "description": "" + "message": "背景颜色" }, "optionsCheck": { - "message": "检查样式更新", - "description": "" + "message": "检查样式更新" }, "optionsCheckUpdate": { - "message": "检查并安装所有可用的更新", - "description": "" + "message": "检查并安装所有可用的更新" }, "optionsCustomizeBadge": { - "message": "样式计数器", - "description": "" + "message": "计数器角标" }, "optionsCustomizeIcon": { - "message": "切换图标", - "description": "" + "message": "工具栏图标风格" }, "optionsCustomizePopup": { - "message": "样式管理弹框", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "检测更新", - "description": "" + "message": "Popup " }, "optionsCustomizeSync": { - "message": "同步到云端", - "description": "" + "message": "同步到云端" + }, + "optionsCustomizeUpdate": { + "message": "检测更新" }, "optionsHeading": { - "message": "选项", - "description": "Heading for options section on manage page." + "message": "选项" }, "optionsIconDark": { - "message": "暗色浏览器主题", - "description": "" + "message": "高对比度暗色图标" }, "optionsIconLight": { - "message": "亮色浏览器主题", - "description": "" + "message": "低对比度亮色图标" }, "optionsOpen": { - "message": "打开", - "description": "" + "message": "打开" }, "optionsOpenManager": { - "message": "管理样式", - "description": "" + "message": "管理样式" }, "optionsPopupWidth": { - "message": "Stylus 样式管理弹出框宽度(px)", - "description": "" + "message": "Popup 弹框总宽度(px)" }, "optionsReset": { - "message": "重置所有选项为默认值", - "description": "" + "message": "重置所有选项为默认值" }, "optionsResetButton": { - "message": "恢复默认值", - "description": "" + "message": "恢复默认值" + }, + "optionsStylusThemes": { + "message": "查找 Stylus UI 主题ᐝ" }, "optionsSubheading": { - "message": "附加选项", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "从旧版本的 Stylus 或 Stylish 中导入样式备份时,请在样式管理器中手动检测升级一次,以确保所有样式都可更新到最新版本。", - "description": "" - }, - "optionsUpdateInterval": { - "message": "每隔 N 小时,检查所有样式更新(0 为关闭检查)", - "description": "" - }, - "optionsSyncNone": { - "message": "无", - "description": "" + "message": "附加选项" }, "optionsSyncConnect": { - "message": "连接", - "description": "" + "message": "连接" }, "optionsSyncDisconnect": { - "message": "断开连接", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "现在同步", - "description": "" + "message": "断开连接" }, "optionsSyncLogin": { - "message": "登录", - "description": "" + "message": "登录" + }, + "optionsSyncNone": { + "message": "无" + }, + "optionsSyncStatusConnected": { + "message": "已连接" + }, + "optionsSyncStatusConnecting": { + "message": "连接中..." + }, + "optionsSyncStatusDisconnected": { + "message": "已断开连接" + }, + "optionsSyncStatusDisconnecting": { + "message": "正在断开连接..." }, "optionsSyncStatusPull": { "message": "正在获取样式 $loaded$ 中的 $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1071,7 +943,6 @@ }, "optionsSyncStatusPush": { "message": "正在上传样式 $loaded$ 中的 $total$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1081,265 +952,257 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "会话已过期,请重新登录。" + }, "optionsSyncStatusSyncing": { - "message": "同步中...", - "description": "" + "message": "同步中..." }, - "optionsSyncStatusConnecting": { - "message": "连接中...", - "description": "" + "optionsSyncSyncNow": { + "message": "现在同步" }, - "optionsSyncStatusConnected": { - "message": "已连接", - "description": "" + "optionsUpdateImportNote": { + "message": "从旧版本的 Stylus 或 Stylish 中导入样式备份时,请在样式管理器中手动检测升级一次,以确保所有样式都可更新到最新版本。" }, - "optionsSyncStatusDisconnecting": { - "message": "正在断开连接...", - "description": "" + "optionsUpdateInterval": { + "message": "每隔 N 小时 自动检测更新(0 为禁用)" }, - "optionsSyncStatusDisconnected": { - "message": "已断开连接", - "description": "" + "overwriteFileExport": { + "message": "是否覆盖现有文件?" }, "paginationCurrent": { - "message": "当前页数", - "description": "Tooltip for the current page index in search results" + "message": "当前页数" }, "paginationEstimated": { - "message": "已找到的样式总页数", - "description": "Tooltip for the total page count in search results" + "message": "已找到的样式总页数" }, "paginationNext": { - "message": "下一页", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "下一页" }, "paginationPrevious": { - "message": "上一页", - "description": "Tooltip for the '<-' button in search results" + "message": "上一页" }, "paginationTotal": { - "message": "总页面", - "description": "" + "message": "总页面" }, "parseUsercssError": { - "message": "Stylus 未能成功解析 UserCSS:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus 未能成功解析 UserCSS:" }, "popupAutoResort": { - "message": "切换后,在弹出窗口中重新排序样式", - "description": "Label for the checkbox controlling popup resorting." + "message": "切换后弹窗中立即重新排序" }, "popupBorders": { - "message": "在两边增加白色边框", - "description": "" + "message": "在两边增加白色边框" }, "popupBordersTooltip": { - "message": "对于新 Chrome 中的暗色主题很有用,因为它不再绘制边框", - "description": "" + "message": "对于新 Chrome 中的暗色主题很有用,因为它不再绘制边框" }, "popupHotkeysInfo": { - "message": "<1>-<9>, <0>, 数字小键盘也可以 - 切换到第 N 样式 (0 是切换到第 10 个样式)\n- 切换以该字母为名称首字母的样式\n 开启编辑器而不是切换\n 启用列出的样式\n 禁用列出的样式\n 和 <`> (倒引号) - 切换初始使用的样式;当弹窗开启时不应用后来启用的样式,因此你可以在测试完成后回复默认的初始选择:简单的禁用所有,然后切换。 \n更多信息详见 Wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>, <0> 按第1 - 10个列表 来ON/OFF\n- 按英文首字母 来ON/OFF\n附加: 打开对应列表的编辑器\n ON 全部列表\n OFF 全部列表\n 或 <`> 仅针对Popup弹出时的初始ON列表, 它只会ON/OFF初始ON列表, 故:\n 能快速恢复初始状态.\n 更多信息见Wiki" }, "popupHotkeysTooltip": { - "message": "单击查看可用的快捷键", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "查看 Popup 快捷键" }, "popupManageTooltip": { - "message": "Shift + 左键单击 或 右键单击 以打开管理界面中当前页面适用的样式", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "右键单击或 Shift + 左键单击可打开管理器并显示适用于当前网站的样式" }, "popupMenuButtonTooltip": { - "message": "操作菜单", - "description": "Tooltip for menu button in popup." + "message": "操作菜单" + }, + "popupOpenEditInPopup": { + "message": "使用简易编辑器窗口(无 omnibox 地址栏)" }, "popupOpenEditInWindow": { - "message": "在新窗口中打开编辑器", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "在新窗口打开编辑器" }, "popupOpenEditInWindowTooltip": { - "message": "可以通过将编辑器标签页拖出为单独窗口来启用,\n将被拖出的编辑器标签页拖入其他窗口即可禁用。", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "可以通过将编辑器标签页拖出为单独窗口来启用,将被拖出的编辑器标签页拖入其他窗口即可禁用。" }, "popupStylesFirst": { - "message": "样式列表置顶", - "description": "Label for the checkbox controlling section order in the popup." + "message": "样式列表置顶" }, "prefShowBadge": { - "message": "当前网站激活的样式数量", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "在当前网站生效的样式数量" }, "previewLabel": { - "message": "实时预览", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "实时预览" }, "previewTooltip": { - "message": "无需保存即可临时应用样式预览效果。保存以使更改永久生效。", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "无需保存即可临时应用样式预览效果。\n保存以使更改永久生效。" + }, + "publish": { + "message": "发布" + }, + "publishPush": { + "message": "发布更新" + }, + "publishReconnect": { + "message": "尝试断开连接然后再次发布" + }, + "publishRetry": { + "message": "Stylus 仍在尝试发布此样式,但如果您没有看到身份验证活动或弹出窗口,您可以重试, 现在重试 ?" + }, + "publishStyle": { + "message": "发布样式" + }, + "publishUsw": { + "message": "使用 " + }, + "readingStyles": { + "message": "正在读取样式..." }, "reload": { - "message": "重新加载 Stylus 扩展程序", - "description": "Context menu reload" + "message": "重启 Stylus" }, "replace": { - "message": "替换", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "替换" }, "replaceAll": { - "message": "全部替换", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "全部替换" }, "replaceWith": { - "message": "替换为", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "替换为" }, "retrieveBckp": { - "message": "导入所有样式", - "description": "" + "message": "导入所有样式" + }, + "retrieveDropboxSync": { + "message": "从 Dropbox 导入" }, "search": { - "message": "搜索", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "搜索" }, "searchCaseSensitive": { - "message": "大小写敏感", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "大小写敏感" + }, + "searchGlobalStyles": { + "message": "全局搜索" }, "searchNumberOfResults": { - "message": "已找到", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "已找到" }, "searchNumberOfResults2": { - "message": "在代码和应用中匹配的数量", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "在代码和应用中匹配的数量" }, "searchRegexp": { - "message": "使用 JavaScript /re/ 语法(用“/”包裹正则表达式)进行正则表达式搜索", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "/regex/ 用 / 包裹语法来正则搜索" }, "searchResultInstallCount": { - "message": "总安装次数", - "description": "Text for label that shows the number of times a search result was installed" + "message": "总的安装次数" }, "searchResultNoneFound": { - "message": "没有找到与此页面相关的样式。", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "没有找到与此页面相关的样式。" + }, + "searchResultNotMatching": { + "message": "样式已安装但不适于当前 URL" + }, + "searchResultNotMatchingNote": { + "message": "尝试请求该用户样式的作者添加 URL。\n\n您也可以在管理器中打开样式自己编辑,\n但请注意,这会禁用此样式的自动更新。" }, "searchResultRating": { - "message": "评价", - "description": "Text for label that shows the search result's rating" + "message": "评价" }, "searchResultUpdated": { - "message": "最后更新日期", - "description": "Text for label that shows the search result's last update date" + "message": "最后更新日期" }, "searchResultWeeklyCount": { - "message": "本周安装次数", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "本周安装次数" }, - "searchStyles": { - "message": "搜索内容", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "空格多词 -- 同时精确匹配(无需双引号)\n2020 -- 也含更新日期的匹配结果\n大小写不敏感" + }, + "searchStylesAll": { + "message": "全部" + }, + "searchStylesCode": { + "message": "代码" }, "searchStylesHelp": { - "message": "使用 键以定位搜索栏。\n纯文本: 搜索名字,代码,主页 URL 和适用于它的站点,少于 3 个字母的单词将会被忽略。 \n匹配URL:以 为前缀来搜索,例如 \n正则表达式:包括斜杠和标记。 \n精确的单词:使用双引号包住想要搜索的内容,例如 <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": " 或 以定位到搜索框; 清空搜索框\n焦点在页面时, 也支持样式名的英文首字母索引。\n默认纯文本搜索,可按任何顺序搜索所有以空格分隔的术语。\n精确搜索:使用双引号包裹住想要搜索的内容,例如 <\"head ~ div\">\n正则表达式:包括斜杠和标记,例如 \n搜索范围选择器中的 「匹配 URL」:查找适用于已指定 URL 的样式,例如 https://www.example.org/\n搜索范围选择器中的 「元数据」:含 样式名称、应用于、安装/更新URL、以及 UserCSS 中的整个元数据块(即==UserStyle==那些)但不包括代码里的注释内容。" + }, + "searchStylesMatchUrl": { + "message": "URL" + }, + "searchStylesMeta": { + "message": "元数据" + }, + "searchStylesName": { + "message": "名称" }, "sectionAdd": { - "message": "添加其他部分", - "description": "Label for the button to add a section" + "message": "添加新部分" }, "sectionCode": { - "message": "代码", - "description": "Label for the code for a section" + "message": "代码" }, "sectionRemove": { - "message": "删除此部分", - "description": "Label for the button to remove a section" + "message": "删除此部分" }, "sectionRestore": { - "message": "撤销删除", - "description": "Label for the button to restore a removed section" + "message": "撤销删除" + }, + "sections": { + "message": "章节" }, "shortcuts": { - "message": "快捷键", - "description": "Go to shortcut configuration" + "message": "快捷键" }, "shortcutsNote": { - "message": "定义键盘快捷键", - "description": "" + "message": "设置快捷键" }, "sortDateNewestFirst": { - "message": "最新的优先", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "最新的优先" }, "sortDateOldestFirst": { - "message": "最旧的优先", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "最旧的优先" }, "sortLabel": { - "message": "选择对已安装的样式应用的排序规则", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "选择对已安装的样式应用的排序规则" }, "sortLabelTitleAsc": { - "message": "标题升序", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "标题升序" }, "sortLabelTitleDesc": { - "message": "标题降序", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "标题降序" }, "sortStylesHelp": { - "message": "从下拉菜单中选择要应用于所有已安装项目的排序类型,默认使用标题升序排序 (A - Z)。「标题降序」则会应用降序排序 (Z - A)。\n还有很多其他排序方式,可以通过多个条件对已安装项目进行排序。你也可以想象,在对一个多列的表格进行排序,并且选择可能带有(+)号的一组条件或单个条件进行排序。\n例如,若设置为 \"启用(优先)+ 标题\",将会把所有已启用的项目都排列在顶部,然后再以标题升序排列 (A - Z)的顺序应用到以启用和未启用的项目。", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "默认用「标题升序」(A - Z) 、「标题降序」则反之 (Z - A) \n「安装日期」 不等同于 样式的本地🆔 排序\n还有很多其它排序方式,可以通过多个条件进行排序。\n你也可以想象,在对一个多列的表格进行排序,并且选择可能带有(+)号的一组条件或单个条件进行排序。\n例如,若设为 \"启用(优先)+ 标题\",将会把所有已启用的项目都排列在顶部,然后再以标题升序排列 (A - Z)的顺序应用到以启用和未启用的项目。" }, "sortStylesHelpTitle": { - "message": "排序内容", - "description": "Label for the sort info popup on the Manage styles page" + "message": "自定义排序" }, "styleBadRegexp": { - "message": "正则表达式无效。", - "description": "Validation message for a bad regexp in a style" + "message": "正则表达式无效。" }, "styleBeautify": { - "message": "格式化", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "格式化" }, "styleBeautifyHint": { - "message": "提示: 你可以不显示此面板, 而是用右键“美化”按钮 或用下面定义的快捷键来美化.", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "提示: 你可以不显示此面板, 而是用右键“美化”按钮 或用下面定义的快捷键来美化." }, "styleBeautifyIndentConditional": { - "message": "缩进 @media、@supports", - "description": "CSS-beautifier option" + "message": "缩进 @media、@supports" }, "styleBeautifyPreserveNewlines": { - "message": "保留新增空行", - "description": "CSS-beautifier option" + "message": "保留新增空行" }, "styleCancelEditLabel": { - "message": "返回管理器", - "description": "Label for cancel button for style editing" + "message": "返回管理器" }, "styleChangesNotSaved": { - "message": "您已对此样式进行了更改,但尚未保存。", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "您已对此样式进行了更改,但尚未保存。" }, "styleEnabledLabel": { - "message": "启用", - "description": "Label for the enabled state of styles" + "message": "启用" }, "styleFromMozillaFormatError": { - "message": "导入 Mozilla 格式失败", - "description": "Label for the import error" + "message": "导入 Mozilla 格式失败" }, "styleFromMozillaFormatPrompt": { - "message": "粘贴 Mozilla 格式代码", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "粘贴 Mozilla 格式代码" }, "styleInstall": { "message": "要将“$stylename$”安装到 Stylus 中吗?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1348,7 +1211,6 @@ }, "styleInstallFailed": { "message": "安装用户样式失败!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1357,86 +1219,71 @@ }, "styleInstallOverwrite": { "message": "'$stylename$' 已经安装,要覆盖吗?\n版本: $oldVersion$ -> $newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "输入名称", - "description": "Error displayed when user saves without providing a name" + "message": "输入名称" }, "styleMozillaFormatHeading": { - "message": "Mozilla 格式", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla 格式" + }, + "styleName": { + "message": "样式名称" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "正则表达式错误,样式无法正常运行", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "正则表达式错误,样式无法正常运行" }, "styleRegexpInvalidExplanation": { - "message": "部分正则表达式无法生效。", - "description": "" + "message": "部分正则表达式无法生效。" }, "styleRegexpPartialExplanation": { - "message": "这个样式有一部分正则表达式与 CSS4 @document specification完整的 URL 不匹配。这部分样式将被忽略,可能这个样式是基于 Stylish 编写的,请尝试在 Stylus 重新编写该样式。", - "description": "" + "message": "这个样式有一部分正则表达式与 CSS4 @document specification完整的 URL 不匹配。这部分样式将被忽略,可能这个样式是基于 Stylish 编写的,请尝试在 Stylus 重新编写该样式。" }, "styleRegexpProblemTooltip": { - "message": "多个部分代码无法正常处理正则表达式", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "多个部分代码无法正常处理正则表达式" }, "styleRegexpTestButton": { - "message": "测试正则表达式", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "正则测试" }, "styleRegexpTestFull": { - "message": "匹配的标签页", - "description": "RegExp test report: label for the fully matching expressions" + "message": "匹配到标签页的正则" }, "styleRegexpTestInvalid": { - "message": "忽略无效的正则表达式", - "description": "RegExp test report: label for the invalid expressions" + "message": "忽略无效的正则表达式" }, "styleRegexpTestNone": { - "message": "没有匹配的标签页", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "没有匹配到标签页的正则" }, "styleRegexpTestNote": { - "message": "注意: 在正则表达式中使用单个 \\ 进行转义,其将会根据 CSS 中引用字符串的自动转换为 \\\\。", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "注意: 在正则表达式中使用单个 \\ 进行转义,其将会根据 CSS 中引用字符串的自动转换为 \\\\。" }, "styleRegexpTestPartial": { - "message": "没有完全匹配,因此忽略", - "description": "RegExp test report: label for the partially matching expressions" + "message": "没有完全匹配,因此忽略" }, "styleRegexpTestTitle": { - "message": "匹配的标签页列表(点击链接可切换到该标签)", - "description": "RegExp test report: title of the report" + "message": "已打开标签页的正则匹配(点击URL可跳转)" }, "styleSaveLabel": { - "message": "保存", - "description": "Label for save button for style editing" + "message": "保存" }, "styleToMozillaFormatHelp": { - "message": "导入 FireFox (Mozilla) 格式的 CSS 代码后,会自动转换成 Stylus 使用的分段式 CSS 代码。反过来,分段式的 CSS 也可以导出为 FireFox (Mozilla) 格式。需要注意的是,如果你要向 userstyles.org 提交你的代码,则必须使用 FireFox (Mozilla) 格式。", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "导入 FireFox 格式即 @-moz-document ...的 CSS 代码后,会自动转换成 Stylus 使用的分段式 CSS 代码。\n反过来,分段式的 CSS 也可以导出为 FireFox 格式。\n需要注意的是,如果你要向 userstyles.org 提交你的代码,则必须使用 FireFox 格式。\n\n导入快捷键: 剪贴板含有 @-moz-document ....代码,则可以直接在编辑器里 Ctrl+V 会自动弹出导入对话框" }, "styleToMozillaFormatTitle": { - "message": "Mozilla 格式的样式", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla 格式的样式" }, "styleUpdate": { "message": "是否更新 “$stylename$”?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1444,72 +1291,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "样式已经在编辑器外被修改。需要重新加载样式吗?", - "description": "Confirmation to update the style in the editor" + "message": "样式已经在编辑器外被修改。需要重新加载样式吗?" }, "stylusUnavailableForURL": { - "message": "Stylus 不能在此类页面上工作", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus 无法介入到此类页面" }, "stylusUnavailableForURLdetails": { - "message": "出于安全的因素,浏览器禁止拓展程序影响其内置页面 (例如 chrome://version ,Chrome 61 的新标准标签页,about:addons 等其他页面)以及其他拓展程序的页面。每个浏览器也限制了对于自己拓展程序库的介入 (例如 Chrome 网上应用店、Firefox 附加组件)。", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "出于安全考虑,浏览器禁止扩展程序影响其内置页面(例如 chrome://version,Chrome 61 后的标准新标签页,about:addons 等等)以及其他扩展程序的页面。每个浏览器也限制了对于自己扩展程序库的介入〔例如 Chrome 网上应用店、Firefox 附加组件(addons.mozilla.org)〕。" + }, + "syncDropboxDeprecated": { + "message": "在选项页面中, Dropbox 导入/导出 已经替换为更高级的样式同步方式。" + }, + "syncDropboxStyles": { + "message": "导出至 Dropbox" + }, + "syncError": { + "message": "同步失败" + }, + "syncErrorRelogin": { + "message": "同步失败\n请尝试在 Stylus 选项里重新登录\n先点击「断开连接」,再点击「连接」。" }, "syncStorageErrorSaving": { - "message": "不能保存该值,请尝试减少文本数量。", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "不能保存该值,请尝试减少文本数量。" }, "toggleStyle": { - "message": "切换样式", - "description": "Label for the checkbox to enable/disable a style" + "message": "启用/禁用样式" }, "undo": { - "message": "撤销", - "description": "Button label" + "message": "撤销" }, "undoGlobal": { - "message": "撤销 (全局)", - "description": "CSS-beautify global Undo button label" + "message": "撤销 (全局)" }, "unreachableAMO": { - "message": "Firefox 禁止访问该站点。", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox 禁止访问该站点。" }, "unreachableAMOHint": { - "message": "若要允许存取,打开 ,在列表上单击右键,点击新增,然后再点击 'Boolean',粘贴  并点击确定 -> -> 确定,然后重新刷新 页面。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "在 Firefox 60 及其更新版本中,你必须从 中删除 AMO 域", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "仅 Firefox 59 或更新的版本才能让你设置 WebExtensions 在例如这样一个有 CSP 保护的页面上新增样式。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "若要允许存取,打开 ,在列表上单击右键,点击新增,然后再点击 'Boolean',粘贴  并点击确定 -> -> 确定,然后重新刷新 页面。" }, "unreachableContentScript": { - "message": "无法读取页面,请尝试刷新。", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "无法读取页面,请尝试刷新。" }, "unreachableFileHint": { - "message": "如果需要改变 file:// 协议的样式,则需要在 chrome://extensions 页面中的 Stylus 扩展选项里面,打开 允许访问文件网址 的权限", - "description": "Note in the toolbar popup for file:// URLs" + "message": "如果需要改变 file:// 协议的样式,则需要在 chrome://extensions 页面中的 Stylus 扩展选项里面,打开「允许访问文件网址」权限" }, - "InaccessibleFileHint": { - "message": "Stylus 无法访问某些文件格式(例如 pdf 或 json 文件)。", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "在 Firefox ⩾60 版本里, 你需要在 里移除 extensions.webextensions.restrictedDomains" + }, + "unreachableMozSiteHintOldFF": { + "message": "仅 Firefox ⩾ 59 版本才允许 WebExtensions 在受 CSP 保护的网站(例如此网站)上添加样式元素。" + }, + "unzipStyles": { + "message": "正在解压样式..." }, "updateAllCheckSucceededNoUpdate": { - "message": "没有找到更新。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "没有找到更新。" }, "updateAllCheckSucceededSomeEdited": { - "message": "如果你修改过一些样式,那它们可能被忽略更新,你可以单独检测这些样式强制升级,也可以 再次检测所有样式强制更新。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "如果你修改过一些样式,那它们可能被忽略更新,你可以单独检测这些样式强制升级,也可以 再次检测所有样式强制更新。" }, "updateCheckFailBadResponseCode": { "message": "更新失败: 服务器响应代码为 $code$。", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1517,127 +1359,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "更新失败: 无法访问服务器。", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "更新失败: 无法访问服务器。" }, "updateCheckHistory": { - "message": "检测升级的历史记录", - "description": "" + "message": "检测升级的历史记录" }, "updateCheckManualUpdateForce": { - "message": "安装更新(将覆盖本地修改的样式)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "安装更新(将覆盖本地修改的样式)" }, "updateCheckManualUpdateHint": { - "message": "强制升级将覆盖所有本地修改的样式", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "强制升级将覆盖所有本地修改的样式" }, "updateCheckSkippedLocallyEdited": { - "message": "此样式已在本地修改过。", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "此样式已在本地修改过。" }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "这个样式可能在本地修改过,如果强制升级更新则会覆盖修改的内容。", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "这个样式可能在本地修改过,如果强制升级更新则会覆盖修改的内容。" }, "updateCheckSucceededNoUpdate": { - "message": "样式已是最新版本。", - "description": "Text that displays when an update check completed and no update is available" + "message": "样式已是最新版本。" }, "updateCompleted": { - "message": "更新已完成。", - "description": "Text that displays when an update completed" + "message": "更新已完成。" }, "updatesCurrentlyInstalled": { - "message": "更新已安装:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "请修改 @name 或 @namespace 的值以免覆盖现有样式。", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "在显示了配置对话框后,样式被修改或删除,这些变数将不会被保存,以免损坏元数据:", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "在代码中指定 @name 来设置名称", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "使用这些代码替换新 UserCSS 样式的默认模板?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "以空的 @name 代替默认模板", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "在此插入代码...", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "当前样式版本比已安装样式版本旧。", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "编写样式给:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "此 URL", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "导出至 Dropbox", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "在选项页面中, Dropbox 导入/导出 已经替换为更高级的样式同步方式。", - "description": "" - }, - "retrieveDropboxSync": { - "message": "从 Dropbox 导入", - "description": "" - }, - "overwriteFileExport": { - "message": "是否覆盖现有文件?", - "description": "" - }, - "exportSavedSuccess": { - "message": "文件保存成功", - "description": "" - }, - "noFileToImport": { - "message": "要导入你的样式,你应该先导出。", - "description": "" - }, - "connectingDropbox": { - "message": "正在连接至 Dropbox...", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "连接到 Dropbox 功能仅适用于直接从 Webstore 安装的应用程序", - "description": "" - }, - "gettingStyles": { - "message": "正在获取所有样式...", - "description": "" - }, - "zipStyles": { - "message": "正在压缩样式...", - "description": "" - }, - "unzipStyles": { - "message": "正在解压样式...", - "description": "" - }, - "readingStyles": { - "message": "正在读取样式...", - "description": "" + "message": "更新已安装:" }, "uploadingFile": { - "message": "正在上传文件...", - "description": "" + "message": "正在上传文件..." + }, + "usercssAvoidOverwriting": { + "message": "请修改 @name 或 @namespace 的值以免覆盖现有样式。" + }, + "usercssConfigIncomplete": { + "message": "在显示了配置对话框后,样式被修改或删除,这些变数将不会被保存,以免损坏元数据:" + }, + "usercssEditorNamePlaceholder": { + "message": "在代码中指定 @name 来设置名称" + }, + "usercssReplaceTemplateConfirmation": { + "message": "使用当前 UserStyle 代码替换为新的默认模板吗 ?" + }, + "usercssReplaceTemplateName": { + "message": "@name 为空值 可设置新的默认模板" + }, + "usercssReplaceTemplateSectionBody": { + "message": "在此插入代码..." + }, + "versionInvalidOlder": { + "message": "当前样式版本比已安装样式版本旧。" + }, + "writeStyleFor": { + "message": "新建样式给:" + }, + "writeStyleForURL": { + "message": "URL" + }, + "zipStyles": { + "message": "正在压缩样式..." } } diff --git a/_locales/zh_TW/messages.json b/_locales/zh_TW/messages.json index 2551fb69..d98cb870 100644 --- a/_locales/zh_TW/messages.json +++ b/_locales/zh_TW/messages.json @@ -1,23 +1,21 @@ { + "InaccessibleFileHint": { + "message": "Stylus 無法存取某些檔案類型(如 PDF 與 JSON 檔案)。" + }, "addStyleLabel": { - "message": "編寫新樣式", - "description": "Label for the button to go to the add style page" + "message": "編寫新樣式" }, "addStyleTitle": { - "message": "新增樣式", - "description": "Title of the page for adding styles" + "message": "新增樣式" }, "alphaChannel": { - "message": "不透明度", - "description": "Label of color's opacity" + "message": "不透明度" }, "appliesAdd": { - "message": "新增", - "description": "Label for the button to add an 'applies' entry" + "message": "新增" }, "appliesDisplay": { "message": "適用於: $applies$", - "description": "Text on the manage screen to describe what the style applies to", "placeholders": { "applies": { "content": "$1" @@ -25,296 +23,270 @@ } }, "appliesDisplayTruncatedSuffix": { - "message": "以及更多", - "description": "Text added to appliesDisplay when there are more sites for the style than are displayed" + "message": "以及更多" }, "appliesDomainOption": { - "message": "該域名上的網址", - "description": "Option to make the style apply to the entered string as a domain" + "message": "該域名上的網址" }, "appliesHelp": { - "message": "使用「適用於」控件來限制這個樣式段適用的網址。", - "description": "Help text for 'applies to' section" + "message": "使用「適用於」控件來限制這個樣式段適用的網址。" }, "appliesLabel": { - "message": "適用於", - "description": "Label for 'applies to' fields on the edit/add screen" + "message": "適用於" }, "appliesLineWidgetLabel": { - "message": "顯示「套用至」資訊", - "description": "Label for the checkbox to display applies-to information in the single editor" + "message": "顯示「套用至」資訊" }, "appliesLineWidgetWarning": { - "message": "無法與最小化的 CSS 一起運作", - "description": "A warning that applies-to information won't show properly with minified CSS" + "message": "無法與最小化的 CSS 一起運作" }, "appliesRegexpOption": { - "message": "比對正規表示式的網址", - "description": "Option to make the style apply to the entered string as a regular expression" + "message": "比對正規表示式的網址" }, "appliesRemove": { - "message": "移除", - "description": "Label for the button to remove an 'applies' entry" + "message": "移除" }, "appliesRemoveError": { - "message": "無法移除最後的「套用到」項目", - "description": "Error displayed when the last 'applies' is going to be removed" + "message": "無法移除最後的「套用到」項目" }, "appliesSpecify": { - "message": "指定", - "description": "Label for the button to make a style apply only to specific sites" + "message": "指定" }, "appliesToEverything": { - "message": "全部", - "description": "Text displayed for styles that apply to all sites" + "message": "全部" }, "appliesUrlOption": { - "message": "網址", - "description": "Option to make the style apply to the entered string as a URL" + "message": "網址" }, "appliesUrlPrefixOption": { - "message": "含以下前綴的網址", - "description": "Option to make the style apply to the entered string as a URL prefix" + "message": "含以下前綴的網址" }, "applyAllUpdates": { - "message": "應用所有更新", - "description": "Label for the button to apply all detected updates" + "message": "應用所有更新" }, "author": { - "message": "作者", - "description": "Label for the style author" + "message": "作者" }, "backupButtons": { - "message": "備份", - "description": "Heading for backup" + "message": "備份" }, "backupMessage": { - "message": "選取檔案並拖曳到此頁面。", - "description": "Message for backup" + "message": "選取檔案並拖曳到此頁面。" }, "bckpInstStyles": { - "message": "匯出樣式", - "description": "" + "message": "匯出樣式" }, "checkAllUpdates": { - "message": "檢查所有樣式更新", - "description": "Label for the button to check all styles for updates" + "message": "檢查所有樣式更新" }, "checkAllUpdatesForce": { - "message": "再次檢查,我沒有編輯任何樣式!", - "description": "Label for the button to apply all detected updates" + "message": "再次檢查,我沒有編輯任何樣式!" }, "checkForUpdate": { - "message": "檢查更新", - "description": "Label for the button to check a single style for an update" + "message": "檢查更新" }, "checkingForUpdate": { - "message": "檢查中…", - "description": "Text to display when checking a style for an update" + "message": "檢查中…" }, "clickToUninstall": { - "message": "點選以解除安裝", - "description": "Label for the overlay on a style thumbnail when installed via inline search in the popup" + "message": "點選以解除安裝" }, "cm_autoCloseBrackets": { - "message": "自動關閉括號與引號", - "description": "Label for the checkbox in the style editor." + "message": "自動關閉括號與引號" }, "cm_autoCloseBracketsTooltip": { - "message": "當輸入開放的 ()[]{}''\"\" 時自動新增另一邊的標點符號", - "description": "Label for the checkbox in the style editor." + "message": "當輸入開放的 ()[]{}''\"\" 時自動新增另一邊的標點符號" }, "cm_autocompleteOnTyping": { - "message": "在輸入時自動完成", - "description": "Label for the checkbox in the style editor." + "message": "在輸入時自動完成" }, "cm_colorpicker": { - "message": "用於 CSS 色彩的色彩選擇器", - "description": "Label for the checkbox controlling colorpicker option for the style editor." + "message": "用於 CSS 色彩的色彩選擇器" }, "cm_indentWithTabs": { - "message": "用 Tab 鍵智慧縮排", - "description": "Label for the checkbox controlling tabs with smart indentation option for the style editor." + "message": "用 Tab 鍵智慧縮排" }, "cm_keyMap": { - "message": "鍵盤映射", - "description": "Label for the drop-down list controlling the keymap for the style editor." + "message": "鍵盤映射" }, "cm_lineWrapping": { - "message": "自動換行", - "description": "Label for the checkbox controlling word wrap option for the style editor." + "message": "自動換行" }, "cm_matchHighlight": { - "message": "突顯", - "description": "Label for the drop-down list controlling the automatic highlighting of current word/selection occurrences in the style editor." + "message": "突顯" }, "cm_matchHighlightSelection": { - "message": "僅段", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of currently selected text" + "message": "僅段" }, "cm_matchHighlightToken": { - "message": "在游標下的 Token", - "description": "Style editor's 'highglight' drop-down list option: highlight the occurrences of the word/token under cursor even if nothing is selected" + "message": "在游標下的 Token" }, "cm_resizeGripHint": { - "message": "按兩下以最大化/還原高度", - "description": "Tooltip for the resize grip in style editor" + "message": "按兩下以最大化/還原高度" }, "cm_selectByTokens": { - "message": "按兩下選取 token", - "description": "Label for the checkbox in the editor." + "message": "按兩下選取 token" }, "cm_selectByTokensTooltip": { - "message": "Token 的範例:.foo-bar-2 #aabbcc 0.32 !important\n當停用時:將會選取被標點符號分隔的字詞。", - "description": "" + "message": "Token 的範例:.foo-bar-2 #aabbcc 0.32 !important\n當停用時:將會選取被標點符號分隔的字詞。" }, "cm_smartIndent": { - "message": "使用智慧縮排", - "description": "Label for the checkbox controlling smart indentation option for the style editor." + "message": "使用智慧縮排" }, "cm_tabSize": { - "message": "Tab 大小", - "description": "Label for the text box controlling tab size option for the style editor." + "message": "Tab 大小" }, "cm_theme": { - "message": "主題", - "description": "Label for the style editor's CSS theme." + "message": "主題" + }, + "colorpickerPaletteHint": { + "message": "右鍵點擊其中ㄧ部份以循環其原始碼" }, "colorpickerSwitchFormatTooltip": { - "message": "切換格式:HEX → RGB → HSL。\nShift 並點選則為反向進行。\n也可以使用 PgUp (PageUp) 與 PgDn (PageDown) 鍵。", - "description": "Tooltip for the switch button in the color picker popup in the style editor." + "message": "切換格式:HEX → RGB → HSL。\nShift 並點選則為反向進行。\n也可以使用 PgUp (PageUp) 與 PgDn (PageDown) 鍵。" }, "colorpickerTooltip": { - "message": "開啟色彩選擇器", - "description": "Tooltip for the colored squares shown before CSS colors in the style editor." + "message": "開啟色彩選擇器" }, "configOnChange": { - "message": "正在變更", - "description": "VERY SHORT label for the checkbox in style config dialog after the save button - when enabled the changes in the dialog are saved and applied automatically without the need to press the Save button" + "message": "正在變更" }, "configOnChangeTooltip": { - "message": "自動儲存與套用變更", - "description": "" + "message": "自動儲存與套用變更" }, "configureStyle": { - "message": "設定", - "description": "Label for the button to configure usercss userstyle" + "message": "設定" }, "configureStyleOnHomepage": { - "message": "在首頁上設定", - "description": "Label for the button to configure userstyles.org userstyle" + "message": "在首頁上設定" }, "confirmCancel": { - "message": "取消", - "description": "" + "message": "取消" }, "confirmClose": { - "message": "關閉", - "description": "'Close' button in a confirm dialog" + "message": "關閉" }, "confirmDefault": { - "message": "使用預設值", - "description": "'Set to default' button in a confirm dialog" + "message": "使用預設值" }, "confirmDelete": { - "message": "刪除", - "description": "" + "message": "刪除" }, "confirmDiscardChanges": { - "message": "放棄變更?", - "description": "Generic label or title displayed when trying to close something (not a style) with unsaved changes" + "message": "放棄變更?" }, "confirmNo": { - "message": "否", - "description": "'No' button in a confirm dialog" + "message": "否" }, "confirmOK": { - "message": "確定", - "description": "" + "message": "確定" }, "confirmSave": { - "message": "儲存", - "description": "'Save' button in a confirm dialog" + "message": "儲存" }, "confirmStop": { - "message": "停止", - "description": "'Stop' button in a confirm dialog" + "message": "停止" }, "confirmYes": { - "message": "是", - "description": "'Yes' button in a confirm dialog" + "message": "是" + }, + "connectingDropbox": { + "message": "正在連線至 Dropbox……" + }, + "connectingDropboxNotAllowed": { + "message": "連線到 Dropbox 僅在直接從 webstore 安裝的應用程式中可用" }, "copied": { - "message": "已複製到剪貼簿", - "description": "Message shown when content has been copied to the clipboard" + "message": "已複製到剪貼簿" }, "copy": { - "message": "複製到剪貼簿", - "description": "Tooltip for elements which can be copied" + "message": "複製到剪貼簿" + }, + "customNameHint": { + "message": "在此輸入自訂名稱以在使用者介面中重新命名樣式而不會中斷其更新" + }, + "customNameResetHint": { + "message": "停止使用自訂的名稱,切換到樣式自己的名稱" + }, + "dateAbbrDay": { + "message": "$value$天", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrHour": { + "message": "$value$小時", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrMonth": { + "message": "$value$月", + "placeholders": { + "value": { + "content": "$1" + } + } + }, + "dateAbbrYear": { + "message": "$value$年", + "placeholders": { + "value": { + "content": "$1" + } + } }, "dateInstalled": { - "message": "安裝日期", - "description": "Option text for the user to sort the style by install date" + "message": "安裝日期" }, "dateUpdated": { - "message": "更新日期", - "description": "Option text for the user to sort the style by last update date" + "message": "更新日期" }, "dbError": { - "message": "使用 Stylus 資料庫時出現錯誤。你想訪問可能包含解決辦法的網頁嗎?", - "description": "Prompt when a DB error is encountered" + "message": "使用 Stylus 資料庫時出現錯誤。你想訪問可能包含解決辦法的網頁嗎?" }, "defaultTheme": { - "message": "預設", - "description": "Default CodeMirror CSS theme option on the edit style page" + "message": "預設" }, "deleteStyleConfirm": { - "message": "確定要刪除這個樣式嗎?", - "description": "Confirmation before deleting a style" + "message": "確定要刪除這個樣式嗎?" }, "deleteStyleLabel": { - "message": "删除", - "description": "Label for the button to delete a style" + "message": "删除" }, "description": { - "message": "用Stylus(一個用戶樣式管理器)重塑網頁。 Stylus 讓你能為诸多主流網站輕鬆的安裝主題和皮膚。", - "description": "Extension description" + "message": "用Stylus(一個用戶樣式管理器)重塑網頁。 Stylus 讓你能為诸多主流網站輕鬆的安裝主題和皮膚。" }, "disableAllStyles": { - "message": "停用所有樣式", - "description": "Label for the checkbox that turns all enabled styles off." + "message": "停用所有樣式" }, "disableStyleLabel": { - "message": "停用", - "description": "Label for the button to disable a style" + "message": "停用" }, "dragDropMessage": { - "message": "將您的備份檔拖曳到此頁面的任何地方以匯入。", - "description": "Drag'n'drop message" + "message": "將您的備份檔拖曳到此頁面的任何地方以匯入。" }, "dragDropUsercssTabstrip": { - "message": "要安裝檔案,請將其放到分頁上(顯示分頁標題的區域)。", - "description": "Message popup shown when erroneously dropping a usercss file into the manager page" + "message": "要安裝檔案,請將其放到分頁上(顯示分頁標題的區域)。" }, "editDeleteText": { - "message": "删除", - "description": "Label for the context menu item in the editor to delete selected text" + "message": "删除" }, "editGotoLine": { - "message": "跳到行(或 line:col )", - "description": "Go to line or line:column on Ctrl-G in style code editor" + "message": "跳到行(或 line:col )" }, "editStyleHeading": { - "message": "編輯樣式", - "description": "Title of the page for editing styles" + "message": "編輯樣式" }, "editStyleLabel": { - "message": "編輯", - "description": "Label for the button to go to the edit style page" + "message": "編輯" }, "editStyleTitle": { "message": "編輯樣式 $stylename$", - "description": "Title of the page for editing styles", "placeholders": { "stylename": { "content": "$1" @@ -322,220 +294,183 @@ } }, "enableStyleLabel": { - "message": "啟用", - "description": "Label for the button to enable a style" + "message": "啟用" }, "excludeStyleByDomainLabel": { - "message": "排除目前的網域", - "description": "" + "message": "排除目前的網域" }, "excludeStyleByUrlLabel": { - "message": "排除目前的 URL", - "description": "" + "message": "排除目前的 URL" }, "exportLabel": { - "message": "匯出", - "description": "Label for the button to export a style ('edit' page) or all styles ('manage' page)" + "message": "匯出" + }, + "exportSavedSuccess": { + "message": "檔案儲存成功" }, "externalFeedback": { - "message": "回饋", - "description": "Label for the external link to send feedback for the style" + "message": "回饋" }, "externalHomepage": { - "message": "首頁", - "description": "Label for the external link to style's homepage" + "message": "首頁" }, "externalLink": { - "message": "外部連結", - "description": "Label for external links" + "message": "外部連結" }, "externalSupport": { - "message": "支援", - "description": "Label for the external link to style's support site" + "message": "支援" }, "externalUsercssDocument": { - "message": "Usercss 的文件", - "description": "Label for the external link to usercss documentation" + "message": "Usercss 的文件" }, "filteredStyles": { "message": "$numShown$ 個已顯示,總共 $numTotal$ 個", - "description": "TL note - make this message short", "placeholders": { - "numTotal": { - "content": "$2" - }, "numShown": { "content": "$1" + }, + "numTotal": { + "content": "$2" } } }, "filteredStylesAllHidden": { - "message": "目前套用的過濾器未符合樣式", - "description": "Text shown when no styles match currently applied filter in the style manager" + "message": "目前套用的過濾器未符合樣式" }, "findStyles": { - "message": "尋找樣式", - "description": "Text for a link that gets a list of styles for the current site" + "message": "尋找樣式" }, "findStylesForSite": { - "message": "查找更多適合此網站的樣式", - "description": "Text for a link that gets a list of styles for the current site" + "message": "查找更多適合此網站的樣式" }, "findStylesInline": { - "message": "嵌入", - "description": "Text for a checkbox that opens search results 'inline' (within the Stylus popup window)" + "message": "嵌入" }, "findStylesInlineTooltip": { - "message": "在此視窗中顯示搜尋結果。", - "description": "Text for a checkbox that displays search results within the Stylus popup." + "message": "在此視窗中顯示搜尋結果。" }, "genericAdd": { - "message": "新增", - "description": "Used in various places for an action that adds something" + "message": "新增" }, "genericClone": { - "message": "複製", - "description": "Used in various places for an action that clones something" + "message": "複製" + }, + "genericDescription": { + "message": "描述" }, "genericDisabledLabel": { - "message": "已停用", - "description": "Used in various lists/options to indicate that something is disabled" + "message": "已停用" }, "genericEnabledLabel": { - "message": "已啟用", - "description": "Used in various lists/options to indicate that something is enabled" + "message": "已啟用" }, "genericError": { - "message": "錯誤", - "description": "Used in various places to indicate some error occurred." + "message": "錯誤" }, "genericHistoryLabel": { - "message": "歷史", - "description": "Used in various places to show a history log of something" + "message": "歷史" }, "genericNext": { - "message": "下一步", - "description": "Used in various places to select/perform the next step/action" + "message": "下一步" }, "genericPrevious": { - "message": "上一步", - "description": "Used in various places to select/perform the previous step/action" + "message": "上一步" }, "genericResetLabel": { - "message": "重設", - "description": "Used in various parts of UI to indicate that something may be reset to its original state" + "message": "重設" }, "genericSavedMessage": { - "message": "已儲存", - "description": "Used in various parts of the UI to indicate that something was saved" + "message": "已儲存" }, "genericTitle": { - "message": "標題", - "description": "Used in various parts of the UI to indicate the title of something" + "message": "標題" }, "genericUnknown": { - "message": "未知", - "description": "Used in various parts of the UI to indicate if something is unknown (e.g. an unknown date)" + "message": "未知" + }, + "gettingStyles": { + "message": "正在取得所有樣式……" }, "helpAlt": { - "message": "說明", - "description": "Alternate text for help buttons" + "message": "說明" }, "helpKeyMapCommand": { - "message": "鍵入命令名稱", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "鍵入命令名稱" }, "helpKeyMapHotkey": { - "message": "按下快速鍵", - "description": "Placeholder text of inputbox in keymap help popup on the edit style page. Must be very short" + "message": "按下快速鍵" }, "hostDisabled": { - "message": "由於所用目前版本瀏覽器的臭蟲,此主機已被停用", - "description": "Tooltip for cloud host disabled" + "message": "由於所用目前版本瀏覽器的臭蟲,此主機已被停用" }, "importAppendLabel": { - "message": "追加到樣式", - "description": "Label for the button to import a style and append to the existing sections" + "message": "追加到樣式" }, "importAppendTooltip": { - "message": "追加導入的樣式到當前樣式", - "description": "Tooltip for the button to import a style and append to the existing sections" + "message": "追加導入的樣式到當前樣式" }, "importLabel": { - "message": "匯入", - "description": "Label for the button to import a style ('edit' page) or all styles ('manage' page)" + "message": "匯入" + }, + "importPreprocessor": { + "message": "使用 @preprocessor 的樣是在經典模式下無法運作。您可以將編輯器切換到 Usercss 模式:1) 開啟樣式管理程式,2) 啟用「做為 Usercss」對話框,3) 點擊「編寫新樣式」\n" + }, + "importPreprocessorTitle": { + "message": "@preprocessor 引起的潛在問題" }, "importReplaceLabel": { - "message": "覆蓋樣式", - "description": "Label for the button to import and overwrite current style" + "message": "覆蓋樣式" }, "importReplaceTooltip": { - "message": "棄用當前樣式內容并用導入樣式覆蓋", - "description": "Label for the button to import and overwrite current style" + "message": "棄用當前樣式內容并用導入樣式覆蓋" }, "importReportLegendAdded": { - "message": "已加入", - "description": "Text after the number of styles added in the report shown after importing styles" + "message": "已加入" }, "importReportLegendIdentical": { - "message": "已跳過相同的", - "description": "Text after the number of styles skipped due to being identical to the already installed ones in the report shown after importing styles" + "message": "已跳過相同的" }, "importReportLegendInvalid": { - "message": "已跳過無效的", - "description": "Text after the number of styles skipped due to being invalid (not a Stylus/Stylish backup file probably) in the report shown after importing styles" + "message": "已跳過無效的" }, "importReportLegendUpdatedBoth": { - "message": "後設資訊與程式碼均已更新", - "description": "Text after the number of styles updated entirely in the report shown after importing styles" + "message": "後設資訊與程式碼均已更新" }, "importReportLegendUpdatedCode": { - "message": "已更新的程式碼", - "description": "Text after the number of styles with updated code (meta info is unchanged) in the report shown after importing styles" + "message": "已更新的程式碼" }, "importReportLegendUpdatedMeta": { - "message": "已更新後設資訊", - "description": "Text after the number of styles with updated meta info like name/url in the report shown after importing styles" + "message": "已更新後設資訊" }, "importReportTitle": { - "message": "匯入樣式已完成", - "description": "Title of the report shown after importing styles" + "message": "匯入樣式已完成" }, "importReportUnchanged": { - "message": "沒有變更。", - "description": "Message in the report shown after importing styles" + "message": "沒有變更。" }, "importReportUndone": { - "message": "樣式已被復原", - "description": "Text after the number of styles reverted in the message box shown after undoing the import of styles" + "message": "樣式已被復原" }, "importReportUndoneTitle": { - "message": "匯入已被復原", - "description": "Title of the message box shown after undoing the import of styles" + "message": "匯入已被復原" }, "installButton": { - "message": "安裝樣式", - "description": "Label for install button" + "message": "安裝樣式" }, "installButtonInstalled": { - "message": "樣式已安裝", - "description": "Text displayed when the style is successfully installed" + "message": "樣式已安裝" }, "installButtonReinstall": { - "message": "重新安裝樣式", - "description": "Label for reinstall button" + "message": "重新安裝樣式" }, "installButtonUpdate": { - "message": "更新樣式", - "description": "Label for update button" + "message": "更新樣式" }, "installUpdate": { - "message": "安裝更新", - "description": "Label for the button to install an update for a single style" + "message": "安裝更新" }, "installUpdateFrom": { "message": "目前從 $url$ 更新樣式", - "description": "Label to describe where the style gets update", "placeholders": { "url": { "content": "$1" @@ -543,28 +478,31 @@ } }, "installUpdateFromLabel": { - "message": "檢查更新", - "description": "Label for the checkbox to save current URL for update check" + "message": "檢查更新" }, "license": { - "message": "授權條款", - "description": "Label for the license" + "message": "授權條款" }, "linkGetHelp": { - "message": "取得協助", - "description": "Homepage link text on the manage page e.g. https://add0n.com/stylus.html#features with chat/FAQ/intro/info" + "message": "取得協助" + }, + "linkGetShareStyles": { + "message": "取得並分享樣式" + }, + "linkGetShareStylesInfo": { + "message": "新的由社群經營的 userstyles.world 網站是由 userstyle 作者建立的,目的是取代 userstyles.org,該網站在過去一年中緩慢且反應遲鈍,許多作者都因此停止更新他們的樣式。" }, "linkGetStyles": { - "message": "取得樣式", - "description": "Help link text on the manage page e.g. https://userstyles.org" + "message": "取得樣式" + }, + "linkGetStylesInfo": { + "message": "此封存網站由 userstyle 社群成員為了備份緩慢且無回應的 userstyles.org 所建立。封存大概每一天會更新一次內容。" }, "linkTranslate": { - "message": "翻譯", - "description": "Transifex link text on the manage page" + "message": "翻譯" }, "linterCSSLintIncompatible": { "message": "CSSLint 不支援 $preprocessorname$ 預處理器", - "description": "The label to display when the preprocessor isn't compatible with CSSLint", "placeholders": { "preprocessorname": { "content": "$1" @@ -572,12 +510,10 @@ } }, "linterCSSLintSettings": { - "message": "(設定規則為:0 = 停用;1 = 警告;2 = 錯誤)", - "description": "CSSLint rule config values" + "message": "(設定規則為:0 = 停用;1 = 警告;2 = 錯誤)" }, "linterConfigPopupTitle": { "message": "設定 $linter$ 規則設定", - "description": "Stylelint or CSSLint popup header", "placeholders": { "linter": { "content": "$1" @@ -585,20 +521,16 @@ } }, "linterConfigTooltip": { - "message": "點選以設定此 linter", - "description": "Icon tooltip to indicate that it opens a popup with the selected linter configuration" + "message": "點選以設定此 linter" }, "linterInvalidConfigError": { - "message": "因為無效的設定所以未儲存:", - "description": "Invalid linter config will show a message followed by a list of invalid entries" + "message": "因為無效的設定所以未儲存:" }, "linterIssues": { - "message": "問題", - "description": "Label for the CSS linter issues block on the style edit page" + "message": "問題" }, "linterIssuesHelp": { "message": "這些問題被 $link$ 找到了:", - "description": "Help popup message for the selected CSS linter issues block on the style edit page", "placeholders": { "link": { "content": "$1" @@ -606,144 +538,93 @@ } }, "linterJSONError": { - "message": "無效的 JSON 格式", - "description": "Setting linter config with invalid JSON" + "message": "無效的 JSON 格式" }, "linterResetMessage": { - "message": "要復原意外的重設,在文字方塊按下 Ctrl-Z(或 Cmd-Z)", - "description": "Reset button tooltip to inform user on how to undo an accidental reset" + "message": "要復原意外的重設,在文字方塊按下 Ctrl-Z(或 Cmd-Z)" }, "linterRulesLink": { - "message": "見完整的規則清單", - "description": "Stylelint or CSSLint rules label added immediately before a link" + "message": "見完整的規則清單" }, "liveReloadError": { - "message": "觀看檔案時發生錯誤", - "description": "The label of live-reload error" + "message": "觀看檔案時發生錯誤" }, "liveReloadInstallHint": { - "message": "保持此分頁開啟以根據外部變更自動更新樣式。", - "description": "The label of live-reload feature" + "message": "保持此分頁開啟以根據外部變更自動更新樣式。" }, "liveReloadInstallHintFF": { - "message": "保持此分頁與原始分頁開啟以根據外部變更自動更新樣式。", - "description": "The extra hint of live-reload feature shown only for file:// URLs in Firefox" + "message": "保持此分頁與原始分頁開啟以根據外部變更自動更新樣式。" }, "liveReloadLabel": { - "message": "即時重新整理", - "description": "The label of live-reload feature" + "message": "即時重新整理" }, "manageFavicons": { - "message": "Favicons 要套用到的欄位", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Favicons 要套用到的欄位" }, "manageFaviconsGray": { - "message": "灰階淡出", - "description": "Label for the checkbox that toggles grayed out mode of applies-to favicons in the new UI on manage page" + "message": "灰階淡出" }, "manageFaviconsHelp": { - "message": "Stylus 使用外部服務 https://www.google.com/s2/favicons", - "description": "Label for the checkbox that toggles applies-to favicons in the new UI on manage page" + "message": "Stylus 使用外部服務 https://www.google.com/s2/favicons" }, "manageFilters": { - "message": "過濾器", - "description": "Label for filters container" + "message": "過濾器" }, "manageHeading": { - "message": "已安裝的樣式", - "description": "Heading for the manage page" + "message": "已安裝的樣式" }, "manageMaxTargets": { - "message": "已套用項目的數量", - "description": "Label for the numeric input box to limit max number of applies-to targets in the new UI on manage page" + "message": "已套用項目的數量" }, "manageNewStyleAsUsercss": { - "message": "做為 Usercss", - "description": "VERY SHORT label for the checkbox next to the 'Write new style' button in the style manager" + "message": "做為 Usercss" }, "manageNewUI": { - "message": "新的管理介面配置", - "description": "Label for the checkbox that toggles the new UI on manage page" + "message": "新的管理介面配置" }, "manageOnlyDisabled": { - "message": "僅已停用的樣式", - "description": "Checkbox to show only disabled styles" + "message": "僅已停用的樣式" }, "manageOnlyEnabled": { - "message": "只顯示已啟用的樣式", - "description": "Checkbox to show only enabled styles" + "message": "只顯示已啟用的樣式" }, "manageOnlyExternal": { - "message": "僅外部樣式", - "description": "Checkbox to show only externally installed styles i.e. updatable" + "message": "僅外部樣式" }, "manageOnlyLocal": { - "message": "僅本機建立的樣式", - "description": "Checkbox to show only locally created styles i.e. non-updatable" + "message": "僅本機建立的樣式" }, "manageOnlyLocalTooltip": { - "message": "(不是透過 userstyles.org 網頁安裝的樣式)", - "description": "Tooltip for the checkbox to show only locally created styles i.e. non-updatable" + "message": "(不是透過 userstyles.org 網頁安裝的樣式)" }, "manageOnlyNonUsercss": { - "message": "僅非 Usercss 樣式", - "description": "Checkbox to show only non-Usercss (standard) styles" + "message": "僅非 Usercss 樣式" }, "manageOnlyUpdates": { - "message": "僅有更新或是有問題的", - "description": "Checkbox to show only styles that have updates after check-all-styles-for-updates was performed" + "message": "僅有更新或是有問題的" }, "manageOnlyUsercss": { - "message": "僅 Usercss 樣式", - "description": "Checkbox to show only Usercss styles" + "message": "僅 Usercss 樣式" }, "menuShowBadge": { - "message": "顯示生效的樣式數目", - "description": "Label (must be very short) for the checkbox in the toolbar button context menu controlling toolbar badge text." + "message": "顯示生效的樣式數目" }, "meta_invalidCheckboxDefault": { - "message": "無效的 @var 勾選框:值必須為 0 或 1", - "description": "Error displayed when the value of @var checkbox is invalid" + "message": "無效的 @var 勾選框:值必須為 0 或 1" }, "meta_invalidColor": { "message": "無效的 @var 顏色:$color$ 不是顏色", - "description": "Error displayed when the value of @var color is invalid", "placeholders": { "color": { "content": "$1" } } }, + "meta_invalidNumber": { + "message": "預期為數字" + }, "meta_invalidRange": { "message": "無效的 @var $type$:值必須為數字或陣列", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMultipleUnits": { - "message": "無效的 @var $type$:定義了多個單位", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeTooManyValues": { - "message": "無效的 @var $type$:陣列包含太多項目", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeValue": { - "message": "無效的 @var $type$:在陣列中的項目必須為數字、字串或空值", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -752,16 +633,6 @@ }, "meta_invalidRangeDefault": { "message": "無效的 @var $type$:預設值為 null", - "description": "Error displayed when the value of @var range or @var number is invalid", - "placeholders": { - "type": { - "content": "$1" - } - } - }, - "meta_invalidRangeMin": { - "message": "無效的 @var $type$:預設值低於最低值", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -770,7 +641,22 @@ }, "meta_invalidRangeMax": { "message": "無效的 @var $type$:預設值大於最低值", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMin": { + "message": "無效的 @var $type$:預設值低於最低值", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeMultipleUnits": { + "message": "無效的 @var $type$:定義了多個單位", "placeholders": { "type": { "content": "$1" @@ -779,7 +665,14 @@ }, "meta_invalidRangeStep": { "message": "無效的 @var $type$:預設值為不是一個多步驟", - "description": "Error displayed when the value of @var range or @var number is invalid", + "placeholders": { + "type": { + "content": "$1" + } + } + }, + "meta_invalidRangeTooManyValues": { + "message": "無效的 @var $type$:陣列包含太多項目", "placeholders": { "type": { "content": "$1" @@ -788,7 +681,6 @@ }, "meta_invalidRangeUnits": { "message": "無效的 @var $type$:'$units$' 不是有效單位", - "description": "Error displayed when the value of @var range or @var number is invalid", "placeholders": { "type": { "content": "$1" @@ -798,37 +690,40 @@ } } }, - "meta_invalidSelect": { - "message": "無效的 @var 選擇:預設值必須為陣列或物件", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidRangeValue": { + "message": "無效的 @var $type$:在陣列中的項目必須為數字、字串或空值", + "placeholders": { + "type": { + "content": "$1" + } + } }, - "meta_invalidSelectValue": { - "message": "無效的 @var 選擇:在陣列/物件中的值必須為字串", - "description": "Error displayed when the value of @var select is invalid" + "meta_invalidSelect": { + "message": "無效的 @var 選擇:預設值必須為陣列或物件" }, "meta_invalidSelectEmptyOptions": { - "message": "無效的 @var 選擇:選項清單為空", - "description": "Error displayed when the value of @var select is invalid" + "message": "無效的 @var 選擇:選項清單為空" }, "meta_invalidSelectLabel": { - "message": "無效的 @var 選擇:選項標籤為空", - "description": "Error displayed when the value of @var select is invalid" + "message": "無效的 @var 選擇:選項標籤為空" }, "meta_invalidSelectMultipleDefaults": { - "message": "無效的 @var 選擇:定義了多個預設選項", - "description": "Error displayed when the value of @var select is invalid" + "message": "無效的 @var 選擇:定義了多個預設選項" }, "meta_invalidSelectNameDuplicated": { - "message": "無效的 @var 選擇:選項名稱重複", - "description": "Error displayed when the value of @var select is invalid" + "message": "無效的 @var 選擇:選項名稱重複" + }, + "meta_invalidSelectValue": { + "message": "無效的 @var 選擇:在陣列/物件中的值必須為字串" }, "meta_invalidSelectValueMismatch": { - "message": "無效的 @var 選擇:值不存在於選項清單中", - "description": "Error displayed when the value of @var select is invalid" + "message": "無效的 @var 選擇:值不存在於選項清單中" + }, + "meta_invalidString": { + "message": "預期為帶引號的字串" }, "meta_invalidURLProtocol": { "message": "無效的 URL 協定。僅允許 http 與 https:$protocol$", - "description": "Error displayed when the protocol of the URL is invalid", "placeholders": { "protocol": { "content": "$1" @@ -836,29 +731,13 @@ } }, "meta_invalidVersion": { - "message": "無效的版本號。值不符合 SemVer 模式:$version$", - "description": "Error displayed when @version is invalid", - "placeholders": { - "version": { - "content": "$1" - } - } - }, - "meta_invalidNumber": { - "message": "預期為數字", - "description": "Error displayed when the value is expected to be a number" - }, - "meta_invalidString": { - "message": "預期為帶引號的字串", - "description": "Error displayed when the value is expected to be a quoted string" + "message": "無效的版本號" }, "meta_invalidWord": { - "message": "預期為單字", - "description": "Error displayed when the value is expected to be a word" + "message": "預期為單字" }, "meta_missingChar": { "message": "預期字元:$chars$", - "description": "Error displayed when the value is expected to be some characters", "placeholders": { "chars": { "content": "$1" @@ -866,12 +745,10 @@ } }, "meta_missingEOT": { - "message": "預期為 EOT 資料", - "description": "Error displayed when the value is expected to be an EOT list" + "message": "預期為 EOT 資料" }, "meta_missingMandatory": { "message": "遺失必要的詮釋資料:$keys$", - "description": "Error displayed when mandatory keys are missing", "placeholders": { "keys": { "content": "$1" @@ -880,7 +757,6 @@ }, "meta_unknownJSONLiteral": { "message": "無效的 JSON:$literal$ 不是有效的 JSON 文字", - "description": "Error displayed when JSON value is invalid", "placeholders": { "literal": { "content": "$1" @@ -889,16 +765,33 @@ }, "meta_unknownMeta": { "message": "未知的詮釋資料:$key$", - "description": "Error displayed when unknown metadata is parsed", "placeholders": { "key": { "content": "$1" } } }, + "meta_unknownMetaTypo": { + "message": "也許是 @$keyOk$?未知的詮釋資料:@$keyErr$", + "placeholders": { + "keyErr": { + "content": "$1" + }, + "keyOk": { + "content": "$2" + } + } + }, + "meta_unknownPreprocessor": { + "message": "未知的 @preprocessor:$preprocessor$", + "placeholders": { + "preprocessor": { + "content": "$1" + } + } + }, "meta_unknownVarType": { "message": "未知的 @$varkey$ 類型:$vartype$", - "description": "Error displayed when unknown variable type is parsed", "placeholders": { "varkey": { "content": "$1" @@ -908,158 +801,137 @@ } } }, - "meta_unknownPreprocessor": { - "message": "未知的 @preprocessor:$preprocessor$", - "description": "Error displayed when unknown @preprocessor is parsed", - "placeholders": { - "preprocessor": { - "content": "$1" - } - } + "noFileToImport": { + "message": "要匯入您的樣式,您必須先匯出。" }, "noStylesForSite": { - "message": "目前網站沒有安裝任何樣式。", - "description": "Text displayed when no styles are installed for the current site" + "message": "目前網站沒有安裝任何樣式。" + }, + "numberedLine": { + "message": "行" }, "openManage": { - "message": "管理已安裝樣式", - "description": "Link to open the manage page." + "message": "管理已安裝樣式" }, "openOptions": { - "message": "選項", - "description": "Go to Options UI" + "message": "選項" }, "openStylesManager": { - "message": "開啟樣式管理員", - "description": "Label for the style maanger opener in the browser action context menu." + "message": "開啟樣式管理員" }, "optionsActions": { - "message": "動作", - "description": "" + "message": "動作" }, "optionsAdvanced": { - "message": "進階", - "description": "" + "message": "進階" }, "optionsAdvancedContextDelete": { - "message": "在編輯器的右鍵選單中加入「刪除」", - "description": "" + "message": "在編輯器的右鍵選單中加入「刪除」" }, "optionsAdvancedExposeIframes": { - "message": "透過 HTML[stylus-iframe] 公開 iframes", - "description": "" + "message": "透過 HTML[stylus-iframe] 公開 iframes" }, "optionsAdvancedExposeIframesNote": { - "message": "公開每個 iframe 中的頂級頁面網域。\n啟用編寫特別用於 iframe 的 CSS,如這個:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }", - "description": "Add attribute to iframe; make sure to include the double $$ in the css example, or the `$=` will be omitted in the displayed text." + "message": "公開每個 iframe 中的頂級頁面網域。\n啟用編寫特別用於 iframe 的 CSS,如這個:\nhtml[stylus-iframe$$=\"twitter.com\"] h1 { display:none }" }, "optionsAdvancedNewStyleAsUsercss": { - "message": "以 usercss 編寫新樣式", - "description": "" + "message": "以 usercss 編寫新樣式" + }, + "optionsAdvancedPatchCsp": { + "message": "修補 CSP 以允許樣式資源" + }, + "optionsAdvancedPatchCspNote": { + "message": "如果樣式包含無法在有嚴格 CSP內容安全策略)的網站上載入的圖片或字型,請啟用此選項。\n\n啟用此設定將會放寬 CSP 限制,允許基本的樣式內容載入。此選項僅適用於了解潛在的安全問題,且接受監視其允許內容責任的進階使用者。閱讀關於以 CSS 為基礎的攻擊來取得更多資訊。\n\n另外請注意,如果已經有另一個已安裝的附加元件先修改了網路回應,則無法保證此設定可起作用。" + }, + "optionsAdvancedStyleViaXhr": { + "message": "即時注入模式" + }, + "optionsAdvancedStyleViaXhrNote": { + "message": "如果在瀏覽時遇到無樣式內容 (FOUC) 的閃爍(在深色主題下尤其明顯),請啟用此選項。\n\n技術上的原因是 Chrome/Chromium 通常以無意義的嘗試延遲擴充功能的非同步通訊來改善網頁的載入速度,這可能會導致樣式較慢才被套用。為了避免這種狀況,因為擴充功能無法使用同步 API,Stylus 提供了此選項以利用「已棄用」的同步 XMLHttpRequest 網路 API 來擷取可套用的樣式。應該不會有任何有害的影響,因為在從伺服器下載頁面的同時,請求也會在幾毫秒內完成。\n\n儘管如此,Chromium 還是會在開發者工具的主控台中顯示警告。右鍵點擊警告,然後隱藏它們,這樣警告就不會再顯示。" }, "optionsBadgeDisabled": { - "message": "停用時的背景色彩", - "description": "" + "message": "停用時的背景色彩" }, "optionsBadgeNormal": { - "message": "背景色彩", - "description": "" + "message": "背景色彩" }, "optionsCheck": { - "message": "更新樣式", - "description": "" + "message": "更新樣式" }, "optionsCheckUpdate": { - "message": "檢查並安裝所有可用的更新", - "description": "" + "message": "檢查並安裝所有可用的更新" }, "optionsCustomizeBadge": { - "message": "在工具列圖示上的徽章", - "description": "" + "message": "在工具列圖示上的徽章" }, "optionsCustomizeIcon": { - "message": "工具列圖示", - "description": "" + "message": "工具列圖示" }, "optionsCustomizePopup": { - "message": "彈出式視窗", - "description": "" - }, - "optionsCustomizeUpdate": { - "message": "更新", - "description": "" + "message": "彈出式視窗" }, "optionsCustomizeSync": { - "message": "同步到雲端", - "description": "" + "message": "同步到雲端" + }, + "optionsCustomizeUpdate": { + "message": "更新" }, "optionsHeading": { - "message": "選項", - "description": "Heading for options section on manage page." + "message": "選項" }, "optionsIconDark": { - "message": "暗色瀏覽器主題", - "description": "" + "message": "暗色瀏覽器主題" }, "optionsIconLight": { - "message": "亮色瀏覽器主題", - "description": "" + "message": "亮色瀏覽器主題" }, "optionsOpen": { - "message": "開啟", - "description": "" + "message": "開啟" }, "optionsOpenManager": { - "message": "管理樣式", - "description": "" + "message": "管理樣式" }, "optionsPopupWidth": { - "message": "彈出視窗寬度(以像素計)", - "description": "" + "message": "彈出視窗寬度(以像素計)" }, "optionsReset": { - "message": "重設選項為預設值", - "description": "" + "message": "重設選項為預設值" }, "optionsResetButton": { - "message": "重設選項", - "description": "" + "message": "重設選項" + }, + "optionsStylusThemes": { + "message": "尋找 Sytlus UI 佈景主題" }, "optionsSubheading": { - "message": "更多選項", - "description": "Subheading for options section on manage page." - }, - "optionsUpdateImportNote": { - "message": "當從舊版本或是從 Stylish 匯入樣式備份時,在樣式管理員中手動進行一次更新檢查,以確保所有樣式都被更新。", - "description": "" - }, - "optionsUpdateInterval": { - "message": "使用者樣式自動更新間隔(以小時計,指定為 0 以停用)", - "description": "" - }, - "optionsSyncNone": { - "message": "無", - "description": "" + "message": "更多選項" }, "optionsSyncConnect": { - "message": "連線", - "description": "" + "message": "連線" }, "optionsSyncDisconnect": { - "message": "斷線", - "description": "" - }, - "optionsSyncSyncNow": { - "message": "立刻同步", - "description": "" + "message": "斷線" }, "optionsSyncLogin": { - "message": "登入", - "description": "" + "message": "登入" + }, + "optionsSyncNone": { + "message": "無" + }, + "optionsSyncStatusConnected": { + "message": "已連線" + }, + "optionsSyncStatusConnecting": { + "message": "正在連線……" + }, + "optionsSyncStatusDisconnected": { + "message": "已斷線" + }, + "optionsSyncStatusDisconnecting": { + "message": "正在斷線……" }, "optionsSyncStatusPull": { "message": "正在拉取樣式 $total$ 中的 $loaded$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1071,7 +943,6 @@ }, "optionsSyncStatusPush": { "message": "正在拉取樣式 $total$ 中的 $loaded$", - "description": "", "placeholders": { "loaded": { "content": "$1" @@ -1081,265 +952,257 @@ } } }, + "optionsSyncStatusRelogin": { + "message": "工作階段已過期,請再次登入。" + }, "optionsSyncStatusSyncing": { - "message": "正在同步……", - "description": "" + "message": "正在同步……" }, - "optionsSyncStatusConnecting": { - "message": "正在連線……", - "description": "" + "optionsSyncSyncNow": { + "message": "立刻同步" }, - "optionsSyncStatusConnected": { - "message": "已連線", - "description": "" + "optionsUpdateImportNote": { + "message": "當從舊版本或是從 Stylish 匯入樣式備份時,在樣式管理員中手動進行一次更新檢查,以確保所有樣式都被更新。" }, - "optionsSyncStatusDisconnecting": { - "message": "正在斷線……", - "description": "" + "optionsUpdateInterval": { + "message": "使用者樣式自動更新間隔(以小時計,指定為 0 以停用)" }, - "optionsSyncStatusDisconnected": { - "message": "已斷線", - "description": "" + "overwriteFileExport": { + "message": "您想要覆寫既有的檔案嗎?" }, "paginationCurrent": { - "message": "目前頁面", - "description": "Tooltip for the current page index in search results" + "message": "目前頁面" }, "paginationEstimated": { - "message": "估計頁數", - "description": "Tooltip for the total page count in search results" + "message": "估計頁數" }, "paginationNext": { - "message": "下一頁", - "description": "Tooltip for the '->' (next page) button in search results" + "message": "下一頁" }, "paginationPrevious": { - "message": "上一頁", - "description": "Tooltip for the '<-' button in search results" + "message": "上一頁" }, "paginationTotal": { - "message": "總頁面", - "description": "" + "message": "總頁面" }, "parseUsercssError": { - "message": "Stylus 解析 usercss 失敗:", - "description": "The error message to show when stylus failed to parse usercss" + "message": "Stylus 解析 usercss 失敗:" }, "popupAutoResort": { - "message": "復原在切換後的彈出式視窗樣式", - "description": "Label for the checkbox controlling popup resorting." + "message": "復原在切換後的彈出式視窗樣式" }, "popupBorders": { - "message": "在邊邊新增白色邊框", - "description": "" + "message": "在邊邊新增白色邊框" }, "popupBordersTooltip": { - "message": "對新 Chrome 中的暗色主題很有用,因為其不再繪製邊框", - "description": "" + "message": "對新 Chrome 中的暗色主題很有用,因為其不再繪製邊框" }, "popupHotkeysInfo": { - "message": "<1>-<9>、<0>,數字鍵盤也可以 — 切換第 N 個樣式(0 是切換到第 10 個)\n- 切換以該字母為名稱第一個字的樣式\n 開啟編輯器而非切換\n 啟用列出的樣式\n 停用列出的樣式\n 與 <`> (倒引號)— 切換初始啟用的樣式;不要在彈出式視窗開啟時套用到後來啟用的樣式,這樣您就可以在測試完後復原初始選擇:僅停用全部,然後切換。 \n更多資訊請見 wiki", - "description": "NOTE1: preserve < and > symbols so that is styled as a key.\nNOTE2: the last line is displayed as a text of the link to the wiki page.\nNOTE3: this is the list of hotkeys displayed after clicking the right edge of the extension popup." + "message": "<1>-<9>、<0>,數字鍵盤也可以 — 切換第 N 個樣式(0 是切換到第 10 個)\n- 切換以該字母為名稱第一個字的樣式\n 開啟編輯器而非切換\n 啟用列出的樣式\n 停用列出的樣式\n 與 <`> (倒引號)— 切換初始啟用的樣式;不要在彈出式視窗開啟時套用到後來啟用的樣式,這樣您就可以在測試完後復原初始選擇:僅停用全部,然後切換。 \n更多資訊請見 wiki" }, "popupHotkeysTooltip": { - "message": "點選以檢視可用的快速鍵", - "description": "Tooltip displayed when hovering the right edge of the extension popup" + "message": "點選以檢視可用的快速鍵" }, "popupManageTooltip": { - "message": "Shift + 點選或右鍵 + 點選以在管理員中開啟目前頁面可用的樣式", - "description": "Tooltip for the 'Manage' button in the popup." + "message": "Shift + 點選或右鍵 + 點選以在管理員中開啟目前頁面可用的樣式" }, "popupMenuButtonTooltip": { - "message": "動作選單", - "description": "Tooltip for menu button in popup." + "message": "動作選單" + }, + "popupOpenEditInPopup": { + "message": "使用簡易視窗(無多功能方框)" }, "popupOpenEditInWindow": { - "message": "在新視窗開啟編輯器", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "在新視窗開啟編輯器" }, "popupOpenEditInWindowTooltip": { - "message": "也透過從瀏覽器視窗分離編輯器分頁來啟用,\n並透過將單獨的編輯器分頁附加到其他視窗中來停用。", - "description": "Label for the checkbox controlling 'edit' action behavior in the popup." + "message": "也透過從瀏覽器視窗分離編輯器分頁來啟用,\n並透過將單獨的編輯器分頁附加到其他視窗中來停用。" }, "popupStylesFirst": { - "message": "在工具欄按鈕命令行前列出樣式", - "description": "Label for the checkbox controlling section order in the popup." + "message": "在工具欄按鈕命令行前列出樣式" }, "prefShowBadge": { - "message": "在工具欄按鈕上顯示當前網站已生效的樣式表數目。", - "description": "Label for the checkbox controlling toolbar badge text." + "message": "在工具欄按鈕上顯示當前網站已生效的樣式表數目。" }, "previewLabel": { - "message": "即時預覽", - "description": "Label for the checkbox in style editor to enable live preview while editing." + "message": "即時預覽" }, "previewTooltip": { - "message": "不儲存而暫時套用變更。\n儲存樣式以永久變更。", - "description": "Tooltip for the checkbox in style editor to enable live preview while editing." + "message": "不儲存而暫時套用變更。\n儲存樣式以永久變更。" + }, + "publish": { + "message": "發布" + }, + "publishPush": { + "message": "推送更新" + }, + "publishReconnect": { + "message": "嘗試斷線後再次發布" + }, + "publishRetry": { + "message": "Stylus 仍在嘗試發布此樣式,但如果您沒有看到身份驗證活動或彈出式視窗。立刻重試?" + }, + "publishStyle": { + "message": "發布樣式" + }, + "publishUsw": { + "message": "使用 " + }, + "readingStyles": { + "message": "正在讀取樣式……" }, "reload": { - "message": "重新載入 Stylus 附加元件", - "description": "Context menu reload" + "message": "重新載入 Stylus 附加元件" }, "replace": { - "message": "取代", - "description": "Label before the replace input field in the editor shown on Ctrl-H" + "message": "取代" }, "replaceAll": { - "message": "取代所有", - "description": "Label before the replace input field in the editor shown on 'replaceAll' hotkey" + "message": "取代所有" }, "replaceWith": { - "message": "取代為", - "description": "Label before the replace-with input field in the editor shown on Ctrl-H etc." + "message": "取代為" }, "retrieveBckp": { - "message": "匯入樣式", - "description": "" + "message": "匯入樣式" + }, + "retrieveDropboxSync": { + "message": "Dropbox 匯入" }, "search": { - "message": "搜尋", - "description": "Label before the search input field in the editor shown on Ctrl-F" + "message": "搜尋" }, "searchCaseSensitive": { - "message": "區分大小寫", - "description": "Tooltip for the 'Aa' icon that enables case-sensitive search in the editor shown on Ctrl-F" + "message": "區分大小寫" + }, + "searchGlobalStyles": { + "message": "同時搜尋全域樣式" }, "searchNumberOfResults": { - "message": "符合數量", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "符合數量" }, "searchNumberOfResults2": { - "message": "在程式碼與套用到的值的符合數量", - "description": "Tooltip for the number of found search results in the editor shown on Ctrl-F" + "message": "在程式碼與套用到的值的符合數量" }, "searchRegexp": { - "message": "使用/re/語法正規表示式搜尋", - "description": "Label after the search input field in the editor shown on Ctrl-F" + "message": "使用/re/語法正規表示式搜尋" }, "searchResultInstallCount": { - "message": "總安裝", - "description": "Text for label that shows the number of times a search result was installed" + "message": "總安裝" }, "searchResultNoneFound": { - "message": "找不到此頁面相關的樣式", - "description": "Error text in the popup when inline search didn't find any site-specific styles" + "message": "找不到此頁面相關的樣式" + }, + "searchResultNotMatching": { + "message": "樣式已安裝,但不會套用到目前網站的 URL。" + }, + "searchResultNotMatchingNote": { + "message": "嘗試要求此使用者樣式的作者新增 URL。\n\n您也可以在管理程式中開啟樣式,然後自行編輯,\n但請注意,這樣做會停用此樣式的自動更新。" }, "searchResultRating": { - "message": "評價", - "description": "Text for label that shows the search result's rating" + "message": "評價" }, "searchResultUpdated": { - "message": "已更新", - "description": "Text for label that shows the search result's last update date" + "message": "已更新" }, "searchResultWeeklyCount": { - "message": "每週安裝", - "description": "Text for label that shows the number of times a search result was installed during last week" + "message": "每週安裝" }, - "searchStyles": { - "message": "搜尋內容", - "description": "Label for the search filter textbox on the Manage styles page" + "searchStyleQueryHint": { + "message": "搜尋樣式名稱時是區分大小寫的:\nsome words - 以任意順序搜尋所有文字\n\"some phrase\" - 精確符合引號內的詞語\n2020 - 如此年份顯示在2020年更新的樣式" + }, + "searchStylesAll": { + "message": "全部" + }, + "searchStylesCode": { + "message": "CSS 程式碼" }, "searchStylesHelp": { - "message": " 鍵讓焦點置於搜尋欄。\n純文字:搜尋名稱、程式碼、首頁 URL與其適用的網頁。少於 3 個字母的單字會被忽略。\n符合完整 URL 的樣式:使用前綴搜尋 ,例如 \n正規表達式:包含斜線與旗標,例如 \n精確字詞:用英文雙引號包裝查詢,例如 <\".header ~ div\">", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the search input field on the Manage styles page" + "message": " 或 鍵可將焦點置於搜尋欄。\n預設的模式為純文字搜尋,以任意順序搜尋所有以空格分隔的詞語。\n精確字詞:將字詞以雙引號包起來,例如 <\".header ~ div\">\n正規表達式:包含斜線與標誌,如 \n範圍選擇器中的「按 URL」:尋找適用於完全指定 URL 的樣式,如 https://www.example.org/\n範圍選擇器中的「詮釋資料」:搜尋名稱、「套用至」說明、安裝 URL、更新 URL 與整個 usercss 樣式的詮釋資料區塊。" + }, + "searchStylesMatchUrl": { + "message": "按 URL" + }, + "searchStylesMeta": { + "message": "詮釋資料" + }, + "searchStylesName": { + "message": "名稱" }, "sectionAdd": { - "message": "再加入一個樣式段", - "description": "Label for the button to add a section" + "message": "再加入一個樣式段" }, "sectionCode": { - "message": "代碼", - "description": "Label for the code for a section" + "message": "代碼" }, "sectionRemove": { - "message": "移除樣式段", - "description": "Label for the button to remove a section" + "message": "移除樣式段" }, "sectionRestore": { - "message": "復原已移除的部份", - "description": "Label for the button to restore a removed section" + "message": "復原已移除的部份" + }, + "sections": { + "message": "樣式段" }, "shortcuts": { - "message": "快速鍵", - "description": "Go to shortcut configuration" + "message": "快速鍵" }, "shortcutsNote": { - "message": "自訂鍵盤快速鍵", - "description": "" + "message": "自訂鍵盤快速鍵" }, "sortDateNewestFirst": { - "message": "最新的優先", - "description": "Text added to indicate that sorting a date would add the newest entries at the top" + "message": "最新的優先" }, "sortDateOldestFirst": { - "message": "最舊的優先", - "description": "Text added to indicate that sorting a date would add the oldest entries at the top" + "message": "最舊的優先" }, "sortLabel": { - "message": "選取適用於已安裝樣式的排序方式", - "description": "Title on the sort select to indicate it is used for sorting entries" + "message": "選取適用於已安裝樣式的排序方式" }, "sortLabelTitleAsc": { - "message": "標題遞增", - "description": "Text added to option group to indicate a block of options that apply a title ascending (A to Z) sort" + "message": "標題遞增" }, "sortLabelTitleDesc": { - "message": "標題遞減", - "description": "Text added to option group to indicate a block of options that apply a title descending (Z to A) sort" + "message": "標題遞減" }, "sortStylesHelp": { - "message": "從下拉選單中選取要套用於已安裝項目的排序類型。預設使用標題遞增排序(A 到 Z)。「標題遞減」則會套用遞減排序(Z 到 A)。\n還有其他的排序方式。您可以想像對一個多欄的表格進行排序,並且每次選取(加號之間)都代表了一欄或一組。\n舉例來說,若設定為「啟用(第一)+標題」,將會把所有已啟用的項目都排列在頂部,然後再以標題遞增(A 到 Z)的順序來分別套用到已啟用與已停用的項目。", - "description": "Text in the minihelp displayed when clicking (i) icon to the right of the sort input field on the Manage styles page" + "message": "從下拉選單中選取要套用於已安裝項目的排序類型。預設使用標題遞增排序(A 到 Z)。「標題遞減」則會套用遞減排序(Z 到 A)。\n還有其他的排序方式。您可以想像對一個多欄的表格進行排序,並且每次選取(加號之間)都代表了一欄或一組。\n舉例來說,若設定為「啟用(第一)+標題」,將會把所有已啟用的項目都排列在頂部,然後再以標題遞增(A 到 Z)的順序來分別套用到已啟用與已停用的項目。" }, "sortStylesHelpTitle": { - "message": "排序內容", - "description": "Label for the sort info popup on the Manage styles page" + "message": "排序內容" }, "styleBadRegexp": { - "message": "正規表示式無效。", - "description": "Validation message for a bad regexp in a style" + "message": "正規表示式無效。" }, "styleBeautify": { - "message": "美化", - "description": "Label for the CSS-beautifier button on the edit style page" + "message": "美化" }, "styleBeautifyHint": { - "message": "提示:右鍵點選「美化」按鈕或使用下面定義的鍵盤快捷鍵來美化而不顯示此面板", - "description": "Hint shown inside the CSS-beautifier panel" + "message": "提示:右鍵點選「美化」按鈕或使用下面定義的鍵盤快捷鍵來美化而不顯示此面板" }, "styleBeautifyIndentConditional": { - "message": "縮排 @media, @supports", - "description": "CSS-beautifier option" + "message": "縮排 @media, @supports" }, "styleBeautifyPreserveNewlines": { - "message": "保留新行", - "description": "CSS-beautifier option" + "message": "保留新行" }, "styleCancelEditLabel": { - "message": "返回到管理頁面", - "description": "Label for cancel button for style editing" + "message": "返回到管理頁面" }, "styleChangesNotSaved": { - "message": "你已經修改了此樣式,但尚未保存。", - "description": "Text for the prompt when changes are made to a style and the user tries to leave without saving" + "message": "你已經修改了此樣式,但尚未保存。" }, "styleEnabledLabel": { - "message": "已啟用", - "description": "Label for the enabled state of styles" + "message": "已啟用" }, "styleFromMozillaFormatError": { - "message": "從 Mozilla 格式匯入失敗", - "description": "Label for the import error" + "message": "從 Mozilla 格式匯入失敗" }, "styleFromMozillaFormatPrompt": { - "message": "貼上 Mozilla 格式代碼", - "description": "Prompt in the dialog displayed after clicking 'Import from Mozilla format' button" + "message": "貼上 Mozilla 格式代碼" }, "styleInstall": { "message": "安裝 '$stylename$' 到 Stylus ?", - "description": "Confirmation when installing a style", "placeholders": { "stylename": { "content": "$1" @@ -1348,7 +1211,6 @@ }, "styleInstallFailed": { "message": "安裝使用者樣式失敗!\n$error$", - "description": "Warning when installation failed", "placeholders": { "error": { "content": "$1" @@ -1357,86 +1219,71 @@ }, "styleInstallOverwrite": { "message": "「$stylename$」已安裝。要覆寫嗎?\n版本:$oldVersion$→$newVersion$", - "description": "Confirmation when re-installing a style", "placeholders": { - "stylename": { - "content": "$1" - }, "newVersion": { "content": "$3" }, "oldVersion": { "content": "$2" + }, + "stylename": { + "content": "$1" } } }, "styleMissingName": { - "message": "輸入名稱", - "description": "Error displayed when user saves without providing a name" + "message": "輸入名稱" }, "styleMozillaFormatHeading": { - "message": "Mozilla格式", - "description": "Heading for the section with buttons to import/export Mozilla format of the style" + "message": "Mozilla格式" + }, + "styleName": { + "message": "樣式名稱" }, "styleNotAppliedRegexpProblemTooltip": { - "message": "因為不正確的 'regexp()' 使用導致未套用", - "description": "Tooltip in the popup for styles that were not applied at all" + "message": "因為不正確的 'regexp()' 使用導致未套用" }, "styleRegexpInvalidExplanation": { - "message": "部份 'regexp()' 規則可能不再能被編譯。", - "description": "" + "message": "部份 'regexp()' 規則可能不再能被編譯。" }, "styleRegexpPartialExplanation": { - "message": "這個樣式使用部份符合的正規表示式,違反了 CSS4 @document 規範,其需要完整的 URL 符合。授影響的 CSS 不會討用在頁面上。這個樣式由 Chrome 版 Stylish 所建立,其在早期版本不正確地檢查 'regexp()' 規則(已知的臭蟲)。", - "description": "" + "message": "這個樣式使用部份符合的正規表示式,違反了 CSS4 @document 規範,其需要完整的 URL 符合。授影響的 CSS 不會討用在頁面上。這個樣式由 Chrome 版 Stylish 所建立,其在早期版本不正確地檢查 'regexp()' 規則(已知的臭蟲)。" }, "styleRegexpProblemTooltip": { - "message": "因為不正確的 'regexp()' 使用導致未套用的樣式段數量", - "description": "Tooltip in the popup for styles that were applied only partially" + "message": "因為不正確的 'regexp()' 使用導致未套用的樣式段數量" }, "styleRegexpTestButton": { - "message": "正規表示式測試", - "description": "RegExp test button label in the editor shown when applies-to list has a regexp value" + "message": "正規表示式測試" }, "styleRegexpTestFull": { - "message": "符合的分頁", - "description": "RegExp test report: label for the fully matching expressions" + "message": "符合的分頁" }, "styleRegexpTestInvalid": { - "message": "已跳過無效的正規表示式", - "description": "RegExp test report: label for the invalid expressions" + "message": "已跳過無效的正規表示式" }, "styleRegexpTestNone": { - "message": "沒有符合的分頁", - "description": "RegExp test report: label for expressions that didn't match any tabs" + "message": "沒有符合的分頁" }, "styleRegexpTestNote": { - "message": "注意:使用單個 \\ 來在正規表示式的輸入欄位中逃脫,其將會根據在 CSS 中的引用字串的規定,自動在樣式代碼中轉換為 \\\\。", - "description": "RegExp test report: a note displayed at the bottom of the dialog" + "message": "注意:使用單個 \\ 來在正規表示式的輸入欄位中逃脫,其將會根據在 CSS 中的引用字串的規定,自動在樣式代碼中轉換為 \\\\。" }, "styleRegexpTestPartial": { - "message": "不完全符合,因而跳過", - "description": "RegExp test report: label for the partially matching expressions" + "message": "不完全符合,因而跳過" }, "styleRegexpTestTitle": { - "message": "符合的已開啟分頁清單(在 URL 上點選以將焦點轉移至它的分頁)", - "description": "RegExp test report: title of the report" + "message": "符合的已開啟分頁清單(在 URL 上點選以將焦點轉移至它的分頁)" }, "styleSaveLabel": { - "message": "儲存", - "description": "Label for save button for style editing" + "message": "儲存" }, "styleToMozillaFormatHelp": { - "message": "Mozilla格式的樣式代碼能在火狐版Stylus使用,也可以提交至 userstyles.org 。", - "description": "Help info for the Mozilla format header section that converts the code to/from Mozilla format" + "message": "Mozilla格式的樣式代碼能在火狐版Stylus使用,也可以提交至 userstyles.org 。" }, "styleToMozillaFormatTitle": { - "message": "Mozilla格式樣式表", - "description": "Title of the popup with the style code in Mozilla format, shown after pressing the Export button on Edit style page" + "message": "Mozilla格式樣式表" }, "styleUpdate": { "message": "你確定你要更新 '$stylename$' ?", - "description": "Confirmation when updating a style", "placeholders": { "stylename": { "content": "$1" @@ -1444,72 +1291,67 @@ } }, "styleUpdateDiscardChanges": { - "message": "樣式已在編輯器外變更。您想要重新載入樣式嗎?", - "description": "Confirmation to update the style in the editor" + "message": "樣式已在編輯器外變更。您想要重新載入樣式嗎?" }, "stylusUnavailableForURL": { - "message": "Stylus 不能在諸如此類的網頁上生效。", - "description": "Note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "Stylus 不能在諸如此類的網頁上生效。" }, "stylusUnavailableForURLdetails": { - "message": "作為安全措施,瀏覽器禁止擴充套件影響其內建頁面(如 chrome://version、截至 Chrome 61 為止的新分頁、about:addons 以及其他頁面)以及其他擴充套件的頁面。每個瀏覽器也都限制對它們自己的擴充套件庫的存取(如 Chrome 線上應用程式商店或是 Firefox 附加元件庫等)。", - "description": "Sub-note in the toolbar pop-up when on a URL Stylus can't affect" + "message": "作為安全措施,瀏覽器禁止擴充套件影響其內建頁面(如 chrome://version、截至 Chrome 61 為止的新分頁、about:addons 以及其他頁面)以及其他擴充套件的頁面。每個瀏覽器也都限制對它們自己的擴充套件庫的存取(如 Chrome 線上應用程式商店或是 Firefox 附加元件庫等)。" + }, + "syncDropboxDeprecated": { + "message": "Dropbox 匯入/匯出已被選項頁面中的更進階的樣式同步所取代。" + }, + "syncDropboxStyles": { + "message": "Dropbox 匯出" + }, + "syncError": { + "message": "同步失敗" + }, + "syncErrorRelogin": { + "message": "同步失敗。\n重是在 Stylus 選項重新登入:\n先點擊「斷線」,然後「連線」。" }, "syncStorageErrorSaving": { - "message": "無法儲存值。嘗試減少文字量。", - "description": "Displayed when trying to save an excessively big value via storage.sync API" + "message": "無法儲存值。嘗試減少文字量。" }, "toggleStyle": { - "message": "切換樣式", - "description": "Label for the checkbox to enable/disable a style" + "message": "切換樣式" }, "undo": { - "message": "還原", - "description": "Button label" + "message": "還原" }, "undoGlobal": { - "message": "還原(全域)", - "description": "CSS-beautify global Undo button label" + "message": "還原(全域)" }, "unreachableAMO": { - "message": "Firefox 禁止存取頁面。", - "description": "Note in the popup displayed when opened on addons.mozilla.org" + "message": "Firefox 禁止存取頁面。" }, "unreachableAMOHint": { - "message": "要允許存取,開啟 ,在清單上點選右鍵,點選「新增」,然後再點選「布林」,貼上 並點選確定→→確定,然後重新整理 頁面。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintNewFF": { - "message": "在 Firefox 60 或更新的版本中,您也必須將 AMO 的網域從 中的 移除。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox >= 59" - }, - "unreachableAMOHintOldFF": { - "message": "僅 Firefox 59 或更新版本才能讓您設定允許 WebExtensions 在如同這個一樣的有 CSP 保護的頁面上新增樣式元素。", - "description": "Note in the popup when opened on addons.mozilla.org in Firefox < 59" + "message": "要允許存取,開啟 ,在清單上點選右鍵,點選「新增」,然後再點選「布林」,貼上 並點選確定→→確定,然後重新整理 頁面。" }, "unreachableContentScript": { - "message": "無法與頁面通訊。嘗試重新載入分頁。", - "description": "Note in the toolbar popup usually on file:// URLs after [re]loading Stylus" + "message": "無法與頁面通訊。嘗試重新載入分頁。" }, "unreachableFileHint": { - "message": "Stylus 僅在您於 chrome://extensions 啟用了 Stylus 擴充套件中對應的勾選框時才能存取 file:// 的 URL。", - "description": "Note in the toolbar popup for file:// URLs" + "message": "Stylus 僅在您於 chrome://extensions 啟用了 Stylus 擴充套件中對應的勾選框時才能存取 file:// 的 URL。" }, - "InaccessibleFileHint": { - "message": "Stylus 無法存取某些檔案類型(如 PDF 與 JSON 檔案)。", - "description": "Note in the toolbar popup for some file types that cannot be accessed" + "unreachableMozSiteHint": { + "message": "在 Firefox 60 或更新版本上,您必須將此網域從位於 設定值中刪除。" + }, + "unreachableMozSiteHintOldFF": { + "message": "僅 Firefox 59 或更新版本上可以設定為允許 WebExtension 在受 CSP 保護的網站(例如此網站)上新增樣式。" + }, + "unzipStyles": { + "message": "正在解壓縮樣式……" }, "updateAllCheckSucceededNoUpdate": { - "message": "樣式都是最新的。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "樣式都是最新的。" }, "updateAllCheckSucceededSomeEdited": { - "message": "一些可更新的樣式不會檢查以避免遺失可能有的本機編輯。更新可以強制獨立檢查,或是對所有樣式都執行檢查(本機編輯將會被覆寫)。", - "description": "Text that displays when an update all check completed and no updates are available" + "message": "一些可更新的樣式不會檢查以避免遺失可能有的本機編輯。更新可以強制獨立檢查,或是對所有樣式都執行檢查(本機編輯將會被覆寫)。" }, "updateCheckFailBadResponseCode": { "message": "更新失敗: 伺服器傳回代碼 $code$。", - "description": "Text that displays when an update check failed because the response code indicates an error", "placeholders": { "code": { "content": "$1" @@ -1517,127 +1359,63 @@ } }, "updateCheckFailServerUnreachable": { - "message": "更新失敗: 無法訪問伺服器。", - "description": "Text that displays when an update check failed because the update server is unreachable" + "message": "更新失敗: 無法訪問伺服器。" }, "updateCheckHistory": { - "message": "更新檢查的歷史", - "description": "" + "message": "更新檢查的歷史" }, "updateCheckManualUpdateForce": { - "message": "安裝更新(本機編輯將會被覆寫)", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "安裝更新(本機編輯將會被覆寫)" }, "updateCheckManualUpdateHint": { - "message": "強制更新覆蓋任何本機編輯。", - "description": "Additional text displayed when an update check skipped updating the style to avoid losing local modifications" + "message": "強制更新覆蓋任何本機編輯。" }, "updateCheckSkippedLocallyEdited": { - "message": "這個樣式已在本機編輯。", - "description": "Text that displays when an update check skipped updating the style to avoid losing local modifications" + "message": "這個樣式已在本機編輯。" }, "updateCheckSkippedMaybeLocallyEdited": { - "message": "這個樣式可能在本機被編輯過。", - "description": "Text that displays when an update check skipped updating the style to avoid losing possible local modifications" + "message": "這個樣式可能在本機被編輯過。" }, "updateCheckSucceededNoUpdate": { - "message": "樣式已是最新的。", - "description": "Text that displays when an update check completed and no update is available" + "message": "樣式已是最新的。" }, "updateCompleted": { - "message": "更新完成。", - "description": "Text that displays when an update completed" + "message": "更新完成。" }, "updatesCurrentlyInstalled": { - "message": "更新已安裝的:", - "description": "Text that displays when an update is installed on options page. Followed by the number of currently installed updates." - }, - "usercssAvoidOverwriting": { - "message": "請變更 @name 或 @namespace 的值以避免覆寫既有的樣式。", - "description": "Shown in a message box when attempting to save a new Usercss style that would overwrite an existing one." - }, - "usercssConfigIncomplete": { - "message": "在設定對話框顯示後,樣式已更新或刪除。這個變數將不會儲存,以避免損毀樣式的詮釋資料。", - "description": "" - }, - "usercssEditorNamePlaceholder": { - "message": "在程式碼中指定 @name", - "description": "Placeholder text for the empty name input field when creating a new Usercss style" - }, - "usercssReplaceTemplateConfirmation": { - "message": "為新的 Usercss 樣式取代預設的範本為目前的程式碼?", - "description": "" - }, - "usercssReplaceTemplateName": { - "message": "清空 @name 取代目前範本", - "description": "The text shown after @name when creating a new Usercss style" - }, - "usercssReplaceTemplateSectionBody": { - "message": "在此插入程式碼……", - "description": "The code placeholder comment in a new style created by clicking 'Write style' in the popup" - }, - "versionInvalidOlder": { - "message": "版本舊於已安裝的樣式。", - "description": "Displayed when the version of style is older than the installed one" - }, - "writeStyleFor": { - "message": "編寫樣式給:", - "description": "Label for toolbar pop-up that precedes the links to write a new style" - }, - "writeStyleForURL": { - "message": "此網址", - "description": "Text for link in toolbar pop-up to write a new style for the current URL" - }, - "syncDropboxStyles": { - "message": "Dropbox 匯出", - "description": "" - }, - "syncDropboxDeprecated": { - "message": "Dropbox 匯入/匯出已被選項頁面中的更進階的樣式同步所取代。", - "description": "" - }, - "retrieveDropboxSync": { - "message": "Dropbox 匯入", - "description": "" - }, - "overwriteFileExport": { - "message": "您想要覆寫既有的檔案嗎?", - "description": "" - }, - "exportSavedSuccess": { - "message": "檔案儲存成功", - "description": "" - }, - "noFileToImport": { - "message": "要匯入您的樣式,您必須先匯出。", - "description": "" - }, - "connectingDropbox": { - "message": "正在連線至 Dropbox……", - "description": "" - }, - "connectingDropboxNotAllowed": { - "message": "連線到 Dropbox 僅在直接從 webstore 安裝的應用程式中可用", - "description": "" - }, - "gettingStyles": { - "message": "正在取得所有樣式……", - "description": "" - }, - "zipStyles": { - "message": "正在壓縮樣式……", - "description": "" - }, - "unzipStyles": { - "message": "正在解壓縮樣式……", - "description": "" - }, - "readingStyles": { - "message": "正在讀取樣式……", - "description": "" + "message": "更新已安裝的:" }, "uploadingFile": { - "message": "正在上傳檔案……", - "description": "" + "message": "正在上傳檔案……" + }, + "usercssAvoidOverwriting": { + "message": "請變更 @name 或 @namespace 的值以避免覆寫既有的樣式。" + }, + "usercssConfigIncomplete": { + "message": "在設定對話框顯示後,樣式已更新或刪除。這個變數將不會儲存,以避免損毀樣式的詮釋資料。" + }, + "usercssEditorNamePlaceholder": { + "message": "在程式碼中指定 @name" + }, + "usercssReplaceTemplateConfirmation": { + "message": "為新的 Usercss 樣式取代預設的範本為目前的程式碼?" + }, + "usercssReplaceTemplateName": { + "message": "清空 @name 取代目前範本" + }, + "usercssReplaceTemplateSectionBody": { + "message": "在此插入程式碼……" + }, + "versionInvalidOlder": { + "message": "版本舊於已安裝的樣式。" + }, + "writeStyleFor": { + "message": "編寫樣式給:" + }, + "writeStyleForURL": { + "message": "此網址" + }, + "zipStyles": { + "message": "正在壓縮樣式……" } } diff --git a/background/background-worker.js b/background/background-worker.js index 1e6126f6..cfbbe89a 100644 --- a/background/background-worker.js +++ b/background/background-worker.js @@ -1,182 +1,26 @@ -/* global workerUtil importScripts parseMozFormat metaParser styleCodeEmpty colorConverter */ +/* global createWorkerApi */// worker-util.js 'use strict'; -importScripts('/js/worker-util.js'); -const {loadScript, createAPI} = workerUtil; +/** @namespace BackgroundWorker */ +createWorkerApi({ -createAPI({ - parseMozFormat(arg) { - loadScript('/vendor-overwrites/csslint/parserlib.js', '/js/moz-parser.js'); - return parseMozFormat(arg); - }, - compileUsercss, - parseUsercssMeta(text, indexOffset = 0) { - loadScript( - '/vendor/usercss-meta/usercss-meta.min.js', - '/vendor-overwrites/colorpicker/colorconverter.js', - '/js/meta-parser.js' - ); - return metaParser.parse(text, indexOffset); + async compileUsercss(...args) { + require(['/js/usercss-compiler']); /* global compileUsercss */ + return compileUsercss(...args); }, + nullifyInvalidVars(vars) { - loadScript( - '/vendor/usercss-meta/usercss-meta.min.js', - '/vendor-overwrites/colorpicker/colorconverter.js', - '/js/meta-parser.js' - ); + require(['/js/meta-parser']); /* global metaParser */ return metaParser.nullifyInvalidVars(vars); - } + }, + + parseMozFormat(...args) { + require(['/js/moz-parser']); /* global extractSections */ + return extractSections(...args); + }, + + parseUsercssMeta(text) { + require(['/js/meta-parser']); + return metaParser.parse(text); + }, }); - -function compileUsercss(preprocessor, code, vars) { - loadScript( - '/vendor-overwrites/csslint/parserlib.js', - '/vendor-overwrites/colorpicker/colorconverter.js', - '/js/moz-parser.js' - ); - const builder = getUsercssCompiler(preprocessor); - vars = simpleVars(vars); - return Promise.resolve(builder.preprocess ? builder.preprocess(code, vars) : code) - .then(code => parseMozFormat({code, emptyDocument: preprocessor === 'stylus'})) - .then(({sections, errors}) => { - if (builder.postprocess) { - builder.postprocess(sections, vars); - } - return {sections, errors}; - }); - - function simpleVars(vars) { - if (!vars) { - return {}; - } - // simplify vars by merging `va.default` to `va.value`, so BUILDER don't - // need to test each va's default value. - return Object.keys(vars).reduce((output, key) => { - const va = vars[key]; - output[key] = Object.assign({}, va, { - value: va.value === null || va.value === undefined ? - getVarValue(va, 'default') : getVarValue(va, 'value') - }); - return output; - }, {}); - } - - function getVarValue(va, prop) { - if (va.type === 'select' || va.type === 'dropdown' || va.type === 'image') { - // TODO: handle customized image - return va.options.find(o => o.name === va[prop]).value; - } - if ((va.type === 'number' || va.type === 'range') && va.units) { - return va[prop] + va.units; - } - return va[prop]; - } -} - -function getUsercssCompiler(preprocessor) { - const BUILDER = { - default: { - postprocess(sections, vars) { - loadScript('/js/sections-util.js'); - let varDef = Object.keys(vars).map(k => ` --${k}: ${vars[k].value};\n`).join(''); - if (!varDef) return; - varDef = ':root {\n' + varDef + '}\n'; - for (const section of sections) { - if (!styleCodeEmpty(section.code)) { - section.code = varDef + section.code; - } - } - } - }, - stylus: { - preprocess(source, vars) { - loadScript('/vendor/stylus-lang-bundle/stylus.min.js'); - return new Promise((resolve, reject) => { - const varDef = Object.keys(vars).map(key => `${key} = ${vars[key].value};\n`).join(''); - if (!Error.captureStackTrace) Error.captureStackTrace = () => {}; - self.stylus(varDef + source).render((err, output) => { - if (err) { - reject(err); - } else { - resolve(output); - } - }); - }); - } - }, - less: { - preprocess(source, vars) { - if (!self.less) { - self.less = { - logLevel: 0, - useFileCache: false, - }; - } - loadScript('/vendor/less-bundle/less.min.js'); - const varDefs = Object.keys(vars).map(key => `@${key}:${vars[key].value};\n`).join(''); - return self.less.render(varDefs + source) - .then(({css}) => css); - } - }, - uso: { - preprocess(source, vars) { - loadScript('/vendor-overwrites/colorpicker/colorconverter.js'); - const pool = new Map(); - return Promise.resolve(doReplace(source)); - - function getValue(name, rgbName) { - if (!vars.hasOwnProperty(name)) { - if (name.endsWith('-rgb')) { - return getValue(name.slice(0, -4), name); - } - return null; - } - const {type, value} = vars[name]; - switch (type) { - case 'color': { - let color = pool.get(rgbName || name); - if (color == null) { - color = colorConverter.parse(value); - if (color) { - if (color.type === 'hsl') { - color = colorConverter.HSVtoRGB(colorConverter.HSLtoHSV(color)); - } - const {r, g, b} = color; - color = rgbName - ? `${r}, ${g}, ${b}` - : `#${(0x1000000 + (r << 16) + (g << 8) + b).toString(16).slice(1)}`; - } - // the pool stores `false` for bad colors to differentiate from a yet unknown color - pool.set(rgbName || name, color || false); - } - return color || null; - } - case 'dropdown': - case 'select': // prevent infinite recursion - pool.set(name, ''); - return doReplace(value); - } - return value; - } - - function doReplace(text) { - return text.replace(/\/\*\[\[([\w-]+)\]\]\*\//g, (match, name) => { - if (!pool.has(name)) { - const value = getValue(name); - pool.set(name, value === null ? match : value); - } - return pool.get(name); - }); - } - } - } - }; - - if (preprocessor) { - if (!BUILDER[preprocessor]) { - throw new Error('unknwon preprocessor'); - } - return BUILDER[preprocessor]; - } - return BUILDER.default; -} diff --git a/background/background.js b/background/background.js index f3bf9a8e..00a914b6 100644 --- a/background/background.js +++ b/background/background.js @@ -1,69 +1,119 @@ -/* global download prefs openURL FIREFOX CHROME - URLS ignoreChromeError chromeLocal semverCompare - styleManager msg navigatorUtil workerUtil contentScripts sync - findExistingTab activateTab isTabReplaceable getActiveTab colorScheme */ +/* global API msg */// msg.js +/* global addAPI bgReady */// common.js +/* global createWorker */// worker-util.js +/* global prefs */ +/* global styleMan */ +/* global syncMan */ +/* global updateMan */ +/* global usercssMan */ +/* global uswApi */ +/* global + FIREFOX + URLS + activateTab + download + findExistingTab + openURL +*/ // toolbox.js +/* global colorScheme */ // color-scheme.js 'use strict'; -// eslint-disable-next-line no-var -var backgroundWorker = workerUtil.createWorker({ - url: '/background/background-worker.js' -}); +//#region API -// eslint-disable-next-line no-var -var browserCommands, contextMenus; +addAPI(/** @namespace API */ { -// ************************************************************************* -// browser commands -browserCommands = { - openManage, - openOptions: () => openManage({options: true}), - styleDisableAll(info) { - prefs.set('disableAll', info ? info.checked : !prefs.get('disableAll')); + /** Temporary storage for data needed elsewhere e.g. in a content script */ + data: ((data = {}) => ({ + del: key => delete data[key], + get: key => data[key], + has: key => key in data, + pop: key => { + const val = data[key]; + delete data[key]; + return val; + }, + set: (key, val) => { + data[key] = val; + }, + }))(), + + styles: styleMan, + sync: syncMan, + updater: updateMan, + usercss: usercssMan, + usw: uswApi, + colorScheme, + /** @type {BackgroundWorker} */ + worker: createWorker({url: '/background/background-worker'}), + + download(url, opts) { + return typeof url === 'string' && url.startsWith(URLS.uso) && + this.sender.url.startsWith(URLS.uso) && + download(url, opts || {}); }, - reload: () => chrome.runtime.reload(), -}; - -window.API_METHODS = Object.assign(window.API_METHODS || {}, { - deleteStyle: styleManager.deleteStyle, - editSave: styleManager.editSave, - findStyle: styleManager.findStyle, - getAllStyles: styleManager.getAllStyles, // used by importer - getSectionsByUrl: styleManager.getSectionsByUrl, - getStyle: styleManager.get, - getStylesByUrl: styleManager.getStylesByUrl, - importStyle: styleManager.importStyle, - importManyStyles: styleManager.importMany, - installStyle: styleManager.installStyle, - styleExists: styleManager.styleExists, - toggleStyle: styleManager.toggleStyle, - - addInclusion: styleManager.addInclusion, - removeInclusion: styleManager.removeInclusion, - addExclusion: styleManager.addExclusion, - removeExclusion: styleManager.removeExclusion, + /** @returns {string} */ getTabUrlPrefix() { - const {url} = this.sender.tab; - if (url.startsWith(URLS.ownOrigin)) { - return 'stylus'; + return this.sender.tab.url.match(/^([\w-]+:\/+[^/#]+)/)[1]; + }, + + /** + * Opens the editor or activates an existing tab + * @param {{ + id?: number + domain?: string + 'url-prefix'?: string + }} params + * @returns {Promise} + */ + async openEditor(params) { + const u = new URL(chrome.runtime.getURL('edit.html')); + u.search = new URLSearchParams(params); + const wnd = prefs.get('openEditInWindow'); + const wndPos = wnd && prefs.get('windowPosition'); + const wndBase = wnd && prefs.get('openEditInWindow.popup') ? {type: 'popup'} : {}; + const ffBug = wnd && FIREFOX; // https://bugzil.la/1271047 + const tab = await openURL({ + url: `${u}`, + currentWindow: null, + newWindow: wnd && Object.assign(wndBase, !ffBug && wndPos), + }); + if (ffBug) await browser.windows.update(tab.windowId, wndPos); + return tab; + }, + + /** @returns {Promise} */ + async openManage({options = false, search, searchMode} = {}) { + let url = chrome.runtime.getURL('manage.html'); + if (search) { + url += `?search=${encodeURIComponent(search)}&searchMode=${searchMode}`; } - return url.match(/^([\w-]+:\/+[^/#]+)/)[1]; + if (options) { + url += '#stylus-options'; + } + const tab = await findExistingTab({ + url, + currentWindow: null, + ignoreHash: true, + ignoreSearch: true, + }); + if (tab) { + await activateTab(tab); + if (url !== (tab.pendingUrl || tab.url)) { + await msg.sendTab(tab.id, {method: 'pushState', url}).catch(console.error); + } + return tab; + } + return openURL({url, ignoreExisting: true}).then(activateTab); // activateTab unminimizes the window }, - download(msg) { - delete msg.method; - return download(msg.url, msg); - }, - parseCss({code}) { - return backgroundWorker.parseMozFormat({code}); - }, - getPrefs: prefs.getAll, - - openEditor, - - /* Same as openURL, the only extra prop in `opts` is `message` - it'll be sent when the tab is ready, - which is needed in the popup, otherwise another extension could force the tab to open in foreground - thus auto-closing the popup (in Chrome at least) and preventing the sendMessage code from running */ + /** + * Same as openURL, the only extra prop in `opts` is `message` - it'll be sent + * when the tab is ready, which is needed in the popup, otherwise another + * extension could force the tab to open in foreground thus auto-closing the + * popup (in Chrome at least) and preventing the sendMessage code from running + * @returns {Promise} + */ async openURL(opts) { const tab = await openURL(opts); if (opts.message) { @@ -84,259 +134,62 @@ window.API_METHODS = Object.assign(window.API_METHODS || {}, { } }, - optionsCustomizeHotkeys() { - return browserCommands.openOptions() - .then(() => new Promise(resolve => setTimeout(resolve, 500))) - .then(() => msg.broadcastExtension({method: 'optionsCustomizeHotkeys'})); + prefs: { + getValues: () => prefs.__values, // will be deepCopy'd by apiHandler + set: prefs.set, }, - - updateSystemPreferDark: colorScheme.updateSystemPreferDark, - - syncStart: sync.start, - syncStop: sync.stop, - syncNow: sync.syncNow, - getSyncStatus: sync.getStatus, - syncLogin: sync.login, - - openManage }); -// ************************************************************************* -// register all listeners -msg.on(onRuntimeMessage); +//#endregion +//#region Events -// tell apply.js to refresh styles for non-committed navigation -navigatorUtil.onUrlChange(({tabId, frameId}, type) => { - if (type !== 'committed') { - msg.sendTab(tabId, {method: 'urlChanged'}, {frameId}) - .catch(msg.ignoreError); - } -}); - -if (FIREFOX) { - // FF misses some about:blank iframes so we inject our content script explicitly - navigatorUtil.onDOMContentLoaded(webNavIframeHelperFF, { - url: [ - {urlEquals: 'about:blank'}, - ] - }); -} - -if (chrome.contextMenus) { - chrome.contextMenus.onClicked.addListener((info, tab) => - contextMenus[info.menuItemId].click(info, tab)); -} - -if (chrome.commands) { - // Not available in Firefox - https://bugzilla.mozilla.org/show_bug.cgi?id=1240350 - chrome.commands.onCommand.addListener(command => browserCommands[command]()); -} - -// ************************************************************************* -chrome.runtime.onInstalled.addListener(({reason, previousVersion}) => { - // save install type: "admin", "development", "normal", "sideload" or "other" - // "normal" = addon installed from webstore - chrome.management.getSelf(info => { - localStorage.installType = info.installType; - if (reason === 'install' && info.installType === 'development' && chrome.contextMenus) { - createContextMenus(['reload']); - } - }); - - if (reason !== 'update') return; - // translations may change - localStorage.L10N = JSON.stringify({ - browserUIlanguage: chrome.i18n.getUILanguage(), - }); - // themes may change - delete localStorage.codeMirrorThemes; - // inline search cache for USO is not needed anymore, TODO: remove this by the middle of 2021 - if (semverCompare(previousVersion, '1.5.13') <= 0) { - setTimeout(async () => { - const del = Object.keys(await chromeLocal.get()) - .filter(key => key.startsWith('usoSearchCache')); - if (del.length) chromeLocal.remove(del); - }, 15e3); - } -}); - -// ************************************************************************* -// context menus -contextMenus = { - 'show-badge': { - title: 'menuShowBadge', - click: info => prefs.set(info.menuItemId, info.checked), +const browserCommands = { + openManage: () => API.openManage(), + openOptions: () => API.openManage({options: true}), + reload: () => chrome.runtime.reload(), + styleDisableAll(info) { + prefs.set('disableAll', info ? info.checked : !prefs.get('disableAll')); }, - 'disableAll': { - title: 'disableAllStyles', - click: browserCommands.styleDisableAll, - }, - 'open-manager': { - title: 'openStylesManager', - click: browserCommands.openManage, - }, - 'open-options': { - title: 'openOptions', - click: browserCommands.openOptions, - }, - 'reload': { - presentIf: () => localStorage.installType === 'development', - title: 'reload', - click: browserCommands.reload, - }, - 'editor.contextDelete': { - presentIf: () => !FIREFOX && prefs.get('editor.contextDelete'), - title: 'editDeleteText', - type: 'normal', - contexts: ['editable'], - documentUrlPatterns: [URLS.ownOrigin + 'edit*'], - click: (info, tab) => { - msg.sendTab(tab.id, {method: 'editDeleteText'}, undefined, 'extension'); - }, - } }; -function createContextMenus(ids) { - for (const id of ids) { - let item = contextMenus[id]; - if (item.presentIf && !item.presentIf()) { - continue; +if (chrome.commands) { + chrome.commands.onCommand.addListener(id => browserCommands[id]()); +} + +chrome.runtime.onInstalled.addListener(({reason, previousVersion}) => { + if (reason === 'update') { + const [a, b, c] = (previousVersion || '').split('.'); + if (a <= 1 && b <= 5 && c <= 13) { // 1.5.13 + require(['/background/remove-unused-storage']); } - item = Object.assign({id}, item); - delete item.presentIf; - item.title = chrome.i18n.getMessage(item.title); - if (!item.type && typeof prefs.defaults[id] === 'boolean') { - item.type = 'checkbox'; - item.checked = prefs.get(id); - } - if (!item.contexts) { - item.contexts = ['browser_action']; - } - delete item.click; - chrome.contextMenus.create(item, ignoreChromeError); } -} +}); -if (chrome.contextMenus) { - // circumvent the bug with disabling check marks in Chrome 62-64 - const toggleCheckmark = CHROME >= 62 && CHROME <= 64 ? - (id => chrome.contextMenus.remove(id, () => createContextMenus([id]) + ignoreChromeError())) : - ((id, checked) => chrome.contextMenus.update(id, {checked}, ignoreChromeError)); - - const togglePresence = (id, checked) => { - if (checked) { - createContextMenus([id]); - } else { - chrome.contextMenus.remove(id, ignoreChromeError); - } - }; - - const keys = Object.keys(contextMenus); - prefs.subscribe(keys.filter(id => typeof prefs.defaults[id] === 'boolean'), toggleCheckmark); - prefs.subscribe(keys.filter(id => contextMenus[id].presentIf), togglePresence); - createContextMenus(keys); -} - -// reinject content scripts when the extension is reloaded/updated. Firefox -// would handle this automatically. -if (!FIREFOX) { - setTimeout(contentScripts.injectToAllTabs, 0); -} - -// register hotkeys -if (FIREFOX && browser.commands && browser.commands.update) { - const hotkeyPrefs = Object.keys(prefs.defaults).filter(k => k.startsWith('hotkey.')); - prefs.subscribe(hotkeyPrefs, (name, value) => { - try { - name = name.split('.')[1]; - if (value.trim()) { - browser.commands.update({name, shortcut: value}); - } else { - browser.commands.reset(name); - } - } catch (e) {} - }); -} - -msg.broadcastTab({method: 'backgroundReady'}); - -function webNavIframeHelperFF({tabId, frameId}) { - if (!frameId) return; - msg.sendTab(tabId, {method: 'ping'}, {frameId}) - .catch(() => false) - .then(pong => { - if (pong) return; - // insert apply.js to iframe - const files = chrome.runtime.getManifest().content_scripts[0].js; - for (const file of files) { - chrome.tabs.executeScript(tabId, { - frameId, - file, - matchAboutBlank: true, - }, ignoreChromeError); - } - }); -} - -function onRuntimeMessage(msg, sender) { - if (msg.method !== 'invokeAPI') { - return; +msg.on((msg, sender) => { + if (msg.method === 'invokeAPI') { + let res = msg.path.reduce((res, name) => res && res[name], API); + if (!res) throw new Error(`Unknown API.${msg.path.join('.')}`); + res = res.apply({msg, sender}, msg.args); + return res === undefined ? null : res; } - const fn = window.API_METHODS[msg.name]; - if (!fn) { - throw new Error(`unknown API: ${msg.name}`); - } - const context = {msg, sender}; - return fn.apply(context, msg.args); -} +}); -function openEditor(params) { - /* Open the editor. Activate if it is already opened +//#endregion - params: { - id?: Number, - domain?: String, - 'url-prefix'?: String - } - */ - const u = new URL(chrome.runtime.getURL('edit.html')); - u.search = new URLSearchParams(params); - return openURL({ - url: `${u}`, - currentWindow: null, - newWindow: prefs.get('openEditInWindow') && Object.assign({}, - prefs.get('openEditInWindow.popup') && {type: 'popup'}, - prefs.get('windowPosition')), - }); -} - -function openManage({options = false, search} = {}) { - let url = chrome.runtime.getURL('manage.html'); - if (search) { - url += `?search=${encodeURIComponent(search)}`; - } - if (options) { - url += '#stylus-options'; - } - return findExistingTab({ - url, - currentWindow: null, - ignoreHash: true, - ignoreSearch: true - }) - .then(tab => { - if (tab) { - return Promise.all([ - activateTab(tab), - (tab.pendingUrl || tab.url) !== url && msg.sendTab(tab.id, {method: 'pushState', url}) - .catch(console.error) - ]); - } - return getActiveTab().then(tab => { - if (isTabReplaceable(tab, url)) { - return activateTab(tab, {url}); - } - return browser.tabs.create({url}); - }); - }); -} +Promise.all([ + bgReady.styles, + /* These are loaded conditionally. + Each item uses `require` individually so IDE can jump to the source and track usage. */ + FIREFOX && + require(['/background/style-via-api']), + FIREFOX && ((browser.commands || {}).update) && + require(['/background/browser-cmd-hotkeys']), + !FIREFOX && + require(['/background/content-scripts']), + chrome.contextMenus && + require(['/background/context-menus']), +]).then(() => { + bgReady._resolveAll(); + msg.isBgReady = true; + msg.broadcast({method: 'backgroundReady'}); +}); diff --git a/background/browser-cmd-hotkeys.js b/background/browser-cmd-hotkeys.js new file mode 100644 index 00000000..a01f454d --- /dev/null +++ b/background/browser-cmd-hotkeys.js @@ -0,0 +1,22 @@ +/* global prefs */ +'use strict'; + +/* + Registers hotkeys in FF + */ + +(() => { + const hotkeyPrefs = prefs.knownKeys.filter(k => k.startsWith('hotkey.')); + prefs.subscribe(hotkeyPrefs, updateHotkey, {runNow: true}); + + async function updateHotkey(name, value) { + try { + name = name.split('.')[1]; + if (value.trim()) { + await browser.commands.update({name, shortcut: value}); + } else { + await browser.commands.reset(name); + } + } catch (e) {} + } +})(); diff --git a/background/color-scheme.js b/background/color-scheme.js index 3b559fbf..66e2e4c6 100644 --- a/background/color-scheme.js +++ b/background/color-scheme.js @@ -36,7 +36,7 @@ const colorScheme = (() => { } chrome.alarms.create(key, { when: date.getTime(), - periodInMinutes: 24 * 60 + periodInMinutes: 24 * 60, }); } diff --git a/background/common.js b/background/common.js new file mode 100644 index 00000000..a08174fa --- /dev/null +++ b/background/common.js @@ -0,0 +1,31 @@ +/* global API */// msg.js +'use strict'; + +/** + * Common stuff that's loaded first so it's immediately available to all background scripts + */ + +/* exported + addAPI + bgReady + compareRevision +*/ + +const bgReady = {}; +bgReady.styles = new Promise(r => (bgReady._resolveStyles = r)); +bgReady.all = new Promise(r => (bgReady._resolveAll = r)); + +function addAPI(methods) { + for (const [key, val] of Object.entries(methods)) { + const old = API[key]; + if (old && Object.prototype.toString.call(old) === '[object Object]') { + Object.assign(old, val); + } else { + API[key] = val; + } + } +} + +function compareRevision(rev1, rev2) { + return rev1 - rev2; +} diff --git a/background/content-scripts.js b/background/content-scripts.js index 3aeecd16..06b4a282 100644 --- a/background/content-scripts.js +++ b/background/content-scripts.js @@ -1,15 +1,21 @@ -/* global msg ignoreChromeError URLS */ -/* exported contentScripts */ +/* global bgReady */// common.js +/* global msg */ +/* global URLS ignoreChromeError */// toolbox.js 'use strict'; -const contentScripts = (() => { +/* + Reinject content scripts when the extension is reloaded/updated. + Not used in Firefox as it reinjects automatically. + */ + +bgReady.all.then(() => { const NTP = 'chrome://newtab/'; const ALL_URLS = ''; const SCRIPTS = chrome.runtime.getManifest().content_scripts; // expand * as .*? const wildcardAsRegExp = (s, flags) => new RegExp( - s.replace(/[{}()[\]/\\.+?^$:=!|]/g, '\\$&') - .replace(/\*/g, '.*?'), flags); + s.replace(/[{}()[\]/\\.+?^$:=!|]/g, '\\$&') + .replace(/\*/g, '.*?'), flags); for (const cs of SCRIPTS) { cs.matches = cs.matches.map(m => ( m === ALL_URLS ? m : wildcardAsRegExp(m) @@ -18,21 +24,7 @@ const contentScripts = (() => { const busyTabs = new Set(); let busyTabsTimer; - // expose version on greasyfork/sleazyfork 1) info page and 2) code page - const urlMatches = '/scripts/\\d+[^/]*(/code)?([?#].*)?$'; - chrome.webNavigation.onCommitted.addListener(({tabId}) => { - chrome.tabs.executeScript(tabId, { - file: '/content/install-hook-greasyfork.js', - runAt: 'document_start', - }); - }, { - url: [ - {hostEquals: 'greasyfork.org', urlMatches}, - {hostEquals: 'sleazyfork.org', urlMatches}, - ] - }); - - return {injectToTab, injectToAllTabs}; + setTimeout(injectToAllTabs); function injectToTab({url, tabId, frameId = null}) { for (const script of SCRIPTS) { @@ -57,7 +49,7 @@ const contentScripts = (() => { const options = { runAt: script.run_at, allFrames: script.all_frames, - matchAboutBlank: script.match_about_blank + matchAboutBlank: script.match_about_blank, }; if (frameId !== null) { options.allFrames = false; @@ -80,7 +72,7 @@ const contentScripts = (() => { } else { injectToTab({ url: tab.pendingUrl || tab.url, - tabId: tab.id + tabId: tab.id, }); } } @@ -122,4 +114,4 @@ const contentScripts = (() => { function onBusyTabRemoved(tabId) { trackBusyTab(tabId, false); } -})(); +}); diff --git a/background/context-menus.js b/background/context-menus.js new file mode 100644 index 00000000..53101dea --- /dev/null +++ b/background/context-menus.js @@ -0,0 +1,101 @@ +/* global browserCommands */// background.js +/* global msg */ +/* global prefs */ +/* global CHROME FIREFOX URLS ignoreChromeError */// toolbox.js +'use strict'; + +(() => { + const contextMenus = { + 'show-badge': { + title: 'menuShowBadge', + click: info => prefs.set(info.menuItemId, info.checked), + }, + 'disableAll': { + title: 'disableAllStyles', + click: browserCommands.styleDisableAll, + }, + 'open-manager': { + title: 'openStylesManager', + click: browserCommands.openManage, + }, + 'open-options': { + title: 'openOptions', + click: browserCommands.openOptions, + }, + 'reload': { + presentIf: async () => (await browser.management.getSelf()).installType === 'development', + title: 'reload', + click: browserCommands.reload, + }, + 'editor.contextDelete': { + presentIf: () => !FIREFOX && prefs.get('editor.contextDelete'), + title: 'editDeleteText', + type: 'normal', + contexts: ['editable'], + documentUrlPatterns: [URLS.ownOrigin + 'edit*'], + click: (info, tab) => { + msg.sendTab(tab.id, {method: 'editDeleteText'}, undefined, 'extension') + .catch(msg.ignoreError); + }, + }, + }; + + // "Delete" item in context menu for browsers that don't have it + if (CHROME && + // looking at the end of UA string + /(Vivaldi|Safari)\/[\d.]+$/.test(navigator.userAgent) && + // skip forks with Flash as those are likely to have the menu e.g. CentBrowser + !Array.from(navigator.plugins).some(p => p.name === 'Shockwave Flash')) { + prefs.__defaults['editor.contextDelete'] = true; + } + + const keys = Object.keys(contextMenus); + prefs.subscribe(keys.filter(id => typeof prefs.defaults[id] === 'boolean'), + CHROME >= 62 && CHROME <= 64 ? toggleCheckmarkBugged : toggleCheckmark); + prefs.subscribe(keys.filter(id => contextMenus[id].presentIf && prefs.knownKeys.includes(id)), + togglePresence); + + createContextMenus(keys); + + chrome.contextMenus.onClicked.addListener((info, tab) => + contextMenus[info.menuItemId].click(info, tab)); + + async function createContextMenus(ids) { + for (const id of ids) { + let item = contextMenus[id]; + if (item.presentIf && !await item.presentIf()) { + continue; + } + item = Object.assign({id}, item); + delete item.presentIf; + item.title = chrome.i18n.getMessage(item.title); + if (!item.type && typeof prefs.defaults[id] === 'boolean') { + item.type = 'checkbox'; + item.checked = prefs.get(id); + } + if (!item.contexts) { + item.contexts = ['browser_action']; + } + delete item.click; + chrome.contextMenus.create(item, ignoreChromeError); + } + } + + function toggleCheckmark(id, checked) { + chrome.contextMenus.update(id, {checked}, ignoreChromeError); + } + + /** Circumvents the bug with disabling check marks in Chrome 62-64 */ + async function toggleCheckmarkBugged(id) { + await browser.contextMenus.remove(id).catch(ignoreChromeError); + createContextMenus([id]); + } + + function togglePresence(id, checked) { + if (checked) { + createContextMenus([id]); + } else { + chrome.contextMenus.remove(id, ignoreChromeError); + } + } +})(); diff --git a/background/db-chrome-storage.js b/background/db-chrome-storage.js index 01e38262..fe5ace24 100644 --- a/background/db-chrome-storage.js +++ b/background/db-chrome-storage.js @@ -1,67 +1,66 @@ -/* global chromeLocal */ -/* exported createChromeStorageDB */ +/* global chromeLocal */// storage-util.js 'use strict'; +/* exported createChromeStorageDB */ function createChromeStorageDB() { let INC; const PREFIX = 'style-'; const METHODS = { + + delete(id) { + return chromeLocal.remove(PREFIX + id); + }, + // FIXME: we don't use this method at all. Should we remove this? - get: id => chromeLocal.getValue(PREFIX + id), - put: obj => - // FIXME: should we clone the object? - Promise.resolve(!obj.id && prepareInc().then(() => Object.assign(obj, {id: INC++}))) - .then(() => chromeLocal.setValue(PREFIX + obj.id, obj)) - .then(() => obj.id), - putMany: items => prepareInc() - .then(() => - chromeLocal.set(items.reduce((data, item) => { - if (!item.id) item.id = INC++; - data[PREFIX + item.id] = item; - return data; - }, {}))) - .then(() => items.map(i => i.id)), - delete: id => chromeLocal.remove(PREFIX + id), - getAll: () => chromeLocal.get() - .then(result => { - const output = []; - for (const key in result) { - if (key.startsWith(PREFIX) && Number(key.slice(PREFIX.length))) { - output.push(result[key]); - } + get(id) { + return chromeLocal.getValue(PREFIX + id); + }, + + async getAll() { + const all = await chromeLocal.get(); + if (!INC) prepareInc(all); + return Object.entries(all) + .map(([key, val]) => key.startsWith(PREFIX) && Number(key.slice(PREFIX.length)) && val) + .filter(Boolean); + }, + + async put(item) { + if (!item.id) { + if (!INC) await prepareInc(); + item.id = INC++; + } + await chromeLocal.setValue(PREFIX + item.id, item); + return item.id; + }, + + async putMany(items) { + const data = {}; + for (const item of items) { + if (!item.id) { + if (!INC) await prepareInc(); + item.id = INC++; } - return output; - }) + data[PREFIX + item.id] = item; + } + await chromeLocal.set(data); + return items.map(_ => _.id); + }, }; - return {exec}; - - function exec(method, ...args) { - if (METHODS[method]) { - return METHODS[method](...args) - .then(result => { - if (method === 'putMany' && result.map) { - return result.map(r => ({target: {result: r}})); - } - return {target: {result}}; - }); - } - return Promise.reject(new Error(`unknown DB method ${method}`)); - } - - function prepareInc() { - if (INC) return Promise.resolve(); - return chromeLocal.get().then(result => { - INC = 1; - for (const key in result) { - if (key.startsWith(PREFIX)) { - const id = Number(key.slice(PREFIX.length)); - if (id >= INC) { - INC = id + 1; - } + async function prepareInc(data) { + INC = 1; + for (const key in data || await chromeLocal.get()) { + if (key.startsWith(PREFIX)) { + const id = Number(key.slice(PREFIX.length)); + if (id >= INC) { + INC = id + 1; } } - }); + } } + + return function dbExecChromeStorage(method, ...args) { + return METHODS[method](...args); + }; } diff --git a/background/db.js b/background/db.js index 223d3870..0427a6a8 100644 --- a/background/db.js +++ b/background/db.js @@ -1,14 +1,15 @@ -/* global chromeLocal workerUtil createChromeStorageDB */ -/* exported db */ -/* -Initialize a database. There are some problems using IndexedDB in Firefox: -https://www.reddit.com/r/firefox/comments/74wttb/note_to_firefox_webextension_developers_who_use/ - -Some of them are fixed in FF59: -https://www.reddit.com/r/firefox/comments/7ijuaq/firefox_59_webextensions_can_use_indexeddb_when/ -*/ +/* global chromeLocal */// storage-util.js +/* global cloneError */// worker-util.js 'use strict'; +/* + Initialize a database. There are some problems using IndexedDB in Firefox: + https://www.reddit.com/r/firefox/comments/74wttb/note_to_firefox_webextension_developers_who_use/ + Some of them are fixed in FF59: + https://www.reddit.com/r/firefox/comments/7ijuaq/firefox_59_webextensions_can_use_indexeddb_when/ +*/ + +/* exported db */ const db = (() => { const DATABASE = 'stylish'; const STORE = 'styles'; @@ -24,52 +25,34 @@ const db = (() => { async function tryUsingIndexedDB() { // we use chrome.storage.local fallback if IndexedDB doesn't save data, // which, once detected on the first run, is remembered in chrome.storage.local - // for reliablility and in localStorage for fast synchronous access - // (FF may block localStorage depending on its privacy options) - // note that it may throw when accessing the variable - // https://github.com/openstyles/stylus/issues/615 + // note that accessing indexedDB may throw, https://github.com/openstyles/stylus/issues/615 if (typeof indexedDB === 'undefined') { throw new Error('indexedDB is undefined'); } - switch (await getFallback()) { + switch (await chromeLocal.getValue(FALLBACK)) { case true: throw null; case false: break; default: await testDB(); } - return useIndexedDB(); - } - - async function getFallback() { - return localStorage[FALLBACK] === 'true' ? true : - localStorage[FALLBACK] === 'false' ? false : - chromeLocal.getValue(FALLBACK); + chromeLocal.setValue(FALLBACK, false); + return dbExecIndexedDB; } async function testDB() { - let e = await dbExecIndexedDB('getAllKeys', IDBKeyRange.lowerBound(1), 1); - // throws if result is null - e = e.target.result[0]; const id = `${performance.now()}.${Math.random()}.${Date.now()}`; await dbExecIndexedDB('put', {id}); - e = await dbExecIndexedDB('get', id); - // throws if result or id is null - await dbExecIndexedDB('delete', e.target.result.id); + const e = await dbExecIndexedDB('get', id); + await dbExecIndexedDB('delete', e.id); // throws if `e` or id is null } - function useChromeStorage(err) { + async function useChromeStorage(err) { chromeLocal.setValue(FALLBACK, true); if (err) { - chromeLocal.setValue(FALLBACK + 'Reason', workerUtil.cloneError(err)); + chromeLocal.setValue(FALLBACK + 'Reason', cloneError(err)); console.warn('Failed to access indexedDB. Switched to storage API.', err); } - localStorage[FALLBACK] = 'true'; - return createChromeStorageDB().exec; - } - - function useIndexedDB() { - chromeLocal.setValue(FALLBACK, false); - localStorage[FALLBACK] = 'false'; - return dbExecIndexedDB; + await require(['/background/db-chrome-storage']); /* global createChromeStorageDB */ + return createChromeStorageDB(); } async function dbExecIndexedDB(method, ...args) { @@ -81,8 +64,9 @@ const db = (() => { function storeRequest(store, method, ...args) { return new Promise((resolve, reject) => { + /** @type {IDBRequest} */ const request = store[method](...args); - request.onsuccess = resolve; + request.onsuccess = () => resolve(request.result); request.onerror = reject; }); } diff --git a/background/icon-manager.js b/background/icon-manager.js index 0ea14d03..ae255518 100644 --- a/background/icon-manager.js +++ b/background/icon-manager.js @@ -1,48 +1,41 @@ -/* global prefs debounce iconUtil FIREFOX CHROME VIVALDI tabManager navigatorUtil API_METHODS */ -/* exported iconManager */ +/* global API */// msg.js +/* global addAPI bgReady */// common.js +/* global prefs */ +/* global tabMan */ +/* global CHROME FIREFOX VIVALDI debounce ignoreChromeError */// toolbox.js 'use strict'; -const iconManager = (() => { +/* exported iconMan */ +const iconMan = (() => { const ICON_SIZES = FIREFOX || CHROME >= 55 && !VIVALDI ? [16, 32] : [19, 38]; const staleBadges = new Set(); + const imageDataCache = new Map(); + const badgeOvr = {color: '', text: ''}; + // https://github.com/openstyles/stylus/issues/1287 Fenix can't use custom ImageData + const FIREFOX_ANDROID = FIREFOX && navigator.userAgent.includes('Android'); - prefs.subscribe([ - 'disableAll', - 'badgeDisabled', - 'badgeNormal', - ], () => debounce(refreshIconBadgeColor)); + // https://github.com/openstyles/stylus/issues/335 + let hasCanvas = FIREFOX_ANDROID ? false : loadImage(`/images/icon/${ICON_SIZES[0]}.png`) + .then(({data}) => (hasCanvas = data.some(b => b !== 255))); - prefs.subscribe([ - 'show-badge' - ], () => debounce(refreshAllIconsBadgeText)); - - prefs.subscribe([ - 'disableAll', - 'iconset', - ], () => debounce(refreshAllIcons)); - - prefs.initializing.then(() => { - refreshIconBadgeColor(); - refreshAllIconsBadgeText(); - refreshAllIcons(); - }); - - Object.assign(API_METHODS, { - /** @param {(number|string)[]} styleIds - * @param {boolean} [lazyBadge=false] preventing flicker during page load */ + addAPI(/** @namespace API */ { + /** + * @param {(number|string)[]} styleIds + * @param {boolean} [lazyBadge=false] preventing flicker during page load + */ updateIconBadge(styleIds, {lazyBadge} = {}) { // FIXME: in some cases, we only have to redraw the badge. is it worth a optimization? const {frameId, tab: {id: tabId}} = this.sender; const value = styleIds.length ? styleIds.map(Number) : undefined; - tabManager.set(tabId, 'styleIds', frameId, value); + tabMan.set(tabId, 'styleIds', frameId, value); debounce(refreshStaleBadges, frameId && lazyBadge ? 250 : 0); staleBadges.add(tabId); if (!frameId) refreshIcon(tabId, true); }, }); - navigatorUtil.onCommitted(({tabId, frameId}) => { - if (!frameId) tabManager.set(tabId, 'styleIds', undefined); + chrome.webNavigation.onCommitted.addListener(({tabId, frameId}) => { + if (!frameId) tabMan.set(tabId, 'styleIds', undefined); }); chrome.runtime.onConnect.addListener(port => { @@ -51,15 +44,54 @@ const iconManager = (() => { } }); + bgReady.all.then(() => { + prefs.subscribe([ + 'disableAll', + 'badgeDisabled', + 'badgeNormal', + ], () => debounce(refreshIconBadgeColor), {runNow: true}); + prefs.subscribe([ + 'show-badge', + ], () => debounce(refreshAllIconsBadgeText), {runNow: true}); + prefs.subscribe([ + 'disableAll', + 'iconset', + ], () => debounce(refreshAllIcons), {runNow: true}); + }); + + return { + /** Calling with no params clears the override */ + overrideBadge({text = '', color = '', title = ''} = {}) { + if (badgeOvr.text === text) { + return; + } + badgeOvr.text = text; + badgeOvr.color = color; + refreshIconBadgeColor(); + setBadgeText({text}); + for (const tabId of tabMan.list()) { + if (text) { + setBadgeText({tabId, text}); + } else { + refreshIconBadgeText(tabId); + } + } + chrome.browserAction.setTitle({ + title: title && chrome.i18n.getMessage(title) || title || '', + }); + }, + }; + function onPortDisconnected({sender}) { - if (tabManager.get(sender.tab.id, 'styleIds')) { - API_METHODS.updateIconBadge.call({sender}, [], {lazyBadge: true}); + if (tabMan.get(sender.tab.id, 'styleIds')) { + API.updateIconBadge.call({sender}, [], {lazyBadge: true}); } } function refreshIconBadgeText(tabId) { + if (badgeOvr.text) return; const text = prefs.get('show-badge') ? `${getStyleCount(tabId)}` : ''; - iconUtil.setBadgeText({tabId, text}); + setBadgeText({tabId, text}); } function getIconName(hasStyles = false) { @@ -69,17 +101,17 @@ const iconManager = (() => { } function refreshIcon(tabId, force = false) { - const oldIcon = tabManager.get(tabId, 'icon'); - const newIcon = getIconName(tabManager.get(tabId, 'styleIds', 0)); + const oldIcon = tabMan.get(tabId, 'icon'); + const newIcon = getIconName(tabMan.get(tabId, 'styleIds', 0)); // (changing the icon only for the main page, frameId = 0) if (!force && oldIcon === newIcon) { return; } - tabManager.set(tabId, 'icon', newIcon); - iconUtil.setIcon({ + tabMan.set(tabId, 'icon', newIcon); + setIcon({ path: getIconPath(newIcon), - tabId + tabId, }); } @@ -96,33 +128,55 @@ const iconManager = (() => { /** @return {number | ''} */ function getStyleCount(tabId) { const allIds = new Set(); - const data = tabManager.get(tabId, 'styleIds') || {}; + const data = tabMan.get(tabId, 'styleIds') || {}; Object.values(data).forEach(frameIds => frameIds.forEach(id => allIds.add(id))); return allIds.size || ''; } + // Caches imageData for icon paths + async function loadImage(url) { + const {OffscreenCanvas} = !FIREFOX && self.createImageBitmap && self || {}; + const img = OffscreenCanvas + ? await createImageBitmap(await (await fetch(url)).blob()) + : await new Promise((resolve, reject) => + Object.assign(new Image(), { + src: url, + onload: e => resolve(e.target), + onerror: reject, + })); + const {width: w, height: h} = img; + const canvas = OffscreenCanvas + ? new OffscreenCanvas(w, h) + : Object.assign(document.createElement('canvas'), {width: w, height: h}); + const ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0, w, h); + const result = ctx.getImageData(0, 0, w, h); + imageDataCache.set(url, result); + return result; + } + function refreshGlobalIcon() { - iconUtil.setIcon({ - path: getIconPath(getIconName()) + setIcon({ + path: getIconPath(getIconName()), }); } function refreshIconBadgeColor() { - const color = prefs.get(prefs.get('disableAll') ? 'badgeDisabled' : 'badgeNormal'); - iconUtil.setBadgeBackgroundColor({ - color + setBadgeBackgroundColor({ + color: badgeOvr.color || + prefs.get(prefs.get('disableAll') ? 'badgeDisabled' : 'badgeNormal'), }); } function refreshAllIcons() { - for (const tabId of tabManager.list()) { + for (const tabId of tabMan.list()) { refreshIcon(tabId); } refreshGlobalIcon(); } function refreshAllIconsBadgeText() { - for (const tabId of tabManager.list()) { + for (const tabId of tabMan.list()) { refreshIconBadgeText(tabId); } } @@ -133,4 +187,40 @@ const iconManager = (() => { } staleBadges.clear(); } + + function safeCall(method, data) { + const {browserAction = {}} = chrome; + const fn = browserAction[method]; + if (fn) { + try { + // Chrome supports the callback since 67.0.3381.0, see https://crbug.com/451320 + fn.call(browserAction, data, ignoreChromeError); + } catch (e) { + // FIXME: skip pre-rendered tabs? + fn.call(browserAction, data); + } + } + } + + /** @param {chrome.browserAction.TabIconDetails} data */ + async function setIcon(data) { + if (hasCanvas === true || await hasCanvas) { + data.imageData = {}; + for (const [key, url] of Object.entries(data.path)) { + data.imageData[key] = imageDataCache.get(url) || await loadImage(url); + } + delete data.path; + } + safeCall('setIcon', data); + } + + /** @param {chrome.browserAction.BadgeTextDetails} data */ + function setBadgeText(data) { + safeCall('setBadgeText', data); + } + + /** @param {chrome.browserAction.BadgeBackgroundColorDetails} data */ + function setBadgeBackgroundColor(data) { + safeCall('setBadgeBackgroundColor', data); + } })(); diff --git a/background/icon-util.js b/background/icon-util.js deleted file mode 100644 index ef7b2822..00000000 --- a/background/icon-util.js +++ /dev/null @@ -1,91 +0,0 @@ -/* global ignoreChromeError */ -/* exported iconUtil */ -'use strict'; - -const iconUtil = (() => { - const canvas = document.createElement('canvas'); - const ctx = canvas.getContext('2d'); - // https://github.com/openstyles/stylus/issues/335 - let noCanvas; - const imageDataCache = new Map(); - // test if canvas is usable - const canvasReady = loadImage('/images/icon/16.png') - .then(imageData => { - noCanvas = imageData.data.every(b => b === 255); - }); - - return extendNative({ - /* - Cache imageData for paths - */ - setIcon, - setBadgeText - }); - - function loadImage(url) { - let result = imageDataCache.get(url); - if (!result) { - result = new Promise((resolve, reject) => { - const img = new Image(); - img.src = url; - img.onload = () => { - const w = canvas.width = img.width; - const h = canvas.height = img.height; - ctx.clearRect(0, 0, w, h); - ctx.drawImage(img, 0, 0, w, h); - resolve(ctx.getImageData(0, 0, w, h)); - }; - img.onerror = reject; - }); - imageDataCache.set(url, result); - } - return result; - } - - function setIcon(data) { - canvasReady.then(() => { - if (noCanvas) { - chrome.browserAction.setIcon(data, ignoreChromeError); - return; - } - const pending = []; - data.imageData = {}; - for (const [key, url] of Object.entries(data.path)) { - pending.push(loadImage(url) - .then(imageData => { - data.imageData[key] = imageData; - })); - } - Promise.all(pending).then(() => { - delete data.path; - chrome.browserAction.setIcon(data, ignoreChromeError); - }); - }); - } - - function setBadgeText(data) { - try { - // Chrome supports the callback since 67.0.3381.0, see https://crbug.com/451320 - chrome.browserAction.setBadgeText(data, ignoreChromeError); - } catch (e) { - // FIXME: skip pre-rendered tabs? - chrome.browserAction.setBadgeText(data); - } - } - - function extendNative(target) { - return new Proxy(target, { - get: (target, prop) => { - // FIXME: do we really need this? - if (!chrome.browserAction || - !['setIcon', 'setBadgeBackgroundColor', 'setBadgeText'].every(name => chrome.browserAction[name])) { - return () => {}; - } - if (target[prop]) { - return target[prop]; - } - return chrome.browserAction[prop].bind(chrome.browserAction); - } - }); - } -})(); diff --git a/background/navigation-manager.js b/background/navigation-manager.js new file mode 100644 index 00000000..c9df95e5 --- /dev/null +++ b/background/navigation-manager.js @@ -0,0 +1,103 @@ +/* global CHROME FIREFOX URLS deepEqual ignoreChromeError */// toolbox.js +/* global bgReady */// common.js +/* global msg */ +'use strict'; + +/* exported navMan */ +const navMan = (() => { + const listeners = new Set(); + let prevData = {}; + + chrome.webNavigation.onCommitted.addListener(onNavigation.bind('committed')); + chrome.webNavigation.onHistoryStateUpdated.addListener(onFakeNavigation.bind('history')); + chrome.webNavigation.onReferenceFragmentUpdated.addListener(onFakeNavigation.bind('hash')); + + return { + /** @param {function(data: Object, type: ('committed'|'history'|'hash'))} fn */ + onUrlChange(fn) { + listeners.add(fn); + }, + }; + + /** @this {string} type */ + async function onNavigation(data) { + if (CHROME && data.timeStamp === prevData.timeStamp && deepEqual(data, prevData)) { + return; // Chrome bug: listener is called twice with identical data + } + prevData = data; + if (CHROME && + URLS.chromeProtectsNTP && + data.url.startsWith('https://www.google.') && + data.url.includes('/_/chrome/newtab?')) { + // Modern Chrome switched to WebUI NTP so this is obsolete, but there may be exceptions + // TODO: investigate, and maybe use a separate listener for CHROME <= ver + const tab = await browser.tabs.get(data.tabId); + const url = tab.pendingUrl || tab.url; + if (url === 'chrome://newtab/') { + data.url = url; + } + } + listeners.forEach(fn => fn(data, this)); + } + + /** @this {string} type */ + function onFakeNavigation(data) { + const {url, frameId} = data; + onNavigation.call(this, data); + msg.sendTab(data.tabId, {method: 'urlChanged', url}, {frameId}) + .catch(msg.ignoreError); + } +})(); + +bgReady.all.then(() => { + /* + * Expose style version on greasyfork/sleazyfork 1) info page and 2) code page + * Not using manifest.json as adding a content script disables the extension on update. + */ + const urlMatches = '/scripts/\\d+[^/]*(/code)?([?#].*)?$'; + chrome.webNavigation.onCommitted.addListener(({tabId}) => { + chrome.tabs.executeScript(tabId, { + file: '/content/install-hook-greasyfork.js', + runAt: 'document_start', + }); + }, { + url: [ + {hostEquals: 'greasyfork.org', urlMatches}, + {hostEquals: 'sleazyfork.org', urlMatches}, + ], + }); + + /* + * Removes the Get Stylus button on style pages. + * Not using manifest.json as adding a content script disables the extension on update. + */ + chrome.webNavigation.onCommitted.addListener(({tabId}) => { + chrome.tabs.executeScript(tabId, { + file: '/content/install-hook-userstylesworld.js', + runAt: 'document_start', + }); + }, { + url: [ + {hostEquals: 'userstyles.world'}, + ], + }); + /* + * FF misses some about:blank iframes so we inject our content script explicitly + */ + if (FIREFOX) { + chrome.webNavigation.onDOMContentLoaded.addListener(async ({tabId, frameId}) => { + if (frameId && + !await msg.sendTab(tabId, {method: 'ping'}, {frameId}).catch(ignoreChromeError)) { + for (const file of chrome.runtime.getManifest().content_scripts[0].js) { + chrome.tabs.executeScript(tabId, { + frameId, + file, + matchAboutBlank: true, + }, ignoreChromeError); + } + } + }, { + url: [{urlEquals: 'about:blank'}], + }); + } +}); diff --git a/background/navigator-util.js b/background/navigator-util.js deleted file mode 100644 index c1b702c6..00000000 --- a/background/navigator-util.js +++ /dev/null @@ -1,75 +0,0 @@ -/* global CHROME URLS */ -/* exported navigatorUtil */ -'use strict'; - -const navigatorUtil = (() => { - const handler = { - urlChange: null - }; - return extendNative({onUrlChange}); - - function onUrlChange(fn) { - initUrlChange(); - handler.urlChange.push(fn); - } - - function initUrlChange() { - if (handler.urlChange) { - return; - } - handler.urlChange = []; - - chrome.webNavigation.onCommitted.addListener(data => - fixNTPUrl(data) - .then(() => executeCallbacks(handler.urlChange, data, 'committed')) - .catch(console.error) - ); - - chrome.webNavigation.onHistoryStateUpdated.addListener(data => - fixNTPUrl(data) - .then(() => executeCallbacks(handler.urlChange, data, 'historyStateUpdated')) - .catch(console.error) - ); - - chrome.webNavigation.onReferenceFragmentUpdated.addListener(data => - fixNTPUrl(data) - .then(() => executeCallbacks(handler.urlChange, data, 'referenceFragmentUpdated')) - .catch(console.error) - ); - } - - function fixNTPUrl(data) { - if ( - !CHROME || - !URLS.chromeProtectsNTP || - !data.url.startsWith('https://www.google.') || - !data.url.includes('/_/chrome/newtab?') - ) { - return Promise.resolve(); - } - return browser.tabs.get(data.tabId) - .then(tab => { - const url = tab.pendingUrl || tab.url; - if (url === 'chrome://newtab/') { - data.url = url; - } - }); - } - - function executeCallbacks(callbacks, data, type) { - for (const cb of callbacks) { - cb(data, type); - } - } - - function extendNative(target) { - return new Proxy(target, { - get: (target, prop) => { - if (target[prop]) { - return target[prop]; - } - return chrome.webNavigation[prop].addListener.bind(chrome.webNavigation[prop]); - } - }); - } -})(); diff --git a/background/openusercss-api.js b/background/openusercss-api.js deleted file mode 100644 index 0ef98140..00000000 --- a/background/openusercss-api.js +++ /dev/null @@ -1,102 +0,0 @@ -'use strict'; - -(() => { - // begin:nanographql - Tiny graphQL client library - // Author: yoshuawuyts (https://github.com/yoshuawuyts) - // License: MIT - // Modified by DecentM to fit project standards - - const getOpname = /(query|mutation) ?([\w\d-_]+)? ?\(.*?\)? \{/; - const gql = str => { - str = Array.isArray(str) ? str.join('') : str; - const name = getOpname.exec(str); - - return variables => { - const data = {query: str}; - if (variables) data.variables = JSON.stringify(variables); - if (name && name.length) { - const operationName = name[2]; - if (operationName) data.operationName = name[2]; - } - return JSON.stringify(data); - }; - }; - - // end:nanographql - - const api = 'https://api.openusercss.org'; - const doQuery = ({id}, queryString) => { - const query = gql(queryString); - - return fetch(api, { - method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json' - }), - body: query({ - id - }) - }) - .then(res => res.json()); - }; - - window.API_METHODS = Object.assign(window.API_METHODS || {}, { - /** - * This function can be used to retrieve a theme object from the - * GraphQL API, set above - * - * Example: - * chrome.runtime.sendMessage({ - * 'method': 'oucThemeById', - * 'id': '5a2f819f7c57c751001b49df' - * }, console.log); - * - * @param {ID} $0.id MongoDB style ID - * @returns {Promise.<{data: object}>} The GraphQL result with the `theme` object - */ - - oucThemeById: params => doQuery(params, ` - query($id: ID!) { - theme(id: $id) { - _id - title - description - createdAt - lastUpdate - version - screenshots - user { - _id - displayname - } - } - } - `), - - /** - * This function can be used to retrieve a user object from the - * GraphQL API, set above - * - * Example: - * chrome.runtime.sendMessage({ - * 'method': 'oucUserById', - * 'id': '5a2f0361ba666f0b00b9c827' - * }, console.log); - * - * @param {ID} $0.id MongoDB style ID - * @returns {Promise.<{data: object}>} The GraphQL result with the `user` object - */ - - oucUserById: params => doQuery(params, ` - query($id: ID!) { - user(id: $id) { - _id - displayname - avatarUrl - smallAvatarUrl - bio - } - } - `), - }); -})(); diff --git a/background/remove-unused-storage.js b/background/remove-unused-storage.js new file mode 100644 index 00000000..1c1a9154 --- /dev/null +++ b/background/remove-unused-storage.js @@ -0,0 +1,15 @@ +/* global chromeLocal */// storage-util.js +'use strict'; + +// Removing unused stuff from storage on extension update +// TODO: delete this by the middle of 2021 + +try { + localStorage.clear(); +} catch (e) {} + +setTimeout(async () => { + const del = Object.keys(await chromeLocal.get()) + .filter(key => key.startsWith('usoSearchCache')); + if (del.length) chromeLocal.remove(del); +}, 15e3); diff --git a/background/search-db.js b/background/search-db.js deleted file mode 100644 index 21ef0572..00000000 --- a/background/search-db.js +++ /dev/null @@ -1,104 +0,0 @@ -/* global API_METHODS styleManager tryRegExp debounce */ -'use strict'; - -(() => { - // toLocaleLowerCase cache, autocleared after 1 minute - const cache = new Map(); - // top-level style properties to be searched - const PARTS = { - name: searchText, - url: searchText, - sourceCode: searchText, - sections: searchSections, - }; - - /** - * @param params - * @param {string} params.query - 1. url:someurl 2. text (may contain quoted parts like "qUot Ed") - * @param {number[]} [params.ids] - if not specified, all styles are searched - * @returns {number[]} - array of matched styles ids - */ - API_METHODS.searchDB = ({query, ids}) => { - let rx, words, icase, matchUrl; - query = query.trim(); - - if (/^url:/i.test(query)) { - matchUrl = query.slice(query.indexOf(':') + 1).trim(); - if (matchUrl) { - return styleManager.getStylesByUrl(matchUrl) - .then(results => results.map(r => r.data.id)); - } - } - if (query.startsWith('/') && /^\/(.+?)\/([gimsuy]*)$/.test(query)) { - rx = tryRegExp(RegExp.$1, RegExp.$2); - } - if (!rx) { - words = query - .split(/(".*?")|\s+/) - .filter(Boolean) - .map(w => w.startsWith('"') && w.endsWith('"') - ? w.slice(1, -1) - : w) - .filter(w => w.length > 1); - words = words.length ? words : [query]; - icase = words.some(w => w === lower(w)); - } - - return styleManager.getAllStyles().then(styles => { - if (ids) { - const idSet = new Set(ids); - styles = styles.filter(s => idSet.has(s.id)); - } - const results = []; - for (const style of styles) { - const id = style.id; - if (!query || words && !words.length) { - results.push(id); - continue; - } - for (const part in PARTS) { - const text = part === 'name' ? style.customName || style.name : style[part]; - if (text && PARTS[part](text, rx, words, icase)) { - results.push(id); - break; - } - } - } - if (cache.size) debounce(clearCache, 60e3); - return results; - }); - }; - - function searchText(text, rx, words, icase) { - if (rx) return rx.test(text); - for (let pass = 1; pass <= (icase ? 2 : 1); pass++) { - if (words.every(w => text.includes(w))) return true; - text = lower(text); - } - } - - function searchSections(sections, rx, words, icase) { - for (const section of sections) { - for (const prop in section) { - const value = section[prop]; - if (typeof value === 'string') { - if (searchText(value, rx, words, icase)) return true; - } else if (Array.isArray(value)) { - if (value.some(str => searchText(str, rx, words, icase))) return true; - } - } - } - } - - function lower(text) { - let result = cache.get(text); - if (result) return result; - result = text.toLocaleLowerCase(); - cache.set(text, result); - return result; - } - - function clearCache() { - cache.clear(); - } -})(); diff --git a/background/style-manager.js b/background/style-manager.js index 2339408b..0ae6c45e 100644 --- a/background/style-manager.js +++ b/background/style-manager.js @@ -1,7 +1,12 @@ -/* eslint no-eq-null: 0, eqeqeq: [2, "smart"] */ -/* global createCache db calcStyleDigest db tryRegExp styleCodeEmpty styleSectionGlobal - getStyleWithNoCode msg prefs sync uuidv4 URLS colorScheme */ -/* exported styleManager */ +/* global API msg */// msg.js +/* global CHROME URLS stringAsRegExp tryRegExp tryURL */// toolbox.js +/* global bgReady compareRevision */// common.js +/* global calcStyleDigest styleCodeEmpty styleSectionGlobal */// sections-util.js +/* global db */ +/* global prefs */ +/* global tabMan */ +/* global usercssMan */ +/* global colorScheme */ 'use strict'; /* @@ -10,395 +15,415 @@ is added/updated, it broadcast a message to content script and the content script would try to fetch the new code. The live preview feature relies on `runtime.connect` and `port.onDisconnect` -to cleanup the temporary code. See /edit/live-preview.js. +to cleanup the temporary code. See livePreview in /edit. */ -const styleManager = (() => { - const preparing = prepare(); - /* styleId => { - data: styleData, - preview: styleData, - appliesTo: Set - } */ - const styles = new Map(); +const styleMan = (() => { + + //#region Declarations + + /** @typedef {{ + style: StyleObj + preview?: StyleObj + appliesTo: Set + }} StyleMapData */ + /** @type {Map} */ + const dataMap = new Map(); const uuidIndex = new Map(); - - /* url => { - maybeMatch: Set, - sections: Object { - id: styleId, - code: Array - }> - } */ + /** @typedef {Object} StyleSectionsToApply */ + /** @type {Map, sections: StyleSectionsToApply}>} */ const cachedStyleForUrl = createCache({ - onDeleted: (url, cache) => { + onDeleted(url, cache) { for (const section of Object.values(cache.sections)) { - const style = styles.get(section.id); - if (style) { - style.appliesTo.delete(url); - } + const data = id2data(section.id); + if (data) data.appliesTo.delete(url); } - } + }, }); - const BAD_MATCHER = {test: () => false}; const compileRe = createCompiler(text => `^(${text})$`); const compileSloppyRe = createCompiler(text => `^${text}$`); const compileExclusion = createCompiler(buildExclusion); + const uuidv4 = crypto.randomUUID ? crypto.randomUUID.bind(crypto) : (() => { + const seeds = crypto.getRandomValues(new Uint16Array(8)); + // 00001111-2222-M333-N444-555566667777 + seeds[3] = seeds[3] & 0x0FFF | 0x4000; // UUID version 4, M = 4 + seeds[4] = seeds[4] & 0x3FFF | 0x8000; // UUID variant 1, N = 8..0xB + return Array.from(seeds, hex4dashed).join(''); + }); + const MISSING_PROPS = { + name: style => `ID: ${style.id}`, + _id: () => uuidv4(), + _rev: () => Date.now(), + _usw: () => ({}), + }; + const DELETE_IF_NULL = ['id', 'customName', 'md5Url', 'originalMd5']; + /** @type {Promise|boolean} will be `true` to avoid wasting a microtask tick on each `await` */ + let ready = init(); - const DUMMY_URL = { - hash: '', - host: '', - hostname: '', - href: '', - origin: '', - password: '', - pathname: '', - port: '', - protocol: '', - search: '', - searchParams: new URLSearchParams(), - username: '' + chrome.runtime.onConnect.addListener(handleLivePreview); + // function handleColorScheme() { + colorScheme.onChange(() => { + for (const {style: data} of dataMap.values()) { + if (data.preferScheme === 'dark' || data.preferScheme === 'light') { + broadcastStyleUpdated(data, 'colorScheme', undefined, false); + } + } + }); + + //#endregion + //#region Exports + + return { + + /** @returns {Promise} style id */ + async delete(id, reason) { + if (ready.then) await ready; + const data = id2data(id); + const {style, appliesTo} = data; + await db.exec('delete', id); + if (reason !== 'sync') { + API.sync.delete(style._id, Date.now()); + } + for (const url of appliesTo) { + const cache = cachedStyleForUrl.get(url); + if (cache) delete cache.sections[id]; + } + dataMap.delete(id); + uuidIndex.delete(style._id); + if (style._usw && style._usw.token) { + // Must be called after the style is deleted from dataMap + API.usw.revoke(id); + } + await msg.broadcast({ + method: 'styleDeleted', + style: {id}, + }); + return id; + }, + + /** @returns {Promise} style id */ + async deleteByUUID(_id, rev) { + if (ready.then) await ready; + const id = uuidIndex.get(_id); + const oldDoc = id && id2style(id); + if (oldDoc && compareRevision(oldDoc._rev, rev) <= 0) { + // FIXME: does it make sense to set reason to 'sync' in deleteByUUID? + return styleMan.delete(id, 'sync'); + } + }, + + /** @returns {Promise} */ + async editSave(style) { + if (ready.then) await ready; + style = mergeWithMapped(style); + style.updateDate = Date.now(); + return saveStyle(style, {reason: 'editSave'}); + }, + + /** @returns {Promise} */ + async find(filter) { + if (ready.then) await ready; + const filterEntries = Object.entries(filter); + for (const {style} of dataMap.values()) { + if (filterEntries.every(([key, val]) => style[key] === val)) { + return style; + } + } + return null; + }, + + /** @returns {Promise} */ + async getAll() { + if (ready.then) await ready; + return Array.from(dataMap.values(), data2style); + }, + + /** @returns {Promise} */ + async getByUUID(uuid) { + if (ready.then) await ready; + return id2style(uuidIndex.get(uuid)); + }, + + /** @returns {Promise} */ + async getSectionsByUrl(url, id, isInitialApply) { + if (ready.then) await ready; + if (isInitialApply && prefs.get('disableAll')) { + return {disableAll: true}; + } + const sender = CHROME && this && this.sender || {}; + if (sender.frameId === 0) { + /* Chrome hides text frament from location.href of the page e.g. #:~:text=foo + so we'll use the real URL reported by webNavigation API. + TODO: if FF will do the same, this won't work as is: FF reports onCommitted too late */ + url = tabMan.get(sender.tab.id, 'url', 0) || url; + } + let cache = cachedStyleForUrl.get(url); + if (!cache) { + cache = { + sections: {}, + maybeMatch: new Set(), + }; + buildCache(cache, url, dataMap.values()); + cachedStyleForUrl.set(url, cache); + } else if (cache.maybeMatch.size) { + buildCache(cache, url, Array.from(cache.maybeMatch, id2data).filter(Boolean)); + } + return id + ? cache.sections[id] ? {[id]: cache.sections[id]} : {} + : cache.sections; + }, + + /** @returns {Promise} */ + async get(id) { + if (ready.then) await ready; + return id2style(id); + }, + + /** @returns {Promise} */ + async getByUrl(url, id = null) { + if (ready.then) await ready; + // FIXME: do we want to cache this? Who would like to open popup rapidly + // or search the DB with the same URL? + const result = []; + const styles = id + ? [id2style(id)].filter(Boolean) + : Array.from(dataMap.values(), data2style); + const query = createMatchQuery(url); + for (const style of styles) { + let excluded = false; + let excludedScheme = false; + let sloppy = false; + let sectionMatched = false; + const match = urlMatchStyle(query, style); + // TODO: enable this when the function starts returning false + // if (match === false) { + // continue; + // } + if (match === 'excluded') { + excluded = true; + } + if (match === 'excludedScheme') { + excludedScheme = true; + } + for (const section of style.sections) { + if (styleSectionGlobal(section) && styleCodeEmpty(section.code)) { + continue; + } + const match = urlMatchSection(query, section); + if (match) { + if (match === 'sloppy') { + sloppy = true; + } + sectionMatched = true; + break; + } + } + if (sectionMatched) { + result.push(/** @namespace StylesByUrlResult */ {style, excluded, sloppy, excludedScheme}); + } + } + return result; + }, + + /** @returns {Promise} */ + async importMany(items) { + if (ready.then) await ready; + for (const style of items) { + beforeSave(style); + if (style.sourceCode && style.usercssData) { + await usercssMan.buildCode(style); + } + } + const events = await db.exec('putMany', items); + return Promise.all(items.map((item, i) => { + afterSave(item, events[i]); + return handleSave(item, {reason: 'import'}); + })); + }, + + /** @returns {Promise} */ + async install(style, reason = null) { + if (ready.then) await ready; + reason = reason || dataMap.has(style.id) ? 'update' : 'install'; + style = mergeWithMapped(style); + style.originalDigest = await calcStyleDigest(style); + // FIXME: update updateDate? what about usercss config? + return saveStyle(style, {reason}); + }, + + /** @returns {Promise} */ + async putByUUID(doc) { + if (ready.then) await ready; + const id = uuidIndex.get(doc._id); + if (id) { + doc.id = id; + } else { + delete doc.id; + } + const oldDoc = id && id2style(id); + let diff = -1; + if (oldDoc) { + diff = compareRevision(oldDoc._rev, doc._rev); + if (diff > 0) { + API.sync.put(oldDoc._id, oldDoc._rev); + return; + } + } + if (diff < 0) { + doc.id = await db.exec('put', doc); + uuidIndex.set(doc._id, doc.id); + return handleSave(doc, {reason: 'sync'}); + } + }, + + save: saveStyle, + + /** @returns {Promise} style id */ + async toggle(id, enabled) { + if (ready.then) await ready; + const style = Object.assign({}, id2style(id), {enabled}); + await saveStyle(style, {reason: 'toggle', codeIsUpdated: false}); + return id; + }, + + // using bind() to skip step-into when debugging + + /** @returns {Promise} */ + addExclusion: addIncludeExclude.bind(null, 'exclusions'), + /** @returns {Promise} */ + addInclusion: addIncludeExclude.bind(null, 'inclusions'), + /** @returns {Promise} */ + removeExclusion: removeIncludeExclude.bind(null, 'exclusions'), + /** @returns {Promise} */ + removeInclusion: removeIncludeExclude.bind(null, 'inclusions'), }; - const DELETE_IF_NULL = ['id', 'customName']; + //#endregion + //#region Implementation - handleLivePreviewConnections(); - handleColorScheme(); - - return Object.assign({ - compareRevision - }, ensurePrepared({ - get, - getByUUID, - getSectionsByUrl, - putByUUID, - installStyle, - deleteStyle, - deleteByUUID, - editSave, - findStyle, - importStyle, - importMany, - toggleStyle, - getAllStyles, // used by import-export - getStylesByUrl, // used by popup - styleExists, - addExclusion, - removeExclusion, - addInclusion, - removeInclusion - })); - - function handleColorScheme() { - colorScheme.onChange(() => { - for (const {data} of styles.values()) { - if (data.preferScheme === 'dark' || data.preferScheme === 'light') { - broadcastStyleUpdated(data, 'colorScheme', undefined, false); - } - } - }); + /** @returns {StyleMapData} */ + function id2data(id) { + return dataMap.get(id); } - function handleLivePreviewConnections() { - chrome.runtime.onConnect.addListener(port => { - if (port.name !== 'livePreview') { - return; - } - let id; - port.onMessage.addListener(data => { - if (!id) { - id = data.id; - } - const style = styles.get(id); - style.preview = data; - broadcastStyleUpdated(style.preview, 'editPreview'); - }); - port.onDisconnect.addListener(() => { - port = null; - if (id) { - const style = styles.get(id); - if (!style) { - // maybe deleted - return; - } - style.preview = null; - broadcastStyleUpdated(style.data, 'editPreviewEnd'); - } - }); - }); + /** @returns {?StyleObj} */ + function id2style(id) { + return (dataMap.get(id) || {}).style; } - function escapeRegExp(text) { - // https://github.com/lodash/lodash/blob/0843bd46ef805dd03c0c8d804630804f3ba0ca3c/lodash.js#L152 - return text.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'); - } - - function get(id, noCode = false) { - const data = styles.get(id).data; - return noCode ? getStyleWithNoCode(data) : data; - } - - function getByUUID(uuid) { - const id = uuidIndex.get(uuid); - if (id) { - return get(id); - } - } - - function getAllStyles(noCode = false) { - const datas = [...styles.values()].map(s => s.data); - return noCode ? datas.map(getStyleWithNoCode) : datas; - } - - function compareRevision(rev1, rev2) { - return rev1 - rev2; - } - - function putByUUID(doc) { - const id = uuidIndex.get(doc._id); - if (id) { - doc.id = id; - } else { - delete doc.id; - } - const oldDoc = id && styles.has(id) && styles.get(id).data; - let diff = -1; - if (oldDoc) { - diff = compareRevision(oldDoc._rev, doc._rev); - if (diff > 0) { - sync.put(oldDoc._id, oldDoc._rev); - return; - } - } - if (diff < 0) { - return db.exec('put', doc) - .then(event => { - doc.id = event.target.result; - uuidIndex.set(doc._id, doc.id); - return handleSave(doc, 'sync'); - }); - } - } - - function toggleStyle(id, enabled) { - const style = styles.get(id); - const data = Object.assign({}, style.data, {enabled}); - return saveStyle(data) - .then(newData => handleSave(newData, 'toggle', false)) - .then(() => id); - } - - // used by install-hook-userstyles.js - function findStyle(filter, noCode = false) { - for (const style of styles.values()) { - if (filterMatch(filter, style.data)) { - return noCode ? getStyleWithNoCode(style.data) : style.data; - } - } - return null; - } - - function styleExists(filter) { - return [...styles.values()].some(s => filterMatch(filter, s.data)); - } - - function filterMatch(filter, target) { - for (const key of Object.keys(filter)) { - if (filter[key] !== target[key]) { - return false; - } - } - return true; - } - - function importStyle(data) { - // FIXME: is it a good idea to save the data directly? - return saveStyle(data) - .then(newData => handleSave(newData, 'import')); - } - - function importMany(items) { - items.forEach(beforeSave); - return db.exec('putMany', items) - .then(events => { - for (let i = 0; i < items.length; i++) { - afterSave(items[i], events[i].target.result); - } - return Promise.all(items.map(i => handleSave(i, 'import'))); - }); - } - - function installStyle(data, reason = null) { - const style = styles.get(data.id); - if (!style) { - data = Object.assign(createNewStyle(), data); - } else { - data = Object.assign({}, style.data, data); - } - if (!reason) { - reason = style ? 'update' : 'install'; - } - let url = !data.url && data.updateUrl; - if (url) { - const usoId = URLS.extractUsoArchiveId(url); - url = usoId && `${URLS.usoArchive}?style=${usoId}` || - URLS.extractGreasyForkId(url) && url.match(/^.*?\/\d+/)[0]; - if (url) data.url = data.installationUrl = url; - } - // FIXME: update updateDate? what about usercss config? - return calcStyleDigest(data) - .then(digest => { - data.originalDigest = digest; - return saveStyle(data); - }) - .then(newData => handleSave(newData, reason)); - } - - function editSave(data) { - const style = styles.get(data.id); - if (style) { - data = Object.assign({}, style.data, data); - } else { - data = Object.assign(createNewStyle(), data); - } - data.updateDate = Date.now(); - return saveStyle(data) - .then(newData => handleSave(newData, 'editSave')); - } - - function addIncludeExclude(id, rule, type) { - const data = Object.assign({}, styles.get(id).data); - if (!data[type]) { - data[type] = []; - } - if (data[type].includes(rule)) { - throw new Error('The rule already exists'); - } - data[type] = data[type].concat([rule]); - return saveStyle(data) - .then(newData => handleSave(newData, 'styleSettings')); - } - - function removeIncludeExclude(id, rule, type) { - const data = Object.assign({}, styles.get(id).data); - if (!data[type]) { - return; - } - if (!data[type].includes(rule)) { - return; - } - data[type] = data[type].filter(r => r !== rule); - return saveStyle(data) - .then(newData => handleSave(newData, 'styleSettings')); - } - - function addExclusion(id, rule) { - return addIncludeExclude(id, rule, 'exclusions'); - } - - function removeExclusion(id, rule) { - return removeIncludeExclude(id, rule, 'exclusions'); - } - - function addInclusion(id, rule) { - return addIncludeExclude(id, rule, 'inclusions'); - } - - function removeInclusion(id, rule) { - return removeIncludeExclude(id, rule, 'inclusions'); - } - - function deleteStyle(id, reason) { - const style = styles.get(id); - const rev = Date.now(); - return db.exec('delete', id) - .then(() => { - if (reason !== 'sync') { - sync.delete(style.data._id, rev); - } - for (const url of style.appliesTo) { - const cache = cachedStyleForUrl.get(url); - if (cache) { - delete cache.sections[id]; - } - } - styles.delete(id); - uuidIndex.delete(style.data._id); - return msg.broadcast({ - method: 'styleDeleted', - style: {id} - }); - }) - .then(() => id); - } - - function deleteByUUID(_id, rev) { - const id = uuidIndex.get(_id); - const oldDoc = id && styles.has(id) && styles.get(id).data; - if (oldDoc && compareRevision(oldDoc._rev, rev) <= 0) { - // FIXME: does it make sense to set reason to 'sync' in deleteByUUID? - return deleteStyle(id, 'sync'); - } - } - - function ensurePrepared(methods) { - const prepared = {}; - for (const [name, fn] of Object.entries(methods)) { - prepared[name] = (...args) => - preparing.then(() => fn(...args)); - } - return prepared; + /** @returns {?StyleObj} */ + function data2style(data) { + return data && data.style; } + /** @returns {StyleObj} */ function createNewStyle() { - return { + return /** @namespace StyleObj */ { enabled: true, updateUrl: null, md5Url: null, url: null, originalMd5: null, - installDate: Date.now() + installDate: Date.now(), }; } - function broadcastStyleUpdated(data, reason, method = 'styleUpdated', codeIsUpdated = true) { - const style = styles.get(data.id); + /** @returns {void} */ + function storeInMap(style) { + dataMap.set(style.id, { + style, + appliesTo: new Set(), + }); + } + + /** @returns {StyleObj} */ + function mergeWithMapped(style) { + return Object.assign({}, + id2style(style.id) || createNewStyle(), + style); + } + + function handleLivePreview(port) { + if (port.name !== 'livePreview') { + return; + } + let id; + port.onMessage.addListener(style => { + if (!id) id = style.id; + const data = id2data(id); + data.preview = style; + broadcastStyleUpdated(style, 'editPreview'); + }); + port.onDisconnect.addListener(() => { + port = null; + if (id) { + const data = id2data(id); + if (data) { + data.preview = null; + broadcastStyleUpdated(data.style, 'editPreviewEnd'); + } + } + }); + } + + async function addIncludeExclude(type, id, rule) { + if (ready.then) await ready; + const style = Object.assign({}, id2style(id)); + const list = style[type] || (style[type] = []); + if (list.includes(rule)) { + throw new Error('The rule already exists'); + } + style[type] = list.concat([rule]); + return saveStyle(style, {reason: 'styleSettings'}); + } + + async function removeIncludeExclude(type, id, rule) { + if (ready.then) await ready; + const style = Object.assign({}, id2style(id)); + const list = style[type]; + if (!list || !list.includes(rule)) { + return; + } + style[type] = list.filter(r => r !== rule); + return saveStyle(style, {reason: 'styleSettings'}); + } + + function broadcastStyleUpdated(style, reason, method = 'styleUpdated', codeIsUpdated = true) { + const {id} = style; + const data = id2data(id); const excluded = new Set(); const updated = new Set(); for (const [url, cache] of cachedStyleForUrl.entries()) { - if (!style.appliesTo.has(url)) { - cache.maybeMatch.add(data.id); + if (!data.appliesTo.has(url)) { + cache.maybeMatch.add(id); continue; } - const code = getAppliedCode(createMatchQuery(url), data); - if (!code) { - excluded.add(url); - delete cache.sections[data.id]; - } else { + const code = getAppliedCode(createMatchQuery(url), style); + if (code) { updated.add(url); - cache.sections[data.id] = { - id: data.id, - code - }; + cache.sections[id] = {id, code}; + } else { + excluded.add(url); + delete cache.sections[id]; } } - style.appliesTo = updated; + data.appliesTo = updated; return msg.broadcast({ method, - style: { - id: data.id, - md5Url: data.md5Url, - enabled: data.enabled - }, reason, - codeIsUpdated + codeIsUpdated, + style: { + id, + md5Url: style.md5Url, + enabled: style.enabled, + }, }); } function beforeSave(style) { if (!style.name) { - throw new Error('style name is empty'); + throw new Error('Style name is empty'); } for (const key of DELETE_IF_NULL) { if (style[key] == null) { @@ -409,7 +434,7 @@ const styleManager = (() => { style._id = uuidv4(); } style._rev = Date.now(); - fixUsoMd5Issue(style); + fixKnownProblems(style); } function afterSave(style, newId) { @@ -417,123 +442,29 @@ const styleManager = (() => { style.id = newId; } uuidIndex.set(style._id, style.id); - sync.put(style._id, style._rev); + API.sync.put(style._id, style._rev); } - function saveStyle(style) { + async function saveStyle(style, handlingOptions) { beforeSave(style); - return db.exec('put', style) - .then(event => { - afterSave(style, event.target.result); - return style; - }); + const newId = await db.exec('put', style); + afterSave(style, newId); + return handleSave(style, handlingOptions); } - function handleSave(data, reason, codeIsUpdated) { - const style = styles.get(data.id); - let method; - if (!style) { - styles.set(data.id, { - appliesTo: new Set(), - data - }); - method = 'styleAdded'; + function handleSave(style, {reason, codeIsUpdated, broadcast = true}) { + const data = id2data(style.id); + const method = data ? 'styleUpdated' : 'styleAdded'; + if (!data) { + storeInMap(style); } else { - style.data = data; - method = 'styleUpdated'; + data.style = style; } - broadcastStyleUpdated(data, reason, method, codeIsUpdated); - return data; + if (broadcast) broadcastStyleUpdated(style, reason, method, codeIsUpdated); + return style; } // get styles matching a URL, including sloppy regexps and excluded items. - function getStylesByUrl(url, id = null) { - // FIXME: do we want to cache this? Who would like to open popup rapidly - // or search the DB with the same URL? - const result = []; - const datas = !id ? [...styles.values()].map(s => s.data) : - styles.has(id) ? [styles.get(id).data] : []; - const query = createMatchQuery(url); - for (const data of datas) { - let excluded = false; - let sloppy = false; - let sectionMatched = false; - let excludedScheme = false; - const match = urlMatchStyle(query, data); - // TODO: enable this when the function starts returning false - // if (match === false) { - // continue; - // } - if (match === 'excluded') { - excluded = true; - } - if (match === 'excludedScheme') { - excludedScheme = true; - } - for (const section of data.sections) { - if (styleSectionGlobal(section) && styleCodeEmpty(section.code)) { - continue; - } - const match = urlMatchSection(query, section); - if (match) { - if (match === 'sloppy') { - sloppy = true; - } - sectionMatched = true; - break; - } - } - if (sectionMatched) { - result.push({ - data: getStyleWithNoCode(data), - excluded, - sloppy, - excludedScheme - }); - } - } - return result; - } - - function getSectionsByUrl(url, id, isInitialApply) { - let cache = cachedStyleForUrl.get(url); - if (!cache) { - cache = { - sections: {}, - maybeMatch: new Set() - }; - buildCache(styles.values()); - cachedStyleForUrl.set(url, cache); - } else if (cache.maybeMatch.size) { - buildCache( - [...cache.maybeMatch] - .filter(i => styles.has(i)) - .map(i => styles.get(i)) - ); - } - const res = id - ? cache.sections[id] ? {[id]: cache.sections[id]} : {} - : cache.sections; - // Avoiding flicker of needlessly applied styles by providing both styles & pref in one API call - return isInitialApply && prefs.get('disableAll') - ? Object.assign({disableAll: true}, res) - : res; - - function buildCache(styleList) { - const query = createMatchQuery(url); - for (const {appliesTo, data, preview} of styleList) { - const code = getAppliedCode(query, preview || data); - if (code) { - cache.sections[data.id] = { - id: data.id, - code - }; - appliesTo.add(url); - } - } - } - } - function getAppliedCode(query, data) { if (urlMatchStyle(query, data) !== true) { return; @@ -547,60 +478,65 @@ const styleManager = (() => { return code.length && code; } - function prepare() { - const ADD_MISSING_PROPS = { - name: style => `ID: ${style.id}`, - _id: () => uuidv4(), - _rev: () => Date.now() - }; - - return db.exec('getAll') - .then(event => event.target.result || []) - .then(styleList => { - // setup missing _id, _rev - const updated = []; - for (const style of styleList) { - if (addMissingProperties(style)) { - updated.push(style); - } - } - if (updated.length) { - return db.exec('putMany', updated) - .then(() => styleList); - } - return styleList; - }) - .then(styleList => { - for (const style of styleList) { - fixUsoMd5Issue(style); - styles.set(style.id, { - appliesTo: new Set(), - data: style - }); - uuidIndex.set(style._id, style.id); - } - }); - - function addMissingProperties(style) { - let touched = false; - for (const key in ADD_MISSING_PROPS) { - if (!style[key]) { - style[key] = ADD_MISSING_PROPS[key](style); - touched = true; - } - } - // upgrade the old way of customizing local names - const {originalName} = style; - if (originalName) { - touched = true; - if (originalName !== style.name) { - style.customName = style.name; - style.name = originalName; - } - delete style.originalName; - } - return touched; + async function init() { + const styles = await db.exec('getAll') || []; + const updated = styles.filter(fixKnownProblems); + if (updated.length) { + await db.exec('putMany', updated); } + for (const style of styles) { + storeInMap(style); + uuidIndex.set(style._id, style.id); + } + ready = true; + bgReady._resolveStyles(); + } + + function fixKnownProblems(style) { + let res = 0; + for (const key in MISSING_PROPS) { + if (!style[key]) { + style[key] = MISSING_PROPS[key](style); + res = 1; + } + } + /* Upgrade the old way of customizing local names */ + const {originalName} = style; + if (originalName) { + if (originalName !== style.name) { + style.customName = style.name; + style.name = originalName; + } + delete style.originalName; + res = 1; + } + /* wrong homepage url in 1.5.20-1.5.21 due to commit 1e5f118d */ + for (const key of ['url', 'installationUrl']) { + const url = style[key]; + const fixedUrl = url && url.replace(/([^:]\/)\//, '$1'); + if (fixedUrl !== url) { + res = 1; + style[key] = fixedUrl; + } + } + let url; + /* USO bug, duplicate "update" subdomain, see #523 */ + if ((url = style.md5Url) && url.includes('update.update.userstyles')) { + res = style.md5Url = url.replace('update.update.userstyles', 'update.userstyles'); + } + /* Default homepage URL for external styles installed from a known distro */ + if ( + (!style.url || !style.installationUrl) && + (url = style.updateUrl) && + (url = URLS.extractGreasyForkInstallUrl(url) || + URLS.extractUsoArchiveInstallUrl(url) || + URLS.extractUSwInstallUrl(url) + ) + ) { + if (!style.url) res = style.url = url; + if (!style.installationUrl) res = style.installationUrl = url; + } + return Boolean(res); } function urlMatchStyle(query, style) { @@ -674,7 +610,8 @@ const styleManager = (() => { } function compileGlob(text) { - return escapeRegExp(text).replace(/\\\\\\\*|\\\*/g, m => m.length > 2 ? m : '.*'); + return stringAsRegExp(text, '', true) + .replace(/\\\\\\\*|\\\*/g, m => m.length > 2 ? m : '.*'); } function buildExclusion(text) { @@ -691,14 +628,6 @@ const styleManager = (() => { '$'; } - // The md5Url provided by USO includes a duplicate "update" subdomain (see #523), - // This fixes any already installed styles containing this error - function fixUsoMd5Issue(style) { - if (style && style.md5Url && style.md5Url.includes('update.update.userstyles')) { - style.md5Url = style.md5Url.replace('update.update.userstyles', 'update.userstyles'); - } - } - function createMatchQuery(url) { let urlWithoutHash; let urlWithoutParams; @@ -713,26 +642,98 @@ const styleManager = (() => { }, get urlWithoutParams() { if (!urlWithoutParams) { - const u = createURL(url); + const u = tryURL(url); urlWithoutParams = u.origin + u.pathname; } return urlWithoutParams; }, get domain() { if (!domain) { - const u = createURL(url); + const u = tryURL(url); domain = u.hostname; } return domain; - } + }, }; } - function createURL(url) { - try { - return new URL(url); - } catch (err) { - return DUMMY_URL; + function buildCache(cache, url, styleList) { + const query = createMatchQuery(url); + for (const {style, appliesTo, preview} of styleList) { + const code = getAppliedCode(query, preview || style); + if (code) { + const id = style.id; + cache.sections[id] = {id, code}; + appliesTo.add(url); + } } } + + /** uuidv4 helper: converts to a 4-digit hex string and adds "-" at required positions */ + function hex4dashed(num, i) { + return (num + 0x10000).toString(16).slice(-4) + (i >= 1 && i <= 4 ? '-' : ''); + } + + //#endregion })(); + +/** Creates a FIFO limit-size map. */ +function createCache({size = 1000, onDeleted} = {}) { + const map = new Map(); + const buffer = Array(size); + let index = 0; + let lastIndex = 0; + return { + get(id) { + const item = map.get(id); + return item && item.data; + }, + set(id, data) { + if (map.size === size) { + // full + map.delete(buffer[lastIndex].id); + if (onDeleted) { + onDeleted(buffer[lastIndex].id, buffer[lastIndex].data); + } + lastIndex = (lastIndex + 1) % size; + } + const item = {id, data, index}; + map.set(id, item); + buffer[index] = item; + index = (index + 1) % size; + }, + delete(id) { + const item = map.get(id); + if (!item) { + return false; + } + map.delete(item.id); + const lastItem = buffer[lastIndex]; + lastItem.index = item.index; + buffer[item.index] = lastItem; + lastIndex = (lastIndex + 1) % size; + if (onDeleted) { + onDeleted(item.id, item.data); + } + return true; + }, + clear() { + map.clear(); + index = lastIndex = 0; + }, + has: id => map.has(id), + *entries() { + for (const [id, item] of map) { + yield [id, item.data]; + } + }, + *values() { + for (const item of map.values()) { + yield item.data; + } + }, + get size() { + return map.size; + }, + }; +} diff --git a/background/style-search-db.js b/background/style-search-db.js new file mode 100644 index 00000000..23e18f76 --- /dev/null +++ b/background/style-search-db.js @@ -0,0 +1,108 @@ +/* global API */// msg.js +/* global RX_META debounce stringAsRegExp tryRegExp */// toolbox.js +/* global addAPI */// common.js +'use strict'; + +(() => { + // toLocaleLowerCase cache, autocleared after 1 minute + const cache = new Map(); + const METAKEYS = ['customName', 'name', 'url', 'installationUrl', 'updateUrl']; + + const extractMeta = style => + style.usercssData + ? (style.sourceCode.match(RX_META) || [''])[0] + : null; + + const stripMeta = style => + style.usercssData + ? style.sourceCode.replace(RX_META, '') + : null; + + const MODES = Object.assign(Object.create(null), { + code: (style, test) => + style.usercssData + ? test(stripMeta(style)) + : searchSections(style, test, 'code'), + + meta: (style, test, part) => + METAKEYS.some(key => test(style[key])) || + test(part === 'all' ? style.sourceCode : extractMeta(style)) || + searchSections(style, test, 'funcs'), + + name: (style, test) => + test(style.customName) || + test(style.name), + + all: (style, test) => + MODES.meta(style, test, 'all') || + !style.usercssData && MODES.code(style, test), + }); + + addAPI(/** @namespace API */ { + styles: { + /** + * @param params + * @param {string} params.query - 1. url:someurl 2. text (may contain quoted parts like "qUot Ed") + * @param {'name'|'meta'|'code'|'all'|'url'} [params.mode=all] + * @param {number[]} [params.ids] - if not specified, all styles are searched + * @returns {number[]} - array of matched styles ids + */ + async searchDB({query, mode = 'all', ids}) { + let res = []; + if (mode === 'url' && query) { + res = (await API.styles.getByUrl(query)).map(r => r.style.id); + } else if (mode in MODES) { + const modeHandler = MODES[mode]; + const m = /^\/(.+?)\/([gimsuy]*)$/.exec(query); + const rx = m && tryRegExp(m[1], m[2]); + const test = rx ? rx.test.bind(rx) : createTester(query); + res = (await API.styles.getAll()) + .filter(style => + (!ids || ids.includes(style.id)) && + (!query || modeHandler(style, test))) + .map(style => style.id); + if (cache.size) debounce(clearCache, 60e3); + } + return res; + }, + }, + }); + + function createTester(query) { + const flags = `u${lower(query) === query ? 'i' : ''}`; + const words = query + .split(/(".*?")|\s+/) + .filter(Boolean) + .map(w => w.startsWith('"') && w.endsWith('"') + ? w.slice(1, -1) + : w) + .filter(w => w.length > 1); + const rxs = (words.length ? words : [query]) + .map(w => stringAsRegExp(w, flags)); + return text => rxs.every(rx => rx.test(text)); + } + + function searchSections({sections}, test, part) { + const inCode = part === 'code' || part === 'all'; + const inFuncs = part === 'funcs' || part === 'all'; + for (const section of sections) { + for (const prop in section) { + const value = section[prop]; + if (inCode && prop === 'code' && test(value) || + inFuncs && Array.isArray(value) && value.some(str => test(str))) { + return true; + } + } + } + } + + function lower(text) { + let result = cache.get(text); + if (!result) cache.set(text, result = text.toLocaleLowerCase()); + return result; + } + + function clearCache() { + cache.clear(); + } +})(); diff --git a/background/style-via-api.js b/background/style-via-api.js index 6793c65c..ed08dac4 100644 --- a/background/style-via-api.js +++ b/background/style-via-api.js @@ -1,7 +1,14 @@ -/* global API_METHODS styleManager CHROME prefs */ +/* global API */// msg.js +/* global addAPI */// common.js +/* global isEmptyObj */// toolbox.js +/* global prefs */ 'use strict'; -API_METHODS.styleViaAPI = !CHROME && (() => { +/** + * Uses chrome.tabs.insertCSS + */ + +(() => { const ACTIONS = { styleApply, styleDeleted, @@ -11,25 +18,25 @@ API_METHODS.styleViaAPI = !CHROME && (() => { prefChanged, updateCount, }; - const NOP = Promise.resolve(new Error('NOP')); + const NOP = new Error('NOP'); const onError = () => {}; - /* : Object : Object url: String, non-enumerable : Array of strings section code */ const cache = new Map(); - let observingTabs = false; - return function (request) { - const action = ACTIONS[request.method]; - return !action ? NOP : - action(request, this.sender) - .catch(onError) - .then(maybeToggleObserver); - }; + addAPI(/** @namespace API */ { + async styleViaAPI(request) { + try { + const fn = ACTIONS[request.method]; + return fn ? fn(request, this.sender) : NOP; + } catch (e) {} + maybeToggleObserver(); + }, + }); function updateCount(request, sender) { const {tab, frameId} = sender; @@ -37,7 +44,7 @@ API_METHODS.styleViaAPI = !CHROME && (() => { throw new Error('we do not count styles for frames'); } const {frameStyles} = getCachedData(tab.id, frameId); - API_METHODS.updateIconBadge.call({sender}, Object.keys(frameStyles)); + API.updateIconBadge.call({sender}, Object.keys(frameStyles)); } function styleApply({id = null, ignoreUrlCheck = false}, {tab, frameId, url}) { @@ -48,7 +55,7 @@ API_METHODS.styleViaAPI = !CHROME && (() => { if (id === null && !ignoreUrlCheck && frameStyles.url === url) { return NOP; } - return styleManager.getSectionsByUrl(url, id).then(sections => { + return API.styles.getSectionsByUrl(url, id).then(sections => { const tasks = []; for (const section of Object.values(sections)) { const styleId = section.id; @@ -125,7 +132,7 @@ API_METHODS.styleViaAPI = !CHROME && (() => { } const {tab, frameId} = sender; const {tabFrames, frameStyles} = getCachedData(tab.id, frameId); - if (isEmpty(frameStyles)) { + if (isEmptyObj(frameStyles)) { return NOP; } removeFrameIfEmpty(tab.id, frameId, tabFrames, {}); @@ -162,7 +169,7 @@ API_METHODS.styleViaAPI = !CHROME && (() => { const tabFrames = cache.get(tabId); if (tabFrames && frameId in tabFrames) { delete tabFrames[frameId]; - if (isEmpty(tabFrames)) { + if (isEmptyObj(tabFrames)) { onTabRemoved(tabId); } } @@ -178,9 +185,9 @@ API_METHODS.styleViaAPI = !CHROME && (() => { } function removeFrameIfEmpty(tabId, frameId, tabFrames, frameStyles) { - if (isEmpty(frameStyles)) { + if (isEmptyObj(frameStyles)) { delete tabFrames[frameId]; - if (isEmpty(tabFrames)) { + if (isEmptyObj(tabFrames)) { cache.delete(tabId); } return true; @@ -223,11 +230,4 @@ API_METHODS.styleViaAPI = !CHROME && (() => { return browser.tabs.removeCSS(tabId, {frameId, code, matchAboutBlank: true}) .catch(onError); } - - function isEmpty(obj) { - for (const k in obj) { - return false; - } - return true; - } })(); diff --git a/background/style-via-webrequest.js b/background/style-via-webrequest.js new file mode 100644 index 00000000..4913fd28 --- /dev/null +++ b/background/style-via-webrequest.js @@ -0,0 +1,152 @@ +/* global API */// msg.js +/* global CHROME ignoreChromeError */// toolbox.js +/* global prefs */ +'use strict'; + +(() => { + const idCSP = 'patchCsp'; + const idOFF = 'disableAll'; + const idXHR = 'styleViaXhr'; + const rxHOST = /^('none'|(https?:\/\/)?[^']+?[^:'])$/; // strips CSP sources covered by * + const blobUrlPrefix = 'blob:' + chrome.runtime.getURL('/'); + /** @type {Object} */ + const stylesToPass = {}; + const state = {}; + const injectedCode = CHROME && `${data => { + if (self.INJECTED !== 1) { // storing data only if apply.js hasn't run yet + window[Symbol.for('styles')] = data; + } + }}`; + + toggle(); + prefs.subscribe([idXHR, idOFF, idCSP], toggle); + + function toggle() { + const off = prefs.get(idOFF); + const csp = prefs.get(idCSP) && !off; + const xhr = prefs.get(idXHR) && !off; + if (xhr === state.xhr && csp === state.csp && off === state.off) { + return; + } + const reqFilter = { + urls: ['*://*/*'], + types: ['main_frame', 'sub_frame'], + }; + chrome.webNavigation.onCommitted.removeListener(injectData); + chrome.webRequest.onBeforeRequest.removeListener(prepareStyles); + chrome.webRequest.onHeadersReceived.removeListener(modifyHeaders); + if (xhr || csp) { + // We unregistered it above so that the optional EXTRA_HEADERS is properly re-registered + chrome.webRequest.onHeadersReceived.addListener(modifyHeaders, reqFilter, [ + 'blocking', + 'responseHeaders', + xhr && chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS, + ].filter(Boolean)); + } + if (CHROME ? !off : xhr || csp) { + chrome.webRequest.onBeforeRequest.addListener(prepareStyles, reqFilter); + } + if (CHROME && !off) { + chrome.webNavigation.onCommitted.addListener(injectData, {url: [{urlPrefix: 'http'}]}); + } + state.csp = csp; + state.off = off; + state.xhr = xhr; + } + + /** @param {chrome.webRequest.WebRequestBodyDetails} req */ + async function prepareStyles(req) { + const sections = await API.styles.getSectionsByUrl(req.url); + stylesToPass[req2key(req)] = /** @namespace StylesToPass */ { + blobId: '', + str: JSON.stringify(sections), + timer: setTimeout(cleanUp, 600e3, req), + }; + } + + function injectData(req) { + const data = stylesToPass[req2key(req)]; + if (data && !data.injected) { + data.injected = true; + chrome.tabs.executeScript(req.tabId, { + frameId: req.frameId, + runAt: 'document_start', + code: `(${injectedCode})(${data.str})`, + }, ignoreChromeError); + if (!state.xhr) cleanUp(req); + } + } + + /** @param {chrome.webRequest.WebResponseHeadersDetails} req */ + function modifyHeaders(req) { + const {responseHeaders} = req; + const data = stylesToPass[req2key(req)]; + if (!data || data.str === '{}') { + cleanUp(req); + return; + } + if (state.xhr) { + data.blobId = URL.createObjectURL(new Blob([data.str])).slice(blobUrlPrefix.length); + responseHeaders.push({ + name: 'Set-Cookie', + value: `${chrome.runtime.id}=${data.blobId}`, + }); + } + const csp = state.csp && + responseHeaders.find(h => h.name.toLowerCase() === 'content-security-policy'); + if (csp) { + patchCsp(csp); + } + if (state.xhr || csp) { + return {responseHeaders}; + } + } + + /** @param {chrome.webRequest.HttpHeader} csp */ + function patchCsp(csp) { + const src = {}; + for (let p of csp.value.split(';')) { + p = p.trim().split(/\s+/); + src[p[0]] = p.slice(1); + } + // Allow style assets + patchCspSrc(src, 'img-src', 'data:', '*'); + patchCspSrc(src, 'font-src', 'data:', '*'); + // Allow our DOM styles, allow @import from any URL + patchCspSrc(src, 'style-src', "'unsafe-inline'", '*'); + // Allow our XHR cookies in CSP sandbox (known case: raw github urls) + if (src.sandbox && !src.sandbox.includes('allow-same-origin')) { + src.sandbox.push('allow-same-origin'); + } + csp.value = Object.entries(src).map(([k, v]) => + `${k}${v.length ? ' ' : ''}${v.join(' ')}`).join('; '); + } + + function patchCspSrc(src, name, ...values) { + let def = src['default-src']; + let list = src[name]; + if (def || list) { + if (!def) def = []; + if (!list) list = [...def]; + if (values.includes('*')) list = src[name] = list.filter(v => !rxHOST.test(v)); + list.push(...values.filter(v => !list.includes(v) && !def.includes(v))); + if (!list.length) delete src[name]; + } + } + + function cleanUp(req) { + const key = req2key(req); + const data = stylesToPass[key]; + if (data) { + delete stylesToPass[key]; + clearTimeout(data.timer); + if (data.blobId) { + URL.revokeObjectURL(blobUrlPrefix + data.blobId); + } + } + } + + function req2key(req) { + return req.tabId + ':' + req.frameId; + } +})(); diff --git a/background/style-via-xhr.js b/background/style-via-xhr.js deleted file mode 100644 index dc7dc1bc..00000000 --- a/background/style-via-xhr.js +++ /dev/null @@ -1,85 +0,0 @@ -/* global API CHROME prefs */ -'use strict'; - -// eslint-disable-next-line no-unused-expressions -CHROME && (async () => { - const prefId = 'styleViaXhr'; - const blobUrlPrefix = 'blob:' + chrome.runtime.getURL('/'); - const stylesToPass = {}; - - await prefs.initializing; - toggle(prefId, prefs.get(prefId)); - prefs.subscribe([prefId], toggle); - - function toggle(key, value) { - if (!chrome.declarativeContent) { // not yet granted in options page - value = false; - } - if (value) { - const reqFilter = { - urls: [''], - types: ['main_frame', 'sub_frame'], - }; - chrome.webRequest.onBeforeRequest.addListener(prepareStyles, reqFilter); - chrome.webRequest.onHeadersReceived.addListener(passStyles, reqFilter, [ - 'blocking', - 'responseHeaders', - chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS, - ].filter(Boolean)); - } else { - chrome.webRequest.onBeforeRequest.removeListener(prepareStyles); - chrome.webRequest.onHeadersReceived.removeListener(passStyles); - } - if (!chrome.declarativeContent) { - return; - } - chrome.declarativeContent.onPageChanged.removeRules([prefId], async () => { - if (!value) return; - chrome.declarativeContent.onPageChanged.addRules([{ - id: prefId, - conditions: [ - new chrome.declarativeContent.PageStateMatcher({ - pageUrl: {urlContains: ':'}, - }), - ], - actions: [ - new chrome.declarativeContent.RequestContentScript({ - allFrames: true, - // This runs earlier than document_start - js: chrome.runtime.getManifest().content_scripts[0].js, - }), - ], - }]); - }); - } - - /** @param {chrome.webRequest.WebRequestBodyDetails} req */ - function prepareStyles(req) { - API.getSectionsByUrl(req.url).then(sections => { - const str = JSON.stringify(sections); - if (str !== '{}') { - stylesToPass[req.requestId] = URL.createObjectURL(new Blob([str])).slice(blobUrlPrefix.length); - setTimeout(cleanUp, 600e3, req.requestId); - } - }); - } - - /** @param {chrome.webRequest.WebResponseHeadersDetails} req */ - function passStyles(req) { - const blobId = stylesToPass[req.requestId]; - if (blobId) { - const {responseHeaders} = req; - responseHeaders.push({ - name: 'Set-Cookie', - value: `${chrome.runtime.id}=${prefs.get('disableAll') ? 1 : 0}${blobId}`, - }); - return {responseHeaders}; - } - } - - function cleanUp(key) { - const blobId = stylesToPass[key]; - delete stylesToPass[key]; - if (blobId) URL.revokeObjectURL(blobUrlPrefix + blobId); - } -})(); diff --git a/background/sync-manager.js b/background/sync-manager.js new file mode 100644 index 00000000..21a644c7 --- /dev/null +++ b/background/sync-manager.js @@ -0,0 +1,264 @@ +/* global API msg */// msg.js +/* global chromeLocal */// storage-util.js +/* global compareRevision */// common.js +/* global iconMan */ +/* global prefs */ +/* global tokenMan */ +'use strict'; + +const syncMan = (() => { + //#region Init + + const SYNC_DELAY = 1; // minutes + const SYNC_INTERVAL = 30; // minutes + const SYNC_LOCK_RETRIES = 10; // number of retries before the error is reported for scheduled sync + const STATES = Object.freeze({ + connected: 'connected', + connecting: 'connecting', + disconnected: 'disconnected', + disconnecting: 'disconnecting', + }); + const STORAGE_KEY = 'sync/state/'; + const status = /** @namespace SyncManager.Status */ { + STATES, + state: STATES.disconnected, + syncing: false, + progress: null, + currentDriveName: null, + errorMessage: null, + login: false, + lockRetries: 0, + }; + let lastError = null; + let ctrl; + let currentDrive; + /** @type {Promise|boolean} will be `true` to avoid wasting a microtask tick on each `await` */ + let ready = prefs.ready.then(() => { + ready = true; + prefs.subscribe('sync.enabled', + (_, val) => val === 'none' + ? syncMan.stop() + : syncMan.start(val, true), + {runNow: true}); + }); + + chrome.alarms.onAlarm.addListener(async ({name}) => { + if (name === 'syncNow') { + await syncMan.syncNow({isScheduled: true}); + const retrying = status.lockRetries / SYNC_LOCK_RETRIES * Math.random(); + schedule(SYNC_DELAY + SYNC_INTERVAL * (retrying || 1)); + } + }); + + //#endregion + //#region Exports + + return { + + async delete(...args) { + if (ready.then) await ready; + if (!currentDrive) return; + schedule(); + return ctrl.delete(...args); + }, + + /** @returns {Promise} */ + async getStatus() { + return status; + }, + + async login(name) { + if (ready.then) await ready; + if (!name) name = prefs.get('sync.enabled'); + await tokenMan.revokeToken(name); + try { + await tokenMan.getToken(name, true); + status.login = true; + } catch (err) { + status.login = false; + throw err; + } finally { + emitStatusChange(); + } + }, + + async put(...args) { + if (ready.then) await ready; + if (!currentDrive) return; + schedule(); + return ctrl.put(...args); + }, + + async start(name, fromPref = false) { + if (ready.then) await ready; + if (!ctrl) await initController(); + + if (currentDrive) return; + currentDrive = getDrive(name); + ctrl.use(currentDrive); + + status.state = STATES.connecting; + status.currentDriveName = currentDrive.name; + emitStatusChange(); + + if (fromPref) { + status.login = true; + } else { + try { + await syncMan.login(name); + } catch (err) { + console.error(err); + status.errorMessage = err.message; + lastError = err; + emitStatusChange(); + return syncMan.stop(); + } + } + + await ctrl.init(); + + await syncMan.syncNow(name); + prefs.set('sync.enabled', name); + status.state = STATES.connected; + schedule(SYNC_INTERVAL); + emitStatusChange(); + }, + + async stop() { + if (ready.then) await ready; + if (!currentDrive) return; + chrome.alarms.clear('syncNow'); + status.state = STATES.disconnecting; + emitStatusChange(); + try { + await ctrl.uninit(); + await tokenMan.revokeToken(currentDrive.name); + await chromeLocal.remove(STORAGE_KEY + currentDrive.name); + } catch (e) {} + currentDrive = null; + prefs.set('sync.enabled', 'none'); + status.state = STATES.disconnected; + status.currentDriveName = null; + status.login = false; + emitStatusChange(); + }, + + async syncNow({isScheduled} = {}) { + if (ready.then) await ready; + if (!currentDrive || !status.login) { + console.warn('cannot sync when disconnected'); + return; + } + try { + await ctrl.syncNow(); + status.errorMessage = null; + lastError = null; + } catch (err) { + status.errorMessage = err.message; + lastError = err; + if (isScheduled && + err.code === 409 && + ++status.lockRetries <= SYNC_LOCK_RETRIES) { + return; + } + if (isGrantError(err)) { + status.login = false; + } + } + status.lockRetries = 0; + emitStatusChange(); + }, + }; + + //#endregion + //#region Utils + + async function initController() { + await require(['/vendor/db-to-cloud/db-to-cloud.min']); /* global dbToCloud */ + ctrl = dbToCloud.dbToCloud({ + onGet(id) { + return API.styles.getByUUID(id); + }, + onPut(doc) { + return API.styles.putByUUID(doc); + }, + onDelete(id, rev) { + return API.styles.deleteByUUID(id, rev); + }, + async onFirstSync() { + for (const i of await API.styles.getAll()) { + ctrl.put(i._id, i._rev); + } + }, + onProgress(e) { + if (e.phase === 'start') { + status.syncing = true; + } else if (e.phase === 'end') { + status.syncing = false; + status.progress = null; + } else { + status.progress = e; + } + emitStatusChange(); + }, + compareRevision, + getState(drive) { + return chromeLocal.getValue(STORAGE_KEY + drive.name); + }, + setState(drive, state) { + return chromeLocal.setValue(STORAGE_KEY + drive.name, state); + }, + }); + } + + function emitStatusChange() { + msg.broadcastExtension({method: 'syncStatusUpdate', status}); + iconMan.overrideBadge(getErrorBadge()); + } + + function isNetworkError(err) { + return ( + err.name === 'TypeError' && /networkerror|failed to fetch/i.test(err.message) || + err.code === 502 + ); + } + + function isGrantError(err) { + if (err.code === 401) return true; + if (err.code === 400 && /invalid_grant/.test(err.message)) return true; + return false; + } + + function getErrorBadge() { + if (status.state === STATES.connected && + (!status.login || lastError && !isNetworkError(lastError))) { + return { + text: 'x', + color: '#F00', + title: !status.login ? 'syncErrorRelogin' : `${ + chrome.i18n.getMessage('syncError') + }\n---------------------\n${ + // splitting to limit each line length + lastError.message.replace(/.{60,}?\s(?=.{30,})/g, '$&\n') + }`, + }; + } + } + + function getDrive(name) { + if (name === 'dropbox' || name === 'google' || name === 'onedrive') { + return dbToCloud.drive[name]({ + getAccessToken: () => tokenMan.getToken(name), + }); + } + throw new Error(`unknown cloud name: ${name}`); + } + + function schedule(delay = SYNC_DELAY) { + chrome.alarms.create('syncNow', { + delayInMinutes: delay, // fractional values are supported + }); + } + + //#endregion +})(); diff --git a/background/sync.js b/background/sync.js deleted file mode 100644 index cb03f4f0..00000000 --- a/background/sync.js +++ /dev/null @@ -1,239 +0,0 @@ -/* global dbToCloud styleManager chromeLocal prefs tokenManager msg */ -/* exported sync */ - -'use strict'; - -const sync = (() => { - const SYNC_DELAY = 1; // minutes - const SYNC_INTERVAL = 30; // minutes - - const status = { - state: 'disconnected', - syncing: false, - progress: null, - currentDriveName: null, - errorMessage: null, - login: false - }; - let currentDrive; - const ctrl = dbToCloud.dbToCloud({ - onGet(id) { - return styleManager.getByUUID(id); - }, - onPut(doc) { - return styleManager.putByUUID(doc); - }, - onDelete(id, rev) { - return styleManager.deleteByUUID(id, rev); - }, - onFirstSync() { - return styleManager.getAllStyles() - .then(styles => { - styles.forEach(i => ctrl.put(i._id, i._rev)); - }); - }, - onProgress, - compareRevision(a, b) { - return styleManager.compareRevision(a, b); - }, - getState(drive) { - const key = `sync/state/${drive.name}`; - return chromeLocal.get(key) - .then(obj => obj[key]); - }, - setState(drive, state) { - const key = `sync/state/${drive.name}`; - return chromeLocal.set({ - [key]: state - }); - } - }); - - const initializing = prefs.initializing.then(() => { - prefs.subscribe(['sync.enabled'], onPrefChange); - onPrefChange(null, prefs.get('sync.enabled')); - }); - - chrome.alarms.onAlarm.addListener(info => { - if (info.name === 'syncNow') { - syncNow().catch(console.error); - } - }); - - return Object.assign({ - getStatus: () => status - }, ensurePrepared({ - start, - stop, - put: (...args) => { - if (!currentDrive) return; - schedule(); - return ctrl.put(...args); - }, - delete: (...args) => { - if (!currentDrive) return; - schedule(); - return ctrl.delete(...args); - }, - syncNow, - login - })); - - function ensurePrepared(obj) { - return Object.entries(obj).reduce((o, [key, fn]) => { - o[key] = (...args) => - initializing.then(() => fn(...args)); - return o; - }, {}); - } - - function onProgress(e) { - if (e.phase === 'start') { - status.syncing = true; - } else if (e.phase === 'end') { - status.syncing = false; - status.progress = null; - } else { - status.progress = e; - } - emitStatusChange(); - } - - function schedule(delay = SYNC_DELAY) { - chrome.alarms.create('syncNow', { - delayInMinutes: delay, - periodInMinutes: SYNC_INTERVAL - }); - } - - function onPrefChange(key, value) { - if (value === 'none') { - stop().catch(console.error); - } else { - start(value, true).catch(console.error); - } - } - - function withFinally(p, cleanup) { - return p.then( - result => { - cleanup(undefined, result); - return result; - }, - err => { - cleanup(err); - throw err; - } - ); - } - - function syncNow() { - if (!currentDrive) { - return Promise.reject(new Error('cannot sync when disconnected')); - } - return withFinally( - (ctrl.isInit() ? ctrl.syncNow() : ctrl.start()) - .catch(handle401Error), - err => { - status.errorMessage = err ? err.message : null; - emitStatusChange(); - } - ); - } - - function handle401Error(err) { - if (err.code === 401) { - return tokenManager.revokeToken(currentDrive.name) - .catch(console.error) - .then(() => { - status.login = false; - emitStatusChange(); - throw err; - }); - } - if (/User interaction required|Requires user interaction/i.test(err.message)) { - status.login = false; - emitStatusChange(); - } - throw err; - } - - function emitStatusChange() { - msg.broadcastExtension({method: 'syncStatusUpdate', status}); - } - - function login(name = prefs.get('sync.enabled')) { - return tokenManager.getToken(name, true) - .catch(err => { - if (/Authorization page could not be loaded/i.test(err.message)) { - // FIXME: Chrome always fails at the first login so we try again - return tokenManager.getToken(name); - } - throw err; - }) - .then(() => { - status.login = true; - emitStatusChange(); - }); - } - - function start(name, fromPref = false) { - if (currentDrive) { - return Promise.resolve(); - } - currentDrive = getDrive(name); - ctrl.use(currentDrive); - status.state = 'connecting'; - status.currentDriveName = currentDrive.name; - status.login = true; - emitStatusChange(); - return withFinally( - (fromPref ? Promise.resolve() : login(name)) - .catch(handle401Error) - .then(() => syncNow()), - err => { - status.errorMessage = err ? err.message : null; - // FIXME: should we move this logic to options.js? - if (err && !fromPref) { - console.error(err); - return stop(); - } - prefs.set('sync.enabled', name); - schedule(SYNC_INTERVAL); - status.state = 'connected'; - emitStatusChange(); - } - ); - } - - function getDrive(name) { - if (name === 'dropbox' || name === 'google' || name === 'onedrive') { - return dbToCloud.drive[name]({ - getAccessToken: () => tokenManager.getToken(name) - }); - } - throw new Error(`unknown cloud name: ${name}`); - } - - function stop() { - if (!currentDrive) { - return Promise.resolve(); - } - chrome.alarms.clear('syncNow'); - status.state = 'disconnecting'; - emitStatusChange(); - return withFinally( - ctrl.stop() - .then(() => tokenManager.revokeToken(currentDrive.name)) - .then(() => chromeLocal.remove(`sync/state/${currentDrive.name}`)), - () => { - currentDrive = null; - prefs.set('sync.enabled', 'none'); - status.state = 'disconnected'; - status.currentDriveName = null; - status.login = false; - emitStatusChange(); - } - ); - } -})(); diff --git a/background/tab-manager.js b/background/tab-manager.js index 49061fcf..0a1fea07 100644 --- a/background/tab-manager.js +++ b/background/tab-manager.js @@ -1,32 +1,37 @@ -/* global navigatorUtil */ -/* exported tabManager */ +/* global bgReady */// common.js +/* global navMan */ 'use strict'; -const tabManager = (() => { - const listeners = []; +const tabMan = (() => { + const listeners = new Set(); const cache = new Map(); chrome.tabs.onRemoved.addListener(tabId => cache.delete(tabId)); chrome.tabs.onReplaced.addListener((added, removed) => cache.delete(removed)); - navigatorUtil.onUrlChange(({tabId, frameId, url}) => { - if (frameId) return; - const oldUrl = tabManager.get(tabId, 'url'); - tabManager.set(tabId, 'url', url); - for (const fn of listeners) { - try { - fn({tabId, url, oldUrl}); - } catch (err) { - console.error(err); + + bgReady.all.then(() => { + navMan.onUrlChange(({tabId, frameId, url}) => { + const oldUrl = !frameId && tabMan.get(tabId, 'url', frameId); + tabMan.set(tabId, 'url', frameId, url); + if (frameId) return; + for (const fn of listeners) { + try { + fn({tabId, url, oldUrl}); + } catch (err) { + console.error(err); + } } - } + }); }); return { onUpdate(fn) { - listeners.push(fn); + listeners.add(fn); }, + get(tabId, ...keys) { return keys.reduce((meta, key) => meta && meta[key], cache.get(tabId)); }, + /** * number of keys is arbitrary, last arg is value, `undefined` will delete the last key from meta * (tabId, 'foo', 123) will set tabId's meta to {foo: 123}, @@ -47,8 +52,11 @@ const tabManager = (() => { meta[lastKey] = value; } }, + + /** @returns {IterableIterator} */ list() { return cache.keys(); }, }; + })(); diff --git a/background/token-manager.js b/background/token-manager.js index 755fd9fa..605da94d 100644 --- a/background/token-manager.js +++ b/background/token-manager.js @@ -1,12 +1,9 @@ -/* global chromeLocal promisifyChrome webextLaunchWebAuthFlow FIREFOX */ -/* exported tokenManager */ +/* global FIREFOX getActiveTab waitForTabUrl URLS */// toolbox.js +/* global chromeLocal */// storage-util.js 'use strict'; -const tokenManager = (() => { - promisifyChrome({ - 'windows': ['create', 'update', 'remove'], - 'tabs': ['create', 'update', 'remove'] - }); +/* exported tokenMan */ +const tokenMan = (() => { const AUTH = { dropbox: { flow: 'token', @@ -17,9 +14,9 @@ const tokenManager = (() => { fetch('https://api.dropboxapi.com/2/auth/token/revoke', { method: 'POST', headers: { - 'Authorization': `Bearer ${token}` - } - }) + 'Authorization': `Bearer ${token}`, + }, + }), }, google: { flow: 'code', @@ -31,14 +28,14 @@ const tokenManager = (() => { // tokens for multiple machines. // https://stackoverflow.com/q/18519185 access_type: 'offline', - prompt: 'consent' + prompt: 'consent', }, tokenURL: 'https://oauth2.googleapis.com/token', scopes: ['https://www.googleapis.com/auth/drive.appdata'], revoke: token => { const params = {token}; return postQuery(`https://accounts.google.com/o/oauth2/revoke?${new URLSearchParams(params)}`); - } + }, }, onedrive: { flow: 'code', @@ -49,102 +46,103 @@ const tokenManager = (() => { redirect_uri: FIREFOX ? 'https://clngdbkpkpeebahjckkjfobafhncgmne.chromiumapp.org/' : 'https://' + location.hostname + '.chromiumapp.org/', - scopes: ['Files.ReadWrite.AppFolder', 'offline_access'] - } + scopes: ['Files.ReadWrite.AppFolder', 'offline_access'], + }, + userstylesworld: { + flow: 'code', + clientId: 'zeDmKhJIfJqULtcrGMsWaxRtWHEimKgS', + clientSecret: 'wqHsvTuThQmXmDiVvOpZxPwSIbyycNFImpAOTxjaIRqDbsXcTOqrymMJKsOMuibFaij' + + 'ZZAkVYTDbLkQuYFKqgpMsMlFlgwQOYHvHFbgxQHDTwwdOroYhOwFuekCwXUlk', + authURL: URLS.usw + 'api/oauth/style/link', + tokenURL: URLS.usw + 'api/oauth/token', + redirect_uri: 'https://gusted.xyz/callback_helper/', + }, }; const NETWORK_LATENCY = 30; // seconds - return {getToken, revokeToken, getClientId, buildKeys}; + let alwaysUseTab = FIREFOX ? false : null; - function getClientId(name) { - return AUTH[name].clientId; - } + return { - function buildKeys(name) { - const k = { - TOKEN: `secure/token/${name}/token`, - EXPIRE: `secure/token/${name}/expire`, - REFRESH: `secure/token/${name}/refresh`, - }; - k.LIST = Object.values(k); - return k; - } + buildKeys(name, hooks) { + const prefix = `secure/token/${hooks ? hooks.keyName(name) : name}/`; + const k = { + TOKEN: `${prefix}token`, + EXPIRE: `${prefix}expire`, + REFRESH: `${prefix}refresh`, + }; + k.LIST = Object.values(k); + return k; + }, - function getToken(name, interactive) { - const k = buildKeys(name); - return chromeLocal.get(k.LIST) - .then(obj => { - if (!obj[k.TOKEN]) { - return authUser(name, k, interactive); - } + getClientId(name) { + return AUTH[name].clientId; + }, + + async getToken(name, interactive, hooks) { + const k = tokenMan.buildKeys(name, hooks); + const obj = await chromeLocal.get(k.LIST); + if (obj[k.TOKEN]) { if (!obj[k.EXPIRE] || Date.now() < obj[k.EXPIRE]) { return obj[k.TOKEN]; } if (obj[k.REFRESH]) { - return refreshToken(name, k, obj) - .catch(err => { - if (err.code === 401) { - return authUser(name, k, interactive); - } - throw err; - }); + return refreshToken(name, k, obj); } - return authUser(name, k, interactive); - }); - } - - function revokeToken(name) { - const provider = AUTH[name]; - const k = buildKeys(name); - return revoke() - .then(() => chromeLocal.remove(k.LIST)); - - function revoke() { - if (!provider.revoke) { - return Promise.resolve(); } - return chromeLocal.get(k.TOKEN) - .then(obj => { - if (obj[k.TOKEN]) { - return provider.revoke(obj[k.TOKEN]); - } - }) - .catch(console.error); - } - } + if (!interactive) { + throw new Error(`Invalid token: ${name}`); + } + return authUser(k, name, interactive, hooks); + }, - function refreshToken(name, k, obj) { + async revokeToken(name, hooks) { + const provider = AUTH[name]; + const k = tokenMan.buildKeys(name, hooks); + if (provider.revoke) { + try { + const token = await chromeLocal.getValue(k.TOKEN); + if (token) await provider.revoke(token); + } catch (e) { + console.error(e); + } + } + await chromeLocal.remove(k.LIST); + }, + }; + + async function refreshToken(name, k, obj) { if (!obj[k.REFRESH]) { - return Promise.reject(new Error('no refresh token')); + throw new Error('No refresh token'); } const provider = AUTH[name]; const body = { client_id: provider.clientId, refresh_token: obj[k.REFRESH], grant_type: 'refresh_token', - scope: provider.scopes.join(' ') + scope: provider.scopes.join(' '), }; if (provider.clientSecret) { body.client_secret = provider.clientSecret; } - return postQuery(provider.tokenURL, body) - .then(result => { - if (!result.refresh_token) { - // reuse old refresh token - result.refresh_token = obj[k.REFRESH]; - } - return handleTokenResult(result, k); - }); + const result = await postQuery(provider.tokenURL, body); + if (!result.refresh_token) { + // reuse old refresh token + result.refresh_token = obj[k.REFRESH]; + } + return handleTokenResult(result, k); } - function authUser(name, k, interactive = false) { + async function authUser(keys, name, interactive = false, hooks = null) { + await require(['/vendor/webext-launch-web-auth-flow/webext-launch-web-auth-flow.min']); + /* global webextLaunchWebAuthFlow */ const provider = AUTH[name]; const state = Math.random().toFixed(8).slice(2); const query = { response_type: provider.flow, client_id: provider.clientId, redirect_uri: provider.redirect_uri || chrome.identity.getRedirectURL(), - state + state, }; if (provider.scopes) { query.scope = provider.scopes.join(' '); @@ -152,71 +150,111 @@ const tokenManager = (() => { if (provider.authQuery) { Object.assign(query, provider.authQuery); } + if (alwaysUseTab == null) { + alwaysUseTab = await detectVivaldiWebRequestBug(); + } + if (hooks) hooks.query(query); const url = `${provider.authURL}?${new URLSearchParams(query)}`; - return webextLaunchWebAuthFlow({ + const width = Math.min(screen.availWidth - 100, 800); + const height = Math.min(screen.availHeight - 100, 800); + const wnd = await browser.windows.getLastFocused(); + const finalUrl = await webextLaunchWebAuthFlow({ url, + alwaysUseTab, interactive, - redirect_uri: query.redirect_uri - }) - .then(url => { - const params = new URLSearchParams( - provider.flow === 'token' ? - new URL(url).hash.slice(1) : - new URL(url).search.slice(1) - ); - if (params.get('state') !== state) { - throw new Error(`unexpected state: ${params.get('state')}, expected: ${state}`); - } - if (provider.flow === 'token') { - const obj = {}; - for (const [key, value] of params.entries()) { - obj[key] = value; - } - return obj; - } - const code = params.get('code'); - const body = { - code, - grant_type: 'authorization_code', - client_id: provider.clientId, - redirect_uri: query.redirect_uri - }; - if (provider.clientSecret) { - body.client_secret = provider.clientSecret; - } - return postQuery(provider.tokenURL, body); - }) - .then(result => handleTokenResult(result, k)); + redirect_uri: query.redirect_uri, + windowOptions: Object.assign({ + state: 'normal', + width, + height, + }, wnd.state !== 'minimized' && { + // Center the popup to the current window + top: Math.ceil(wnd.top + (wnd.height - width) / 2), + left: Math.ceil(wnd.left + (wnd.width - width) / 2), + }), + }); + const params = new URLSearchParams( + provider.flow === 'token' ? + new URL(finalUrl).hash.slice(1) : + new URL(finalUrl).search.slice(1) + ); + if (params.get('state') !== state) { + throw new Error(`Unexpected state: ${params.get('state')}, expected: ${state}`); + } + let result; + if (provider.flow === 'token') { + const obj = {}; + for (const [key, value] of params) { + obj[key] = value; + } + result = obj; + } else { + const code = params.get('code'); + const body = { + code, + grant_type: 'authorization_code', + client_id: provider.clientId, + redirect_uri: query.redirect_uri, + state, + }; + if (provider.clientSecret) { + body.client_secret = provider.clientSecret; + } + result = await postQuery(provider.tokenURL, body); + } + return handleTokenResult(result, keys); } - function handleTokenResult(result, k) { - return chromeLocal.set({ + async function handleTokenResult(result, k) { + await chromeLocal.set({ [k.TOKEN]: result.access_token, - [k.EXPIRE]: result.expires_in ? Date.now() + (Number(result.expires_in) - NETWORK_LATENCY) * 1000 : undefined, - [k.REFRESH]: result.refresh_token - }) - .then(() => result.access_token); + [k.EXPIRE]: result.expires_in + ? Date.now() + (result.expires_in - NETWORK_LATENCY) * 1000 + : undefined, + [k.REFRESH]: result.refresh_token, + }); + return result.access_token; } - function postQuery(url, body) { + async function postQuery(url, body) { const options = { method: 'POST', headers: { - 'Content-Type': 'application/x-www-form-urlencoded' + 'Content-Type': 'application/x-www-form-urlencoded', }, body: body ? new URLSearchParams(body) : null, }; - return fetch(url, options) - .then(r => { - if (r.ok) { - return r.json(); - } - return r.text() - .then(body => { - const err = new Error(`failed to fetch (${r.status}): ${body}`); - err.code = r.status; - throw err; - }); - }); + const r = await fetch(url, options); + if (r.ok) { + return r.json(); + } + const text = await r.text(); + const err = new Error(`Failed to fetch (${r.status}): ${text}`); + err.code = r.status; + throw err; + } + + async function detectVivaldiWebRequestBug() { + // Workaround for https://github.com/openstyles/stylus/issues/1182 + // Note that modern Vivaldi isn't exposed in `navigator.userAgent` but it adds `extData` to tabs + const anyTab = await getActiveTab() || (await browser.tabs.query({}))[0]; + if (anyTab && !anyTab.extData) { + return false; + } + let bugged = true; + const TEST_URL = chrome.runtime.getURL('manifest.json'); + const check = ({url}) => { + bugged = url !== TEST_URL; + }; + chrome.webRequest.onBeforeRequest.addListener(check, {urls: [TEST_URL], types: ['main_frame']}); + const {tabs: [tab]} = await browser.windows.create({ + type: 'popup', + state: 'minimized', + url: TEST_URL, + }); + await waitForTabUrl(tab); + chrome.windows.remove(tab.windowId); + chrome.webRequest.onBeforeRequest.removeListener(check); + return bugged; } })(); diff --git a/background/update-manager.js b/background/update-manager.js new file mode 100644 index 00000000..9797c115 --- /dev/null +++ b/background/update-manager.js @@ -0,0 +1,349 @@ +/* global API */// msg.js +/* global RX_META URLS debounce download ignoreChromeError */// toolbox.js +/* global calcStyleDigest styleJSONseemsValid styleSectionsEqual */ // sections-util.js +/* global chromeLocal */// storage-util.js +/* global compareVersion */// cmpver.js +/* global db */ +/* global prefs */ +'use strict'; + +/* exported updateMan */ +const updateMan = (() => { + const STATES = /** @namespace UpdaterStates */ { + UPDATED: 'updated', + SKIPPED: 'skipped', + UNREACHABLE: 'server unreachable', + // details for SKIPPED status + EDITED: 'locally edited', + MAYBE_EDITED: 'may be locally edited', + SAME_MD5: 'up-to-date: MD5 is unchanged', + SAME_CODE: 'up-to-date: code sections are unchanged', + SAME_VERSION: 'up-to-date: version is unchanged', + ERROR_MD5: 'error: MD5 is invalid', + ERROR_JSON: 'error: JSON is invalid', + ERROR_VERSION: 'error: version is older than installed style', + }; + const RH_ETAG = {responseHeaders: ['etag']}; // a hashsum of file contents + const RX_DATE2VER = new RegExp([ + /^(\d{4})/, + /(0[1-9]|1(?:0|[12](?=\d\d))?|[2-9])/, // in ambiguous cases like yyyy123 the month will be 1 + /(0[1-9]|[1-2][0-9]?|3[0-1]?|[4-9])/, + /\.([01][0-9]?|2[0-3]?|[3-9])/, + /\.([0-5][0-9]?|[6-9])$/, + ].map(rx => rx.source).join('')); + const ALARM_NAME = 'scheduledUpdate'; + const MIN_INTERVAL_MS = 60e3; + const RETRY_ERRORS = [ + 503, // service unavailable + 429, // too many requests + ]; + let lastUpdateTime; + let checkingAll = false; + let logQueue = []; + let logLastWriteTime = 0; + + chromeLocal.getValue('lastUpdateTime').then(val => { + lastUpdateTime = val || Date.now(); + prefs.subscribe('updateInterval', schedule, {runNow: true}); + chrome.alarms.onAlarm.addListener(onAlarm); + }); + + return { + checkAllStyles, + checkStyle, + getStates: () => STATES, + }; + + async function checkAllStyles({ + save = true, + ignoreDigest, + observe, + } = {}) { + resetInterval(); + checkingAll = true; + const port = observe && chrome.runtime.connect({name: 'updater'}); + const styles = (await API.styles.getAll()) + .filter(style => style.updateUrl); + if (port) port.postMessage({count: styles.length}); + log(''); + log(`${save ? 'Scheduled' : 'Manual'} update check for ${styles.length} styles`); + await Promise.all( + styles.map(style => + checkStyle({style, port, save, ignoreDigest}))); + if (port) port.postMessage({done: true}); + if (port) port.disconnect(); + log(''); + checkingAll = false; + } + + /** + * @param {{ + id?: number + style?: StyleObj + port?: chrome.runtime.Port + save?: boolean = true + ignoreDigest?: boolean + }} opts + * @returns {{ + style: StyleObj + updated?: boolean + error?: any + STATES: UpdaterStates + }} + + Original style digests are calculated in these cases: + * style is installed or updated from server + * non-usercss style is checked for an update and styleSectionsEqual considers it unchanged + + Update check proceeds in these cases: + * style has the original digest and it's equal to the current digest + * [ignoreDigest: true] style doesn't yet have the original digest but we ignore it + * [ignoreDigest: none/false] style doesn't yet have the original digest + so we compare the code to the server code and if it's the same we save the digest, + otherwise we skip the style and report MAYBE_EDITED status + + 'ignoreDigest' option is set on the second manual individual update check on the manage page. + */ + async function checkStyle(opts) { + let {id} = opts; + const { + style = await API.styles.get(id), + ignoreDigest, + port, + save, + } = opts; + if (!id) id = style.id; + const ucd = style.usercssData; + let res, state; + try { + await checkIfEdited(); + res = { + style: await (ucd ? updateUsercss : updateUSO)().then(maybeSave), + updated: true, + }; + state = STATES.UPDATED; + } catch (err) { + const error = err === 0 && STATES.UNREACHABLE || + err && err.message || + err; + res = {error, style, STATES}; + state = `${STATES.SKIPPED} (${error})`; + } + log(`${state} #${id} ${style.customName || style.name}`); + if (port) port.postMessage(res); + return res; + + async function checkIfEdited() { + if (!ignoreDigest && + style.originalDigest && + style.originalDigest !== await calcStyleDigest(style)) { + return Promise.reject(STATES.EDITED); + } + } + + async function updateUSO() { + const url = URLS.makeUsoArchiveCodeUrl(style.md5Url.match(/\d+/)[0]); + const req = await tryDownload(url, RH_ETAG).catch(() => null); + if (req) { + return updateToUSOArchive(url, req); + } + const md5 = await tryDownload(style.md5Url); + if (!md5 || md5.length !== 32) { + return Promise.reject(STATES.ERROR_MD5); + } + if (md5 === style.originalMd5 && style.originalDigest && !ignoreDigest) { + return Promise.reject(STATES.SAME_MD5); + } + const json = await tryDownload(style.updateUrl, {responseType: 'json'}); + if (!styleJSONseemsValid(json)) { + return Promise.reject(STATES.ERROR_JSON); + } + // USO may not provide a correctly updated originalMd5 (#555) + json.originalMd5 = md5; + return json; + } + + async function updateToUSOArchive(url, req) { + const m2 = getUsoEmbeddedMeta(req.response); + if (m2) { + url = (await m2).updateUrl; + req = await tryDownload(url, RH_ETAG); + } + const json = await API.usercss.buildMeta({ + id, + etag: req.headers.etag, + md5Url: null, + originalMd5: null, + sourceCode: req.response, + updateUrl: url, + url: URLS.extractUsoArchiveInstallUrl(url), + }); + const varUrlValues = style.updateUrl.split('?')[1]; + const varData = json.usercssData.vars; + if (varUrlValues && varData) { + const IK = 'ik-'; + const IK_LEN = IK.length; + for (let [key, val] of new URLSearchParams(varUrlValues)) { + if (!key.startsWith(IK)) continue; + key = key.slice(IK_LEN); + const varDef = varData[key]; + if (!varDef) continue; + if (varDef.options) { + let sel = val.startsWith(IK) && getVarOptByName(varDef, val.slice(IK_LEN)); + if (!sel) { + key += '-custom'; + sel = getVarOptByName(varDef, key + '-dropdown'); + if (sel) varData[key].value = val; + } + if (sel) varDef.value = sel.name; + } else { + varDef.value = val; + } + } + } + return API.usercss.buildCode(json); + } + + async function updateUsercss() { + let oldVer = ucd.version; + let {etag: oldEtag, updateUrl} = style; + let m2 = URLS.extractUsoArchiveId(updateUrl) && getUsoEmbeddedMeta(); + if (m2 && (m2 = await m2).updateUrl) { + updateUrl = m2.updateUrl; + oldVer = m2.usercssData.version || '0'; + oldEtag = ''; + } + if (oldEtag && oldEtag === await downloadEtag()) { + return Promise.reject(STATES.SAME_CODE); + } + // TODO: when sourceCode is > 100kB use http range request(s) for version check + const {headers: {etag}, response} = await tryDownload(updateUrl, RH_ETAG); + const json = await API.usercss.buildMeta({sourceCode: response, etag, updateUrl}); + const delta = compareVersion(json.usercssData.version, oldVer); + let err; + if (!delta && !ignoreDigest) { + // re-install is invalid in a soft upgrade + err = response === style.sourceCode ? STATES.SAME_CODE : STATES.SAME_VERSION; + } + if (delta < 0) { + // downgrade is always invalid + err = STATES.ERROR_VERSION; + } + if (err && etag && !style.etag) { + // first check of ETAG, gonna write it directly to DB as it's too trivial to sync or announce + style.etag = etag; + await db.exec('put', style); + } + return err + ? Promise.reject(err) + : API.usercss.buildCode(json); + } + + async function maybeSave(json) { + json.id = id; + // keep current state + delete json.customName; + delete json.enabled; + const newStyle = Object.assign({}, style, json); + newStyle.updateDate = getDateFromVer(newStyle) || Date.now(); + // update digest even if save === false as there might be just a space added etc. + if (!ucd && styleSectionsEqual(json, style)) { + style.originalDigest = (await API.styles.install(newStyle)).originalDigest; + return Promise.reject(STATES.SAME_CODE); + } + if (!style.originalDigest && !ignoreDigest) { + return Promise.reject(STATES.MAYBE_EDITED); + } + return !save ? newStyle : + (ucd ? API.usercss.install : API.styles.install)(newStyle); + } + + async function tryDownload(url, params) { + let {retryDelay = 1000} = opts; + while (true) { + try { + return await download(url, params); + } catch (code) { + if (!RETRY_ERRORS.includes(code) || + retryDelay > MIN_INTERVAL_MS) { + return Promise.reject(code); + } + } + retryDelay *= 1.25; + await new Promise(resolve => setTimeout(resolve, retryDelay)); + } + } + + async function downloadEtag() { + const opts = Object.assign({method: 'head'}, RH_ETAG); + const req = await tryDownload(style.updateUrl, opts); + return req.headers.etag; + } + + function getDateFromVer(style) { + const m = URLS.extractUsoArchiveId(style.updateUrl) && + style.usercssData.version.match(RX_DATE2VER); + if (m) { + m[2]--; // month is 0-based in `Date` constructor + return new Date(...m.slice(1)).getTime(); + } + } + + /** UserCSS metadata may be embedded in the original USO style so let's use its updateURL */ + function getUsoEmbeddedMeta(code = style.sourceCode) { + const m = code.includes('@updateURL') && code.replace(RX_META, '').match(RX_META); + return m && API.usercss.buildMeta({sourceCode: m[0]}).catch(() => null); + } + + function getVarOptByName(varDef, name) { + return varDef.options.find(o => o.name === name); + } + } + + function schedule() { + const interval = prefs.get('updateInterval') * 60 * 60 * 1000; + if (interval > 0) { + const elapsed = Math.max(0, Date.now() - lastUpdateTime); + chrome.alarms.create(ALARM_NAME, { + when: Date.now() + Math.max(MIN_INTERVAL_MS, interval - elapsed), + }); + } else { + chrome.alarms.clear(ALARM_NAME, ignoreChromeError); + } + } + + function onAlarm({name}) { + if (name === ALARM_NAME) checkAllStyles(); + } + + function resetInterval() { + chromeLocal.setValue('lastUpdateTime', lastUpdateTime = Date.now()); + schedule(); + } + + function log(text) { + logQueue.push({text, time: new Date().toLocaleString()}); + debounce(flushQueue, text && checkingAll ? 1000 : 0); + } + + async function flushQueue(lines) { + if (!lines) { + flushQueue(await chromeLocal.getValue('updateLog') || []); + return; + } + const time = Date.now() - logLastWriteTime > 11e3 ? + logQueue[0].time + ' ' : + ''; + if (logQueue[0] && !logQueue[0].text) { + logQueue.shift(); + if (lines[lines.length - 1]) lines.push(''); + } + lines.splice(0, lines.length - 1000); + lines.push(time + (logQueue[0] && logQueue[0].text || '')); + lines.push(...logQueue.slice(1).map(item => item.text)); + + chromeLocal.setValue('updateLog', lines); + logLastWriteTime = Date.now(); + logQueue = []; + } +})(); diff --git a/background/update.js b/background/update.js deleted file mode 100644 index 33c2022c..00000000 --- a/background/update.js +++ /dev/null @@ -1,276 +0,0 @@ -/* global styleSectionsEqual prefs download tryJSONparse ignoreChromeError - calcStyleDigest getStyleWithNoCode debounce chromeLocal - usercss semverCompare styleJSONseemsValid - API_METHODS styleManager */ -'use strict'; - -(() => { - - const STATES = { - UPDATED: 'updated', - SKIPPED: 'skipped', - - // details for SKIPPED status - EDITED: 'locally edited', - MAYBE_EDITED: 'may be locally edited', - SAME_MD5: 'up-to-date: MD5 is unchanged', - SAME_CODE: 'up-to-date: code sections are unchanged', - SAME_VERSION: 'up-to-date: version is unchanged', - ERROR_MD5: 'error: MD5 is invalid', - ERROR_JSON: 'error: JSON is invalid', - ERROR_VERSION: 'error: version is older than installed style', - }; - - const ALARM_NAME = 'scheduledUpdate'; - const MIN_INTERVAL_MS = 60e3; - - let lastUpdateTime = parseInt(localStorage.lastUpdateTime) || Date.now(); - let checkingAll = false; - let logQueue = []; - let logLastWriteTime = 0; - - const retrying = new Set(); - - API_METHODS.updateCheckAll = checkAllStyles; - API_METHODS.updateCheck = checkStyle; - API_METHODS.getUpdaterStates = () => STATES; - - prefs.subscribe(['updateInterval'], schedule); - schedule(); - chrome.alarms.onAlarm.addListener(onAlarm); - - return {checkAllStyles, checkStyle, STATES}; - - function checkAllStyles({ - save = true, - ignoreDigest, - observe, - } = {}) { - resetInterval(); - checkingAll = true; - retrying.clear(); - const port = observe && chrome.runtime.connect({name: 'updater'}); - return styleManager.getAllStyles().then(styles => { - styles = styles.filter(style => style.updateUrl); - if (port) port.postMessage({count: styles.length}); - log(''); - log(`${save ? 'Scheduled' : 'Manual'} update check for ${styles.length} styles`); - return Promise.all( - styles.map(style => - checkStyle({style, port, save, ignoreDigest}))); - }).then(() => { - if (port) port.postMessage({done: true}); - if (port) port.disconnect(); - log(''); - checkingAll = false; - retrying.clear(); - }); - } - - function checkStyle({ - id, - style, - port, - save = true, - ignoreDigest, - }) { - /* - Original style digests are calculated in these cases: - * style is installed or updated from server - * style is checked for an update and its code is equal to the server code - - Update check proceeds in these cases: - * style has the original digest and it's equal to the current digest - * [ignoreDigest: true] style doesn't yet have the original digest but we ignore it - * [ignoreDigest: none/false] style doesn't yet have the original digest - so we compare the code to the server code and if it's the same we save the digest, - otherwise we skip the style and report MAYBE_EDITED status - - 'ignoreDigest' option is set on the second manual individual update check on the manage page. - */ - return fetchStyle() - .then(() => { - if (!ignoreDigest) { - return calcStyleDigest(style) - .then(checkIfEdited); - } - }) - .then(() => { - if (style.usercssData) { - return maybeUpdateUsercss(); - } - return maybeUpdateUSO(); - }) - .then(maybeSave) - .then(reportSuccess) - .catch(reportFailure); - - function fetchStyle() { - if (style) { - return Promise.resolve(); - } - return styleManager.get(id) - .then(style_ => { - style = style_; - }); - } - - function reportSuccess(saved) { - log(STATES.UPDATED + ` #${style.id} ${style.customName || style.name}`); - const info = {updated: true, style: saved}; - if (port) port.postMessage(info); - return info; - } - - function reportFailure(error) { - if (( - error === 503 || // Service Unavailable - error === 429 // Too Many Requests - ) && !retrying.has(id)) { - retrying.add(id); - return new Promise(resolve => { - setTimeout(() => { - resolve(checkStyle({id, style, port, save, ignoreDigest})); - }, 1000); - }); - } - error = error === 0 ? 'server unreachable' : error; - // UserCSS metadata error returns an object; e.g. "Invalid @var color..." - if (typeof error === 'object' && error.message) { - error = error.message; - } - log(STATES.SKIPPED + ` (${error}) #${style.id} ${style.customName || style.name}`); - const info = {error, STATES, style: getStyleWithNoCode(style)}; - if (port) port.postMessage(info); - return info; - } - - function checkIfEdited(digest) { - if (style.originalDigest && style.originalDigest !== digest) { - return Promise.reject(STATES.EDITED); - } - } - - function maybeUpdateUSO() { - return download(style.md5Url).then(md5 => { - if (!md5 || md5.length !== 32) { - return Promise.reject(STATES.ERROR_MD5); - } - if (md5 === style.originalMd5 && style.originalDigest && !ignoreDigest) { - return Promise.reject(STATES.SAME_MD5); - } - // USO can't handle POST requests for style json - return download(style.updateUrl, {body: null}) - .then(text => { - const style = tryJSONparse(text); - if (style) { - // USO may not provide a correctly updated originalMd5 (#555) - style.originalMd5 = md5; - } - return style; - }); - }); - } - - function maybeUpdateUsercss() { - // TODO: when sourceCode is > 100kB use http range request(s) for version check - return download(style.updateUrl).then(text => - usercss.buildMeta(text).then(json => { - const {usercssData: {version}} = style; - const {usercssData: {version: newVersion}} = json; - switch (Math.sign(semverCompare(version, newVersion))) { - case 0: - // re-install is invalid in a soft upgrade - if (!ignoreDigest) { - const sameCode = text === style.sourceCode; - return Promise.reject(sameCode ? STATES.SAME_CODE : STATES.SAME_VERSION); - } - break; - case 1: - // downgrade is always invalid - return Promise.reject(STATES.ERROR_VERSION); - } - return usercss.buildCode(json); - }) - ); - } - - function maybeSave(json = {}) { - // usercss is already validated while building - if (!json.usercssData && !styleJSONseemsValid(json)) { - return Promise.reject(STATES.ERROR_JSON); - } - - json.id = style.id; - json.updateDate = Date.now(); - - // keep current state - delete json.enabled; - - const newStyle = Object.assign({}, style, json); - if (styleSectionsEqual(json, style, {checkSource: true})) { - // update digest even if save === false as there might be just a space added etc. - return styleManager.installStyle(newStyle) - .then(saved => { - style.originalDigest = saved.originalDigest; - return Promise.reject(STATES.SAME_CODE); - }); - } - - if (!style.originalDigest && !ignoreDigest) { - return Promise.reject(STATES.MAYBE_EDITED); - } - - return save ? - API_METHODS[json.usercssData ? 'installUsercss' : 'installStyle'](newStyle) : - newStyle; - } - } - - function schedule() { - const interval = prefs.get('updateInterval') * 60 * 60 * 1000; - if (interval > 0) { - const elapsed = Math.max(0, Date.now() - lastUpdateTime); - chrome.alarms.create(ALARM_NAME, { - when: Date.now() + Math.max(MIN_INTERVAL_MS, interval - elapsed), - }); - } else { - chrome.alarms.clear(ALARM_NAME, ignoreChromeError); - } - } - - function onAlarm({name}) { - if (name === ALARM_NAME) checkAllStyles(); - } - - function resetInterval() { - localStorage.lastUpdateTime = lastUpdateTime = Date.now(); - schedule(); - } - - function log(text) { - logQueue.push({text, time: new Date().toLocaleString()}); - debounce(flushQueue, text && checkingAll ? 1000 : 0); - } - - function flushQueue(lines) { - if (!lines) { - chromeLocal.getValue('updateLog', []).then(flushQueue); - return; - } - const time = Date.now() - logLastWriteTime > 11e3 ? - logQueue[0].time + ' ' : - ''; - if (logQueue[0] && !logQueue[0].text) { - logQueue.shift(); - if (lines[lines.length - 1]) lines.push(''); - } - lines.splice(0, lines.length - 1000); - lines.push(time + (logQueue[0] && logQueue[0].text || '')); - lines.push(...logQueue.slice(1).map(item => item.text)); - - chromeLocal.setValue('updateLog', lines); - logLastWriteTime = Date.now(); - logQueue = []; - } -})(); diff --git a/background/usercss-helper.js b/background/usercss-helper.js deleted file mode 100644 index 00b3a99b..00000000 --- a/background/usercss-helper.js +++ /dev/null @@ -1,131 +0,0 @@ -/* global API_METHODS usercss styleManager deepCopy */ -/* exported usercssHelper */ -'use strict'; - -const usercssHelper = (() => { - API_METHODS.installUsercss = installUsercss; - API_METHODS.editSaveUsercss = editSaveUsercss; - API_METHODS.configUsercssVars = configUsercssVars; - - API_METHODS.buildUsercss = build; - API_METHODS.findUsercss = find; - - function buildMeta(style) { - if (style.usercssData) { - return Promise.resolve(style); - } - - // allow sourceCode to be normalized - const {sourceCode} = style; - delete style.sourceCode; - - return usercss.buildMeta(sourceCode) - .then(newStyle => Object.assign(newStyle, style)); - } - - function assignVars(style) { - return find(style) - .then(dup => { - if (dup) { - style.id = dup.id; - // preserve style.vars during update - return usercss.assignVars(style, dup) - .then(() => style); - } - return style; - }); - } - - /** - * Parse the source, find the duplication, and build sections with variables - * @param _ - * @param {String} _.sourceCode - * @param {Boolean=} _.checkDup - * @param {Boolean=} _.metaOnly - * @param {Object} _.vars - * @param {Boolean=} _.assignVars - * @returns {Promise<{style, dup:Boolean?}>} - */ - function build({ - styleId, - sourceCode, - checkDup, - metaOnly, - vars, - assignVars = false, - }) { - return usercss.buildMeta(sourceCode) - .then(style => { - const findDup = checkDup || assignVars ? - find(styleId ? {id: styleId} : style) : Promise.resolve(); - return Promise.all([ - metaOnly ? style : doBuild(style, findDup), - findDup - ]); - }) - .then(([style, dup]) => ({style, dup})); - - function doBuild(style, findDup) { - if (vars || assignVars) { - const getOld = vars ? Promise.resolve({usercssData: {vars}}) : findDup; - return getOld - .then(oldStyle => usercss.assignVars(style, oldStyle)) - .then(() => usercss.buildCode(style)); - } - return usercss.buildCode(style); - } - } - - // Build the style within aditional properties then inherit variable values - // from the old style. - function parse(style) { - return buildMeta(style) - .then(buildMeta) - .then(assignVars) - .then(usercss.buildCode); - } - - // FIXME: simplify this to `installUsercss(sourceCode)`? - function installUsercss(style) { - return parse(style) - .then(styleManager.installStyle); - } - - // FIXME: simplify this to `editSaveUsercss({sourceCode, exclusions})`? - function editSaveUsercss(style) { - return parse(style) - .then(styleManager.editSave); - } - - function configUsercssVars(id, vars) { - return styleManager.get(id) - .then(style => { - const newStyle = deepCopy(style); - newStyle.usercssData.vars = vars; - return usercss.buildCode(newStyle); - }) - .then(style => styleManager.installStyle(style, 'config')) - .then(style => style.usercssData.vars); - } - - /** - * @param {Style|{name:string, namespace:string}} styleOrData - * @returns {Style} - */ - function find(styleOrData) { - if (styleOrData.id) { - return styleManager.get(styleOrData.id); - } - const {name, namespace} = styleOrData.usercssData || styleOrData; - return styleManager.getAllStyles().then(styleList => { - for (const dup of styleList) { - const data = dup.usercssData; - if (!data) continue; - if (data.name === name && - data.namespace === namespace) { - return dup; - } - } - }); - } -})(); diff --git a/background/usercss-install-helper.js b/background/usercss-install-helper.js index b854564a..a51af3a5 100644 --- a/background/usercss-install-helper.js +++ b/background/usercss-install-helper.js @@ -1,66 +1,107 @@ -/* global API_METHODS openURL download URLS tabManager */ +/* global RX_META URLS download openURL */// toolbox.js +/* global addAPI bgReady */// common.js +/* global tabMan */// msg.js 'use strict'; -(() => { +bgReady.all.then(() => { const installCodeCache = {}; - const clearInstallCode = url => delete installCodeCache[url]; - const isContentTypeText = type => /^text\/(css|plain)(;.*?)?$/i.test(type); - // in Firefox we have to use a content script to read file:// - const fileLoader = !chrome.app && ( - async tabId => - (await browser.tabs.executeScript(tabId, {file: '/content/install-hook-usercss.js'}))[0]); + addAPI(/** @namespace API */ { + usercss: { + getInstallCode(url) { + // when the installer tab is reloaded after the cache is expired, this will throw intentionally + const {code, timer} = installCodeCache[url]; + clearInstallCode(url); + clearTimeout(timer); + return code; + }, + }, + }); - const urlLoader = - async (tabId, url) => ( - url.startsWith('file:') || - tabManager.get(tabId, isContentTypeText.name) || - isContentTypeText((await fetch(url, {method: 'HEAD'})).headers.get('content-type')) - ) && download(url); - - API_METHODS.getUsercssInstallCode = url => { - // when the installer tab is reloaded after the cache is expired, this will throw intentionally - const {code, timer} = installCodeCache[url]; - clearInstallCode(url); - clearTimeout(timer); - return code; + // `glob`: pathname match pattern for webRequest + // `rx`: pathname regex to verify the URL really looks like a raw usercss + const maybeDistro = { + // https://github.com/StylishThemes/GitHub-Dark/raw/master/github-dark.user.css + 'github.com': { + glob: '/*/raw/*', + rx: /^\/[^/]+\/[^/]+\/raw\/[^/]+\/[^/]+?\.user\.(css|styl)$/, + }, + // https://raw.githubusercontent.com/StylishThemes/GitHub-Dark/master/github-dark.user.css + 'raw.githubusercontent.com': { + glob: '/*', + rx: /^(\/[^/]+?){4}\.user\.(css|styl)$/, + }, }; - // Faster installation on known distribution sites to avoid flicker of css text - chrome.webRequest.onBeforeSendHeaders.addListener(({tabId, url}) => { - openInstallerPage(tabId, url, {}); - // Silently suppressing navigation like it never happened - return {redirectUrl: 'javascript:void 0'}; // eslint-disable-line no-script-url - }, { + chrome.webRequest.onBeforeSendHeaders.addListener(maybeInstallFromDistro, { urls: [ - URLS.usoArchiveRaw + 'usercss/*.user.css', - '*://greasyfork.org/scripts/*/code/*.user.css', - '*://sleazyfork.org/scripts/*/code/*.user.css', + URLS.usw + 'api/style/*.user.css', + ...URLS.usoArchiveRaw.map(s => s + 'usercss/*.user.css'), + ...['greasy', 'sleazy'].map(s => `*://${s}fork.org/scripts/*/code/*.user.css`), + ...[].concat( + ...Object.entries(maybeDistro) + .map(([host, {glob}]) => makeUsercssGlobs(host, glob))), ], types: ['main_frame'], }, ['blocking']); - // Remember Content-Type to avoid re-fetching of the headers in urlLoader as it can be very slow - chrome.webRequest.onHeadersReceived.addListener(({tabId, responseHeaders}) => { - const h = responseHeaders.find(h => h.name.toLowerCase() === 'content-type'); - tabManager.set(tabId, isContentTypeText.name, h && isContentTypeText(h.value) || undefined); - }, { - urls: '%css,%css?*,%styl,%styl?*'.replace(/%/g, '*://*/*.user.').split(','), + chrome.webRequest.onHeadersReceived.addListener(rememberContentType, { + urls: makeUsercssGlobs('*', '/*'), types: ['main_frame'], }, ['responseHeaders']); - tabManager.onUpdate(async ({tabId, url, oldUrl = ''}) => { + tabMan.onUpdate(maybeInstall); + + function clearInstallCode(url) { + return delete installCodeCache[url]; + } + + /** Sites may be using custom types like text/stylus so this coarse filter only excludes html */ + function isContentTypeText(type) { + return /^text\/(?!html)/i.test(type); + } + + // in Firefox we have to use a content script to read file:// + async function loadFromFile(tabId) { + return (await browser.tabs.executeScript(tabId, {file: '/content/install-hook-usercss.js'}))[0]; + } + + async function loadFromUrl(tabId, url) { + return ( + url.startsWith('file:') || + tabMan.get(tabId, isContentTypeText.name) || + isContentTypeText((await fetch(url, {method: 'HEAD'})).headers.get('content-type')) + ) && download(url); + } + + function makeUsercssGlobs(host, path) { + return '%css,%css?*,%styl,%styl?*'.replace(/%/g, `*://${host}${path}.user.`).split(','); + } + + async function maybeInstall({tabId, url, oldUrl = ''}) { if (url.includes('.user.') && /^(https?|file|ftps?):/.test(url) && /\.user\.(css|styl)$/.test(url.split(/[#?]/, 1)[0]) && !oldUrl.startsWith(URLS.installUsercss)) { - const inTab = url.startsWith('file:') && Boolean(fileLoader); - const code = await (inTab ? fileLoader : urlLoader)(tabId, url); - if (/==userstyle==/i.test(code)) { + const inTab = url.startsWith('file:') && !chrome.app; + const code = await (inTab ? loadFromFile : loadFromUrl)(tabId, url); + if (!/^\s* h.name.toLowerCase() === 'content-type'); + tabMan.set(tabId, isContentTypeText.name, h && isContentTypeText(h.value) || undefined); + } +}); diff --git a/background/usercss-manager.js b/background/usercss-manager.js new file mode 100644 index 00000000..f54f463c --- /dev/null +++ b/background/usercss-manager.js @@ -0,0 +1,160 @@ +/* global API */// msg.js +/* global RX_META deepCopy download */// toolbox.js +'use strict'; + +const usercssMan = { + + GLOBAL_META: Object.entries({ + author: null, + description: null, + homepageURL: 'url', + updateURL: 'updateUrl', + name: null, + }), + + async assignVars(style, oldStyle) { + const meta = style.usercssData; + const vars = meta.vars; + const oldVars = (oldStyle.usercssData || {}).vars; + if (vars && oldVars) { + // The type of var might be changed during the update. Set value to null if the value is invalid. + for (const [key, v] of Object.entries(vars)) { + const old = oldVars[key] && oldVars[key].value; + if (old) v.value = old; + } + meta.vars = await API.worker.nullifyInvalidVars(vars); + } + }, + + async build({ + styleId, + sourceCode, + vars, + checkDup, + metaOnly, + assignVars, + initialUrl, + }) { + // downloading here while install-usercss page is loading to avoid the wait + if (initialUrl) sourceCode = await download(initialUrl); + const style = await usercssMan.buildMeta({sourceCode}); + const dup = (checkDup || assignVars) && + await usercssMan.find(styleId ? {id: styleId} : style); + let log; + if (!metaOnly) { + if (vars || assignVars) { + await usercssMan.assignVars(style, vars ? {usercssData: {vars}} : dup); + } + await usercssMan.buildCode(style); + log = style.log; // extracting the non-enumerable prop, otherwise it won't survive messaging + } + return {style, dup, log}; + }, + + async buildCode(style) { + const {sourceCode: code, usercssData: {vars, preprocessor}} = style; + const match = code.match(RX_META); + const i = match.index; + const j = i + match[0].length; + const codeNoMeta = code.slice(0, i) + blankOut(code, i, j) + code.slice(j); + const {sections, errors, log} = await API.worker.compileUsercss(preprocessor, codeNoMeta, vars); + const recoverable = errors.every(e => e.recoverable); + if (!sections.length || !recoverable) { + throw !recoverable ? errors : 'Style does not contain any actual CSS to apply.'; + } + style.sections = sections; + // adding a non-enumerable prop so it won't be written to storage + if (log) Object.defineProperty(style, 'log', {value: log}); + return style; + }, + + async buildMeta(style) { + if (style.usercssData) { + return style; + } + // remember normalized sourceCode + let code = style.sourceCode = style.sourceCode.replace(/\r\n?/g, '\n'); + style = Object.assign({ + enabled: true, + sections: [], + }, style); + const match = code.match(RX_META); + if (!match) { + return Promise.reject(new Error('Could not find metadata.')); + } + try { + code = blankOut(code, 0, match.index) + match[0]; + const {metadata} = await API.worker.parseUsercssMeta(code); + style.usercssData = metadata; + // https://github.com/openstyles/stylus/issues/560#issuecomment-440561196 + for (const [key, globalKey] of usercssMan.GLOBAL_META) { + const val = metadata[key]; + if (val !== undefined) { + style[globalKey || key] = val; + } + } + return style; + } catch (err) { + if (err.code) { + const args = err.code === 'missingMandatory' || err.code === 'missingChar' + ? err.args.map(e => e.length === 1 ? JSON.stringify(e) : e).join(', ') + : err.args; + const msg = chrome.i18n.getMessage(`meta_${(err.code)}`, args); + if (msg) err.message = msg; + } + return Promise.reject(err); + } + }, + + async configVars(id, vars) { + const style = deepCopy(await API.styles.get(id)); + style.usercssData.vars = vars; + await usercssMan.buildCode(style); + return (await API.styles.install(style, 'config')) + .usercssData.vars; + }, + + async editSave(style) { + style = await usercssMan.parse(style); + return { + log: style.log, // extracting the non-enumerable prop, otherwise it won't survive messaging + style: await API.styles.editSave(style), + }; + }, + + async find(styleOrData) { + if (styleOrData.id) { + return API.styles.get(styleOrData.id); + } + const {name, namespace} = styleOrData.usercssData || styleOrData; + for (const dup of await API.styles.getAll()) { + const data = dup.usercssData; + if (data && + data.name === name && + data.namespace === namespace) { + return dup; + } + } + }, + + async install(style) { + return API.styles.install(await usercssMan.parse(style)); + }, + + async parse(style) { + style = await usercssMan.buildMeta(style); + // preserve style.vars during update + const dup = await usercssMan.find(style); + if (dup) { + style.id = dup.id; + await usercssMan.assignVars(style, dup); + } + return usercssMan.buildCode(style); + }, +}; + +/** Replaces everything with spaces to keep the original length, + * but preserves the line breaks to keep the original line/col relation */ +function blankOut(str, start = 0, end = str.length) { + return str.slice(start, end).replace(/[^\r\n]/g, ' '); +} diff --git a/background/usw-api.js b/background/usw-api.js new file mode 100644 index 00000000..b26cb6c1 --- /dev/null +++ b/background/usw-api.js @@ -0,0 +1,119 @@ +/* global API msg */// msg.js +/* global URLS */ // toolbox.js +/* global tokenMan */ +'use strict'; + +const uswApi = (() => { + + //#region Internals + + class TokenHooks { + constructor(id) { + this.id = id; + } + keyName(name) { + return `${name}/${this.id}`; + } + query(query) { + return Object.assign(query, {vendor_data: this.id}); + } + } + + function fakeUsercssHeader(style) { + const {name, _usw: u = {}} = style; + const meta = Object.entries({ + '@name': u.name || name || '?', + '@version': // Same as USO-archive version: YYYYMMDD.hh.mm + new Date().toISOString().replace(/^(\d+)-(\d+)-(\d+)T(\d+):(\d+).+/, '$1$2$3.$4.$5'), + '@namespace': u.namespace !== '?' && u.namespace || + u.username && `userstyles.world/user/${u.username}` || + '?', + '@description': u.description, + '@author': u.username, + '@license': u.license, + }); + const maxKeyLen = meta.reduce((res, [k]) => Math.max(res, k.length), 0); + return [ + '/* ==UserStyle==', + ...meta.map(([k, v]) => `${k}${' '.repeat(maxKeyLen - k.length + 2)}${v || ''}`), + '==/UserStyle== */', + ].join('\n') + '\n\n'; + } + + async function linkStyle(style, sourceCode) { + const {id} = style; + const metadata = await API.worker.parseUsercssMeta(sourceCode).catch(console.warn) || {}; + const uswData = Object.assign({}, style, {metadata, sourceCode}); + API.data.set('usw' + id, uswData); + const token = await tokenMan.getToken('userstylesworld', true, new TokenHooks(id)); + const info = await uswFetch('style', token); + const data = style._usw = Object.assign({token}, info); + style.url = style.url || data.homepage || `${URLS.usw}style/${data.id}`; + await uswSave(style); + return data; + } + + async function uswFetch(path, token, opts) { + opts = Object.assign({credentials: 'omit'}, opts); + opts.headers = Object.assign({Authorization: `Bearer ${token}`}, opts.headers); + return (await (await fetch(`${URLS.usw}api/${path}`, opts)).json()).data; + } + + /** Uses a custom method when broadcasting and avoids needlessly sending the entire style */ + async function uswSave(style) { + const {id, _usw} = style; + await API.styles.save(style, {broadcast: false}); + msg.broadcastExtension({method: 'uswData', style: {id, _usw}}); + } + + //#endregion + //#region Exports + + return { + /** + * @param {number} id + * @param {string} sourceCode + * @return {Promise} + */ + async publish(id, sourceCode) { + const style = await API.styles.get(id); + const data = (style._usw || {}).token + ? style._usw + : await linkStyle(style, sourceCode); + const header = style.usercssData ? '' : fakeUsercssHeader(style); + return uswFetch(`style/${data.id}`, data.token, { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({code: header + sourceCode}), + }); + }, + + /** + * @param {number} id + * @return {Promise} + */ + async revoke(id) { + await tokenMan.revokeToken('userstylesworld', new TokenHooks(id)); + const style = await API.styles.get(id); + if (style) { + style._usw = {}; + await uswSave(style); + } + }, + }; + + //#endregion +})(); + +/* Doing this outside so we don't break IDE's recognition of the exported methods in IIFE */ +for (const [k, fn] of Object.entries(uswApi)) { + uswApi[k] = async (id, ...args) => { + API.data.set('usw' + id, true); + try { + /* Awaiting inside `try` so that `finally` runs when done */ + return await fn(id, ...args); + } finally { + API.data.del('usw' + id); + } + }; +} diff --git a/content/apply.js b/content/apply.js index 7645fb22..1b29552c 100644 --- a/content/apply.js +++ b/content/apply.js @@ -1,34 +1,28 @@ -/* global msg API prefs createStyleInjector */ +/* global API msg */// msg.js +/* global StyleInjector */ +/* global prefs */ 'use strict'; -// Chrome reruns content script when documentElement is replaced. -// Note, we're checking against a literal `1`, not just `if (truthy)`, -// because is exposed per HTML spec as a global variable and `window.INJECTED`. +(() => { + if (window.INJECTED === 1) return; -// eslint-disable-next-line no-unused-expressions -self.INJECTED !== 1 && (() => { - self.INJECTED = 1; - - let IS_TAB = !chrome.tabs || location.pathname !== '/popup.html'; - const IS_FRAME = window !== parent; - const STYLE_VIA_API = !chrome.app && document instanceof XMLDocument; - const styleInjector = createStyleInjector({ + /** true -> when the page styles are received, + * false -> when disableAll mode is on at start, the styles won't be sent + * so while disableAll lasts we can ignore messages about style updates because + * the tab will explicitly ask for all styles in bulk when disableAll mode ends */ + let hasStyles = false; + let isDisabled = false; + let isTab = !chrome.tabs || location.pathname !== '/popup.html'; + const isFrame = window !== parent; + const isFrameAboutBlank = isFrame && location.href === 'about:blank'; + const isUnstylable = !chrome.app && document instanceof XMLDocument; + const styleInjector = StyleInjector({ compare: (a, b) => a.id - b.id, onUpdate: onInjectorUpdate, }); - const initializing = init(); - /** @type chrome.runtime.Port */ - let port; - let lazyBadge = IS_FRAME; - let parentDomain; - - // the popup needs a check as it's not a tab but can be opened in a tab manually for whatever reason - if (!IS_TAB) { - chrome.tabs.getCurrent(tab => { - IS_TAB = Boolean(tab); - if (tab && styleInjector.list.length) updateCount(); - }); - } + // dynamic iframes don't have a URL yet so we'll use their parent's URL (hash isn't inherited) + let matchUrl = isFrameAboutBlank && tryCatch(() => parent.location.href.split('#')[0]) || + location.href; // save it now because chrome.runtime will be unavailable in the orphaned script const orphanEventId = chrome.runtime.id; @@ -36,6 +30,37 @@ self.INJECTED !== 1 && (() => { // firefox doesn't orphanize content scripts so the old elements stay if (!chrome.app) styleInjector.clearOrphans(); + /** @type chrome.runtime.Port */ + let port; + let lazyBadge = isFrame; + let parentDomain; + + /* about:blank iframes are often used by sites for file upload or background tasks + * and they may break if unexpected DOM stuff is present at `load` event + * so we'll add the styles only if the iframe becomes visible */ + const {IntersectionObserver} = window; + const xoEventId = `${Math.random()}`; + /** @type IntersectionObserver */ + let xo; + if (IntersectionObserver) { + window[Symbol.for('xo')] = (el, cb) => { + if (!xo) xo = new IntersectionObserver(onIntersect, {rootMargin: '100%'}); + el.addEventListener(xoEventId, cb, {once: true}); + xo.observe(el); + }; + } + + // Declare all vars before init() or it'll throw due to "temporal dead zone" of const/let + const ready = init(); + + // the popup needs a check as it's not a tab but can be opened in a tab manually for whatever reason + if (!isTab) { + chrome.tabs.getCurrent(tab => { + isTab = Boolean(tab); + if (tab && styleInjector.list.length) updateCount(); + }); + } + msg.onTab(applyOnMessage); if (!chrome.tabs) { @@ -54,116 +79,107 @@ self.INJECTED !== 1 && (() => { if (!isOrphaned) { updateCount(); const onOff = prefs[styleInjector.list.length ? 'subscribe' : 'unsubscribe']; - onOff(['disableAll'], updateDisableAll); - if (IS_FRAME) { + onOff('disableAll', updateDisableAll); + if (isFrame) { updateExposeIframes(); - onOff(['exposeIframes'], updateExposeIframes); + onOff('exposeIframes', updateExposeIframes); } } } async function init() { - if (STYLE_VIA_API) { + if (isUnstylable) { await API.styleViaAPI({method: 'styleApply'}); } else { - const styles = chrome.app && getStylesViaXhr() || - await API.getSectionsByUrl(getMatchUrl(), null, true); - if (styles.disableAll) { - delete styles.disableAll; - styleInjector.toggle(false); + const SYM_ID = 'styles'; + const SYM = Symbol.for(SYM_ID); + const parentStyles = isFrameAboutBlank && + tryCatch(() => parent[parent.Symbol.for(SYM_ID)]); + const styles = + window[SYM] || + parentStyles && await new Promise(onFrameElementInView) && parentStyles || + !isFrameAboutBlank && chrome.app && !chrome.tabs && tryCatch(getStylesViaXhr) || + await API.styles.getSectionsByUrl(matchUrl, null, true); + isDisabled = styles.disableAll; + hasStyles = !isDisabled; + if (hasStyles) { + window[SYM] = styles; + await styleInjector.apply(styles); + } else { + delete window[SYM]; + prefs.subscribe('disableAll', updateDisableAll); } - await styleInjector.apply(styles); + styleInjector.toggle(hasStyles); } } + /** Must be executed inside try/catch */ function getStylesViaXhr() { - if (new RegExp(`(^|\\s|;)${chrome.runtime.id}=\\s*([-\\w]+)\\s*(;|$)`).test(document.cookie)) { - const data = RegExp.$2; - const disableAll = data[0] === '1'; - const url = 'blob:' + chrome.runtime.getURL(data.slice(1)); - document.cookie = `${chrome.runtime.id}=1; max-age=0`; // remove our cookie - let res; - try { - if (!disableAll) { // will get the styles asynchronously - const xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); // synchronous - xhr.send(); - res = JSON.parse(xhr.response); - } - URL.revokeObjectURL(url); - } catch (e) {} - return res; - } - } - - function getMatchUrl() { - let matchUrl = location.href; - if (!chrome.tabs && !matchUrl.match(/^(http|file|chrome|ftp)/)) { - // dynamic about: and javascript: iframes don't have an URL yet - // so we'll try the parent frame which is guaranteed to have a real URL - try { - if (IS_FRAME) { - matchUrl = parent.location.href; - } - } catch (e) {} - } - return matchUrl; + const blobId = document.cookie.split(chrome.runtime.id + '=')[1].split(';')[0]; + const url = 'blob:' + chrome.runtime.getURL(blobId); + document.cookie = `${chrome.runtime.id}=1; max-age=0`; // remove our cookie + const xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); // synchronous + xhr.send(); + URL.revokeObjectURL(url); + return JSON.parse(xhr.response); } function applyOnMessage(request) { - if (STYLE_VIA_API) { - if (request.method === 'urlChanged') { + const {method} = request; + if (isUnstylable) { + if (method === 'urlChanged') { request.method = 'styleReplaceAll'; } - if (/^(style|updateCount)/.test(request.method)) { + if (/^(style|updateCount)/.test(method)) { API.styleViaAPI(request); return; } } - switch (request.method) { + const {style} = request; + switch (method) { case 'ping': return true; case 'styleDeleted': - styleInjector.remove(request.style.id); + styleInjector.remove(style.id); break; case 'styleUpdated': - if (request.style.enabled) { - API.getSectionsByUrl(getMatchUrl(), request.style.id) - .then(sections => { - if (!sections[request.style.id]) { - styleInjector.remove(request.style.id); - } else { - styleInjector.apply(sections); - } - }); + if (!hasStyles && isDisabled) break; + if (style.enabled) { + API.styles.getSectionsByUrl(matchUrl, style.id).then(sections => + sections[style.id] + ? styleInjector.apply(sections) + : styleInjector.remove(style.id)); } else { - styleInjector.remove(request.style.id); + styleInjector.remove(style.id); } break; case 'styleAdded': - if (request.style.enabled) { - API.getSectionsByUrl(getMatchUrl(), request.style.id) + if (!hasStyles && isDisabled) break; + if (style.enabled) { + API.styles.getSectionsByUrl(matchUrl, style.id) .then(styleInjector.apply); } break; case 'urlChanged': - API.getSectionsByUrl(getMatchUrl()) - .then(styleInjector.replace); + if (!hasStyles && isDisabled || matchUrl === request.url) break; + matchUrl = request.url; + API.styles.getSectionsByUrl(matchUrl).then(sections => { + hasStyles = true; + styleInjector.replace(sections); + }); break; case 'backgroundReady': - initializing - .catch(err => { - if (msg.RX_NO_RECEIVER.test(err.message)) { - return init(); - } - }) - .catch(console.error); + ready.catch(err => + msg.isIgnorableError(err) + ? init() + : console.error(err)); break; case 'updateCount': @@ -173,8 +189,11 @@ self.INJECTED !== 1 && (() => { } function updateDisableAll(key, disableAll) { - if (STYLE_VIA_API) { + isDisabled = disableAll; + if (isUnstylable) { API.styleViaAPI({method: 'prefChanged', prefs: {disableAll}}); + } else if (!hasStyles && !disableAll) { + init(); } else { styleInjector.toggle(!disableAll); } @@ -196,8 +215,8 @@ self.INJECTED !== 1 && (() => { } function updateCount() { - if (!IS_TAB) return; - if (IS_FRAME) { + if (!isTab) return; + if (isFrame) { if (!port && styleInjector.list.length) { port = chrome.runtime.connect({name: 'iframe'}); } else if (port && !styleInjector.list.length) { @@ -205,23 +224,43 @@ self.INJECTED !== 1 && (() => { } if (lazyBadge && performance.now() > 1000) lazyBadge = false; } - (STYLE_VIA_API ? + (isUnstylable ? API.styleViaAPI({method: 'updateCount'}) : API.updateIconBadge(styleInjector.list.map(style => style.id), {lazyBadge}) ).catch(msg.ignoreError); } - function orphanCheck() { + function onFrameElementInView(cb) { + if (IntersectionObserver) { + parent[parent.Symbol.for('xo')](frameElement, cb); + } else { + requestAnimationFrame(cb); + } + } + + /** @param {IntersectionObserverEntry[]} entries */ + function onIntersect(entries) { + for (const e of entries) { + if (e.isIntersecting) { + xo.unobserve(e.target); + e.target.dispatchEvent(new Event(xoEventId)); + } + } + } + + function tryCatch(func, ...args) { try { - if (chrome.i18n.getUILanguage()) return; + return func(...args); } catch (e) {} + } + + function orphanCheck() { + if (tryCatch(() => chrome.i18n.getUILanguage())) return; // In Chrome content script is orphaned on an extension update/reload // so we need to detach event listeners window.removeEventListener(orphanEventId, orphanCheck, true); isOrphaned = true; - styleInjector.clear(); - try { - msg.off(applyOnMessage); - } catch (e) {} + setTimeout(styleInjector.clear, 1000); // avoiding FOUC + tryCatch(msg.off, applyOnMessage); } })(); diff --git a/content/install-hook-greasyfork.js b/content/install-hook-greasyfork.js index 9e125530..7750d4fe 100644 --- a/content/install-hook-greasyfork.js +++ b/content/install-hook-greasyfork.js @@ -1,4 +1,4 @@ -/* global API */ +/* global API */// msg.js 'use strict'; // onCommitted may fire twice @@ -13,7 +13,7 @@ if (window.INJECTED_GREASYFORK !== 1) { e.data.name && e.data.type === 'style-version-query') { removeEventListener('message', onMessage); - const style = await API.findUsercss(e.data) || {}; + const style = await API.usercss.find(e.data) || {}; const {version} = style.usercssData || {}; postMessage({type: 'style-version', version}, '*'); } diff --git a/content/install-hook-openusercss.js b/content/install-hook-openusercss.js deleted file mode 100644 index 31defada..00000000 --- a/content/install-hook-openusercss.js +++ /dev/null @@ -1,174 +0,0 @@ -/* global API */ -'use strict'; - -(() => { - const manifest = chrome.runtime.getManifest(); - const allowedOrigins = [ - 'https://openusercss.org', - 'https://openusercss.com' - ]; - - const sendPostMessage = message => { - if (allowedOrigins.includes(location.origin)) { - window.postMessage(message, location.origin); - } - }; - - const askHandshake = () => { - // Tell the page that we exist and that it should send the handshake - sendPostMessage({ - type: 'ouc-begin-handshake' - }); - }; - - // Listen for queries by the site and respond with a callback object - const sendInstalledCallback = styleData => { - sendPostMessage({ - type: 'ouc-is-installed-response', - style: styleData - }); - }; - - const installedHandler = event => { - if (event.data - && event.data.type === 'ouc-is-installed' - && allowedOrigins.includes(event.origin) - ) { - API.findUsercss({ - name: event.data.name, - namespace: event.data.namespace - }).then(style => { - const data = {event}; - const callbackObject = { - installed: Boolean(style), - enabled: style.enabled, - name: data.name, - namespace: data.namespace - }; - - sendInstalledCallback(callbackObject); - }); - } - }; - - const attachInstalledListeners = () => { - window.addEventListener('message', installedHandler); - }; - - const doHandshake = () => { - // This is a representation of features that Stylus is capable of - const implementedFeatures = [ - 'install-usercss', - 'event:install-usercss', - 'event:is-installed', - 'configure-after-install', - 'builtin-editor', - 'create-usercss', - 'edit-usercss', - 'import-moz-export', - 'export-moz-export', - 'update-manual', - 'update-auto', - 'export-json-backups', - 'import-json-backups', - 'manage-local' - ]; - const reportedFeatures = []; - - // The handshake question includes a list of required and optional features - // we match them with features we have implemented, and build a union array. - event.data.featuresList.required.forEach(feature => { - if (implementedFeatures.includes(feature)) { - reportedFeatures.push(feature); - } - }); - - event.data.featuresList.optional.forEach(feature => { - if (implementedFeatures.includes(feature)) { - reportedFeatures.push(feature); - } - }); - - // We send the handshake response, which includes the key we got, plus some - // additional metadata - sendPostMessage({ - type: 'ouc-handshake-response', - key: event.data.key, - extension: { - name: manifest.name, - capabilities: reportedFeatures - } - }); - }; - - const handshakeHandler = event => { - if (event.data - && event.data.type === 'ouc-handshake-question' - && allowedOrigins.includes(event.origin) - ) { - doHandshake(); - } - }; - - const attachHandshakeListeners = () => { - // Wait for the handshake request, then start it - window.addEventListener('message', handshakeHandler); - }; - - const sendInstallCallback = data => { - // Send an install callback to the site in order to let it know - // we were able to install the theme and it may display a success message - sendPostMessage({ - type: 'ouc-install-callback', - key: data.key - }); - }; - - const installHandler = event => { - if (event.data - && event.data.type === 'ouc-install-usercss' - && allowedOrigins.includes(event.origin) - ) { - API.installUsercss({ - name: event.data.title, - sourceCode: event.data.code, - }).then(style => { - sendInstallCallback({ - enabled: style.enabled, - key: event.data.key - }); - }); - } - }; - - const attachInstallListeners = () => { - // Wait for an install event, then save the theme - window.addEventListener('message', installHandler); - }; - - const orphanCheck = () => { - const eventName = chrome.runtime.id + '-install-hook-openusercss'; - const orphanCheckRequest = () => { - // If we can't get the UI language, it means we are orphaned, and should - // remove our event handlers - if (chrome.i18n && chrome.i18n.getUILanguage()) return true; - - window.removeEventListener('message', installHandler); - window.removeEventListener('message', handshakeHandler); - window.removeEventListener('message', installedHandler); - window.removeEventListener(eventName, orphanCheckRequest, true); - }; - - // Send the event before we listen for it, for other possible - // running instances of the content script. - dispatchEvent(new Event(eventName)); - addEventListener(eventName, orphanCheckRequest, true); - }; - - orphanCheck(); - - attachHandshakeListeners(); - attachInstallListeners(); - attachInstalledListeners(); - askHandshake(); -})(); diff --git a/content/install-hook-usercss.js b/content/install-hook-usercss.js index 6e8be595..42352377 100644 --- a/content/install-hook-usercss.js +++ b/content/install-hook-usercss.js @@ -1,19 +1,21 @@ 'use strict'; // preventing reregistration if reinjected by tabs.executeScript for whatever reason, just in case -if (typeof self.oldCode !== 'string') { - self.oldCode = (document.querySelector('body > pre') || document.body).textContent; +if (typeof window.oldCode !== 'string') { + window.oldCode = (document.querySelector('body > pre') || document.body).textContent; chrome.runtime.onConnect.addListener(port => { if (port.name !== 'downloadSelf') return; - port.onMessage.addListener(({id, force}) => { - fetch(location.href, {mode: 'same-origin'}) - .then(r => r.text()) - .then(code => ({id, code: force || code !== self.oldCode ? code : null})) - .catch(error => ({id, error: error.message || `${error}`})) - .then(msg => { - port.postMessage(msg); - if (msg.code != null) self.oldCode = msg.code; - }); + port.onMessage.addListener(async ({id, force}) => { + const msg = {id}; + try { + const code = await (await fetch(location.href, {mode: 'same-origin'})).text(); + if (code !== window.oldCode || force) { + msg.code = window.oldCode = code; + } + } catch (error) { + msg.error = error.message || `${error}`; + } + port.postMessage(msg); }); // FF keeps content scripts connected on navigation https://github.com/openstyles/stylus/issues/864 addEventListener('pagehide', () => port.disconnect(), {once: true}); @@ -21,4 +23,4 @@ if (typeof self.oldCode !== 'string') { } // passing the result to tabs.executeScript -self.oldCode; // eslint-disable-line no-unused-expressions +window.oldCode; // eslint-disable-line no-unused-expressions diff --git a/content/install-hook-userstyles.js b/content/install-hook-userstyles.js index 1adc4e89..f41c9b33 100644 --- a/content/install-hook-userstyles.js +++ b/content/install-hook-userstyles.js @@ -1,4 +1,4 @@ -/* global cloneInto msg API */ +/* global API msg */// msg.js 'use strict'; // eslint-disable-next-line no-unused-expressions @@ -14,17 +14,10 @@ msg.on(onMessage); - onDOMready().then(() => { - window.postMessage({ - direction: 'from-content-script', - message: 'StylishInstalled', - }, '*'); - }); - let currentMd5; const md5Url = getMeta('stylish-md5-url') || `https://update.userstyles.org/${styleId}.md5`; Promise.all([ - API.findStyle({md5Url}), + API.styles.find({md5Url}), getResource(md5Url), onDOMready(), ]).then(checkUpdatability); @@ -85,7 +78,7 @@ const observer = new MutationObserver(check); observer.observe(document.documentElement, { childList: true, - subtree: true + subtree: true, }); check(); @@ -105,7 +98,7 @@ ? 'styleCanBeUpdatedChrome' : 'styleAlreadyInstalledChrome', detail: { - updateUrl: installedStyle.updateUrl + updateUrl: installedStyle.updateUrl, }, }); }); @@ -119,13 +112,11 @@ if (typeof cloneInto !== 'undefined') { // Firefox requires explicit cloning, however USO can't process our messages anyway // because USO tries to use a global "event" variable deprecated in Firefox - detail = cloneInto({detail}, document); + detail = cloneInto({detail}, document); /* global cloneInto */ } else { detail = {detail}; } - onDOMready().then(() => { - document.dispatchEvent(new CustomEvent(type, detail)); - }); + document.dispatchEvent(new CustomEvent(type, detail)); } function onClick(event) { @@ -154,9 +145,9 @@ function doInstall() { let oldStyle; - return API.findStyle({ - md5Url: getMeta('stylish-md5-url') || location.href - }, true) + return API.styles.find({ + md5Url: getMeta('stylish-md5-url') || location.href, + }) .then(_oldStyle => { oldStyle = _oldStyle; return oldStyle ? @@ -172,7 +163,7 @@ }); } - function saveStyleCode(message, name, addProps = {}) { + async function saveStyleCode(message, name, addProps = {}) { const isNew = message === 'styleInstall'; const needsConfirmation = isNew || !saveStyleCode.confirmed; if (needsConfirmation && !confirm(chrome.i18n.getMessage(message, [name]))) { @@ -180,22 +171,19 @@ } saveStyleCode.confirmed = true; enableUpdateButton(false); - return getStyleJson().then(json => { - if (!json) { - prompt(chrome.i18n.getMessage('styleInstallFailed', ''), - 'https://github.com/openstyles/stylus/issues/195'); - return; - } - // Update originalMd5 since USO changed it (2018-11-11) to NOT match the current md5 - return API.installStyle(Object.assign(json, addProps, {originalMd5: currentMd5})) - .then(style => { - if (!isNew && style.updateUrl.includes('?')) { - enableUpdateButton(true); - } else { - sendEvent({type: 'styleInstalledChrome'}); - } - }); - }); + const json = await getStyleJson(); + if (!json) { + prompt(chrome.i18n.getMessage('styleInstallFailed', ''), + 'https://github.com/openstyles/stylus/issues/195'); + return; + } + // Update originalMd5 since USO changed it (2018-11-11) to NOT match the current md5 + const style = await API.styles.install(Object.assign(json, addProps, {originalMd5: currentMd5})); + if (!isNew && style.updateUrl.includes('?')) { + enableUpdateButton(true); + } else { + sendEvent({type: 'styleInstalledChrome'}); + } function enableUpdateButton(state) { const important = s => s.replace(/;/g, '!important;'); @@ -218,86 +206,59 @@ return e ? e.getAttribute('href') : null; } - function getResource(url, options) { - if (url.startsWith('#')) { - return Promise.resolve(document.getElementById(url.slice(1)).textContent); + async function getResource(url, opts) { + try { + return url.startsWith('#') + ? document.getElementById(url.slice(1)).textContent + : await API.download(url, opts); + } catch (error) { + alert('Error\n' + error.message); + return Promise.reject(error); } - return API.download(Object.assign({ - url, - timeout: 60e3, - // USO can't handle POST requests for style json - body: null, - }, options)) - .catch(error => { - alert('Error' + (error ? '\n' + error : '')); - throw error; - }); } // USO providing md5Url as "https://update.update.userstyles.org/#####.md5" // instead of "https://update.userstyles.org/#####.md5" - function tryFixMd5(style) { - if (style && style.md5Url && style.md5Url.includes('update.update')) { - style.md5Url = style.md5Url.replace('update.update', 'update'); - } - return style; - } - - function getStyleJson() { - return getResource(getStyleURL(), {responseType: 'json'}) - .then(style => { - if (!style || !Array.isArray(style.sections) || style.sections.length) { - return style; - } - const codeElement = document.getElementById('stylish-code'); - if (codeElement && !codeElement.textContent.trim()) { - return style; - } - return getResource(getMeta('stylish-update-url')) - .then(code => API.parseCss({code})) - .then(result => { - style.sections = result.sections; - return style; - }); - }) - .then(tryFixMd5) - .catch(() => null); - } - - function styleSectionsEqual({sections: a}, {sections: b}) { - if (!a || !b) { - return undefined; - } - if (a.length !== b.length) { - return false; - } - // order of sections should be identical to account for the case of multiple - // sections matching the same URL because the order of rules is part of cascading - return a.every((sectionA, index) => propertiesEqual(sectionA, b[index])); - - function propertiesEqual(secA, secB) { - for (const name of ['urlPrefixes', 'urls', 'domains', 'regexps']) { - if (!equalOrEmpty(secA[name], secB[name], 'every', arrayMirrors)) { - return false; - } + async function getStyleJson() { + try { + const style = await getResource(getStyleURL(), {responseType: 'json'}); + const codeElement = document.getElementById('stylish-code'); + if (!style || !Array.isArray(style.sections) || style.sections.length || + codeElement && !codeElement.textContent.trim()) { + return style; } - return equalOrEmpty(secA.code, secB.code, 'substr', (a, b) => a === b); - } + const code = await getResource(getMeta('stylish-update-url')); + style.sections = (await API.worker.parseMozFormat({code})).sections; + if (style.md5Url) style.md5Url = style.md5Url.replace('update.update', 'update'); + return style; + } catch (e) {} + } - function equalOrEmpty(a, b, telltale, comparator) { - const typeA = a && typeof a[telltale] === 'function'; - const typeB = b && typeof b[telltale] === 'function'; - return ( - (a === null || a === undefined || (typeA && !a.length)) && - (b === null || b === undefined || (typeB && !b.length)) - ) || typeA && typeB && a.length === b.length && comparator(a, b); + /** + * The sections are checked in successive order because it matters when many sections + * match the same URL and they have rules with the same CSS specificity + * @param {Object} a - first style object + * @param {Object} b - second style object + * @returns {?boolean} + */ + function styleSectionsEqual({sections: a}, {sections: b}) { + const targets = ['urls', 'urlPrefixes', 'domains', 'regexps']; + return a && b && a.length === b.length && a.every(sameSection); + function sameSection(secA, i) { + return equalOrEmpty(secA.code, b[i].code, 'string', (a, b) => a === b) && + targets.every(target => equalOrEmpty(secA[target], b[i][target], 'array', arrayMirrors)); } - - function arrayMirrors(array1, array2) { - return ( - array1.every(el => array2.includes(el)) && - array2.every(el => array1.includes(el)) - ); + function equalOrEmpty(a, b, type, comparator) { + const typeA = type === 'array' ? Array.isArray(a) : typeof a === type; + const typeB = type === 'array' ? Array.isArray(b) : typeof b === type; + return typeA && typeB && comparator(a, b) || + (a == null || typeA && !a.length) && + (b == null || typeB && !b.length); + } + function arrayMirrors(a, b) { + return a.length === b.length && + a.every(el => b.includes(el)) && + b.every(el => a.includes(el)); } } @@ -343,6 +304,7 @@ function inPageContext(eventId) { document.currentScript.remove(); + window.isInstalled = true; const origMethods = { json: Response.prototype.json, byId: document.getElementById, @@ -365,13 +327,33 @@ function inPageContext(eventId) { Response.prototype.json = origMethods.json; const images = new Map(); for (const ss of json.style_settings) { - const value = vars.get('ik-' + ss.install_key); - if (value && ss.setting_type === 'image' && ss.style_setting_options) { + let value = vars.get('ik-' + ss.install_key); + if (!value || !(ss.style_setting_options || [])[0]) { + continue; + } + if (value.startsWith('ik-')) { + value = value.replace(/^ik-/, ''); + const def = ss.style_setting_options.find(item => item.default); + if (!def || def.install_key !== value) { + if (def) def.default = false; + for (const item of ss.style_setting_options) { + if (item.install_key === value) { + item.default = true; + break; + } + } + } + } else if (ss.setting_type === 'image') { let isListed; for (const opt of ss.style_setting_options) { isListed |= opt.default = (opt.value === value); } images.set(ss.install_key, {url: value, isListed}); + } else { + const item = ss.style_setting_options[0]; + if (item.value !== value && item.install_key === 'placeholder') { + item.value = value; + } } } if (images.size) { diff --git a/content/install-hook-userstylesworld.js b/content/install-hook-userstylesworld.js new file mode 100644 index 00000000..94e31e04 --- /dev/null +++ b/content/install-hook-userstylesworld.js @@ -0,0 +1,43 @@ +/* global API */// msg.js +'use strict'; + +(() => { + const ORIGIN = 'https://userstyles.world'; + const HANDLERS = Object.assign(Object.create(null), { + + async 'usw-ready'() { + send({type: 'usw-remove-stylus-button'}); + if (location.pathname === '/api/oauth/style/new') { + const styleId = Number(new URLSearchParams(location.search).get('vendor_data')); + const data = await API.data.pop('usw' + styleId); + send({type: 'usw-fill-new-style', data}); + } + }, + + async 'usw-style-info-request'(data) { + switch (data.requestType) { + case 'installed': { + const updateUrl = `${ORIGIN}/api/style/${data.styleID}.user.css`; + const style = await API.styles.find({updateUrl}); + send({ + type: 'usw-style-info-response', + data: {installed: Boolean(style), requestType: 'installed'}, + }); + break; + } + } + }, + }); + + window.addEventListener('message', ({data, source, origin}) => { + // Some browsers don't reveal `source` to extensions e.g. Firefox + if (data && (source ? source === window : origin === ORIGIN)) { + const fn = HANDLERS[data.type]; + if (fn) fn(data); + } + }); + + function send(msg) { + window.postMessage(msg, ORIGIN); + } +})(); diff --git a/content/style-injector.js b/content/style-injector.js index 8630bf05..675ec135 100644 --- a/content/style-injector.js +++ b/content/style-injector.js @@ -1,6 +1,7 @@ 'use strict'; -self.createStyleInjector = self.INJECTED === 1 ? self.createStyleInjector : ({ +/** @type {function(opts):StyleInjector} */ +window.StyleInjector = window.INJECTED === 1 ? window.StyleInjector : ({ compare, onUpdate = () => {}, }) => { @@ -8,8 +9,6 @@ self.createStyleInjector = self.INJECTED === 1 ? self.createStyleInjector : ({ const PATCH_ID = 'transition-patch'; // styles are out of order if any of these elements is injected between them const ORDERED_TAGS = new Set(['head', 'body', 'frameset', 'style', 'link']); - // detect Chrome 65 via a feature it added since browser version can be spoofed - const isChromePre65 = chrome.app && typeof Worklet !== 'function'; const docRewriteObserver = RewriteObserver(_sort); const docRootObserver = RootObserver(_sortIfNeeded); const list = []; @@ -19,22 +18,22 @@ self.createStyleInjector = self.INJECTED === 1 ? self.createStyleInjector : ({ // will store the original method refs because the page can override them let creationDoc, createElement, createElementNS; - return { + return /** @namespace StyleInjector */ { list, - apply(styleMap) { + async apply(styleMap) { const styles = _styleMapToArray(styleMap); - return ( - !styles.length ? - Promise.resolve([]) : - docRootObserver.evade(() => { - if (!isTransitionPatched && isEnabled) { - _applyTransitionPatch(styles); - } - return styles.map(_addUpdate); - }) - ).then(_emitUpdate); + const value = !styles.length + ? [] + : await docRootObserver.evade(() => { + if (!isTransitionPatched && isEnabled) { + _applyTransitionPatch(styles); + } + return styles.map(_addUpdate); + }); + _emitUpdate(); + return value; }, clear() { @@ -157,10 +156,9 @@ self.createStyleInjector = self.INJECTED === 1 ? self.createStyleInjector : ({ docRootObserver[onOff](); } - function _emitUpdate(value) { + function _emitUpdate() { _toggleObservers(list.length); onUpdate(); - return value; } /* @@ -232,17 +230,8 @@ self.createStyleInjector = self.INJECTED === 1 ? self.createStyleInjector : ({ function _update({id, code}) { const style = table.get(id); - if (style.code === code) return; - style.code = code; - // workaround for Chrome devtools bug fixed in v65 - if (isChromePre65) { - const oldEl = style.el; - style.el = _createStyle(id, code); - if (isEnabled) { - oldEl.parentNode.insertBefore(style.el, oldEl.nextSibling); - oldEl.remove(); - } - } else { + if (style.code !== code) { + style.code = code; style.el.textContent = code; } } diff --git a/edit.html b/edit.html index 5d7d0c00..23dbeb25 100644 --- a/edit.html +++ b/edit.html @@ -1,112 +1,67 @@ + - - - - - - - + + - - - - + + + - - - - + - - - - - + - - - - - - - - - - - - - - - - + - + + + + + + - + - - - - - - - - + + + - - - - - - - - - - - + +