{ "extensionDescription": { "message": "Protects you against tracking through CDNs (Content Delivery Networks) by redirecting to local resources.", "description": "Protects you against tracking through CDNs (Content Delivery Networks) by redirecting to local resources." }, "amountInjectedDescription": { "message": "Amount of local Content Delivery Network resource injections since installation.", "description": "Amount injected description." }, "optionsTitle": { "message": "Options", "description": "Options title" }, "showIconBadgeTitle": { "message": "Display injection counts on icon", "description": "Show icon badge title" }, "showIconBadgeDescription": { "message": "Show the number of injected resources on the extension icon.", "description": "Show icon badge description." }, "blockMissingTitle": { "message": "Block requests for missing resources", "description": "Block requests for missing resources title" }, "blockMissingDescription": { "message": "Cancel intercepted request if the required resource is not locally available.", "description": "Block requests for missing resources description." }, "disablePrefetchTitle": { "message": "Disable link prefetching", "description": "Disable prefetch title" }, "disablePrefetchDescription": { "message": "Prevent disallowed requests from leaking out to delivery networks.", "description": "Disable prefetch description." }, "stripMetadataTitle": { "message": "Strip metadata from allowed requests", "description": "Strip metadata title" }, "stripMetadataDescription": { "message": "Erase sensitive data from allowed CDN requests for improved privacy.", "description": "Strip metadata description." }, "allowlistedDomainsTitle": { "message": "Deactivate LocalCDN for these domains:", "description": "Deactivate LocalCDN for these domains:" }, "allowlistedDomainsDescription": { "message": "Enter domains to disable LocalCDN there. One entry per line.", "description": "Enter domains to disable LocalCDN there. One entry per line." }, "advancedLabel": { "message": "Advanced", "description": "Advanced label" }, "generateRuleSetTitle": { "message": "Generate rule sets for your adblocker", "description": "Generate rule sets for your adblocker" }, "generateRuleSetDescription": { "message": "In case you are using an adblocker you can generate the rules here. You have to add these rules manually in your adblocker.", "description": "In case you are using an adblocker you can generate the rules here. You have to add these rules manually in your adblocker." }, "lastUpdate": { "message": "Last update:", "description": "Last update:" }, "copyRuleSet": { "message": "Copy", "description": "Text of button to copy ruleset" }, "loggingTitle": { "message": "Enable logging", "description": "Enable logging" }, "loggingDescription": { "message": "You can open the log with the icon in the menu. The log will be deleted when you close the browser or disable logging.", "description": "You can open the log with the icon in the menu. The log will be deleted when you close the browser or disable logging." }, "featureBreaksWebsitesDescription": { "message": "This feature breaks websites. Do not leave it enabled, unless you are prepared to manually add affected domains to the allow list.", "description": "This feature breaks websites. Do not leave it enabled, unless you are prepared to manually add affected domains to the allow list." }, "featureBreaksWebsitesButton": { "message": "Disable", "description": "Disable" }, "labelManipulateDOM": { "message": "Filter HTML source code", "description": "Filter HTML source code" }, "labelDonate": { "message": "Donate", "description": "Donate" }, "negateHtmlFilterListTitle": { "message": "Invert HTML filter", "description": "Invert HTML filter" }, "negateHtmlFilterListDescription": { "message": "Enable this option to always apply the HTML filter. The domains in the list will be ignored then. If this option is disabled, the HTML filter is only applied to domains in the list.", "description": "Enable this option to always apply the HTML filter. The domains in the list will be ignored then. If this option is disabled, the HTML filter is only applied to domains in the list." }, "negateHtmlFilterListWarning": { "message": "This function can break websites. Please note the information on the Wiki page.", "description": "This function can break websites. Please note the information on the Wiki page." }, "htmlFilterDomainsTitleExclude": { "message": "Do not apply HTML filter to these domains:", "description": "Do not apply HTML filter to these domains:" }, "htmlFilterDomainsDescription": { "message": "Enter the domains to be handled or ignored by the HTML filter. One entry per line.", "description": "Enter the domains to be handled or ignored by the HTML filter. One entry per line." }, "htmlFilterDomainsTitleInclude": { "message": "Apply HTML filter for these domains:", "description": "Apply HTML filter for these domains:" }, "blockGoogleFontsTitle": { "message": "Block Google Fonts", "description": "Block Google Fonts" }, "blockGoogleFontsDescription": { "message": "If requests for missing resources are allowed, connections to \"fonts.googleapis.com\" are not blocked. Enable this option to block these requests.", "description": "If requests for missing resources are allowed, connections to \"fonts.googleapis.com\" are not blocked. Enable this option to block these requests." }, "chooseIconStyle": { "message": "Choose an icon for this extension", "description": "Choose an icon for this extension" }, "internalStatisticsTitle": { "message": "Internal statistics", "description": "Internal statistics" }, "internalStatisticsDescription": { "message": "This function is currently in an experimental stage. No data transmission. It’s all local on your device.", "description": "No data transmission. It’s all local on your device." }, "headerStatistics": { "message": "Statistics", "description": "Statistics. The header of a statistics page." }, "labelToday": { "message": "Today", "description": "Statistics view for today." }, "labelPastWeek": { "message": "Last week", "description": "Statistics view for past week." }, "labelPastMonth": { "message": "Last month", "description": "Statistics view for past month." }, "labelPastYear": { "message": "Last year", "description": "Statistics view for past year." }, "labelAll": { "message": "All", "description": "Statistics view over the whole time range" }, "labelDelete": { "message": "Delete", "description": "Button to delete all statistics data." }, "labelAvg": { "message": "Average (Replacements per day)", "description": "Followed by a number of average injections per day within a specific period." }, "labelInjectedFrameworks": { "message": "Replaced frameworks", "description": "Followed by a number of injections within a specific period." }, "dialogConfirmDeleteStatistics": { "message": "Are you sure you want to delete all the statistics?", "description": "Are you sure you want to delete all the statistics?" }, "labelDomainsAllowlistGoogleFonts": { "message": "These domains are allowed to load Google Fonts. One entry per line.", "description": "These domains are allowed to load Google Fonts. One entry per line." }, "btnGeneral": { "message": "Basic", "description": "Basic" }, "btnAdvanced": { "message": "Advanced", "description": "Advanced" }, "btnOther": { "message": "Other", "description": "Other" }, "btnInfo": { "message": "Info", "description": "Info" }, "headerStorageType": { "message": "Storage type", "description": "Storage type" }, "labelStorageTypeLocal": { "message": "Local", "description": "Local" }, "labelStorageTypeSync": { "message": "Sync", "description": "Sync" }, "headerImportExport": { "message": "Import/Export", "description": "Import/Export" }, "labelExportData": { "message": "Back up to file", "description": "Back up to file" }, "labelImportData": { "message": "Restore from file", "description": "Restore from file" }, "dialogImportSuccessful": { "message": "Import successful", "description": "Import successful" }, "dialogImportFailed": { "message": "Import failed", "description": "Import failed" }, "updateNotificationTitle": { "message": "Notification after an update", "description": "Notification after an update" }, "updateNotificationNever": { "message": "Never (Silent Updates)", "description": "Never (Silent Updates)" }, "updateNotificationOnlyRules": { "message": "Only if new CDNs and rules", "description": "Only if new CDNs and rules" }, "updateNotificationAlways": { "message": "Always", "description": "Always" }, "websiteBroken": { "message": "Website broken?", "description": "Website broken?" }, "hideDonationButton": { "message": "Hide donation button", "description": "Hide donation button" }, "betaLabel": { "message": "Beta", "description": "beta" }, "changeBadgeColorMissingResourcesTitle": { "message": "Indicate missing resources on the icon", "description": "Indicate missing resources on the icon" }, "changeBadgeColorMissingResourcesDescription": { "message": "Change the badge color if resources are missing.", "description": "Change the badge color if resources are missing." }, "titleHelp": { "message": "Help", "description": "Help" }, "helpIntroductionTitle": { "message": "Introduction", "description": "Introduction" }, "helpHtmlFilterTitle": { "message": "What is »HTML filter«?", "description": "What is »HTML filter«?" }, "helpRuleGeneratorTitle": { "message": "Rule generator", "description": "Rule generator" }, "helpWebsiteIssuesTitle": { "message": "Some websites look strange or are not easy to use", "description": "Some websites look strange or are not easy to use" }, "helpBlockGoogleFontsTitle": { "message": "Why is there a »Block Google Fonts« option?", "description": "Why is there a »Block Google Fonts« option?" }, "helpStatisticsTitle": { "message": "What about the statistics? Is anything transferred to any servers?", "description": "What about the statistics? Is anything transferred to any servers?" }, "helpWhatWillBeSynchronizedTitle": { "message": "What will be synchronized when I select »sync« as storage type?", "description": "What will be synchronized when I select »sync« as storage type?" }, "helpBrowserCompatibilityTitle": { "message": "Browser compatibility", "description": "Browser compatibility" }, "helpIntroductionDescription": { "message": "LocalCDN is a web browser extension that emulates Content Delivery Networks to improve your online privacy. It intercepts traffic, finds supported frameworks/libraries locally, and injects them into the website. Feel free to use the following testing utility to find out if you are properly protected. For more information read the tutorial or our Wiki pages.", "description": "LocalCDN is a web browser extension that emulates Content Delivery Networks to improve your online privacy. It intercepts traffic, finds supported frameworks/libraries locally, and injects them into the website. Feel free to use the following testing utility to find out if you are properly protected. For more information read the tutorial or our Wiki pages." }, "helpLinkTestUtility": { "message": "Testing utility", "description": "Testing utility" }, "helpLinkTutorial": { "message": "Tutorial", "description": "Tutorial" }, "helpLinkWikiPages": { "message": "Wiki pages", "description": "Wiki pages" }, "helpHtmlFilterDescription": { "message": "In most cases LocalCDN can easily replace embedded frameworks and improves privacy. In some cases the website may try to prevent this by setting certain options in the HTML source code. LocalCDN reads the HTML source code before it is displayed in the browser and removes these part (red).", "description": "In most cases LocalCDN can easily replace embedded frameworks and improves privacy. In some cases the website may try to prevent this by setting certain options in the HTML source code. LocalCDN reads the HTML source code before it is displayed in the browser and removes these part (red)." }, "helpHtmlFilterBefore": { "message": "The HTML filter removes the red characters from this example:", "description": "The HTML filter removes the red characters from this example:" }, "helpHtmlFilterAfter": { "message": "The result then looks like this:", "description": "The result then looks like this:" }, "helpHtmlFilterWhyTitle": { "message": "Why is it necessary to remove crossorigin and integrity attributes?", "description": "Why is it necessary to remove crossorigin and integrity attributes?" }, "helpHtmlFilterCrossorigin": { "message": "The crossorigin attribute prevents the replacement because the destination does not match the requested one.", "description": "The crossorigin attribute prevents the replacement because the destination does not match the requested one." }, "helpHtmlFilterIntegrity": { "message": "To save disk space and to deliver more frameworks LocalCDN upgrades a framework. An integrity tag is the hash value of a file. If the check fails, the browser won‘t include a framework. The integrity check will fail because the hash values for e.g. jQuery 1.10.1 and jQuery 1.12.4 are different.", "description": "To save disk space and to deliver more frameworks LocalCDN upgrades a framework. An integrity tag is the hash value of a file. If the check fails, the browser won‘t include a framework. The integrity check will fail because the hash values for e.g. jQuery 1.10.1 and jQuery 1.12.4 are different." }, "helpHtmlFilterErrors": { "message": "Unfortunately, it sometimes happens that special characters are then displayed incorrectly. In this case you can deactivate the setting again, to display the umlauts correctly.", "description": "Unfortunately, it sometimes happens that special characters are then displayed incorrectly. In this case you can deactivate the setting again, to display the umlauts correctly." }, "helpRuleGeneratorDescription": { "message": "If you want to automatically redirect all supported CDN connections to LocalCDN, you can add these rules to your adblocker to allow these redirections. If you do not want to add these rules, you must allow each CDN connection individually for each website.", "description": "If you want to automatically redirect all supported CDN connections to LocalCDN, you can add these rules to your adblocker to allow these redirections. If you do not want to add these rules, you must allow each CDN connection individually for each website." }, "helpRuleGeneratorUblockTitle": { "message": "Only uBlock Origin:", "description": "Only uBlock Origin:" }, "helpRuleGeneratorUblockDescription": { "message": "These rules are only relevant in »medium« or »hard« mode, because it blocks all 3rd-party resources. They are not necessary in »default«, »easy« or »very-easy« mode. For more information, please visit the uBlock Origin Wiki.", "description": "These rules are only relevant in »medium« or »hard« mode, because it blocks all 3rd-party resources. They are not necessary in »default«, »easy« or »very-easy« mode. For more information, please visit the uBlock Origin Wiki." }, "helpRuleGeneratorUblockTableIcon": { "message": "Icon", "description": "Icon" }, "helpRuleGeneratorUblockTableMode": { "message": "Mode", "description": "Mode" }, "helpRuleGeneratorUblockTableUseful": { "message": "Rules useful", "description": "Rules useful" }, "helpRuleGeneratorUblockTableDefaultEasy": { "message": "Default/Easy", "description": "Default/Easy" }, "helpRuleGeneratorUblockTableMedium": { "message": "Medium", "description": "Medium" }, "helpRuleGeneratorUblockTableHard": { "message": "Hard", "description": "Hard" }, "helpWebsiteIssuesDescription": { "message": "There are two possible reasons: Either a framework/library is required that LocalCDN doesn‘t (yet) deliver or an SOP. A SOP (Same origin policy) is a security mechanism that determines what data the browser is allowed to load. It helps to isolate malicious documents and thus reduce possible attack vectors. This policy prevents the browser from loading the external frameworks of LocalCDN. Unfortunately there is no solution for this at the moment.", "description": "There are two possible reasons: Either a framework/library is required that LocalCDN doesn‘t (yet) deliver or an SOP. A SOP (Same origin policy) is a security mechanism that determines what data the browser is allowed to load. It helps to isolate malicious documents and thus reduce possible attack vectors. This policy prevents the browser from loading the external frameworks of LocalCDN. Unfortunately there is no solution for this at the moment." }, "helpBlockGoogleFontsDescription": { "message": "LocalCDN can replace »Google Material Icons«. To catch the connection your adblocker (e.g. uBlock Origin, uMatrix or AdGuard) must allow the request. LocalCDN listens on these requests and if the query contains »Google Material Icons«, the resource will be replaced. If you uncheck the »Block requests for missing content« option, non-existent resources will be allowed to pass and »Google Fonts« will be loaded, because »Google Material Icons« and »Google Fonts« use the same domain. If you don‘t want this, you can block »Google Fonts« on LocalCDN.", "description": "LocalCDN can replace »Google Material Icons«. To catch the connection your adblocker (e.g. uBlock Origin, uMatrix or AdGuard) must allow the request. LocalCDN listens on these requests and if the query contains »Google Material Icons«, the resource will be replaced. If you uncheck the »Block requests for missing content« option, non-existent resources will be allowed to pass and »Google Fonts« will be loaded, because »Google Material Icons« and »Google Fonts« use the same domain. If you don‘t want this, you can block »Google Fonts« on LocalCDN." }, "helpStatisticsDescription": { "message": "Don‘t panic, nothing will be transmitted. It would be against all my principles. The statistics (JSON format) contains the following information: Date, CDN+counter and framework+counter. That‘s all. I‘ve an example here:", "description": "Don‘t panic, nothing will be transmitted. It would be against all my principles. The statistics (JSON format) contains the following information: Date, CDN+counter and framework+counter. That‘s all. I‘ve an example here:" }, "helpStatisticsContent": { "message": "The statistics contain no information about the browser, operating system, requesting website, IP addresses or any other information. Just date, CDN+counter and framework+counter. It shows you which frameworks are replaced by LocalCDNs how often and which CDNs were requested.", "description": "The statistics contain no information about the browser, operating system, requesting website, IP addresses or any other information. Just date, CDN+counter and framework+counter. It shows you which frameworks are replaced by LocalCDNs how often and which CDNs were requested." }, "helpStatisticsTruthTitle": { "message": "How do I know that‘s true?", "description": "How do I know that‘s true?" }, "helpStatisticsTruthDescription": { "message": "The extension storage can be viewed directly with the Firefox browser. Open the URL »about:debugging«, switch to »Storage« and select »Extension Storage«. Under the key »internalStatisticsData« you will find the collected data. Just copy it and put it into a JSON PrettyPrinter to make it more readable. Please note that you have to remove the first and last quotation mark and the key to it. You should be able to see this clearly in this video.", "description": "The extension storage can be viewed directly with the Firefox browser. Open the URL »about:debugging«, switch to »Storage« and select »Extension Storage«. Under the key »internalStatisticsData« you will find the collected data. Just copy it and put it into a JSON PrettyPrinter to make it more readable. Please note that you have to remove the first and last quotation mark and the key to it. You should be able to see this clearly in this video." }, "helpSyncTitle": { "message": "What will be synchronized when I select »sync« as storage type?", "description": "What will be synchronized when I select »sync« as storage type?" }, "helpSyncDescription": { "message": "Sync will only work if you are logged in with a Firefox account on the device and have allowed add-ons to sync in the settings. A separate sync server under your control will also work. This will synchronize most of the settings of LocalCDN across all devices.", "description": "Sync will only work if you are logged in with a Firefox account on the device and have allowed add-ons to sync in the settings. A separate sync server under your control will also work. This will synchronize most of the settings of LocalCDN across all devices." }, "helpSyncAccount": { "message": "If you don‘t have a sync account, nothing will be synchronized. In that case it makes no difference what type of storage you have selected.", "description": "If you don‘t have a sync account, nothing will be synchronized. In that case it makes no difference what type of storage you have selected." }, "helpSyncContentNever": { "message": "Things that are never synchronized:", "description": "Things that are never synchronized:" }, "helpNumberOfInjections": { "message": "Numbers of injections", "description": "Numbers of injections" }, "helpYes": { "message": "Yes", "description": "Yes" }, "helpNo": { "message": "No", "description": "No" }, "helpData": { "message": "Data", "description": "Data" }, "helpSyncContentEver": { "message": "Settings that will be synchronized:", "description": "Settings that will be synchronized:" }, "helpIcons": { "message": "Default, Light, Blue/Grey", "description": "Default, Light, Blue/Grey" }, "helpSyncContentLinks": { "message": "More information about Firefox Sync:", "description": "More information about Firefox Sync:" }, "helpBrowserCompatibility": { "message": "Browser compatibility", "description": "Browser compatibility" }, "helpReplace": { "message": "Replace", "description": "Replace" }, "helpReplaceOther": { "message": "Replace other resources", "description": "Replace other resources" }, "helpUpgradeAllResources": { "message": "Upgrade all resources", "description": "Upgrade all resources" }, "helpExplanationChrome": { "message": "All Chromium based Browser", "description": "All Chromium based Browser" }, "helpLimitation": { "message": "This is not a limitation of LocalCDN, but missing API support of Chromium based browsers.", "description": "This is not a limitation of LocalCDN, but missing API support of Chromium based browsers." }, "titleBadgeDefault": { "message": "Default badge", "description": "Default badge" }, "titleBadgeHTMLFilter": { "message": "HTML filter badge", "description": "HTML filter badge" }, "titleBadgeMissingResource": { "message": "Missing or blocked resource badge", "description": "Missing or blocked resources badge" }, "counterBlocked": { "message": "Blocked", "description": "Blocked" }, "counterMissing": { "message": "Missing", "description": "Missing" }, "permissionRevokedHeader": { "message": "Permission revoked", "description": "Permission revoked" }, "permissionRevokedPermissionName": { "message": "Access your data for all websites", "description": "The exact name of the permission. Exactly as it is displayed in Firefox." }, "permissionRevokedDescription": { "message": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs.", "description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs." }, "helpWhyThisPermission": { "message": "Why does this extension need this permission?", "description": "Why does this extension need this permission?" }, "helpPermissionDescription": { "message": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission.", "description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission." }, "permissionMissing": { "message": "Missing permission", "description": "Missing permission" }, "permissionAllow": { "message": "Allow", "description": "Allow" }, "permissionMoreInfo": { "message": "More info", "description": "More info" } }