በJekyll ብሎግ ላይ በPolyglot ብዙ ቋንቋ ድጋፍ የሚደረግበት መንገድ (3) - የChirpy ገጽታ የbuild አልተሳካም እና የፍለጋ ባህሪ ስህተቶች መፍትሄ
'jekyll-theme-chirpy' መሠረት ባለው የJekyll ብሎግ ላይ የPolyglot ፕላግን በመተግበር የብዙ ቋንቋ ድጋፍ የተፈጸመበትን ሂደት ያስተዋውቃል። ይህ ልጥፍ የዚህ ተከታታይ ሶስተኛው ክፍል ሲሆን፣ Polyglot በChirpy ገጽታ ላይ ሲተገበር የተፈጠሩ ስህተቶችን መንስኤ መለየትና መፍታትን ይመለከታል።
አጠቃላይ እይታ
በ12024 ዓ.ም. 7ኛ ወር መጀመሪያ ላይ፣ በJekyll ላይ የተመሠረተና በGithub Pages የሚስተናገድ ይህ ብሎግ ላይ Polyglot ፕላግን በመተግበር የብዙ ቋንቋ ድጋፍ ታክሎበታል። ይህ ተከታታይ በChirpy ገጽታ ላይ የPolyglot ፕላግንን ሲተገብር የተፈጠሩ ብግኖችን እና የመፍትሄ ሂደታቸውን፣ እንዲሁም SEOን ከግምት ውስጥ ያስገባ የhtml ራስጌ እና sitemap.xml መጻፍ መንገድን ያካፍላል። ተከታታዩ ከ3 ጽሁፎች የተዋቀረ ሲሆን፣ እያነበቡት ያለው ይህ ጽሁፍ የተከታታዩ ሶስተኛው ነው።
- ክፍል 1: የPolyglot ፕላግን መተግበር & html ራስጌ እና sitemap ማስተካከል
- ክፍል 2: የቋንቋ ምርጫ አዝራር መተግበር & የአቀማመጥ ቋንቋ አካባቢያዊ ማድረግ
- ክፍል 3: የChirpy ገጽታ የbuild አልተሳካም እና የፍለጋ ባህሪ ስህተት መፍትሄ (ዋና ጽሁፍ)
መጀመሪያ ላይ በጠቅላላ 2 ክፍሎች እንዲሆን ተዘጋጅቶ ነበር፣ ነገር ግን በኋላ በርካታ ጊዜ ይዘቱ ሲደገፍ መጠኑ በጣም ስለጨመረ ወደ 3 ክፍሎች ተደርጎ ተደራጀ።
መስፈርቶች
- የbuild ውጤቱ(ድረ ገጾች) በቋንቋ የተለዩ መንገዶች(ex.
/posts/ko/,/posts/ja/) ሊቀርቡ ይገባል። - ለብዙ ቋንቋ ድጋፍ ተጨማሪ የሚፈልጉትን ጊዜና ጥረት በተቻለ መጠን ለመቀነስ፣ በተጻፈው የመነሻ markdown ፋይል YAML front matter ውስጥ
langእናpermalinkታጎችን አንድ በአንድ ሳይገልጹ በbuild ጊዜ ፋይሉ በሚገኝበት አካባቢያዊ መንገድ(ex./_posts/ko/,/_posts/ja/) መሠረት ቋንቋውን በራስ-ሰር ሊለይ ይገባል። - በጣቢያው ውስጥ ያሉ እያንዳንዱ ገጽ ራስጌ ክፍሎች ተገቢ የContent-Language ሜታ ታግ፣ hreflang አማራጭ ታጎች እና canonical link መያዝ አለባቸው እንዲሁም ለብዙ ቋንቋ ፍለጋ የGoogle SEO መመሪያዎችን ሊያሟሉ ይገባል።
- በጣቢያው ውስጥ ያሉ የእያንዳንዱ ቋንቋ ስሪት ገጽ ማገናኛዎች ሳይቀሩ በ
sitemap.xmlመቅረብ አለባቸው፣ እናsitemap.xmlራሱ ድግግሞሽ ሳይኖርበት በroot መንገድ ላይ አንድ ብቻ ሊኖር ይገባል። - Chirpy ገጽታ የሚሰጣቸው ሁሉም ባህሪያት በእያንዳንዱ ቋንቋ ገጽ ላይ በመደበኛነት መስራት አለባቸው፣ ካልሆነም እንዲሰሩ መሻሻል አለባቸው።
- ‘Recently Updated’, ‘Trending Tags’ ባህሪያት በመደበኛነት መስራት
- በGitHub Actions የbuild ሂደት ውስጥ ስህተት እንዳይፈጠር
- በብሎጉ ቀኝ ላይ ከላይ ያለው የፖስት ፍለጋ ባህሪ በመደበኛነት መስራት
ከመጀመርዎ በፊት
ይህ ጽሁፍ ከክፍል 1 እና ክፍል 2 የሚቀጥል ስለሆነ፣ እስካሁን ካላነበቡት በመጀመሪያ ከቀደሙት ጽሁፎች ጀምረው እንዲያነቡ እመክራለሁ።
ችግር መፍትሄ (‘relative_url_regex’: target of repeat operator is not specified)
(+ 12025.10.08. ዝማኔ) ይህ ብግ በPolyglot 1.11 ስሪት ተፈትቷል.
ከቀደሙት ደረጃዎች በኋላ bundle exec jekyll serve ትዕዛዝን በማስኬድ build ሙከራ ሲደረግ፣ 'relative_url_regex': target of repeat operator is not specified የሚል ስህተት ተፈጥሮ የbuild ሂደቱ አልተሳካም።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...(ከፊል ተዘለለ)
------------------------------------------------
Jekyll 4.3.4 Please append `--trace` to the `serve` command
for any additional information or backtrace.
------------------------------------------------
/Users/yunseo/.gem/ruby/3.2.2/gems/jekyll-polyglot-1.8.1/lib/jekyll/polyglot/
patches/jekyll/site.rb:234:in `relative_url_regex': target of repeat operator
is not specified: /href="?\/((?:(?!*.gem)(?!*.gemspec)(?!tools)(?!README.md)(
?!LICENSE)(?!*.config.js)(?!rollup.config.js)(?!package*.json)(?!.sass-cache)
(?!.jekyll-cache)(?!gemfiles)(?!Gemfile)(?!Gemfile.lock)(?!node_modules)(?!ve
ndor\/bundle\/)(?!vendor\/cache\/)(?!vendor\/gems\/)(?!vendor\/ruby\/)(?!en\/
)(?!ko\/)(?!es\/)(?!pt-BR\/)(?!ja\/)(?!fr\/)(?!de\/)[^,'"\s\/?.]+\.?)*(?:\/[^
\]\[)("'\s]*)?)"/ (RegexpError)
...(የቀረው ተዘለለ)
ተመሳሳይ ችግር ከዚህ በፊት ተመዝግቦ እንደነበር ለማየት ከፈለግሁ በኋላ፣ በPolyglot ሪፖዚቶሪ ውስጥ በትክክል ተመሳሳይ ጉዳይ እንደተመዘገበ እና መፍትሄውም እንዳለ አግኝቻለሁ።
በዚህ ብሎግ ላይ በሥራ ላይ የሚገኘው የChirpy ገጽታ _config.yml ፋይል ውስጥ የሚከተለው ኮድ አለ።
1
2
3
4
5
6
7
8
9
exclude:
- "*.gem"
- "*.gemspec"
- docs
- tools
- README.md
- LICENSE
- "*.config.js"
- package*.json
የችግሩ ምክንያት በPolyglot site.rb ፋይል ውስጥ ያሉት የሚከተሉት ሁለት ተግባራት የregular expression አጻጻፍ በላይ እንደታየው "*.gem", "*.gemspec", "*.config.js" ያሉ ዋይልድካርድ ያላቸው የglobbing ንድፎችን በመደበኛነት ማስተናገድ አልቻሉም።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# a regex that matches relative urls in a html document
# matches href="baseurl/foo/bar-baz" href="/am/foo/bar-baz" and others like it
# avoids matching excluded files. prepare makes sure
# that all @exclude dirs have a trailing slash.
def relative_url_regex(disabled = false)
regex = ''
unless disabled
@exclude.each do |x|
regex += "(?!#{x})"
end
@languages.each do |x|
regex += "(?!#{x}\/)"
end
end
start = disabled ? 'ferh' : 'href'
%r{#{start}="?#{@baseurl}/((?:#{regex}[^,'"\s/?.]+\.?)*(?:/[^\]\[)("'\s]*)?)"}
end
# a regex that matches absolute urls in a html document
# matches href="http://baseurl/foo/bar-baz" and others like it
# avoids matching excluded files. prepare makes sure
# that all @exclude dirs have a trailing slash.
def absolute_url_regex(url, disabled = false)
regex = ''
unless disabled
@exclude.each do |x|
regex += "(?!#{x})"
end
@languages.each do |x|
regex += "(?!#{x}\/)"
end
end
start = disabled ? 'ferh' : 'href'
%r{(?<!hreflang="#{@default_lang}" )#{start}="?#{url}#{@baseurl}/((?:#{regex}[^,'"\s/?.]+\.?)*(?:/[^\]\[)("'\s]*)?)"}
end
ይህን ችግር ለመፍታት ሁለት መንገዶች አሉ።
1. Polyglotን fork ካደረጉ በኋላ ችግሩ ያለበትን ክፍል አስተካክለው መጠቀም
ይህን ጽሁፍ በምጽፍበት ጊዜ(12024.11.) መሠረት የJekyll ኦፊሴላዊ ሰነዶች የexclude ቅንብር የglobbing ንድፎችን መጠቀም እንደሚደግፍ በግልጽ ይገልጻሉ።
“This configuration option supports Ruby’s File.fnmatch filename globbing patterns to match multiple entries to exclude.”
ማለትም፣ የችግሩ መንስኤ Chirpy ገጽታ አይደለም፤ ይልቁንም በPolyglot ውስጥ ያሉ relative_url_regex(), absolute_url_regex() ሁለቱ ተግባራት ናቸው፣ ስለዚህ ችግር እንዳይፈጠር በሚገባ ማስተካከል መሠረታዊ መፍትሄ ነው።
በPolyglot ውስጥ ይህ ብግ ገና አልተፈታም፣ ላይ እንደተገለጸው ከPolyglot 1.11 ስሪት ጀምሮ ይህ ችግር ተፈትቷል. ችግሩ በወቅቱ ሲፈጠር ግን ይህን ብሎግ ጽሁፍ(ጣቢያው ጠፍቷል) እና በላይ በተጠቀሰው የGitHub issue ላይ የተጻፈውን መልስ በመመርኮዝ Polyglot ሪፖዚቶሪን fork ካደረግሁ በኋላ ችግሩ ያለበትን ክፍል እንደሚከተለው በማስተካከል ከመነሻው Polyglot ይልቅ ተጠቅሜ መፍትሄ ማግኘት ተችሏል።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def relative_url_regex(disabled = false)
regex = ''
unless disabled
@exclude.each do |x|
escaped_x = Regexp.escape(x)
regex += "(?!#{escaped_x})"
end
@languages.each do |x|
escaped_x = Regexp.escape(x)
regex += "(?!#{escaped_x}\/)"
end
end
start = disabled ? 'ferh' : 'href'
%r{#{start}="?#{@baseurl}/((?:#{regex}[^,'"\s/?.]+\.?)*(?:/[^\]\[)("'\s]*)?)"}
end
def absolute_url_regex(url, disabled = false)
regex = ''
unless disabled
@exclude.each do |x|
escaped_x = Regexp.escape(x)
regex += "(?!#{escaped_x})"
end
@languages.each do |x|
escaped_x = Regexp.escape(x)
regex += "(?!#{escaped_x}\/)"
end
end
start = disabled ? 'ferh' : 'href'
%r{(?<!hreflang="#{@default_lang}" )#{start}="?#{url}#{@baseurl}/((?:#{regex}[^,'"\s/?.]+\.?)*(?:/[^\]\[)("'\s]*)?)"}
end
2. በChirpy ገጽታ ‘_config.yml’ ቅንብር ፋይል ውስጥ ያሉ የglobbing ንድፎችን በትክክለኛ የፋይል ስሞች መተካት
በእርግጥ መደበኛና ተስማሚ መንገድ ይህ ፓች በPolyglot ዋና ፕሮጀክት ውስጥ እንዲካተት መሆኑ ነው። ነገር ግን እስከዚያ ድረስ fork የተደረገውን ስሪት መጠቀም ያስፈልጋል፤ ይህ ግን Polyglot upstream በሚዘምን ጊዜ ሁሉ ያን ዝማኔ ሳይቀር መከታተል እና ማካተት አስቸጋሪ ስለሆነ እኔ ሌላ መንገድ ተጠቀምሁ።
በChirpy ገጽታ ሪፖዚቶሪ ውስጥ በፕሮጀክት root መንገድ ላይ ያሉ ፋይሎች መካከል "*.gem", "*.gemspec", "*.config.js" ንድፎችን የሚመለከቱትን ፋይሎች ብንመለከት በእርግጥ ከታች ያሉት 3 ብቻ ናቸው።
jekyll-theme-chirpy.gemspecpurgecss.config.jsrollup.config.js
ስለዚህ _config.yml ፋይል ውስጥ ባለው exclude ኮድ ከglobbing ንድፎች አስወግደው እንደሚከተለው ቢተኩት Polyglot ያለምንም ችግር ሊያስተናግደው ይችላል።
1
2
3
4
5
6
7
8
9
exclude: # የተሻሻለው https://github.com/untra/polyglot/issues/204 ጉዳይን በማጣቀስ ነው።
# - "*.gem"
- jekyll-theme-chirpy.gemspec # - "*.gemspec"
- tools
- README.md
- LICENSE
- purgecss.config.js # - "*.config.js"
- rollup.config.js
- package*.json
የፍለጋ ባህሪ ማስተካከል
ከቀደሙት ደረጃዎች በኋላ አብዛኞቹ የጣቢያው ባህሪያት ተፈለገው እንደነበረው በጣም አርኪ ሁኔታ እንደሚሰሩ ታየ። ነገር ግን፣ በChirpy ገጽታ ያለው ገጽ በቀኝ ላይ ከላይ የሚገኘው የፍለጋ አሞሌ ከsite.default_lang(በዚህ ብሎግ ሁኔታ እንግሊዝኛ) ውጪ ባሉ ቋንቋዎች የተጻፉ ገጾችን መረጃ ማድረግ እንደማይችል፣ እንዲሁም ከእንግሊዝኛ ውጪ ባሉ ቋንቋ ገጾች ላይ ፍለጋ ሲደረግ የፍለጋ ውጤት እንግሊዝኛ ገጽ ማገናኛዎችን እንደሚያሳይ በኋላ ተገነዘብሁ።
ምክንያቱን ለማወቅ፣ በፍለጋ ባህሪው ውስጥ የሚሳተፉት ፋይሎች ምን እንደሆኑ እና ከእነዚህ መካከል ችግሩ በየት እንደሚፈጠር እንመልከት።
‘_layouts/default.html’
በብሎጉ ውስጥ ያሉ ሁሉንም ገጾች አወቃቀር የሚያስተናግደው _layouts/default.html ፋይል ውስጥ፣ በ<body> ኤለመንት ውስጥ search-results.html እና search-loader.html የሚባሉ ፋይሎች ይጫናሉ መሆኑን ማረጋገጥ ይቻላል።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<body>
{% include sidebar.html lang=lang %}
<div id="main-wrapper" class="d-flex justify-content-center">
<div class="container d-flex flex-column px-xxl-5">
(...መካከለኛ ክፍል ተዘለለ...)
{% include_cached search-results.html lang=lang %}
</div>
<aside aria-label="Scroll to Top">
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
<i class="fas fa-angle-up"></i>
</button>
</aside>
</div>
(...መካከለኛ ክፍል ተዘለለ...)
{% include_cached search-loader.html lang=lang %}
</body>
‘_includes/search-result.html’
_includes/search-result.html በፍለጋ መስኮቱ ውስጥ ቃል ሲገባ ለዚያ ቁልፍ ቃል የሚዛመዱ የፍለጋ ውጤቶች የሚቀመጡበት search-results ኮንቴነርን ያዋቅራል።
1
2
3
4
5
6
7
8
9
10
<!-- The Search results -->
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
<div class="col-11 content">
<div id="search-hints">
{% include_cached trending-tags.html %}
</div>
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
</div>
</div>
‘_includes/search-loader.html’
_includes/search-loader.html በትክክል Simple-Jekyll-Search ቤተ-መጽሐፍት ላይ የተመሠረተ ፍለጋን የሚተገብረው ዋና ክፍል ነው፣ ይህም search.json የindex ፋይል ውስጥ ካለው ይዘት ጋር የሚዛመዱ የገቡትን ቁልፍ ቃላት ፈልጎ ተዛማጅ የፖስት ማገናኛዎችን እንደ <article> ኤለመንት የሚመልስ JavaScript በጎብኚው አሳሽ ላይ እንደሚያስኬድ ስለሆነ Client-Side እንደሚሰራ መረዳት ይቻላል።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{% capture result_elem %}
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
<header>
<h2><a href="{url}">{title}</a></h2>
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
{categories}
{tags}
</div>
</header>
<p>{snippet}</p>
</article>
{% endcapture %}
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
<script>
{% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
document.addEventListener('DOMContentLoaded', () => {
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
json: '{{ '/assets/js/data/search.json' | relative_url }}',
searchResultTemplate: '{{ result_elem | strip_newlines }}',
noResultsText: '{{ not_found }}',
templateMiddleware: function(prop, value, template) {
if (prop === 'categories') {
if (value === '') {
return `${value}`;
} else {
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
}
}
if (prop === 'tags') {
if (value === '') {
return `${value}`;
} else {
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
}
}
}
});
});
</script>
‘/assets/js/data/search.json’
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
layout: compress
swcache: true
---
[
{% for post in site.posts %}
{
"title": {{ post.title | jsonify }},
"url": {{ post.url | relative_url | jsonify }},
"categories": {{ post.categories | join: ', ' | jsonify }},
"tags": {{ post.tags | join: ', ' | jsonify }},
"date": "{{ post.date }}",
{% include no-linenos.html content=post.content %}
{% assign _content = content | strip_html | strip_newlines %}
"snippet": {{ _content | truncate: 200 | jsonify }},
"content": {{ _content | jsonify }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
የJekyll Liquid አጻጻፍን በመጠቀም በጣቢያው ውስጥ ያሉ ሁሉንም ፖስቶች ርዕስ፣ URL፣ ካቴጎሪዎችና ታጎች መረጃ፣ የተጻፈበት ቀን፣ ከዋና ጽሁፉ ውስጥ የመጀመሪያ 200 ፊደላት ስኒፔት፣ እና ሙሉ ይዘቱን የያዘ JSON ፋይል ተገልጿል።
የፍለጋ ባህሪው የሚሰራበት መዋቅር እና ችግሩ የሚፈጠርበትን ክፍል መለየት
ማለትም በአጭሩ እንደምናጠቃልል፣ GitHub Pages ላይ Chirpy ገጽታ እየተስተናገደ ሲሆን የፍለጋ ባህሪው በሚከተለው ሂደት ይሰራል።
stateDiagram
state "Changes" as CH
state "Build start" as BLD
state "Create search.json" as IDX
state "Static Website" as DEP
state "In Test" as TST
state "Search Loader" as SCH
state "Results" as R
[*] --> CH: Make Changes
CH --> BLD: Commit & Push origin
BLD --> IDX: jekyll build
IDX --> TST: Build Complete
TST --> CH: Error Detected
TST --> DEP: Deploy
DEP --> SCH: Search Input
SCH --> R: Return Results
R --> [*]
እዚህ search.json በPolyglot እንደሚከተለው በእያንዳንዱ ቋንቋ እንደሚፈጠር ተረጋግጧል።
/assets/js/data/search.json/ko/assets/js/data/search.json/ja/assets/js/data/search.json/zh-TW/assets/js/data/search.json/es/assets/js/data/search.json/pt-BR/assets/js/data/search.json/fr/assets/js/data/search.json/de/assets/js/data/search.json
ስለዚህ የችግሩ መንስኤ የሆነው ክፍል “Search Loader” ነው። ከእንግሊዝኛ ውጪ ያሉ ሌሎች ቋንቋ ስሪቶች ገጾች እንዳይፈለጉ የሚያደርገው ችግር፣ _includes/search-loader.html ውስጥ በአሁኑ ጊዜ የሚታየው ገጽ ቋንቋ ምንም ይሁን ምን የእንግሊዝኛውን የindex ፋይል(/assets/js/data/search.json) ብቻ በstatic መንገድ ስለሚጫን ነው።
- ነገር ግን markdown ወይም html ፋይሎች እንዳሉ አይደለም፤ JSON ፋይሎች ላይ
post.title,post.contentያሉ በJekyll የሚሰጡ ተለዋዋጮች ላይ የPolyglot wrapper ይሰራል ነገር ግን Relativized Local Urls ባህሪ የማይሰራ ይመስላል።- እንዲሁም JSON ፋይል template ውስጥ ከJekyll መደበኛ ተለዋዋጮች ውጪ Polyglot በተጨማሪ የሚሰጣቸው
{{ site.default_lang }},{{ site.active_lang }}liquid tags እንደማይደረስባቸው በሙከራ ሂደት ተረጋግጧል።ስለዚህ በindex ፋይሉ ውስጥ ያሉ
title,snippet,contentያሉ እሴቶች በቋንቋ መሠረት በተለያዩ መንገዶች ይፈጠራሉ፣ ነገር ግንurlእሴቱ ቋንቋውን ያላገናዘበ መደበኛ መንገድ ይመልሳል፣ እና ለዚህ “Search Loader” ክፍል ውስጥ ተገቢ አስተካክል መጨመር ያስፈልጋል።
ችግሩን መፍታት
ይህን ለመፍታት _includes/search-loader.html ውስጥ ያለውን ይዘት እንደሚከተለው ማስተካከል ይበቃል።
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{% capture result_elem %}
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
<header>
{% if site.active_lang != site.default_lang %}
<h2><a {% static_href %}href="/{{ site.active_lang }}{url}"{% endstatic_href %}>{title}</a></h2>
{% else %}
<h2><a href="{url}">{title}</a></h2>
{% endif %}
(...መካከለኛ ክፍል ተዘለለ...)
<script>
{% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
document.addEventListener('DOMContentLoaded', () => {
{% assign search_path = '/assets/js/data/search.json' %}
{% if site.active_lang != site.default_lang %}
{% assign search_path = '/' | append: site.active_lang | append: search_path %}
{% endif %}
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
json: '{{ search_path | relative_url }}',
searchResultTemplate: '{{ result_elem | strip_newlines }}',
(...የቀረው ተዘለለ)
site.active_lang(የአሁኑ ገጽ ቋንቋ) እናsite.default_lang(የጣቢያው መደበኛ ቋንቋ) እኩል ካልሆኑ ከJSON ፋይሉ የሚጫነው የፖስት URL በፊት"/{{ site.active_lang }}"prefix እንዲጨመርበት የ{% capture result_elem %}ክፍሉ የliquid አጻጻፍ ተሻሽሏል።- በተመሳሳይ መንገድ፣ በbuild ሂደት ውስጥ የአሁኑ ገጽ ቋንቋን ከጣቢያው መደበኛ ቋንቋ ጋር እያነጻጸረ እኩል ከሆኑ መደበኛ መንገዱን(
/assets/js/data/search.json)፣ ካልሆኑ ደግሞ ከዚያ ቋንቋ ጋር የሚስማማውን መንገድ(e.g./ko/assets/js/data/search.json)search_pathእንዲሆን የ<script>ክፍሉ ተሻሽሏል።
እንዲህ አድርጎ ከማስተካከሉ በኋላ ድረ ገጹን እንደገና build ሲደረግ፣ የፍለጋ ውጤቶቹ በእያንዳንዱ ቋንቋ መሠረት በመደበኛነት እንደሚታዩ ተረጋግጧል።
{url}በኋላ ፍለጋ ሲካሄድ በJS በJSON ፋይሉ ውስጥ ከተነበበው URL እሴት የሚተካበት ቦታ ነው እንጂ በbuild ጊዜ ላይ ትክክለኛ URL አይደለም፣ ስለዚህ Polyglot እንደ localization ዒላማ አይመለከተውም እና በቋንቋ መሠረት በቀጥታ መስተካከል አለበት። ችግሩ ግን እንዲህ ተስተካክሎ የተጻፈው"/{{ site.active_lang }}{url}"template በbuild ጊዜ relative URL እንደሆነ ይታወቃል፣ እና localization አስቀድሞ ቢጠናቀቅም Polyglot ይህን አያውቅም ስለዚህ እንደገና localization ለማድረግ ይሞክራል(e.g."/ko/ko/posts/example-post")። ይህን ለመከላከል{% static_href %}tag በግልጽ ተጠቅመናል።
