jekyll-theme-chirpy 4.0.2 → 4.1.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -33
  3. data/_config.yml +16 -4
  4. data/_data/locales/en.yml +87 -0
  5. data/_data/locales/zh-CN.yml +86 -0
  6. data/_includes/footer.html +17 -8
  7. data/_includes/head.html +8 -6
  8. data/_includes/js-selector.html +8 -3
  9. data/_includes/no-zero-date.html +13 -0
  10. data/_includes/panel.html +3 -3
  11. data/_includes/post-nav.html +4 -4
  12. data/_includes/post-paginator.html +9 -1
  13. data/_includes/post-sharing.html +5 -3
  14. data/_includes/read-time.html +12 -2
  15. data/_includes/refactor-content.html +75 -6
  16. data/_includes/related-posts.html +1 -1
  17. data/_includes/search-results.html +1 -1
  18. data/_includes/sidebar.html +8 -7
  19. data/_includes/timeago.html +12 -16
  20. data/_includes/topbar.html +27 -21
  21. data/_layouts/archives.html +4 -3
  22. data/_layouts/categories.html +15 -18
  23. data/_layouts/category.html +2 -2
  24. data/_layouts/default.html +3 -1
  25. data/_layouts/home.html +3 -4
  26. data/_layouts/page.html +8 -1
  27. data/_layouts/post.html +25 -11
  28. data/_layouts/tag.html +2 -3
  29. data/_sass/addon/commons.scss +34 -21
  30. data/_sass/addon/syntax.scss +24 -16
  31. data/_sass/addon/variables.scss +25 -13
  32. data/_sass/jekyll-theme-chirpy.scss +2 -1
  33. data/_sass/layout/home.scss +30 -15
  34. data/_sass/layout/post.scss +0 -12
  35. data/_sass/variables-hook.scss +3 -0
  36. data/assets/404.html +15 -5
  37. data/assets/css/style.scss +7 -2
  38. data/assets/feed.xml +1 -1
  39. data/assets/js/dist/categories.min.js +1 -1
  40. data/assets/js/dist/commons.min.js +1 -1
  41. data/assets/js/dist/home.min.js +2 -2
  42. data/assets/js/dist/page.min.js +2 -2
  43. data/assets/js/dist/post.min.js +2 -2
  44. data/assets/js/dist/pvreport.min.js +1 -1
  45. metadata +6 -5
  46. data/_data/date_format.yml +0 -7
  47. data/_data/label.yml +0 -19
  48. data/_data/rights.yml +0 -11
@@ -0,0 +1,13 @@
1
+ {% comment %}
2
+ Remove the zero padding from a month/day string
3
+ {% endcomment %}
4
+
5
+ {% assign ret = include.date_str %}
6
+ {% assign _first_chat = ret | slice: 0 %}
7
+
8
+ {% if _first_chat == '0' %}
9
+ {% assign _last_idx = ret.size | minus: 1 %}
10
+ {% assign ret = ret | slice: 1, _last_idx %}
11
+ {% endif %}
12
+
13
+ {{ ret | replace: ' 0', ' ' }}
data/_includes/panel.html CHANGED
@@ -11,7 +11,7 @@
11
11
  {% if update_list.size > 0 %}
12
12
 
13
13
  <div id="access-lastmod" class="post">
14
- <span>{{- site.data.label.panel.lastmod | default: 'Recent Update' -}}</span>
14
+ <span>{{- site.data.locales[site.lang].panel.lastmod | default: 'Recent Update' -}}</span>
15
15
  <ul class="post-content pl-0 pb-1 ml-1 mt-2">
16
16
 
17
17
  {% for item in update_list %}
@@ -30,7 +30,7 @@
30
30
 
31
31
  {% if trending_tags.size > 0 %}
32
32
  <div id="access-tags">
33
- <span>{{- site.data.label.panel.trending_tags | default: 'Trending Tags' -}}</span>
33
+ <span>{{- site.data.locales[site.lang].panel.trending_tags | default: 'Trending Tags' -}}</span>
34
34
  <div class="d-flex flex-wrap mt-3 mb-1 mr-3">
35
35
 
36
36
  {% for tag_name in trending_tags %}
