From 26bea3d2c24b83a1eb67d4b545065429eac4d2a5 Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Sun, 13 Jun 2021 13:53:17 +0200 Subject: [PATCH] WIP: Arabic localization. --- client/src/common/adjustmentType.js | 6 +- client/src/common/keyboardShortcutsOptions.js | 2 +- client/src/common/registerWizard.js | 2 +- client/src/config/sidebarMenu.js | 2 +- .../BalanceSheet/BalanceSheetHeader.js | 2 - .../CashFlowStatementHeader.js | 2 - .../Bills/BillsLanding/BillsEmptyStatus.js | 2 +- .../PaymentMadesEmptyStatus.js | 2 +- .../EstimatesLanding/EstimatesEmptyStatus.js | 3 +- .../InvoicesLanding/InvoicesEmptyStatus.js | 2 +- .../PaymentReceivesEmptyStatus.js | 2 +- .../ReceiptsLanding/ReceiptsEmptyStatus.js | 2 +- .../src/containers/Setup/SetupLeftSection.js | 2 +- client/src/lang/ar-ly/index.json | 199 ++++++++++++++---- client/src/lang/en/index.js | 1 + client/src/lang/en/index.json | 11 +- client/src/style/App.scss | 7 +- .../style/containers/Dashboard/Sidebar.scss | 2 +- server/src/api/controllers/Accounts.ts | 4 + .../FinancialStatements/BalanceSheet.ts | 1 - server/src/locales/ar.json | 95 ++++++--- server/src/locales/en.json | 10 +- .../src/services/Accounts/AccountsService.ts | 8 +- .../Accounts/AccountsTypesServices.ts | 3 +- .../BalanceSheet/BalanceSheet.ts | 7 +- .../BalanceSheet/BalanceSheetService.ts | 5 +- server/src/services/I18n/I18nService.ts | 20 +- 27 files changed, 304 insertions(+), 100 deletions(-) diff --git a/client/src/common/adjustmentType.js b/client/src/common/adjustmentType.js index f2239f6f8..8db0f29e1 100644 --- a/client/src/common/adjustmentType.js +++ b/client/src/common/adjustmentType.js @@ -1,4 +1,6 @@ +import intl from 'react-intl-universal'; + export default [ - { name: 'Decrement', value: 'decrement' }, - { name: 'Increment', value: 'increment' }, + { name: intl.get('decrement'), value: 'decrement' }, + { name: intl.get('increment'), value: 'increment' }, ] \ No newline at end of file diff --git a/client/src/common/keyboardShortcutsOptions.js b/client/src/common/keyboardShortcutsOptions.js index 4b1b49fa1..c33e5a705 100644 --- a/client/src/common/keyboardShortcutsOptions.js +++ b/client/src/common/keyboardShortcutsOptions.js @@ -92,7 +92,7 @@ export default [ }, { shortcut_key: 'Ctrl + Shift + M ', - description: intl.get('create_a_new_make_journal'), + description: intl.get('create_a_new_journal'), }, { shortcut_key: 'Ctrl + Shift + W ', diff --git a/client/src/common/registerWizard.js b/client/src/common/registerWizard.js index 634f2271a..eef7523c6 100644 --- a/client/src/common/registerWizard.js +++ b/client/src/common/registerWizard.js @@ -11,6 +11,6 @@ export const registerWizardSteps = [ label: 'getting_started', }, { - label: 'Congratulations', + label: 'congratulations', }, ]; \ No newline at end of file diff --git a/client/src/config/sidebarMenu.js b/client/src/config/sidebarMenu.js index 4938f5cba..d5ff66556 100644 --- a/client/src/config/sidebarMenu.js +++ b/client/src/config/sidebarMenu.js @@ -100,7 +100,7 @@ export default [ href: '/accounts', }, { - text: , + text: , href: '/manual-journals', }, { diff --git a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js b/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js index 27240ca1d..30474ddc4 100644 --- a/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js +++ b/client/src/containers/FinancialStatements/BalanceSheet/BalanceSheetHeader.js @@ -28,8 +28,6 @@ function BalanceSheetHeader({ // #withBalanceSheetActions toggleBalanceSheetFilterDrawer: toggleFilterDrawer, }) { - - // Filter form initial values. const initialValues = { basis: 'cash', diff --git a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js b/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js index 548c764d9..cd2c51066 100644 --- a/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js +++ b/client/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatementHeader.js @@ -28,8 +28,6 @@ function CashFlowStatementHeader({ //#withCashStatementActions toggleCashFlowStatementFilterDrawer, }) { - - // filter form initial values. const initialValues = { ...pageFilter, diff --git a/client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js b/client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js index 7d966ef22..cecfef2ad 100644 --- a/client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js +++ b/client/src/containers/Purchases/Bills/BillsLanding/BillsEmptyStatus.js @@ -12,7 +12,7 @@ export default function BillsEmptyStatus() { title={} description={

- +

} action={ diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js b/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js index a6707a8be..3f008d876 100644 --- a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js +++ b/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesEmptyStatus.js @@ -12,7 +12,7 @@ export default function PaymentMadesEmptyStatus() { title={} description={

- +

} action={ diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js b/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js index 78d7522fe..c2e5e92fa 100644 --- a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js +++ b/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js @@ -6,13 +6,12 @@ import { FormattedMessage as T } from 'components'; export default function EstimatesEmptyStatus() { const history = useHistory(); - return ( } description={

- +

} action={ diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js b/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js index 13e893ffe..21212a4c2 100644 --- a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js +++ b/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesEmptyStatus.js @@ -12,7 +12,7 @@ export default function EstimatesEmptyStatus() { title={} description={

- +

} action={ diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js b/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js index d4a968b1a..6b0df1b31 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js @@ -12,7 +12,7 @@ export default function PaymentReceivesEmptyStatus() { title={} description={

- +

} action={ diff --git a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js b/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js index cb279f0a6..e029ddf9b 100644 --- a/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js +++ b/client/src/containers/Sales/Receipts/ReceiptsLanding/ReceiptsEmptyStatus.js @@ -12,7 +12,7 @@ export default function ReceiptsEmptyStatus() { title={} description={

- +

} action={ diff --git a/client/src/containers/Setup/SetupLeftSection.js b/client/src/containers/Setup/SetupLeftSection.js index 66722fb0d..68054e1e9 100644 --- a/client/src/containers/Setup/SetupLeftSection.js +++ b/client/src/containers/Setup/SetupLeftSection.js @@ -42,7 +42,7 @@ export default function SetupLeftSection() {
- Oragnization ID: { organizationId }, + : { organizationId },
diff --git a/client/src/lang/ar-ly/index.json b/client/src/lang/ar-ly/index.json index 9536ce0e1..4c7776460 100644 --- a/client/src/lang/ar-ly/index.json +++ b/client/src/lang/ar-ly/index.json @@ -58,7 +58,7 @@ "edit": "تعديل", "submit": "ادخال", "close": "اغلاق", - "edit_account": "تحرير الحساب", + "edit_account": "تعديل الحساب", "new_account": "حساب جديد", "edit_currency": "تعديل العملة", "delete_currency": "حذف العملة", @@ -164,7 +164,7 @@ "view_name": "عرض الاسم", "item": "المنتج", "service_has_been_created_successfully": "تم إنشاء {service} {name} بنجاح.", - "service_has_been_edited_successfully": "تم تحرير {service} {name} بنجاح.", + "service_has_been_edited_successfully": "تم تعديل {service} {name} بنجاح.", "you_are_about_permanently_delete_this_journal": "أنت على وشك حذف هذا القيد بشكل دائم وجميع معاملاته على الحسابات.

إذا لم تكن متأكدًا ، يمكنك أرشفة هذا القيد بدلاً من ذلك.", "once_delete_these_accounts_you_will_not_able_restore_them": "بمجرد حذف هذه الحسابات ، لن تتمكن من استعادتها لاحقًا. هل أنت متأكد أنك تريد حذفها؟", "once_delete_these_service_you_will_not_able_restore_it": "بمجرد حذف هذه {service} ، لن تتمكن من استعادتها لاحقًا. هل أنت متأكد أنك تريد حذف هذه {service}؟", @@ -226,13 +226,13 @@ "manual_journal": "قيد يدوي", "make_journal": "قيد يدوي", "banking": "الخدمات المصرفية", - "sales": "مبيعات", + "sales": "المبيعات", "purchases": "المشتريات", "financial_reports": "تقارير مالية", "all_financial_reports": "كل التقارير المالية", "balance_sheet": "الميزانية العمومية", "trial_balance_sheet": "ميزان المراجعة", - "journal": "مجلة", + "journal": "اليومية العامة", "general_ledger": "دفتر الأستاذ العام", "general_ledger_sheet": "ورقة دفتر الأستاذ العام", "profit_loss_sheet": "قائمة الدخل", @@ -245,7 +245,7 @@ "check_your_email_for_a_link_to_reset": "تحقق من بريدك الإلكتروني بحثًا عن رابط لإعادة تعيين كلمة مرورك. إذا لم يصلك في غضون بضع دقائق ، فتحقق من مجلد الرسائل غير المرغوب فيها.", "we_couldn_t_find_your_account_with_that_email": "لم نتمكن من العثور على حسابك بهذا البريد الإلكتروني.", "select_parent_account": "حدد الحساب الرئيسي", - "the_exchange_rate_has_been_edited_successfully": "تم تحرير سعر الصرف بنجاح", + "the_exchange_rate_has_been_edited_successfully": "تم تعديل سعر الصرف بنجاح", "the_exchange_rate_has_been_created_successfully": "تم إنشاء سعر الصرف بنجاح", "the_user_details_has_been_updated": "تم تحديث تفاصيل المستخدم", "filters_applied": "تم تطبيق الفلتر", @@ -265,7 +265,7 @@ "date_format": "صيغة التاريخ", "edit_user": "تعديل المستخدم", "edit_invite": "تعديل دعوة", - "inactivate_user": "قم بإلغاء تفعيل المستخدم", + "inactivate_user": "تعطيل المستخدم", "activate_user": "تفعيل المستخدم", "delete_user": "حذف المستخدم", "full_name": "الاسم بالكامل", @@ -277,7 +277,7 @@ "all_transactions": "كل الحركات المالية", "filter_accounts": "تصفية الحسابات", "calculate_report": "حساب التقرير", - "total": "مجموع", + "total": "إجمالي", "specific_accounts": "حسابات محددة", "trans_num": "عبر. NUM", "journal_sheet": "دفتر اليومية العامة", @@ -397,7 +397,7 @@ "new_customers": "زبائن الجدد", "customer_type_": "نوع الزبون", "display_name_": "اسم العرض", - "new_customer": "عميل جديد", + "new_customer": "زبون جديد", "customer_type": "نوع الزبون", "customer_account": "حساب الزبون", "business": "اعمال", @@ -405,7 +405,7 @@ "display_name": "اسم العرض", "the_customer_has_been_created_successfully": "تم إنشاء زبون جديد بنجاح.", "select_contact": "حدد جهة اتصال", - "contact": "اتصال", + "contact": "جهة اتصال", "contacts": "جهات الاتصال", "close_sidebar": "إغلاق الشريط الجانبي.", "open_sidebar": "فتح الشريط الجانبي.", @@ -436,7 +436,7 @@ "the_customer_has_been_deleted_successfully": "تم حذف الزبون بنجاح.", "the_customers_has_been_deleted_successfully": "تم حذف الزبائن بنجاح.", "the_item_customer_has_been_edited_successfully": "تم تعديل الزبون بنجاح.", - "once_delete_this_customer_you_will_able_to_restore_it": "بمجرد حذف هذا الزبون ، لن تتمكن من استعادته لاحقًا. هل أنت متأكد أنك تريد حذف هذا العميل؟", + "once_delete_this_customer_you_will_able_to_restore_it": "بمجرد حذف هذا الزبون ، لن تتمكن من استعادته لاحقًا. هل أنت متأكد أنك تريد حذف هذا الزبون؟", "once_delete_these_customers_you_will_not_able_restore_them": "بمجرد حذف هؤلاء الزبائن ، لن تتمكن من استعادتهم لاحقًا. هل أنت متأكد أنك تريد حذفها؟", "financial_accounting": " محاسبة مالية", "after": "بعد", @@ -450,10 +450,10 @@ "select_journal_type": "اختار نوع القيد", "journal_type": "نوع القيد", "journal_reference_hint": "مرجع فريد لهذه القيد. وهي محددة بـ 10 أحرف ويمكن أن تتكون من أحرف وأرقام وشرطة سفلية.", - "contact_column_hint": "عمود الاتصال لتسجيل المبالغ المستحقة القبض والمستحقة الدفع الزبون أو المورد.", + "contact_column_hint": "عمود جهة الاتصال لتسجيل المبالغ المستحقة القبض والمستحقة الدفع لزبون او مورد.", "make_journal_entry": "جعل إدخال دفتر اليومية", "journal_number_is_already_used": "رقم القيد مستخدم بالفعل.", - "account_code_hint": "رمز / رقم فريد لهذا الحساب (بحد أقصى 10 أحرف)", + "account_code_hint": "رقم فريد للحساب (بحد أقصى 10 أحرف)", "logic_expression": "تعبير منطقي", "assign_to_customer": "تعيين لزبون", "inactive": "غير نشط", @@ -482,7 +482,7 @@ "estimate_date": "تاريخ العرض", "expiration_date": "تاريخ انتهاء الصلاحية", "customer_note": "ملاحظة الزبون", - "select_customer_account": "حدد حساب العميل", + "select_customer_account": "حدد حساب الزبون", "select_product": "حدد المنتج", "clear": "إعادة", "save_send": "حفظ وإرسال", @@ -524,7 +524,7 @@ "delete_invoice": "حذف الفاتورة", "new_invoice": "فاتورة جديدة", "invoice_list": "قائمة الفاتورة", - "the_invoice_has_been_edited_successfully": "تم تحرير الفاتورة رقم {number} بنجاح.", + "the_invoice_has_been_edited_successfully": "تم تعديل الفاتورة رقم {number} بنجاح.", "the_invoice_has_been_created_successfully": "تم إنشاء الفاتورة رقم {number} بنجاح.", "the_invoice_has_been_deleted_successfully": "تم حذف الفاتورة بنجاح.", "once_delete_this_invoice_you_will_able_to_restore_it": "بمجرد حذف هذه الفاتورة ، لن تتمكن من استعادتها لاحقًا. هل أنت متأكد أنك تريد حذف هذه الفاتورة؟", @@ -555,13 +555,13 @@ "select_vendor_account": "حدد حساب المورد", "bill_date": "تاريخ الفاتورة", "bill_number": "رقم الفاتوره", - "edit_bill": "تحرير الفاتورة", + "edit_bill": "تعديل الفاتورة", "new_bill": "فاتورة شراء جديدة", "bill_date_": "تاريخ الفاتورة", "bill_number_": "رقم الفاتوره", "vendor_name_": "اسم المورد", "delete_bill": "حذف الفاتورة", - "the_bill_has_been_edited_successfully": "تم تحرير الفاتورة رقم {number} بنجاح.", + "the_bill_has_been_edited_successfully": "تم تعديل الفاتورة رقم {number} بنجاح.", "the_bill_has_been_created_successfully": "تم إنشاء الفاتورة رقم {number} بنجاح.", "the_bill_has_been_deleted_successfully": "تم حذف الفاتورة بنجاح.", "once_delete_this_bill_you_will_able_to_restore_it": "بمجرد حذف هذه الفاتورة ، لن تتمكن من استعادتها لاحقًا. هل أنت متأكد أنك تريد حذف هذه الفاتورة؟", @@ -578,7 +578,7 @@ "receive_amount_": "استلام المبلغ", "the_payment_receive_transaction_has_been_created": "تم إنشاء سند الزبون بنجاح.", "the_payment_receive_has_been_deleted_successfully": "تم حذف سند الزبون بنجاح.", - "the_payment_receive_transaction_has_been_edited": "تم تحرير معاملة سند الزبون بنجاح.", + "the_payment_receive_transaction_has_been_edited": "تم تعديل معاملة سند الزبون بنجاح.", "once_delete_this_payment_receive_you_will_able_to_restore_it": "بمجرد حذف هذا السند ، لن تتمكن من استعادتها لاحقًا. هل أنت متأكد أنك تريد حذف هذه المعاملة؟", "select_invoice": "حدد الفاتورة", "payment_mades": "سندات الموردين", @@ -586,9 +586,9 @@ "plan_slug": "سبيكة خطة", "billing": "الفواتير", "the_billing_has_been_created_successfully": "تم إنشاء الفواتير بنجاح.", - "select_a_plan": "{ترتيب}. حدد خطة", - "choose_your_billing": "{ترتيب}. اختر الفواتير الخاصة بك", - "payment_methods": "{order}. طريقة الدفع", + "select_a_plan": "حدد الباقة", + "choose_your_billing": "اختر مدة الدفع", + "payment_methods": "طريقة الدفع", "usage": "إستعمال", "basic": "أساسي", "license": "رخصة", @@ -605,7 +605,7 @@ "subscribe": "الإشتراك", "year_per": "عام", "payment_made": "سند الموردين", - "edit_payment_made": "تحرير سند الموردين", + "edit_payment_made": "تعديل سند الموردين", "delete_payment_made": "حذف سند الموردين", "payment_number": "رقم سند الدفع", "payment_no": "رقم سند الدفع", @@ -632,8 +632,8 @@ "save_continue": "حفظ ومتابعة", "organization_register": "تسجيل منشأة", "getting_started": "ابدء", - "payment_or_trial": "الدفع أو المحاكمة", - "initializing": "جار تهيئة", + "payment_or_trial": "الدفع", + "initializing": "تجهيز حسابك", "fiscal_year_": "السنة المالية", "welcome": "مرحبا ", "sign_out": "خروج", @@ -684,7 +684,7 @@ "average_rate": "المعدل المتوسط", "the_name_used_before": "الاسم مستخدم بالفعل.", "the_item_has_associated_transactions": "المنتج له معاملات مرتبطة.", - "customer_has_sales_invoices": "لا يمكن حذف الزبون لديه فواتير مبيعات مرتبطة.", + "customer_has_sales_invoices": "لا يمكن حذف الزبون لديه فواتير المبيعات مرتبطة.", "account_name_is_already_used": "اسم الحساب مستخدم بالفعل.", "vendors": "الموردين", "vendor_email": "البريد إلكتروني المورد", @@ -702,20 +702,20 @@ "are_sure_to_publish_this_manual_journal": "هل أنت متأكد أنك تريد نشر هذا القيد اليدوي؟", "save_publish": "احفظ وانشر", "publish_and_new": "نشر وجديد", - "publish_continue_editing": "نشر (متابعة التحرير)", + "publish_continue_editing": "نشر (متابعة التعديل)", "save_and_new": "حفظ وجديد", - "save_continue_editing": "حفظ (متابعة التحرير)", + "save_continue_editing": "حفظ (متابعة التعديل)", "reset": "إعادة ضبط ", "save_and_send": "احفظ وأرسل", "posting_date": "تاريخ النشر", - "customer": "الزبون", + "customer": "زبون", "email_is_already_used": "البريد الإلكتروني مستخدم بالفعل.", "the_item_categories_has_been_deleted_successfully": "تم حذف تصنيفات المنتجات بنجاح.", "receivable_accounts_should_assign_with_customers": "حسابات القبض مع العملاء.", "delivered": "تم التوصيل", "save_and_deliver": "حفظ وتسليم", "deliver_and_new": "تسليم وجديد", - "deliver_continue_editing": "تسليم (متابعة التحرير)", + "deliver_continue_editing": "تسليم (متابعة التعديل)", "due_in": "موعد التسليم {due} يوم.", "day_partially_paid": "مدفوعة جزئياً ، {due} مستحق.", "overdue_by": "تأخرت بحلول {overdue} يوم.", @@ -730,12 +730,12 @@ "save_close": "حفظ وإغلاق", "save_open": "حفظ وفتح", "close_and_new": "قريب وجديد", - "close_continue_editing": "إغلاق (متابعة التحرير)", + "close_continue_editing": "إغلاق (متابعة التعديل)", "the_receipt_has_been_closed_successfully": "تم إغلاق الإيصال بنجاح.", "are_sure_to_close_this_receipt": "هل أنت متأكد أنك تريد إغلاق هذا الإيصال؟", "closed": "مغلق", "open_and_new": "مفتوح وجديد", - "open_continue_editing": "فتح (متابعة التحرير)", + "open_continue_editing": "فتح (متابعة التعديل)", "the_bill_has_been_opened_successfully": "تم فتح الفاتورة بنجاح.", "open": "فتح", "are_sure_to_open_this_bill": "هل أنت متأكد أنك تريد فتح هذه الفاتورة؟", @@ -756,7 +756,7 @@ "the_item_has_been_activated_successfully": "تم تفعيل المنتج بنجاح.", "are_sure_to_inactive_this_item": "هل أنت متأكد أنك تريد إلغاء تنشيط هذا المنتج؟ ستكون قادرًا على تنشيطه لاحقًا", "are_sure_to_activate_this_item": "هل أنت متأكد أنك تريد تفعيل هذا المنتج؟ ستتمكن من تعطيله لاحقًا", - "inactivate_item": "قم بإلغاء تنشيط المنتج", + "inactivate_item": "تعطيل المنتج", "activate_item": "تنشيط المنتج", "all_payments": "جميع المدفوعات", "hide_customizer": "إخفاء أداة التخصيص", @@ -826,9 +826,9 @@ "duplicate": "تكرار", "are_you_sure_want_to_duplicate": "هل أنت متأكد من أنك تريد تكرار جهة الاتصال هذه ، ما نوع جهة الاتصال؟", "contact_type": "نوع جهة الاتصال", - "duplicate_contact": "جهة اتصال مكررة", - "contact_type_": "نوع الاتصال", - "the_payment_amount_that_received": "مبلغ الدفع الذي تم استلامه من العميل أكبر من المبلغ المستحق لهذه الفاتورة.", + "duplicate_contact": "تكرار جهة الاتصال", + "contact_type_": "نوع جهة اتصال", + "the_payment_amount_that_received": "مبلغ الدفع الذي تم استلامه من الزبون أكبر من المبلغ المستحق لهذه الفاتورة.", "invoice_number": "رقم الفاتورة", "make_payment": "قم بالدفع", "add_payment": "إضافة الدفع", @@ -838,9 +838,9 @@ "quick_made_payment": "سند دفع سريع", "the_payment_amount_bigger_than_invoice_due_amount": "مبلغ الدفعة أكبر من مبلغ الفاتورة المستحق.", "accounting_basis_": "الأساس المحاسبي", - "deposit_customer_account": "إيداع حساب العميل", + "deposit_customer_account": "إيداع حساب الزبون", "withdrawal_vendor_account": "سحب حساب المورد", - "customer_advance_deposit": "إيداع العميل مقدما", + "customer_advance_deposit": "إيداعات الزبون المقدمة", "cannot_delete_bill_that_has_payment_transactions": "لا يمكن حذف الفاتورة التي لها معاملات دفع مرتبطة.", "cannot_change_item_type_to_inventory_with_item_has_associated_transactions": "لا يمكن تغيير نوع المنتج إلى المخزون لانة لديه معاملات مرتبطة بالعنصر.", "work_phone": "هاتف عمل", @@ -937,7 +937,7 @@ "new_sale_invoice": "فاتورة بيع جديدة", "there_is_no_payable_bills_for_this_vendor_that_can_be_applied_for_this_payment": "لا توجد فواتير مستحقة الدفع لهذا المورد يمكن ادخالها لهذه الدفعه.", "please_select_a_vendor_to_display_all_open_bills_for_it": "الرجاء تحديد المورد لعرض كافة الفواتير الشراء المفتوحة له.", - "payment_made_details": "Payment made details", + "payment_made_details": "تفاصيل سند الزبون", "there_is_no_inventory_adjustments_transactions_yet": "لا توجد معاملات تسوية للمخزون حتى الآن.", "create_and_manage_your_organization_s_customers": "إنشاء وإدارة عملاء مؤسستك.", "salutation": "تحية", @@ -978,7 +978,128 @@ "you_can_t_change_the_base_currency_as_there_are_transactions": "لا يمكنك تغيير العملة الأساسية بينما توجد معاملات مسجلة في حساب المنشأة.", "make_account_code_required_when_create_a_new_accounts": "اجعل رمز الحساب مطلوبًا عند إنشاء حسابات جديدة.", "should_account_code_be_unique_when_create_a_new_account": "يجب أن يكون رمز الحساب فريدًا عند إنشاء حساب جديد.", - "select_a_preferred_account_to_deposit_into_it_after_customer_make_payment": "", + "select_a_preferred_account_to_deposit_into_it_after_customer_make_payment": "حدد الحساب المفضل للإيداع فيه بعد قيام الزبون بالدفع.", "select_a_preferred_account_to_deposit_into_it_vendor_advanced_deposits": "حدد حساب المفضل لإيداع فيه ودائع الموردين المقدمة.", - "roles": "الأدوار" + "roles": "الأدوار", + "closing_balance": "الرصيد الختامي", + "view_more_transactions": "عرض المزيد من المعاملات.", + "there_is_no_results_in_the_table": "لا توجد نتائج في الجدول.", + "create_your_first_journal_entries_on_accounts_chart": "قم بإدخال اول القيود اليدوية علي شجرة الحسابات.", + "journal_details": "تفاصيل القيد", + "create_and_manage_your_organization_s_expenses": "إضافة وإدارة مصاريف مؤسستك", + "expense_amount": "قيمة المصروف", + "expense_details": "تفاصيل المصروف", + "sub_total": "مبلغ إجمالي", + "estimate_": "العرض", + "billed_to": "تم دفع لـ ", + "estimate_no": "رقم العرض", + "billed_from": "تم دفع من", + "estimate_amount": "قيمة العرض", + "invoice": "الفاتورة", + "receipt_": "الإيصال", + "receipt_no": "رقم الإيصال", + "receipt_amount": "قيمة الإيصال", + "please_enter_your_preferred_payment_method_below": "الرجاء إدخال طريقة الدفع المفضلة لديك أدناه.", + "submit_voucher": "ادخال القسيمة", + "sale_invoice": "فاتورة بيع", + "purchase_invoice": "فاتورة شراء", + "expense": "مصروف", + "vendor": "مورد", + "jump_to_the_invoices": "انتقل إلى فوتير البيع.", + "jump_to_the_estimates": "انتقل إلى العروض.", + "jump_to_the_receipts": "انتقل إلي الإيصالات.", + "jump_to_the_expenses": "انتقل إلي مصاريف.", + "jump_to_the_customers": "انتقل إلي الزبائن", + "jump_to_the_vendors": "انتقل إلي الموردين.", + "jump_to_the_chart_of_accounts": "انتقل إلي شجرة الحسابات.", + "jump_to_the_bills": "انتقل إلي فواتير الشراء.", + "jump_to_the_manual_journals": "انتقل إلي القيود اليدوية.", + "jump_to_the_items": "انتقل إلي المنتجات.", + "jump_to_the_balance_sheet": "انتقل إلي تقرير الميزانية العمومية.", + "jump_to_the_profit_loss_sheet": "انتقل إلي تقرير قائمة الدخل.", + "jump_to_the_journal_sheet": "انتقل إلي دفتر اليومية العامة.", + "jump_to_the_general_ledger_sheet": "انتقل إلي دفتر الأستاذ العام", + "jump_to_the_trial_balance_sheet": "انتقل إلي تقرير ميزان المراجعة", + "create_a_new_invoice": "انتقل إلي اضافة فاتورة بيع جديدة.", + "create_a_new_estimate": "انتقل إلي إضافة عرض جديد.", + "create_a_new_receipt": "إضافة إيصال جديد.", + "create_a_new_expense": "إضافة مصروف جديد.", + "create_a_new_customer": "إضافة زبون جديد.", + "create_a_new_vendor": "إضافة مورد جديد.", + "create_a_new_bill": "إضافة فاتورة شراء جديدة", + "create_a_new_make_journal": "", + "create_a_new_item": "إضافة منتج جديد.", + "close_and_open_sidebar": "إغلاق وفتح الشريط الجانبي.", + "and_over": "وأكثر", + "date_year": "التاريخ / السنة", + "date_month": "التاريخ / الشهر", + "date_week": "التاريخ / الأسبوع", + "date_day": "التاريخ / اليوم", + "date_quarter": "التاريخ / الربع", + "today": "اليوم", + "this_week": "هذا الأسبوع", + "this_month": "هذا الشهر", + "this_quarter": "هذا الربع", + "this_year": "هذه السنة", + "custom_range": "نطاق مخصص", + "total_rows": "", + "always": "دائماً", + "none": "", + "us_dollar": "", + "euro": "", + "libyan_diner": "", + "english": "", + "arabic": "", + "just_a_moment_we_re_calculating_your_cost_transactions": "لحظة واحدة! نحن نحسب معاملات التكلفة الخاصة بك ، هذا لا يستغرق الكثير من الوقت ، يرجى التحقق بعد فترة.", + "refresh": "", + "total_name": "إجمالي {name}", + "income": "الدخل", + "total_income": "إجمالي الدخل", + "cost_of_sales": "تكلفة المبيعات", + "total_cost_of_sales": "التكلفة الإجمالية للمبيعات", + "gross_profit": "إجمالي الأرباح", + "total_expenses": "إجمالي المصروفات", + "net_operating_income": "صافي الدخل التشغيلي", + "other_income": "الإيرادات الأخرى", + "total_other_income": "إجمالي الدخل اخرى", + "other_expenses": "مصاريف اخري", + "total_other_expenses": "إجمالي المصاريف اخرى", + "net_other_income": "صافي الدخل الآخر", + "net_income": "صافي الدخل", + "services_that_you_provide_to_customers": " الخدمة: الخدمات التي تقدمها للعملاء.", + "products_you_buy_and_or_sell": " المخزون: المنتجات التي تشتريها و / أو تبيعها والتي تتبع كمياتها.", + "products_you_buy_and_or_sell_but_don_t_need": " غير متعلق بالمخزون: المنتجات التي تشتريها و / أو تبيعها ولكنك لا تحتاج (أو لا تستطيع) تتبع كميات ، على سبيل المثال المسامير المستخدمة في التثبيت.", + "there_is_no_items_in_the_table_yet": "لا توجد منتجات في الجدول حتى الآن.", + "congrats_you_are_ready_to_go": "مبروك! انت جاهز للبدء", + "go_to_dashboard": "انتقل إلي الصفحة الرئيسية,", + "mr": "سيد", + "mrs": "سيدة", + "ms": "آنسة", + "miss": "آنسة", + "dr": "دكتور", + "all_accounts_": "كل الحسابات", + "search": "البحث ...", + "starter": "", + "sale_and_purchase_invoices": "فواتير الشراء والبيع", + "customers_vendors_accounts": "حسابات الزبائن والموردين", + "expense_tracking": "تتبع المصاريف", + "for_one_user_and_accountant": "لمستخدم واحد والمحاسب", + "all_capital_starter_features": "جميع مميزات Capital Starter", + "multi_currency": "تعدد العملات", + "purchase_and_sell_orders": "أوامر الشراء والبيع.", + "inventory_management": "ادارة المخزون.", + "three_users_with_your_accountant": "ثلاثة مستخدمين مع المحاسب الخاص بك.", + "advanced_financial_reports": "التقارير المالية المتقدمة.", + "all_capital_essential_features": "جميع مميزات Capital Essential", + "track_multi_branches_and_locations": "تتبع الفروع المتعددة والمواقع.", + "projects_accounting_and_timesheets": "محاسبة المشاريع والجداول الزمنية.", + "accounting_dimensions": "محاسبة الأبعاد", + "libya": "ليبيا", + "mm_dd_yy": "", + "dd_mm_yy": "", + "yy_mm_dd": "", + "mm_dd_yy_": "", + "dd_mm_yy_": "", + "yy_mm_dd_": "", + "plan_radio_name": "" } \ No newline at end of file diff --git a/client/src/lang/en/index.js b/client/src/lang/en/index.js index 789c8bb58..8de51d797 100644 --- a/client/src/lang/en/index.js +++ b/client/src/lang/en/index.js @@ -1067,5 +1067,6 @@ export default { cash_flow_statement: 'Cash Flow Statement', statement_of_cash_flow: 'Statement of Cash Flow ', inventory_item_details: 'Inventory Item Details', + congratulations: 'Congratulations' }; diff --git a/client/src/lang/en/index.json b/client/src/lang/en/index.json index b8bcb1a75..fd25cd840 100644 --- a/client/src/lang/en/index.json +++ b/client/src/lang/en/index.json @@ -1028,7 +1028,7 @@ "create_a_new_customer": "create_a_new_customer", "create_a_new_vendor": "Create a new vendor.", "create_a_new_bill": "Create a new bill.", - "create_a_new_make_journal": "Create a new Make Journal.", + "create_a_new_journal": "Create a new journal.", "create_a_new_item": "Create a new item.", "close_and_open_sidebar": "Close and open sidebar.", "and_over": "And Over", @@ -1102,5 +1102,12 @@ "mm_dd_yy_": "MM-DD-YY", "dd_mm_yy_": "DD-MM-YY", "yy_mm_dd_": "YY-MM-DD", - "plan_radio_name":"{name}" + "plan_radio_name":"{name}", + "customers_payments": "Customers Payments", + "receiving_customer_payments_is_one_pleasant_accounting_tasks": "Receiving payments is one of your more pleasant accounting tasks. The payments transactions will appear once receive payments to invoices.", + "estimate_is_used_to_create_bid_proposal_or_quote": "An estimate is used to create a bid, proposal, or quote. The estimate can later be turned into a sales order or an invoice.", + "payment_made_empty_status_description": "The payments transactions will appear once payments made to purchases invoices.", + "bill_empty_status_description": "Record purchases transactions from vendors who make no or partial payment and help you keep track of accounts payable with a vendor.", + "invoices_empty_status_description": "Record sales transactions from customers who make no or partial payment and help you keep track of accounts receivable with a customer.", + "receipt_empty_status_description": "Create a sales receipt any time your customer immediately pays for products or services at the time of sale." } \ No newline at end of file diff --git a/client/src/style/App.scss b/client/src/style/App.scss index a444f7251..9426135d6 100644 --- a/client/src/style/App.scss +++ b/client/src/style/App.scss @@ -184,8 +184,13 @@ body.hide-scrollbar .Pane2 { // RTL Icons. html[dir="rtl"] { - .bp3-icon-caret-right{ transform: scaleX(-1); } } + +html[lang^="ar"] { + body{ + letter-spacing: -0.01rem; + } +} \ No newline at end of file diff --git a/client/src/style/containers/Dashboard/Sidebar.scss b/client/src/style/containers/Dashboard/Sidebar.scss index a9f2030e3..66ba237a3 100644 --- a/client/src/style/containers/Dashboard/Sidebar.scss +++ b/client/src/style/containers/Dashboard/Sidebar.scss @@ -169,7 +169,7 @@ font-weight: 500; letter-spacing: 1px; - html[lang="ar"] &{ + html[lang^="ar"] &{ font-size: 12px; letter-spacing: 0; } diff --git a/server/src/api/controllers/Accounts.ts b/server/src/api/controllers/Accounts.ts index b4e378434..e48f1f9e3 100644 --- a/server/src/api/controllers/Accounts.ts +++ b/server/src/api/controllers/Accounts.ts @@ -8,6 +8,7 @@ import { IAccountDTO, IAccountsFilter } from 'interfaces'; import { ServiceError } from 'exceptions'; import DynamicListingService from 'services/DynamicListing/DynamicListService'; import { DATATYPES_LENGTH } from 'data/DataTypes'; +import I18nService from 'services/I18n/I18nService'; @Service() export default class AccountsController extends BaseController { @@ -17,6 +18,9 @@ export default class AccountsController extends BaseController { @Inject() dynamicListService: DynamicListingService; + @Inject() + i18nService: I18nService; + /** * Router constructor method. */ diff --git a/server/src/api/controllers/FinancialStatements/BalanceSheet.ts b/server/src/api/controllers/FinancialStatements/BalanceSheet.ts index c8bca9cc8..0d5ca9bec 100644 --- a/server/src/api/controllers/FinancialStatements/BalanceSheet.ts +++ b/server/src/api/controllers/FinancialStatements/BalanceSheet.ts @@ -33,7 +33,6 @@ export default class BalanceSheetStatementController extends BaseFinancialReport get balanceSheetValidationSchema(): ValidationChain[] { return [ ...this.sheetNumberFormatValidationSchema, - query('accounting_method').optional().isIn(['cash', 'accural']), query('from_date').optional(), query('to_date').optional(), diff --git a/server/src/locales/ar.json b/server/src/locales/ar.json index 693e3453c..2940a3302 100644 --- a/server/src/locales/ar.json +++ b/server/src/locales/ar.json @@ -11,9 +11,9 @@ "Inventory Asset": "المخزون", "Cost of Goods Sold (COGS)": "تكلفة البضائع المباعة (COGS)", "Cost of Goods Sold": "تكلفة البضاعة المباعة", - "Accounts Payable": "حسابات قابلة للدفع", - "Other Expense": "نفقات أخرى", - "Payroll Expenses": "نفقات الأجور", + "Accounts Payable": "الذمم الدائنة", + "Other Expense": "مصاريف أخرى", + "Payroll Expenses": "مصاريف المرتبات", "Fixed Asset": "أصول ثابتة", "Credit Card": "بطاقة إئتمان", "Non-Current Asset": "أصول غير متداولة", @@ -25,14 +25,14 @@ "Equity": "حقوق الملكية", "Expense": "مصروف", "Income": "دخل", - "Accounts Receivable (A/R)": "حسابات القبض (A / R)", + "Accounts Receivable (A/R)": "الذمم المدينة", "Accounts Receivable": "الذمم المدينة", - "Accounts Payable (A/P)": "الحسابات الدائنة (A / P)", + "Accounts Payable (A/P)": "الذمم الدائنة", "Inactive": "غير نشط", - "Other Current Asset": "اثار حالية اخري", + "Other Current Asset": "أصول متداولة اخرى", "Tax Payable": "الضريبة المستحقة", - "Other Current Liability": "مطلوبات متداولة أخرى", - "Non-Current Liability": "المسؤولية غير المتداولة", + "Other Current Liability": "التزامات قصيرة الأجر اخرى", + "Non-Current Liability": "التزامات طويلة الأجر", "Assets": "أصول", "Liabilities": "الالتزمات", "Account name": "أسم الحساب", @@ -45,15 +45,15 @@ "Active": "نشيط", "Created at": "أنشئت في", "fixed_asset": "أصل ثابت", - "Journal": "مجلة", - "Reconciliation": "تصالح", - "Credit": "تنسب إليه", - "Debit": "دين", + "Journal": "قيد", + "Reconciliation": "تسوية", + "Credit": "دائن", + "Debit": "مدين", "Interest": "فائدة", - "Depreciation": "الاستهلاك", + "Depreciation": "اهلاك", "Payroll": "كشف رواتب", "Type": "نوع", - "Name": "اسم", + "Name": "الأسم", "Sellable": "قابل للبيع", "Purchasable": "قابل للشراء", "Sell price": "سعر البيع", @@ -62,34 +62,33 @@ "Category": "تصنيف", "Note": "ملحوظة", "Quantity on hand": "كمية في اليد", - "Quantity": "الكمية", "Purchase description": "وصف الشراء", "Sell description": "وصف البيع", - "Sell account": "بيع حساب", + "Sell account": "حساب البيع", "Cost account": "حساب التكلفة", - "Inventory account": "حساب الجرد", + "Inventory account": "حساب المخزون", "Payment date": "تاريخ الدفع", "Payment account": "حساب الدفع", "Amount": "كمية", "Reference No.": "رقم المرجع.", "Published": "نشرت", - "Journal number": "رقم المجلة", + "Journal number": "رقم القيد", "Status": "حالة", - "Journal type": "نوع المجلة", + "Journal type": "نوع القيد", "Date": "تاريخ", "Asset": "أصل", "Liability": "مسؤلية", "First-in first-out (FIFO)": "الوارد أولاً يصرف أولاً (FIFO)", "Last-in first-out (LIFO)": "الوارد أخيرًا يصرف أولاً (LIFO)", "Average rate": "المعدل المتوسط", - "Total": "مجموع", + "Total": "الإجمالي", "Transaction type": "نوع المعاملة", "Transaction #": "عملية #", "Running Value": "القيمة الجارية", "Running quantity": "الكمية الجارية", "Profit Margin": "هامش الربح", - "Value": "قيمة", - "Rate": "معدل", + "Value": "القيمة", + "Rate": "السعر", "OPERATING ACTIVITIES": "أنشطة التشغيل", "FINANCIAL ACTIVITIES": "الأنشطة المالية", "Net income": "صافي الدخل", @@ -100,10 +99,10 @@ "Cash at beginning of period": "النقدية في بداية الفترة", "NET CASH INCREASE FOR PERIOD": "زيادة صافي النقد للفترة", "CASH AT END OF PERIOD": "النقد في نهاية الفترة", - "Expenses": "نفقات", + "Expenses": "مصاريف", "Services": "خدمات", "Inventory": "المخزون", - "Non-Inventory": "غير الجرد", + "Non-Inventory": "غير متعلق بالمخزون", "Draft": "مسودة", "Delivered": "تم التوصيل", "Overdue": "متأخر", @@ -116,13 +115,47 @@ "Invoiced": "مفوترة", "Expired": "منتهي الصلاحية", "Closed": "مغلق", - "Manual journal": "مجلة يدوية", - "Inventory adjustment": "ضبط المخزون", - "Customer opening balance": "الرصيد الافتتاحي للعميل", - "Vendor opening balance": "رصيد افتتاح البائع", - "Payment made": "تم الدفع", - "Bill": "مشروع قانون", + "Manual journal": "قيد اليدوي", + "Inventory adjustment": "تسوية المخزون", + "Customer opening balance": "الرصيد الافتتاحي للزبون", + "Vendor opening balance": "رصيد افتتاحي للمورد", + "Payment made": "سند الزبون", + "Bill": "فاتورة الشراء", "Payment receive": "استلام الدفع", "Sale receipt": "إيصال البيع", - "Sale invoice": "فاتورة البيع" + "Sale invoice": "فاتورة البيع", + "Quantity": "الكمية", + "Bank Account": "حساب البنك", + "Saving Bank Account": "حساب التوفير البنكي", + "Undeposited Funds": "الأموال غير المودعة", + "Computer Equipment": "معدات كمبيوتر", + "Office Equipment": "معدات مكتبية", + "Uncategorized Income": "الدخل غير مصنف", + "Sales of Service Income": "دخل مبيعات الخدمات", + "Bank Fees and Charges": "رسوم المصرفية", + "Exchange Gain or Loss": "ربح أو خسارة فروقات الصرف", + "Rent": "إيجار", + "Office expenses": "مصاريف المكتب", + "Other Expenses": "مصاريف اخري", + "Drawings": "السحوبات", + "Owner's Equity": "حقوق الملكية", + "Opening Balance Equity": "الارصدة الافتتاحية ", + "Retained Earnings": "الأرباح المحتجزة", + "Sales Tax Payable": "ضريبة المبيعات المستحقة", + "Revenue Received in Advance": "الإيرادات المقبوضة مقدما", + "Opening Balance Liabilities": "رصيد الالتزامات الافتتاحي", + "Loan": "اقراض", + "Owner A Drawings": "مسحوبات المالك", + "An account that holds valuation of products or goods that availiable for sale.": "حساب يحمل قيم مخزون البضاعة أو السلع المتاحة للبيع.", + "Tracks the gain and losses of the exchange differences.": "يسجل مكاسب وخسائر فروق الصرف.", + "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.": "يتم تسجيل أي رسوم مصرفية يتم فرضها في حساب الرسوم والمصروفات البنكية. ومن الأمثلة على ذلك رسوم صيانة الحساب المصرفي ورسوم المعاملات ورسوم الدفع المتأخر.", + "The income activities are not associated to the core business.": "لا ترتبط انشطة الدخل إلى الأعمال الأساسية.", + "Cash and cash equivalents": "النقد والنقد المكافئ", + "Inventories": "مخزون البضاعة", + "Other current assets": "الأصول متداولة الأخرى", + "Non-Current Assets": "أصول غير المتداولة", + "Current Liabilties": "التزامات متداولة", + "Long-Term Liabilities": "التزامات طويلة الاجل", + "Non-Current Liabilities": "التزامات غير متداولة", + "Liabilities and Equity": "التزامات وحقوق الملكية" } \ No newline at end of file diff --git a/server/src/locales/en.json b/server/src/locales/en.json index 013400c08..2ba5d9750 100644 --- a/server/src/locales/en.json +++ b/server/src/locales/en.json @@ -149,5 +149,13 @@ "An account that holds valuation of products or goods that availiable for sale.": "An account that holds valuation of products or goods that availiable for sale.", "Tracks the gain and losses of the exchange differences.": "Tracks the gain and losses of the exchange differences.", "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.": "Any bank fees levied is recorded into the bank fees and charges account. A bank account maintenance fee, transaction charges, a late payment fee are some examples.", - "The income activities are not associated to the core business.": "The income activities are not associated to the core business." + "The income activities are not associated to the core business.": "The income activities are not associated to the core business.", + "Cash and cash equivalents": "Cash and cash equivalents", + "Inventories": "Inventories", + "Other current assets": "Other current assets", + "Non-Current Assets": "Non-Current Assets", + "Current Liabilties": "Current Liabilties", + "Long-Term Liabilities": "Long-Term Liabilities", + "Non-Current Liabilities": "Non-Current Liabilities", + "Liabilities and Equity": "Liabilities and Equity" } \ No newline at end of file diff --git a/server/src/services/Accounts/AccountsService.ts b/server/src/services/Accounts/AccountsService.ts index adbaaa90d..a7a0d6505 100644 --- a/server/src/services/Accounts/AccountsService.ts +++ b/server/src/services/Accounts/AccountsService.ts @@ -21,6 +21,7 @@ import events from 'subscribers/events'; import AccountTypesUtils from 'lib/AccountTypes'; import { ERRORS } from './constants'; import { flatToNestedArray } from 'utils'; +import I18nService from 'services/I18n/I18nService'; @Service() export default class AccountsService { @@ -36,6 +37,9 @@ export default class AccountsService { @EventDispatcher() eventDispatcher: EventDispatcherInterface; + @Inject() + i18nService: I18nService; + /** * Retrieve account type or throws service error. * @param {number} tenantId - @@ -721,7 +725,9 @@ export default class AccountsService { ...account.toJSON(), currencyCode: baseCurrency, })); - return flatToNestedArray(_accounts, { + return flatToNestedArray( + this.i18nService.i18nMapper(_accounts, ['account_type_label'], tenantId), + { id: 'id', parentId: 'parent_account_id', }); diff --git a/server/src/services/Accounts/AccountsTypesServices.ts b/server/src/services/Accounts/AccountsTypesServices.ts index 23ea3cdc3..f3e38bfb8 100644 --- a/server/src/services/Accounts/AccountsTypesServices.ts +++ b/server/src/services/Accounts/AccountsTypesServices.ts @@ -16,7 +16,6 @@ export default class AccountsTypesService implements IAccountsTypesService { */ public getAccountsTypes(tenantId: number): IAccountType[] { const accountTypes = AccountTypesUtils.getList(); - - return this.i18nService.i18nMapper(accountTypes, ['name'], tenantId); + return this.i18nService.i18nMapper(accountTypes, ['label'], tenantId); } } diff --git a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts index d8b45706c..0ec2b247a 100644 --- a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts +++ b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheet.ts @@ -36,7 +36,8 @@ export default class BalanceSheetStatement extends FinancialSheet { query: IBalanceSheetQuery, accounts: IAccount & { type: IAccountType }[], journalFinancial: IJournalPoster, - baseCurrency: string + baseCurrency: string, + i18n ) { super(); @@ -49,6 +50,8 @@ export default class BalanceSheetStatement extends FinancialSheet { this.comparatorDateType = query.displayColumnsType === 'total' ? 'day' : query.displayColumnsBy; + this.i18n = i18n; + this.initDateRangeCollection(); } @@ -255,7 +258,7 @@ export default class BalanceSheetStatement extends FinancialSheet { accounts: IAccount & { type: IAccountType }[] ): IBalanceSheetSection { const result = { - name: structure.name, + name: this.i18n.__(structure.name), sectionType: structure.sectionType, type: structure.type, ...(structure.type === 'accounts_section' diff --git a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts index 3c0c7b5ba..3b98b4983 100644 --- a/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts +++ b/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetService.ts @@ -92,6 +92,8 @@ export default class BalanceSheetStatementService transactionsRepository, } = this.tenancy.repositories(tenantId); + const i18n = this.tenancy.i18n(tenantId); + // Settings tenant service. const settings = this.tenancy.settings(tenantId); const baseCurrency = settings.get({ @@ -127,7 +129,8 @@ export default class BalanceSheetStatementService filter, accounts, transactionsJournal, - baseCurrency + baseCurrency, + i18n ); // Balance sheet data. const balanceSheetData = balanceSheetInstanace.reportData(); diff --git a/server/src/services/I18n/I18nService.ts b/server/src/services/I18n/I18nService.ts index d0987be02..3f81343eb 100644 --- a/server/src/services/I18n/I18nService.ts +++ b/server/src/services/I18n/I18nService.ts @@ -6,6 +6,22 @@ export default class I18nService { @Inject() tenancy: HasTenancyService; + /** + * + * @param i18n + * @param attributes + * @param data + * @returns + */ + private i18nAttributesMapper(i18n, attributes, data) { + return attributes.reduce((acc, attr, index) => { + return { + ...acc, + [attr]: i18n.__(acc[attr]), + }; + }, data); + } + /** * Mappes array collection to i18n localization based in given attributes. * @param {Array} data - Array collection. @@ -20,9 +36,11 @@ export default class I18nService { const i18n = this.tenancy.i18n(tenantId); return data.map((_data) => { + const newData = this.i18nAttributesMapper(i18n, attributes, _data); + return { - label: i18n.__(_data.label), ..._data, + ...newData, }; }); }