jekyll-multiple-languages-plugin 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +122 -54
- data/lib/jekyll-multiple-languages-plugin.rb +1 -0
- data/lib/plugin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a24d785fff6763046ceeea5785d3ad0000496f16
|
4
|
+
data.tar.gz: 6a5db73c7439aee25ceb892d34ebf8d6466c0d6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 540e03c839745d68f91383dcbee1026dedf31e6f7c6e5c02962dea1db63a71f34fd4647ab20db081e1f33f1148cd588c812ecb825ccb2d9d8b2fcc4861577b10
|
7
|
+
data.tar.gz: 9b5ae238698d5412448618779a616522c1e065912ee114ac5e36950b107d8a0cf97a5e4a6d8c0948502e5648f07ddaafdd51aaf5d360940471e733667dcda724
|
data/README.md
CHANGED
@@ -1,46 +1,76 @@
|
|
1
1
|
# Jekyll Multiple Languages Plugin
|
2
2
|
|
3
|
-
Jekyll Multiple Languages
|
3
|
+
![Jekyll Multiple Languages Plugin](brand/jekyll_multiple_languages_plugin_logo.png)
|
4
4
|
|
5
|
-
|
5
|
+
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 subfolders with the same name as the language it contains.
|
6
|
+
|
7
|
+
The plugin was developed as a utility at [Screen Interaction](http://www.screeninteraction.com)
|
6
8
|
|
7
9
|
### Gem [![Gem Version](https://badge.fury.io/rb/jekyll-multiple-languages-plugin.png)](http://badge.fury.io/rb/jekyll-multiple-languages-plugin)
|
8
10
|
|
9
11
|
|
10
12
|
|
11
|
-
|
13
|
+
Table of Contents
|
14
|
+
-----------------
|
15
|
+
* [1\. Current Release Notice](#1-current-release-notice)
|
16
|
+
* [2\. Features](#2-features)
|
17
|
+
* [3\. Installation](#3-installation)
|
18
|
+
* [3\.1\. Using the gem](#31-using-the-gem)
|
19
|
+
* [3\.2\. Manually](#32-manually)
|
20
|
+
* [3\.3\. As a Git Submodule](#33-as-a-git-submodule)
|
21
|
+
* [4\. Configuration](#4-configuration)
|
22
|
+
* [4\.1\. \_config\.yml](#41-_configyml)
|
23
|
+
* [4\.2\. Folder structure](#42-folder-structure)
|
24
|
+
* [5\. Usage](#5-usage)
|
25
|
+
* [5\.1\. Translating strings](#51-translating-strings)
|
26
|
+
* [5\.2\. Including translated files](#52-including-translated-files)
|
27
|
+
* [5\.3\. Permalinks and Translating Links](#53-permalinks-and-translating-links)
|
28
|
+
* [5\.4\. i18n in templates](#54-i18n-in-templates)
|
29
|
+
* [5\.5\. Link between languages](#55-link-between-languages)
|
30
|
+
* [5\.6\. Creating pages](#56-creating-pages)
|
31
|
+
* [7\. Example website](#7-example-website)
|
32
|
+
* [7\.1\. Adding a new language](#71-adding-a-new-language)
|
33
|
+
* [7\.2\. Adding new page](#72-adding-new-page)
|
34
|
+
* [8\. Changelog](#8-changelog)
|
35
|
+
* [9\. Contributing](#9-contributing)
|
36
|
+
* [Contributors](#contributors)
|
37
|
+
* [Created by](#created-by)
|
38
|
+
* [Maintained by](#maintained-by)
|
39
|
+
* [10\. Other Language Plugins](#10-other-language-plugins)
|
40
|
+
|
41
|
+
## 1. Current Release Notice
|
12
42
|
|
13
43
|
1.4.1 is the current stable release.
|
14
44
|
|
15
45
|
Users that update from older versions to 1.4.0 or newer must change their `_config.yml` for the plugin to be loaded. Please see the `Installation` section bellow for the new string used to load the plugin.
|
16
46
|
|
17
|
-
The plugin now works with Jekyll 3, but it's
|
47
|
+
The plugin now works with Jekyll 3, but it's backward compatible with Jekyll 2.
|
18
48
|
Please note that it was only tested with Jekyll 2.5.3 and 3.1.3.
|
19
49
|
|
20
|
-
The support for Octopress is dropped, but the plugin still
|
21
|
-
Octopress 3 now has
|
50
|
+
The support for Octopress is dropped, but the plugin should still work with it since Octopress core is Jekyll.
|
51
|
+
Octopress 3 now has its own multi languages plugin: https://github.com/octopress/multilingual
|
22
52
|
|
23
53
|
|
24
54
|
|
25
|
-
## Features
|
55
|
+
## 2. Features
|
26
56
|
* Works with Jekyll 2.5.3 and 3.1.3
|
27
57
|
* Supports multiple languages with the same code base.
|
28
58
|
* Supports all template languages that your Liquid pipeline supports.
|
29
59
|
* Uses [Liquid tags](https://github.com/Shopify/liquid) in your HTML for including translated strings.
|
30
60
|
* Compiles the site multiple times for all supported languages into separate subfolders.
|
31
61
|
* Works with the --watch flag turned on and will rebuild all languages automatically.
|
32
|
-
* Contains an example
|
62
|
+
* Contains an example website, thanks to [@davrandom](https://github.com/davrandom/)
|
33
63
|
* Supports translated keys in YAML format
|
34
64
|
* Supports translated template files
|
35
65
|
* Supports translated links
|
36
66
|
|
37
67
|
|
38
68
|
|
39
|
-
## Installation
|
69
|
+
## 3. Installation
|
40
70
|
|
41
|
-
### Using the gem
|
71
|
+
### 3.1. Using the gem
|
42
72
|
|
43
|
-
This plugin is available as a
|
73
|
+
This plugin is available as a Ruby gem, https://rubygems.org/gems/jekyll-multiple-languages-plugin.
|
44
74
|
|
45
75
|
Add this line to your application's Gemfile:
|
46
76
|
|
@@ -60,12 +90,12 @@ gems:
|
|
60
90
|
```
|
61
91
|
See the [Jekyll configuration documentation](http://jekyllrb.com/docs/configuration) for details.
|
62
92
|
|
63
|
-
### Manually
|
93
|
+
### 3.2. Manually
|
64
94
|
1. Download the repository with Git or your preferred method.
|
65
|
-
2. Inside your Jekyll `_plugins` folder create a new folder called `jekyll-multiple-languages-plugin`.
|
95
|
+
2. Inside your Jekyll `_plugins` folder, create a new folder called `jekyll-multiple-languages-plugin`.
|
66
96
|
3. Copy or link the directory `lib`, that is inside the downloaded repository, into your `_plugins/jekyll-multiple-languages-plugin` folder of your Jekyll project.
|
67
97
|
|
68
|
-
### As a Git Submodule
|
98
|
+
### 3.3. As a Git Submodule
|
69
99
|
|
70
100
|
If your Jekyll project is in a git repository, you can easily manage your plugins by utilizing git submodules.
|
71
101
|
|
@@ -84,15 +114,15 @@ $ git pull origin master
|
|
84
114
|
|
85
115
|
|
86
116
|
|
87
|
-
## Configuration
|
88
|
-
### _config.yml
|
117
|
+
## 4. Configuration
|
118
|
+
### 4.1. _config.yml
|
89
119
|
Add the languages available in your website into your _config.yml (obligatory):
|
90
120
|
|
91
121
|
```yaml
|
92
122
|
languages: ["sv", "en", "de", "fr"]
|
93
123
|
```
|
94
124
|
|
95
|
-
The first language in the array will be the default language, English, German and French will be added
|
125
|
+
The first language in the array will be the default language, English, German and French will be added into separate subfolders.
|
96
126
|
|
97
127
|
To avoid redundancy, it is possible to exclude files and folders from being copied to the localization folders.
|
98
128
|
|
@@ -105,7 +135,7 @@ In code, these specific files should be referenced via `baseurl_root`. E.g.
|
|
105
135
|
<link rel="stylesheet" href="{{ "/css/bootstrap.css" | prepend: site.baseurl_root }}"/>
|
106
136
|
```
|
107
137
|
|
108
|
-
### Folder structure
|
138
|
+
### 4.2. Folder structure
|
109
139
|
Create a folder called `_i18n` and add sub-folders for each language, using the same names used on the `languages` setting on the `_config.yml`:
|
110
140
|
|
111
141
|
- /_i18n/sv.yml
|
@@ -119,9 +149,9 @@ Create a folder called `_i18n` and add sub-folders for each language, using the
|
|
119
149
|
|
120
150
|
|
121
151
|
|
122
|
-
## Usage
|
123
|
-
### Translating strings
|
124
|
-
To add a translated string into your web page use one of these liquid tags:
|
152
|
+
## 5. Usage
|
153
|
+
### 5.1. Translating strings
|
154
|
+
To add a translated string into your web page, use one of these liquid tags:
|
125
155
|
|
126
156
|
```liquid
|
127
157
|
{% t key %}
|
@@ -135,14 +165,14 @@ The language.yml files are written in YAML syntax which caters for a simple grou
|
|
135
165
|
|
136
166
|
```yaml
|
137
167
|
global:
|
138
|
-
|
139
|
-
|
168
|
+
swedish: Svenska
|
169
|
+
english: English
|
140
170
|
pages:
|
141
|
-
|
142
|
-
|
171
|
+
home: Home
|
172
|
+
work: Work
|
143
173
|
```
|
144
174
|
|
145
|
-
To access the english key, use one of these tag:
|
175
|
+
To access the `english` key, use one of these tag:
|
146
176
|
|
147
177
|
```liquid
|
148
178
|
{% t global.english %}
|
@@ -150,7 +180,15 @@ or
|
|
150
180
|
{% translate global.english %}
|
151
181
|
```
|
152
182
|
|
153
|
-
|
183
|
+
You can also access translated strings by accesing the `site.translations` hash, this allows you to loop trough your translations within Liquid:
|
184
|
+
|
185
|
+
```liquid
|
186
|
+
{% for item in site.translations[site.lang]["my_nested_yaml_collection"] %}
|
187
|
+
<p>{{ item[0] }} -> {{ item[1] }}</p>
|
188
|
+
{% endfor %}
|
189
|
+
```
|
190
|
+
|
191
|
+
### 5.2. Including translated files
|
154
192
|
The plugin also supports using different markdown files for different languages using the liquid tag:
|
155
193
|
|
156
194
|
```liquid
|
@@ -159,16 +197,16 @@ or
|
|
159
197
|
{% translate_file pagename/blockname.md %}
|
160
198
|
```
|
161
199
|
|
162
|
-
This plugin
|
200
|
+
This plugin has exactly the same support and syntax as the Jekyll's built in liquid tag:
|
163
201
|
|
164
202
|
```liquid
|
165
203
|
{% include file %}
|
166
204
|
```
|
167
205
|
|
168
|
-
so plugins that
|
206
|
+
so plugins that extend its functionality should be picked up by this plugin as well.
|
169
207
|
|
170
|
-
### Permalinks and Translating Links
|
171
|
-
To use localized pages with permalinks, you must provide a
|
208
|
+
### 5.3. Permalinks and Translating Links
|
209
|
+
To use localized pages with permalinks, you must provide a default `permalink` and the language specific permalinks, for example, `permalink_fr` for French.
|
172
210
|
|
173
211
|
To translate links, you must also add a **unique namespace** on the YAML front matter along with the permalinks.
|
174
212
|
|
@@ -188,31 +226,31 @@ permalink_fr: /equipe/
|
|
188
226
|
And then you can use the translate link liquid tag like this:
|
189
227
|
|
190
228
|
```liquid
|
191
|
-
<a href="{% tl team %}"> <!--This link will return /team if we are in the
|
229
|
+
<a href="{% tl team %}"> <!--This link will return /team if we are in the English version of the website and /fr/equipe if it's the French version</a>-->
|
192
230
|
|
193
231
|
<a href="{% tl team fr %}"> <!--This link will always return /fr/equipe</a>-->
|
194
232
|
|
195
233
|
or the longer version:
|
196
234
|
|
197
|
-
<a href="{% translate_link team %}"> <!--This link will return /team if we are in the
|
235
|
+
<a href="{% translate_link team %}"> <!--This link will return /team if we are in the English version of the website and /fr/equipe if it's the french version</a>-->
|
198
236
|
|
199
237
|
<a href="{% translate_link team fr %}"> <!--This link will always return /fr/equipe</a>-->
|
200
238
|
```
|
201
239
|
|
202
|
-
### i18n in templates
|
203
|
-
Sometimes it is convenient to add keys even in template files. This works in the exact same way as in ordinary files, however sometimes it can be useful to include different string in different pages even if they use the same template.
|
240
|
+
### 5.4. i18n in templates
|
241
|
+
Sometimes it is convenient to add keys even in template files. This works in the exact same way as in ordinary files, however sometimes it can be useful to include a different string in different pages even if they use the same template.
|
204
242
|
|
205
243
|
A perfect example is this:
|
206
244
|
|
207
245
|
```html
|
208
246
|
<html>
|
209
|
-
|
210
|
-
|
211
|
-
|
247
|
+
<head>
|
248
|
+
<title>{% t page.title %}</title>
|
249
|
+
</head>
|
212
250
|
</html>
|
213
251
|
```
|
214
252
|
|
215
|
-
So how can I add different translated titles to all pages? Don't worry, it's easy. The Multiple Languages plugin supports Liquid variables as well as strings so define a page variable in your page definition
|
253
|
+
So how can I add different translated titles to all pages? Don't worry, it's easy. The Multiple Languages plugin supports Liquid variables, as well as strings so, define a page variable in your page definition
|
216
254
|
|
217
255
|
```yaml
|
218
256
|
---
|
@@ -225,12 +263,12 @@ and `<title>{% t page.title %}</title>` will pick up the `titles.home` key from
|
|
225
263
|
|
226
264
|
```yaml
|
227
265
|
titles:
|
228
|
-
|
266
|
+
home: "Home"
|
229
267
|
```
|
230
268
|
|
231
269
|
|
232
270
|
|
233
|
-
### Link between languages
|
271
|
+
### 5.5. Link between languages
|
234
272
|
This plugin gives you the variables
|
235
273
|
|
236
274
|
```liquid
|
@@ -267,8 +305,8 @@ This snippet will create a link that will toggle between Swedish and English. A
|
|
267
305
|
|
268
306
|
|
269
307
|
|
270
|
-
### Creating pages
|
271
|
-
Depending on the theme, or your preferences, you need to create a "template" page
|
308
|
+
### 5.6. Creating pages
|
309
|
+
Depending on the theme, or your preferences, you need to create a "template" page in the root folder or in a folder (ex. `_pages`). Inside each page (in this example an `about.md`) you should have at least the following in the header and body:
|
272
310
|
|
273
311
|
```yaml
|
274
312
|
---
|
@@ -284,23 +322,23 @@ Inside each of the language folders, you should create mirror pages to provide t
|
|
284
322
|
|
285
323
|
|
286
324
|
|
287
|
-
## Example website
|
325
|
+
## 7. Example website
|
288
326
|
|
289
327
|
This repository has an example website where you can test the plugin.
|
290
328
|
After downloading the repository, get into the `example` directory and run: `bundle install` to install the newest version of Jekyll (change the Gemfile to install another version), the plugin, and all other dependencies.
|
291
329
|
|
292
330
|
Then run `bundle exec jekyll serve` to start the Jekyll server. Using your web browser, access the address `http://localhost:4000`.
|
293
331
|
|
294
|
-
### Adding a new language
|
332
|
+
### 7.1. Adding a new language
|
295
333
|
|
296
|
-
Imagine you want to add German pages on the test website. First, add a
|
334
|
+
Imagine you want to add German pages on the test website. First, add a new language to the list of languages on `_config.yml`:
|
297
335
|
```ruby
|
298
336
|
languages: ["it", "en", "es", "de"]
|
299
337
|
```
|
300
338
|
|
301
|
-
Create a new folder for the language under the `_i18n` folder and add a markdown file containing the translation, just like on the other
|
339
|
+
Create a new folder for the language under the `_i18n` folder and add a markdown file containing the translation, just like on the other language folders, and you're done.
|
302
340
|
|
303
|
-
### Adding new page
|
341
|
+
### 7.2. Adding new page
|
304
342
|
|
305
343
|
Let's say you want to create an about page for the example website, you will create an `about.html` page on the root of the website (same place as index.html), with this:
|
306
344
|
|
@@ -318,7 +356,9 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
|
|
318
356
|
|
319
357
|
|
320
358
|
|
321
|
-
## Changelog
|
359
|
+
## 8. Changelog
|
360
|
+
* 1.4.2
|
361
|
+
* Exposes the `site.translations` hash containing the translated strings to Liquid.
|
322
362
|
* 1.4.1
|
323
363
|
* Fixes a bug during site regeneration where translation paths were being nested based on wrongly set Jekyll variables.
|
324
364
|
* 1.4.0
|
@@ -328,8 +368,8 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
|
|
328
368
|
* Code refactoring, cleanup and reorganization
|
329
369
|
* Files and folders reorganization
|
330
370
|
* Improved and fixed issues on the example website
|
331
|
-
*
|
332
|
-
*
|
371
|
+
* Improvements and fixes on documentations
|
372
|
+
* Improved license files
|
333
373
|
* 1.3.0
|
334
374
|
* Support for localized links and custom permalinks, thanks to [@jasonlemay](https://github.com/screeninteraction/jekyll-multiple-languages-plugin/pull/53)
|
335
375
|
* Support for excluding posts from translation, thanks to [@ctruelson](https://github.com/screeninteraction/jekyll-multiple-languages-plugin/pull/51)
|
@@ -342,7 +382,7 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
|
|
342
382
|
* 1.2.6
|
343
383
|
* Added fallback to default language, thanks to [@agramian](https://github.com/agramian)
|
344
384
|
* 1.2.5
|
345
|
-
* Fixed a bug when global variables
|
385
|
+
* Fixed a bug when global variables weren't as global as expected
|
346
386
|
* 1.2.4
|
347
387
|
* Fixed a bug when changes in .yml files got lost during live reload.
|
348
388
|
* 1.2.3
|
@@ -364,13 +404,13 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
|
|
364
404
|
* First release
|
365
405
|
|
366
406
|
|
367
|
-
## Contributing
|
407
|
+
## 9. Contributing
|
368
408
|
|
369
409
|
1. Fork it
|
370
410
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
371
411
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
372
412
|
4. Push to the branch (`git push origin my-new-feature`)
|
373
|
-
5. Create new Pull Request
|
413
|
+
5. Create a new Pull Request
|
374
414
|
|
375
415
|
### Contributors
|
376
416
|
| User | Contribution |
|
@@ -393,3 +433,31 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
|
|
393
433
|
### Maintained by
|
394
434
|
- [@kurtsson](https://github.com/kurtsson)
|
395
435
|
- [@Anthony-Gaudino](https://github.com/Anthony-Gaudino)
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
## 10. Other Language Plugins
|
440
|
+
Bellow is a list of other language plugins for Jekyll (2016/05/28):
|
441
|
+
|
442
|
+
**Seems to be maintained:**
|
443
|
+
|
444
|
+
* [Jekyll Language Plugin](https://github.com/vwochnik/jekyll-language-plugin)
|
445
|
+
* [Polyglot](https://github.com/untra/polyglot)
|
446
|
+
* [Jekyll Multiple Languages](https://github.com/liaohuqiu/jekyll-multiple-languages)
|
447
|
+
* [Octopress Multilingual](https://github.com/octopress/multilingual)
|
448
|
+
* [jekyll-i18n_tags](https://github.com/KrzysiekJ/jekyll-i18n_tags)
|
449
|
+
* [jekyll-task-i18n](https://github.com/ruby-gettext/jekyll-task-i18n)
|
450
|
+
|
451
|
+
**Seems to be unmaintained / abandoned:**
|
452
|
+
|
453
|
+
* [Jekyll-Multilingualism](https://github.com/aleiphoenix/jekyll-multilingualism)
|
454
|
+
* [Jekyll::Languages](https://github.com/janlindblom/jekyll-languages)
|
455
|
+
* [Jekyll I18n support](https://github.com/hendricius/jekyll-i18n)
|
456
|
+
* [jekyll-multilingual](https://github.com/drallgood/jekyll-multilingual)
|
457
|
+
* [jekyll-msgcat](https://github.com/gromnitsky/jekyll-msgcat)
|
458
|
+
* [jekyll-localize](https://github.com/incompl/jekyll-localize)
|
459
|
+
* [Jekyll i18n Filter](https://github.com/nelsonsar/jekyll-i18n-filter)
|
460
|
+
* [jekyll-localization](https://github.com/prometheus-ev/jekyll-localization)
|
461
|
+
* [Jekyll i18n](https://github.com/liamzebedee/jekyll-i18n)
|
462
|
+
|
463
|
+
This plugin will in the future try to merge all pertinent features of all those plugins into it.
|
@@ -63,6 +63,7 @@ module Jekyll
|
|
63
63
|
self.config['default_lang'] = languages.first # Default language (first language of array set on _config.yml)
|
64
64
|
self.config[ 'lang'] = languages.first # Current language being processed
|
65
65
|
self.config['baseurl_root'] = baseurl_org # Baseurl of website root (without the appended language code)
|
66
|
+
self.config['translations'] = self.parsed_translations # Hash that stores parsed translations read from YAML files. Exposes this hash to Liquid.
|
66
67
|
|
67
68
|
|
68
69
|
# Build the website for default language
|
data/lib/plugin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-multiple-languages-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Kurtsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|