jekyll-multiple-languages-plugin 1.6.1 → 1.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0b3312ac834bde327dd7fc94194998efed8074f344607ef5e7dcad99d0ed44d
4
- data.tar.gz: 45f17b6bedf4e0913a15f8a7992ebefb14a6fdc5dbfc4644c9b75205544b91ff
3
+ metadata.gz: 9f3a2a500acf67ad5bea871232433bab2c4fee41366f0d59864e09256121eecf
4
+ data.tar.gz: 2c9a1a596557ecd8aea38c07e0607d5e104e4c755b1f41c01fd14b9355d75f30
5
5
  SHA512:
6
- metadata.gz: 4a8a704e89521a3a3306e81c16cdf4b291141d75f5743303e42703a9040a9592029c8e06cb32ab72036127646bdb9d4959580c0e48360c85f4943e870e11aa31
7
- data.tar.gz: 50036c5ea37b033f66e825f78e568b6fd011d2ebcb525b4c20e0f6cf092c6a2e4bce701a76cddd11f4aa4d0b89c53aefcb1749078192cb1b4739ec72a6e7039f
6
+ metadata.gz: f94a3062d46cbcfe28d878073e539ebf675494021e16d0bb96297878720a9c8b449f7d4a12b1d04bfc8a717178eb828bf7a15428842e5772412643099d5dbdfd
7
+ data.tar.gz: 9e11ecf14870bbf6655d0ed407d83409ce87c57880e5ceac803d0236bc56c222b7d1af9cba901861edf23303b3db8a92dcdcc3ef50e3260dfde766a757f71c39
data/README.md CHANGED
@@ -19,7 +19,7 @@ Table of Contents
19
19
  -----------------
