jekyll-polyglot 1.8.1 → 1.9.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: 8d73df8783960d5b0262535d61bf824f185df2eb4d0c81e80ac37d2bb883cd4d
4
- data.tar.gz: 25478bc7da36ccf7771fd4eb32028d6ca54dee9d16254b88e883b1a8a797e861
3
+ metadata.gz: 58fab59c4c6aabba378edb4622f960b9ee2910c41e9b7cb329218cf4602bfaa2
4
+ data.tar.gz: 2a077894396baca9c8215a44abe6734abd9c1c00d0975259cf98380f77e72a10
5
5
  SHA512:
6
- metadata.gz: 2878206ca521985036740435fbf098c3d1b8570f4d54e8e16981356e5e1400e23c68b261b1bf0310bf700f20e738fccbc589773a8cb0d81129477529076f3f57
7
- data.tar.gz: 72bafd7617f5642c80d22522789d62670e453982dcb1b35df8cc9f9f514e5134ccad143cdb57ce8a6275648c0fa8271d157aa62159103ac071602d5a85df17bf
6
+ metadata.gz: 1c90c5e30bd2703cfab18b75b0a23d6a94350709dcd4d1acfade18497f4ce7bdddeba18cc9efd1cf527e3aeb5295e422e0108da10a12f556b2a007f5e57a26b6
7
+ data.tar.gz: fdda50a81bbbd06e90e4b170be83f207b01f1f66eeabea7b4aff68421bc5bbcdf124e3cccf737d01cfa59f48fb914121953140cdde9ecadd6f572b31c1ba08d7
data/README.md CHANGED
@@ -27,15 +27,16 @@ In your `_config.yml` file, add the following preferences
27
27
  ```YAML
28
28
  languages: ["en", "sv", "de", "fr"]
29
29
  default_lang: "en"
30
- exclude_from_localization: ["javascript", "images", "css", "public"]
30
+ exclude_from_localization: ["javascript", "images", "css", "public", "sitemap"]
31
31
  parallel_localization: true
32
+ url: https://polyglot.untra.io
32
33
  ```
33
34
  These configuration preferences indicate
34
35
  - what i18n languages you wish to support
35
36
  - what is your default "fallback" language for your content
36
- - what root level files/folders are excluded from localization, based
37
- on if their paths start with any of the excluded regexp substrings. (this is different from the jekyll `exclude: [ .gitignore ]` ; you should `exclude` files and directories in your repo you dont want in your built site at all, and `exclude_from_localization` files and directories you want to see in your built site, but not in your sublanguage sites.)
38
- - whether to run language processing in parallel or serial
37
+ - what root level files/folders are excluded from localization, based on if their paths start with any of the excluded regexp substrings. (this is different from the jekyll `exclude: [ .gitignore ]` ; you should `exclude` files and directories in your repo you dont want in your built site at all, and `exclude_from_localization` files and directories you want to see in your built site, but not in your sublanguage sites.)
38
+ - whether to run language processing in parallel or serial. Set to `false` if building on Windows hosts, or if Polyglot collides with other Jekyll plugins.
39
+ - your jekyll website production url. Make sure this value is set; Polyglot requires this to relative site urls correctly, and to make functioning language switchers.
39
40
 
40
41
  The optional `lang_from_path: true` option enables getting page
41
42
  language from the first or second path segment, e.g `de/first-one.md`, or
@@ -46,7 +47,7 @@ When adding new posts and pages, add to the YAML front matter:
46
47
  ```
47
48
  lang: sv
48
49
  ```
