[WEB-4123]feat: language support for sub-work item empty states #7092

This commit is contained in:
Vamsi Krishna 2025-05-23 15:36:47 +05:30 committed by GitHub
parent 5223bd01e8
commit a3b9152a9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 247 additions and 16 deletions

View file

@ -1108,6 +1108,18 @@
"remove": {
"success": "Podřízená pracovní položka úspěšně odebrána",
"error": "Chyba při odebírání podřízené položky"
},
"empty_state": {
"sub_list_filters": {
"title": "Nemáte podřízené pracovní položky, které odpovídají použitým filtrům.",
"description": "Chcete-li zobrazit všechny podřízené pracovní položky, odstraňte všechny použité filtry.",
"action": "Odstranit filtry"
},
"list_filters": {
"title": "Nemáte pracovní položky, které odpovídají použitým filtrům.",
"description": "Chcete-li zobrazit všechny pracovní položky, odstraňte všechny použité filtry.",
"action": "Odstranit filtry"
}
}
},
"view": {

View file

@ -1108,6 +1108,18 @@
"remove": {
"success": "Untergeordnetes Arbeitselement erfolgreich entfernt",
"error": "Fehler beim Entfernen des untergeordneten Elements"
},
"empty_state": {
"sub_list_filters": {
"title": "Sie haben keine untergeordneten Arbeitselemente, die den von Ihnen angewendeten Filtern entsprechen.",
"description": "Um alle untergeordneten Arbeitselemente anzuzeigen, entfernen Sie alle angewendeten Filter.",
"action": "Filter entfernen"
},
"list_filters": {
"title": "Sie haben keine Arbeitselemente, die den von Ihnen angewendeten Filtern entsprechen.",
"description": "Um alle Arbeitselemente anzuzeigen, entfernen Sie alle angewendeten Filter.",
"action": "Filter entfernen"
}
}
},
"view": {

View file

@ -944,6 +944,18 @@
"remove": {
"success": "Sub-work item removed successfully",
"error": "Error removing sub-work item"
},
"empty_state": {
"sub_list_filters": {
"title": "You don't have sub-work items that match the filters you've applied.",
"description": "To see all sub-work items, clear all applied filters.",
"action": "Clear filters"
},
"list_filters": {
"title": "You don't have work items that match the filters you've applied.",
"description": "To see all work items, clear all applied filters.",
"action": "Clear filters"
}
}
},
"view": {
@ -2284,4 +2296,4 @@
"previously_edited_by": "Previously edited by",
"edited_by": "Edited by"
}
}
}

View file

