jekyll-multiple-languages-plugin 1.2.0 → 1.2.1
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.
- checksums.yaml +4 -4
- data/README.md +22 -20
- data/example/Gemfile +1 -2
- data/jekyll-multiple-languages-plugin.gemspec +2 -2
- data/lib/jekyll/multiple/languages/plugin.rb +52 -49
- data/lib/jekyll/multiple/languages/plugin/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 437382c6919e0f607b4bb0d5b98d514704b1fd17
|
4
|
+
data.tar.gz: 36b3c661881ae56a5d12f6d8fe3ddaa3bc835c9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb3a7852cbb502d63aedf98ca78ed2c23fd1c9979699f507f82a3b82cf22fcffc3d9f5118dbe60e3ef2f999f74a945d7f387c7c37eae8e5abf1bcf320bc5101d
|
7
|
+
data.tar.gz: fa407baf34ff429f22fc13830d826046abcba230995f8ba3c72981f7f5df1c5a7db1721ffc97293ab404d35c184ed2d998934d97f23f7c7cdf8ca681acfbabf8
|
data/README.md
CHANGED
@@ -1,27 +1,10 @@
|
|
1
1
|
# Multiple Languages in Jekyll
|
2
2
|
|
3
|
-
Jekyll Multiple Languages is an internationalization plugin for [Jekyll](https://github.com/mojombo/jekyll). It compiles your Jekyll site for one or more languages with a similar approach as Rails does. The different sites will be stored in sub folders with the same name as the language it contains.
|
3
|
+
Jekyll Multiple Languages is an internationalization plugin for [Jekyll](https://github.com/mojombo/jekyll). It compiles your Jekyll site for one or more languages with a similar approach as Rails does. The different sites will be stored in sub folders with the same name as the language it contains. Version 1.2.1 and later also supports Octopress.
|
4
4
|
|
5
5
|
The plugin is developed as an utility at [Screen Interaction](http://www.screeninteraction.com)
|
6
6
|
|
7
7
|
##Installation
|
8
|
-
### Submodule
|
9
|
-
If your Jekyll project is in a git repository, you can easily
|
10
|
-
manage your plugins by utilizing git submodules.
|
11
|
-
|
12
|
-
To install this plugin as a git submodule:
|
13
|
-
|
14
|
-
git submodule add git://github.com/screeninteraction/jekyll-multiple-languages-plugin.git _plugins/multiple-languages
|
15
|
-
|
16
|
-
To update:
|
17
|
-
|
18
|
-
cd _plugins/multiple-languages
|
19
|
-
git pull origin master
|
20
|
-
|
21
|
-
|
22
|
-
### Copy file
|
23
|
-
Copy or link the file `lib/jekyll/multiple/languages/plugin.rb` into your `_plugins` folder for your Jekyll project.
|
24
|
-
|
25
8
|
|
26
9
|
### Gem [](http://badge.fury.io/rb/jekyll-multiple-languages-plugin)
|
27
10
|
|
@@ -43,8 +26,26 @@ To activate the plugin add this line in to a *.rb file in the _plugins directory
|
|
43
26
|
|
44
27
|
require 'jekyll/multiple/languages/plugin'
|
45
28
|
|
29
|
+
|
30
|
+
### Submodule
|
31
|
+
If your Jekyll project is in a git repository, you can easily
|
32
|
+
manage your plugins by utilizing git submodules.
|
33
|
+
|
34
|
+
To install this plugin as a git submodule:
|
35
|
+
|
36
|
+
git submodule add git://github.com/screeninteraction/jekyll-multiple-languages-plugin.git _plugins/multiple-languages
|
37
|
+
|
38
|
+
To update:
|
39
|
+
|
40
|
+
cd _plugins/multiple-languages
|
41
|
+
git pull origin master
|
42
|
+
|
43
|
+
|
44
|
+
### Copy file
|
45
|
+
Copy or link the file `lib/jekyll/multiple/languages/plugin.rb` into your `_plugins` folder for your Jekyll project.
|
46
|
+
|
46
47
|
|
47
|
-
|
48
|
+
##Features
|
48
49
|
* Supports multiple languages with the same code base.
|
49
50
|
* Supports all template languages that your Liquid pipeline supports.
|
50
51
|
* Uses [Liquid tags](https://github.com/Shopify/liquid) in your HTML for including translated strings.
|
@@ -53,7 +54,8 @@ To activate the plugin add this line in to a *.rb file in the _plugins directory
|
|
53
54
|
* Contains an example web site thanks to [@davrandom](https://github.com/davrandom/)
|
54
55
|
* Supports translated keys in YAML format
|
55
56
|
* Supports translated template files
|
56
|
-
*
|
57
|
+
* *NEW!* Supports writing translated posts
|
58
|
+
* *NEW!* Supports Octopress
|
57
59
|
|
58
60
|
##Usage
|
59
61
|
###Configuration
|
data/example/Gemfile
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Jekyll::Multiple::Languages::Plugin::VERSION
|
9
9
|
spec.authors = ["Martin Kurtsson"]
|
10
10
|
spec.email = ["martin.kurtsson@screeninteraction.com"]
|
11
|
-
spec.description = %q{
|
12
|
-
spec.summary = %q{I18n plugin for Jekyll}
|
11
|
+
spec.description = %q{Plugin for Jekyll and Octopress that adds support for translated keys, templates and posts.}
|
12
|
+
spec.summary = %q{I18n plugin for Jekyll and Octopress}
|
13
13
|
spec.homepage = "https://github.com/screeninteraction/jekyll-multiple-languages-plugin/"
|
14
14
|
spec.license = "MPL2"
|
15
15
|
|
@@ -4,11 +4,14 @@ module Jekyll
|
|
4
4
|
class Site
|
5
5
|
alias :process_org :process
|
6
6
|
def process
|
7
|
+
if !self.config['baseurl']
|
8
|
+
self.config['baseurl'] = ""
|
9
|
+
end
|
7
10
|
#Variables
|
8
|
-
|
9
|
-
|
10
|
-
baseurl_org = self.baseurl
|
11
|
+
config['baseurl_root'] = self.config['baseurl']
|
12
|
+
baseurl_org = self.config['baseurl']
|
11
13
|
languages = self.config['languages']
|
14
|
+
dest_org = self.dest
|
12
15
|
|
13
16
|
#Loop
|
14
17
|
self.config['lang'] = languages.first
|
@@ -19,15 +22,13 @@ module Jekyll
|
|
19
22
|
|
20
23
|
# Build site for language lang
|
21
24
|
self.dest = self.dest + "/" + lang
|
22
|
-
self.baseurl = self.baseurl + "/" + lang
|
23
|
-
self.config['baseurl'] = self.baseurl
|
25
|
+
self.config['baseurl'] = self.config['baseurl'] + "/" + lang
|
24
26
|
self.config['lang'] = lang
|
25
27
|
puts "Building site for language: \"#{self.config['lang']}\" to: " + self.dest
|
26
28
|
process_org
|
27
29
|
|
28
30
|
#Reset variables for next language
|
29
31
|
self.dest = dest_org
|
30
|
-
self.baseurl = baseurl_org
|
31
32
|
self.config['baseurl'] = baseurl_org
|
32
33
|
end
|
33
34
|
puts 'Build complete'
|
@@ -51,47 +52,6 @@ module Jekyll
|
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
54
|
-
class LocalizeInclude < Jekyll::Tags::IncludeTag
|
55
|
-
def render(context)
|
56
|
-
if "#{context[@file]}" != "" #Check for page variable
|
57
|
-
file = "#{context[@file]}"
|
58
|
-
else
|
59
|
-
file = @file
|
60
|
-
end
|
61
|
-
|
62
|
-
includes_dir = File.join(context.registers[:site].source, '_i18n/' + context.registers[:site].config['lang'])
|
63
|
-
|
64
|
-
if File.symlink?(includes_dir)
|
65
|
-
return "Includes directory '#{includes_dir}' cannot be a symlink"
|
66
|
-
end
|
67
|
-
if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./
|
68
|
-
return "Include file '#{file}' contains invalid characters or sequences"
|
69
|
-
end
|
70
|
-
|
71
|
-
Dir.chdir(includes_dir) do
|
72
|
-
choices = Dir['**/*'].reject { |x| File.symlink?(x) }
|
73
|
-
if choices.include?(file)
|
74
|
-
source = File.read(file)
|
75
|
-
partial = Liquid::Template.parse(source)
|
76
|
-
|
77
|
-
context.stack do
|
78
|
-
context['include'] = parse_params(context) if @params
|
79
|
-
contents = partial.render(context)
|
80
|
-
site = context.registers[:site]
|
81
|
-
ext = File.extname(file)
|
82
|
-
|
83
|
-
converter = site.converters.find { |c| c.matches(ext) }
|
84
|
-
contents = converter.convert(contents) unless converter.nil?
|
85
|
-
|
86
|
-
contents
|
87
|
-
end
|
88
|
-
else
|
89
|
-
"Included file '#{file}' not found in #{includes_dir} directory"
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
55
|
class LocalizeTag < Liquid::Tag
|
96
56
|
|
97
57
|
def initialize(tag_name, key, tokens)
|
@@ -124,9 +84,52 @@ module Jekyll
|
|
124
84
|
end
|
125
85
|
end
|
126
86
|
end
|
87
|
+
|
88
|
+
module Tags
|
89
|
+
class LocalizeInclude < IncludeTag
|
90
|
+
def render(context)
|
91
|
+
if "#{context[@file]}" != "" #Check for page variable
|
92
|
+
file = "#{context[@file]}"
|
93
|
+
else
|
94
|
+
file = @file
|
95
|
+
end
|
96
|
+
|
97
|
+
includes_dir = File.join(context.registers[:site].source, '_i18n/' + context.registers[:site].config['lang'])
|
98
|
+
|
99
|
+
if File.symlink?(includes_dir)
|
100
|
+
return "Includes directory '#{includes_dir}' cannot be a symlink"
|
101
|
+
end
|
102
|
+
if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./
|
103
|
+
return "Include file '#{file}' contains invalid characters or sequences"
|
104
|
+
end
|
105
|
+
|
106
|
+
Dir.chdir(includes_dir) do
|
107
|
+
choices = Dir['**/*'].reject { |x| File.symlink?(x) }
|
108
|
+
if choices.include?(file)
|
109
|
+
source = File.read(file)
|
110
|
+
partial = Liquid::Template.parse(source)
|
111
|
+
|
112
|
+
context.stack do
|
113
|
+
context['include'] = parse_params(context) if @params
|
114
|
+
contents = partial.render(context)
|
115
|
+
site = context.registers[:site]
|
116
|
+
ext = File.extname(file)
|
117
|
+
|
118
|
+
converter = site.converters.find { |c| c.matches(ext) }
|
119
|
+
contents = converter.convert(contents) unless converter.nil?
|
120
|
+
|
121
|
+
contents
|
122
|
+
end
|
123
|
+
else
|
124
|
+
"Included file '#{file}' not found in #{includes_dir} directory"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
127
130
|
end
|
128
131
|
|
129
132
|
Liquid::Template.register_tag('t', Jekyll::LocalizeTag)
|
130
|
-
Liquid::Template.register_tag('tf', Jekyll::LocalizeInclude)
|
131
133
|
Liquid::Template.register_tag('translate', Jekyll::LocalizeTag)
|
132
|
-
Liquid::Template.register_tag('
|
134
|
+
Liquid::Template.register_tag('tf', Jekyll::Tags::LocalizeInclude)
|
135
|
+
Liquid::Template.register_tag('translate_file', Jekyll::Tags::LocalizeInclude)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-multiple-languages-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Kurtsson
|
@@ -38,7 +38,8 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description:
|
41
|
+
description: Plugin for Jekyll and Octopress that adds support for translated keys,
|
42
|
+
templates and posts.
|
42
43
|
email:
|
43
44
|
- martin.kurtsson@screeninteraction.com
|
44
45
|
executables: []
|
@@ -96,8 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
97
|
version: '0'
|
97
98
|
requirements: []
|
98
99
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.2.0
|
100
101
|
signing_key:
|
101
102
|
specification_version: 4
|
102
|
-
summary: I18n plugin for Jekyll
|
103
|
+
summary: I18n plugin for Jekyll and Octopress
|
103
104
|
test_files: []
|