Files
FixIt/layouts/_partials/init/detection-deprecated.html
T
Cell 5f1e79f49c feat(i18n): add RTL support for Arabic, Persian and Urdu (#831)
* feat(i18n): add RTL support and Arabic/Persian translations

- Add `dir` attribute to `<html>` via `.Site.Language.Direction`
- Convert physical CSS properties to logical properties across ~30 SCSS files
- Add `[dir="rtl"]` overrides for elements that need physical direction (code blocks, translate, icons)
- Add `logical-direction.html` template function for config value normalization
- Add RTL-aware deprecation warnings for old "left"/"right" config values
- Rename github corner, TOC position, reading progress config values from "left"/"right" to "start"/"end"
- Add Arabic (ar.toml) and Persian (fa.toml) i18n translation files
- Update multilingual documentation with RTL language configuration guide

* feat(shortcodes): add RTL support for tabs and refactor border-radius mixin

- Rename tabs placement values from "left"/"right" to "start"/"end" with deprecation warnings
- Convert all physical directional properties in tabs SCSS to logical properties
- Add RTL overrides for translate and box-shadow in tabs
- Add "start"/"end" support to border-radius mixin using CSS logical properties
- Refactor fixit-decryptor to use border-radius(start/end) mixin

* feat(assets): add RTL support for toc-dialog slide animation

The mobile toc-dialog always slid in from the right (100vw). In RTL
mode it should slide from the left (-100vw), matching the
border-inline-start/margin-inline-end anchoring.

* feat(assets): add RTL support for post-tag comma separator

* refactor(assets): extract RTL styles into dedicated _rtl.scss

* feat(assets): add RTL support for theme-switch and directional icons

* feat(i18n): add RTL support and improve i18n

- Add RTL typography corrections for Arabic-script languages (:lang(ar/fa/ur))
- Remove fa-list-ol from RTL flip list (numbers get mirrored)
- Add Urdu translation file (i18n/ur.toml)
- Rename noMoretTranslations to noTranslations and simplify all translations
- Update json-viewer-element from 1.0.4 to 1.0.6
- Add RTL test posts (index.en.md, index.ar.md)
- Fix layout partials for RTL support

See https://fixit.lruihao.cn/docs/content-management/introduction/#rtl-language-support
2026-08-24 00:22:34 +08:00

162 lines
7.2 KiB
HTML

{{- /* Deprecated parameter detection */ -}}
{{- $warns := slice -}}
{{- $errors := slice -}}
{{- with .Site.Params.externalIcon -}}
{{- $warns = $warns | append "The parameter `params.externalIcon` is deprecated since v1.0.0, use `params.link.external_icon` instead." -}}
{{- end -}}
{{- /* params.page structural migration warnings */ -}}
{{- $deprecatedPageKeys := slice
"capitalize_titles" "summary_plainify" "author_avatar"
"hidden_from_home_page" "hidden_from_search" "hidden_from_related" "hidden_from_feed"
"twemoji" "lightgallery" "ruby" "fraction" "fontawesome" "license"
"page_style" "auto_bookmark" "show_lastmod" "word_count" "reading_time" "end_flag"
"instant_page" "collection_list" "collection_navigation" "edit_url" "source_url"
"featured_image" "featured_image_preview"
"toc" "expiration_reminder" "heading" "math" "mapbox"
"related" "reward" "share" "comment" "library" "seo"
-}}
{{- $onlyFrontMatters := slice "subtitle" "featured_image" "featured_image_preview" "repost" -}}
{{- range $deprecatedPageKeys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- if (in $.Site.Params.page $oldKey) | and (not (in $onlyFrontMatters $newKey)) -}}
{{- $warns = $warns | append (printf "The parameter `params.page.%s` has been removed since v1.0.0, use `params.%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- if (in $.Site.Params.page $oldKey) | and (in $onlyFrontMatters $newKey) -}}
{{- $warns = $warns | append (printf "The parameter `params.page.%s` has been removed since v1.0.0, use front matter parameter `%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- if (in $.Page.Params $oldKey) | and (in $newKey "_") -}}
{{- $warns = $warns | append (printf "Front matter parameter `%s` is deprecated since v1.0.0, use `%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- end -}}
{{- /* camelCase → snake_case param/section rename warnings */ -}}
{{- $deprecatedKeys := slice
"default_theme"
"date_format"
"with_site_title"
"disable_theme_inject"
"title_delimiter"
"index_with_subtitle"
"enable_translation_merge"
"tag_cloud"
"post_chat"
"post_summary"
"git_info"
"back_to_top"
"reading_progress"
"github_corner"
"recently_updated"
"json_viewer"
"custom_partials"
"task_list"
"repo_version"
-}}
{{- range $deprecatedKeys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- with index $.Site.Params $oldKey -}}
{{- $warns = $warns | append (printf "The parameter `params.%s` has been removed since v1.0.0, use `params.%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- end -}}
{{- /* Nested camelCase key rename warnings */ -}}
{{- $deprecatedNestedKeys := dict
"search" (slice "content_length" "absolute_url" "max_result_length" "snippet_length" "highlight_tag")
"search.algolia" (slice "app_id" "search_key")
"header" (slice "desktop_mode" "mobile_mode")
"breadcrumb" (slice "show_home")
"navigation" (slice "in_section")
"footer.powered" (slice "hugo_logo" "theme_logo")
"footer" (slice "site_time")
"home.profile" (slice "only_first_page" "gravatar_email" "avatar_url" "avatar_menu")
"home.posts" (slice "image_preview")
"watermark" (slice "row_spacing" "col_spacing" "font_size" "font_family")
"busuanzi" (slice "site_views" "page_views")
"image" (slice "cache_remote" "black_list")
"mermaid" (slice "security_level" "font_family" "layout_loaders")
"codeblock" (slice "wrapper_class" "max_shown_lines" "line_nos_toggler" "line_wrap_toggler")
"filetree" (slice "folder_slash" "ignore_list")
"math.katex" (slice "copy_tex" "throw_on_error" "error_color")
"math.mathjax.options" (slice "enable_menu" "skip_html_tags" "ignore_html_class")
"post_summary" (slice "post_url" "word_limit" "typing_animate" "beginning_text" "loading_text")
-}}
{{- range $sectionPath, $keys := $deprecatedNestedKeys -}}
{{- $parts := split $sectionPath "." -}}
{{- $section := $.Site.Params -}}
{{- $valid := true -}}
{{- range $parts -}}
{{- if reflect.IsMap $section -}}
{{- $section = index $section . -}}
{{- else -}}
{{- $valid = false -}}
{{- end -}}
{{- end -}}
{{- if $valid | and (reflect.IsMap $section) -}}
{{- range $keys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- with index $section $oldKey -}}
{{- $warns = $warns | append (printf "The parameter `params.%s.%s` has been removed since v1.0.0, use `params.%s.%s` instead." $sectionPath $oldDisplay $sectionPath $newKey) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- /* Front matter key migration warnings */ -}}
{{- with $.Page.Params.link_guard -}}
{{- $warns = $warns | append "Front matter parameter `link_guard` has been removed since v1.0.0, use `link.guard` instead." -}}
{{- end -}}
{{- if fileExists "assets/css/_custom.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_custom.scss` is deprecated. Please move your custom styles to `assets/scss/custom.scss`. See: https://fixit.lruihao.cn/docs/advanced/" -}}
{{- end -}}
{{- if fileExists "assets/css/_override.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_override.scss` is deprecated. Use `[params.appearance]` in your site configuration instead. See: https://fixit.lruihao.cn/docs/advanced/" -}}
{{- end -}}
{{- if fileExists "assets/scss/override.scss" -}}
{{- $warns = $warns | append "The file `assets/scss/override.scss` is deprecated. Use `[params.appearance]` in your site configuration instead. See: https://fixit.lruihao.cn/docs/advanced/" -}}
{{- end -}}
{{- /* Deprecated "left"/"right" position values → "start"/"end" */ -}}
{{- $positionParams := dict
"github_corner" (slice "position")
"toc" (slice "position")
"reading_progress" (slice "start")
-}}
{{- range $section, $keys := $positionParams -}}
{{- $sec := index $.Site.Params $section -}}
{{- if reflect.IsMap $sec -}}
{{- range $keys -}}
{{- $val := index $sec . -}}
{{- if or (eq $val "left") (eq $val "right") -}}
{{- $newVal := cond (eq $val "left") "start" "end" -}}
{{- $warns = $warns | append (printf "The value \"%v\" of `params.%v.%v` is deprecated, use \"%v\" instead." $val $section . $newVal) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- if fileExists "assets/css/_variables.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_variables.scss` is deprecated. Please move your variables to `assets/scss/_variables.scss`. See: https://fixit.lruihao.cn/docs/advanced/" -}}
{{- end -}}
{{- if fileExists "assets/js/_custom.js" -}}
{{- $warns = $warns | append "The file `assets/js/_custom.js` is deprecated. Please move your custom scripts to `assets/js/custom.ts` or `assets/js/custom.js`. See: https://fixit.lruihao.cn/docs/advanced/" -}}
{{- end -}}
{{- if len $warns -}}
{{- warnf "[FixIt] deprecation warnings (%v):\n • %v\n\n" (hugo.Store.Get "version") (delimit $warns "\n • ") -}}
{{- end -}}
{{- if len $errors -}}
{{- errorf "[FixIt] deprecation errors (%v):\n • %v\n\n" (hugo.Store.Get "version") (delimit $errors "\n • ") -}}
{{- end -}}