feat(localization): add and update translations for multiple languages

- Introduced new localization files for Albanian, German, Spanish, Portuguese, and Chinese, enhancing the application's multilingual support.
- Added new keys and updated existing translations in project-view, task-list-table, and settings files to improve user experience across different languages.
- Enhanced error handling and empty state messages in task management components to provide clearer feedback to users.
- Updated tooltip texts and button labels for better clarity and consistency in the user interface.
This commit is contained in:
chamikaJ
2025-07-08 15:26:55 +05:30
parent e750023fdc
commit f06851fa37
53 changed files with 700 additions and 117 deletions

View File

@@ -1,5 +1,6 @@
import React, { ReactNode, Suspense } from 'react';
import { InlineSuspenseFallback } from '@/components/suspense-fallback/suspense-fallback';
import i18n from '@/i18n';
// Import core components synchronously to avoid suspense in main tabs
import ProjectViewEnhancedBoard from '@/pages/projects/projectView/enhancedBoard/project-view-enhanced-board';
@@ -28,26 +29,31 @@ type TabItems = {
element: ReactNode;
};
// Function to get translated labels
const getTabLabel = (key: string): string => {
return i18n.t(`project-view:${key}`);
};
// settings all element items use for tabs
export const tabItems: TabItems[] = [
{
index: 0,
key: 'tasks-list',
label: 'Task List',
label: getTabLabel('taskList'),
isPinned: true,
element: React.createElement(TaskListV2),
},
{
index: 1,
key: 'board',
label: 'Board',
label: getTabLabel('board'),
isPinned: true,
element: React.createElement(ProjectViewEnhancedBoard),
},
{
index: 2,
key: 'project-insights-member-overview',
label: 'Insights',
label: getTabLabel('insights'),
element: React.createElement(
Suspense,
{ fallback: React.createElement(InlineSuspenseFallback) },
@@ -57,7 +63,7 @@ export const tabItems: TabItems[] = [
{
index: 3,
key: 'all-attachments',
label: 'Files',
label: getTabLabel('files'),
element: React.createElement(
Suspense,
{ fallback: React.createElement(InlineSuspenseFallback) },
@@ -67,7 +73,7 @@ export const tabItems: TabItems[] = [
{
index: 4,
key: 'members',
label: 'Members',
label: getTabLabel('members'),
element: React.createElement(
Suspense,
{ fallback: React.createElement(InlineSuspenseFallback) },
@@ -77,7 +83,7 @@ export const tabItems: TabItems[] = [
{
index: 5,
key: 'updates',
label: 'Updates',
label: getTabLabel('updates'),
element: React.createElement(
Suspense,
{ fallback: React.createElement(InlineSuspenseFallback) },
@@ -85,3 +91,29 @@ export const tabItems: TabItems[] = [
),
},
];
// Function to update tab labels when language changes
export const updateTabLabels = () => {
tabItems.forEach(item => {
switch (item.key) {
case 'tasks-list':
item.label = getTabLabel('taskList');
break;
case 'board':
item.label = getTabLabel('board');
break;
case 'project-insights-member-overview':
item.label = getTabLabel('insights');
break;
case 'all-attachments':
item.label = getTabLabel('files');
break;
case 'members':
item.label = getTabLabel('members');
break;
case 'updates':
item.label = getTabLabel('updates');
break;
}
});
};