دستیار فرمول LibreOffice Calc


ابزار Python برای ایجاد، آزمایش و مدیریت سریع فرمول‌های LibreOffice Calc – با سیستم نشانک‌ها، همگام‌سازی تیم، پشتیبانی چندزبانه، پشتیبان‌گیری و مدیر افزونه.

🚀 ویژگی‌ها


  • 📑 4 برگه با بیش از 60 تابع

  • 🌐 38 زبان (از جمله هندی با نصب خودکار فونت)

  • 🔤 پشتیبانی RTL (راست به چپ) – تشخیص خودکار جهت نوشتار

  • ⭐ سیستم نشانک‌ها (محلی و همگام‌سازی تیم از طریق درایو شبکه)

  • 🛠 پنل مدیریت برای نشانک‌های تیم (محافظت‌شده با رمز عبور)

  • 📋 فرمول‌های آماده کپی با برجسته‌سازی نحو

  • ✏️ فیلد خروجی قابل ویرایش با قابلیت لغو/تکرار

  • 📖 راهنمای یکپارچه و مرجع توابع (به ازای هر زبان)

  • 💾 ذخیره‌سازی خودکار (JSON، نوشتن اتمی)

  • 🌙 حالت تاریک

  • 🔌 مدیر افزونه برای ساخت افزونه‌های فرمول سفارشی

  • ⌨️ میانبر جهانی Ctrl+F12 برای کوچک‌سازی/بازیابی پنجره

  • 🗄️ پشتیبان‌گیری و بازیابی – ذخیره تمام تنظیمات و نشانک‌ها با نام و رمز عبور

  • 🔍 اعتبارسنج JSON – بررسی و اصلاح خودکار languages.json و formula_explanations.json

  • 🖥️ نحوه استفاده


    ۱. وارد کردن مقادیر

  • محدوده سلول (مثال: A1:A10)

  • سلول ۱ / سلول ۲ (مثال: A1، B1)

  • پارامتر اختیاری (مثال: متن یا شاخص)

  • حالت مرجع مطلق قابل انتخاب: A1، $A1، A$1، $A$1

  • ۲. انتخاب تابع یک برگه انتخاب کنید و روی تابع کلیک کنید – فرمول بلافاصله تولید می‌شود.

    ۳. تنظیم فرمول فرمول تولیدشده را می‌توان مستقیماً در فیلد خروجی ویرایش کرد.

    ۴. کپی کردن با یک کلیک در کلیپ‌بورد (شامل رنگ‌های نحو).

    ۵. استفاده از نشانک‌ها

  • ⭐ ذخیره → ذخیره فرمول فعلی (Ctrl+S)

  • 📂 بارگذاری → استفاده مجدد از فرمول

  • ❌ حذف → کلید Del یا دکمه

  • 🕐 تاریخچه → فرمول‌های اخیراً استفاده‌شده

  • 📊 نمای کلی برگه‌ها


    برگه ۱ – توابع پایه + - * / ^ SUM، AVERAGE، MIN، MAX، MEDIAN، COUNT، COUNTA، SUMPRODUCT

    برگه ۲ – توابع پیشرفته IF، AND، OR، NOT SUMIF، COUNTIF، AVERAGEIF، SUMIFS، STDEV، VAR، COUNTBLANK، LARGE

    برگه ۳ – تاریخ و متن TODAY، NOW، YEAR، MONTH، DAY، DATE، DATEDIF، WEEKDAY CONCATENATE، LEN، LEFT، RIGHT، MID، UPPER، LOWER، TRIM

    برگه ۴ – جستجو و گرد کردن VLOOKUP، HLOOKUP، INDEX، MATCH، INDEX+MATCH ROUND، ROUNDUP، ROUNDDOWN، INT، TRUNC، ABS، MOD، SQRT، RAND

    📖 توضیحات فرمول از مستندات LibreOffice


    فایل formula_explanations.json مستقیماً از مستندات رسمی LibreOffice Calc (https://help.libreoffice.org) پر می‌شود.

    منبع داده و به‌روزرسانی


  • توضیحات، اطلاعات نحو و مثال‌ها از سایت راهنمای رسمی LibreOffice گرفته می‌شوند
  • زبان‌های پشتیبانی‌شده به ترجمه‌های موجود در سایت بستگی دارند
  • فایل برای هر تابع شامل: نام، نحو، توضیح، مثال و دسته‌بندی است
  • افزوده‌ها یا اصلاحات می‌توانند به صورت دستی انجام شوند (به اعتبارسنج JSON مراجعه کنید)

  • ساختار formula_explanations.json


    `json
    {
    "SUM": {
    "fa": {
    "syntax": "SUM(عدد۱; عدد۲; ...)",
    "description": "تمام اعداد در یک محدوده سلول را جمع می‌زند.",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | فیلد | اجباری | توضیح |
    |------|--------|-------|
    | syntax | ✅ | نحو فرمول با پارامترها |
    | description | ✅ | توضیح کوتاه تابع |
    | example | ✅ | مثال استفاده به صورت فرمول آماده |
    | note | ❌ | یادداشت اختیاری |

    💡 توجه: اگر برای زبانی ورودی وجود نداشته باشد، برنامه به طور خودکار به نسخه انگلیسی برمی‌گردد.

    ---

    🔍 اعتبارسنج JSON برای فایل‌های زبانی


    اعتبارسنج JSON یکپارچه، فایل‌های languages.json و formula_explanations.json را از نظر سازگاری، کامل بودن و صحت نام کشورها بررسی و اصلاح می‌کند. از طریق تنظیمات → 🔍 اعتبارسنج JSON قابل دسترسی است.

    چه چیزی بررسی می‌شود؟


    #### languages.json

  • ✅ تمام 38 زبان موجودند (بر اساس کد ISO 639-1)
  • نام صحیح کشور و زبان (مثلاً "fa""فارسی")
  • ✅ بدون کدهای زبانی تکراری
  • ✅ فیلدهای اجباری موجودند: name، native_name، flag، rtl
  • ✅ پرچم RTL به درستی تنظیم شده (عربی، عبری، فارسی، اردو → "rtl": true)
  • ✅ ایموجی پرچم متناسب با کد زبان

  • #### formula_explanations.json

  • ✅ تمام توابع از 4 برگه وارد شده‌اند
  • ✅ فیلدهای اجباری موجودند: syntax، description، example
  • ✅ بدون فیلدهای خالی ("" یا null)
  • ✅ کدهای زبانی با languages.json مطابقت دارند
  • ✅ بدون نام تابع تکراری

  • توابع اصلاح


    | نوع خطا | اصلاح خودکار |
    |---------|-------------|
    | نام کشور نادرست | با نام صحیح طبق استاندارد ISO جایگزین می‌شود |
    | ورودی زبان مفقود | با نسخه پشتیبان انگلیسی پر می‌شود |
    | فیلد اجباری خالی | به عنوان "[MISSING]" برای بررسی دستی علامت‌گذاری می‌شود |
    | ورودی تکراری | موارد تکراری حذف و کامل‌ترین ورودی نگه داشته می‌شود |
    | پرچم RTL نادرست | بر اساس کدهای RTL شناخته‌شده به طور خودکار اصلاح می‌شود |

    نحوه استفاده


    1. تنظیمات → 🔍 اعتبارسنج JSON را باز کنید
    2. فایل را انتخاب کنید: languages.json یا formula_explanations.json (یا هر دو)
    3. 🔎 بررسی – تمام مشکلات پیدا شده را نشان می‌دهد
    4. 🛠 اصلاح خودکار – تمام خطاهای قابل رفع خودکار را برطرف می‌کند
    5. 💾 ذخیره – فایل اصلاح‌شده را به صورت اتمی برمی‌نویسد
    6. 📋 خروجی گزارش (اختیاری) – فایل متنی با تمام نتایج را ذخیره می‌کند

    ⚠️ توجه: قبل از هر اصلاح خودکار، یک نسخه پشتیبان از فایل اصلی ایجاد می‌شود (languages.json.bak / formula_explanations.json.bak).

    جدول اصلاح نام‌های کشور (نمونه)


    | کد زبان | نادرست (نمونه‌ها) | صحیح |
    |---------|-----------------|------|
    | fa | Farsi, Persian, فارسی_IR | فارسی |
    | ar | Arabic, Arabisch | العربية |
    | de | German, Allemand | Deutsch |
    | en | Englisch, Anglais | English |
    | fr | French, Französisch | Français |
    | zh | Chinese, Chinesisch | 中文 |
    | hi | Hindi_IN, Hindisch | हिंदी |
    | he | Hebrew, Hebräisch | עברית |
    | ur | Urdu_PK, Urdisch | اردو |
    | ru | Russian, Russisch | Русский |
    | ja | Japanese, Japanisch | 日本語 |
    | ko | Korean, Koreanisch | 한국어 |

    💡 اعتبارسنج تمام 38 زبان پشتیبانی‌شده را از نظر نام بومی صحیح (native_name) طبق استاندارد ISO بررسی می‌کند.

    ⭐ سیستم نشانک‌ها


  • ذخیره و استفاده مجدد از فرمول‌های خود

  • جداسازی نشانک‌های شخصی و تیمی

  • نشانک‌های تیمی فقط خواندنی هستند (فقط مدیر می‌تواند ویرایش کند)

  • جلوگیری از ورودی‌های تکراری

  • مرتب‌سازی آزاد نشانک‌های شخصی

  • همگام‌سازی از طریق درایو شبکه (به صورت اختیاری قابل تنظیم)

  • همگام‌سازی تیم


    از طریق تنظیمات → 🌐 مسیر شبکه می‌توان یک درایو شبکه وارد کرد (مثلاً \\سرور\اشتراک\فرمول‌ها).

  • در هنگام راه‌اندازی: نشانک‌های شبکه به صورت محلی ذخیره می‌شوند (پشتیبان آفلاین)

  • در هنگام ذخیره: فرمول‌های شخصی در شبکه نوشته می‌شوند، فرمول‌های تیمی دست‌نخورده می‌مانند

  • 🗄️ پشتیبان‌گیری و بازیابی


    سیستم پشتیبان‌گیری یکپارچه، پشتیبان‌گیری و بازیابی کامل تمام داده‌ها – از جمله نشانک‌ها، تنظیمات و پیکربندی تیم – را امکان‌پذیر می‌کند.

    ایجاد پشتیبان


    از طریق تنظیمات → 🗄️ ایجاد پشتیبان:

    1. نام – برچسب آزادانه انتخابی (مثلاً پشتیبان_اردیبهشت_۱۴۰۴)
    2. رمز عبور – پشتیبان با AES رمزگذاری می‌شود؛ بدون رمز عبور بازیابی امکان‌پذیر نیست
    3. محل ذخیره – محلی یا روی درایو شبکه
    4. روی 💾 ایجاد پشتیبان کلیک کنید – فایل .calc2backup ایجاد می‌شود

    محتوای پشتیبان:

  • تمام نشانک‌های شخصی (favoriten.json)
  • تمام تنظیمات (settings.json)
  • نشانک‌های تیمی اختیاری (در صورت تنظیم مسیر شبکه)
  • افزونه‌های نصب‌شده (فراداده و فرمول‌ها)

  • بازیابی پشتیبان


    از طریق تنظیمات → 📂 بازیابی پشتیبان:

    1. فایل پشتیبان را انتخاب کنید (.calc2backup)
    2. رمز عبور را وارد کنید
    3. محدوده بازیابی را انتخاب کنید:
    - فقط نشانک‌ها
    - فقط تنظیمات
    - بازیابی همه چیز
    4. روی 🔄 بازیابی کلیک کنید – داده‌ها وارد می‌شوند، نیازی به راه‌اندازی مجدد نیست

    ⚠️ توجه: در هنگام بازیابی داده‌های موجود بازنویسی می‌شوند. قبل از بازیابی، پشتیبان‌گیری خودکار از داده‌های فعلی پیشنهاد می‌شود.

    فراموش کردن رمز عبور


    پشتیبان‌ها بدون رمز عبور صحیح قابل بازیابی نیستند (هیچ درب پشتی وجود ندارد). رمزهای عبور را در جای امن نگه دارید، مثلاً در یک مدیر رمز عبور.

    🛠 پنل مدیریت


    از طریق دکمه 🛠 قابل دسترسی است. در اولین کلیک یک رمز عبور تنظیم می‌شود (PBKDF2-SHA256، فقط هش ذخیره می‌شود).

  • افزودن، ویرایش و حذف فرمول‌های تیمی

  • تغییر رمز عبور

  • نوشتن تغییرات مستقیماً در درایو شبکه

  • 🌐 چندزبانی و پشتیبانی RTL


    ۳۸ زبان


    38 زبان در دسترس است که مستقیماً در برنامه قابل تغییر هستند.
    زبان‌های جدید می‌توانند از طریق دکمه 🌍 با دستیار زبان اضافه شوند.

    توجه هندی (हिंदी): در اولین تغییر به هندی، فونت *Noto Sans Devanagari* یک بار در سطح سیستم نصب می‌شود. Windows در این مورد درخواست حقوق مدیریتی می‌کند.

    🔤 پشتیبانی RTL (راست به چپ)


    زبان‌هایی با جهت نوشتار راست به چپ به طور خودکار شناسایی می‌شوند و کل رابط کاربری آینه‌وار می‌شود:

  • عربی (عربي) – تشخیص خودکار RTL

  • عبری (עברית) – تشخیص خودکار RTL

  • فارسی (فارسی) – تشخیص خودکار RTL

  • اردو (اردو) – تشخیص خودکار RTL

  • سایر زبان‌های RTL هنگام افزودن از طریق دستیار زبان به طور خودکار شناسایی می‌شوند

  • چه چیزی در RTL تغییر می‌کند:

  • کل چیدمان UI آینه‌وار می‌شود (دکمه‌ها، برگه‌ها، فیلدها)

  • فیلدهای ورودی متن از تراز RTL استفاده می‌کنند

  • لیست نشانک‌ها و تاریخچه راست‌چین می‌شوند

  • فیلد خروجی فرمول‌ها در حالت RTL (اما متن فرمول در LTR باقی می‌ماند)

  • فونت به طور خودکار به یک فونت سازگار با RTL تغییر می‌کند (مثلاً *Noto Sans Arabic*، *Noto Sans Hebrew*)

  • 💡 توجه: فرمول‌های LibreOffice تولیدشده همیشه در نحو LTR هستند – فقط رابط کاربری جهت را تغییر می‌دهد.

    🔌 مدیر افزونه


    مدیر افزونه (plugin_manager.py) یک ابزار مستقل برای ایجاد و مدیریت افزونه‌های فرمول سفارشی برای Calc2 است. در همان پوشه Calc2.py قرار دارد و از دکمه 🔌 در Calc2.py راه‌اندازی می‌شود:

    توابع


  • ایجاد افزونه جدید – دستیار گام‌به‌گام (نام، فرمول‌ها، ترجمه‌ها، خلاصه)

  • افزودن فرمول‌ها – افزودن فرمول به افزونه موجود

  • ویرایش ترجمه‌ها – ترجمه نام فرمول‌ها به تمام 38 زبان

  • باز کردن پوشه افزونه – مستقیماً در مدیر فایل

  • حذف افزونه – با تأیید امنیتی

  • ساختار افزونه


    هر افزونه به صورت زیرپوشه در plugins/ قرار دارد و از دو فایل تشکیل شده است:

    `
    plugins/
    افزونه_من/
    plugin.json ← فراداده (نام، نسخه، نویسنده، توضیح)
    formulas.json ← فرمول‌ها با ترجمه‌ها
    `

    مثال plugin.json:

    `json
    {
    "id": "افزونه_من",
    "enabled": true,
    "version": "1.0",
    "author": "نام شما",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "fa": "فرمول‌های مالی" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    مثال formulas.json:

    `json
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "fa": "جمع محدوده" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "fa": "پایه" }
    }
    ]
    `

    اطلاعیه مهم (⚠️ Important Notice)


    در مدیر افزونه دکمه ⚠️ Important Notice وجود دارد. کلیک روی آن پنجره‌ای با تمام قوانین برای ایجاد صحیح افزونه به زبان انگلیسی باز می‌کند. همان اطلاعات در IMPORTANT_NOTICE.md نیز موجود است.

    💡 نکات


  • $A$1 → مرجع مطلق (منوی کشویی کنار فیلدهای سلول)

  • Ctrl+S → ذخیره فرمول در نشانک‌ها

  • Ctrl+C → کپی فرمول (خارج از فیلدهای ورودی)

  • Ctrl+Z / Ctrl+Y → لغو / تکرار

  • Ctrl+F12 → کوچک‌سازی / بازیابی پنجره (حتی وقتی Calc2 کوچک‌شده است کار می‌کند)

  • کلید Del در لیست نشانک‌ها → حذف ورودی

  • فرمول‌ها می‌توانند پس از تولید مستقیماً در فیلد خروجی تنظیم شوند

  • در زبان‌های RTL: خروجی فرمول همیشه LTR باقی می‌ماند – فقط UI آینه‌وار می‌شود

  • 📁 ساختار پروژه


    `
    Calc2.py ← برنامه اصلی
    plugin_manager.py ← مدیر افزونه
    IMPORTANT_NOTICE.md ← راهنمای ایجاد افزونه
    data/
    README_fa.md / README_en.md / ... ← راهنما به ازای هر زبان
    REFERENZ_fa.md / REFERENZ_en.md / ... ← مرجع توابع به ازای هر زبان
    language/
    languages.json ← ترجمه‌های رابط کاربری (38 زبان)
    formula_explanations.json ← توضیحات فرمول (از وبسایت LibreOffice)
    services/
    language_tool.py ← دستیار: افزودن زبان جدید
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← پشتیبان‌گیری و بازیابی
    json_validator.py ← بررسی و اصلاح languages.json / formula_explanations.json
    plugins/ ← پوشه افزونه (به طور خودکار ایجاد می‌شود)
    افزونه_من/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← فونت هندی
    NotoSansArabic-Regular.ttf ← فونت عربی (RTL)
    NotoSansHebrew-Regular.ttf ← فونت عبری (RTL)
    python/ ← Python تعبیه‌شده
    python.exe
    ...
    settings.json ← به طور خودکار ایجاد می‌شود
    نشانک‌ها.json ← نشانک‌های محلی (به طور خودکار ایجاد می‌شود)
    `

    🧠 ویژگی‌های فنی


  • نوشتن اتمی فایل‌ها → از آسیب دیدن فایل‌ها در هنگام ذخیره جلوگیری می‌کند

  • معماری سرویس → منطق و رابط کاربری کاملاً جدا هستند

  • مهاجرت خودکار → فرمت‌های قدیمی نشانک‌ها شناسایی و تبدیل می‌شوند

  • مدیریت خطای قوی → فایل‌های معیوب باعث کرش برنامه نمی‌شوند

  • برجسته‌سازی نحو → فرمول‌ها با رنگ نمایش داده می‌شوند

  • حالت تاریک → پشتیبانی کامل

  • سیستم افزونه → Calc2 با افزونه‌های فرمول سفارشی قابل توسعه است

  • میانبر جهانیCtrl+F12 از طریق کتابخانه keyboard در سطح سیستم کار می‌کند (رشته پس‌زمینه)

  • موتور RTL → تشخیص خودکار زبان‌های RTL، آینه‌وار کردن کامل رابط کاربری با فونت‌های مناسب

  • پشتیبان‌گیری و بازیابی → پشتیبان‌های رمزگذاری‌شده AES با نام و رمز عبور، بازیابی انتخابی

  • اعتبارسنج JSON → بررسی و اصلاح خودکار languages.json و formula_explanations.json از جمله نام کشورها و فیلدهای اجباری

  • منبع LibreOfficeformula_explanations.json از مستندات رسمی LibreOffice Calc پر می‌شود (https://help.libreoffice.org)

  • مجوز


    استفاده آزاد برای اهداف شخصی و تجاری.