ልጥፍ

በJekyll ብሎግ ላይ በPolyglot ብዙ ቋንቋ ድጋፍ የሚደረግበት መንገድ (3) - የChirpy ገጽታ የbuild አልተሳካም እና የፍለጋ ባህሪ ስህተቶች መፍትሄ

'jekyll-theme-chirpy' መሠረት ባለው የJekyll ብሎግ ላይ የPolyglot ፕላግን በመተግበር የብዙ ቋንቋ ድጋፍ የተፈጸመበትን ሂደት ያስተዋውቃል። ይህ ልጥፍ የዚህ ተከታታይ ሶስተኛው ክፍል ሲሆን፣ Polyglot በChirpy ገጽታ ላይ ሲተገበር የተፈጠሩ ስህተቶችን መንስኤ መለየትና መፍታትን ይመለከታል።

በJekyll ብሎግ ላይ በPolyglot ብዙ ቋንቋ ድጋፍ የሚደረግበት መንገድ (3) - የChirpy ገጽታ የbuild አልተሳካም እና የፍለጋ ባህሪ ስህተቶች መፍትሄ

አጠቃላይ እይታ

በ12024 ዓ.ም. 7ኛ ወር መጀመሪያ ላይ፣ በJekyll ላይ የተመሠረተና በGithub Pages የሚስተናገድ ይህ ብሎግ ላይ Polyglot ፕላግን በመተግበር የብዙ ቋንቋ ድጋፍ ታክሎበታል። ይህ ተከታታይ በChirpy ገጽታ ላይ የPolyglot ፕላግንን ሲተገብር የተፈጠሩ ብግኖችን እና የመፍትሄ ሂደታቸውን፣ እንዲሁም SEOን ከግምት ውስጥ ያስገባ የhtml ራስጌ እና sitemap.xml መጻፍ መንገድን ያካፍላል። ተከታታዩ ከ3 ጽሁፎች የተዋቀረ ሲሆን፣ እያነበቡት ያለው ይህ ጽሁፍ የተከታታዩ ሶስተኛው ነው።

መጀመሪያ ላይ በጠቅላላ 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.gemspec
  • purgecss.config.js
  • rollup.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 መንገድ ስለሚጫን ነው።

ስለዚህ በ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 በግልጽ ተጠቅመናል።

ይህ ልጥፍ በ CC BY-NC 4.0 ፈቃድ ስር ነው።

© Yunseo Kim. አንዳንድ መብቶች የተጠበቁ ናቸው።

Jekyll የተገነባ፣ ከ Chirpy ገጽታ ጋር።