jekyll-theme-modootoday 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +182 -0
- data/LICENSE +21 -0
- data/README.ko.md +115 -0
- data/README.md +112 -0
- data/RULES.md +120 -0
- data/_includes/footer-custom.html +5 -0
- data/_includes/head-custom.html +1 -0
- data/_includes/modootoday/actions.html +17 -0
- data/_includes/modootoday/archive-years.html +30 -0
- data/_includes/modootoday/archive.html +44 -0
- data/_includes/modootoday/blog/card.html +23 -0
- data/_includes/modootoday/blog/config.html +17 -0
- data/_includes/modootoday/blog/list.html +13 -0
- data/_includes/modootoday/blog/pager.html +15 -0
- data/_includes/modootoday/blog/reading-time.html +10 -0
- data/_includes/modootoday/blog/select.html +18 -0
- data/_includes/modootoday/brand/icon.html +39 -0
- data/_includes/modootoday/brand/logo.html +7 -0
- data/_includes/modootoday/breadcrumb.html +22 -0
- data/_includes/modootoday/config.html +41 -0
- data/_includes/modootoday/detail/cover.html +5 -0
- data/_includes/modootoday/detail/cta.html +13 -0
- data/_includes/modootoday/detail/facts.html +31 -0
- data/_includes/modootoday/detail/jsonld.html +34 -0
- data/_includes/modootoday/directory/date-tile.html +2 -0
- data/_includes/modootoday/directory/filter.html +7 -0
- data/_includes/modootoday/directory/ics.html +17 -0
- data/_includes/modootoday/directory/item.html +18 -0
- data/_includes/modootoday/directory/items.html +4 -0
- data/_includes/modootoday/directory/jsonld.html +5 -0
- data/_includes/modootoday/directory/list.html +16 -0
- data/_includes/modootoday/directory/values.html +6 -0
- data/_includes/modootoday/doc/page-actions.html +15 -0
- data/_includes/modootoday/doc/pagination.html +24 -0
- data/_includes/modootoday/doc/sidebar-item.html +11 -0
- data/_includes/modootoday/doc/sidebar.html +28 -0
- data/_includes/modootoday/doc/twin.html +8 -0
- data/_includes/modootoday/docs-extra/head.html +7 -0
- data/_includes/modootoday/docs-extra/jsonld.html +19 -0
- data/_includes/modootoday/head-meta.html +90 -0
- data/_includes/modootoday/home-url.html +4 -0
- data/_includes/modootoday/i18n/ar.html +2 -0
- data/_includes/modootoday/i18n/de.html +2 -0
- data/_includes/modootoday/i18n/el.html +2 -0
- data/_includes/modootoday/i18n/es.html +2 -0
- data/_includes/modootoday/i18n/fa.html +2 -0
- data/_includes/modootoday/i18n/fr.html +2 -0
- data/_includes/modootoday/i18n/id.html +2 -0
- data/_includes/modootoday/i18n/it.html +2 -0
- data/_includes/modootoday/i18n/ja.html +2 -0
- data/_includes/modootoday/i18n/ko.html +2 -0
- data/_includes/modootoday/i18n/ml.html +2 -0
- data/_includes/modootoday/i18n/name.html +2 -0
- data/_includes/modootoday/i18n/pl.html +2 -0
- data/_includes/modootoday/i18n/pt-BR.html +2 -0
- data/_includes/modootoday/i18n/ro.html +2 -0
- data/_includes/modootoday/i18n/ru.html +2 -0
- data/_includes/modootoday/i18n/th.html +2 -0
- data/_includes/modootoday/i18n/tr.html +2 -0
- data/_includes/modootoday/i18n/uk.html +2 -0
- data/_includes/modootoday/i18n/ur-Latn.html +2 -0
- data/_includes/modootoday/i18n/vi.html +2 -0
- data/_includes/modootoday/i18n/zh-CN.html +2 -0
- data/_includes/modootoday/i18n/zh-TW.html +2 -0
- data/_includes/modootoday/i18n.html +163 -0
- data/_includes/modootoday/jsonld/article.html +15 -0
- data/_includes/modootoday/jsonld/author.html +8 -0
- data/_includes/modootoday/jsonld/breadcrumb.html +17 -0
- data/_includes/modootoday/jsonld/entity.html +16 -0
- data/_includes/modootoday/jsonld/graph.html +24 -0
- data/_includes/modootoday/jsonld/profile.html +20 -0
- data/_includes/modootoday/jsonld/props.html +13 -0
- data/_includes/modootoday/jsonld/publisher.html +11 -0
- data/_includes/modootoday/jsonld/type.html +29 -0
- data/_includes/modootoday/jsonld/webpage.html +17 -0
- data/_includes/modootoday/jsonld/website.html +9 -0
- data/_includes/modootoday/lang-switch.html +31 -0
- data/_includes/modootoday/link.html +3 -0
- data/_includes/modootoday/links/attrs.html +9 -0
- data/_includes/modootoday/links/content.html +16 -0
- data/_includes/modootoday/markdown/c/details.html +6 -0
- data/_includes/modootoday/markdown/c/faq.html +2 -0
- data/_includes/modootoday/markdown/c/filetree.html +3 -0
- data/_includes/modootoday/markdown/c/gallery.html +5 -0
- data/_includes/modootoday/markdown/c/linkcards.html +2 -0
- data/_includes/modootoday/markdown/c/params.html +3 -0
- data/_includes/modootoday/markdown/c/pricing.html +10 -0
- data/_includes/modootoday/markdown/c/quote.html +6 -0
- data/_includes/modootoday/markdown/c/subscribe.html +6 -0
- data/_includes/modootoday/markdown/components.html +114 -0
- data/_includes/modootoday/markdown/inline.html +46 -0
- data/_includes/modootoday/markdown/llms-pages.html +14 -0
- data/_includes/modootoday/markdown/raw-body.html +6 -0
- data/_includes/modootoday/markdown/sections.html +43 -0
- data/_includes/modootoday/marketing/head.html +6 -0
- data/_includes/modootoday/meta/byline.html +24 -0
- data/_includes/modootoday/meta/post-nav.html +16 -0
- data/_includes/modootoday/meta/related.html +20 -0
- data/_includes/modootoday/meta/series.html +11 -0
- data/_includes/modootoday/meta/share.html +4 -0
- data/_includes/modootoday/nav.html +19 -0
- data/_includes/modootoday/news/badge.html +4 -0
- data/_includes/modootoday/news/front.html +30 -0
- data/_includes/modootoday/news/notes.html +10 -0
- data/_includes/modootoday/page-meta.html +16 -0
- data/_includes/modootoday/pages/error.html +13 -0
- data/_includes/modootoday/pages/hero/scene.html +27 -0
- data/_includes/modootoday/pages/hero/sparks.html +6 -0
- data/_includes/modootoday/pages/hero.html +11 -0
- data/_includes/modootoday/pages/search-form.html +14 -0
- data/_includes/modootoday/search.json +11 -0
- data/_includes/modootoday/stylesheets.html +36 -0
- data/_includes/modootoday/t.html +7 -0
- data/_includes/modootoday/theme-color.html +19 -0
- data/_includes/modootoday/toc.html +17 -0
- data/_includes/modootoday/tokens.html +11 -0
- data/_includes/sections/showcase.html +18 -0
- data/_layouts/archive.html +6 -0
- data/_layouts/author.html +19 -0
- data/_layouts/blog.html +28 -0
- data/_layouts/book.html +21 -0
- data/_layouts/brand.html +21 -0
- data/_layouts/case-study.html +5 -0
- data/_layouts/changelog.html +24 -0
- data/_layouts/contact.html +27 -0
- data/_layouts/course.html +21 -0
- data/_layouts/default.html +87 -0
- data/_layouts/detail.html +31 -0
- data/_layouts/directory.html +12 -0
- data/_layouts/doc.html +27 -0
- data/_layouts/download.html +21 -0
- data/_layouts/episode.html +5 -0
- data/_layouts/error.html +7 -0
- data/_layouts/event.html +5 -0
- data/_layouts/events.html +6 -0
- data/_layouts/feature.html +18 -0
- data/_layouts/feed.html +35 -0
- data/_layouts/glossary.html +24 -0
- data/_layouts/home.html +7 -0
- data/_layouts/hub.html +16 -0
- data/_layouts/integrations.html +7 -0
- data/_layouts/job.html +5 -0
- data/_layouts/jobs.html +7 -0
- data/_layouts/legal.html +21 -0
- data/_layouts/links.html +18 -0
- data/_layouts/llms-full.html +8 -0
- data/_layouts/llms.html +32 -0
- data/_layouts/minimal.html +8 -0
- data/_layouts/news-article.html +6 -0
- data/_layouts/news.html +22 -0
- data/_layouts/portfolio.html +7 -0
- data/_layouts/post.html +54 -0
- data/_layouts/pricing.html +32 -0
- data/_layouts/project.html +5 -0
- data/_layouts/redirect.html +21 -0
- data/_layouts/reference.html +24 -0
- data/_layouts/resume.html +50 -0
- data/_layouts/roadmap.html +22 -0
- data/_layouts/search.html +8 -0
- data/_layouts/sponsors.html +7 -0
- data/_layouts/team.html +7 -0
- data/_layouts/twin.html +2 -0
- data/_layouts/wide.html +7 -0
- data/_sass/modootoday/_access.scss +12 -0
- data/_sass/modootoday/_core.scss +18 -0
- data/_sass/modootoday/_settings.scss +5 -0
- data/_sass/modootoday/_sheet.scss +6 -0
- data/_sass/modootoday/base/_bidi.scss +8 -0
- data/_sass/modootoday/base/_code.scss +18 -0
- data/_sass/modootoday/base/_interaction.scss +6 -0
- data/_sass/modootoday/base/_prose.scss +32 -0
- data/_sass/modootoday/base/_reset.scss +14 -0
- data/_sass/modootoday/base/_table.scss +8 -0
- data/_sass/modootoday/blog/_article.scss +27 -0
- data/_sass/modootoday/blog/_cards.scss +36 -0
- data/_sass/modootoday/blog/_index.scss +10 -0
- data/_sass/modootoday/blog/_news.scss +26 -0
- data/_sass/modootoday/blog/_post.scss +9 -0
- data/_sass/modootoday/components/core/chrome/_banner.scss +7 -0
- data/_sass/modootoday/components/core/chrome/_breadcrumb.scss +10 -0
- data/_sass/modootoday/components/core/chrome/_nav.scss +39 -0
- data/_sass/modootoday/components/core/chrome/_pagination.scss +10 -0
- data/_sass/modootoday/components/core/chrome/_theme-toggle.scss +16 -0
- data/_sass/modootoday/components/core/inline/_badge.scss +15 -0
- data/_sass/modootoday/components/core/inline/_callout.scss +14 -0
- data/_sass/modootoday/components/core/inline/_code-copy.scss +11 -0
- data/_sass/modootoday/components/core/inline/_code.scss +11 -0
- data/_sass/modootoday/components/core/inline/_cta.scss +11 -0
- data/_sass/modootoday/components/core/inline/_embed.scss +6 -0
- data/_sass/modootoday/components/core/inline/_figure.scss +9 -0
- data/_sass/modootoday/components/core/inline/_footnotes.scss +6 -0
- data/_sass/modootoday/components/core/inline/_hero.scss +8 -0
- data/_sass/modootoday/components/core/inline/_kbd.scss +6 -0
- data/_sass/modootoday/components/core/inline/_progress.scss +8 -0
- data/_sass/modootoday/components/doc/_page-actions.scss +10 -0
- data/_sass/modootoday/components/doc/_sidebar.scss +31 -0
- data/_sass/modootoday/components/doc/_toc.scss +19 -0
- data/_sass/modootoday/components/loading/_loading.scss +33 -0
- data/_sass/modootoday/components/search/_search.scss +36 -0
- data/_sass/modootoday/components/section/showcase/_card.scss +15 -0
- data/_sass/modootoday/components/section/showcase/_cta.scss +7 -0
- data/_sass/modootoday/components/section/showcase/_gallery.scss +15 -0
- data/_sass/modootoday/components/section/showcase/_linkcards.scss +12 -0
- data/_sass/modootoday/components/section/showcase/_pricing.scss +12 -0
- data/_sass/modootoday/components/section/showcase/_quote.scss +7 -0
- data/_sass/modootoday/components/section/showcase/_subscribe.scss +9 -0
- data/_sass/modootoday/components/section/structure/_accordion.scss +15 -0
- data/_sass/modootoday/components/section/structure/_details.scss +15 -0
- data/_sass/modootoday/components/section/structure/_faq.scss +5 -0
- data/_sass/modootoday/components/section/structure/_filetree.scss +13 -0
- data/_sass/modootoday/components/section/structure/_params.scss +8 -0
- data/_sass/modootoday/components/section/structure/_steps.scss +13 -0
- data/_sass/modootoday/components/section/structure/_tabs.scss +21 -0
- data/_sass/modootoday/components/section/structure/_timeline.scss +10 -0
- data/_sass/modootoday/detail/_index.scss +8 -0
- data/_sass/modootoday/detail/_page.scss +25 -0
- data/_sass/modootoday/directory/_filter.scss +12 -0
- data/_sass/modootoday/directory/_grid.scss +18 -0
- data/_sass/modootoday/directory/_index.scss +11 -0
- data/_sass/modootoday/directory/_presets.scss +16 -0
- data/_sass/modootoday/docs-extra/_index.scss +7 -0
- data/_sass/modootoday/docs-extra/_page.scss +37 -0
- data/_sass/modootoday/hero/_index.scss +6 -0
- data/_sass/modootoday/hero/_layout.scss +28 -0
- data/_sass/modootoday/hero/_scene.scss +20 -0
- data/_sass/modootoday/kit/_button.scss +8 -0
- data/_sass/modootoday/layout/_page-meta.scss +9 -0
- data/_sass/modootoday/layout/_safe-area.scss +9 -0
- data/_sass/modootoday/layout/_shell.scss +56 -0
- data/_sass/modootoday/marketing/_forms.scss +11 -0
- data/_sass/modootoday/marketing/_index.scss +10 -0
- data/_sass/modootoday/marketing/_page.scss +31 -0
- data/_sass/modootoday/marketing/_pricing.scss +15 -0
- data/_sass/modootoday/pages/_actions.scss +11 -0
- data/_sass/modootoday/pages/_error.scss +7 -0
- data/_sass/modootoday/pages/_index.scss +11 -0
- data/_sass/modootoday/pages/_legal.scss +17 -0
- data/_sass/modootoday/pages/_search.scss +9 -0
- data/_sass/modootoday/pages/_shells.scss +11 -0
- data/_sass/modootoday/resume/_index.scss +5 -0
- data/_sass/modootoday/resume/_page.scss +27 -0
- data/_sass/modootoday/tokens/_emit.scss +15 -0
- data/_sass/modootoday/tokens/_primitive.scss +18 -0
- data/_sass/modootoday/tokens/_semantic.scss +37 -0
- data/_sass/modootoday/tools/_functions.scss +2 -0
- data/_sass/modootoday/tools/_img-dark.scss +12 -0
- data/_sass/modootoday/tools/_mixins.scss +8 -0
- data/_sass/modootoday.scss +40 -0
- data/assets/css/modootoday/doc.scss +10 -0
- data/assets/css/modootoday/loading.scss +8 -0
- data/assets/css/modootoday/search.scss +8 -0
- data/assets/css/modootoday/showcase/card.scss +7 -0
- data/assets/css/modootoday/showcase/cta.scss +7 -0
- data/assets/css/modootoday/showcase/gallery.scss +7 -0
- data/assets/css/modootoday/showcase/linkcards.scss +7 -0
- data/assets/css/modootoday/showcase/pricing.scss +7 -0
- data/assets/css/modootoday/showcase/quote.scss +7 -0
- data/assets/css/modootoday/showcase/subscribe.scss +7 -0
- data/assets/css/modootoday/structure/accordion.scss +7 -0
- data/assets/css/modootoday/structure/details.scss +7 -0
- data/assets/css/modootoday/structure/faq.scss +7 -0
- data/assets/css/modootoday/structure/filetree.scss +7 -0
- data/assets/css/modootoday/structure/params.scss +7 -0
- data/assets/css/modootoday/structure/steps.scss +7 -0
- data/assets/css/modootoday/structure/tabs.scss +7 -0
- data/assets/css/modootoday/structure/timeline.scss +7 -0
- data/assets/css/modootoday-blog.scss +7 -0
- data/assets/css/modootoday-detail.scss +7 -0
- data/assets/css/modootoday-directory.scss +7 -0
- data/assets/css/modootoday-docs-extra.scss +7 -0
- data/assets/css/modootoday-hero.scss +7 -0
- data/assets/css/modootoday-marketing.scss +7 -0
- data/assets/css/modootoday-pages.scss +7 -0
- data/assets/css/modootoday-resume.scss +7 -0
- data/assets/css/modootoday.scss +17 -0
- data/assets/js/modootoday/accordion.js +13 -0
- data/assets/js/modootoday/code-copy.js +29 -0
- data/assets/js/modootoday/menu.js +19 -0
- data/assets/js/modootoday/scroll-region.js +14 -0
- data/assets/js/modootoday/search-keys.js +18 -0
- data/assets/js/modootoday/search.js +31 -0
- data/assets/js/modootoday/share.js +16 -0
- data/assets/js/modootoday/tabs.js +26 -0
- data/assets/js/modootoday/theme-init.js +2 -0
- data/assets/js/modootoday/theme-toggle.js +17 -0
- data/assets/modootoday/apple-touch-icon.png +0 -0
- data/assets/modootoday/favicon-32.png +0 -0
- data/assets/modootoday/favicon.svg +1 -0
- data/assets/modootoday/hero/dawn-1280.webp +0 -0
- data/assets/modootoday/hero/dawn-640.webp +0 -0
- data/assets/modootoday/hero/dawn-960.webp +0 -0
- data/exe/modootoday-check +7 -0
- data/i18n/ar.yml +130 -0
- data/i18n/de.yml +130 -0
- data/i18n/el.yml +130 -0
- data/i18n/en.yml +131 -0
- data/i18n/es.yml +130 -0
- data/i18n/fa.yml +130 -0
- data/i18n/fr.yml +130 -0
- data/i18n/glossary.yml +61 -0
- data/i18n/id.yml +130 -0
- data/i18n/it.yml +130 -0
- data/i18n/ja.yml +130 -0
- data/i18n/ko.yml +130 -0
- data/i18n/languages.yml +25 -0
- data/i18n/ml.yml +130 -0
- data/i18n/pl.yml +130 -0
- data/i18n/pt-BR.yml +130 -0
- data/i18n/ro.yml +130 -0
- data/i18n/ru.yml +130 -0
- data/i18n/th.yml +130 -0
- data/i18n/tr.yml +130 -0
- data/i18n/uk.yml +130 -0
- data/i18n/ur-Latn.yml +130 -0
- data/i18n/vi.yml +130 -0
- data/i18n/zh-CN.yml +130 -0
- data/i18n/zh-TW.yml +130 -0
- data/lib/jekyll-theme-modootoday.rb +59 -0
- data/lib/modootoday/check/a11y/content.rb +57 -0
- data/lib/modootoday/check/a11y/new_window.rb +64 -0
- data/lib/modootoday/check/blog.rb +72 -0
- data/lib/modootoday/check/build_output.rb +39 -0
- data/lib/modootoday/check/built_parts.rb +40 -0
- data/lib/modootoday/check/cli.rb +61 -0
- data/lib/modootoday/check/component_rules.rb +54 -0
- data/lib/modootoday/check/context.rb +41 -0
- data/lib/modootoday/check/gh_render.rb +21 -0
- data/lib/modootoday/check/github_pages.rb +23 -0
- data/lib/modootoday/check/i18n.rb +92 -0
- data/lib/modootoday/check/layouts/detail.rb +52 -0
- data/lib/modootoday/check/layouts/directory.rb +36 -0
- data/lib/modootoday/check/layouts/docs_extra.rb +84 -0
- data/lib/modootoday/check/layouts/marketing.rb +64 -0
- data/lib/modootoday/check/layouts/shape.rb +38 -0
- data/lib/modootoday/check/layouts/shells.rb +47 -0
- data/lib/modootoday/check/layouts.rb +37 -0
- data/lib/modootoday/check/markdown.rb +39 -0
- data/lib/modootoday/check/page_sections.rb +72 -0
- data/lib/modootoday/check/page_syntax.rb +104 -0
- data/lib/modootoday/check/page_values.rb +30 -0
- data/lib/modootoday/check/pages.rb +31 -0
- data/lib/modootoday/check/registry.rb +69 -0
- data/lib/modootoday/check/site_config.rb +74 -0
- data/lib/modootoday/check/slots.rb +50 -0
- data/lib/modootoday/check/structured_data.rb +97 -0
- data/lib/modootoday/check/stylesheets.rb +28 -0
- data/lib/modootoday/check/twins.rb +69 -0
- data/lib/modootoday/check.rb +22 -0
- data/lib/modootoday/schema/rules.rb +49 -0
- data/lib/modootoday/schema/vocab.txt +2478 -0
- metadata +420 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
# jekyll-theme-modootoday resume stylesheet (print-first CV): loaded only by
|
|
3
|
+
# those layouts (mt_bundle: resume), so the core bundle stays small. Shadow this file to customise.
|
|
4
|
+
---
|
|
5
|
+
{%- include modootoday/config.html -%}
|
|
6
|
+
$mt-css-layers: {{ mt_css_layers }};
|
|
7
|
+
@import "modootoday/resume/index";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
# md-components v1 — jekyll-theme-modootoday core stylesheet. Shadow this file to customise.
|
|
3
|
+
# Liquid runs first: modootoday.css_layers and modootoday.components (_config.yml) pick the output;
|
|
4
|
+
# modootoday.css: bundle also folds every section and context sheet into this file.
|
|
5
|
+
---
|
|
6
|
+
{%- include modootoday/config.html -%}
|
|
7
|
+
$mt-css-layers: {{ mt_css_layers }};
|
|
8
|
+
@import "modootoday/core";
|
|
9
|
+
{% for p in mt_core_partials %}{% assign c = p | split: "/" | last %}{% if mt_components contains c %}@import "modootoday/components/{{ p }}";
|
|
10
|
+
{% endif %}{% endfor %}
|
|
11
|
+
{%- if mt.css == "bundle" -%}
|
|
12
|
+
{% for s in mt_context_sheets %}{% assign kv = s | split: ":" %}{% assign cs = kv[1] | split: "|" %}{% for c in cs %}{% if mt_components contains c %}@import "modootoday/components/{{ kv[0] }}/{{ c }}";
|
|
13
|
+
{% endif %}{% endfor %}{% endfor %}
|
|
14
|
+
{% for s in mt_section_sheets %}{% assign kv = s | split: ":" %}{% assign c = kv[1] | split: "/" | last %}{% if mt_components contains c %}@import "modootoday/components/section/{{ kv[1] }}";
|
|
15
|
+
{% endif %}{% endfor %}
|
|
16
|
+
{%- endif -%}
|
|
17
|
+
@import "modootoday/access";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Accordion (APG disclosure) for `c: accordion` sections; plain headings without JS.
|
|
2
|
+
(() => {
|
|
3
|
+
let n = 0;
|
|
4
|
+
document.querySelectorAll('[data-c="accordion"] > h3').forEach((h) => {
|
|
5
|
+
const id = "mt-acc-" + ++n, panel = Object.assign(document.createElement("div"), { className: "mt-accordion-panel", id, hidden: true });
|
|
6
|
+
while (h.nextSibling && !/^H[23]$/.test(h.nextSibling.tagName)) panel.append(h.nextSibling);
|
|
7
|
+
h.after(panel);
|
|
8
|
+
const b = Object.assign(document.createElement("button"), { type: "button", className: "mt-accordion-trigger" });
|
|
9
|
+
b.setAttribute("aria-expanded", "false"); b.setAttribute("aria-controls", id);
|
|
10
|
+
b.append(...h.childNodes); h.append(b);
|
|
11
|
+
b.onclick = () => { const open = b.getAttribute("aria-expanded") != "true"; b.setAttribute("aria-expanded", open); panel.hidden = !open; };
|
|
12
|
+
});
|
|
13
|
+
})();
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copy buttons: code, page actions.
|
|
2
|
+
(() => {
|
|
3
|
+
if (!navigator.clipboard) return;
|
|
4
|
+
const ds = document.documentElement.dataset, label = ds.mtCopy || "Copy", done = ds.mtCopied || "Copied";
|
|
5
|
+
// Decorative icons from brand/icon.html; the text names the button.
|
|
6
|
+
const icon = (d) => '<svg class="mt-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">' + d + "</svg>";
|
|
7
|
+
const copy = icon('<rect x="9" y="9" width="12" height="12" rx="2"/><path d="M15 9V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4"/>'), check = icon('<path d="m5 12 5 5 9-10"/>');
|
|
8
|
+
const show = (b, ic, text) => { b.innerHTML = ic; b.append(text); };
|
|
9
|
+
const live = Object.assign(document.createElement("span"), { className: "mt-sr-only", ariaLive: "polite" });
|
|
10
|
+
document.body.append(live);
|
|
11
|
+
document.querySelectorAll(".mt-main pre").forEach((pre) => {
|
|
12
|
+
const box = pre.closest("div.highlighter-rouge") || pre;
|
|
13
|
+
if (box.querySelector(".mt-code-copy")) return;
|
|
14
|
+
box.classList.add("mt-code");
|
|
15
|
+
const b = Object.assign(document.createElement("button"), { type: "button", className: "mt-code-copy" });
|
|
16
|
+
show(b, copy, label);
|
|
17
|
+
b.onclick = () => navigator.clipboard.writeText(pre.innerText.replace(/\n$/, "")).then(() => {
|
|
18
|
+
show(b, check, done); live.textContent = done;
|
|
19
|
+
setTimeout(() => show(b, copy, label), 1500);
|
|
20
|
+
});
|
|
21
|
+
box.append(b);
|
|
22
|
+
});
|
|
23
|
+
document.querySelectorAll("[data-mt-act]").forEach((b) => {
|
|
24
|
+
const d = b.closest("details").dataset; b.parentNode.hidden = 0;
|
|
25
|
+
b.onclick = () => fetch(d.mtTwin).then((r) => r.text())
|
|
26
|
+
.then((m) => navigator.clipboard.writeText((b.dataset.mtAct > "b" ? "" : d.mtSource + ": " + d.mtUrl + "\n\n") + m))
|
|
27
|
+
.then(() => { b.textContent = live.textContent = done; });
|
|
28
|
+
});
|
|
29
|
+
})();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Menus: Esc, arrows, Home/End; one open.
|
|
2
|
+
(() => {
|
|
3
|
+
const menus = [...document.querySelectorAll("details.mt-menu")];
|
|
4
|
+
const close = (d, focus) => { if (d.open) { d.open = false; if (focus) d.querySelector("summary").focus(); } };
|
|
5
|
+
menus.forEach((d) => {
|
|
6
|
+
d.addEventListener("toggle", () => d.open && menus.forEach((o) => o != d && close(o)));
|
|
7
|
+
d.addEventListener("keydown", (e) => {
|
|
8
|
+
const list = [...d.querySelectorAll("ul a")], i = list.indexOf(document.activeElement), k = e.key, L = list.length;
|
|
9
|
+
if (k == "Escape" && d.open) { e.preventDefault(); close(d, true); }
|
|
10
|
+
else if (k == "ArrowDown" || k == "ArrowUp") {
|
|
11
|
+
e.preventDefault(); d.open = true;
|
|
12
|
+
list[k == "ArrowDown" ? (i + 1) % L : (i <= 0 ? L - 1 : i - 1)]?.focus();
|
|
13
|
+
} else if ((k == "Home" || k == "End") && i >= 0) { e.preventDefault(); list[k == "Home" ? 0 : L - 1].focus(); }
|
|
14
|
+
});
|
|
15
|
+
d.addEventListener("focusout", (e) => { if (d.open && e.relatedTarget && !d.contains(e.relatedTarget)) close(d); });
|
|
16
|
+
});
|
|
17
|
+
document.addEventListener("click", (e) => menus.forEach((d) => d.contains(e.target) || close(d)));
|
|
18
|
+
})();
|
|
19
|
+
addEventListener("click",e=>e.target.closest?.('a[href="#"]')&&e.preventDefault()); // "#" stays put
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Overflowing code/tables become labelled focusable regions.
|
|
2
|
+
(() => {
|
|
3
|
+
const ds = document.documentElement.dataset, A = ["tabindex", "role", "aria-label", "data-mt-scroll"];
|
|
4
|
+
const sync = (el) => {
|
|
5
|
+
const over = el.scrollWidth > el.clientWidth + 1, pre = el.tagName == "PRE", tp = el.closest("[role=tabpanel]");
|
|
6
|
+
if (over && !el.hasAttribute("aria-label")) {
|
|
7
|
+
el.tabIndex = 0; el.dataset.mtScroll = ""; el.role = "region";
|
|
8
|
+
el.ariaLabel = (pre ? ds.mtCode : ds.mtTable) || (pre ? "Code" : "Table");
|
|
9
|
+
} else if (!over && el.hasAttribute("data-mt-scroll")) A.forEach((a) => el.removeAttribute(a));
|
|
10
|
+
if (tp) tp.tabIndex = over ? -1 : 0;
|
|
11
|
+
};
|
|
12
|
+
const ro = window.ResizeObserver && new ResizeObserver((es) => es.forEach((e) => sync(e.target)));
|
|
13
|
+
document.querySelectorAll(".mt-main pre, .mt-main table").forEach((el) => ro ? ro.observe(el) : sync(el));
|
|
14
|
+
})();
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Search keys: /, Ctrl/Cmd+K, arrows, Esc.
|
|
2
|
+
(() => {
|
|
3
|
+
const box = document.querySelector(".mt-search"); if (!box) return;
|
|
4
|
+
const input = box.querySelector("input"), out = box.querySelector("ul");
|
|
5
|
+
box.addEventListener("keydown", (e) => {
|
|
6
|
+
const links = [...out.querySelectorAll("a")], i = links.indexOf(document.activeElement), k = e.key;
|
|
7
|
+
if (k == "Escape") { e.preventDefault(); if (i > -1) input.focus(); else box.mtRender(input.value = ""); }
|
|
8
|
+
else if ((k == "ArrowDown" || k == "ArrowUp") && links.length) {
|
|
9
|
+
e.preventDefault();
|
|
10
|
+
const n = k == "ArrowDown" ? Math.min(i + 1, links.length - 1) : i - 1;
|
|
11
|
+
(n < 0 ? input : links[n]).focus();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
document.addEventListener("keydown", (e) => {
|
|
15
|
+
const t = e.target, typing = t.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName), mod = e.ctrlKey || e.metaKey;
|
|
16
|
+
if ((e.key == "/" && !typing && !mod && !e.altKey) || (mod && e.key.toLowerCase() == "k")) { e.preventDefault(); input.focus(); input.select(); }
|
|
17
|
+
});
|
|
18
|
+
})();
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Search over /search.json; keys live in search-keys.js.
|
|
2
|
+
(() => {
|
|
3
|
+
const box = document.querySelector(".mt-search"); if (!box) return;
|
|
4
|
+
const input = box.querySelector("input"), out = box.querySelector("ul"), el = (t, c) => Object.assign(document.createElement(t), { className: c || "" });
|
|
5
|
+
let data; box.hidden = false;
|
|
6
|
+
const load = () => data || (data = fetch(box.dataset.index).then((r) => r.json()).catch(() => []));
|
|
7
|
+
// textarea decodes entities.
|
|
8
|
+
const ta = el("textarea"), plain = (t) => (ta.innerHTML = t, ta.value), lg = (l) => l.toLowerCase().split("-")[0];
|
|
9
|
+
const render = (q) => {
|
|
10
|
+
q = q.trim().toLowerCase(); out.textContent = "";
|
|
11
|
+
if (q.length > 1) load().then((d) => {
|
|
12
|
+
if (input.value.trim().toLowerCase() != q) return;
|
|
13
|
+
// Page language, else site default, else all; title hits first.
|
|
14
|
+
let hits = d.filter((p) => (p.title + " " + p.text).toLowerCase().includes(q));
|
|
15
|
+
[document.documentElement.lang, box.dataset.lang].some((l) => {
|
|
16
|
+
const same = hits.filter((p) => !l || !p.lang || lg(p.lang) == lg(l));
|
|
17
|
+
if (same.length) return hits = same;
|
|
18
|
+
});
|
|
19
|
+
const inTitle = (p) => p.title.toLowerCase().includes(q);
|
|
20
|
+
hits.sort((a, b) => inTitle(b) - inTitle(a)).slice(0, 8).forEach((p) => {
|
|
21
|
+
const li = el("li"), a = el("a"), txt = plain(p.text), i = txt.toLowerCase().indexOf(q);
|
|
22
|
+
a.href = p.url; a.append(Object.assign(el("span", "mt-search-title"), { textContent: p.title }));
|
|
23
|
+
if (i > -1) a.append(Object.assign(el("span", "mt-search-snippet"), { textContent: (i > 30 ? "…" : "") + txt.slice(Math.max(0, i - 30), i + 70).trim() + "…" }));
|
|
24
|
+
li.append(a); out.append(li);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
input.addEventListener("focus", load);
|
|
29
|
+
input.addEventListener("input", () => render(input.value));
|
|
30
|
+
box.mtRender = render;
|
|
31
|
+
})();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// jekyll-theme-modootoday — post share button: native share sheet where available, else copy the link.
|
|
2
|
+
(function () {
|
|
3
|
+
document.querySelectorAll("[data-mt-share]").forEach(function (b) {
|
|
4
|
+
var url = b.dataset.url || location.href, status = b.parentNode.querySelector("[role=status]");
|
|
5
|
+
if (!navigator.share && !navigator.clipboard) return;
|
|
6
|
+
b.hidden = false;
|
|
7
|
+
b.addEventListener("click", function () {
|
|
8
|
+
if (navigator.share) { navigator.share({ title: b.dataset.title, url: url }).catch(function () {}); return; }
|
|
9
|
+
navigator.clipboard.writeText(url).then(function () {
|
|
10
|
+
if (status) status.textContent = b.dataset.copied;
|
|
11
|
+
b.dataset.state = "copied";
|
|
12
|
+
setTimeout(function () { b.dataset.state = ""; if (status) status.textContent = ""; }, 2000);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
})();
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// section[data-tabs]: h3 + code pairs become APG tabs; all visible without JS.
|
|
2
|
+
(() => {
|
|
3
|
+
document.querySelectorAll("section[data-tabs]").forEach((sec, g) => {
|
|
4
|
+
const heads = [...sec.querySelectorAll(":scope > h3")].filter((h) => h.nextElementSibling?.matches(".highlighter-rouge, pre"));
|
|
5
|
+
if (heads.length < 2) return;
|
|
6
|
+
const list = Object.assign(document.createElement("div"), { role: "tablist", ariaLabel: sec.dataset.tabsLabel || "Options" }), tabs = [];
|
|
7
|
+
heads[0].before(list);
|
|
8
|
+
const select = (n) => tabs.forEach((t) => { const on = t == n; t.ariaSelected = on; t.tabIndex = on ? 0 : -1; t._panel.hidden = !on; });
|
|
9
|
+
heads.forEach((h, i) => {
|
|
10
|
+
const panel = h.nextElementSibling, base = `mt-tabs-${g}-${h.id || i}`;
|
|
11
|
+
const b = Object.assign(document.createElement("button"), { type: "button", role: "tab", id: base + "-tab", textContent: h.textContent, _panel: panel });
|
|
12
|
+
panel.id ||= base + "-panel";
|
|
13
|
+
Object.assign(panel, { role: "tabpanel", tabIndex: 0 }).setAttribute("aria-labelledby", b.id);
|
|
14
|
+
b.setAttribute("aria-controls", panel.id); b.onclick = () => select(b);
|
|
15
|
+
h.hidden = true; list.append(b); tabs.push(b);
|
|
16
|
+
});
|
|
17
|
+
select(tabs[0]);
|
|
18
|
+
list.addEventListener("keydown", (e) => {
|
|
19
|
+
const i = tabs.indexOf(document.activeElement), d = list.closest("[dir]")?.dir == "rtl" ? -1 : 1, L = tabs.length;
|
|
20
|
+
const n = i < 0 ? undefined : { ArrowRight: i + d, ArrowLeft: i - d, Home: 0, End: L - 1 }[e.key];
|
|
21
|
+
if (n === undefined) return;
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
const t = tabs[(n + L) % L]; select(t); t.focus();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
})();
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Light/dark toggle (stored in localStorage "mt-theme").
|
|
2
|
+
(() => {
|
|
3
|
+
let root = document.documentElement, b = document.querySelector(".mt-theme-toggle");
|
|
4
|
+
if (!b) return;
|
|
5
|
+
let mq = window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
|
|
6
|
+
const current = () => root.dataset.theme || (mq && mq.matches ? "dark" : "light");
|
|
7
|
+
const sync = () => b.setAttribute("aria-pressed", current() == "dark");
|
|
8
|
+
b.hidden = false;
|
|
9
|
+
sync();
|
|
10
|
+
b.addEventListener("click", () => {
|
|
11
|
+
let t = current() === "dark" ? "light" : "dark";
|
|
12
|
+
root.dataset.theme = t;
|
|
13
|
+
try { localStorage.setItem("mt-theme", t); } catch (e) {}
|
|
14
|
+
sync();
|
|
15
|
+
});
|
|
16
|
+
if (mq && mq.addEventListener) mq.addEventListener("change", sync);
|
|
17
|
+
})();
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="48 48 416 416"><path fill="#d94925" fill-rule="evenodd" d="M256 76 412 166v180l-156 90-156-90V166Zm0 30-130 75v150l130 75 130-75V181Z"/><path fill="#d94925" fill-rule="evenodd" d="M142 247v-62h12l10 28 10-28h12v62h-11v-34l-8 24h-6l-8-24v34Zm69-63c-14 0-21 10-21 32s7 32 21 32 21-10 21-32-7-32-21-32Zm0 11c7 0 10 6 10 21s-3 21-10 21-10-6-10-21 3-21 10-21Zm26-10h18c17 0 25 10 25 31s-8 31-25 31h-18Zm11 11v40h7c9 0 14-6 14-20s-5-20-14-20Zm58-12c-14 0-21 10-21 32s7 32 21 32 21-10 21-32-7-32-21-32Zm0 11c7 0 10 6 10 21s-3 21-10 21-10-6-10-21 3-21 10-21Zm47-11c-14 0-21 10-21 32s7 32 21 32 21-10 21-32-7-32-21-32Zm0 11c7 0 10 6 10 21s-3 21-10 21-10-6-10-21 3-21 10-21ZM141 267h43v11h-16v51h-11v-51h-16Zm65-1c-14 0-21 10-21 32s7 32 21 32 21-10 21-32-7-32-21-32Zm0 11c7 0 10 6 10 21s-3 21-10 21-10-6-10-21 3-21 10-21Zm26-10h18c17 0 25 10 25 31s-8 31-25 31h-18Zm11 11v40h7c9 0 14-6 14-20s-5-20-14-20Zm52-11h13l18 62h-12l-4-15h-18l-4 15h-12Zm6 13-7 24h14Zm19-13h13l12 24 12-24h13l-19 37v25h-12v-25Z"/></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# md-components v1 checker. Usage: modootoday-check SRC SITE [--twins] [--github-pages[=VERSION]] [--gh] [--strict]
|
|
5
|
+
# The rules live in lib/modootoday/check/ (one rule group per file).
|
|
6
|
+
require_relative "../lib/modootoday/check"
|
|
7
|
+
exit Modootoday::Check::CLI.run(ARGV)
|
data/i18n/ar.yml
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# jekyll-theme-modootoday interface strings (Arabic). Copy to _data/i18n/ar.yml; keys are fixed, values are yours.
|
|
2
|
+
language: العربية
|
|
3
|
+
direction: rtl
|
|
4
|
+
skip: انتقل إلى المحتوى
|
|
5
|
+
new_window: {hint: "يفتح في نافذة جديدة", open: "افتح في نافذة جديدة"}
|
|
6
|
+
callout: {note: ملاحظة, tip: نصيحة, important: مهم, warning: تحذير, caution: تنبيه}
|
|
7
|
+
status: {available: متاح, partial: جزئي, planned: مخطط له}
|
|
8
|
+
task: {done: مكتمل, open: غير مكتمل}
|
|
9
|
+
tabs: {label: الخيارات}
|
|
10
|
+
toc: {label: في هذه الصفحة}
|
|
11
|
+
theme: {toggle: الوضع الداكن}
|
|
12
|
+
sidebar: {label: "المستندات"}
|
|
13
|
+
page_actions: {label: "إجراءات الصفحة", copy: "نسخ الصفحة", copy_ai: "نسخ للذكاء الاصطناعي", view: "عرض بصيغة Markdown", source: "المصدر"}
|
|
14
|
+
breadcrumb: {label: مسار التنقل}
|
|
15
|
+
nav: {label: القائمة الرئيسية, back_to_top: العودة إلى الأعلى}
|
|
16
|
+
pagination: {label: الصفحات, prev: السابق, next: التالي}
|
|
17
|
+
code: {copy: نسخ, copied: تم النسخ, label: شيفرة, file: ملف}
|
|
18
|
+
table: {label: جدول}
|
|
19
|
+
search: {label: بحث}
|
|
20
|
+
page: {edit: تعديل هذه الصفحة, updated: آخر تحديث}
|
|
21
|
+
languages: {label: اللغات}
|
|
22
|
+
post: {date_format: "%Y-%m-%d", author: عن الكاتب, related: مقالات ذات صلة, share: مشاركة}
|
|
23
|
+
fallback: {notice: لم تُترجم هذه الصفحة بعد، لذا تُعرض باللغة الإنجليزية.}
|
|
24
|
+
archive:
|
|
25
|
+
years: "السنوات"
|
|
26
|
+
tags: "الوسوم"
|
|
27
|
+
categories: "التصنيفات"
|
|
28
|
+
posts: "منشورات"
|
|
29
|
+
empty: "لا توجد منشورات بعد."
|
|
30
|
+
blog:
|
|
31
|
+
featured: "مميز"
|
|
32
|
+
read_more: "اقرأ المزيد"
|
|
33
|
+
reading_time: "قراءة في [n] دقيقة"
|
|
34
|
+
by: "بقلم"
|
|
35
|
+
updated: "آخر تحديث"
|
|
36
|
+
newer: "تدوينات أحدث"
|
|
37
|
+
older: "تدوينات أقدم"
|
|
38
|
+
related: "تدوينات ذات صلة"
|
|
39
|
+
series: "سلسلة"
|
|
40
|
+
series_part: "الجزء [n] من [total]"
|
|
41
|
+
share: "نسخ الرابط"
|
|
42
|
+
copied: "تم نسخ الرابط"
|
|
43
|
+
feed: "الخلاصة"
|
|
44
|
+
latest: "الأحدث"
|
|
45
|
+
breaking: "عاجل"
|
|
46
|
+
live: "مباشر"
|
|
47
|
+
correction: "تصحيح"
|
|
48
|
+
sources: "المصادر"
|
|
49
|
+
more: "المزيد في [section]"
|
|
50
|
+
authors: "الكتّاب"
|
|
51
|
+
filetree: {label: بنية الملفات}
|
|
52
|
+
gallery: {close: إغلاق}
|
|
53
|
+
embed: {title: محتوى مضمّن}
|
|
54
|
+
pricing: {recommended: موصى به}
|
|
55
|
+
banner: {label: إعلان}
|
|
56
|
+
footnote: {back: العودة إلى موضع الإحالة}
|
|
57
|
+
progress: {label: التقدّم}
|
|
58
|
+
subscribe: {email: البريد الإلكتروني, submit: اشترك}
|
|
59
|
+
params: {required: مطلوب}
|
|
60
|
+
loading: {label: جارٍ التحميل…}
|
|
61
|
+
pages:
|
|
62
|
+
not_found: "الصفحة غير موجودة"
|
|
63
|
+
not_found_text: "الصفحة التي طلبتها غير موجودة أو نُقلت."
|
|
64
|
+
gone: "تمت إزالة الصفحة"
|
|
65
|
+
gone_text: "أُزيلت هذه الصفحة عمدًا ولن تعود."
|
|
66
|
+
error: "حدث خطأ ما"
|
|
67
|
+
error_text: "تعذّر على الخادم عرض هذه الصفحة. يُرجى المحاولة بعد قليل."
|
|
68
|
+
home: "الانتقال إلى الصفحة الرئيسية"
|
|
69
|
+
moved: "نُقلت هذه الصفحة."
|
|
70
|
+
moved_link: "المتابعة إلى الصفحة الجديدة"
|
|
71
|
+
search_hint: "اكتب حرفين على الأقل للبحث."
|
|
72
|
+
layouts:
|
|
73
|
+
all: "الكل"
|
|
74
|
+
filter: "تصفية حسب"
|
|
75
|
+
role: "الدور"
|
|
76
|
+
client: "العميل"
|
|
77
|
+
year: "السنة"
|
|
78
|
+
stack: "الأدوات"
|
|
79
|
+
links: "الروابط"
|
|
80
|
+
location: "الموقع"
|
|
81
|
+
employment: "نوع التوظيف"
|
|
82
|
+
salary: "الراتب"
|
|
83
|
+
posted: "تاريخ النشر"
|
|
84
|
+
deadline: "آخر موعد للتقديم"
|
|
85
|
+
apply: "قدّم الآن"
|
|
86
|
+
starts: "يبدأ"
|
|
87
|
+
ends: "ينتهي"
|
|
88
|
+
venue: "المكان"
|
|
89
|
+
online: "عبر الإنترنت"
|
|
90
|
+
agenda: "البرنامج"
|
|
91
|
+
tickets: "احصل على التذاكر"
|
|
92
|
+
calendar: "أضف إلى التقويم"
|
|
93
|
+
episode: "الحلقة [n]"
|
|
94
|
+
season: "الموسم [n]"
|
|
95
|
+
duration: "المدة"
|
|
96
|
+
listen: "استمع"
|
|
97
|
+
transcript: "النص المكتوب"
|
|
98
|
+
monthly: "شهري"
|
|
99
|
+
yearly: "سنوي"
|
|
100
|
+
billing: "فترة الفوترة"
|
|
101
|
+
popular: "الأكثر شيوعًا"
|
|
102
|
+
download: "تنزيل"
|
|
103
|
+
version: "الإصدار"
|
|
104
|
+
colors: "الألوان"
|
|
105
|
+
assets: "الملفات"
|
|
106
|
+
send: "إرسال"
|
|
107
|
+
name: "الاسم"
|
|
108
|
+
email: "البريد الإلكتروني"
|
|
109
|
+
message: "الرسالة"
|
|
110
|
+
contact: "التواصل"
|
|
111
|
+
added: "أُضيف"
|
|
112
|
+
changed: "تغيّر"
|
|
113
|
+
fixed: "أُصلح"
|
|
114
|
+
removed: "أُزيل"
|
|
115
|
+
security: "الأمان"
|
|
116
|
+
now: "الآن"
|
|
117
|
+
next: "التالي"
|
|
118
|
+
later: "لاحقًا"
|
|
119
|
+
letters: "انتقل إلى الحرف"
|
|
120
|
+
lessons: "الدروس"
|
|
121
|
+
minutes: "[n] دقيقة"
|
|
122
|
+
module: "الوحدة [n]"
|
|
123
|
+
chapter: "الفصل [n]"
|
|
124
|
+
effective: "ساري المفعول من"
|
|
125
|
+
experience: "الخبرة"
|
|
126
|
+
education: "التعليم"
|
|
127
|
+
skills: "المهارات"
|
|
128
|
+
present: "حتى الآن"
|
|
129
|
+
loading: "جارٍ التحميل…"
|
|
130
|
+
contents: "المحتويات"
|
data/i18n/de.yml
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# jekyll-theme-modootoday interface strings (German). Copy to _data/i18n/de.yml; keys are fixed, values are yours.
|
|
2
|
+
language: Deutsch
|
|
3
|
+
direction: ltr
|
|
4
|
+
skip: Zum Inhalt springen
|
|
5
|
+
new_window: {hint: "öffnet in einem neuen Fenster", open: "In neuem Fenster öffnen"}
|
|
6
|
+
callout: {note: Hinweis, tip: Tipp, important: Wichtig, warning: Warnung, caution: Vorsicht}
|
|
7
|
+
status: {available: Verfügbar, partial: Teilweise, planned: Geplant}
|
|
8
|
+
task: {done: Erledigt, open: Offen}
|
|
9
|
+
tabs: {label: Optionen}
|
|
10
|
+
toc: {label: Auf dieser Seite}
|
|
11
|
+
theme: {toggle: Dunkelmodus}
|
|
12
|
+
sidebar: {label: "Dokumentation"}
|
|
13
|
+
page_actions: {label: "Seitenaktionen", copy: "Seite kopieren", copy_ai: "Für KI kopieren", view: "Als Markdown anzeigen", source: "Quelle"}
|
|
14
|
+
breadcrumb: {label: Brotkrümelnavigation}
|
|
15
|
+
nav: {label: Hauptmenü, back_to_top: Nach oben}
|
|
16
|
+
pagination: {label: Seiten, prev: Zurück, next: Weiter}
|
|
17
|
+
code: {copy: Kopieren, copied: Kopiert, label: Code, file: Datei}
|
|
18
|
+
table: {label: Tabelle}
|
|
19
|
+
search: {label: Suche}
|
|
20
|
+
page: {edit: Diese Seite bearbeiten, updated: Zuletzt aktualisiert}
|
|
21
|
+
languages: {label: Sprachen}
|
|
22
|
+
post: {date_format: "%d.%m.%Y", author: Über den Autor, related: Ähnliche Beiträge, share: Teilen}
|
|
23
|
+
fallback: {notice: Diese Seite ist noch nicht übersetzt und wird daher auf Englisch angezeigt.}
|
|
24
|
+
archive:
|
|
25
|
+
years: "Jahre"
|
|
26
|
+
tags: "Schlagwörter"
|
|
27
|
+
categories: "Kategorien"
|
|
28
|
+
posts: "Beiträge"
|
|
29
|
+
empty: "Noch keine Beiträge."
|
|
30
|
+
blog:
|
|
31
|
+
featured: "Empfohlen"
|
|
32
|
+
read_more: "Weiterlesen"
|
|
33
|
+
reading_time: "[n] Min. Lesezeit"
|
|
34
|
+
by: "Von"
|
|
35
|
+
updated: "Aktualisiert"
|
|
36
|
+
newer: "Neuere Beiträge"
|
|
37
|
+
older: "Ältere Beiträge"
|
|
38
|
+
related: "Ähnliche Beiträge"
|
|
39
|
+
series: "Serie"
|
|
40
|
+
series_part: "Teil [n] von [total]"
|
|
41
|
+
share: "Link kopieren"
|
|
42
|
+
copied: "Link kopiert"
|
|
43
|
+
feed: "Feed"
|
|
44
|
+
latest: "Neueste"
|
|
45
|
+
breaking: "Eilmeldung"
|
|
46
|
+
live: "Live"
|
|
47
|
+
correction: "Korrektur"
|
|
48
|
+
sources: "Quellen"
|
|
49
|
+
more: "Mehr aus [section]"
|
|
50
|
+
authors: "Autoren"
|
|
51
|
+
filetree: {label: Dateistruktur}
|
|
52
|
+
gallery: {close: Schließen}
|
|
53
|
+
embed: {title: Eingebetteter Inhalt}
|
|
54
|
+
pricing: {recommended: Empfohlen}
|
|
55
|
+
banner: {label: Ankündigung}
|
|
56
|
+
footnote: {back: Zurück zum Verweis}
|
|
57
|
+
progress: {label: Fortschritt}
|
|
58
|
+
subscribe: {email: E-Mail-Adresse, submit: Abonnieren}
|
|
59
|
+
params: {required: Erforderlich}
|
|
60
|
+
loading: {label: Wird geladen …}
|
|
61
|
+
pages:
|
|
62
|
+
not_found: "Seite nicht gefunden"
|
|
63
|
+
not_found_text: "Die angeforderte Seite existiert nicht oder wurde verschoben."
|
|
64
|
+
gone: "Seite entfernt"
|
|
65
|
+
gone_text: "Diese Seite wurde bewusst entfernt und kommt nicht zurück."
|
|
66
|
+
error: "Etwas ist schiefgelaufen"
|
|
67
|
+
error_text: "Der Server konnte diese Seite nicht anzeigen. Bitte versuchen Sie es gleich noch einmal."
|
|
68
|
+
home: "Zur Startseite"
|
|
69
|
+
moved: "Diese Seite ist umgezogen."
|
|
70
|
+
moved_link: "Weiter zur neuen Seite"
|
|
71
|
+
search_hint: "Geben Sie mindestens zwei Zeichen ein, um zu suchen."
|
|
72
|
+
layouts:
|
|
73
|
+
all: "Alle"
|
|
74
|
+
filter: "Filtern nach"
|
|
75
|
+
role: "Rolle"
|
|
76
|
+
client: "Kunde"
|
|
77
|
+
year: "Jahr"
|
|
78
|
+
stack: "Werkzeuge"
|
|
79
|
+
links: "Links"
|
|
80
|
+
location: "Ort"
|
|
81
|
+
employment: "Anstellungsart"
|
|
82
|
+
salary: "Gehalt"
|
|
83
|
+
posted: "Veröffentlicht"
|
|
84
|
+
deadline: "Bewerbung bis"
|
|
85
|
+
apply: "Bewerben"
|
|
86
|
+
starts: "Beginn"
|
|
87
|
+
ends: "Ende"
|
|
88
|
+
venue: "Veranstaltungsort"
|
|
89
|
+
online: "Online"
|
|
90
|
+
agenda: "Programm"
|
|
91
|
+
tickets: "Tickets"
|
|
92
|
+
calendar: "Zum Kalender hinzufügen"
|
|
93
|
+
episode: "Folge [n]"
|
|
94
|
+
season: "Staffel [n]"
|
|
95
|
+
duration: "Dauer"
|
|
96
|
+
listen: "Anhören"
|
|
97
|
+
transcript: "Transkript"
|
|
98
|
+
monthly: "Monatlich"
|
|
99
|
+
yearly: "Jährlich"
|
|
100
|
+
billing: "Abrechnungszeitraum"
|
|
101
|
+
popular: "Am beliebtesten"
|
|
102
|
+
download: "Herunterladen"
|
|
103
|
+
version: "Version"
|
|
104
|
+
colors: "Farben"
|
|
105
|
+
assets: "Dateien"
|
|
106
|
+
send: "Senden"
|
|
107
|
+
name: "Name"
|
|
108
|
+
email: "E-Mail"
|
|
109
|
+
message: "Nachricht"
|
|
110
|
+
contact: "Kontakt"
|
|
111
|
+
added: "Hinzugefügt"
|
|
112
|
+
changed: "Geändert"
|
|
113
|
+
fixed: "Behoben"
|
|
114
|
+
removed: "Entfernt"
|
|
115
|
+
security: "Sicherheit"
|
|
116
|
+
now: "Jetzt"
|
|
117
|
+
next: "Als Nächstes"
|
|
118
|
+
later: "Später"
|
|
119
|
+
letters: "Zum Buchstaben springen"
|
|
120
|
+
lessons: "Lektionen"
|
|
121
|
+
minutes: "[n] Min."
|
|
122
|
+
module: "Modul [n]"
|
|
123
|
+
chapter: "Kapitel [n]"
|
|
124
|
+
effective: "Gültig ab"
|
|
125
|
+
experience: "Berufserfahrung"
|
|
126
|
+
education: "Ausbildung"
|
|
127
|
+
skills: "Kenntnisse"
|
|
128
|
+
present: "Heute"
|
|
129
|
+
loading: "Wird geladen…"
|
|
130
|
+
contents: "Inhalt"
|
data/i18n/el.yml
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# jekyll-theme-modootoday interface strings (Greek). Copy to _data/i18n/el.yml; keys are fixed, values are yours.
|
|
2
|
+
language: Ελληνικά
|
|
3
|
+
direction: ltr
|
|
4
|
+
skip: Μετάβαση στο περιεχόμενο
|
|
5
|
+
new_window: {hint: "ανοίγει σε νέο παράθυρο", open: "Άνοιγμα σε νέο παράθυρο"}
|
|
6
|
+
callout: {note: Σημείωση, tip: Συμβουλή, important: Σημαντικό, warning: Προειδοποίηση, caution: Προσοχή}
|
|
7
|
+
status: {available: Διαθέσιμο, partial: Μερικώς, planned: Προγραμματισμένο}
|
|
8
|
+
task: {done: Ολοκληρώθηκε, open: Εκκρεμεί}
|
|
9
|
+
tabs: {label: Επιλογές}
|
|
10
|
+
toc: {label: Σε αυτή τη σελίδα}
|
|
11
|
+
theme: {toggle: Σκούρο θέμα}
|
|
12
|
+
sidebar: {label: "Τεκμηρίωση"}
|
|
13
|
+
page_actions: {label: "Ενέργειες σελίδας", copy: "Αντιγραφή σελίδας", copy_ai: "Αντιγραφή για ΤΝ", view: "Προβολή ως Markdown", source: "Πηγή"}
|
|
14
|
+
breadcrumb: {label: Διαδρομή πλοήγησης}
|
|
15
|
+
nav: {label: Κύριο μενού, back_to_top: Επιστροφή στην κορυφή}
|
|
16
|
+
pagination: {label: Σελίδες, prev: Προηγούμενη, next: Επόμενη}
|
|
17
|
+
code: {copy: Αντιγραφή, copied: Αντιγράφηκε, label: Κώδικας, file: Αρχείο}
|
|
18
|
+
table: {label: Πίνακας}
|
|
19
|
+
search: {label: Αναζήτηση}
|
|
20
|
+
page: {edit: Επεξεργασία σελίδας, updated: Τελευταία ενημέρωση}
|
|
21
|
+
languages: {label: Γλώσσες}
|
|
22
|
+
post: {date_format: "%d/%m/%Y", author: Σχετικά με τον συγγραφέα, related: Σχετικά άρθρα, share: Κοινοποίηση}
|
|
23
|
+
fallback: {notice: "Αυτή η σελίδα δεν έχει μεταφραστεί ακόμη, γι’ αυτό εμφανίζεται στα αγγλικά."}
|
|
24
|
+
archive:
|
|
25
|
+
years: "Έτη"
|
|
26
|
+
tags: "Ετικέτες"
|
|
27
|
+
categories: "Κατηγορίες"
|
|
28
|
+
posts: "αναρτήσεις"
|
|
29
|
+
empty: "Δεν υπάρχουν ακόμη αναρτήσεις."
|
|
30
|
+
blog:
|
|
31
|
+
featured: "Προτεινόμενα"
|
|
32
|
+
read_more: "Διαβάστε περισσότερα"
|
|
33
|
+
reading_time: "[n] λεπτά ανάγνωσης"
|
|
34
|
+
by: "Από"
|
|
35
|
+
updated: "Ενημερώθηκε"
|
|
36
|
+
newer: "Νεότερες αναρτήσεις"
|
|
37
|
+
older: "Παλαιότερες αναρτήσεις"
|
|
38
|
+
related: "Σχετικές αναρτήσεις"
|
|
39
|
+
series: "Σειρά"
|
|
40
|
+
series_part: "Μέρος [n] από [total]"
|
|
41
|
+
share: "Αντιγραφή συνδέσμου"
|
|
42
|
+
copied: "Ο σύνδεσμος αντιγράφηκε"
|
|
43
|
+
feed: "Ροή"
|
|
44
|
+
latest: "Τελευταία"
|
|
45
|
+
breaking: "Έκτακτο"
|
|
46
|
+
live: "Ζωντανά"
|
|
47
|
+
correction: "Διόρθωση"
|
|
48
|
+
sources: "Πηγές"
|
|
49
|
+
more: "Περισσότερα στην ενότητα [section]"
|
|
50
|
+
authors: "Συντάκτες"
|
|
51
|
+
filetree: {label: Δομή αρχείων}
|
|
52
|
+
gallery: {close: Κλείσιμο}
|
|
53
|
+
embed: {title: Ενσωματωμένο περιεχόμενο}
|
|
54
|
+
pricing: {recommended: Προτεινόμενο}
|
|
55
|
+
banner: {label: Ανακοίνωση}
|
|
56
|
+
footnote: {back: Επιστροφή στην παραπομπή}
|
|
57
|
+
progress: {label: Πρόοδος}
|
|
58
|
+
subscribe: {email: Διεύθυνση email, submit: Εγγραφή}
|
|
59
|
+
params: {required: Υποχρεωτικό}
|
|
60
|
+
loading: {label: Φόρτωση…}
|
|
61
|
+
pages:
|
|
62
|
+
not_found: "Η σελίδα δεν βρέθηκε"
|
|
63
|
+
not_found_text: "Η σελίδα που ζητήσατε δεν υπάρχει ή έχει μετακινηθεί."
|
|
64
|
+
gone: "Η σελίδα αφαιρέθηκε"
|
|
65
|
+
gone_text: "Αυτή η σελίδα αφαιρέθηκε σκόπιμα και δεν θα επιστρέψει."
|
|
66
|
+
error: "Κάτι πήγε στραβά"
|
|
67
|
+
error_text: "Ο διακομιστής δεν μπόρεσε να εμφανίσει αυτή τη σελίδα. Δοκιμάστε ξανά σε λίγο."
|
|
68
|
+
home: "Μετάβαση στην αρχική σελίδα"
|
|
69
|
+
moved: "Αυτή η σελίδα έχει μετακινηθεί."
|
|
70
|
+
moved_link: "Συνέχεια στη νέα σελίδα"
|
|
71
|
+
search_hint: "Πληκτρολογήστε τουλάχιστον δύο γράμματα για αναζήτηση."
|
|
72
|
+
layouts:
|
|
73
|
+
all: "Όλα"
|
|
74
|
+
filter: "Φιλτράρισμα κατά"
|
|
75
|
+
role: "Ρόλος"
|
|
76
|
+
client: "Πελάτης"
|
|
77
|
+
year: "Έτος"
|
|
78
|
+
stack: "Εργαλεία"
|
|
79
|
+
links: "Σύνδεσμοι"
|
|
80
|
+
location: "Τοποθεσία"
|
|
81
|
+
employment: "Τύπος απασχόλησης"
|
|
82
|
+
salary: "Μισθός"
|
|
83
|
+
posted: "Δημοσιεύτηκε"
|
|
84
|
+
deadline: "Αιτήσεις έως"
|
|
85
|
+
apply: "Υποβολή αίτησης"
|
|
86
|
+
starts: "Έναρξη"
|
|
87
|
+
ends: "Λήξη"
|
|
88
|
+
venue: "Χώρος"
|
|
89
|
+
online: "Διαδικτυακά"
|
|
90
|
+
agenda: "Πρόγραμμα"
|
|
91
|
+
tickets: "Εισιτήρια"
|
|
92
|
+
calendar: "Προσθήκη στο ημερολόγιο"
|
|
93
|
+
episode: "Επεισόδιο [n]"
|
|
94
|
+
season: "Σεζόν [n]"
|
|
95
|
+
duration: "Διάρκεια"
|
|
96
|
+
listen: "Ακρόαση"
|
|
97
|
+
transcript: "Απομαγνητοφώνηση"
|
|
98
|
+
monthly: "Μηνιαία"
|
|
99
|
+
yearly: "Ετήσια"
|
|
100
|
+
billing: "Περίοδος χρέωσης"
|
|
101
|
+
popular: "Πιο δημοφιλές"
|
|
102
|
+
download: "Λήψη"
|
|
103
|
+
version: "Έκδοση"
|
|
104
|
+
colors: "Χρώματα"
|
|
105
|
+
assets: "Αρχεία"
|
|
106
|
+
send: "Αποστολή"
|
|
107
|
+
name: "Όνομα"
|
|
108
|
+
email: "Email"
|
|
109
|
+
message: "Μήνυμα"
|
|
110
|
+
contact: "Επικοινωνία"
|
|
111
|
+
added: "Προστέθηκαν"
|
|
112
|
+
changed: "Άλλαξαν"
|
|
113
|
+
fixed: "Διορθώθηκαν"
|
|
114
|
+
removed: "Αφαιρέθηκαν"
|
|
115
|
+
security: "Ασφάλεια"
|
|
116
|
+
now: "Τώρα"
|
|
117
|
+
next: "Επόμενα"
|
|
118
|
+
later: "Αργότερα"
|
|
119
|
+
letters: "Μετάβαση στο γράμμα"
|
|
120
|
+
lessons: "Μαθήματα"
|
|
121
|
+
minutes: "[n] λεπτά"
|
|
122
|
+
module: "Ενότητα [n]"
|
|
123
|
+
chapter: "Κεφάλαιο [n]"
|
|
124
|
+
effective: "Ισχύει από"
|
|
125
|
+
experience: "Εμπειρία"
|
|
126
|
+
education: "Εκπαίδευση"
|
|
127
|
+
skills: "Δεξιότητες"
|
|
128
|
+
present: "Σήμερα"
|
|
129
|
+
loading: "Φόρτωση…"
|
|
130
|
+
contents: "Περιεχόμενα"
|