N Nova Admin Developer Docs
مستندات Nova Admin راهنمای زبان‌ها، جهت صفحه و متن فارسی.

راهنمای چندزبانه و RTL/LTR

تعیین جهت صفحه

در admin/base.html و registration/base.html از tagهای Django استفاده شده است:

{% get_current_language as LANGUAGE_CODE %}
{% get_current_language_bidi as LANGUAGE_BIDI %}

<html lang="{{ LANGUAGE_CODE }}" dir="{% if LANGUAGE_BIDI %}rtl{% else %}ltr{% endif %}">

اگر LANGUAGE_CODE = "fa-ir" باشد، LANGUAGE_BIDI معمولاً true است و صفحه RTL می‌شود.

تنظیم فارسی

LANGUAGE_CODE = "fa-ir"
USE_I18N = True

تنظیم انگلیسی

LANGUAGE_CODE = "en-us"
USE_I18N = True

LocaleMiddleware

اگر زبان در runtime تغییر می‌کند:

MIDDLEWARE = [
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.locale.LocaleMiddleware",
    "django.middleware.common.CommonMiddleware",
]

ترجمه متن‌ها

هر متن قابل ترجمه در template باید یکی از این دو شکل باشد:

{% trans 'Dashboard' %}
{% blocktrans with name=opts.verbose_name %}Add {{ name }}{% endblocktrans %}

در Python:

from django.utils.translation import gettext_lazy as _

فایل ترجمه فارسی

jazzmin/locale/fa/LC_MESSAGES/django.po

بعد از ویرایش:

django-admin compilemessages

یا اگر فقط اپ را compile می‌کنی:

cd jazzmin
django-admin compilemessages -l fa

قواعد UI فارسی

  • برای متن فارسی letter-spacing استفاده نکن مگر برای label انگلیسی کوچک.
  • line-height متن‌ها بین 1.7 تا 2 مناسب‌تر است.
  • عبارت‌های فارسی رسمی‌تر:
    • افزودن رکورد به جای Add
    • گزارش فعالیت‌ها به جای Activity report
    • آخرین تغییرات به جای Recent actions
  • برای اعداد می‌توان در آینده filter تبدیل ارقام فارسی اضافه کرد، اما در admin داده‌محور بهتر است اعداد خام Django حفظ شوند.

قواعد LTR

برای LTR از selectorهای scoped استفاده شده است:

html[dir="ltr"] .nova-sidebar { left: 0; right: auto; }
html[dir="ltr"] .nova-shell { margin-left: var(--sidebar-w); margin-right: 0; }

هنگام اضافه کردن component جدید، حتماً حالت LTR را هم تست کن.

Date/Time picker و زبان

main.js زبان صفحه را از attributeها می‌خواند:

const htmlLang = document.documentElement.lang || 'fa-ir';
const htmlDir = document.documentElement.dir || 'rtl';

اگر زبان فارسی باشد، datepicker با تقویم شمسی و RTL تنظیم می‌شود؛ در حالت LTR موقعیت popup با چپ/راست متفاوت محاسبه می‌شود.