Files
opensourcepos/app/Language/ar-EG/Config.php
Ollama 8da4aff262 fix(security): prevent command injection in sendmail path configuration
Add validation for the mailpath POST parameter to prevent command injection
attacks. The path is validated to only allow alphanumeric characters,
underscores, dashes, forward slashes, and dots.

- Required mailpath when protocol is "sendmail"
- Validates format for all non-empty mailpath values
- Blocks common injection vectors: ; | & ` $() spaces newlines
- Added mailpath_invalid translation to all 43 language files
- Simplified validation logic to avoid redundant conditions

Files changed:
- app/Controllers/Config.php: Add regex validation with protocol check
- app/Language/*/Config.php: Add mailpath_invalid error message (43 languages)
- tests/Controllers/ConfigTest.php: Unit tests for validation
2026-04-06 18:37:07 +00:00

333 lines
30 KiB
PHP

<?php
return [
"address" => "عنوان الشركة",
"address_required" => "عنوان الشركة مطلوب.",
"all_set" => "صلاحيات الملفات مضبطة بالطريقه الصحيحه!",
"allow_duplicate_barcodes" => "السماح بتشابة الباركود",
"apostrophe" => "الفاصلة",
"backup_button" => "نسخ إحتياطى",
"backup_database" => "نسخ إحتياطى لقاعدة البيانات",
"barcode" => "باركود",
"barcode_company" => "اسم الشركة",
"barcode_configuration" => "اعدادات الباركود",
"barcode_content" => "محتويات الباركود",
"barcode_first_row" => "الصف 1",
"barcode_font" => "الخط",
"barcode_formats" => "اشكال الادخال",
"barcode_generate_if_empty" => "توليد اذا كان الباركود فارغ.",
"barcode_height" => "الارتفاع (px)",
"barcode_id" => "كود/اسم الصنف",
"barcode_info" => "معلومات اعدادات الباركود",
"barcode_layout" => "تخطيط الباركود",
"barcode_name" => "الاسم",
"barcode_number" => "الباركود UPC/EAN/ISBN",
"barcode_number_in_row" => "الرقم فى الصف",
"barcode_page_cellspacing" => "المسافة بين الخلايا فى صفحة العرض.",
"barcode_page_width" => "عرض الصفحة",
"barcode_price" => "السعر",
"barcode_second_row" => "الصف 2",
"barcode_third_row" => "الصف 3",
"barcode_tooltip" => "تحذير: قد تؤدي هذه الميزة إلى استيراد اصناف مكررة أو إنشاؤها. لا تستخدمها إذا كنت لا تريد الباركود مكررة.",
"barcode_type" => "نوعية الباركود",
"barcode_width" => "العرض (px)",
"bottom" => "الأسفل",
"cash_button" => "",
"cash_button_1" => "",
"cash_button_2" => "",
"cash_button_3" => "",
"cash_button_4" => "",
"cash_button_5" => "",
"cash_button_6" => "",
"cash_decimals" => "فواصل النقدية",
"cash_decimals_tooltip" => "إذا كانت الكسور العشرية النقدية وعشرية العملات هي نفسها ثم لن يتم تقريب النقدية.",
"cash_rounding" => "التقريب النقدي",
"category_dropdown" => "إظهار الفئة كقائمة منسدلة",
"center" => "الوسط",
"change_apperance_tooltip" => "",
"comma" => "فاصلة",
"company" => "اسم الشركة",
"company_avatar" => "",
"company_change_image" => "تغيير الصورة",
"company_logo" => "شعار الشركة",
"company_remove_image" => "إزالة الصورة",
"company_required" => "اسم الشركة مطلوب",
"company_select_image" => "اختار صورة",
"company_website_url" => "الموقع الإلكترونى للشركة غير صحيح.",
"country_codes" => "أكواد الدولة",
"country_codes_tooltip" => "قائمة مفصولة بفاصلة لاسماء الدول للبحث.",
"currency_code" => "رمز العملة",
"currency_decimals" => "العلامة العشرية للعملة",
"currency_symbol" => "رمز العملة",
"current_employee_only" => "",
"customer_reward" => "المكافآت",
"customer_reward_duplicate" => "المكافئة يجب ان تكون فريدة.",
"customer_reward_enable" => "تمكين مكافآت العميل",
"customer_reward_invalid_chars" => "لا يمكن أن تحتوي المكافأة على '_'",
"customer_reward_required" => "المكافأة هي حقل مطلوب",
"customer_sales_tax_support" => "دعم الضرائب المبيعات العملاء",
"date_or_time_format" => "تصفية التاريخ والوقت",
"datetimeformat" => "شكل الوقت و التاريخ",
"decimal_point" => "العلامة العشرية",
"default_barcode_font_size_number" => "الحجم الافتراضي لخط الباركود لابد أن يكون رقم.",
"default_barcode_font_size_required" => "الحجم الافتراضي لخط الباركود مطلوب.",
"default_barcode_height_number" => "الارتفاع الافتراضي للباركود لابد ان يكون رقم.",
"default_barcode_height_required" => "الارتفاع الافتراضي للباركود مطلوب.",
"default_barcode_num_in_row_number" => "رقم الباركود فى اى سطر لابد ان يكون رقم.",
"default_barcode_num_in_row_required" => "رقم الباركود فى اى سطر مطلوب.",
"default_barcode_page_cellspacing_number" => "المسافة الافتراضية بين خلايا الباركود لابد أن تكون رقم.",
"default_barcode_page_cellspacing_required" => "المسافة الافتراضية بين خلايا الباركود مطلوبة.",
"default_barcode_page_width_number" => "عرض الصفحة الافتراضي للباركود لابد ان يكون رقم.",
"default_barcode_page_width_required" => "عرض الصفحة الافتراضي للباركود مطلوب.",
"default_barcode_width_number" => "العرض الافتراضي للباركود لابد ان يكون رقم.",
"default_barcode_width_required" => "العرض الافتراضي للباركود مطلوب.",
"default_item_columns" => "الخانات المراد إظهارها",
"default_origin_tax_code" => "كود الضريبة الاساسي الافتراضي",
"default_receivings_discount" => "خصم الإيصالات الافتراضي",
"default_receivings_discount_number" => "خصم الإيصالات الافتراضي يجب ان يكون رقم.",
"default_receivings_discount_required" => "خصم الإيصالات الافتراضي هي خانة اجبارية.",
"default_sales_discount" => "نسبة الخصم الافتراضية",
"default_sales_discount_number" => "نسبة الخصم الافتراضية لابد ان تكون رقم.",
"default_sales_discount_required" => "نسبة الخصم الافتراضية مطلوبة.",
"default_tax_category" => "فئة الضرائب الافتراضية",
"default_tax_code" => "قانون الضرائب الافتراضي",
"default_tax_jurisdiction" => "الاختصاص الضريبي الافتراضي",
"default_tax_name_number" => "يجب أن يكون الاسم الافتراضي للضريبة سلسلة.",
"default_tax_name_required" => "اسم الضريبة الافتراضية مطلوب.",
"default_tax_rate" => "معدل الضريبة الافتراضي %",
"default_tax_rate_1" => "معدل الضريبة 1",
"default_tax_rate_2" => "معدل الضريبة 2",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "معدل الضريبة الافتراضي يجب أن يكون رقم.",
"default_tax_rate_required" => "معدل الضريبة الافتراضي مطلوب.",
"derive_sale_quantity" => "السماح بأسعار البيع المشتقة",
"derive_sale_quantity_tooltip" => "إذا تم تحديدها، فسيتم توفير نوع جديد من الاصناف للاصناف المطلوبة حسب المبلغ الموسع",
"dinner_table" => "طاولة",
"dinner_table_duplicate" => "الطاولة يجب ان تكون فريدة.",
"dinner_table_enable" => "تمكين جداول الطاولات",
"dinner_table_invalid_chars" => "لا يمكن أن يحتوي اسم الطاولة على '_'.",
"dinner_table_required" => "الطاولة هو حقل مطلوب.",
"dot" => "نقطة",
"email" => "البريد الإلكتروني",
"email_configuration" => "إعدادات البريد الإلكتروني",
"email_mailpath" => "مسار ارسال البريد",
"email_protocol" => "بروتوكول",
"email_receipt_check_behaviour" => "ارسال رسائل الكترونية",
"email_receipt_check_behaviour_always" => "مختار دائما",
"email_receipt_check_behaviour_last" => "تذكر آخر إختيار",
"email_receipt_check_behaviour_never" => "دائما غير مختار",
"email_smtp_crypto" => "تشفير SMTP",
"email_smtp_host" => "خادم SMTP",
"email_smtp_pass" => "كلمة سر SMTP",
"email_smtp_port" => "رقم منفذ SMTP",
"email_smtp_timeout" => "وقت فشل المحاولة (ثوانى) لـ SMTP",
"email_smtp_user" => "اسم مستخدم SMTP",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "فرض نظام الخصوصية",
"enforce_privacy_tooltip" => "حماية ملفات ومعلومات المستخدم عند الحذف",
"fax" => "الفاكس",
"file_perm" => "يوجد خطأ في ضبط اعدادات وصلاحيات الملفات نرجوا إعادة الضبط.",
"financial_year" => "بداية السنة المالية",
"financial_year_apr" => "1 أبريل",
"financial_year_aug" => "1 أغسطس",
"financial_year_dec" => "1 ديسمبر",
"financial_year_feb" => "1 فبراير",
"financial_year_jan" => "1 يناير",
"financial_year_jul" => "1 يوليو",
"financial_year_jun" => "1 يونيو",
"financial_year_mar" => "1 مارس",
"financial_year_may" => "1 مايو",
"financial_year_nov" => "1 نوفمبر",
"financial_year_oct" => "1 أكتوبر",
"financial_year_sep" => "1 سبتمبر",
"floating_labels" => "تسميات عائمة",
"gcaptcha_enable" => "صفحة تسجيل الدخول ريكابتشا",
"gcaptcha_secret_key" => "مفتاح السرية ريكابتشا",
"gcaptcha_secret_key_required" => "مفتاح السرية ريكابتشا هو حقل مطلوب",
"gcaptcha_site_key" => "ريكابتشا مفتاح الموقع",
"gcaptcha_site_key_required" => "ريكابتشا مفتاح الموقع هو حقل مطلوب",
"gcaptcha_tooltip" => "احرص على حماية صفحة تسجيل الدخول باستخدام ريكابتشا من غوغل.",
"general" => "عام",
"general_configuration" => "إعدادات عامة",
"giftcard_number" => "رقم كارت الهدية",
"giftcard_random" => "توليد عشوائي",
"giftcard_series" => "توليد في السلسلة",
"image_allowed_file_types" => "أنواع الملفات المسموح بها",
"image_max_height_tooltip" => "أقصى ارتفاع مسموح به لتحميلات الصور بالبكسل (بكسل).",
"image_max_size_tooltip" => "أقصى حجم مسموح به للملف لتحميل الصور (بالكيلو بايت).",
"image_max_width_tooltip" => "أقصى عرض مسموح به لتحميلات الصور بالبكسل (بكسل).",
"image_restrictions" => "قيود تحميل الصور",
"include_hsn" => "تشمل الدعم لرمز نظام منسق",
"info" => "معلومات",
"info_configuration" => "معلومات الشركة",
"input_groups" => "مجموعات الإدخال",
"integrations" => "التكامل",
"integrations_configuration" => "تكامل",
"invoice" => "الفاتورة",
"invoice_configuration" => "إعدادات طباعة الفاتورة",
"invoice_default_comments" => "التعليق الافتراضي على الفاتورة",
"invoice_email_message" => "قالب البريد الإلكتروني للفاتورة",
"invoice_enable" => "تفعيل الفوترة",
"invoice_printer" => "طابعة الفواتير",
"invoice_type" => "نوع الفاتورة",
"is_readable" => "يمكن قراءته ، ولكن تم تعيين الأذونات بشكل غير صحيح. يرجى ضبطه على 640 أو 660 والتحديث.",
"is_writable" => "ممكن التعديل عليه، لكن الصلاحيات هي اكثر من 750. نرجوا الضبط الى 750.",
"item_markup" => "",
"jsprintsetup_required" => "تحذير! هذه الخاصية غير المفعلة سوف تعمل فقط مع وجود الاضافة jsPrintSetup على متصفح فايرفوكس. حفظ على أى حال؟",
"language" => "اللغة",
"last_used_invoice_number" => "اخر رقم مستخدم للفاتورة",
"last_used_quote_number" => "اخر رقم مستخدم لعرض الاسعار",
"last_used_work_order_number" => "آخر رقم مستخدم في طلبات العمل",
"left" => "يسار",
"license" => "الرخصة",
"license_configuration" => "نص الرخصة",
"line_sequence" => "تسلسل خطي",
"lines_per_page" => "عدد السطور فى الصفحة",
"lines_per_page_number" => "عدد السطور فى الصفحة يجب أن يكون رقم.",
"lines_per_page_required" => "عدد السطور فى الصفحة مطلوب.",
"locale" => "إقليمية",
"locale_configuration" => "الإعدادات الإقليمية",
"locale_info" => "معلومات التهيئة الإقليمية",
"location" => "المخزون",
"location_configuration" => "أماكن المخزون",
"location_info" => "معلومات تهيئة الأماكن",
"login_form" => "نمط نموذج تسجيل الدخول",
"logout" => "هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج.",
"mailchimp" => "ميل تشامب",
"mailchimp_api_key" => "مفتاح ميل شيمب",
"mailchimp_configuration" => "إعدادات ميل شيمب",
"mailchimp_key_successfully" => "نجاح.",
"mailchimp_key_unsuccessfully" => "فشل.",
"mailchimp_lists" => "إعدادات ميل شيمب",
"mailchimp_tooltip" => "انقر على رمز مفتاح API.",
"message" => "الرسائل",
"message_configuration" => "إعدادات الرسائل",
"msg_msg" => "الرسائل النصية المحفوظة",
"msg_msg_placeholder" => "إذا أردت إستخدام قالب للرسائل القصيرة احفظه هنا. عدا ذلك أترك هذا الحقل فارغ.",
"msg_pwd" => "SMS-API كلمة السر لـ",
"msg_pwd_required" => "مطلوب SMS-API كلمة السر لـ",
"msg_src" => "SMS-API كود المرسل لـ",
"msg_src_required" => "مطلوب SMS-API كود المرسل لـ",
"msg_uid" => "SMS-API اسم المستخدم لـ",
"msg_uid_required" => "مطلوب SMS-API اسم المستخدم لـ",
"multi_pack_enabled" => "رزم متعددة لكل صنف",
"no_risk" => "لا يوجد اي مشاكل في صلاحيات الملفات.",
"none" => "لايوجد",
"notify_alignment" => "مكان عرض رسائل المعلومات",
"number_format" => "شكل الرقم",
"number_locale" => "التهيئة الاقليمية",
"number_locale_invalid" => "التهيئة الإقليمية المختارة غير صحية، راجع الرابط الموجود فى الملاحظة لاختيار تهيئة مناسبة.",
"number_locale_required" => "رقم التهيئة الإقليمية مطلوب.",
"number_locale_tooltip" => "إيجاد تهيئة إقليمية مناسبة عبر الرابط.",
"os_timezone" => "المنطقة الزمنية OSPOS:",
"ospos_info" => "معلومات التثبيت OSPOS",
"payment_options_order" => "ترتيب خيارات الدفع",
"perm_risk" => "صلاحيات الملفات ممكن ان تشكل خطر في حال كانت غير صحيحة.",
"phone" => "هاتف الشركة",
"phone_required" => "هاتف الشركة مطلوب.",
"print_bottom_margin" => "الهامش السفلي",
"print_bottom_margin_number" => "الهامش السفلي يجب أن يكون رقم.",
"print_bottom_margin_required" => "الهامش السفلي مطلوب.",
"print_delay_autoreturn" => "العودة الى عمليات البيع تلقائيا ( عدد الثواني )",
"print_delay_autoreturn_number" => "الزمن المحدد للعودة الى عمليات البيع هو خانة اجبارية.",
"print_delay_autoreturn_required" => "الزمن المحدد للعودة الى عمليات البيع يجب ان يكون رقم.",
"print_footer" => "طباعة تذييل المتصفح",
"print_header" => "طباعة ترويسة المتصفح",
"print_left_margin" => "الهامش الأيسر",
"print_left_margin_number" => "الهامش الأيسر يجب ان يكون رقم.",
"print_left_margin_required" => "الهامش الأيسر مطلوب.",
"print_receipt_check_behaviour" => "خانة طباعة الفواتير",
"print_receipt_check_behaviour_always" => "دائما مختار",
"print_receipt_check_behaviour_last" => "تذكر آخر اختيار",
"print_receipt_check_behaviour_never" => "دائما ليس مختار",
"print_right_margin" => "الهامش الأيمن",
"print_right_margin_number" => "الهامش الأيمن يجب أن يكون رقم.",
"print_right_margin_required" => "الهامش الأيمن مطلوب.",
"print_silently" => "عرض صندوق حوار طباعة",
"print_top_margin" => "الهامش العلوى",
"print_top_margin_number" => "الهامش العلوى يجب أن يكون رقم.",
"print_top_margin_required" => "الهامش العلوى مطلوب.",
"quantity_decimals" => "العلامة العشرية للكمية",
"quick_cash_enable" => "",
"quote_default_comments" => "ملاحظات طلبات العمل الثابتة",
"receipt" => "الإيصال",
"receipt_category" => "",
"receipt_configuration" => "إعدادات طباعة الايصالات",
"receipt_default" => "افتراضى",
"receipt_font_size" => "الخط",
"receipt_font_size_number" => "رقم الخط يجب ان يكون رقم.",
"receipt_font_size_required" => "رقم الخط مطلوب.",
"receipt_info" => "معلومات تهيئة الإيصالات",
"receipt_printer" => "طابعة تذاكر",
"receipt_short" => "مختصر",
"receipt_show_company_name" => "عرض اسم الشركة",
"receipt_show_description" => "عرض الوصف",
"receipt_show_serialnumber" => "عرض الرقم المسلسل",
"receipt_show_tax_ind" => "عرض مؤشر الضريبة",
"receipt_show_taxes" => "عرض الضرائب",
"receipt_show_total_discount" => "عرض إجمالى الخصم",
"receipt_template" => "قالب الايصال",
"receiving_calculate_average_price" => "حساب متوسط سعر الأصناف المستلمة",
"recv_invoice_format" => "شكل فاتورة الإستلام",
"register_mode_default" => "نمط التسجيل الافتراضي",
"report_an_issue" => "بلغ عن خطأ",
"return_policy_required" => "سياسة الإسترجاع مطلوب.",
"reward" => "المكافاة",
"reward_configuration" => "اعدادات المكافاة",
"right" => "يمين",
"sales_invoice_format" => "شكل فاتورة البيع",
"sales_quote_format" => "شكل فاتورة عرض الاسعار",
"mailpath_invalid" => "",
"saved_successfully" => "تم حفظ التهيئة بنجاح.",
"saved_unsuccessfully" => "لم يتم حفظ التهيئة بنجاح.",
"security_issue" => "تحذير من ثغرة أمنية",
"server_notice" => "يرجى استخدام المعلومات أدناه للإبلاغ عن المشكلة.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "اظهار ايكونة المكتب",
"statistics" => "إرسال اﻹحصائيات",
"statistics_tooltip" => "إرسال اﻹحصائيات ﻷغراض التطوير و التحسين.",
"stock_location" => "مكان المخزون",
"stock_location_duplicate" => "من فضلك إستخدم اسم مكان غير مكرر.",
"stock_location_invalid_chars" => "مكان المخزون لايمكن أن يحتوى على '_'.",
"stock_location_required" => "مكان المخزون مطلوب.",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "العامود 1",
"suggestions_fourth_column" => "",
"suggestions_layout" => "تخطيط اقتراحات البحث",
"suggestions_second_column" => "العامود 2",
"suggestions_third_column" => "العامود 3",
"system_conf" => "اعدادات اخرى",
"system_info" => "System Info",
"table" => "جدول",
"table_configuration" => "اعدادات الجدول",
"takings_printer" => "طابعة الإيراد",
"tax" => "الضريبة",
"tax_category" => "تصنيف الضريبة",
"tax_category_duplicate" => "الفئة الضريبية اللتي تم ادخالها موجودة.",
"tax_category_invalid_chars" => "الفئة الضريبية اللتي تم ادخالها غير صحيحة.",
"tax_category_required" => "الفئة الضريبية مطلوبة.",
"tax_category_used" => "الفئة الضريبية اللتي تم تحديدها لا يمكن حذفها لانها قيد الاستعمال.",
"tax_configuration" => "إعدادات الضريبة",
"tax_decimals" => "العلامة العشرية للضريبة",
"tax_id" => "الرقم الضريبي",
"tax_included" => "شامل الضريبة",
"theme" => "السمة",
"theme_preview" => "معاينة المظهر:",
"thousands_separator" => "فاصل الاف",
"timezone" => "المنطقة الزمنية",
"timezone_error" => "تختلف منطقة OSPOS الزمنية عن منطقتك الزمنية المحلية.",
"top" => "علوى",
"use_destination_based_tax" => "استخدام الضريبة المستندة على الوجهة",
"user_timezone" => "المنطقة الزمنية المحلية:",
"website" => "موقع الشركة",
"wholesale_markup" => "",
"work_order_enable" => "تفعيل طلبات العمل",
"work_order_format" => "شكل طلبات العمل",
];