@@ -48,7 +48,7 @@
48
48
  <script src="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@1.0.1/dist/bootstrap-toc.min.js"></script>
49
49
  <div id="toc-wrapper" class="pl-0 pr-4 mb-5">
50
50
  <span class="pl-3 pt-2 mb-2">
51
- {{- site.data.label.panel.toc | default: 'Contents' -}}
51
+ {{- site.data.locales[site.lang].panel.toc | default: 'Contents' -}}
52
52
  </span>
53
53
  <nav id="toc" data-toggle="toc"></nav>
54
54
  </div>
@@ -5,24 +5,24 @@
5
5
  <div class="post-navigation d-flex justify-content-between">
6
6
  {% if page.previous.url %}
7
7
  <a href="{{ site.baseurl }}{{ page.previous.url }}" class="btn btn-outline-primary"
8
- prompt="{{ site.data.label.post.button.previous | default: 'previous' }}">
8
+ prompt="{{ site.data.locales[site.lang].post.button.previous | default: 'previous' }}">
9
9
  <p>{{ page.previous.title }}</p>
10
10
  </a>
11
11
  {% else %}
12
12
  <span class="btn btn-outline-primary disabled"
13
- prompt="{{ site.data.label.post.button.previous | default: 'previous' }}">
13
+ prompt="{{ site.data.locales[site.lang].post.button.previous | default: 'previous' }}">
14
14
  <p>-</p>
15
15
  </span>
16
16
  {% endif %}
17
17
 
18
18
  {% if page.next.url %}
19
19
  <a href="{{ site.baseurl }}{{page.next.url}}" class="btn btn-outline-primary"
20
- prompt="{{ site.data.label.post.button.next | default: 'next' }}">
20
+ prompt="{{ site.data.locales[site.lang].post.button.next | default: 'next' }}">
21
21
  <p>{{ page.next.title }}</p>
22
22
  </a>
23
23
  {% else %}
24
24
  <span class="btn btn-outline-primary disabled"
25
- prompt="{{ site.data.label.post.button.next | default: 'next' }}">
25
+ prompt="{{ site.data.locales[site.lang].post.button.next | default: 'next' }}">
26
26
  <p>-</p>
27
27
  </span>
28
28
  {% endif %}
@@ -2,13 +2,14 @@
2
2
  The paginator for post list on HomgPage.
3
3
  -->
4
4
 
5
- <ul class="pagination mt-4 mb-0 pl-lg-2">
5
+ <ul class="pagination align-items-center mt-4 mb-0 pl-lg-2">
6
6
  <!-- left arrow -->
7
7
  {% if paginator.previous_page %}
8
8
  {% assign prev_url = paginator.previous_page_path | relative_url %}
9
9
  {% else %}
10
10
  {% assign prev_url = "#" %}
11
11
  {% endif %}
12
+
12
13
  <li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
13
14
  <a class="page-link btn-box-shadow" href="{{ prev_url }}" aria-label="previous-page">
14
15
  <i class="fas fa-angle-left"></i>
@@ -65,12 +66,19 @@
65
66
 
66
67
  {% endfor %}
67
68
 
69
+ <!-- mobile pagination -->
70
+ <li class="page-index align-middle">
71
+ <span>{{ paginator.page }}</span>
72
+ <span class="text-muted">/ {{ paginator.total_pages }}</span>
73
+ </li>
74
+
68
75
  <!-- right arrow -->
69
76
  {% if paginator.next_page_path %}
70
77
  {% assign next_url = paginator.next_page_path | relative_url %}
71
78
  {% else %}
72
79
  {% assign next_url = "#" %}
73
80
  {% endif %}
81
+
74
82
  <li class="page-item {% unless paginator.next_page_path %}disabled{% endunless %}">
75
83
  <a class="page-link btn-box-shadow" href="{{ next_url }}" aria-label="next-page">
76
84
  <i class="fas fa-angle-right"></i>
@@ -3,7 +3,7 @@
3
3
  -->
4
4
 
5
5
  <div class="share-wrapper">
6
- <span class="share-label text-muted mr-1">{{ site.data.label.post.share | default: 'Share' }}</span>
6
+ <span class="share-label text-muted mr-1">{{ site.data.locales[site.lang].post.share | default: 'Share' }}</span>
7
7
  <span class="share-icons">
