← GDG /

#267 gdtest_i18n_arabic

#267 gdtest_i18n_arabic OK CONFIG
i18n test with Arabic (RTL script). Docstrings, user guide, and metadata are written in Arabic for full native-language experience.
i18n test with Arabic (RTL script). Sets site.language: ar and enables every translatable widget. Verifies dir=rtl on the HTML element, right-to-left layout mirroring, flipped sidebar, repositioned buttons, and all UI strings in Arabic.
View Site → Build Log 🧪 Test Coverage

Build Mode

● Has great-docs.yml

This package ships a pre-supplied config. The great-docs init step is skipped and great-docs build uses the spec-defined configuration directly. Tests specific config options and their rendered output.

Dimensions

K52
K52i18n: Arabic (RTL)config

Source Files

📁 gdtest_i18n_arabic/
📄 __init__.py
"""أدوات تنسيق النصوص والقوالب."""

__version__ = "0.1.0"
__all__ = [
    "Formatter",
    "format_text",
    "parse_template",
    "escape_html",
]


class Formatter:
    """
    تنسيق النصوص باستخدام القوالب.

    يدعم استبدال العناصر النائبة، وترميز HTML،
    وفواصل قابلة للتخصيص.

    Parameters
    ----------
    left_delim : str
        الفاصل الأيسر للعناصر النائبة.
    right_delim : str
        الفاصل الأيمن للعناصر النائبة.
    auto_escape : bool
        ترميز HTML تلقائياً للقيم المستبدلة.

    See Also
    --------
    format_text
        تغليف النص بعرض سطر محدد.
    escape_html
        ترميز الأحرف الخاصة في HTML.

    Examples
    --------
    >>> fmt = Formatter(left_delim="{{", right_delim="}}")
    >>> fmt.render("مرحباً {{name}}!", name="World")
    'مرحباً World!'

    .. versionadded:: 0.1.0
    """

    def __init__(
        self,
        left_delim: str = "{{",
        right_delim: str = "}}",
        auto_escape: bool = True,
    ):
        self.left_delim = left_delim
        self.right_delim = right_delim
        self.auto_escape = auto_escape

    def render(self, template: str, **kwargs: str) -> str:
        """
        عرض القالب بالقيم المعطاة.

        Parameters
        ----------
        template : str
            نص القالب.
        **kwargs : str
            القيم المسماة للاستبدال.

        Returns
        -------
        str
            النص المعروض.
        """
        result = template
        for key, value in kwargs.items():
            placeholder = f"{self.left_delim}{key}{self.right_delim}"
            result = result.replace(placeholder, str(value))
        return result

    def list_placeholders(self, template: str) -> list[str]:
        """
        استخراج أسماء العناصر النائبة من القالب.

        Parameters
        ----------
        template : str
            القالب المراد فحصه.

        Returns
        -------
        list[str]
            قائمة بأسماء العناصر النائبة الموجودة.
        """
        return []


def format_text(text: str, width: int = 80) -> str:
    """
    تغليف النص بعرض سطر محدد.

    Parameters
    ----------
    text : str
        النص المراد تغليفه.
    width : int
        أقصى عرض للسطر.

    Returns
    -------
    str
        النص المُغلَّف.

    See Also
    --------
    Formatter
        تنسيق النصوص باستخدام القوالب.
    parse_template
        تحليل نص القالب إلى مكوناته.

    .. versionchanged:: 0.1.0 أصبح العرض الافتراضي 80 حرفاً.
    """
    return text


def parse_template(source: str) -> dict:
    """
    تحليل نص القالب إلى مكوناته.

    Parameters
    ----------
    source : str
        نص القالب الخام.

    Returns
    -------
    dict
        القالب المحلل مع مفاتيح 'text' و 'placeholders'.
    """
    return {"text": source, "placeholders": []}


def escape_html(value: str) -> str:
    """
    ترميز الأحرف الخاصة في HTML.

    Parameters
    ----------
    value : str
        النص المراد ترميزه.

    Returns
    -------
    str
        نص آمن لاستخدامه في HTML.

    See Also
    --------
    Formatter
        تنسيق النصوص باستخدام القوالب.
    format_text
        تغليف النص بعرض سطر محدد.

    .. deprecated:: 0.1.0
        استخدم Formatter(auto_escape=True) بدلاً من ذلك.
    """
    return (
        value
        .replace("&", "&")
        .replace("<", "&lt;")
        .replace(">", "&gt;")
    )
📁 user_guide/
📄 01-overview.qmd
---
title: "نظرة عامة"
guide-section: "الأساسيات"
---

# نظرة عامة

يوفر هذا الحزمة أدوات لتنسيق النصوص مع دعم
القوالب وترميز HTML.

## التثبيت

```bash
pip install gdtest-i18n-arabic
```

## مثال سريع

```python
from gdtest_i18n_arabic import Formatter

fmt = Formatter()
result = fmt.render("مرحباً {{name}}!", name="World")
print(result)
```
📄 02-templates.qmd
---
title: "القوالب"
guide-section: "الأساسيات"
---

# القوالب

تعلم كيفية استخدام نصوص القوالب مع العناصر النائبة.

## صيغة العناصر النائبة

```python
from gdtest_i18n_arabic import parse_template

result = parse_template("مرحباً {{name}}، أهلاً بك في {{place}}!")
print(result["placeholders"])
```

## ترميز HTML

```python
from gdtest_i18n_arabic import escape_html

safe = escape_html("<script>alert('test')</script>")
print(safe)
```
📄 03-table-explorer.qmd
---
title: "مستكشف الجدول"
guide-section: "الأساسيات"
---

# مستكشف الجدول

استخدم `tbl_explorer()` لاستكشاف بياناتك بشكل تفاعلي.

```{python}
#| echo: false
import tempfile
from great_docs import tbl_explorer
rows = "الاسم,العمر,المدينة,الدرجة\nأحمد,28,القاهرة,92.5\nفاطمة,35,الرياض,87.3\nخالد,22,دبي,95.1\nنور,41,بيروت,78.6\nسارة,30,الدار البيضاء,88.9\nعمر,27,تونس,91.2\nليلى,33,عمان,84.7"
tf = tempfile.NamedTemporaryFile(mode="w", suffix=".csv", delete=False)
tf.write(rows)
tf.close()
tbl_explorer(tf.name)
```
📄 README.md
# gdtest-i18n-arabic

أدوات تنسيق النصوص والقوالب.

## الميزات

- استبدال العناصر النائبة في القوالب
- ترميز أحرف HTML الخاصة
- فواصل قابلة للتخصيص

## الترخيص

MIT
📄 great-docs.yml
site:
  language: ar
announcement: مرحباً! اطلع على دليل البدء السريع الجديد.
github_url: "https://github.com/test-org/gdtest-i18n-arabic"
dark_mode_toggle: true
back_to_top: true
copy_code: true
page_metadata: true
funding:
  name: مؤسسة البحث العلمي