@ -1111,6 +1111,18 @@
"remove": {
"success": "Sub-elemento eliminado correctamente",
"error": "Error al eliminar el sub-elemento"
},
"empty_state": {
"sub_list_filters": {
"title": "No tienes sub-elementos de trabajo que coincidan con los filtros que has aplicado.",
"description": "Para ver todos los sub-elementos de trabajo, elimina todos los filtros aplicados.",
"action": "Eliminar filtros"
},
"list_filters": {
"title": "No tienes elementos de trabajo que coincidan con los filtros que has aplicado.",
"description": "Para ver todos los elementos de trabajo, elimina todos los filtros aplicados.",
"action": "Eliminar filtros"
}
}
},
"view": {

View file

@ -1109,6 +1109,18 @@
"remove": {
"success": "Sous-élément de travail supprimé avec succès",
"error": "Erreur lors de la suppression du sous-élément de travail"
},
"empty_state": {
"sub_list_filters": {
"title": "Vous n'avez pas de sous-éléments de travail qui correspondent aux filtres que vous avez appliqués.",
"description": "Pour voir tous les sous-éléments de travail, effacer tous les filtres appliqués.",
"action": "Effacer les filtres"
},
"list_filters": {
"title": "Vous n'avez pas d'éléments de travail qui correspondent aux filtres que vous avez appliqués.",
"description": "Pour voir tous les éléments de travail, effacer tous les filtres appliqués.",
"action": "Effacer les filtres"
}
}
},
"view": {

View file

@ -1108,6 +1108,18 @@
"remove": {
"success": "Sub-item kerja berhasil dihapus",
"error": "Kesalahan saat menghapus sub-item kerja"
},
"empty_state": {
"sub_list_filters": {
"title": "Anda tidak memiliki sub-item kerja yang cocok dengan filter yang Anda terapkan.",
"description": "Untuk melihat semua sub-item kerja, hapus semua filter yang diterapkan.",
"action": "Hapus filter"
},
"list_filters": {
"title": "Anda tidak memiliki item kerja yang cocok dengan filter yang Anda terapkan.",
"description": "Untuk melihat semua item kerja, hapus semua filter yang diterapkan.",
"action": "Hapus filter"
}
}
},
"view": {

View file

@ -1107,6 +1107,18 @@
"remove": {
"success": "Sotto-elemento di lavoro rimosso con successo",
"error": "Errore nella rimozione del sotto-elemento di lavoro"
},
"empty_state": {
"sub_list_filters": {
"title": "Non hai sotto-elementi di lavoro che corrispondono ai filtri che hai applicato.",
"description": "Per vedere tutti i sotto-elementi di lavoro, cancella tutti i filtri applicati.",
"action": "Cancella filtri"
},
"list_filters": {
"title": "Non hai elementi di lavoro che corrispondono ai filtri che hai applicato.",
"description": "Per vedere tutti gli elementi di lavoro, cancella tutti i filtri applicati.",
"action": "Cancella filtri"
}
}
},
"view": {

View file

@ -1109,6 +1109,18 @@
"remove": {
"success": "サブ作業項目を削除しました",
"error": "サブ作業項目の削除中にエラーが発生しました"
},
"empty_state": {
"sub_list_filters": {
"title": "適用されたフィルターに一致するサブ作業項目がありません。",
"description": "すべてのサブ作業項目を表示するには、すべての適用されたフィルターをクリアしてください。",
"action": "フィルターをクリア"
},
"list_filters": {
"title": "適用されたフィルターに一致する作業項目がありません。",
"description": "すべての作業項目を表示するには、すべての適用されたフィルターをクリアしてください。",
"action": "フィルターをクリア"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "하위 작업 항목이 성공적으로 제거되었습니다",
"error": "하위 작업 항목 제거 중 오류 발생"
},
"empty_state": {
"sub_list_filters": {
"title": "적용된 필터에 일치하는 하위 작업 항목이 없습니다.",
"description": "모든 하위 작업 항목을 보려면 모든 적용된 필터를 지우세요.",
"action": "필터 지우기"
},
"list_filters": {
"title": "적용된 필터에 일치하는 작업 항목이 없습니다.",
"description": "모든 작업 항목을 보려면 모든 적용된 필터를 지우세요.",
"action": "필터 지우기"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "Podrzędny element pracy usunięto pomyślnie",
"error": "Błąd podczas usuwania elementu podrzędnego"
},
"empty_state": {
"sub_list_filters": {
"title": "Nie masz elementów podrzędnych, które pasują do filtrów, które zastosowałeś.",
"description": "Aby zobaczyć wszystkie elementy podrzędne, wyczyść wszystkie zastosowane filtry.",
"action": "Wyczyść filtry"
},
"list_filters": {
"title": "Nie masz elementów pracy, które pasują do filtrów, które zastosowałeś.",
"description": "Aby zobaczyć wszystkie elementy pracy, wyczyść wszystkie zastosowane filtry.",
"action": "Wyczyść filtry"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "Sub-item de trabalho removido com sucesso",
"error": "Erro ao remover sub-item de trabalho"
},
"empty_state": {
"sub_list_filters": {
"title": "Você não tem sub-itens de trabalho que correspondem aos filtros que você aplicou.",
"description": "Para ver todos os sub-itens de trabalho, limpe todos os filtros aplicados.",
"action": "Limpar filtros"
},
"list_filters": {
"title": "Você não tem itens de trabalho que correspondem aos filtros que você aplicou.",
"description": "Para ver todos os itens de trabalho, limpe todos os filtros aplicados.",
"action": "Limpar filtros"
}
}
},
"view": {

View file

@ -1108,6 +1108,18 @@
"remove": {
"success": "Sub-activitatea a fost eliminată cu succes",
"error": "Eroare la eliminarea sub-activității"
},
"empty_state": {
"sub_list_filters": {
"title": "Nu ai sub-elemente de lucru care corespund filtrelor pe care le-ai aplicat.",
"description": "Pentru a vedea toate sub-elementele de lucru, șterge toate filtrele aplicate.",
"action": "Șterge filtrele"
},
"list_filters": {
"title": "Nu ai elemente de lucru care corespund filtrelor pe care le-ai aplicat.",
"description": "Pentru a vedea toate elementele de lucru, șterge toate filtrele aplicate.",
"action": "Șterge filtrele"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "Подэлемент успешно удален",
"error": "Ошибка удаления подэлемента"
},
"empty_state": {
"sub_list_filters": {
"title": "У вас нет подэлементов, которые соответствуют примененным фильтрам.",
"description": "Чтобы увидеть все подэлементы, очистите все примененные фильтры.",
"action": "Очистить фильтры"
},
"list_filters": {
"title": "У вас нет рабочих элементов, которые соответствуют примененным фильтрам.",
"description": "Чтобы увидеть все рабочие элементы, очистите все примененные фильтры.",
"action": "Очистить фильтры"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "Podriadená pracovná položka bola úspešne odstránená",
"error": "Chyba pri odstraňovaní podriadenej položky"
},
"empty_state": {
"sub_list_filters": {
"title": "Nemáte podriadené pracovné položky, ktoré zodpovedajú použitým filtrom.",
"description": "Pre zobrazenie všetkých podriadených pracovných položiek vymažte všetky použité filtre.",
"action": "Vymazať filtre"
},
"list_filters": {
"title": "Nemáte pracovné položky, ktoré zodpovedajú použitým filtrom.",
"description": "Pre zobrazenie všetkých pracovných položiek vymažte všetky použité filtre.",
"action": "Vymazať filtre"
}
}
},
"view": {

View file

@ -1111,6 +1111,18 @@
"remove": {
"success": "Alt iş öğesi başarıyla kaldırıldı",
"error": "Alt iş öğesi kaldırılırken hata oluştu"
},
"empty_state": {
"sub_list_filters": {
"title": "Alt iş öğelerinizin filtreleriyle eşleşmiyor.",
"description": "Tüm alt iş öğelerini görmek için tüm uygulanan filtreleri temizleyin.",
"action": "Filtreleri temizle"
},
"list_filters": {
"title": "İş öğelerinizin filtreleriyle eşleşmiyor.",
"description": "Tüm iş öğelerini görmek için tüm uygulanan filtreleri temizleyin.",
"action": "Filtreleri temizle"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "Похідну робочу одиницю успішно вилучено",
"error": "Помилка під час вилучення похідної одиниці"
},
"empty_state": {
"sub_list_filters": {
"title": "Ви не маєте похідних робочих одиниць, які відповідають застосованим фільтрам.",
"description": "Щоб побачити всі похідні робочі одиниці, очистіть всі застосовані фільтри.",
"action": "Очистити фільтри"
},
"list_filters": {
"title": "Ви не маєте робочих одиниць, які відповідають застосованим фільтрам.",
"description": "Щоб побачити всі робочі одиниці, очистіть всі застосовані фільтри.",
"action": "Очистити фільтри"
}
}
},
"view": {

View file

@ -1109,6 +1109,18 @@
"remove": {
"success": "Đã xóa mục công việc con thành công",
"error": "Đã xảy ra lỗi khi xóa mục công việc con"
},
"empty_state": {
"sub_list_filters": {
"title": "Bạn không có mục công việc con nào phù hợp với các bộ lọc mà bạn đã áp dụng.",
"description": "Để xem tất cả các mục công việc con, hãy xóa tất cả các bộ lọc đã áp dụng.",
"action": "Xóa bộ lọc"
},
"list_filters": {
"title": "Bạn không có mục công việc nào phù hợp với các bộ lọc mà bạn đã áp dụng.",
"description": "Để xem tất cả các mục công việc, hãy xóa tất cả các bộ lọc đã áp dụng.",
"action": "Xóa bộ lọc"
}
}
},
"view": {

View file

@ -1109,6 +1109,18 @@
"remove": {
"success": "子工作项移除成功",
"error": "移除子工作项时出错"
},
"empty_state": {
"sub_list_filters": {
"title": "您没有符合您应用的过滤器的子工作项。",
"description": "要查看所有子工作项,请清除所有应用的过滤器。",
"action": "清除过滤器"
},
"list_filters": {
"title": "您没有符合您应用的过滤器的工作项。",
"description": "要查看所有工作项,请清除所有应用的过滤器。",
"action": "清除过滤器"
}
}
},
"view": {

View file

@ -1110,6 +1110,18 @@
"remove": {
"success": "子工作事項移除成功",
"error": "移除子工作事項時發生錯誤"
},
"empty_state": {
"sub_list_filters": {
"title": "您沒有符合您應用過的過濾器的子工作事項。",
"description": "要查看所有子工作事項,請清除所有應用過的過濾器。",
"action": "清除過濾器"
},
"list_filters": {
"title": "您沒有符合您應用過的過濾器的工作事項。",
"description": "要查看所有工作事項,請清除所有應用過的過濾器。",
"action": "清除過濾器"
}
}
},
"view": {

View file

@ -3,6 +3,7 @@ import { observer } from "mobx-react";
// plane imports
import { ListFilter } from "lucide-react";
import { EIssueServiceType, EIssuesStoreType } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import { GroupByColumnTypes, TIssue, TIssueServiceType, TSubIssueOperations } from "@plane/types";
// hooks
import { Button, Loader } from "@plane/ui";
@ -41,10 +42,12 @@ export const SubIssuesListRoot: React.FC<Props> = observer((props) => {
storeType = EIssuesStoreType.PROJECT,
spacingLeft = 0,
} = props;
const { t } = useTranslation();
// store hooks
const {
subIssues: {
subIssuesByIssueId, loader,
subIssuesByIssueId,
loader,
filters: { getSubIssueFilters, getGroupedSubWorkItems, getFilteredSubWorkItems, resetFilters },
},
} = useIssueDetail(issueServiceType);
@ -77,15 +80,15 @@ export const SubIssuesListRoot: React.FC<Props> = observer((props) => {
const isSubWorkItems = issueServiceType === EIssueServiceType.ISSUES;
if (loader === "init-loader") {
return (
<Loader className="space-y-2">
{Array.from({ length: 5 }).map((_, index) => (
<Loader.Item key={index} height="35px" width="100%" />
))}
</Loader>
);
}
if (loader === "init-loader") {
return (
<Loader className="space-y-2">
{Array.from({ length: 5 }).map((_, index) => (
<Loader.Item key={index} height="35px" width="100%" />
))}
</Loader>
);
}
return (
<div className="relative">
@ -93,19 +96,19 @@ export const SubIssuesListRoot: React.FC<Props> = observer((props) => {
<SectionEmptyState
title={
!isSubWorkItems
? "You don't have work items that match the filters you've applied."
: "You don't have sub-work items that match the filters you've applied."
? t("sub_work_item.empty_state.list_filters.title")
: t("sub_work_item.empty_state.sub_list_filters.title")
}
description={
!isSubWorkItems
? "To see all work items, clear all applied filters."
: "To see all sub-work items, clear all applied filters."
? t("sub_work_item.empty_state.list_filters.description")
: t("sub_work_item.empty_state.sub_list_filters.description")
}
icon={<ListFilter />}
customClassName={storeType !== EIssuesStoreType.EPIC ? "border-none" : ""}
actionElement={
<Button variant="neutral-primary" size="sm" onClick={() => resetFilters(rootIssueId)}>
Clear filters
{t("sub_work_item.empty_state.list_filters.action")}
</Button>
}
/>