feat: Implement internationalization for task management components
- Added translation support for task-related strings in ProjectTaskForm and ProjectTasksSection components. - Integrated translation for navigation items in the Navigation component. - Created ProjectCalendarWidget component with Polish translations for project statuses and deadlines. - Developed Tooltip component for enhanced user experience with tooltips. - Established a field change history logging system in the database with associated queries. - Enhanced task update logging to include translated status and priority changes. - Introduced server-side translations for system messages to improve localization.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import db from "../db.js";
|
||||
import { addNoteToTask } from "./notes.js";
|
||||
import { getUserLanguage, serverT, translateStatus, translatePriority } from "../serverTranslations.js";
|
||||
|
||||
// Get all task templates (for dropdown selection)
|
||||
export function getAllTaskTemplates() {
|
||||
@@ -182,8 +183,10 @@ export function updateProjectTaskStatus(taskId, status, userId = null) {
|
||||
|
||||
// Add system note for status change (only if status actually changed)
|
||||
if (result.changes > 0 && oldStatus !== status) {
|
||||
const taskName = currentTask.task_name || "Unknown task";
|
||||
const logMessage = `Status changed from "${oldStatus}" to "${status}"`;
|
||||
const language = getUserLanguage(); // Default to Polish for now
|
||||
const fromStatus = translateStatus(oldStatus, language);
|
||||
const toStatus = translateStatus(status, language);
|
||||
const logMessage = `${serverT("Status changed from", language)} "${fromStatus}" ${serverT("to", language)} "${toStatus}"`;
|
||||
addNoteToTask(taskId, logMessage, true, userId);
|
||||
}
|
||||
|
||||
@@ -359,41 +362,48 @@ export function updateProjectTask(taskId, updates, userId = null) {
|
||||
|
||||
// Log the update
|
||||
if (userId) {
|
||||
const language = getUserLanguage(); // Default to Polish for now
|
||||
const changes = [];
|
||||
|
||||
if (
|
||||
updates.priority !== undefined &&
|
||||
updates.priority !== currentTask.priority
|
||||
) {
|
||||
const oldPriority = translatePriority(currentTask.priority, language) || serverT("None", language);
|
||||
const newPriority = translatePriority(updates.priority, language) || serverT("None", language);
|
||||
changes.push(
|
||||
`Priority: ${currentTask.priority || "None"} → ${
|
||||
updates.priority || "None"
|
||||
}`
|
||||
`${serverT("Priority", language)}: ${oldPriority} → ${newPriority}`
|
||||
);
|
||||
}
|
||||
|
||||
if (updates.status !== undefined && updates.status !== currentTask.status) {
|
||||
const oldStatus = translateStatus(currentTask.status, language) || serverT("None", language);
|
||||
const newStatus = translateStatus(updates.status, language) || serverT("None", language);
|
||||
changes.push(
|
||||
`Status: ${currentTask.status || "None"} → ${updates.status || "None"}`
|
||||
`${serverT("Status", language)}: ${oldStatus} → ${newStatus}`
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
updates.assigned_to !== undefined &&
|
||||
updates.assigned_to !== currentTask.assigned_to
|
||||
) {
|
||||
changes.push(`Assignment updated`);
|
||||
changes.push(serverT("Assignment updated", language));
|
||||
}
|
||||
|
||||
if (
|
||||
updates.date_started !== undefined &&
|
||||
updates.date_started !== currentTask.date_started
|
||||
) {
|
||||
const oldDate = currentTask.date_started || serverT("None", language);
|
||||
const newDate = updates.date_started || serverT("None", language);
|
||||
changes.push(
|
||||
`Date started: ${currentTask.date_started || "None"} → ${
|
||||
updates.date_started || "None"
|
||||
}`
|
||||
`${serverT("Date started", language)}: ${oldDate} → ${newDate}`
|
||||
);
|
||||
}
|
||||
|
||||
if (changes.length > 0) {
|
||||
const logMessage = `Task updated: ${changes.join(", ")}`;
|
||||
const logMessage = `${serverT("Task updated", language)}: ${changes.join(", ")}`;
|
||||
addNoteToTask(taskId, logMessage, true, userId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user