Files
opensourcepos/app/Language/sw-TZ/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

332 lines
26 KiB
PHP

<?php
return [
"address" => "Anwani ya Kampuni",
"address_required" => "Anwani ya kampuni ni kiashiria kinachohitajika.",
"all_set" => "Ruhusa zote za faili zimewekwa vizuri!",
"allow_duplicate_barcodes" => "Ruhusu Misimbomstari iliyorudiwa",
"apostrophe" => "apostrofi",
"backup_button" => "Hifadhi Nakala",
"backup_database" => "Hifadhi Nakala ya Hifadhidata",
"barcode" => "Msimbo wa Mstari",
"barcode_company" => "Jina la Kampuni",
"barcode_configuration" => "Mpangilio wa Msimbomstari",
"barcode_content" => "Yaliyomo kwenye Msimbomstari",
"barcode_first_row" => "Safu 1",
"barcode_font" => "Aina ya Herufi",
"barcode_formats" => "Aina za Uingizaji",
"barcode_generate_if_empty" => "Tengeneza ikiwa tupu.",
"barcode_height" => "Urefu (px)",
"barcode_id" => "Id ya Bidhaa/Jina",
"barcode_info" => "Taarifa za Mpangilio wa Msimbomstari",
"barcode_layout" => "Mpangilio wa Msimbomstari",
"barcode_name" => "Jina",
"barcode_number" => "Msimbomstari",
"barcode_number_in_row" => "Idadi kwenye safu",
"barcode_page_cellspacing" => "Onyesha nafasi kati ya seli za ukurasa.",
"barcode_page_width" => "Onyesha upana wa ukurasa",
"barcode_price" => "Bei",
"barcode_second_row" => "Safu 2",
"barcode_third_row" => "Safu 3",
"barcode_tooltip" => "Tahadhari: Kipengele hiki kinaweza kusababisha kurudiwa kwa bidhaa zilizoingizwa au kuundwa. Usitumie ikiwa hutaki Msimbomstari(Barcode) zilizorudiwa.",
"barcode_type" => "Aina ya Msimbomstari",
"barcode_width" => "Upana (px)",
"bottom" => "Chini",
"cash_button" => "",
"cash_button_1" => "",
"cash_button_2" => "",
"cash_button_3" => "",
"cash_button_4" => "",
"cash_button_5" => "",
"cash_button_6" => "",
"cash_decimals" => "Desimali za Fedha Taslimu",
"cash_decimals_tooltip" => "Ikiwa Desimali za Fedha Taslimu na Desimali za Sarafu ni sawa basi hakuna mzunguko wa fedha taslimu utakaofanyika, isipokuwa Mzunguko wa Fedha Taslimu umewekwa kwenye Nusu Tano.",
"cash_rounding" => "Mzunguko wa Fedha Taslimu",
"category_dropdown" => "Onyesha Kategoria kama orodha ya kushuka",
"center" => "Katikati",
"change_apperance_tooltip" => "",
"comma" => "koma",
"company" => "Jina la Kampuni",
"company_avatar" => "",
"company_change_image" => "Badilisha Picha",
"company_logo" => "Nembo ya Kampuni",
"company_remove_image" => "Ondoa Picha",
"company_required" => "Jina la kampuni ni kiashiria kinachohitajika",
"company_select_image" => "Chagua Picha",
"company_website_url" => "Tovuti ya kampuni si URL halali (http://...).",
"country_codes" => "Msimbo wa Nchi",
"country_codes_tooltip" => "Orodha ya misimbo ya nchi zilizotenganishwa kwa koma kwa utafutaji wa anwani wa uteuzi.",
"currency_code" => "Nambari ya Sarafu",
"currency_decimals" => "Desimali za Sarafu",
"currency_symbol" => "Alama ya Sarafu",
"current_employee_only" => "",
"customer_reward" => "Zawadi",
"customer_reward_duplicate" => "Zawadi lazima iwe ya kipekee.",
"customer_reward_enable" => "Washa Zawadi kwa Wateja",
"customer_reward_invalid_chars" => "Zawadi haiwezi kuwa na '_'",
"customer_reward_required" => "Zawadi ni kiashiria kinachohitajika",
"customer_sales_tax_support" => "",
"date_or_time_format" => "Kichujio cha Tarehe na Muda",
"datetimeformat" => "Muundo wa Tarehe na Muda",
"decimal_point" => "Nukta ya Desimali",
"default_barcode_font_size_number" => "Ukubwa wa herufi wa Msimbomstari lazima uwe nambari.",
"default_barcode_font_size_required" => "Ukubwa wa herufi wa Msimbomstari ni kiashiria kinachohitajika.",
"default_barcode_height_number" => "Urefu wa Msimbomstari lazima uwe nambari.",
"default_barcode_height_required" => "Urefu wa Msimbomstari ni kiashiria kinachohitajika.",
"default_barcode_num_in_row_number" => "Idadi ya Msimbomstari kwenye safu lazima iwe nambari.",
"default_barcode_num_in_row_required" => "Idadi ya Msimbomstari kwenye safu ni kiashiria kinachohitajika.",
"default_barcode_page_cellspacing_number" => "Nafasi kati ya chumba cha ukurasa wa Msimbomstari lazima iwe nambari.",
"default_barcode_page_cellspacing_required" => "Nafasi kati ya chumba cha ukurasa wa Msimbomstari ni kiashiria kinachohitajika.",
"default_barcode_page_width_number" => "Upana wa ukurasa wa Msimbomstari lazima uwe nambari.",
"default_barcode_page_width_required" => "Upana wa ukurasa wa Msimbomstari ni kiashiria kinachohitajika.",
"default_barcode_width_number" => "Upana wa Msimbomstari lazima uwe nambari.",
"default_barcode_width_required" => "Upana wa Msimbomstari ni kiashiria kinachohitajika.",
"default_item_columns" => "Safu wima za Bidhaa Zinazoonekana Kwa Chaguo-msingi",
"default_origin_tax_code" => "Nambari ya Kodi ya Asili kwa Chaguo-msingi",
"default_receivings_discount" => "Punguzo la Manunuzi kwa Chaguo-msingi",
"default_receivings_discount_number" => "Punguzo la Manunuzi kwa Chaguo-msingi lazima liwe nambari.",
"default_receivings_discount_required" => "Punguzo la Manunuzi kwa Chaguo-msingi ni kiashiria kinachohitajika.",
"default_sales_discount" => "Punguzo la Mauzo kwa Chaguo-msingi",
"default_sales_discount_number" => "Punguzo la Mauzo kwa Chaguo-msingi lazima liwe nambari.",
"default_sales_discount_required" => "Punguzo la Mauzo kwa Chaguo-msingi ni kiashiria kinachohitajika.",
"default_tax_category" => "Aina ya Kodi kwa Chaguo-msingi",
"default_tax_code" => "Nambari ya Kodi kwa Chaguo-msingi",
"default_tax_jurisdiction" => "Eneo la Kodi kwa Chaguo-msingi",
"default_tax_name_number" => "Jina la Kodi lazima liwe maandishi.",
"default_tax_name_required" => "Jina la Kodi ni kiashiria kinachohitajika.",
"default_tax_rate" => "Kiwango cha Kodi kwa Chaguo-msingi %",
"default_tax_rate_1" => "Kiwango cha Kodi 1",
"default_tax_rate_2" => "Kiwango cha Kodi 2",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "Kiwango cha Kodi kwa Chaguo-msingi lazima kiwe nambari.",
"default_tax_rate_required" => "Kiwango cha Kodi kwa Chaguo-msingi ni kiashiria kinachohitajika.",
"derive_sale_quantity" => "Ruhusu Kiasi cha Mauzo Kilichotokana",
"derive_sale_quantity_tooltip" => "Ikiwa imechaguliwa basi aina mpya ya bidhaa itatolewa kwa bidhaa zilizoagizwa kwa kiasi kilichoongezwa",
"dinner_table" => "Jedwali",
"dinner_table_duplicate" => "Jedwali lazima iwe ya kipekee.",
"dinner_table_enable" => "Washa Jedwali za Chakula",
"dinner_table_invalid_chars" => "Jina la Jedwali haliwezi kuwa na '_'.",
"dinner_table_required" => "Jedwali ni kiashiria kinachohitajika.",
"dot" => "nukta",
"email" => "Barua Pepe",
"email_configuration" => "Mpangilio wa Barua Pepe",
"email_mailpath" => "Njia ya Sendmail",
"email_protocol" => "Itifaki",
"email_receipt_check_behaviour" => "Kisanduku cha Risiti ya Barua Pepe",
"email_receipt_check_behaviour_always" => "Daima imechaguliwa",
"email_receipt_check_behaviour_last" => "Kumbuka chaguo la mwisho",
"email_receipt_check_behaviour_never" => "Daima haijachaguliwa",
"email_smtp_crypto" => "Usimbaji wa SMTP",
"email_smtp_host" => "Seva ya SMTP",
"email_smtp_pass" => "Nenosiri la SMTP",
"email_smtp_port" => "Lango la SMTP",
"email_smtp_timeout" => "Muda wa SMTP kuisha",
"email_smtp_user" => "Jina la Mtumiaji la SMTP",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "Lazimisha Faragha",
"enforce_privacy_tooltip" => "Linda faragha ya Wateja kwa kulazimisha kuchanganya data endapo data zao zitafutwa",
"fax" => "Faksi",
"file_perm" => "Kuna matatizo na ruhusa za faili. Tafadhali rekebisha na upakie upya ukurasa huu.",
"financial_year" => "Mwanzo wa Mwaka wa Fedha",
"financial_year_apr" => "1 Aprili",
"financial_year_aug" => "1 Agosti",
"financial_year_dec" => "1 Desemba",
"financial_year_feb" => "1 Februari",
"financial_year_jan" => "1 Januari",
"financial_year_jul" => "1 Julai",
"financial_year_jun" => "1 Juni",
"financial_year_mar" => "1 Machi",
"financial_year_may" => "1 Mei",
"financial_year_nov" => "1 Novemba",
"financial_year_oct" => "1 Oktoba",
"financial_year_sep" => "1 Septemba",
"floating_labels" => "Lebo Zinazoelea",
"gcaptcha_enable" => "Ukurasa wa Ingia reCAPTCHA",
"gcaptcha_secret_key" => "Funguo ya Siri ya reCAPTCHA",
"gcaptcha_secret_key_required" => "Funguo ya Siri ya reCAPTCHA ni kiashiria kinachohitajika",
"gcaptcha_site_key" => "Funguo ya Tovuti ya reCAPTCHA",
"gcaptcha_site_key_required" => "Funguo ya Tovuti ya reCAPTCHA ni kiashiria kinachohitajika",
"gcaptcha_tooltip" => "Linda ukurasa wa Ingia kwa Google reCAPTCHA, bonyeza ikoni kupata jozi ya funguo za API.",
"general" => "Jumla",
"general_configuration" => "Mpangilio wa Jumla",
"giftcard_number" => "Nambari ya Kadi ya Zawadi",
"giftcard_random" => "Tengeneza kwa Nasibu",
"giftcard_series" => "Tengeneza kwa Mfululizo",
"image_allowed_file_types" => "Aina za faili zinazoruhusiwa",
"image_max_height_tooltip" => "Urefu wa juu wa picha zinazopakiwa kwa pikseli (px).",
"image_max_size_tooltip" => "Ukubwa wa juu wa faili za picha zinazopakiwa kwa kilobaiti (kb).",
"image_max_width_tooltip" => "Upana wa juu wa picha zinazopakiwa kwa pikseli (px).",
"image_restrictions" => "Vizuizi vya Upakiaji wa Picha",
"include_hsn" => "Jumuisha Msaada wa Nambari za HSN",
"info" => "Taarifa",
"info_configuration" => "Taarifa za Duka",
"input_groups" => "Makundi ya Uingizaji",
"integrations" => "Muunganiko",
"integrations_configuration" => "Muunganiko wa Watu wengine",
"invoice" => "Ankara",
"invoice_configuration" => "Mpangilio wa Uchapishaji wa Ankara",
"invoice_default_comments" => "Maoni ya Chaguo-msingi ya Ankara",
"invoice_email_message" => "Kiolezo cha Barua Pepe ya Ankara",
"invoice_enable" => "Washa Utoaji wa Ankara",
"invoice_printer" => "Kichapishi cha Ankara",
"invoice_type" => "Aina ya Ankara",
"is_readable" => "inasomeka, lakini ruhusa zimewekwa vibaya. Tafadhali weka 640 au 660 na upakie upya.",
"is_writable" => "inaandikika, lakini ruhusa zimewekwa vibaya. Tafadhali weka 750 na upakie upya.",
"item_markup" => "",
"jsprintsetup_required" => "Tahadhari: Kipengele hiki kitafanya kazi tu ikiwa una kiendelezi cha FireFox jsPrintSetup kimewekwa. Hifadhi hata hivyo?",
"language" => "Lugha",
"last_used_invoice_number" => "Nambari ya mwisho ya Ankara iliyotumika",
"last_used_quote_number" => "Nambari ya mwisho ya Nukuu iliyotumika",
"last_used_work_order_number" => "Nambari ya mwisho ya Agizo la Kazi iliyotumika",
"left" => "Kushoto",
"license" => "Leseni",
"license_configuration" => "Taarifa ya Leseni",
"line_sequence" => "Mpangilio wa Mistari",
"lines_per_page" => "Mistari kwa Kila Ukurasa",
"lines_per_page_number" => "Mistari kwa Kila Ukurasa lazima iwe nambari.",
"lines_per_page_required" => "Mistari kwa Kila Ukurasa ni kiashiria kinachohitajika.",
"locale" => "Ujanibishaji",
"locale_configuration" => "Mpangilio wa Ujanibishaji",
"locale_info" => "Taarifa za Mpangilio wa Ujanibishaji",
"location" => "Stoo",
"location_configuration" => "Maeneo ya Stoo",
"location_info" => "Taarifa za Mpangilio wa Stoo",
"login_form" => "Aina ya Fomu ya Ingia",
"logout" => "Unataka kufanya hifadhi nakala kabla ya kutoka? Bonyeza [Sawa] kuhifadhi au [Ghairi] kutoka.",
"mailchimp" => "MailChimp",
"mailchimp_api_key" => "Funguo ya API ya MailChimp",
"mailchimp_configuration" => "Mpangilio wa MailChimp",
"mailchimp_key_successfully" => "Funguo ya API ni sahihi.",
"mailchimp_key_unsuccessfully" => "Funguo ya API si sahihi.",
"mailchimp_lists" => "Orodha za MailChimp",
"mailchimp_tooltip" => "Bonyeza ikoni kupata Funguo ya API.",
"message" => "Ujumbe",
"message_configuration" => "Mpangilio wa Ujumbe",
"msg_msg" => "Ujumbe wa SMS uliohifadhiwa",
"msg_msg_placeholder" => "Ikiwa unataka kutumia kiolezo cha SMS hifadhi ujumbe wako hapa, vinginevyo acha kisanduku wazi.",
"msg_pwd" => "Nenosiri la SMS-API",
"msg_pwd_required" => "Nenosiri la SMS-API ni kiashiria kinachohitajika",
"msg_src" => "ID ya Mtumaji wa SMS-API",
"msg_src_required" => "ID ya Mtumaji wa SMS-API ni kiashiria kinachohitajika",
"msg_uid" => "Jina la Mtumiaji la SMS-API",
"msg_uid_required" => "Jina la Mtumiaji la SMS-API ni kiashiria kinachohitajika",
"multi_pack_enabled" => "Vifurushi Vingi kwa Kila Bidhaa",
"no_risk" => "Hakuna hatari za usalama/udhaifu.",
"none" => "hakuna",
"notify_alignment" => "Nafasi ya Taarifa Ibukizi",
"number_format" => "Muundo wa Nambari",
"number_locale" => "Ujanibishaji",
"number_locale_invalid" => "Ujanibishaji uliyoingiza si sahihi. Angalia kiungo kwenye kidokezo kupata Ujanibishaji sahihi.",
"number_locale_required" => "Ujanibishaji ya Nambari ni kiashiria kinachohitajika.",
"number_locale_tooltip" => "Tafuta Ujanibishaji inayofaa kupitia kiungo hiki.",
"os_timezone" => "Saa ya OSPOS:",
"ospos_info" => "Taarifa za Usakinishaji wa OSPOS",
"payment_options_order" => "Mpangilio wa Chaguo za Malipo",
"perm_risk" => "Ruhusa zisizo sahihi zinaacha programu hii kwenye hatari.",
"phone" => "Namba ya simu ya Kampuni",
"phone_required" => "Namba ya simu ya Kampuni ni kiashiria kinachohitajika.",
"print_bottom_margin" => "Pembe ya Chini",
"print_bottom_margin_number" => "Pembe ya Chini lazima iwe nambari.",
"print_bottom_margin_required" => "Pembe ya Chini ni kiashiria kinachohitajika.",
"print_delay_autoreturn" => "Muda wa Kurudi Moja kwa Moja kwenye Mauzo",
"print_delay_autoreturn_number" => "Muda wa Kurudi Moja kwa Moja kwenye Mauzo ni kiashiria kinachohitajika.",
"print_delay_autoreturn_required" => "Muda wa Kurudi Moja kwa Moja kwenye Mauzo lazima uwe nambari.",
"print_footer" => "Chapisha Kijachini cha Kivinjari",
"print_header" => "Chapisha Kijuu cha Kivinjari",
"print_left_margin" => "Pembe ya Kushoto",
"print_left_margin_number" => "Pembe ya Kushoto lazima iwe nambari.",
"print_left_margin_required" => "Pembe ya Kushoto ni kiashiria kinachohitajika.",
"print_receipt_check_behaviour" => "Kisanduku cha Risiti ya Kuchapisha",
"print_receipt_check_behaviour_always" => "Daima imechaguliwa",
"print_receipt_check_behaviour_last" => "Kumbuka chaguo la mwisho",
"print_receipt_check_behaviour_never" => "Daima haijachaguliwa",
"print_right_margin" => "Pembe ya Kulia",
"print_right_margin_number" => "Pembe ya Kulia lazima iwe nambari.",
"print_right_margin_required" => "Pembe ya Kulia ni kiashiria kinachohitajika.",
"print_silently" => "Onyesha Dirisha la Kuchapisha",
"print_top_margin" => "Pembe ya Juu",
"print_top_margin_number" => "Pembe ya Juu lazima iwe nambari.",
"print_top_margin_required" => "Pembe ya Juu ni kiashiria kinachohitajika.",
"quantity_decimals" => "Desimali za Kiasi",
"quick_cash_enable" => "",
"quote_default_comments" => "Maoni ya Chaguo-msingi la Nukuu",
"receipt" => "Risiti",
"receipt_category" => "",
"receipt_configuration" => "Mpangilio wa Uchapishaji wa Risiti",
"receipt_default" => "Chaguo-msingi",
"receipt_font_size" => "Ukubwa wa Herufi",
"receipt_font_size_number" => "Ukubwa wa Herufi lazima uwe nambari.",
"receipt_font_size_required" => "Ukubwa wa Herufi ni kiashiria kinachohitajika.",
"receipt_info" => "Taarifa za Mpangilio wa Risiti",
"receipt_printer" => "Kichapishi cha Tiketi",
"receipt_short" => "Fupi",
"receipt_show_company_name" => "Onyesha Jina la Kampuni",
"receipt_show_description" => "Onyesha Maelezo",
"receipt_show_serialnumber" => "Onyesha Serial Number",
"receipt_show_tax_ind" => "Onyesha Kiashiria cha Kodi",
"receipt_show_taxes" => "Onyesha Kodi",
"receipt_show_total_discount" => "Onyesha Jumla ya Punguzo",
"receipt_template" => "Kiolezo cha Risiti",
"receiving_calculate_average_price" => "Hesabu Bei ya wastani (Manunuzi)",
"recv_invoice_format" => "Muundo wa Ankara ya Manunuzi",
"register_mode_default" => "Hali ya Usajili kwa Chaguo-msingi",
"report_an_issue" => "Ripoti tatizo",
"return_policy_required" => "Return Policy ni kiashiria kinachohitajika.",
"reward" => "Zawadi",
"reward_configuration" => "Mpangilio wa Zawadi",
"right" => "Kulia",
"sales_invoice_format" => "Muundo wa Ankara ya Mauzo",
"sales_quote_format" => "Muundo wa Nukuu ya Mauzo",
"mailpath_invalid" => "",
"saved_successfully" => "Mpangilio umehifadhiwa kwa mafanikio.",
"saved_unsuccessfully" => "Mpangilio umeshindwa kuhifadhiwa.",
"security_issue" => "Onyo la Udhaifu wa Usalama",
"server_notice" => "Tafadhali tumia taarifa zilizo hapa chini kuripoti tatizo.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "Onyesha ikoni ya ofisi",
"statistics" => "Tuma Takwimu",
"statistics_tooltip" => "Tuma takwimu kwa madhumuni ya maendeleo na uboreshaji wa vipengele.",
"stock_location" => "Stoo",
"stock_location_duplicate" => "Stoo lazima iwe ya kipekee.",
"stock_location_invalid_chars" => "Stoo haiwezi kuwa na '_'.",
"stock_location_required" => "Stoo ni kiashiria kinachohitajika.",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "Safu wima 1",
"suggestions_fourth_column" => "",
"suggestions_layout" => "Mpangilio wa Mapendekezo ya Utafutaji",
"suggestions_second_column" => "Safu wima 2",
"suggestions_third_column" => "Safu wima 3",
"system_conf" => "Usanidi & Mpangilio",
"system_info" => "Taarifa za Mfumo",
"table" => "Jedwali",
"table_configuration" => "Jedwali la Mpangilio",
"takings_printer" => "Kichapishi cha Risiti",
"tax" => "Kodi",
"tax_category" => "Aina ya Kodi",
"tax_category_duplicate" => "Aina ya kodi uliyoingiza tayari ipo.",
"tax_category_invalid_chars" => "Aina ya kodi uliyoingiza si sahihi.",
"tax_category_required" => "Aina ya kodi ni lazima.",
"tax_category_used" => "Aina ya kodi haiwezi kufutwa kwa sababu inatumika.",
"tax_configuration" => "Mpangilio wa Kodi",
"tax_decimals" => "Desimali za Kodi",
"tax_id" => "Nambari ya Kodi",
"tax_included" => "Kodi Imejumuishwa",
"theme" => "Mandhari",
"theme_preview" => "Onyesha Mandhari:",
"thousands_separator" => "Kitenganishi cha Maelfu",
"timezone" => "Saa za Eneo",
"timezone_error" => "Saa za OSPOS ni tofauti na Saa za Eneo lako.",
"top" => "Juu",
"use_destination_based_tax" => "Tumia Kodi ya Kulingana na Eneo",
"user_timezone" => "Saa za Eneo lako:",
"website" => "Tovuti",
"wholesale_markup" => "",
"work_order_enable" => "Msaada wa Agizo la Kazi",
"work_order_format" => "Muundo wa Agizo la Kazi",
];