From a8d3fc8ccf3feb65eeffbf889b5085a81e6bbbbc Mon Sep 17 00:00:00 2001 From: Johannes Keyser <johannes.keyser@sport.uni-giessen.de> Date: Thu, 1 Aug 2019 21:03:54 +0200 Subject: [PATCH] copied everything from multilingual example --- .gitignore | 4 + Readme.md | 34 +++ _config.yml | 28 ++ _includes/footer.html | 38 +++ _includes/head.html | 16 ++ _includes/header.html | 36 +++ _includes/icon-github.html | 1 + _includes/icon-github.svg | 1 + _includes/icon-twitter.html | 1 + _includes/icon-twitter.svg | 1 + _layouts/default.html | 20 ++ _layouts/page.html | 14 + _layouts/post.html | 15 ++ .../2016-02-29-bienvenue-sur-jekyll.markdown | 27 ++ _posts/2016-02-29-welcome-to-jekyll.markdown | 27 ++ _sass/_base.scss | 206 +++++++++++++++ _sass/_layout.scss | 242 ++++++++++++++++++ _sass/_syntax-highlighting.scss | 71 +++++ a-propos.md | 20 ++ about.md | 21 ++ accueil.html | 26 ++ css/main.scss | 53 ++++ feed.xml | 32 +++ flux.xml | 32 +++ index.html | 26 ++ jekyll-multilingual.gemspec | 10 + robots.txt | 2 + sitemaps.xml | 32 +++ 28 files changed, 1036 insertions(+) create mode 100644 .gitignore create mode 100644 Readme.md create mode 100644 _config.yml create mode 100644 _includes/footer.html create mode 100644 _includes/head.html create mode 100644 _includes/header.html create mode 100644 _includes/icon-github.html create mode 100644 _includes/icon-github.svg create mode 100644 _includes/icon-twitter.html create mode 100644 _includes/icon-twitter.svg create mode 100644 _layouts/default.html create mode 100644 _layouts/page.html create mode 100644 _layouts/post.html create mode 100644 _posts/2016-02-29-bienvenue-sur-jekyll.markdown create mode 100644 _posts/2016-02-29-welcome-to-jekyll.markdown create mode 100644 _sass/_base.scss create mode 100644 _sass/_layout.scss create mode 100644 _sass/_syntax-highlighting.scss create mode 100644 a-propos.md create mode 100644 about.md create mode 100644 accueil.html create mode 100644 css/main.scss create mode 100644 feed.xml create mode 100644 flux.xml create mode 100644 index.html create mode 100644 jekyll-multilingual.gemspec create mode 100644 robots.txt create mode 100644 sitemaps.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4b9a59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +_site +.sass-cache +*.gem diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..159b2f5 --- /dev/null +++ b/Readme.md @@ -0,0 +1,34 @@ +# Multilingual Jekyll + +This repository aims to show how to get a minimal multilingual *Jekyll* website. + +It is based on the [**Making *Jekyll* multilingual**](https://www.sylvaindurand.org/making-jekyll-multilingual/) article, applied on the [Jekyll default theme](https://github.com/jglovier/jekyll-new). + +You can check the demo on [sylvaindurand.github.io/jekyll-multilingual/](https://sylvaindurand.github.io/jekyll-multilingual/). + +**Warning**: this repo is not maintained anymore by its author, but pull requests are still welcomed. + + +## Make your website multilingual + +1. Have a look at the article [Making *Jekyll* multilingual](https://www.sylvaindurand.org/making-jekyll-multilingual/), which explains how things work +2. Check the [diff for Jekyll 3.1.x](https://github.com/sylvaindurand/jekyll-multilingual/commit/111495e91e8986db21368e54a42188cdbbc44b6f) (older versions: [3.0.x](https://github.com/sylvaindurand/jekyll-multilingual/commit/b2da2a07c325a1b6e01f524dad6582f2daf70ccf), [2.5.x](https://github.com/sylvaindurand/jekyll-multilingual/commit/e0bed79df22d2d35a75d0906e2c9c2baeac44a73)) +3. Reproduce it on your website! + + +## Create a multilingual website from stratch + +1. Still have a look at the article [Making *Jekyll* multilingual](https://www.sylvaindurand.org/making-jekyll-multilingual/), which explains how things work! +2. Clone the repo: `git clone https://github.com/sylvaindurand/jekyll-multilingual.git` +3. Open the folder: `cd jekyll-multilingual` +4. Remove `Readme.md` and `jekyll-multilingual.gemspec`, which are useless outside this repository +5. Build the website: `jekyll build` + +## Colophon + +After having written an article about having a multilingual *Jekyll* website, [sigul](https://talk.jekyllrb.com/t/a-vanilla-jekyll-theme-multilingual-with-no-plugins/) gave the idea to provide a minimal working example. Here we are! + +The [source code](https://github.com/sylvaindurand/jekyll-multilingual) is freely available on [GitHub](https://github.com/sylvaindurand/jekyll-multilingual). The *Jekyll* default theme is released under the MIT License, such as the modifications shown in this repository. + +## Question? +Please feel free to [open an issue](https://github.com/sylvaindurand/jekyll-multilingual/issues) or to [push a commit](https://github.com/sylvaindurand/jekyll-multilingual/pulls). diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..589bc95 --- /dev/null +++ b/_config.yml @@ -0,0 +1,28 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely need to edit after that. +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'jekyll serve'. If you change this file, please restart the server process. + +# Site settings +title: + en: Your awesome title + fr: Votre titre génial +email: your-email@domain.com +description: + en: Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. + fr: Écrivez une super description de votre nouveau site ici. Vous pouvez modifier cette ligne dans _config.yml. Elle apparaîtra dans la balise meta description (pour les résultats sur Google) et dans le fil RSS feed.xml. +index: + en: + fr: accueil.html +feed: + en: /feed.xml + fr: /flux.xml +baseurl: "/jekyll-multilingual" # the subpath of your site, e.g. /blog +url: "http://yourdomain.com" # the base hostname & protocol for your site +twitter_username: jekyllrb +github_username: jekyll + +# Build settings +markdown: kramdown diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..a0e61bc --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,38 @@ +<footer class="site-footer"> + + <div class="wrapper"> + + <h2 class="footer-heading">{{ site.title[page.lang] }}</h2> + + <div class="footer-col-wrapper"> + <div class="footer-col footer-col-1"> + <ul class="contact-list"> + <li>{{ site.title[page.lang] }}</li> + <li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li> + </ul> + </div> + + <div class="footer-col footer-col-2"> + <ul class="social-media-list"> + {% if site.github_username %} + <li> + {% include icon-github.html username=site.github_username %} + </li> + {% endif %} + + {% if site.twitter_username %} + <li> + {% include icon-twitter.html username=site.twitter_username %} + </li> + {% endif %} + </ul> + </div> + + <div class="footer-col footer-col-3"> + <p>{{ site.description[page.lang] }}</p> + </div> + </div> + + </div> + +</footer> diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..58cdf7a --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,16 @@ +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title[page.lang] | escape }}{% endif %}</title> + <meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description[page.lang] }}{% endif %}"> + + <link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}"> + <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}"> + {% assign posts=site.posts | where:"ref", page.ref | sort: 'lang' %}{% for post in posts %} + <link rel="alternate" hreflang="{{ post.lang }}" href="{{ post.url }}" />{% endfor %} + {% assign pages=site.pages | where:"ref", page.ref | sort: 'lang' %}{% for page in pages %} + <link rel="alternate" hreflang="{{ page.lang }}" href="{{ page.url }}" />{% endfor %} + <link rel="alternate" type="application/rss+xml" title="{{ site.title[page.lang] }}" href="{{ site.feed[page.lang] | prepend: site.baseurl | prepend: site.url }}"> +</head> diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..f7920f4 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,36 @@ +<header class="site-header"> + + <div class="wrapper"> + + <a class="site-title" href="{{ site.baseurl }}/{{ site.index[page.lang] }}">{{ site.title[page.lang] }}</a> + + <nav class="site-nav"> + <a href="#" class="menu-icon"> + <svg viewBox="0 0 18 15"> + <path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/> + <path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/> + <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/> + </svg> + </a> + + <div class="trigger"> + {% assign pages=site.pages | where:"lang", page.lang %} + {% for my_page in pages %} + {% if my_page.title %} + <a class="page-link" href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a> + {% endif %} + {% endfor %} + </div> + </nav> + + </div> + +</header> + +<div class="wrapper" style="text-align: right; line-height: 2em"> + {% assign posts=site.posts | where:"ref", page.ref | sort: 'lang' %} + {% for post in posts %} <a href="{{ post.url | prepend: site.baseurl }}" class="{{ post.lang }}">{{ post.lang }}</a> {% endfor %} + + {% assign pages=site.pages | where:"ref", page.ref | sort: 'lang' %} + {% for page in pages %} <a href="{{ page.url | prepend: site.baseurl }}" class="{{ page.lang }}">{{ page.lang }}</a> {% endfor %} +</div> diff --git a/_includes/icon-github.html b/_includes/icon-github.html new file mode 100644 index 0000000..e501a16 --- /dev/null +++ b/_includes/icon-github.html @@ -0,0 +1 @@ +<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a> diff --git a/_includes/icon-github.svg b/_includes/icon-github.svg new file mode 100644 index 0000000..4422c4f --- /dev/null +++ b/_includes/icon-github.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg> diff --git a/_includes/icon-twitter.html b/_includes/icon-twitter.html new file mode 100644 index 0000000..e623dbd --- /dev/null +++ b/_includes/icon-twitter.html @@ -0,0 +1 @@ +<a href="https://twitter.com/{{ include.username }}"><span class="icon icon--twitter">{% include icon-twitter.svg %}</span><span class="username">{{ include.username }}</span></a> diff --git a/_includes/icon-twitter.svg b/_includes/icon-twitter.svg new file mode 100644 index 0000000..dcf660e --- /dev/null +++ b/_includes/icon-twitter.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg> diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..9a4f475 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="{{ page.lang }}"> + + {% include head.html %} + + <body> + + {% include header.html %} + + <div class="page-content"> + <div class="wrapper"> + {{ content }} + </div> + </div> + + {% include footer.html %} + + </body> + +</html> diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..ce233ad --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,14 @@ +--- +layout: default +--- +<article class="post"> + + <header class="post-header"> + <h1 class="post-title">{{ page.title }}</h1> + </header> + + <div class="post-content"> + {{ content }} + </div> + +</article> diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..3a0fb52 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,15 @@ +--- +layout: default +--- +<article class="post" itemscope itemtype="http://schema.org/BlogPosting"> + + <header class="post-header"> + <h1 class="post-title" itemprop="name headline">{{ page.title }}</h1> + <p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}</p> + </header> + + <div class="post-content" itemprop="articleBody"> + {{ content }} + </div> + +</article> diff --git a/_posts/2016-02-29-bienvenue-sur-jekyll.markdown b/_posts/2016-02-29-bienvenue-sur-jekyll.markdown new file mode 100644 index 0000000..74a93a4 --- /dev/null +++ b/_posts/2016-02-29-bienvenue-sur-jekyll.markdown @@ -0,0 +1,27 @@ +--- +layout: post +title: "Bienvenue sur Jekyll !" +ref: welcome +date: 2016-02-29 09:48:44 +0100 +categories: jekyll update +lang: fr +--- +Cet article se situe dans le dossier `_posts`. Allez l'éditer, et générez votre site à nouveau pour voir les modifications. Vous pouvez générer le site de différentes façons, mais le plus efficace est de lancer la commande `jekyll serve`, qui crée un serveur web et génère automatiquement votre site à chaque fois qu'un fichier est modifié. + +Pour ajouter un autre article, créez un nouveau fichier dans le dossier `_posts` dont le nom contient la date de la façon suivante : `AAAA-MM-JJ-nom-de-l-article.ext` et placez-y l'entête. includes the necessary front matter. Regardez le code source de cet article pour avoir une bonne idée de la façon dont cela fonctionne. + +Jekyll permet aussi d'intégrer des extraits de code : + +{% highlight ruby %} +def print_hi(name) + puts "Bonjour, #{name}" +end +print_hi('Tom') +#=> affiche 'Bonjour, Tom' sur STDOUT. +{% endhighlight %} + +Jetez un coup d'oeil à la [documentation de Jekyll][jekyll-docs] pour en savoir plus sur ce qu'il vous est possible de faire avec Jekyll. Tous les bugs et demandes de fonctionnalités doivent être envoyés sous forme de requête sur [GitHub][jekyll-gh]. Si vous avez des questions, allez les poser sur le [fil d'aide de Jekyll][jekyll-talk]. + +[jekyll-docs]: http://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_posts/2016-02-29-welcome-to-jekyll.markdown b/_posts/2016-02-29-welcome-to-jekyll.markdown new file mode 100644 index 0000000..fed6db7 --- /dev/null +++ b/_posts/2016-02-29-welcome-to-jekyll.markdown @@ -0,0 +1,27 @@ +--- +layout: post +title: "Welcome to Jekyll!" +ref: welcome +date: 2016-02-29 09:48:44 +0100 +categories: jekyll update +lang: en +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: http://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..0883c3c --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,206 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; +} + + + +/** + * Basic styling + */ +body { + font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; + color: $text-color; + background-color: $background-color; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern" 1; + -moz-font-feature-settings: "kern" 1; + -o-font-feature-settings: "kern" 1; + font-feature-settings: "kern" 1; + font-kerning: normal; +} + + + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +%vertical-rhythm { + margin-bottom: $spacing-unit / 2; +} + + + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; +} + + + +/** + * Figures + */ +figure > img { + display: block; +} + +figcaption { + font-size: $small-font-size; +} + + + +/** + * Lists + */ +ul, ol { + margin-left: $spacing-unit; +} + +li { + > ul, + > ol { + margin-bottom: 0; + } +} + + + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: $base-font-weight; +} + + + +/** + * Links + */ +a { + color: $brand-color; + text-decoration: none; + + &:visited { + color: darken($brand-color, 15%); + } + + &:hover { + color: $text-color; + text-decoration: underline; + } +} + + + +/** + * Blockquotes + */ +blockquote { + color: $grey-color; + border-left: 4px solid $grey-color-light; + padding-left: $spacing-unit / 2; + font-size: 18px; + letter-spacing: -1px; + font-style: italic; + + > :last-child { + margin-bottom: 0; + } +} + + + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid $grey-color-light; + border-radius: 3px; + background-color: #eef; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: auto; + + > code { + border: 0; + padding-right: 0; + padding-left: 0; + } +} + + + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); + max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); + margin-right: auto; + margin-left: auto; + padding-right: $spacing-unit; + padding-left: $spacing-unit; + @extend %clearfix; + + @include media-query($on-laptop) { + max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); + max-width: calc(#{$content-width} - (#{$spacing-unit})); + padding-right: $spacing-unit / 2; + padding-left: $spacing-unit / 2; + } +} + + + +/** + * Clearfix + */ +%clearfix { + + &:after { + content: ""; + display: table; + clear: both; + } +} + + + +/** + * Icons + */ +.icon { + + > svg { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + + path { + fill: $grey-color; + } + } +} diff --git a/_sass/_layout.scss b/_sass/_layout.scss new file mode 100644 index 0000000..9cbfdde --- /dev/null +++ b/_sass/_layout.scss @@ -0,0 +1,242 @@ +/** + * Site header + */ +.site-header { + border-top: 5px solid $grey-color-dark; + border-bottom: 1px solid $grey-color-light; + min-height: 56px; + + // Positioning context for the mobile navigation icon + position: relative; +} + +.site-title { + font-size: 26px; + font-weight: 300; + line-height: 56px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; + + &, + &:visited { + color: $grey-color-dark; + } +} + +.site-nav { + float: right; + line-height: 56px; + + .menu-icon { + display: none; + } + + .page-link { + color: $text-color; + line-height: $base-line-height; + + // Gaps between nav items, but not on the last one + &:not(:last-child) { + margin-right: 20px; + } + } + + @include media-query($on-palm) { + position: absolute; + top: 9px; + right: $spacing-unit / 2; + background-color: $background-color; + border: 1px solid $grey-color-light; + border-radius: 5px; + text-align: right; + + .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + + > svg { + width: 18px; + height: 15px; + + path { + fill: $grey-color-dark; + } + } + } + + .trigger { + clear: both; + display: none; + } + + &:hover .trigger { + display: block; + padding-bottom: 5px; + } + + .page-link { + display: block; + padding: 5px 10px; + + &:not(:last-child) { + margin-right: 0; + } + margin-left: 20px; + } + } +} + + + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid $grey-color-light; + padding: $spacing-unit 0; +} + +.footer-heading { + font-size: 18px; + margin-bottom: $spacing-unit / 2; +} + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; +} + +.footer-col-wrapper { + font-size: 15px; + color: $grey-color; + margin-left: -$spacing-unit / 2; + @extend %clearfix; +} + +.footer-col { + float: left; + margin-bottom: $spacing-unit / 2; + padding-left: $spacing-unit / 2; +} + +.footer-col-1 { + width: -webkit-calc(35% - (#{$spacing-unit} / 2)); + width: calc(35% - (#{$spacing-unit} / 2)); +} + +.footer-col-2 { + width: -webkit-calc(20% - (#{$spacing-unit} / 2)); + width: calc(20% - (#{$spacing-unit} / 2)); +} + +.footer-col-3 { + width: -webkit-calc(45% - (#{$spacing-unit} / 2)); + width: calc(45% - (#{$spacing-unit} / 2)); +} + +@include media-query($on-laptop) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (#{$spacing-unit} / 2)); + width: calc(50% - (#{$spacing-unit} / 2)); + } + + .footer-col-3 { + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + +@include media-query($on-palm) { + .footer-col { + float: none; + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + + + +/** + * Page content + */ +.page-content { + padding: $spacing-unit 0; +} + +.page-heading { + font-size: 20px; +} + +.post-list { + margin-left: 0; + list-style: none; + + > li { + margin-bottom: $spacing-unit; + } +} + +.post-meta { + font-size: $small-font-size; + color: $grey-color; +} + +.post-link { + display: block; + font-size: 24px; +} + + + +/** + * Posts + */ +.post-header { + margin-bottom: $spacing-unit; +} + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; + + @include media-query($on-laptop) { + font-size: 36px; + } +} + +.post-content { + margin-bottom: $spacing-unit; + + h2 { + font-size: 32px; + + @include media-query($on-laptop) { + font-size: 28px; + } + } + + h3 { + font-size: 26px; + + @include media-query($on-laptop) { + font-size: 22px; + } + } + + h4 { + font-size: 20px; + + @include media-query($on-laptop) { + font-size: 18px; + } + } +} diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss new file mode 100644 index 0000000..8fac597 --- /dev/null +++ b/_sass/_syntax-highlighting.scss @@ -0,0 +1,71 @@ +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; + @extend %vertical-rhythm; + + .highlighter-rouge & { + background: #eef; + } + + .c { color: #998; font-style: italic } // Comment + .err { color: #a61717; background-color: #e3d2d2 } // Error + .k { font-weight: bold } // Keyword + .o { font-weight: bold } // Operator + .cm { color: #998; font-style: italic } // Comment.Multiline + .cp { color: #999; font-weight: bold } // Comment.Preproc + .c1 { color: #998; font-style: italic } // Comment.Single + .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: #000; background-color: #fdd } // Generic.Deleted + .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific + .ge { font-style: italic } // Generic.Emph + .gr { color: #a00 } // Generic.Error + .gh { color: #999 } // Generic.Heading + .gi { color: #000; background-color: #dfd } // Generic.Inserted + .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific + .go { color: #888 } // Generic.Output + .gp { color: #555 } // Generic.Prompt + .gs { font-weight: bold } // Generic.Strong + .gu { color: #aaa } // Generic.Subheading + .gt { color: #a00 } // Generic.Traceback + .kc { font-weight: bold } // Keyword.Constant + .kd { font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #458; font-weight: bold } // Keyword.Type + .m { color: #099 } // Literal.Number + .s { color: #d14 } // Literal.String + .na { color: #008080 } // Name.Attribute + .nb { color: #0086B3 } // Name.Builtin + .nc { color: #458; font-weight: bold } // Name.Class + .no { color: #008080 } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #900; font-weight: bold } // Name.Exception + .nf { color: #900; font-weight: bold } // Name.Function + .nn { color: #555 } // Name.Namespace + .nt { color: #000080 } // Name.Tag + .nv { color: #008080 } // Name.Variable + .ow { font-weight: bold } // Operator.Word + .w { color: #bbb } // Text.Whitespace + .mf { color: #099 } // Literal.Number.Float + .mh { color: #099 } // Literal.Number.Hex + .mi { color: #099 } // Literal.Number.Integer + .mo { color: #099 } // Literal.Number.Oct + .sb { color: #d14 } // Literal.String.Backtick + .sc { color: #d14 } // Literal.String.Char + .sd { color: #d14 } // Literal.String.Doc + .s2 { color: #d14 } // Literal.String.Double + .se { color: #d14 } // Literal.String.Escape + .sh { color: #d14 } // Literal.String.Heredoc + .si { color: #d14 } // Literal.String.Interpol + .sx { color: #d14 } // Literal.String.Other + .sr { color: #009926 } // Literal.String.Regex + .s1 { color: #d14 } // Literal.String.Single + .ss { color: #990073 } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #008080 } // Name.Variable.Class + .vg { color: #008080 } // Name.Variable.Global + .vi { color: #008080 } // Name.Variable.Instance + .il { color: #099 } // Literal.Number.Integer.Long +} diff --git a/a-propos.md b/a-propos.md new file mode 100644 index 0000000..dde709d --- /dev/null +++ b/a-propos.md @@ -0,0 +1,20 @@ +--- +layout: page +title: À propos +ref: about +lang: fr +--- + +Ceci est le thème par défaut de Jekyll. Vous pouvez en savoir plus sur les façons de personnaliser votre propre thème, ainsi que la documation de Jekyll sur [jekyllrb.com](http://jekyllrb.com/) + +Vous pouvez trouver ce thème multilingue sur : +{% include icon-github.html username="sylvaindurand" %} / +[multilingual-jekyll](https://github.com/sylvaindurand/multilingual-jekyll) + +Vous pouvez trouver le code source de ce nouveau thème Jekyll sur : +{% include icon-github.html username="jglovier" %} / +[jekyll-new](https://github.com/jglovier/jekyll-new) + +Enfin, le code source de Jekyll est présenté sur +{% include icon-github.html username="jekyll" %} / +[jekyll](https://github.com/jekyll/jekyll) diff --git a/about.md b/about.md new file mode 100644 index 0000000..f93c38c --- /dev/null +++ b/about.md @@ -0,0 +1,21 @@ +--- +layout: page +title: About +permalink: /about/ +ref: about +lang: en +--- + +This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](http://jekyllrb.com/) + +You can find this multilanguage theme at : +{% include icon-github.html username="sylvaindurand" %} / +[multilingual-jekyll](https://github.com/sylvaindurand/multilingual-jekyll) + +You can find the original source code for the Jekyll new theme at: +{% include icon-github.html username="jglovier" %} / +[jekyll-new](https://github.com/jglovier/jekyll-new) + +You can find the source code for Jekyll at +{% include icon-github.html username="jekyll" %} / +[jekyll](https://github.com/jekyll/jekyll) diff --git a/accueil.html b/accueil.html new file mode 100644 index 0000000..b5db3c7 --- /dev/null +++ b/accueil.html @@ -0,0 +1,26 @@ +--- +layout: default +ref: index +lang: fr +--- + +<div class="home"> + + <h1 class="page-heading">Articles</h1> + + <ul class="post-list"> + {% assign posts=site.posts | where:"lang", page.lang %} + {% for post in posts %} + <li> + <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span> + + <h2> + <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> + </h2> + </li> + {% endfor %} + </ul> + + <p class="rss-subscribe">suivre le <a href="{{ "/flux.xml" | prepend: site.baseurl }}">flux RSS</a></p> + +</div> diff --git a/css/main.scss b/css/main.scss new file mode 100644 index 0000000..f2e566e --- /dev/null +++ b/css/main.scss @@ -0,0 +1,53 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- +@charset "utf-8"; + + + +// Our variables +$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +$base-font-size: 16px; +$base-font-weight: 400; +$small-font-size: $base-font-size * 0.875; +$base-line-height: 1.5; + +$spacing-unit: 30px; + +$text-color: #111; +$background-color: #fdfdfd; +$brand-color: #2a7ae2; + +$grey-color: #828282; +$grey-color-light: lighten($grey-color, 40%); +$grey-color-dark: darken($grey-color, 25%); + +// Width of the content area +$content-width: 800px; + +$on-palm: 600px; +$on-laptop: 800px; + + + +// Use media queries like this: +// @include media-query($on-palm) { +// .wrapper { +// padding-right: $spacing-unit / 2; +// padding-left: $spacing-unit / 2; +// } +// } +@mixin media-query($device) { + @media screen and (max-width: $device) { + @content; + } +} + + + +// Import partials from `sass_dir` (defaults to `_sass`) +@import + "base", + "layout", + "syntax-highlighting" +; diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..9d4041d --- /dev/null +++ b/feed.xml @@ -0,0 +1,32 @@ +--- +layout: null +lang: en +--- +<?xml version="1.0" encoding="UTF-8"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>{{ site.title[page.lang] | xml_escape }}</title> + <description>{{ site.description[page.lang] | xml_escape }}</description> + <link>{{ site.url }}{{ site.baseurl }}/</link> + <atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/> + <pubDate>{{ site.time | date_to_rfc822 }}</pubDate> + <lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate> + <generator>Jekyll v{{ jekyll.version }}</generator> + {% assign posts=site.posts | where:"lang", page.lang %} + {% for post in posts limit:10 %} + <item> + <title>{{ post.title | xml_escape }}</title> + <description>{{ post.content | xml_escape }}</description> + <pubDate>{{ post.date | date_to_rfc822 }}</pubDate> + <link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link> + <guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid> + {% for tag in post.tags %} + <category>{{ tag | xml_escape }}</category> + {% endfor %} + {% for cat in post.categories %} + <category>{{ cat | xml_escape }}</category> + {% endfor %} + </item> + {% endfor %} + </channel> +</rss> diff --git a/flux.xml b/flux.xml new file mode 100644 index 0000000..38a1bb8 --- /dev/null +++ b/flux.xml @@ -0,0 +1,32 @@ +--- +layout: null +lang: fr +--- +<?xml version="1.0" encoding="UTF-8"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>{{ site.title[page.lang] | xml_escape }}</title> + <description>{{ site.description[page.lang] | xml_escape }}</description> + <link>{{ site.url }}{{ site.baseurl }}/</link> + <atom:link href="{{ "/flux.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/> + <pubDate>{{ site.time | date_to_rfc822 }}</pubDate> + <lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate> + <generator>Jekyll v{{ jekyll.version }}</generator> + {% assign posts=site.posts | where:"lang", page.lang %} + {% for post in posts limit:10 %} + <item> + <title>{{ post.title | xml_escape }}</title> + <description>{{ post.content | xml_escape }}</description> + <pubDate>{{ post.date | date_to_rfc822 }}</pubDate> + <link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link> + <guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid> + {% for tag in post.tags %} + <category>{{ tag | xml_escape }}</category> + {% endfor %} + {% for cat in post.categories %} + <category>{{ cat | xml_escape }}</category> + {% endfor %} + </item> + {% endfor %} + </channel> +</rss> diff --git a/index.html b/index.html new file mode 100644 index 0000000..41b9dae --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ +--- +layout: default +ref: index +lang: en +--- + +<div class="home"> + + <h1 class="page-heading">Posts</h1> + + <ul class="post-list"> + {% assign posts=site.posts | where:"lang", page.lang %} + {% for post in posts %} + <li> + <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span> + + <h2> + <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> + </h2> + </li> + {% endfor %} + </ul> + + <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | prepend: site.baseurl }}">via RSS</a></p> + +</div> diff --git a/jekyll-multilingual.gemspec b/jekyll-multilingual.gemspec new file mode 100644 index 0000000..f7b7fe2 --- /dev/null +++ b/jekyll-multilingual.gemspec @@ -0,0 +1,10 @@ +Gem::Specification.new do |s| + s.name = 'jekyll-multilingual' + s.version = '3.1.6' + s.license = 'MIT' + s.summary = 'Multilingual version of the Jekyll default theme' + s.author = 'Sylvain Durand' + s.email = 'github@durand.tf' + s.homepage = 'https://www.sylvaindurand.org/making-jekyll-multilingual/' + s.files = `git ls-files -z`.split("\x0").grep(%r{^_(includes|layouts)/}) +end diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..c2a49f4 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/sitemaps.xml b/sitemaps.xml new file mode 100644 index 0000000..f46de97 --- /dev/null +++ b/sitemaps.xml @@ -0,0 +1,32 @@ +--- +layout: +permalink: /sitemaps.xml +--- +<?xml version="1.0" encoding="UTF-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> + {% for post in site.posts %} + {% if post.id contains "404" %}{% else %} + <url> + <loc>{{site.base}}{{ post.url }}</loc> + {% assign versions=site.posts | where:"ref", post.ref %} + {% for version in versions %} + <xhtml:link rel="alternate" hreflang="{{ version.lang }}" href="{{site.base}}{{ version.url }}" /> + {% endfor %} + <lastmod>{{ post.date | date_to_xmlschema }}</lastmod> + <changefreq>weekly</changefreq> + </url> + {% endif %} + {% endfor %} + {% for page in site.pages %} + {% if page.id contains "404" %}{% else %} + <url> + <loc>{{site.base}}{{ page.url }}</loc> + {% assign versions=site.pages | where:"ref", page.ref %} + {% for version in versions %} + <xhtml:link rel="alternate" hreflang="{{ version.lang }}" href="{{site.base}}{{ version.url }}" /> + {% endfor %} + <changefreq>weekly</changefreq> + </url> + {% endif %} + {% endfor %} + </urlset> -- GitLab