20
20
  - [Jekyll Multiple Languages Plugin](#jekyll-multiple-languages-plugin)
21
21
  - [Badges](#badges)
22
- - [!! We are looking for more maintainers !!](#we-are-looking-for-more-maintainers)
22
+ - [!! We are looking for more maintainers !!](#-we-are-looking-for-more-maintainers-)
23
23
  - [Table of Contents](#table-of-contents)
24
24
  - [1. Current Release Notice](#1-current-release-notice)
25
25
  - [2. Features](#2-features)
@@ -28,7 +28,7 @@ Table of Contents
28
28
  - [3.2. Manually](#32-manually)
29
29
  - [3.3. As a Git Submodule](#33-as-a-git-submodule)
30
30
  - [4. Configuration](#4-configuration)
31
- - [4.1. _config.yml](#41-configyml)
31
+ - [4.1. _config.yml](#41-_configyml)
32
32
  - [4.2. Folder structure](#42-folder-structure)
33
33
  - [5. Usage](#5-usage)
34
34
  - [5.1. Translating strings](#51-translating-strings)
@@ -141,6 +141,12 @@ In code, these specific files should be referenced via `baseurl_root`. E.g.
141
141
  <link rel="stylesheet" href="{{ "/css/bootstrap.css" | prepend: site.baseurl_root }}"/>
142
142
  ```
143
143
 
144
+ If you wish to avoid having the default_lang built into the root of your website, use:
145
+
146
+ ```yaml
147
+ default_locale_in_subfolder: true
148
+ ```
149
+
144
150
  ### 4.2. Folder structure
145
151
  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`:
146
152
 
@@ -186,14 +192,36 @@ or
186
192
  {% translate global.english %}
187
193
  ```
188
194
 
189
- You can also access translated strings by accessing the `site.translations` hash, this allows you to loop through your translations within Liquid:
195
+ You can also access translated strings by accessing the `site.translations` hash, this allows you to loop through your translations within Liquid using the translated string's index:
190
196
 
191
197
  ```liquid
192
- {% for item in site.translations[site.lang]["my_nested_yaml_collection"] %}
198
+ {% for item in site.translations[site.lang].my_nested_yaml_collection %}
193
199
  <p>{{ item[0] }} -> {{ item[1] }}</p>
194
200
  {% endfor %}
195
201
  ```
196
202
 
203
+ or the translated string's assignment:
204
+
205
+ ```yaml
206
+ my_nested_yaml_collection:
207
+ -
208
+ title: First
209
+ message: Message
210
+ -
211
+ title: Second
212
+ message: Message
213
+
214
+ ```
215
+
216
+ ```liquid
217
+ {% for item in site.translations[site.lang].my_nested_yaml_collection %}
218
+ <li>
219
+ <h2>{{ item["title"] }}</h2>
220
+ <p>{{ item["message"] }}</p>
221
+ </li>
222
+ {% endfor %}
223
+ ```
224
+
197
225
  ### 5.2. Including translated files
198
226
  The plugin also supports using different markdown files for different languages using the liquid tag:
199
227
 
@@ -369,6 +397,11 @@ Then, create a file named `about.md` under `_i18n/en` with the English content.
369
397
 
370
398
 
371
399
  ## 8. Changelog
400
+ * 1.7.0
401
+ * Option to build the default language into a subfolder
402
+ * Configurable verbosity
403
+ * Improved documentation
404
+ * Removed deprecation warning
372
405
  * 1.6.1
373
406
  * Improved testing
374
407
  * Support for Jekyll 4
@@ -24,6 +24,46 @@ module Jekyll
24
24
  puts "Loading translation from file #{site.source}/_i18n/#{lang}.yml"
25
25
  site.parsed_translations[lang] = YAML.load_file("#{site.source}/_i18n/#{lang}.yml")
26
26
  end
27
+
28
+ #*****************************************************************************
29
+ # :site, :post_write hook
30
+ #*****************************************************************************
31
+ Jekyll::Hooks.register :site, :post_write do |site|
32
+
33
+ # Moves excluded paths from the default lang subfolder to the root folder
34
+ #===========================================================================
35
+ default_lang = site.config["default_lang"]
36
+ current_lang = site.config["lang"]
37
+ exclude_paths = site.config["exclude_from_localizations"]
38
+
39
+ if (default_lang == current_lang && site.config["default_locale_in_subfolder"])
40
+ files = Dir.glob(File.join("_site/" + current_lang + "/", "*"))
41
+ files.each do |file_path|
42
+ parts = file_path.split('/')
43
+ f_path = parts[2..-1].join('/')
44
+ if (f_path == 'base.html')
45
+ new_path = parts[0] + "/index.html"
46
+ puts "Moving '" + file_path + "' to '" + new_path + "'"
47
+ File.rename file_path, new_path
48
+ else
49
+ exclude_paths.each do |exclude_path|
50
+ if (exclude_path == f_path)
51
+ new_path = parts[0] + "/" + f_path
52
+ puts "Moving '" + file_path + "' to '" + new_path + "'"
53
+ if (Dir.exists?(new_path))
54
+ FileUtils.rm_r new_path
55
+ end
56
+ File.rename file_path, new_path
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ #===========================================================================
64
+
65
+ end
66
+
27
67
  Jekyll::Hooks.register :site, :post_render do |site, payload|
28
68
 
29
69
  # Removes all static files that should not be copied to translated sites.
@@ -34,10 +74,12 @@ module Jekyll
34
74
  static_files = payload["site"]["static_files"]
35
75
  exclude_paths = payload["site"]["exclude_from_localizations"]
36
76
 
77
+ default_locale_in_subfolder = site.config["default_locale_in_subfolder"]
37
78
 
38
79
  if default_lang != current_lang
39
80
  static_files.delete_if do |static_file|
40
-
81
+ next true if (static_file.name == 'base.html' && default_locale_in_subfolder)
82
+
41
83
  # Remove "/" from beginning of static file relative path
42
84
  if static_file.instance_variable_get(:@relative_path) != nil
43
85
  static_file_r_path = static_file.instance_variable_get(:@relative_path).dup
@@ -81,6 +123,8 @@ module Jekyll
81
123
  self.parsed_translations ||= {}
82
124
 
83
125
  self.config['exclude_from_localizations'] ||= []
126
+
127
+ self.config['default_locale_in_subfolder'] ||= false
84
128
 
85
129
  if ( !self.config['languages'] or
86
130
  self.config['languages'].empty? or
@@ -108,26 +152,20 @@ module Jekyll
108
152
  self.config['baseurl_root'] = baseurl_org # Baseurl of website root (without the appended language code)
109
153
  self.config['translations'] = self.parsed_translations # Hash that stores parsed translations read from YAML files. Exposes this hash to Liquid.
110
154
 
111
-
112
- # Build the website for default language
113
- #-------------------------------------------------------------------------
114
- puts "Building site for default language: \"#{self.config['lang']}\" to: #{self.dest}"
115
-
116
- process_org
117
-
118
-
119
- # Build the website for the other languages
155
+ # Build the website for all languages
120
156
  #-------------------------------------------------------------------------
121
157
 
122
158
  # Remove .htaccess file from included files, so it wont show up on translations folders.
123
159
  self.include -= [".htaccess"]
124
160
 
125
- languages.drop(1).each do |lang|
161
+ languages.each do |lang|
126
162
 
127
163
  # Language specific config/variables
128
- @dest = dest_org + "/" + lang
129
- self.config['baseurl'] = baseurl_org + "/" + lang
130
- self.config['lang'] = lang
164
+ if lang != self.config['default_lang'] || self.config['default_locale_in_subfolder']
165
+ @dest = dest_org + "/" + lang
166
+ self.config['baseurl'] = baseurl_org + "/" + lang
167
+ self.config['lang'] = lang
168
+ end
131
169
 
132
170
  puts "Building site for language: \"#{self.config['lang']}\" to: #{self.dest}"
133
171
 
@@ -324,8 +362,10 @@ module Jekyll
324
362
  if translation.nil? or translation.empty?
325
363
  translation = site.parsed_translations[site.config['default_lang']].access(key)
326
364
 
327
- puts "Missing i18n key: #{lang}:#{key}"
328
- puts "Using translation '%s' from default language: %s" %[translation, site.config['default_lang']]
365
+ if site.config["verbose"]
366
+ puts "Missing i18n key: #{lang}:#{key}"
367
+ puts "Using translation '%s' from default language: %s" %[translation, site.config['default_lang']]
368
+ end
329
369
  end
330
370
 
331
371
  translation
@@ -400,6 +440,25 @@ module Jekyll
400
440
  end
401
441
  end
402
442
  end
443
+
444
+ # Override of core Jekyll functionality, to get rid of deprecation
445
+ # warning. See https://github.com/jekyll/jekyll/pull/7117 for more
446
+ # details.
447
+ class PostComparer
448
+ def initialize(name)
449
+ @name = name
450
+
451
+ all, @path, @date, @slug = *name.sub(%r!^/!, "").match(MATCHER)
452
+ unless all
453
+ raise Jekyll::Errors::InvalidPostNameError,
454
+ "'#{name}' does not contain valid date and/or title."
455
+ end
456
+
457
+ escaped_slug = Regexp.escape(slug)
458
+ @name_regex = %r!_posts/#{path}#{date}-#{escaped_slug}\.[^.]+|
459
+ ^#{path}_posts/?#{date}-#{escaped_slug}\.[^.]+!x
460
+ end
461
+ end
403
462
  end
404
463
 
405
464
 
@@ -444,7 +503,7 @@ module Jekyll
444
503
  pages = site.pages
445
504
  url = "";
446
505
 
447
- if default_lang != lang
506
+ if default_lang != lang || site.config['default_locale_in_subfolder']
448
507
  baseurl = baseurl + "/" + lang
449
508
  end
450
509
 
@@ -1,6 +1,6 @@
1
1
  module Jekyll
2
2
  module MultipleLanguagesPlugin
3
- VERSION = "1.6.1"
3
+ VERSION = "1.7.0"
4
4
  end
5
5
  end
6
6
 
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.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Kurtsson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-14 00:00:00.000000000 Z
12
+ date: 2020-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -43,16 +43,16 @@ dependencies:
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: 12.3.3
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: 12.3.3
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: jekyll
58
58
  requirement: !ruby/object:Gem::Requirement