8
8
  {% capture title %}{{ page.title }} - {{ site.title }}{% endcapture %}
9
9
  {% assign url = page.url | absolute_url %}
@@ -16,8 +16,10 @@
16
16
  </a>
17
17
  {% endfor %}
18
18
 
19
- <i class="fa-fw fas fa-link small" onclick="copyLink()"
20
- data-toggle="tooltip" data-placement="top" title="Copy link"></i>
19
+ <i class="fa-fw fas fa-link small" onclick="copyLink('', '{{ site.data.locales[site.lang].post.button.copy.succeed }}')"
20
+ data-toggle="tooltip" data-placement="top"
21
+ title="{{ site.data.locales[site.lang].post.button.copy.title }}">
22
+ </i>
21
23
 
22
24
  </span>
23
25
  </div>
@@ -1,9 +1,11 @@
1
1
  <!--
2
2
  Calculate the post's reading time, and display the word count in tooltip
3
3
  -->
4
+
4
5
  {% assign words = include.content | strip_html | number_of_words: "auto" %}
5
6
 
6
7
  <!-- words per minute -->
8
+
7
9
  {% assign wpm = 180 %}
8
10
  {% assign min_time = 1 %}
9
11
 
@@ -13,7 +15,15 @@
13
15
  {% assign read_time = min_time %}
14
16
  {% endunless %}
15
17
 
18
+ {% capture read_prompt %}
19
+ {{- site.data.locales[site.lang].post.read_time.prompt | default: "read" -}}
20
+ {% endcapture %}
21
+
16
22
  <!-- return element -->
17
- <span class="readtime" data-toggle="tooltip" data-placement="bottom" title="{{ words }} words">
18
- {{- read_time -}}{{" "}}{{- site.data.label.read_time_unit | default: "min" -}}
23
+ <span class="readtime" data-toggle="tooltip" data-placement="bottom"
24
+ title="{{ words }} {{ site.data.locales[site.lang].post.words | default: "words" }}">
25
+ {{- read_time -}}{{" "}}{{- site.data.locales[site.lang].post.read_time.unit | default: "min" -}}
26
+ {%- if include.prompt -%}
27
+ {% unless site.lang contains 'zh' %}{{" "}}{% endunless %}{{ read_prompt }}
28
+ {%- endif -%}
19
29
  </span>
@@ -8,6 +8,7 @@
8
8
  In order to allow a wide table to scroll horizontally,
9
9
  we suround the markdown table with `<div class="table-wrapper">` and `</div>`
10
10
  -->
11
+
11
12
  {% if _content contains '<table>' %}
