summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeffreytse <jeffreytse.mail@gmail.com>2021-01-11 11:18:35 +0800
committerjeffreytse <jeffreytse.mail@gmail.com>2021-01-11 11:18:35 +0800
commit48d4da4f1b0ee6d8a095fca301e6f3486a35f0b2 (patch)
tree4a73066c24e5d8f5129eedaa3ff41a829c4f9565
parente3be95fe06ca57f7fa774e7b3d9efafe77cbb802 (diff)
fix: reading time was incorrect for cjk words (#20)
The liquid filter `number_of_words` is for english words, so here we use a calculation to estimate accurately the words, especially when the language is not English.
-rw-r--r--_includes/functions/get_reading_time.html24
-rw-r--r--_includes/views/pagination.html1
-rw-r--r--_includes/views/post-header.html1
3 files changed, 24 insertions, 2 deletions
diff --git a/_includes/functions/get_reading_time.html b/_includes/functions/get_reading_time.html
index 7747108..e1d23fe 100644
--- a/_includes/functions/get_reading_time.html
+++ b/_includes/functions/get_reading_time.html
@@ -2,14 +2,34 @@
{% assign article = include.params.article %}
{% endif %}
+{% if include.params.lang %}
+ {% assign lang = include.params.lang %}
+{% else %}
+ {% assign lang = lang | default: site.lang | default: "en" %}
+{% endif %}
+
{% if include.params.speed %}
{% assign speed = include.params.speed %}
{% else %}
{% assign speed = 160 %}
{% endif %}
-{% assign total_mins = article
- | number_of_words
+{% assign words = article | number_of_words %}
+
+{% if lang != "en" %}
+ {% assign words = words
+ | times: 0.6
+ | round %}
+ {% assign words = article
+ | strip_html
+ | strip_newlines
+ | size
+ | times: 0.4
+ | plus: words
+ | round %}
+{% endif %}
+
+{% assign total_mins = words
| divided_by: speed
| at_least: 1 %}
diff --git a/_includes/views/pagination.html b/_includes/views/pagination.html
index bcc3620..c1814e3 100644
--- a/_includes/views/pagination.html
+++ b/_includes/views/pagination.html
@@ -13,6 +13,7 @@
{%- assign date_format = site.yat.date_format | default: "%b %-d, %Y" -%}
{% assign article = post.content %}
+ {% assign lang = post.lang %}
{%- include functions.html func='get_reading_time' -%}
{% assign reading_time = return %}
diff --git a/_includes/views/post-header.html b/_includes/views/post-header.html
index df6447b..e59fd91 100644
--- a/_includes/views/post-header.html
+++ b/_includes/views/post-header.html
@@ -9,6 +9,7 @@
</time>
{% assign article = page.content %}
+ {% assign lang = page.lang %}
{%- include functions.html func='get_reading_time' -%}
{% assign reading_time = return %}
<span class="post-reading-time left-vsplit"><i class="fa fa-clock-o"></i> {{ reading_time }}</span>