Skip to content

Commit 6f211ae

Browse files
committed
Improve multi-language support
1 parent 37b4516 commit 6f211ae

File tree

6 files changed

+67
-10
lines changed

6 files changed

+67
-10
lines changed

config.toml

+25-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,33 @@ taxonomies = [
99
{name = "tags", feed = true},
1010
]
1111

12+
[translations]
13+
tags = "Tags"
14+
categories = "Categories"
15+
url = "$BASE_URL"
16+
name = "eng"
17+
lang_kor = "Korean"
18+
19+
[languages.kor]
20+
generate_feed = true
21+
22+
taxonomies = [
23+
{name = "categories", feed = true},
24+
{name = "tags", feed = true},
25+
]
26+
27+
[languages.kor.translations]
28+
tags = "태그"
29+
categories = "범주"
30+
url = "$BASE_URL/kor"
31+
name = "한국어"
32+
trans_key = "lang_kor"
33+
1234
[extra]
1335
author = "Vincent"
1436
after_dark_menu = [
15-
{url = "$BASE_URL", name = "Home"},
16-
{url = "$BASE_URL/categories", name = "Categories"},
17-
{url = "$BASE_URL/tags", name = "Tags"},
37+
{url = "$LANG_BASE_URL", name = "Home"},
38+
{url = "$LANG_BASE_URL/categories", trans_key = "categories"},
39+
{url = "$LANG_BASE_URL/tags", trans_key = "tags"},
1840
]
1941
after_dark_title = "My blog"

content/_index.kor.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
+++
2+
paginate_by = 5
3+
+++

content/some-article.kor.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
+++
2+
title = "구텐베르크는 무엇인가"
3+
date = 2017-09-24
4+
5+
[taxonomies]
6+
categories = ["세계 안녕"]
7+
tags = ["러스트"]
8+
+++
9+
10+
글이 여기서 나온다

templates/index.html

+26-4
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,38 @@
3434
</head>
3535

3636
<body class="hack dark main container">
37+
{% set lang_base_url = get_url(path="", lang=lang) %}
3738
{% block content %}
3839
{% block header %}
39-
{% if config.extra.after_dark_menu %}
40+
{% if config.extra.after_dark_menu or config.languages %}
4041
<header>
4142
<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
43+
{% if config.languages %}
44+
<div style="float: right">
45+
<!-- does not show the current language -->
46+
{% for key, value in config.languages %}
47+
{% set_global lang_url = value.translations.url | safe | replace(from="$BASE_URL", to=config.base_url) | replace(from="$LANG_BASE_URL", to=lang_base_url) %}
48+
<!-- check to see if the language has a translation of the current article -->
49+
{% if page %}
50+
{%for ea_translation in page.translations%}
51+
{%if ea_translation.lang == key%}
52+
{% set_global lang_url = ea_translation.permalink %}
53+
{%endif%}
54+
{% endfor %}
55+
{% elif taxonomy.slug %}
56+
{% set_global lang_url = value.translations.url ~ `/` ~ taxonomy.slug | safe | replace(from="$BASE_URL", to=config.base_url) | replace(from="$LANG_BASE_URL", to=lang_base_url) %}
57+
{% endif %}
58+
<a itemprop="url"
59+
href="{{lang_url}}">
60+
<span itemprop="name">{% if value.translations.trans_key %}{{ trans(key=value.translations.trans_key, lang=lang) }}{% else %}{{ value.translations.name }}{% endif %}</span></a>
61+
{% endfor %}
62+
</div>
63+
{% endif %}
4264
{% for item in config.extra.after_dark_menu %}
4365
<a itemprop="url"
44-
class="{% if item.url | replace(from="$BASE_URL", to=config.base_url) == current_url %}active{% endif %}"
45-
href="{{ item.url | safe | replace(from="$BASE_URL", to=config.base_url) | safe }}">
46-
<span itemprop="name">{{ item.name }}</span></a>
66+
class="{% if item.url | replace(from="$BASE_URL", to=config.base_url) | replace(from="$LANG_BASE_URL", to=lang_base_url) == current_url %}active{% endif %}"
67+
href="{{ item.url | safe | replace(from="$BASE_URL", to=config.base_url) | replace(from="$LANG_BASE_URL", to=lang_base_url) | safe }}">
68+
<span itemprop="name">{% if item.trans_key %}{{ trans(key=item.trans_key, lang=lang) }}{% else %}{{ item.name }}{% endif %}</span></a>
4769
{% endfor %}
4870
</nav>
4971
</header>

templates/page.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ <h1 itemprop="headline">{{ page.title }}</h1>
2626
{% endif %}
2727
{% if page.taxonomies.categories %}
2828
{% set category = page.taxonomies.categories[0] %}
29-
in <a href="{{ get_taxonomy_url(kind="categories", name=category) | safe }}">{{ category }}</a>
29+
in <a href="{{ get_taxonomy_url(kind="categories", name=category, lang=page.lang) | safe }}">{{ category }}</a>
3030
{% endif %}
3131
{% if page.taxonomies.tags %}
3232
{% if page.taxonomies.categories %}and{% endif %}
3333
tagged
3434
{% for tag in page.taxonomies.tags %}
35-
<a href="{{ get_taxonomy_url(kind="tags", name=tag) | safe }}">{{ tag }}</a>
35+
<a href="{{ get_taxonomy_url(kind="tags", name=tag, lang=page.lang) | safe }}">{{ tag }}</a>
3636
{% if page.taxonomies.tags | length > 1 %}
3737
{% if loop.index != page.taxonomies.tags | length %}
3838
{% if loop.index == page.taxonomies.tags | length - 1 %}

templates/tags/list.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
{{ super() }}
66
{% endblock header %}
77

8-
<h1>Tags</h1>
8+
<h1>{% if config.languages | length > 0 %}{{ trans(key="tags", lang=lang) }}{% else %}Tags{% endif %}</h1>
99

1010
{% if terms %}
1111
<ul>

0 commit comments

Comments
 (0)