12
13
  {% assign _content = _content
13
14
  | replace: '<table>', '<div class="table-wrapper"><table>'
@@ -21,6 +22,7 @@
21
22
  https://github.com/penibelst/jekyll-compress-html/issues/101
22
23
  https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
23
24
  -->
25
+
24
26
  {% if _content contains '<pre class="highlight">' %}
25
27
  {% assign _content = _content
26
28
  | replace: '<div class="highlight"><pre class="highlight"><code', '<div class="highlight"><code'
@@ -29,14 +31,20 @@
29
31
  {% endif %}
30
32
 
31
33
  <!-- Add attribute 'hide-bullet' to the checkbox list -->
34
+
32
35
  {% if _content contains '<li class="task-list-item"><' %}
33
36
  {% assign _content = _content
34
37
  | replace: '"task-list-item"><', '"task-list-item" hide-bullet><'
35
38
  %}
36
39
  {% endif %}
37
40
 
41
+
42
+ <!-- images -->
43
+
38
44
  {% if _content contains '<img src="' %}
39
45
 
46
+ <!-- add CDN prefix if it exists -->
47
+
40
48
  {% if site.img_cdn != '' %}
41
49
  {% assign img_path_replacement = '<img src="' | append: site.img_cdn | append: '/' %}
42
50
  {% else %}
@@ -46,16 +54,77 @@
46
54
  {% assign _content = _content | replace: '<img src="/', img_path_replacement %}
47
55
 
48
56
  <!-- lazy-load images <https://github.com/ApoorvSaxena/lozad.js#usage> -->
49
- {% assign img_placehodler
50
- = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' %}
51
57
 
52
- {% assign lozad_replacement = '<img src="'
53
- | append: img_placehodler
54
- | append: '" data-src="' %}
58
+ {% assign _content = _content | replace: '<img src="', '<img data-proofer-ignore data-src="' %}
59
+
60
+ <!-- add image placehoder to prevent layout reflow -->
61
+
62
+ {% assign _img_content = nil %}
63
+
64
+ {% assign _images = _content | split: '<img ' %}
65
+
66
+ {% for _img in _images %}
67
+ {% if forloop.first %}
68
+ {% assign _img_content = _img %}
69
+ {% continue %}
70
+ {% endif %}
71
+
72
+ {% assign _width = nil %}
73
+ {% assign _height = nil %}
74
+ {% assign _attrs = _img | split: '>' | first | split: ' ' %}
75
+
76
+ {% for _attr in _attrs %}
77
+ {% capture _key %}{{ _attr | split: '=' | first }}{% endcapture %}
78
+ {% capture _value %}{{ _attr | split: '=' | last | replace: '"', '' }}{% endcapture %}
79
+
80
+ {% case _key %}
81
+ {% when 'width' %}
82
+ {% assign _width = _value %}
83
+ {% when 'height' %}
84
+ {% assign _height = _value %}
85
+ {% endcase %}
55
86
 
56
- {% assign _content = _content | replace: '<img src="', lozad_replacement %}
87
+ {% if _width and _height %}
88
+ {% capture _svg %}data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 {{_width}} {{_height}}'%3E%3C/svg%3E{% endcapture %}
89
+ {% assign _img_content = _img_content | append: '<img src="' | append: _svg | append: '" ' | append: _img %}
90
+ {% break %}
91
+ {% endif %}
92
+
93
+ {% endfor %}
94
+
95
+ {% unless _width and _height %}
96
+ {% assign _img_content = _img_content | append: '<img ' | append: _img %}
97
+ {% endunless %}
98
+
99
+ {% endfor %}
100
+
101
+ {% assign _content = _img_content %}
57
102
 
58
103
  {% endif %}
59
104
 
105
+ <!-- Add lang-badge for code snippets -->
106
+
107
+ {% if _content contains '<div class="language-' %}
108
+ {% assign _code_splits = _content | split: '<div class="language-' %}
109
+ {% assign _new_content = nil %}
110
+
111
+ {% for _snippet in _code_splits %}
112
+ {% if forloop.first %}
113
+ {% assign _new_content = _snippet %}
114
+ {% else %}
115
+ {% assign _lang = _snippet | split: ' ' | first %}
116
+ {% capture _tag_head %}<div lang="{{_lang}}" class="language-{% endcapture %}
117
+ {% assign _new_content = _new_content | append: _tag_head | append: _snippet %}
118
+ {% endif %}
119
+ {% endfor %}
120
+
121
+ {% if _new_content %}
122
+ {% assign _content = _new_content %}
123
+ {% endif %}
124
+
125
+ {% endif %}
126
+
127
+
60
128
  <!-- return -->
129
+
61
130
  {{ _content }}
@@ -81,7 +81,7 @@
81
81
  {% if index_list.size > 0 %}
82
82
  <div id="related-posts" class="mt-5 mb-2 mb-sm-4">
83
83
  <h3 class="pt-2 mt-1 mb-4 ml-1"
84
- data-toc-skip>{{ site.data.label.post.relate_posts | default: 'Further Reading' }}</h3>
84
+ data-toc-skip>{{ site.data.locales[site.lang].post.relate_posts | default: 'Further Reading' }}</h3>
85
85
  <div class="card-deck mb-4">
86
86
  {% for entry in index_list %}
87
87
  {% assign index = entry | plus: 0 %}
@@ -4,7 +4,7 @@
4
4
  <div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
5
5
  <div class="col-12 col-sm-11 post-content">
6
6
  <div id="search-hints">
7
- <h4 class="text-muted mb-4">{{ site.data.label.panel.trending_tags | default: 'Trending Tags' }}</h4>
7
+ <h4 class="text-muted mb-4">{{ site.data.locales[site.lang].panel.trending_tags | default: 'Trending Tags' }}</h4>
8
8
 
9
9
  {% include trending-tags.html %}
10
10
 
@@ -2,8 +2,7 @@
2
2
  The Side Bar
3
3
  -->
4
4
 
5
- <div id="sidebar" class="d-flex flex-column align-items-end">
6
-
5
+ <div id="sidebar" class="d-flex flex-column align-items-end" lang="{{lang}}">
7
6
  <div class="profile-wrapper text-center">
8
7
  <div id="avatar">
9
8
  <a href="{{ '/' | relative_url }}" alt="avatar" class="mx-auto">
@@ -21,19 +20,19 @@
21
20
  </div>
22
21
 
23
22
  <div class="site-title mt-3">
24
- <a href="{{ '/' | relative_url }}">{{- site.title -}}</a>
23
+ <a href="{{ '/' | relative_url }}">{{ site.title }}</a>
25
24
  </div>
26
-
27
- <div class="site-subtitle font-italic">{{- site.tagline -}}</div>
25
+ <div class="site-subtitle font-italic">{{ site.tagline }}</div>
28
26
 
29
27
  </div><!-- .profile-wrapper -->
30
28
 
31
29
  <ul class="w-100">
30
+
32
31
  <!-- home -->
33
32
  <li class="nav-item{% if page.layout == 'home' %}{{ " active" }}{% endif %}">
34
33
  <a href="{{ '/' | relative_url }}" class="nav-link">
35
34
  <i class="fa-fw fas fa-home ml-xl-3 mr-xl-3 unloaded"></i>
36
- <span>{{ "HOME" }}</span>
35
+ <span>{{ site.data.locales[site.lang].tabs.home | default: "home" | upcase }}</span>
37
36
  </a>
38
37
  </li>
39
38
  <!-- the real tabs -->
@@ -41,7 +40,9 @@
41
40
  <li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
42
41
  <a href="{{ tab.url | relative_url }}" class="nav-link">
43
42
  <i class="fa-fw {{ tab.icon }} ml-xl-3 mr-xl-3 unloaded"></i>
44
- <span>{{ tab.title | upcase }}</span>
43
+ {% capture tab_name %}{{ tab.url | split: '/' }}{% endcapture %}
44
+
45
+ <span>{{ site.data.locales[site.lang].tabs.[tab_name] | default: tab_name | upcase }}</span>
45
46
  </a>
46
47
  </li> <!-- .nav-item -->
47
48
  {% endfor %}
@@ -3,29 +3,25 @@
3
3
  See: /assets/js/_utils/timeage.js
4
4
  -->
5
5
 
6
- {% assign tooltip_df = site.data.date_format.tooltip | default: '%a, %b %e, %Y, %l:%M %p %z' %}
7
- {% assign post_long_df = site.data.date_format.post.long | default: '%b %e, %Y' %}
8
- {% assign post_short_df = site.data.date_format.post.short | default: '%b %e' %}
6
+ {% assign tooltip_df = site.data.locales[site.lang].date_format.tooltip | default: '%a, %b %e, %Y, %l:%M %p %z' %}
7
+ {% assign post_long_df = site.data.locales[site.lang].date_format.post.long | default: '%b %e, %Y' %}
8
+ {% assign post_short_df = site.data.locales[site.lang].date_format.post.short | default: '%b %e' %}
9
9
 
10
+ {% if include.preposition %}
11
+ {{ include.preposition }}
12
+ {% endif %}
10
13
  <span class="timeago {% if include.class %}{{ include.class }}{% endif %}"
11
14
  {% if include.tooltip %}
12
15
  data-toggle="tooltip"
13
16
  data-placement="bottom"
14
17
  title="{{ include.date | date: tooltip_df }}"
15
- {% endif %}
16
-
17
- {% if include.prefix %}prefix="{{ include.prefix }} "{% endif%}
18
- {% if include.prep %}prep="{{ include.prep }}"{% endif %} >
19
-
20
- {% assign this_year = site.time | date: "%Y" %}
21
- {% assign post_year = include.date | date: "%Y" %}
22
-
23
- {% if post_year == this_year %}
18
+ {% endif %}>
19
+ {%- assign this_year = site.time | date: "%Y" -%}
20
+ {%- assign post_year = include.date | date: "%Y" -%}
21
+ {%- if post_year == this_year -%}
24
22
  {{ include.date | date: post_short_df }}
25
- {% else %}
23
+ {%- else -%}
26
24
  {{ include.date | date: post_long_df }}
27
- {% endif %}
28
-
25
+ {%- endif -%}
29
26
  <i class="unloaded">{{ include.date | date_to_xmlschema }}</i>
30
-
31
27
  </span>
@@ -8,33 +8,38 @@
8
8
 
9
9
  {% assign paths = page.url | split: '/' %}
10
10
 
11
- {% if paths.size == 0 %}
11
+ {% if paths.size == 0 or page.layout == 'home' %}
12
12
  <!-- index page -->
13
- <span>{{ 'Posts' }}</span>
13
+ <span>{{ site.data.locales[site.lang].tabs.home | default: 'home' | capitalize }}</span>
14
+
14
15
  {% else %}
15
16
 
16
17
  {% for item in paths %}
17
18
 
18
19
  {% if forloop.first %}
19
- {% unless page.layout == 'post' %}
20
20
  <span>
21
- <a href="{{ '/' | relative_url }}">{{ 'Home' }}</a>
21
+ <a href="{{ '/' | relative_url }}">
22
+ {{ site.data.locales[site.lang].tabs.home | default: 'home' | capitalize }}
23
+ </a>
22
24
  </span>
23
- {% endunless %}
24
25
 
25
26
  {% elsif forloop.last %}
26
- <span>{{ page.title }}</span>
27
27
 
28
- {% else %}
29
- <span>
30
- {% assign url = item %}
31
- {% if item == 'posts' and page.layout == 'post' %}
32
- {% assign url = '/' %}
28
+ {% if page.collection == 'tabs' %}
29
+ <span>{{ site.data.locales[site.lang].tabs[item] | default: page.title }}</span>
30
+ {% else %}
31
+ <span>{{ page.title }}</span>
33
32
  {% endif %}
34
- <a href="{{ url | relative_url }}">
35
- {{ item | capitalize }}
36
- </a>
37
- </span>
33
+
34
+ {% else %}
35
+
36
+ {% unless page.layout == 'post' %}
37
+ <span>
38
+ <a href="{{ item | relative_url }}">
39
+ {{ site.data.locales[site.lang].tabs[item] | default: page.title }}
40
+ </a>
41
+ </span>
42
+ {% endunless %}
38
43
 
39
44
  {% endif %}
40
45
 
@@ -48,11 +53,12 @@
48
53
 
49
54
  <div id="topbar-title">
50
55
  {% if page.layout == 'home' %}
51
- {{- site.title -}}
52
- {% elsif page.dynamic_title %}
53
- {{- page.title -}}
56
+ {{- site.data.locales[site.lang].title | default: site.title -}}
57
+ {% elsif page.collection == 'tabs' %}
58
+ {%- capture tab_key -%}{{ page.url | split: '/' }}{%- endcapture -%}
59
+ {{- site.data.locales[site.lang].tabs[tab_key] | default: page.title -}}
54
60
  {% else %}
55
- {{- page.layout | capitalize -}}
61
+ {{- site.data.locales[site.lang].layout[page.layout] | default: page.layout | capitalize -}}
56
62
  {% endif %}
57
63
  </div>
58
64
 
@@ -60,10 +66,10 @@
60
66
  <span id="search-wrapper" class="align-items-center">
61
67
  <i class="fas fa-search fa-fw"></i>
62
68
  <input class="form-control" id="search-input" type="search"
63
- aria-label="search" autocomplete="off" placeholder="{{ site.data.label.search_hint | default: 'Search' }}...">
69
+ aria-label="search" autocomplete="off" placeholder="{{ site.data.locales[site.lang].search.hint | default: 'Search' | capitalize }}...">
64
70
  <i class="fa fa-times-circle fa-fw" id="search-cleaner"></i>
65
71
  </span>
66
- <span id="search-cancel" >Cancel</span>
72
+ <span id="search-cancel" >{{ site.data.locales[site.lang].search.cancel | default: 'Cancel' }}</span>
67
73
  </div>
68
74
 
69
75
  </div>