octopress-multilingual 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +51 -19
- data/lib/octopress-multilingual/set_lang-tag.rb +58 -0
- data/lib/octopress-multilingual/version.rb +1 -1
- data/lib/octopress-multilingual.rb +17 -3
- metadata +2 -2
- data/lib/octopress-multilingual/posts_by-tag.rb +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53be2ced0c8a63eb3b700693e9c7970d3f8d9fee
|
4
|
+
data.tar.gz: 63c5a43ee90647ca20155753f6cfbe540a4c48aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5559796598c95835c13af44f6ecc402926572629f3ba6499f5511fed54e2063eb6d932dbfe125715647c6ef96057c23e90a1801879ac82a4ce0097e16d659a2f
|
7
|
+
data.tar.gz: fdd40263d7ab8776f082297d817e2a7936be4e7137a3af86f82f5557c708d3972cf7f8b5fbc28f802a2e7198bf051fbc6780aade8585fb02efd5ae34df7049d1
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -113,49 +113,81 @@ ordinal => /:lang/:categories/:year/:y_day/:title.html
|
|
113
113
|
|
114
114
|
If you don't want language to appear in your URLs, you must configure your own permalinks without `:lang`.
|
115
115
|
|
116
|
-
##
|
116
|
+
## Changing language scope
|
117
117
|
|
118
118
|
This plugin modifies your site's post list. The `site.posts` array **will not contain every post**, but only posts defined with your site's main language or with no language defined.
|
119
119
|
|
120
|
-
Using the `
|
120
|
+
Using the `set_lang` liquid block, you can temporarily switch languages while rendering a portion of your site. For example:
|
121
121
|
|
122
122
|
```
|
123
|
-
|
124
|
-
{
|
123
|
+
{{ site.lang }} # => 'en'
|
124
|
+
{{ site.posts }} # => English posts
|
125
|
+
|
126
|
+
{% set_lang de %}
|
127
|
+
{{ site.lang }} # => 'de'
|
128
|
+
{{ site.posts }} # => German posts
|
129
|
+
{% endset_lang %}
|
130
|
+
|
131
|
+
{{ site.lang }} # => 'en'
|
132
|
+
{{ site.posts }} # => English posts
|
133
|
+
```
|
134
|
+
|
135
|
+
## Post Indexes and RSS Feeds
|
125
136
|
|
126
|
-
|
127
|
-
|
137
|
+
To add multilingual post indexes you can use the `set_lang` tag like this:
|
138
|
+
|
139
|
+
```
|
140
|
+
{% set_lang de %}
|
128
141
|
{% for post in site.posts %}...{% endfor %}
|
129
|
-
{%
|
142
|
+
{% endset_lang %}
|
130
143
|
```
|
131
144
|
|
132
145
|
If your default post index is at `/index.html` you should create additional indexes for each secondary language. If you're also writing in German, create a posts index at `/de/index.html`.
|
133
146
|
|
134
|
-
DRY up your templates by putting post loops in an include
|
147
|
+
DRY up your templates by putting post loops in an include, for
|
148
|
+
example, `_includes/post-index.html`. It might look this:
|
135
149
|
|
136
|
-
<!-- title:"From /index.html" -->
|
150
|
+
<!-- title:"From _includes/post-index.html" -->
|
137
151
|
```
|
138
|
-
|
139
|
-
{%
|
152
|
+
{% set_lang page.lang %}
|
153
|
+
{% for post in site.posts %}...{% endfor %}
|
154
|
+
{% endpost_lang %}
|
140
155
|
```
|
141
156
|
|
157
|
+
Set the page language to German and include the same partial.
|
158
|
+
|
142
159
|
<!-- title:"From /de/index.html" -->
|
143
160
|
```
|
144
|
-
|
161
|
+
---
|
162
|
+
lang: de
|
163
|
+
---
|
164
|
+
{% include post-index.html %}
|
165
|
+
```
|
166
|
+
|
167
|
+
The `set_lang` tag will read the `page.lang` setting and
|
168
|
+
convert the post loop to use German. If `page.lang` were
|
169
|
+
`nil` the default language will be used.
|
170
|
+
|
171
|
+
If you don't want to set the `lang` for a page, but want to
|
172
|
+
use `{% set_lang %}`, that's fine too. It will also work like
|
173
|
+
this:
|
174
|
+
|
175
|
+
```
|
145
176
|
{% include post-index.html lang='de' %}
|
177
|
+
|
178
|
+
# Then in the included partial
|
179
|
+
{% set_lang include.lang %}
|
180
|
+
...
|
146
181
|
```
|
147
182
|
|
148
|
-
|
149
|
-
|
183
|
+
Or even just use a normal post loop on your included file and
|
184
|
+
set the language when including the partial.
|
150
185
|
|
151
|
-
<!-- title:"From _includes/post-index.html" -->
|
152
186
|
```
|
153
|
-
{%
|
154
|
-
{% for post in site.posts %}...{% endfor %}
|
155
|
-
{% endpost_lang %}
|
187
|
+
{% set_lang de %}{% include post-index.html %}{% endset_lang %}
|
156
188
|
```
|
157
189
|
|
158
|
-
|
190
|
+
There are lots of ways to use this, but this approach should work for RSS feeds or any template system which works with the post loop.
|
159
191
|
|
160
192
|
## Reference posts by language
|
161
193
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'liquid'
|
2
|
+
|
3
|
+
module Octopress
|
4
|
+
module Multilingual
|
5
|
+
class PostsByTag < Liquid::Block
|
6
|
+
def initialize(tag_name, markup, tokens)
|
7
|
+
super
|
8
|
+
@lang = markup.strip
|
9
|
+
end
|
10
|
+
|
11
|
+
def render(context)
|
12
|
+
@context = context
|
13
|
+
@languages = @context['site.languages']
|
14
|
+
@lang_posts = @context['site.posts_by_language']
|
15
|
+
main_lang = @context['site.main_language']
|
16
|
+
|
17
|
+
# Render with new posts context
|
18
|
+
if lang
|
19
|
+
|
20
|
+
# Set to specified language
|
21
|
+
set_post_lang lang
|
22
|
+
set_current_lang(lang)
|
23
|
+
|
24
|
+
# Render
|
25
|
+
content = super(context)
|
26
|
+
|
27
|
+
# Reset to main language
|
28
|
+
set_post_lang main_lang
|
29
|
+
set_current_lang(main_lang)
|
30
|
+
|
31
|
+
content
|
32
|
+
else
|
33
|
+
# Tell scope it's in the main
|
34
|
+
super(context)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_post_lang(lang)
|
39
|
+
@context.environments.first['site']['posts'] = @lang_posts[lang]
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_current_lang(lang)
|
43
|
+
@context.environments.first['site']['lang'] = lang
|
44
|
+
end
|
45
|
+
|
46
|
+
def lang
|
47
|
+
# If lang is a local variable, read it from the context
|
48
|
+
lang = [@lang, @context[@lang]].select{|l| @languages.include?(l)}.first
|
49
|
+
if !lang.nil?
|
50
|
+
lang.downcase
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
Liquid::Template.register_tag('set_lang', Octopress::Multilingual::PostsByTag)
|
58
|
+
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require "octopress-multilingual/version"
|
2
|
-
require "octopress-multilingual/
|
2
|
+
require "octopress-multilingual/set_lang-tag"
|
3
3
|
require 'octopress-hooks'
|
4
4
|
|
5
5
|
module Octopress
|
@@ -65,7 +65,8 @@ module Octopress
|
|
65
65
|
{
|
66
66
|
'posts' => main_language_posts,
|
67
67
|
'posts_by_language' => posts_by_language,
|
68
|
-
'languages' => languages
|
68
|
+
'languages' => languages,
|
69
|
+
'lang' => main_language
|
69
70
|
}
|
70
71
|
end
|
71
72
|
end
|
@@ -83,7 +84,9 @@ module Octopress
|
|
83
84
|
# appear in each language's feed
|
84
85
|
#
|
85
86
|
|
86
|
-
{
|
87
|
+
{
|
88
|
+
'site' => Octopress::Multilingual.site_payload(site),
|
89
|
+
}
|
87
90
|
end
|
88
91
|
end
|
89
92
|
end
|
@@ -128,3 +131,14 @@ module Jekyll
|
|
128
131
|
end
|
129
132
|
end
|
130
133
|
end
|
134
|
+
|
135
|
+
if defined? Octopress::Docs
|
136
|
+
Octopress::Docs.add({
|
137
|
+
name: "Octopress Multilingual",
|
138
|
+
gem: "octopress-multilingual",
|
139
|
+
version: Octopress::Multilingual::VERSION,
|
140
|
+
description: "",
|
141
|
+
path: File.expand_path(File.join(File.dirname(__FILE__), "..")),
|
142
|
+
source_url: "https://github.com/octopress/multilingual"
|
143
|
+
})
|
144
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopress-multilingual
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
@@ -119,7 +119,7 @@ files:
|
|
119
119
|
- LICENSE.txt
|
120
120
|
- README.md
|
121
121
|
- lib/octopress-multilingual.rb
|
122
|
-
- lib/octopress-multilingual/
|
122
|
+
- lib/octopress-multilingual/set_lang-tag.rb
|
123
123
|
- lib/octopress-multilingual/version.rb
|
124
124
|
homepage: https://github.com/octopress/multilingual
|
125
125
|
licenses:
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'liquid'
|
2
|
-
|
3
|
-
module Octopress
|
4
|
-
module Multilingual
|
5
|
-
class PostsByTag < Liquid::Block
|
6
|
-
def initialize(tag_name, markup, tokens)
|
7
|
-
super
|
8
|
-
@lang = markup.strip
|
9
|
-
end
|
10
|
-
|
11
|
-
def render(context)
|
12
|
-
@context = context
|
13
|
-
@languages = context['site.languages']
|
14
|
-
lang_posts = context['site.posts_by_language']
|
15
|
-
|
16
|
-
# Was a language passed in?
|
17
|
-
if lang
|
18
|
-
# Set posts loop, to language
|
19
|
-
context.environments.first['site']['posts'] = lang_posts[lang]
|
20
|
-
|
21
|
-
# Render with new posts context
|
22
|
-
rendered = super(context)
|
23
|
-
|
24
|
-
# Restore posts to context
|
25
|
-
context.environments.first['site']['posts'] = lang_posts[context['site.main_language']]
|
26
|
-
|
27
|
-
rendered
|
28
|
-
else
|
29
|
-
super(context)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def lang
|
34
|
-
# If lang is a local variable, read it from the context
|
35
|
-
lang = [@lang, @context[@lang]].select{|l| @languages.include?(l)}.first
|
36
|
-
if !lang.nil?
|
37
|
-
lang.downcase
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
Liquid::Template.register_tag('post_lang', Octopress::Multilingual::PostsByTag)
|
45
|
-
|