49
- or whatever appropriate [I18n language code](https://developer.chrome.com/webstore/i18n)
50
+ or whatever appropriate [I18n language code](https://developer.chrome.com/docs/extensions/reference/api/i18n#locales)
50
51
  the page should build for. And you're done. Ideally, when designing your site, you should
51
52
  organize files by their relative urls.
52
53
 
@@ -260,7 +261,7 @@ This plugin stands out from other I18n Jekyll plugins.
260
261
  - provides the liquid tag `{{ site.languages }}` to get an array of your I18n strings.
261
262
  - provides the liquid tag `{{ site.default_lang }}` to get the default_lang I18n string.
262
263
  - provides the liquid tag `{{ site.active_lang }}` to get the I18n language string the website was built for. Alternative names for `active_lang` can be configured via `config.lang_vars`.
263
- - provides the liquid tag `{{ I18n_Headers https://yourwebsite.com/ }}` to append SEO bonuses to your website.
264
+ - provides the liquid tag `{{ I18n_Headers }}` to append SEO bonuses to your website.
264
265
  - provides the liquid tag `{{ Unrelativized_Link href="/hello" }}` to make urls that do not get influenced by url correction regexes.
265
266
  - provides `site.data` localization for efficient rich text replacement.
266
267
  - a creator that will answer all of your questions and issues.
@@ -272,6 +273,13 @@ Jekyll-polyglot has a few spectacular [Search Engine Optimization techniques](ht
272
273
 
273
274
  See the example [sitemap.xml](/site/sitemap.xml) and [robots.txt](/site/robots.txt) for how to automatically generate a multi-language sitemap for your page and turn it in for the SEO i18n credit.
274
275
 
276
+ The [official Sitemap protocol documentation](https://www.sitemaps.org/protocol.html#location) states:
277
+ > "The location of a Sitemap file determines the set of URLs that can be included in that Sitemap. A Sitemap file located at http://example.com/catalog/sitemap.xml can include any URLs starting with http://example.com/catalog/ but can not include URLs starting with http://example.com/images/."
278
+
279
+ > "It is strongly recommended that you place your Sitemap at the root directory of your web server."
280
+
281
+ To comply with this, 'sitemap.xml' should be added to the 'exclude_from_localization' list to ensure that only one `sitemap.xml` file exists in the root directory, rather than creating separate ones for each language.
282
+
275
283
  ## Compatibility
276
284
  Currently supports Jekyll 3.0 , and Jekyll 4.0
277
285
  * Windows users will need to disable parallel_localization on their machines by setting `parallel_localization: false` in the `_config.yml`
@@ -291,17 +299,18 @@ If you have something you'd like to contribute to jekyll-polyglot, please open a
291
299
  These are talented and considerate software developers across the world that have lent their support to this project.
292
300
  **Thank You! ¡Gracias! Merci! Danke! 감사합니다! תודה רבה! Спасибо! Dankjewel! 谢谢!Obrigado!**
293
301
 
302
+ * [@yunseo-kim](https://github.com/yunseo-kim) [improved i18n sitemaps]((https://polyglot.untra.io/2025/01/18/polyglot-1.9.0/))
294
303
  * [@blackpill](https://github.com/blackpill) [1.8.1](https://polyglot.untra.io/2024/08/18/polyglot-1.8.1/)
295
304
  * [@hacketiwack](https://github.com/hacketiwack) [1.8.1](https://polyglot.untra.io/2024/08/18/polyglot-1.8.1/)
296
305
  * [@jerturowetz](https://github.com/jerturowetz) [sitemap generation](https://polyglot.untra.io/2024/03/17/polyglot-1.8.0/)
297
306
  * [@antoniovazquezblanco](https://github.com/antoniovazquezblanco) [1.7.0](https://polyglot.untra.io/2023/10/29/polyglot-1.7.0/)
298
- * [@salinatedcoffee](https://github.com/SalinatedCoffee) [ko support](https://polyglot.untra.io/2023/02/27/korean-support/)
299
- * [@aturret](https://github.com/aturret) [zh-CN support](https://polyglot.untra.io/2023/06/08/polyglot-1.6.0-chinese-support/)
307
+ * [@salinatedcoffee](https://github.com/SalinatedCoffee) [ko support](https://polyglot.untra.io/ko/2023/02/27/korean-support/)
308
+ * [@aturret](https://github.com/aturret) [zh-CN support](https://polyglot.untra.io/zh-CN/2023/06/08/polyglot-1.6.0-chinese-support/)
300
309
  * [@dougieh](https://github.com/dougieh) [1.5.1](https://polyglot.untra.io/2022/10/01/polyglot-1.5.1/)
301
- * [@pandermusubi](https://github.com/PanderMusubi) [nl support](https://polyglot.untra.io/2022/01/15/dutch-site-support/)
310
+ * [@pandermusubi](https://github.com/PanderMusubi) [nl support](https://polyglot.untra.io/nl/2022/01/15/dutch-site-support/)
302
311
  * [@obfusk](https://github.com/obfusk) [1.5.0](https://polyglot.untra.io/2021/07/17/polyglot-1.5.0/)
303
312
  * [@eighthave](https://github.com/eighthave) [1.5.0](https://polyglot.untra.io/2021/07/17/polyglot-1.5.0/)
304
- * [@george-gca](https://github.com/george-gca) [Localized Variables](https://polyglot.untra.io/2024/02/29/localized-variables.md)
313
+ * [@george-gca](https://github.com/george-gca) [pt-BR support](https://polyglot.untra.io/pt-BR/2024/02/29/localized-variables.md)
305
314
 
306
315
  ### Other Websites Built with Polyglot
307
316
  Feel free to open a PR and list your multilingual blog here you may want to share:
@@ -317,6 +326,9 @@ Feel free to open a PR and list your multilingual blog here you may want to shar
317
326
  * [Yi Yunseok's personal blog website](https://Yi-Yunseok.GitHub.io)
318
327
  * [Tarlogic Cybersecurity](https://www.tarlogic.com/)
319
328
  * [A beautiful, simple, clean, and responsive Jekyll theme for academics](https://github.com/george-gca/multi-language-al-folio)
329
+ * [AnotherTurret just another study note blog](https://aturret.space/)
330
+ * [Diciotech is a collaborative online tech dictionary](https://diciotech.netlify.app/)
331
+ * [Yunseo Kim's Study Notes](https://www.yunseo.kim/)
320
332
 
321
333
  ## 2.0 Roadmap
322
334
  * [x] - **site language**: portuguese Brazil `pt-BR`
@@ -333,4 +345,4 @@ Feel free to open a PR and list your multilingual blog here you may want to shar
333
345
  * [x] - update CI provider
334
346
 
335
347
  ## Copyright
336
- Copyright (c) Samuel Volin 2023. License: MIT
348
+ Copyright (c) Samuel Volin 2025. License: MIT
@@ -3,7 +3,7 @@ require 'etc'
3
3
  include Process
4
4
  module Jekyll
5
5
  class Site
6
- attr_reader :default_lang, :languages, :exclude_from_localization, :lang_vars
6
+ attr_reader :default_lang, :languages, :exclude_from_localization, :lang_vars, :lang_from_path
7
7
  attr_accessor :file_langs, :active_lang
8
8
 
9
9
  def prepare
@@ -108,21 +108,32 @@ module Jekyll
108
108
  @exclude = old_exclude
109
109
  end
110
110
 
111
+ def split_on_multiple_delimiters(string)
112
+ delimiters = ['.', '/']
113
+ regex = Regexp.union(delimiters)
114
+ string.split(regex)
115
+ end
116
+
111
117
  def derive_lang_from_path(doc)
112
118
  unless @lang_from_path
113
119
  return nil
114
120
  end
115
121
 
116
- segments = doc.relative_path.split('/')
117
- if doc.relative_path[0] == '_' \
118
- && segments.length > 2 \
119
- && segments[1] =~ /^[a-z]{2,3}(:?[_-](:?[A-Za-z]{2}){1,2}){0,2}$/
120
- return segments[1]
121
- elsif segments.length > 1 \
122
- && segments[0] =~ /^[a-z]{2,3}(:?[_-](:?[A-Za-z]{2}){1,2}){0,2}$/
123
- return segments[0]
122
+ segments = split_on_multiple_delimiters(doc.path)
123
+ # loop through all segments and check if they match the language regex
124
+ segments.each do |segment|
125
+ if @languages.include?(segment)
126
+ return segment
127
+ end
124
128
  end
125
129
 
130
+ # loop through all segments and check if they match the language regex
131
+ segments.each do |segment|
132
+ if @languages.include?(segment)
133
+ return segment
134
+ end
135
+ end
136
+
126
137
  nil
127
138
  end
128
139
 
@@ -152,8 +163,8 @@ module Jekyll
152
163
  approved[page_id] = doc
153
164
  @file_langs[page_id] = lang
154
165
  end
155
- approved.values.each {|doc| assignPageRedirects(doc, docs) }
156
- approved.values.each {|doc| assignPageLanguagePermalinks(doc, docs) }
166
+ approved.values.each { |doc| assignPageRedirects(doc, docs) }
167
+ approved.values.each { |doc| assignPageLanguagePermalinks(doc, docs) }
157
168
  approved.values
158
169
  end
159
170
 
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.8.1
4
+ version: 1.9.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: 2024-08-18 00:00:00.000000000 Z
11
+ date: 2025-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll