jekyll-polyglot 1.10.0 → 1.11.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 +4 -4
- data/README.md +3 -3
- data/lib/jekyll/polyglot/liquid/tags/i18n_headers.rb +16 -4
- data/lib/jekyll/polyglot/patches/jekyll/site.rb +19 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3ca341e67c10066675cb10c5ded127cf9126c5db547d2f3fdfc3d545c43bd6a
|
4
|
+
data.tar.gz: 32315c6551ac56da248adb7d465c130d8f0ec4f03a7d589eb5e2081c1a420821
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b53d59e7090b20849d36cdfe6b54a6b0e40e40db839916f1df45c62f26b0ef541f43d30d88c3cbfcd0eb8e58ecc4e45b1f3ae1509cdd2aa0149aad4be41d9a95
|
7
|
+
data.tar.gz: 12a99dc155b5e4c7ba5f960e0267a90b547fa10576c9c3bf718784f139bf45b0da7554ac40e262b491aa113301eba5d1c16c2bb615fb901d26adf4cee90d0917
|
data/README.md
CHANGED
@@ -331,15 +331,15 @@ Feel free to open a PR and list your multilingual blog here you may want to shar
|
|
331
331
|
|
332
332
|
## 2.0 Roadmap
|
333
333
|
* [x] - **site language**: portuguese Brazil `pt-BR`
|
334
|
-
* [
|
335
|
-
* [
|
336
|
-
* [ ] - **site language**: japanese `ja`
|
334
|
+
* [x] - **site language**: arabic `ar`
|
335
|
+
* [x] - **site language**: japanese `ja`
|
337
336
|
* [x] - **site language**: russian `ru`
|
338
337
|
* [x] - **site language**: dutch `nl`
|
339
338
|
* [x] - **site language**: korean `ko`
|
340
339
|
* [x] - **site language**: hebrew `he`
|
341
340
|
* [x] - **site language**: chinese China `zh-CN`
|
342
341
|
* [ ] - **site language**: chinese Taiwan `zh-TW`
|
342
|
+
* [ ] - **site language**: portuguese Portugal `pt-PT`
|
343
343
|
* [ ] - get whitelisted as an official github-pages jekyll plugin
|
344
344
|
* [x] - update CI provider
|
345
345
|
|
@@ -33,17 +33,29 @@ module Jekyll
|
|
33
33
|
current_lang = site.active_lang
|
34
34
|
current_permalink = lang_to_permalink[current_lang] || (permalink_lang && permalink_lang[current_lang]) || permalink
|
35
35
|
current_permalink = "/#{current_permalink}" unless current_permalink.start_with?("/")
|
36
|
-
|
37
|
-
|
36
|
+
# Don't add language prefix if it's already in the permalink
|
37
|
+
canonical_permalink = if current_lang == site.default_lang
|
38
|
+
current_permalink
|
39
|
+
else
|
40
|
+
current_permalink.start_with?("/#{current_lang}/") ? current_permalink : "/#{current_lang}#{current_permalink}"
|
41
|
+
end
|
42
|
+
i18n += "<link rel=\"canonical\" href=\"#{site_url}#{canonical_permalink}\"/>\n"
|
43
|
+
|
44
|
+
# Get the default language permalink for x-default
|
45
|
+
default_lang_permalink = lang_to_permalink[site.default_lang] || (permalink_lang && permalink_lang[site.default_lang]) || permalink
|
46
|
+
default_lang_permalink = "/#{default_lang_permalink}" unless default_lang_permalink.start_with?("/")
|
38
47
|
|
39
48
|
site.languages.each do |lang|
|
40
49
|
alt_permalink = lang_to_permalink[lang] || (permalink_lang && permalink_lang[lang]) || permalink
|
41
50
|
alt_permalink = "/#{alt_permalink}" unless alt_permalink.start_with?("/")
|
42
51
|
i18n += if lang == site.default_lang
|
43
52
|
"<link rel=\"alternate\" hreflang=\"#{lang}\" href=\"#{site_url}#{alt_permalink}\"/>\n" \
|
44
|
-
"<link rel=\"alternate\" hreflang=\"x-default\" href=\"#{site_url}#{
|
53
|
+
"<link rel=\"alternate\" hreflang=\"x-default\" href=\"#{site_url}#{default_lang_permalink}\"/>\n"
|
45
54
|
else
|
46
|
-
|
55
|
+
# For non-default languages, use the language-specific permalink directly
|
56
|
+
# Don't add the language prefix if it's already in the permalink
|
57
|
+
lang_permalink = alt_permalink.start_with?("/#{lang}/") ? alt_permalink : "/#{lang}#{alt_permalink}"
|
58
|
+
"<link rel=\"alternate\" hreflang=\"#{lang}\" href=\"#{site_url}#{lang_permalink}\"/>\n"
|
47
59
|
end
|
48
60
|
end
|
49
61
|
i18n
|
@@ -64,7 +64,7 @@ module Jekyll
|
|
64
64
|
process_language lang
|
65
65
|
end
|
66
66
|
end
|
67
|
-
Jekyll::Hooks.trigger :polyglot, :post_write
|
67
|
+
Jekyll::Hooks.trigger :polyglot, :post_write, self
|
68
68
|
end
|
69
69
|
|
70
70
|
alias site_payload_orig site_payload
|
@@ -115,6 +115,16 @@ module Jekyll
|
|
115
115
|
string.split(regex)
|
116
116
|
end
|
117
117
|
|
118
|
+
# Convert glob pattern to regex pattern
|
119
|
+
# * matches any characters except /
|
120
|
+
# ? matches any single character except /
|
121
|
+
def glob_to_regex(pattern)
|
122
|
+
# Escape special regex characters first
|
123
|
+
escaped = Regexp.escape(pattern)
|
124
|
+
# Convert glob patterns to regex patterns
|
125
|
+
escaped.gsub("\\*", '.*').gsub("\\?", '.')
|
126
|
+
end
|
127
|
+
|
118
128
|
def derive_lang_from_path(doc)
|
119
129
|
unless @lang_from_path
|
120
130
|
return nil
|
@@ -236,10 +246,12 @@ module Jekyll
|
|
236
246
|
regex = ''
|
237
247
|
unless disabled
|
238
248
|
@exclude.each do |x|
|
239
|
-
|
249
|
+
escaped_x = glob_to_regex(x)
|
250
|
+
regex += "(?!#{escaped_x})"
|
240
251
|
end
|
241
252
|
@languages.each do |x|
|
242
|
-
|
253
|
+
escaped_x = Regexp.escape(x)
|
254
|
+
regex += "(?!#{escaped_x}/)"
|
243
255
|
end
|
244
256
|
end
|
245
257
|
start = disabled ? 'ferh' : 'href'
|
@@ -254,10 +266,12 @@ module Jekyll
|
|
254
266
|
regex = ''
|
255
267
|
unless disabled
|
256
268
|
@exclude.each do |x|
|
257
|
-
|
269
|
+
escaped_x = glob_to_regex(x)
|
270
|
+
regex += "(?!#{escaped_x})"
|
258
271
|
end
|
259
272
|
@languages.each do |x|
|
260
|
-
|
273
|
+
escaped_x = Regexp.escape(x)
|
274
|
+
regex += "(?!#{escaped_x}/)"
|
261
275
|
end
|
262
276
|
end
|
263
277
|
start = disabled ? 'ferh' : 'href'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-polyglot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Volin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|