Files
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

37 lines
1.6 KiB
HTML

{{- partial "init/index.html" . -}}
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebPage" lang="{{ .Site.Language.Locale }}" dir="{{ .Site.Language.Direction | default `ltr` }}">
<head>
{{- if .IsHome | and (ne .Site.Params.disable_theme_inject true) }}
<meta name="theme" content='FixIt {{ hugo.Store.Get "version" }}'>
{{- end }}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{- partial "base/head/index.html" . -}}
</head>
<body data-instant-intensity="viewport" data-header-desktop="{{ .Site.Params.header.desktop_mode }}" data-header-mobile="{{ .Site.Params.header.mobile_mode }}">
{{- /* Body wrapper */ -}}
<div class="wrapper" data-page-style="{{ .Param `page_style` | default `normal` }}">
{{- partial "base/header.html" . -}}
{{- partial "base/breadcrumb.html" . -}}
{{- $toc := dict "Page" .Page "Key" "toc" | partial "function/param.html" -}}
{{- $tocPosition := $toc.position | default "end" | partial "function/logical-direction.html" -}}
<main class="fi-container"{{ if (eq $toc.enable true) | and (eq $tocPosition `start`) }} data-reverse{{ end }}>
{{- block "content" . }}{{ end -}}
</main>
{{- /* Comment */ -}}
{{- block "comments" . }}{{ end -}}
{{- /* Footer */ -}}
{{- partialCached "base/footer.html" . -}}
</div>
{{- /* Theme widgets */ -}}
{{- partial "base/widgets.html" . -}}
{{- /* Load JavaScript scripts and CSS */ -}}
{{- partial "base/assets.html" . -}}
</body>
</html>