From 31f3319951e14553ebc5b3c664b26ff557265560 Mon Sep 17 00:00:00 2001 From: Jonah Aragon Date: Tue, 4 Apr 2023 22:25:28 -0500 Subject: [PATCH] Add Spanish translation (#2111) --- Pipfile.lock | 28 ++--- _redirects | 3 +- config/mkdocs.common.yml | 4 + config/mkdocs.es.yml | 170 +++++++++++++++++++++++++++ config/mkdocs.fr.yml | 22 ++-- config/mkdocs.nl.yml | 14 +-- docs/about/donate.md | 2 +- docs/about/services.md | 2 +- docs/cloud.md | 4 +- docs/index.md | 4 +- includes/strings.en.yml | 45 +++++++ modules/mkdocs-material | 2 +- netlify.toml | 7 +- theme/assets/stylesheets/lang-he.css | 6 +- 14 files changed, 268 insertions(+), 45 deletions(-) create mode 100644 config/mkdocs.es.yml create mode 100644 includes/strings.en.yml diff --git a/Pipfile.lock b/Pipfile.lock index 73c8f0f2..9c8264a7 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -26,11 +26,11 @@ }, "beautifulsoup4": { "hashes": [ - "sha256:c7bdbfb20a0dbe09518b96a809d93351b2e2bcb8046c0809466fa6632a10c257", - "sha256:e44795bb4f156d94abb5fbc56efff871c1045bfef72e9efe77558db9f9616ac3" + "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da", + "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a" ], "markers": "python_version >= '3.6'", - "version": "==4.12.1" + "version": "==4.12.2" }, "cairocffi": { "hashes": [ @@ -278,11 +278,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20", - "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09" + "sha256:23c2bcae4762dfb0bbe072d358faec24957901d75b6c4ab11172c0c982532402", + "sha256:8f8bd2af397cf33bd344d35cfe7f489219b7d14fc79a3f854b75b8417e9226b0" ], "markers": "python_version < '3.10'", - "version": "==6.1.0" + "version": "==6.3.0" }, "jinja2": { "hashes": [ @@ -489,7 +489,7 @@ }, "mkdocs-material": { "path": "./modules/mkdocs-material", - "version": "==9.1.3+insiders.4.32.3" + "version": "==9.1.6+insiders.4.32.5" }, "mkdocs-material-extensions": { "hashes": [ @@ -602,19 +602,19 @@ }, "pygments": { "hashes": [ - "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", - "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" + "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094", + "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500" ], - "markers": "python_version >= '3.6'", - "version": "==2.14.0" + "markers": "python_version >= '3.7'", + "version": "==2.15.0" }, "pymdown-extensions": { "hashes": [ - "sha256:31eaa76ce6f96aabfcea98787c2fff2c5c0611b20a53a94213970cfbf05f02b8", - "sha256:562c38eee4ce3f101ce631b804bfc2177a8a76c7e4dc908871fb6741a90257a7" + "sha256:a499191d8d869f30339de86fcf072a787e86c42b6f16f280f5c2cf174182b7f3", + "sha256:f7e86c1d3981f23d9dc43294488ecb54abadd05b0be4bf8f0e15efc90f7853ff" ], "markers": "python_version >= '3.7'", - "version": "==9.10" + "version": "==9.11" }, "pyquery": { "hashes": [ diff --git a/_redirects b/_redirects index 625b804f..34fd48ab 100644 --- a/_redirects +++ b/_redirects @@ -18,9 +18,8 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -# Auto detect text files and perform LF normalization - / /en/ 302 Language=en +/ /es/ 302 Language=es / /fr/ 302 Language=fr / /he/ 302 Language=he / /nl/ 302 Language=nl diff --git a/config/mkdocs.common.yml b/config/mkdocs.common.yml index 71b49a02..3648b8a5 100644 --- a/config/mkdocs.common.yml +++ b/config/mkdocs.common.yml @@ -38,6 +38,10 @@ extra: link: /en/ lang: en icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1fa-1f1f8.svg + - name: Español + link: /es/ + lang: es + icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ea-1f1f8.svg - name: Français link: /fr/ lang: fr diff --git a/config/mkdocs.es.yml b/config/mkdocs.es.yml new file mode 100644 index 00000000..142c695b --- /dev/null +++ b/config/mkdocs.es.yml @@ -0,0 +1,170 @@ +# Copyright (c) 2022-2023 Jonah Aragon + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +INHERIT: mkdocs.common.yml +docs_dir: '../i18n/es' +site_url: "https://www.privacyguides.org/es/" +site_dir: '../site/es' + +site_name: Privacy Guides +site_description: | + Privacy Guides es tu recurso central de privacidad y seguridad para protegerte en línea. +copyright: | + Privacy Guides es un sitio web sin fines lucrativos y de motivación social que ofrece información para proteger la seguridad y privacidad de sus datos.
+ No ganamos dinero por recomendar determinados productos y no utilizamos enlaces de afiliados.
+ © 2019 - 2023 Privacy Guides y colaboradores. + + Contenido bajo licencia CC BY-ND 4.0. +edit_uri: edit/main/docs/ + +extra: + generator: false + analytics: + provider: plausible + property: privacyguides.org + feedback: + title: "¿Le ha resultado útil esta página?" + ratings: + - icon: material/robot-happy-outline + name: "Esta página fue útil" + data: Helpful + note: "Gracias por sus comentarios!" + - icon: material/robot-confused + name: "Esta página se podría mejorar" + data: Needs Improvement + note: "Gracias por sus comentarios. Ayúdenos a mejorar esta página abriendo un debate en nuestro foro." + +theme: + language: es + logo: ../../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg + font: + text: Public Sans + code: DM Mono + palette: + - media: "(prefers-color-scheme)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-auto + name: "Cambiar a modo oscuro" + - media: "(prefers-color-scheme: dark)" + scheme: slate + accent: amber + toggle: + icon: material/brightness-2 + name: "Cambiar a modo claro" + - media: "(prefers-color-scheme: light)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-5 + name: "Cambiar al tema del sistema" + +plugins: + social: + cards: !ENV [NETLIFY, false] + cards_color: + fill: "#FFD06F" + text: "#2d2d2d" + cards_dir: assets/img/social + cards_font: Public Sans + cache_dir: .cache/plugin/social-es + +markdown_extensions: + pymdownx.snippets: + auto_append: + - includes/abbreviations.es.txt + +nav: + - Inicio: 'index.md' + - Base de conocimientos: + - 'basics/threat-modeling.md' + - 'basics/common-threats.md' + - 'basics/common-misconceptions.md' + - 'basics/account-creation.md' + - 'basics/account-deletion.md' + - "Aspectos tecnológicos esenciales": + - 'basics/passwords-overview.md' + - 'basics/multi-factor-authentication.md' + - 'basics/email-security.md' + - 'basics/vpn-overview.md' + - Sistemas operativos: + - 'os/android-overview.md' + - 'os/linux-overview.md' + - 'os/qubes-overview.md' + - Temas avanzados: + - 'advanced/dns-overview.md' + - 'advanced/tor-overview.md' + - 'advanced/payments.md' + - 'advanced/communication-network-types.md' + - kb-archive.md + - Recomendaciones: + - 'tools.md' + - "Navegación por Internet": + - 'tor.md' + - 'desktop-browsers.md' + - 'mobile-browsers.md' + - Sistemas operativos: + - 'android.md' + - 'desktop.md' + - 'router.md' + - Proveedores: + - 'cloud.md' + - 'dns.md' + - 'email.md' + - 'financial-services.md' + - 'search-engines.md' + - 'vpn.md' + - Software: + - 'calendar.md' + - 'cryptocurrency.md' + - 'data-redaction.md' + - 'email-clients.md' + - 'encryption.md' + - 'file-sharing.md' + - 'frontends.md' + - 'multi-factor-authentication.md' + - 'news-aggregators.md' + - 'notebooks.md' + - 'passwords.md' + - 'productivity.md' + - 'real-time-communication.md' + - 'video-streaming.md' + - Acerca de: + - 'about/index.md' + - 'about/criteria.md' + - 'about/statistics.md' + - 'about/notices.md' + - 'about/privacy-policy.md' + - Comunidad: + - 'about/donate.md' + - Servicios en línea: 'about/services.md' + - "Código de conducta": 'CODE_OF_CONDUCT.md' + - 'about/privacytools.md' + - Contribuir: + - "Guía de redacción": + - 'meta/writing-style.md' + - 'meta/brand.md' + - "Guías técnicas": + - 'meta/uploading-images.md' + - 'meta/git-recommendations.md' + - "Registro de cambios": 'https://github.com/privacyguides/privacyguides.org/releases' + - Foro: 'https://discuss.privacyguides.net/' + - Blog: 'https://blog.privacyguides.org/' diff --git a/config/mkdocs.fr.yml b/config/mkdocs.fr.yml index e5bfdc64..1a11ad89 100644 --- a/config/mkdocs.fr.yml +++ b/config/mkdocs.fr.yml @@ -27,11 +27,11 @@ site_name: Privacy Guides site_description: | Privacy Guides est votre ressource centrale en matière de vie privée et de sécurité pour vous protéger en ligne. copyright: | - Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy.
- We do not make money from recommending certain products, and we do not use affiliate links.
- © 2019 - 2023 Privacy Guides and contributors. + Privacy Guides est un site web à but non lucratif et à vocation sociale qui fournit des informations pour protéger la sécurité de vos données et votre vie privée.
+ Nous ne gagnons pas d'argent en recommandant certains produits et nous n'utilisons pas de liens d'affiliation.
+ © 2019 - 2023 Privacy Guides et contributeurs. - Content licensed under CC BY-ND 4.0. + Contenu sous licence CC BY-ND 4.0. edit_uri: edit/main/i18n/fr/ extra: @@ -49,7 +49,7 @@ extra: - icon: material/robot-confused name: "Cette page pourrait être améliorée" data: Needs Improvement - note: "Thanks for your feedback! Help us improve this page by opening a discussion on our forum." + note: "Merci pour vos commentaires ! Aidez-nous à améliorer cette page en ouvrant une discussion sur notre forum." theme: language: fr @@ -153,16 +153,16 @@ nav: - 'about/statistics.md' - 'about/notices.md' - 'about/privacy-policy.md' - - Community: + - "Communauté": - 'about/donate.md' - - Online Services: 'about/services.md' - - Code of Conduct: 'CODE_OF_CONDUCT.md' + - "Services en ligne": 'about/services.md' + - "Code de conduite": 'CODE_OF_CONDUCT.md' - 'about/privacytools.md' - - Contributing: - - Writing Guide: + - "Contribuer": + - "Guide de rédaction": - 'meta/writing-style.md' - 'meta/brand.md' - - Technical Guides: + - "Guides techniques": - 'meta/uploading-images.md' - 'meta/git-recommendations.md' - Journal des modifications: 'https://github.com/privacyguides/privacyguides.org/releases' diff --git a/config/mkdocs.nl.yml b/config/mkdocs.nl.yml index e7c5fcaa..581d292b 100644 --- a/config/mkdocs.nl.yml +++ b/config/mkdocs.nl.yml @@ -153,18 +153,18 @@ nav: - 'about/statistics.md' - 'about/notices.md' - 'about/privacy-policy.md' - - Community: + - Gemeenschap: - 'about/donate.md' - - Online Services: 'about/services.md' - - Code of Conduct: 'CODE_OF_CONDUCT.md' + - Online diensten: 'about/services.md' + - Gedragscode: 'CODE_OF_CONDUCT.md' - 'about/privacytools.md' - - Contributing: - - Writing Guide: + - Bijdragen: + - Schrijfgids: - 'meta/writing-style.md' - 'meta/brand.md' - - Technical Guides: + - Technische gids: - 'meta/uploading-images.md' - 'meta/git-recommendations.md' - - Changelog: 'https://github.com/privacyguides/privacyguides.org/releases' + - Wijzigingslogboek: 'https://github.com/privacyguides/privacyguides.org/releases' - Forum: 'https://discuss.privacyguides.net/' - Blog: 'https://blog.privacyguides.org/' diff --git a/docs/about/donate.md b/docs/about/donate.md index a5c81222..ae617bce 100644 --- a/docs/about/donate.md +++ b/docs/about/donate.md @@ -6,7 +6,7 @@ It takes a lot of [people](https://github.com/privacyguides/privacyguides.org/gr If you want to support us financially, the most convenient method for us is contributing via Open Collective, a website operated by our fiscal host. Open Collective accepts payments via credit/debit card, PayPal, and bank transfers. -[Donate on OpenCollective.com](https://opencollective.com/privacyguides/donate){ .md-button .md-button--primary } +[Donate on OpenCollective.com](https://opencollective.com/privacyguides/donate){ class="md-button md-button--primary" } Donations made directly to us on Open Collective are generally tax-deductible in the US, because our fiscal host (the Open Collective Foundation) is a registered 501(c)3 organization. You will receive a receipt from the Open Collective Foundation after donating. Privacy Guides does not provide financial advice, and you should contact your tax advisor to find out whether this is applicable to you. diff --git a/docs/about/services.md b/docs/about/services.md index 0307723a..b1e76809 100644 --- a/docs/about/services.md +++ b/docs/about/services.md @@ -2,7 +2,7 @@ We run a number of web services to test out features and promote cool decentralized, federated, and/or open-source projects. Many of these services are available to the public and are detailed below. -[:material-comment-alert: Report an issue](https://discuss.privacyguides.net/c/services/2){ .md-button .md-button--primary } +[:material-comment-alert: Report an issue](https://discuss.privacyguides.net/c/services/2){ class="md-button md-button--primary" } ## Discourse diff --git a/docs/cloud.md b/docs/cloud.md index ff5cf69f..fe8541fe 100644 --- a/docs/cloud.md +++ b/docs/cloud.md @@ -19,7 +19,7 @@ If these alternatives do not fit your needs, we suggest you look into using encr **Proton Drive** is a Swiss encrypted cloud storage provider from the popular encrypted email provider [Proton Mail](email.md#proton-mail). - [:octicons-home-16: Homepage](https://proton.me/drive){ .md-button .md-button--primary } + [:octicons-home-16: Homepage](https://proton.me/drive){ class="md-button md-button--primary" } [:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" } [:octicons-info-16:](https://proton.me/support/drive){ .card-link title=Documentation} [:octicons-code-16:](https://github.com/ProtonMail/WebClients){ .card-link title="Source Code" } @@ -43,7 +43,7 @@ Proton Drive's brand new mobile clients have not yet been publicly audited by a **Tresorit** is a Hungarian encrypted cloud storage provider founded in 2011. Tresorit is owned by the Swiss Post, the national postal service of Switzerland. - [:octicons-home-16: Homepage](https://tresorit.com/){ .md-button .md-button--primary } + [:octicons-home-16: Homepage](https://tresorit.com/){ class="md-button md-button--primary" } [:octicons-eye-16:](https://tresorit.com/legal/privacy-policy){ .card-link title="Privacy Policy" } [:octicons-info-16:](https://support.tresorit.com/hc/en-us){ .card-link title=Documentation} diff --git a/docs/index.md b/docs/index.md index 703aa357..6b07ac2d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -42,7 +42,7 @@ Much like the right to interracial marriage, woman's suffrage, freedom of speech You shouldn't confuse privacy with secrecy. We know what happens in the bathroom, but you still close the door. That's because you want privacy, not secrecy. **Everyone** has something to protect. Privacy is something that makes us human. -[:material-target-account: Common Internet Threats](basics/common-threats.md){ .md-button .md-button--primary } +[:material-target-account: Common Internet Threats](basics/common-threats.md){ class="md-button md-button--primary" } ## What should I do? @@ -52,7 +52,7 @@ Trying to protect all your data from everyone all the time is impractical, expen ==This process of identifying threats and defining countermeasures is called **threat modeling**==, and it forms the basis of every good security and privacy plan. -[:material-book-outline: Learn More About Threat Modeling](basics/threat-modeling.md){ .md-button .md-button--primary } +[:material-book-outline: Learn More About Threat Modeling](basics/threat-modeling.md){ class="md-button md-button--primary" } --- diff --git a/includes/strings.en.yml b/includes/strings.en.yml new file mode 100644 index 00000000..1eee7ce2 --- /dev/null +++ b/includes/strings.en.yml @@ -0,0 +1,45 @@ +# The strings in these files need to be copied MANUALLY to /config/mkdocs.LANG.yml +# This file exists just so these strings can be originally translated on Crowdin. +config: + description: Privacy Guides is your central privacy and security resource to protect yourself online. + copyright: + - 1: | + Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy. + - 2: | + We do not make money from recommending certain products, and we do not use affiliate links. + - 3: | + Privacy Guides and contributors. + - 4: | + Content licensed under CC BY-ND 4.0. + feedback: + question: Was this page helpful? + yes: This page was helpful + yes-note: Thanks for your feedback! + no: This page could be improved + no-note: | + Thanks for your feedback! Help us improve this page by opening a discussion on our forum. + theme: + dark: Switch to dark mode + light: Switch to light mode + system: Switch to system theme + +nav: + Home: Home + Knowledge Base: Knowledge Base + Technology Essentials: Technology Essentials + Operating Systems: Operating Systems + Advanced Topics: Advanced Topics + Recommendations: Recommendations + Internet Browsing: Internet Browsing + Providers: Providers + Software: Software + About: About + Community: Community + Online Services: Online Services + Code of Conduct: Code of Conduct + Contributing: Contributing + Writing Guide: Writing Guide + Technical Guides: Technical Guides + Changelog: Changelog + Forum: Forum + Blog: Blog diff --git a/modules/mkdocs-material b/modules/mkdocs-material index d94dd62c..fe72fa9d 160000 --- a/modules/mkdocs-material +++ b/modules/mkdocs-material @@ -1 +1 @@ -Subproject commit d94dd62ca44c99bf0b2c3772c6348d9d31b6a02b +Subproject commit fe72fa9d66972d877a15875568d6437d93ba0d65 diff --git a/netlify.toml b/netlify.toml index adad9462..2071d823 100644 --- a/netlify.toml +++ b/netlify.toml @@ -20,7 +20,7 @@ [build] publish = "site/" - command = "mkdocs build --config-file config/mkdocs.en.yml && crowdin download && mkdocs build --config-file config/mkdocs.he.yml && mkdocs build --config-file config/mkdocs.fr.yml && mkdocs build --config-file config/mkdocs.nl.yml && mv _redirects site/" + command = "crowdin download && mkdocs build --config-file config/mkdocs.en.yml && mkdocs build --config-file config/mkdocs.es.yml && mkdocs build --config-file config/mkdocs.he.yml && mkdocs build --config-file config/mkdocs.fr.yml && mkdocs build --config-file config/mkdocs.nl.yml && mv _redirects site/" [[headers]] for = "/*" @@ -41,6 +41,11 @@ [headers.values] Content-Security-Policy = "default-src 'none'; script-src https://www.privacyguides.org https://api.privacyguides.net 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src data: 'self'; connect-src https://api.github.com https://*.privacyguides.net 'self'; frame-src https://snowflake.torproject.org; frame-ancestors 'none'" +[[redirects]] + from = "/es/*" + to = "/es/404/index.html" + status = 404 + [[redirects]] from = "/fr/*" to = "/fr/404/index.html" diff --git a/theme/assets/stylesheets/lang-he.css b/theme/assets/stylesheets/lang-he.css index 699843e6..f2350a91 100644 --- a/theme/assets/stylesheets/lang-he.css +++ b/theme/assets/stylesheets/lang-he.css @@ -26,7 +26,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url(https://fonts.bunny.net/suez-one/files/suez-one-hebrew-400-normal.woff2) format('woff2'), url(https://fonts.bunny.net/suez-one/files/suez-one-hebrew-400-normal.woff) format('woff'); + src: url(https://fonts.bunny.net/suez-one/files/suez-one-hebrew-400-normal.woff2) format('woff2'); unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; } @@ -36,7 +36,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url(https://fonts.bunny.net/suez-one/files/suez-one-latin-400-normal.woff2) format('woff2'), url(https://fonts.bunny.net/suez-one/files/suez-one-latin-400-normal.woff) format('woff'); + src: url(https://fonts.bunny.net/suez-one/files/suez-one-latin-400-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } @@ -46,7 +46,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url(https://fonts.bunny.net/suez-one/files/suez-one-latin-ext-400-normal.woff2) format('woff2'), url(https://fonts.bunny.net/suez-one/files/suez-one-latin-ext-400-normal.woff) format('woff'); + src: url(https://fonts.bunny.net/suez-one/files/suez-one-latin-ext-400-normal.woff2) format('woff2'); unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; }