From 325de8bdeda95ef5e2c98db5ac4400cd4e6aa7a8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 22 Nov 2021 16:05:22 +0100 Subject: [PATCH 01/12] Prettify number of issues - Use the PrettyNumber function to add commas in large amount of issues. --- options/locale/locale_bg-BG.ini | 4 ++-- options/locale/locale_cs-CZ.ini | 4 ++-- options/locale/locale_de-DE.ini | 4 ++-- options/locale/locale_el-GR.ini | 4 ++-- options/locale/locale_en-US.ini | 4 ++-- options/locale/locale_es-ES.ini | 4 ++-- options/locale/locale_fa-IR.ini | 4 ++-- options/locale/locale_fi-FI.ini | 4 ++-- options/locale/locale_fr-FR.ini | 4 ++-- options/locale/locale_hu-HU.ini | 4 ++-- options/locale/locale_id-ID.ini | 4 ++-- options/locale/locale_it-IT.ini | 4 ++-- options/locale/locale_ja-JP.ini | 4 ++-- options/locale/locale_ko-KR.ini | 4 ++-- options/locale/locale_lv-LV.ini | 4 ++-- options/locale/locale_nl-NL.ini | 4 ++-- options/locale/locale_pl-PL.ini | 4 ++-- options/locale/locale_pt-BR.ini | 4 ++-- options/locale/locale_pt-PT.ini | 4 ++-- options/locale/locale_sr-SP.ini | 4 ++-- options/locale/locale_sv-SE.ini | 4 ++-- options/locale/locale_tr-TR.ini | 4 ++-- options/locale/locale_uk-UA.ini | 4 ++-- options/locale/locale_zh-CN.ini | 4 ++-- options/locale/locale_zh-HK.ini | 4 ++-- options/locale/locale_zh-TW.ini | 4 ++-- templates/repo/issue/milestones.tmpl | 4 ++-- templates/repo/issue/openclose.tmpl | 4 ++-- templates/repo/projects/list.tmpl | 4 ++-- templates/user/dashboard/issues.tmpl | 4 ++-- 30 files changed, 60 insertions(+), 60 deletions(-) diff --git a/options/locale/locale_bg-BG.ini b/options/locale/locale_bg-BG.ini index aee3cd1d2495..33e3d0ce0804 100644 --- a/options/locale/locale_bg-BG.ini +++ b/options/locale/locale_bg-BG.ini @@ -658,8 +658,8 @@ issues.label_templates.helper=Изберете набор етикети issues.label_templates.use=Използвай набор етикети issues.label_templates.fail_to_load_file=Неуспешно зареждане на шаблон с етикети '%s': %v issues.deleted_milestone=`(изтрито)` -issues.open_tab=%d отворени -issues.close_tab=%d затворени +issues.open_tab=%s отворени +issues.close_tab=%s затворени issues.filter_label=Етикет issues.filter_milestone=Етап issues.filter_assignee=Изпълнител diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index bac76fb82ae9..73e17822b5db 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -1113,8 +1113,8 @@ issues.remove_assignee_at=`byl odstraněn z přiřazení %s %s` issues.remove_self_assignment=`odstranil/a jejich přiřazení %s` issues.change_title_at=`změnil/a název z %s na %s %s` issues.delete_branch_at=`odstranil/a větev %s %s` -issues.open_tab=%d otevřených -issues.close_tab=%d zavřených +issues.open_tab=%s otevřených +issues.close_tab=%s zavřených issues.filter_label=Štítek issues.filter_label_exclude=`Chcete-li vyloučit štítky, použijte alt + click/enter` issues.filter_label_no_select=Všechny štítky diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index e5e7b4b6622e..9ca2442d1217 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -1175,8 +1175,8 @@ issues.change_ref_at=`hat die Referenz von %s zu %s%s entfernt %s` issues.add_ref_at=`hat die Referenz %s hinzugefügt %s` issues.delete_branch_at=`löschte die Branch %s %s` -issues.open_tab=%d offen -issues.close_tab=%d geschlossen +issues.open_tab=%s offen +issues.close_tab=%s geschlossen issues.filter_label=Label issues.filter_label_exclude=„Alt + Klick/Enter verwenden, um Label auszuschließen” issues.filter_label_no_select=Alle Label diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index 8ea5f649734d..68882169f32d 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -1169,8 +1169,8 @@ issues.remove_assignee_at=`αφαιρέθηκε η ανάθεση από %s%s σε %s %s` issues.delete_branch_at=`διέγραψε το κλάδο %s %s` -issues.open_tab=%d Ανοιχτά -issues.close_tab=%d Κλειστά +issues.open_tab=%s Ανοιχτά +issues.close_tab=%s Κλειστά issues.filter_label=Σήμα issues.filter_label_exclude=`Χρησιμοποιήστε alt + κάντε κλικ/Enter για να εξαιρέσετε τις σημάνσεις` issues.filter_label_no_select=Όλα τα σήματα diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index ca6cd66625ed..cf0f6dcce681 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at = `changed reference from %s to issues.remove_ref_at = `removed reference %s %s` issues.add_ref_at = `added reference %s %s` issues.delete_branch_at = `deleted branch %s %s` -issues.open_tab = %d Open -issues.close_tab = %d Closed +issues.open_tab = %s Open +issues.close_tab = %s Closed issues.filter_label = Label issues.filter_label_exclude = `Use alt + click/enter to exclude labels` issues.filter_label_no_select = All labels diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index faa64d04a7f7..1815724a4103 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -1166,8 +1166,8 @@ issues.remove_assignee_at=`fue desasignado por %s %s` issues.remove_self_assignment=`eliminado su asignación %s` issues.change_title_at=`cambió el título de %s a %s %s` issues.delete_branch_at=`rama eliminada %s %s` -issues.open_tab=%d abiertas -issues.close_tab=%d cerradas +issues.open_tab=%s abiertas +issues.close_tab=%s cerradas issues.filter_label=Etiqueta issues.filter_label_exclude=`Usa alt + clic/enter para excluir etiquetas` issues.filter_label_no_select=Todas las etiquetas diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index d659725ea5f2..0fed41045c8a 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -908,8 +908,8 @@ issues.remove_assignee_at=`جدا شده توسط %s %s` issues.remove_self_assignment=`اینان جدا شدند: %s` issues.change_title_at=تغییر عنوان از %s به %s%s issues.delete_branch_at=`حذف شاخه %s %s` -issues.open_tab=%d باز -issues.close_tab=%d بسته +issues.open_tab=%s باز +issues.close_tab=%s بسته issues.filter_label=برچسب issues.filter_label_exclude=`ازalt + click/enter برای رد کردن برچسب‌ها استفاده کنید ` issues.filter_label_no_select=تمامی برچسب‎ها diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index 7b7133253044..1840de883f15 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -647,8 +647,8 @@ issues.add_milestone_at=`lisäsi tämän merkkipaaluun %s %s` issues.deleted_milestone=`(poistettu)` issues.self_assign_at=`itse otti tämän käsittelyyn %s` issues.delete_branch_at=`poisti haaran %s %s` -issues.open_tab=%d avoinna -issues.close_tab=%d suljettu +issues.open_tab=%s avoinna +issues.close_tab=%s suljettu issues.filter_label=Tunniste issues.filter_label_exclude=`Käytä alt + klikkaus/rivinvaihto poissulkeaksesi tunnisteita` issues.filter_label_no_select=Kaikki tunnisteet diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index f8b25544d01b..613fe2b055cd 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -1092,8 +1092,8 @@ issues.remove_assignee_at=`mis en non assigné par %s %s` issues.remove_self_assignment=`a retiré son assignation %s` issues.change_title_at=`a modifié le titre de %s à %s %s` issues.delete_branch_at=`a supprimé la branche %s %s` -issues.open_tab=%d Ouvert -issues.close_tab=%d Fermé +issues.open_tab=%s Ouvert +issues.close_tab=%s Fermé issues.filter_label=Étiquette issues.filter_label_exclude=`Utiliser alt + clic/entrée pour exclure les étiquettes` issues.filter_label_no_select=Toutes les étiquettes diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 0098a47aab5e..d29bc5c375fe 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -829,8 +829,8 @@ issues.add_assignee_at=`hozzárendelve %s által %s` issues.remove_assignee_at=`hozzárendelés törlése %s által %s` issues.remove_self_assignment=`eltávolította a hozzárendelést %s` issues.delete_branch_at=`letörölte a(z) %s ágat %s` -issues.open_tab=%d Nyitva -issues.close_tab=%d Lezárva +issues.open_tab=%s Nyitva +issues.close_tab=%s Lezárva issues.filter_label=Címke issues.filter_label_no_select=Minden címke issues.filter_milestone=Mérföldkő diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index c978c3db1bcb..be40e0db8a47 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -770,8 +770,8 @@ issues.deleted_milestone=`(dihapus)` issues.self_assign_at=`menugaskan diri %s` issues.add_assignee_at=`telah ditugaskan oleh %s %s` issues.delete_branch_at=`telah dihapus cabang %s %s` -issues.open_tab=%d Terbuka -issues.close_tab=%d Tertutup +issues.open_tab=%s Terbuka +issues.close_tab=%s Tertutup issues.filter_label=Label issues.filter_milestone=Tonggak issues.filter_assignee=Menerima diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index b46735ba5684..5a6544daa2fc 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -1012,8 +1012,8 @@ issues.remove_assignee_at=`è stato rimosso da %s %s` issues.remove_self_assignment=`Rimosso il loro incarico %s` issues.change_title_at=`Titolo modificato da %s a %s %s` issues.delete_branch_at=`branch %s eliminato %s` -issues.open_tab=%d Aperti -issues.close_tab=%d Chiusi +issues.open_tab=%s Aperti +issues.close_tab=%s Chiusi issues.filter_label=Etichetta issues.filter_label_exclude=`Usa alt + click/enter per escludere le etichette` issues.filter_label_no_select=Tutte le etichette diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 981b1a6d6cf3..622a8e9f2459 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -1176,8 +1176,8 @@ issues.change_ref_at=`が参照を %s から %s issues.remove_ref_at=`が参照 %s を削除 %s` issues.add_ref_at=`が参照 %s を追加 %s` issues.delete_branch_at=`がブランチ %[1]s を削除 %[2]s` -issues.open_tab=%d件 オープン中 -issues.close_tab=%d件 クローズ済 +issues.open_tab=%s件 オープン中 +issues.close_tab=%s件 クローズ済 issues.filter_label=ラベル issues.filter_label_exclude=`ラベルで除外するには alt + click/enter` issues.filter_label_no_select=すべてのラベル diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index 7880095ddb1a..eb827cc1df6c 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -734,8 +734,8 @@ issues.add_assignee_at=`다음으로부터 할당됨 %s %s` issues.remove_assignee_at=`다음으로부터 할당취소됨 %s %s` issues.remove_self_assignment=`%s 할당들이 삭제됨` issues.delete_branch_at=`삭제된 브랜치 %s %s` -issues.open_tab=%d 오픈 -issues.close_tab=%d 닫힘 +issues.open_tab=%s 오픈 +issues.close_tab=%s 닫힘 issues.filter_label=레이블 issues.filter_label_no_select=모든 레이블 issues.filter_milestone=마일스톤 diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index 3d0edfde11f8..9724e0c43b5f 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -1139,8 +1139,8 @@ issues.remove_assignee_at=`tika noņemta problēma no %s %s` issues.remove_self_assignment=`noņēma sev problēmu %s` issues.change_title_at=`nomainīts nosaukums no %s uz %s %s` issues.delete_branch_at=`izdzēsa atzaru %s %s` -issues.open_tab=%d atvērti -issues.close_tab=%d aizvērti +issues.open_tab=%s atvērti +issues.close_tab=%s aizvērti issues.filter_label=Etiķete issues.filter_label_exclude=`Izmantojiet alt + peles klikšķis vai enter, lai neiekļautu etiķeti` issues.filter_label_no_select=Visas etiķetes diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 5b4c0f961094..a1aa7c00bd1e 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -1002,8 +1002,8 @@ issues.remove_assignee_at=`is niet toegewezen door %s %s` issues.remove_self_assignment=`heeft %s zijn/haar toewijzing verwijderd` issues.change_title_at='titel aangepast van %s naar %s %s' issues.delete_branch_at=`heeft %[2]s de branch %[1]s verwijderd.` -issues.open_tab=%d Open -issues.close_tab=%d gesloten +issues.open_tab=%s Open +issues.close_tab=%s gesloten issues.filter_label=Label issues.filter_label_exclude=`Gebruik alt + klik/voer in om labels uit te sluiten issues.filter_label_no_select=Alle labels diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index e5e784ce0f6f..529503188778 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -930,8 +930,8 @@ issues.remove_assignee_at=`usunięto przypisanie przez %s %s` issues.remove_self_assignment=`usuwa swoje przypisanie %s` issues.change_title_at=`zmieniono tytuł z %s na %s %s` issues.delete_branch_at=`usuwa gałąź %s %s` -issues.open_tab=Otwarte %d -issues.close_tab=Zamknięte %d +issues.open_tab=Otwarte %s +issues.close_tab=Zamknięte %s issues.filter_label=Etykieta issues.filter_label_exclude=`Użyj Alt + Kliknij/Enter, aby wykluczyć etykiety` issues.filter_label_no_select=Wszystkie etykiety diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 5d472f5889b8..9805316c1064 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -1102,8 +1102,8 @@ issues.remove_assignee_at=`teve sua atribuição removida por %s %s` issues.remove_self_assignment=`removeu sua atribuição %s` issues.change_title_at=`alterou o título de %s para %s %s` issues.delete_branch_at=`excluiu branch %s %s` -issues.open_tab=%d aberto -issues.close_tab=%d fechado +issues.open_tab=%s aberto +issues.close_tab=%s fechado issues.filter_label=Etiqueta issues.filter_label_exclude=`Use alt + clique/enter para excluir etiquetas` issues.filter_label_no_select=Todas as etiquetas diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index bc9bfce859e1..6a656e2e76cf 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -1176,8 +1176,8 @@ issues.change_ref_at=`mudou a referência de %s para issues.remove_ref_at=`removeu a referência %s %s` issues.add_ref_at=`adicionou a referência %s %s` issues.delete_branch_at=`eliminou o ramo %s %s` -issues.open_tab=%d abertas -issues.close_tab=%d fechadas +issues.open_tab=%s abertas +issues.close_tab=%s fechadas issues.filter_label=Rótulo issues.filter_label_exclude=`Use alt + clique/enter para excluir rótulos` issues.filter_label_no_select=Todos os rótulos diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini index b2fc4427ad93..833f175c4423 100644 --- a/options/locale/locale_sr-SP.ini +++ b/options/locale/locale_sr-SP.ini @@ -296,8 +296,8 @@ issues.create_label=Креирај лабелу issues.label_templates.title=Преузмите унапред дефинисани скуп лабела issues.label_templates.helper=Изаберите скуп лабела issues.label_templates.fail_to_load_file=Није могуће преузети датотеку '%s': %v -issues.open_tab=%d отворено -issues.close_tab=%d затворено +issues.open_tab=%s отворено +issues.close_tab=%s затворено issues.filter_label=Лабела issues.filter_milestone=Фаза issues.filter_assignee=Одговорни diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index 90f21c21b2ff..2fd05c5a81d7 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -958,8 +958,8 @@ issues.remove_assignee_at=`tilldelning togs bort av %s %s` issues.remove_self_assignment=`tog bort sin tilldelning %s` issues.change_title_at='ändrade titeln från %s till %s %s' issues.delete_branch_at='tog bort grenen %s %s' -issues.open_tab=%d Öppna -issues.close_tab=%d Stängda +issues.open_tab=%s Öppna +issues.close_tab=%s Stängda issues.filter_label=Etikett issues.filter_label_exclude=`Använd alt + klicka/enter för att exkludera etiketter` issues.filter_label_no_select=Alla etiketter diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index 3ef3cf87bd4a..2a3d2df7dcb0 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -1128,8 +1128,8 @@ issues.remove_assignee_at=`ataması %[2]s %[1]s tarafından kaldırıldı issues.remove_self_assignment=`atamalarını kaldırdı %s` issues.change_title_at=`başlığı %s iken %s olarak %s değiştirdi` issues.delete_branch_at=`%s dalı silindi %s` -issues.open_tab=%d açık -issues.close_tab=%d kapanmış +issues.open_tab=%s açık +issues.close_tab=%s kapanmış issues.filter_label=Etiket issues.filter_label_exclude=`Etiketleri hariç tutmak için alt + tıkla/enter kullanın` issues.filter_label_no_select=Tüm etiketler diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 35a6962aed0c..661cac95e910 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -1119,8 +1119,8 @@ issues.remove_assignee_at=`був знятий з призначення %s%s на %s %s` issues.delete_branch_at=`видалена гілка %s %s` -issues.open_tab=%d відкрито -issues.close_tab=%d закрито +issues.open_tab=%s відкрито +issues.close_tab=%s закрито issues.filter_label=Мітка issues.filter_label_exclude=`Використовуйте Alt + клік/Enter для виключення міток` issues.filter_label_no_select=Всі мітки diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 55c08e22ea39..45f5f026ded4 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at=`将引用从 %s 更改为了 %s issues.remove_ref_at=`删除了引用 %s %s` issues.add_ref_at=`添加了引用 %s %s` issues.delete_branch_at=`于 %[2]s 删除了分支 %[1]s` -issues.open_tab=%d 个开启中 -issues.close_tab=%d 个已关闭 +issues.open_tab=%s 个开启中 +issues.close_tab=%s 个已关闭 issues.filter_label=标签筛选 issues.filter_label_exclude=`使用 alt + 鼠标左键 / 回车 排除标签` issues.filter_label_no_select=所有标签 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index b6ce1b28e123..26d1e9f39b68 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -358,8 +358,8 @@ issues.deleted_milestone=`(已刪除)` issues.self_assign_at=將 %s 指派給自己 issues.add_assignee_at=`被%s %s指派` issues.delete_branch_at=`刪除分支 %s %s` -issues.open_tab=%d 個開啓中 -issues.close_tab=%d 個已關閉 +issues.open_tab=%s 個開啓中 +issues.close_tab=%s 個已關閉 issues.filter_label=標籤篩選 issues.filter_milestone=里程碑篩選 issues.filter_assignee=指派人篩選 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 129d86958b09..586ae95be152 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at=`將參考從 %s 變更為 %s%s %s` issues.add_ref_at=`新增了參考 %s %s` issues.delete_branch_at=`刪除分支 %s %s` -issues.open_tab=%d 個開放中 -issues.close_tab=%d 個已關閉 +issues.open_tab=%s 個開放中 +issues.close_tab=%s 個已關閉 issues.filter_label=標籤 issues.filter_label_exclude=`使用 alt + click/enter 來排除標籤` issues.filter_label_no_select=所有標籤 diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl index 448d758e3ebf..a1aa4a3888c7 100644 --- a/templates/repo/issue/milestones.tmpl +++ b/templates/repo/issue/milestones.tmpl @@ -80,8 +80,8 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}} - {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}} + {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" (PrettyNumber .NumOpenIssues)}} + {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" (PrettyNumber .NumClosedIssues)}} {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} {{if .UpdatedUnix}}{{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}} diff --git a/templates/repo/issue/openclose.tmpl b/templates/repo/issue/openclose.tmpl index 050660522a5b..d39bb682716b 100644 --- a/templates/repo/issue/openclose.tmpl +++ b/templates/repo/issue/openclose.tmpl @@ -1,10 +1,10 @@ diff --git a/templates/repo/projects/list.tmpl b/templates/repo/projects/list.tmpl index f152d2091549..4244acd8abc0 100644 --- a/templates/repo/projects/list.tmpl +++ b/templates/repo/projects/list.tmpl @@ -47,8 +47,8 @@ {{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}} {{end}} - {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}} - {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}} + {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" (PrettyNumber .NumOpenIssues)}} + {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" (PrettyNumber .NumClosedIssues)}} {{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl index aca61f9ae906..75f20aef43d6 100644 --- a/templates/user/dashboard/issues.tmpl +++ b/templates/user/dashboard/issues.tmpl @@ -61,11 +61,11 @@ From ac90d3a5e60dfbd3bb156c1c515f4c3eea9edb7b Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 23 Nov 2021 09:21:28 +0100 Subject: [PATCH 02/12] Use client-side formatting --- options/locale/locale_bg-BG.ini | 4 ++-- options/locale/locale_cs-CZ.ini | 4 ++-- options/locale/locale_de-DE.ini | 4 ++-- options/locale/locale_el-GR.ini | 4 ++-- options/locale/locale_en-US.ini | 4 ++-- options/locale/locale_es-ES.ini | 4 ++-- options/locale/locale_fa-IR.ini | 4 ++-- options/locale/locale_fi-FI.ini | 4 ++-- options/locale/locale_fr-FR.ini | 4 ++-- options/locale/locale_hu-HU.ini | 4 ++-- options/locale/locale_id-ID.ini | 4 ++-- options/locale/locale_it-IT.ini | 4 ++-- options/locale/locale_ja-JP.ini | 4 ++-- options/locale/locale_ko-KR.ini | 4 ++-- options/locale/locale_lv-LV.ini | 4 ++-- options/locale/locale_nl-NL.ini | 4 ++-- options/locale/locale_pl-PL.ini | 4 ++-- options/locale/locale_pt-BR.ini | 4 ++-- options/locale/locale_pt-PT.ini | 4 ++-- options/locale/locale_sr-SP.ini | 4 ++-- options/locale/locale_sv-SE.ini | 4 ++-- options/locale/locale_tr-TR.ini | 4 ++-- options/locale/locale_uk-UA.ini | 4 ++-- options/locale/locale_zh-CN.ini | 4 ++-- options/locale/locale_zh-HK.ini | 4 ++-- options/locale/locale_zh-TW.ini | 4 ++-- templates/repo/issue/milestones.tmpl | 4 ++-- templates/repo/issue/openclose.tmpl | 4 ++-- templates/repo/projects/list.tmpl | 6 ++++-- templates/user/dashboard/issues.tmpl | 4 ++-- web_src/js/features/common-global.js | 9 +++++++++ web_src/js/index.js | 2 ++ 32 files changed, 73 insertions(+), 60 deletions(-) diff --git a/options/locale/locale_bg-BG.ini b/options/locale/locale_bg-BG.ini index 33e3d0ce0804..aee3cd1d2495 100644 --- a/options/locale/locale_bg-BG.ini +++ b/options/locale/locale_bg-BG.ini @@ -658,8 +658,8 @@ issues.label_templates.helper=Изберете набор етикети issues.label_templates.use=Използвай набор етикети issues.label_templates.fail_to_load_file=Неуспешно зареждане на шаблон с етикети '%s': %v issues.deleted_milestone=`(изтрито)` -issues.open_tab=%s отворени -issues.close_tab=%s затворени +issues.open_tab=%d отворени +issues.close_tab=%d затворени issues.filter_label=Етикет issues.filter_milestone=Етап issues.filter_assignee=Изпълнител diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index 73e17822b5db..bac76fb82ae9 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -1113,8 +1113,8 @@ issues.remove_assignee_at=`byl odstraněn z přiřazení %s %s` issues.remove_self_assignment=`odstranil/a jejich přiřazení %s` issues.change_title_at=`změnil/a název z %s na %s %s` issues.delete_branch_at=`odstranil/a větev %s %s` -issues.open_tab=%s otevřených -issues.close_tab=%s zavřených +issues.open_tab=%d otevřených +issues.close_tab=%d zavřených issues.filter_label=Štítek issues.filter_label_exclude=`Chcete-li vyloučit štítky, použijte alt + click/enter` issues.filter_label_no_select=Všechny štítky diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 9ca2442d1217..e5e7b4b6622e 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -1175,8 +1175,8 @@ issues.change_ref_at=`hat die Referenz von %s zu %s%s entfernt %s` issues.add_ref_at=`hat die Referenz %s hinzugefügt %s` issues.delete_branch_at=`löschte die Branch %s %s` -issues.open_tab=%s offen -issues.close_tab=%s geschlossen +issues.open_tab=%d offen +issues.close_tab=%d geschlossen issues.filter_label=Label issues.filter_label_exclude=„Alt + Klick/Enter verwenden, um Label auszuschließen” issues.filter_label_no_select=Alle Label diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index 68882169f32d..8ea5f649734d 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -1169,8 +1169,8 @@ issues.remove_assignee_at=`αφαιρέθηκε η ανάθεση από %s%s σε %s %s` issues.delete_branch_at=`διέγραψε το κλάδο %s %s` -issues.open_tab=%s Ανοιχτά -issues.close_tab=%s Κλειστά +issues.open_tab=%d Ανοιχτά +issues.close_tab=%d Κλειστά issues.filter_label=Σήμα issues.filter_label_exclude=`Χρησιμοποιήστε alt + κάντε κλικ/Enter για να εξαιρέσετε τις σημάνσεις` issues.filter_label_no_select=Όλα τα σήματα diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index cf0f6dcce681..ca6cd66625ed 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at = `changed reference from %s to issues.remove_ref_at = `removed reference %s %s` issues.add_ref_at = `added reference %s %s` issues.delete_branch_at = `deleted branch %s %s` -issues.open_tab = %s Open -issues.close_tab = %s Closed +issues.open_tab = %d Open +issues.close_tab = %d Closed issues.filter_label = Label issues.filter_label_exclude = `Use alt + click/enter to exclude labels` issues.filter_label_no_select = All labels diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index 1815724a4103..faa64d04a7f7 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -1166,8 +1166,8 @@ issues.remove_assignee_at=`fue desasignado por %s %s` issues.remove_self_assignment=`eliminado su asignación %s` issues.change_title_at=`cambió el título de %s a %s %s` issues.delete_branch_at=`rama eliminada %s %s` -issues.open_tab=%s abiertas -issues.close_tab=%s cerradas +issues.open_tab=%d abiertas +issues.close_tab=%d cerradas issues.filter_label=Etiqueta issues.filter_label_exclude=`Usa alt + clic/enter para excluir etiquetas` issues.filter_label_no_select=Todas las etiquetas diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index 0fed41045c8a..d659725ea5f2 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -908,8 +908,8 @@ issues.remove_assignee_at=`جدا شده توسط %s %s` issues.remove_self_assignment=`اینان جدا شدند: %s` issues.change_title_at=تغییر عنوان از %s به %s%s issues.delete_branch_at=`حذف شاخه %s %s` -issues.open_tab=%s باز -issues.close_tab=%s بسته +issues.open_tab=%d باز +issues.close_tab=%d بسته issues.filter_label=برچسب issues.filter_label_exclude=`ازalt + click/enter برای رد کردن برچسب‌ها استفاده کنید ` issues.filter_label_no_select=تمامی برچسب‎ها diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index 1840de883f15..7b7133253044 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -647,8 +647,8 @@ issues.add_milestone_at=`lisäsi tämän merkkipaaluun %s %s` issues.deleted_milestone=`(poistettu)` issues.self_assign_at=`itse otti tämän käsittelyyn %s` issues.delete_branch_at=`poisti haaran %s %s` -issues.open_tab=%s avoinna -issues.close_tab=%s suljettu +issues.open_tab=%d avoinna +issues.close_tab=%d suljettu issues.filter_label=Tunniste issues.filter_label_exclude=`Käytä alt + klikkaus/rivinvaihto poissulkeaksesi tunnisteita` issues.filter_label_no_select=Kaikki tunnisteet diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 613fe2b055cd..f8b25544d01b 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -1092,8 +1092,8 @@ issues.remove_assignee_at=`mis en non assigné par %s %s` issues.remove_self_assignment=`a retiré son assignation %s` issues.change_title_at=`a modifié le titre de %s à %s %s` issues.delete_branch_at=`a supprimé la branche %s %s` -issues.open_tab=%s Ouvert -issues.close_tab=%s Fermé +issues.open_tab=%d Ouvert +issues.close_tab=%d Fermé issues.filter_label=Étiquette issues.filter_label_exclude=`Utiliser alt + clic/entrée pour exclure les étiquettes` issues.filter_label_no_select=Toutes les étiquettes diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index d29bc5c375fe..0098a47aab5e 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -829,8 +829,8 @@ issues.add_assignee_at=`hozzárendelve %s által %s` issues.remove_assignee_at=`hozzárendelés törlése %s által %s` issues.remove_self_assignment=`eltávolította a hozzárendelést %s` issues.delete_branch_at=`letörölte a(z) %s ágat %s` -issues.open_tab=%s Nyitva -issues.close_tab=%s Lezárva +issues.open_tab=%d Nyitva +issues.close_tab=%d Lezárva issues.filter_label=Címke issues.filter_label_no_select=Minden címke issues.filter_milestone=Mérföldkő diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index be40e0db8a47..c978c3db1bcb 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -770,8 +770,8 @@ issues.deleted_milestone=`(dihapus)` issues.self_assign_at=`menugaskan diri %s` issues.add_assignee_at=`telah ditugaskan oleh %s %s` issues.delete_branch_at=`telah dihapus cabang %s %s` -issues.open_tab=%s Terbuka -issues.close_tab=%s Tertutup +issues.open_tab=%d Terbuka +issues.close_tab=%d Tertutup issues.filter_label=Label issues.filter_milestone=Tonggak issues.filter_assignee=Menerima diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index 5a6544daa2fc..b46735ba5684 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -1012,8 +1012,8 @@ issues.remove_assignee_at=`è stato rimosso da %s %s` issues.remove_self_assignment=`Rimosso il loro incarico %s` issues.change_title_at=`Titolo modificato da %s a %s %s` issues.delete_branch_at=`branch %s eliminato %s` -issues.open_tab=%s Aperti -issues.close_tab=%s Chiusi +issues.open_tab=%d Aperti +issues.close_tab=%d Chiusi issues.filter_label=Etichetta issues.filter_label_exclude=`Usa alt + click/enter per escludere le etichette` issues.filter_label_no_select=Tutte le etichette diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 622a8e9f2459..981b1a6d6cf3 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -1176,8 +1176,8 @@ issues.change_ref_at=`が参照を %s から %s issues.remove_ref_at=`が参照 %s を削除 %s` issues.add_ref_at=`が参照 %s を追加 %s` issues.delete_branch_at=`がブランチ %[1]s を削除 %[2]s` -issues.open_tab=%s件 オープン中 -issues.close_tab=%s件 クローズ済 +issues.open_tab=%d件 オープン中 +issues.close_tab=%d件 クローズ済 issues.filter_label=ラベル issues.filter_label_exclude=`ラベルで除外するには alt + click/enter` issues.filter_label_no_select=すべてのラベル diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index eb827cc1df6c..7880095ddb1a 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -734,8 +734,8 @@ issues.add_assignee_at=`다음으로부터 할당됨 %s %s` issues.remove_assignee_at=`다음으로부터 할당취소됨 %s %s` issues.remove_self_assignment=`%s 할당들이 삭제됨` issues.delete_branch_at=`삭제된 브랜치 %s %s` -issues.open_tab=%s 오픈 -issues.close_tab=%s 닫힘 +issues.open_tab=%d 오픈 +issues.close_tab=%d 닫힘 issues.filter_label=레이블 issues.filter_label_no_select=모든 레이블 issues.filter_milestone=마일스톤 diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index 9724e0c43b5f..3d0edfde11f8 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -1139,8 +1139,8 @@ issues.remove_assignee_at=`tika noņemta problēma no %s %s` issues.remove_self_assignment=`noņēma sev problēmu %s` issues.change_title_at=`nomainīts nosaukums no %s uz %s %s` issues.delete_branch_at=`izdzēsa atzaru %s %s` -issues.open_tab=%s atvērti -issues.close_tab=%s aizvērti +issues.open_tab=%d atvērti +issues.close_tab=%d aizvērti issues.filter_label=Etiķete issues.filter_label_exclude=`Izmantojiet alt + peles klikšķis vai enter, lai neiekļautu etiķeti` issues.filter_label_no_select=Visas etiķetes diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index a1aa7c00bd1e..5b4c0f961094 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -1002,8 +1002,8 @@ issues.remove_assignee_at=`is niet toegewezen door %s %s` issues.remove_self_assignment=`heeft %s zijn/haar toewijzing verwijderd` issues.change_title_at='titel aangepast van %s naar %s %s' issues.delete_branch_at=`heeft %[2]s de branch %[1]s verwijderd.` -issues.open_tab=%s Open -issues.close_tab=%s gesloten +issues.open_tab=%d Open +issues.close_tab=%d gesloten issues.filter_label=Label issues.filter_label_exclude=`Gebruik alt + klik/voer in om labels uit te sluiten issues.filter_label_no_select=Alle labels diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index 529503188778..e5e784ce0f6f 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -930,8 +930,8 @@ issues.remove_assignee_at=`usunięto przypisanie przez %s %s` issues.remove_self_assignment=`usuwa swoje przypisanie %s` issues.change_title_at=`zmieniono tytuł z %s na %s %s` issues.delete_branch_at=`usuwa gałąź %s %s` -issues.open_tab=Otwarte %s -issues.close_tab=Zamknięte %s +issues.open_tab=Otwarte %d +issues.close_tab=Zamknięte %d issues.filter_label=Etykieta issues.filter_label_exclude=`Użyj Alt + Kliknij/Enter, aby wykluczyć etykiety` issues.filter_label_no_select=Wszystkie etykiety diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 9805316c1064..5d472f5889b8 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -1102,8 +1102,8 @@ issues.remove_assignee_at=`teve sua atribuição removida por %s %s` issues.remove_self_assignment=`removeu sua atribuição %s` issues.change_title_at=`alterou o título de %s para %s %s` issues.delete_branch_at=`excluiu branch %s %s` -issues.open_tab=%s aberto -issues.close_tab=%s fechado +issues.open_tab=%d aberto +issues.close_tab=%d fechado issues.filter_label=Etiqueta issues.filter_label_exclude=`Use alt + clique/enter para excluir etiquetas` issues.filter_label_no_select=Todas as etiquetas diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 6a656e2e76cf..bc9bfce859e1 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -1176,8 +1176,8 @@ issues.change_ref_at=`mudou a referência de %s para issues.remove_ref_at=`removeu a referência %s %s` issues.add_ref_at=`adicionou a referência %s %s` issues.delete_branch_at=`eliminou o ramo %s %s` -issues.open_tab=%s abertas -issues.close_tab=%s fechadas +issues.open_tab=%d abertas +issues.close_tab=%d fechadas issues.filter_label=Rótulo issues.filter_label_exclude=`Use alt + clique/enter para excluir rótulos` issues.filter_label_no_select=Todos os rótulos diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini index 833f175c4423..b2fc4427ad93 100644 --- a/options/locale/locale_sr-SP.ini +++ b/options/locale/locale_sr-SP.ini @@ -296,8 +296,8 @@ issues.create_label=Креирај лабелу issues.label_templates.title=Преузмите унапред дефинисани скуп лабела issues.label_templates.helper=Изаберите скуп лабела issues.label_templates.fail_to_load_file=Није могуће преузети датотеку '%s': %v -issues.open_tab=%s отворено -issues.close_tab=%s затворено +issues.open_tab=%d отворено +issues.close_tab=%d затворено issues.filter_label=Лабела issues.filter_milestone=Фаза issues.filter_assignee=Одговорни diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index 2fd05c5a81d7..90f21c21b2ff 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -958,8 +958,8 @@ issues.remove_assignee_at=`tilldelning togs bort av %s %s` issues.remove_self_assignment=`tog bort sin tilldelning %s` issues.change_title_at='ändrade titeln från %s till %s %s' issues.delete_branch_at='tog bort grenen %s %s' -issues.open_tab=%s Öppna -issues.close_tab=%s Stängda +issues.open_tab=%d Öppna +issues.close_tab=%d Stängda issues.filter_label=Etikett issues.filter_label_exclude=`Använd alt + klicka/enter för att exkludera etiketter` issues.filter_label_no_select=Alla etiketter diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index 2a3d2df7dcb0..3ef3cf87bd4a 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -1128,8 +1128,8 @@ issues.remove_assignee_at=`ataması %[2]s %[1]s tarafından kaldırıldı issues.remove_self_assignment=`atamalarını kaldırdı %s` issues.change_title_at=`başlığı %s iken %s olarak %s değiştirdi` issues.delete_branch_at=`%s dalı silindi %s` -issues.open_tab=%s açık -issues.close_tab=%s kapanmış +issues.open_tab=%d açık +issues.close_tab=%d kapanmış issues.filter_label=Etiket issues.filter_label_exclude=`Etiketleri hariç tutmak için alt + tıkla/enter kullanın` issues.filter_label_no_select=Tüm etiketler diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 661cac95e910..35a6962aed0c 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -1119,8 +1119,8 @@ issues.remove_assignee_at=`був знятий з призначення %s%s на %s %s` issues.delete_branch_at=`видалена гілка %s %s` -issues.open_tab=%s відкрито -issues.close_tab=%s закрито +issues.open_tab=%d відкрито +issues.close_tab=%d закрито issues.filter_label=Мітка issues.filter_label_exclude=`Використовуйте Alt + клік/Enter для виключення міток` issues.filter_label_no_select=Всі мітки diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 45f5f026ded4..55c08e22ea39 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at=`将引用从 %s 更改为了 %s issues.remove_ref_at=`删除了引用 %s %s` issues.add_ref_at=`添加了引用 %s %s` issues.delete_branch_at=`于 %[2]s 删除了分支 %[1]s` -issues.open_tab=%s 个开启中 -issues.close_tab=%s 个已关闭 +issues.open_tab=%d 个开启中 +issues.close_tab=%d 个已关闭 issues.filter_label=标签筛选 issues.filter_label_exclude=`使用 alt + 鼠标左键 / 回车 排除标签` issues.filter_label_no_select=所有标签 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index 26d1e9f39b68..b6ce1b28e123 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -358,8 +358,8 @@ issues.deleted_milestone=`(已刪除)` issues.self_assign_at=將 %s 指派給自己 issues.add_assignee_at=`被%s %s指派` issues.delete_branch_at=`刪除分支 %s %s` -issues.open_tab=%s 個開啓中 -issues.close_tab=%s 個已關閉 +issues.open_tab=%d 個開啓中 +issues.close_tab=%d 個已關閉 issues.filter_label=標籤篩選 issues.filter_milestone=里程碑篩選 issues.filter_assignee=指派人篩選 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 586ae95be152..129d86958b09 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -1177,8 +1177,8 @@ issues.change_ref_at=`將參考從 %s 變更為 %s%s %s` issues.add_ref_at=`新增了參考 %s %s` issues.delete_branch_at=`刪除分支 %s %s` -issues.open_tab=%s 個開放中 -issues.close_tab=%s 個已關閉 +issues.open_tab=%d 個開放中 +issues.close_tab=%d 個已關閉 issues.filter_label=標籤 issues.filter_label_exclude=`使用 alt + click/enter 來排除標籤` issues.filter_label_no_select=所有標籤 diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl index a1aa4a3888c7..bc74821b36bd 100644 --- a/templates/repo/issue/milestones.tmpl +++ b/templates/repo/issue/milestones.tmpl @@ -80,8 +80,8 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" (PrettyNumber .NumOpenIssues)}} - {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" (PrettyNumber .NumClosedIssues)}} + {{svg "octicon-issue-opened"}}

{{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}

+ {{svg "octicon-issue-closed"}}

{{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}

{{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} {{if .UpdatedUnix}}{{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}}
diff --git a/templates/repo/issue/openclose.tmpl b/templates/repo/issue/openclose.tmpl index d39bb682716b..e1b1f4708ca4 100644 --- a/templates/repo/issue/openclose.tmpl +++ b/templates/repo/issue/openclose.tmpl @@ -1,10 +1,10 @@ diff --git a/templates/repo/projects/list.tmpl b/templates/repo/projects/list.tmpl index 4244acd8abc0..9546badda177 100644 --- a/templates/repo/projects/list.tmpl +++ b/templates/repo/projects/list.tmpl @@ -47,8 +47,10 @@ {{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}} {{end}} - {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" (PrettyNumber .NumOpenIssues)}} - {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" (PrettyNumber .NumClosedIssues)}} + {{svg "octicon-issue-opened"}} +

{{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}

+ {{svg "octicon-issue-closed"}} +

{{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}

{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl index 75f20aef43d6..95bc0f4402da 100644 --- a/templates/user/dashboard/issues.tmpl +++ b/templates/user/dashboard/issues.tmpl @@ -61,11 +61,11 @@ diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index 92c9fb81550f..6e8d60971847 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -318,3 +318,12 @@ export function initGlobalButtons() { }); }); } + +export function initNumberFormatting() { + const numberFormatter = new Intl.NumberFormat(); + + for (const el of document.querySelectorAll('.format-me')) { + el.textContent = el.textContent.replace(/\d+/, numberFormatter.format); + el.classList.remove('format-me'); + } +} \ No newline at end of file diff --git a/web_src/js/index.js b/web_src/js/index.js index c9bf197a3551..921eaa5ff514 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -47,6 +47,7 @@ import { initGlobalFormDirtyLeaveConfirm, initGlobalLinkActions, initHeadNavbarContentToggle, + initNumberFormatting, } from './features/common-global.js'; import {initRepoTopicBar} from './features/repo-home.js'; import {initAdminEmails} from './features/admin-emails.js'; @@ -85,6 +86,7 @@ $(document).ready(() => { initGlobalButtonClickOnEnter(); initGlobalButtons(); + initNumberFormatting(); initGlobalCopyToClipboardListener(); initGlobalDropzone(); initGlobalEnterQuickSubmit(); From 6507761549dd905dc452662128b7f60496f55c1e Mon Sep 17 00:00:00 2001 From: silverwind Date: Wed, 24 Nov 2021 22:44:32 +0100 Subject: [PATCH 03/12] prettify on both server and client --- options/locale/locale_en-US.ini | 2 -- templates/repo/issue/milestones.tmpl | 4 ++-- templates/repo/issue/openclose.tmpl | 6 +++--- templates/repo/projects/list.tmpl | 6 +++--- templates/user/dashboard/issues.tmpl | 4 ++-- web_src/js/features/common-global.js | 17 ++++++++++------- web_src/js/index.js | 4 ++-- web_src/js/utils.js | 7 +++++++ web_src/js/utils.test.js | 13 +++++++++++++ 9 files changed, 42 insertions(+), 21 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index ca6cd66625ed..d1838435f91d 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1505,8 +1505,6 @@ pulls.merge_instruction_step1_desc = From your project repository, check out a n pulls.merge_instruction_step2_desc = Merge the changes and update on Gitea. milestones.new = New Milestone -milestones.open_tab = %d Open -milestones.close_tab = %d Closed milestones.closed = Closed %s milestones.update_ago = Updated %s ago milestones.no_due_date = No due date diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl index bc74821b36bd..7421f55319d4 100644 --- a/templates/repo/issue/milestones.tmpl +++ b/templates/repo/issue/milestones.tmpl @@ -80,8 +80,8 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}}

{{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}

- {{svg "octicon-issue-closed"}}

{{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}

+ {{svg "octicon-issue-opened"}} {{PrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} + {{svg "octicon-issue-closed"}} {{PrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} {{if .UpdatedUnix}}{{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}}
diff --git a/templates/repo/issue/openclose.tmpl b/templates/repo/issue/openclose.tmpl index e1b1f4708ca4..f579687f0f27 100644 --- a/templates/repo/issue/openclose.tmpl +++ b/templates/repo/issue/openclose.tmpl @@ -1,10 +1,10 @@ diff --git a/templates/repo/projects/list.tmpl b/templates/repo/projects/list.tmpl index 9546badda177..fe3daf54b29c 100644 --- a/templates/repo/projects/list.tmpl +++ b/templates/repo/projects/list.tmpl @@ -15,7 +15,7 @@ {{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl index 95bc0f4402da..128a14ec431e 100644 --- a/templates/user/dashboard/issues.tmpl +++ b/templates/user/dashboard/issues.tmpl @@ -61,11 +61,11 @@ diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index 6e8d60971847..4fc8033289b7 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -1,4 +1,4 @@ -import {mqBinarySearch} from '../utils.js'; +import {mqBinarySearch, prettyNumber} from '../utils.js'; import createDropzone from './dropzone.js'; import {initCompColorPicker} from './comp/ColorPicker.js'; @@ -319,11 +319,14 @@ export function initGlobalButtons() { }); } -export function initNumberFormatting() { - const numberFormatter = new Intl.NumberFormat(); +export function initGlobalFormattingReplacement() { + const lang = document.documentElement.lang; - for (const el of document.querySelectorAll('.format-me')) { - el.textContent = el.textContent.replace(/\d+/, numberFormatter.format); - el.classList.remove('format-me'); + for (const el of document.querySelectorAll('.js-format-pretty-number')) { + const num = Number(el.getAttribute('data-original')); + const formatted = prettyNumber(num, lang); + if (formatted && formatted !== el.textContent) { + el.textContent = formatted; + } } -} \ No newline at end of file +} diff --git a/web_src/js/index.js b/web_src/js/index.js index 921eaa5ff514..b87290abe48f 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -44,10 +44,10 @@ import { initGlobalCommon, initGlobalDropzone, initGlobalEnterQuickSubmit, + initGlobalFormattingReplacement, initGlobalFormDirtyLeaveConfirm, initGlobalLinkActions, initHeadNavbarContentToggle, - initNumberFormatting, } from './features/common-global.js'; import {initRepoTopicBar} from './features/repo-home.js'; import {initAdminEmails} from './features/admin-emails.js'; @@ -86,7 +86,7 @@ $(document).ready(() => { initGlobalButtonClickOnEnter(); initGlobalButtons(); - initNumberFormatting(); + initGlobalFormattingReplacement(); initGlobalCopyToClipboardListener(); initGlobalDropzone(); initGlobalEnterQuickSubmit(); diff --git a/web_src/js/utils.js b/web_src/js/utils.js index 86a64b8b7547..a76329152ad0 100644 --- a/web_src/js/utils.js +++ b/web_src/js/utils.js @@ -58,3 +58,10 @@ export function parseIssueHref(href) { const [_, owner, repo, type, index] = /([^/]+)\/([^/]+)\/(issues|pulls)\/([0-9]+)/.exec(path) || []; return {owner, repo, type, index}; } + +// pretty-print a number using locale-specific separators, e.g. 1200 -> 1,200 +export function prettyNumber(num, locale = 'en-US') { + if (typeof num !== 'number') return ''; + const {format} = new Intl.NumberFormat(locale); + return format(num, locale); +} diff --git a/web_src/js/utils.test.js b/web_src/js/utils.test.js index 3f6f92107924..f22d633797e4 100644 --- a/web_src/js/utils.test.js +++ b/web_src/js/utils.test.js @@ -1,5 +1,6 @@ import { basename, extname, isObject, uniq, stripTags, joinPaths, parseIssueHref, + prettyNumber, } from './utils.js'; test('basename', () => { @@ -84,3 +85,15 @@ test('parseIssueHref', () => { expect(parseIssueHref('https://example.com/sub/sub2/owner/repo/issues/1#hash')).toEqual({owner: 'owner', repo: 'repo', type: 'issues', index: '1'}); expect(parseIssueHref('')).toEqual({owner: undefined, repo: undefined, type: undefined, index: undefined}); }); + +test('prettyNumber', () => { + expect(prettyNumber()).toEqual(''); + expect(prettyNumber(null)).toEqual(''); + expect(prettyNumber(undefined)).toEqual(''); + expect(prettyNumber('1200')).toEqual(''); + + expect(prettyNumber(12345678)).toEqual('12,345,678'); + expect(prettyNumber(12345678, 'de-DE')).toEqual('12.345.678'); + expect(prettyNumber(12345678, 'be-BE')).toEqual('12 345 678'); + expect(prettyNumber(12345678, 'hi-IN')).toEqual('1,23,45,678'); +}); From f6624c734bfd6890c12aacf26f171b891466713c Mon Sep 17 00:00:00 2001 From: silverwind Date: Wed, 24 Nov 2021 22:46:27 +0100 Subject: [PATCH 04/12] remove unused i18n entries --- options/locale/locale_en-US.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index d1838435f91d..afc846875ec1 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1177,8 +1177,6 @@ issues.change_ref_at = `changed reference from %s to issues.remove_ref_at = `removed reference %s %s` issues.add_ref_at = `added reference %s %s` issues.delete_branch_at = `deleted branch %s %s` -issues.open_tab = %d Open -issues.close_tab = %d Closed issues.filter_label = Label issues.filter_label_exclude = `Use alt + click/enter to exclude labels` issues.filter_label_no_select = All labels From be2f7e5081b52c18bd53a9f227660d544bf9f202 Mon Sep 17 00:00:00 2001 From: silverwind Date: Wed, 24 Nov 2021 23:29:20 +0100 Subject: [PATCH 05/12] handle more cases, support other int types in PrettyNumber --- modules/base/tool.go | 20 +++++++++++++++++--- modules/base/tool_test.go | 1 + templates/repo/issue/milestones.tmpl | 4 ++-- templates/repo/projects/list.tmpl | 4 ++-- templates/user/dashboard/milestones.tmpl | 8 ++++---- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/modules/base/tool.go b/modules/base/tool.go index 775fd709cfff..26c51195b368 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -143,9 +143,23 @@ func FileSize(s int64) string { } // PrettyNumber produces a string form of the given number in base 10 with -// commas after every three orders of magnitud -func PrettyNumber(v int64) string { - return humanize.Comma(v) +// commas after every three orders of magnitude +func PrettyNumber(i interface{}) string { + var value int64 + switch v := i.(type) { + case int: + value = int64(v) + case int8: + value = int64(v) + case int16: + value = int64(v) + case int32: + value = int64(v) + case int64: + value = v + } + + return humanize.Comma(value) } // Subtract deals with subtraction of all types of number. diff --git a/modules/base/tool_test.go b/modules/base/tool_test.go index 5280827e8ae3..6685168bacd8 100644 --- a/modules/base/tool_test.go +++ b/modules/base/tool_test.go @@ -117,6 +117,7 @@ func TestFileSize(t *testing.T) { func TestPrettyNumber(t *testing.T) { assert.Equal(t, "23,342,432", PrettyNumber(23342432)) + assert.Equal(t, "23,342,432", PrettyNumber(int32(23342432))) assert.Equal(t, "0", PrettyNumber(0)) assert.Equal(t, "-100,000", PrettyNumber(-100000)) } diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl index 7421f55319d4..1d2feca25e37 100644 --- a/templates/repo/issue/milestones.tmpl +++ b/templates/repo/issue/milestones.tmpl @@ -18,11 +18,11 @@ diff --git a/templates/repo/projects/list.tmpl b/templates/repo/projects/list.tmpl index fe3daf54b29c..9464df0d2a64 100644 --- a/templates/repo/projects/list.tmpl +++ b/templates/repo/projects/list.tmpl @@ -15,11 +15,11 @@ diff --git a/templates/user/dashboard/milestones.tmpl b/templates/user/dashboard/milestones.tmpl index 3e1ef95d9826..8636261d09bb 100644 --- a/templates/user/dashboard/milestones.tmpl +++ b/templates/user/dashboard/milestones.tmpl @@ -39,11 +39,11 @@ @@ -100,8 +100,8 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.milestones.open_tab" .NumOpenIssues}} - {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.milestones.close_tab" .NumClosedIssues}} + {{svg "octicon-issue-opened"}} {{PrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} + {{svg "octicon-issue-closed"}} {{PrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} From 734f77c1d88b40467361216aabc71f282c1b9e33 Mon Sep 17 00:00:00 2001 From: silverwind Date: Wed, 24 Nov 2021 23:31:23 +0100 Subject: [PATCH 06/12] specify locale to avoid issues with node default locale --- web_src/js/utils.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/web_src/js/utils.test.js b/web_src/js/utils.test.js index f22d633797e4..17afcf0bbd26 100644 --- a/web_src/js/utils.test.js +++ b/web_src/js/utils.test.js @@ -91,8 +91,7 @@ test('prettyNumber', () => { expect(prettyNumber(null)).toEqual(''); expect(prettyNumber(undefined)).toEqual(''); expect(prettyNumber('1200')).toEqual(''); - - expect(prettyNumber(12345678)).toEqual('12,345,678'); + expect(prettyNumber(12345678, 'en-US')).toEqual('12,345,678'); expect(prettyNumber(12345678, 'de-DE')).toEqual('12.345.678'); expect(prettyNumber(12345678, 'be-BE')).toEqual('12 345 678'); expect(prettyNumber(12345678, 'hi-IN')).toEqual('1,23,45,678'); From 472a12e9a8c7d879ac6a7c4bb2b97241384f3619 Mon Sep 17 00:00:00 2001 From: silverwind Date: Wed, 24 Nov 2021 23:41:46 +0100 Subject: [PATCH 07/12] remove superfluos argument --- web_src/js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_src/js/utils.js b/web_src/js/utils.js index a76329152ad0..e00bb26514ea 100644 --- a/web_src/js/utils.js +++ b/web_src/js/utils.js @@ -63,5 +63,5 @@ export function parseIssueHref(href) { export function prettyNumber(num, locale = 'en-US') { if (typeof num !== 'number') return ''; const {format} = new Intl.NumberFormat(locale); - return format(num, locale); + return format(num); } From c968fee55602197058a4cb560d7c7401dc4e1e59 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sat, 27 Nov 2021 00:09:51 +0100 Subject: [PATCH 08/12] introduce template helper, octicon tweaks, js refactor --- modules/templates/helper.go | 46 +++++++++++++++++------- templates/repo/issue/milestones.tmpl | 12 ++++--- templates/repo/issue/openclose.tmpl | 14 +++++--- templates/repo/projects/list.tmpl | 16 ++++----- templates/user/dashboard/issues.tmpl | 12 ++++--- templates/user/dashboard/milestones.tmpl | 18 ++++++---- web_src/js/features/common-global.js | 14 +------- web_src/js/features/formatting.js | 15 ++++++++ web_src/js/index.js | 7 ++-- 9 files changed, 98 insertions(+), 56 deletions(-) create mode 100644 web_src/js/features/formatting.js diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 4eb8f3470762..37d27d7133d7 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -18,6 +18,7 @@ import ( "regexp" "runtime" "strings" + "strconv" texttmpl "text/template" "time" "unicode" @@ -92,18 +93,19 @@ func NewFuncMap() []template.FuncMap { "CustomEmojis": func() map[string]string { return setting.UI.CustomEmojisMap }, - "Safe": Safe, - "SafeJS": SafeJS, - "JSEscape": JSEscape, - "Str2html": Str2html, - "TimeSince": timeutil.TimeSince, - "TimeSinceUnix": timeutil.TimeSinceUnix, - "RawTimeSince": timeutil.RawTimeSince, - "FileSize": base.FileSize, - "PrettyNumber": base.PrettyNumber, - "Subtract": base.Subtract, - "EntryIcon": base.EntryIcon, - "MigrationIcon": MigrationIcon, + "Safe": Safe, + "SafeJS": SafeJS, + "JSEscape": JSEscape, + "Str2html": Str2html, + "TimeSince": timeutil.TimeSince, + "TimeSinceUnix": timeutil.TimeSinceUnix, + "RawTimeSince": timeutil.RawTimeSince, + "FileSize": base.FileSize, + "PrettyNumber": base.PrettyNumber, + "JsPrettyNumber": JsPrettyNumber, + "Subtract": base.Subtract, + "EntryIcon": base.EntryIcon, + "MigrationIcon": MigrationIcon, "Add": func(a ...int) int { sum := 0 for _, val := range a { @@ -972,3 +974,23 @@ func mirrorRemoteAddress(m models.RemoteMirrorer) remoteAddress { return a } + +// JsPrettyNumber renders a number using english decimal separators, e.g. 1,200 +// subsequent Js will replace the number with locale-specific separators +func JsPrettyNumber(i interface{}) template.HTML { + var num int64 + switch v := i.(type) { + case int: + num = int64(v) + case int8: + num = int64(v) + case int16: + num = int64(v) + case int32: + num = int64(v) + case int64: + num = v + } + + return template.HTML(`` + base.PrettyNumber(num) + ``) +} diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl index 1d2feca25e37..28ddbbe9bbd5 100644 --- a/templates/repo/issue/milestones.tmpl +++ b/templates/repo/issue/milestones.tmpl @@ -18,11 +18,11 @@ @@ -80,8 +80,10 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}} {{PrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} - {{svg "octicon-issue-closed"}} {{PrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} + {{svg "octicon-issue-opened" 16 "mr-3"}} + {{JsPrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} + {{svg "octicon-check" 16 "mr-3"}} + {{JsPrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} {{if .UpdatedUnix}}{{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}} diff --git a/templates/repo/issue/openclose.tmpl b/templates/repo/issue/openclose.tmpl index f579687f0f27..ae99f091b14e 100644 --- a/templates/repo/issue/openclose.tmpl +++ b/templates/repo/issue/openclose.tmpl @@ -1,10 +1,14 @@ diff --git a/templates/repo/projects/list.tmpl b/templates/repo/projects/list.tmpl index 9464df0d2a64..1feee98ab99e 100644 --- a/templates/repo/projects/list.tmpl +++ b/templates/repo/projects/list.tmpl @@ -14,12 +14,12 @@ {{template "base/alert" .}} @@ -47,10 +47,10 @@ {{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}} {{end}} - {{svg "octicon-issue-opened"}} - {{PrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} - {{svg "octicon-issue-closed"}} - {{PrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} + {{svg "octicon-issue-opened" 16 "mr-3"}} + {{JsPrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} + {{svg "octicon-check" 16 "mr-3"}} + {{JsPrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} {{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl index 128a14ec431e..958486168842 100644 --- a/templates/user/dashboard/issues.tmpl +++ b/templates/user/dashboard/issues.tmpl @@ -60,12 +60,16 @@ diff --git a/templates/user/dashboard/milestones.tmpl b/templates/user/dashboard/milestones.tmpl index 8636261d09bb..5e0d237a62d7 100644 --- a/templates/user/dashboard/milestones.tmpl +++ b/templates/user/dashboard/milestones.tmpl @@ -38,12 +38,12 @@ @@ -100,9 +100,13 @@ {{end}} {{end}} - {{svg "octicon-issue-opened"}} {{PrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} - {{svg "octicon-issue-closed"}} {{PrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} - {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} + {{svg "octicon-issue-opened" 16 "mr-3"}} + {{JsPrettyNumber .NumOpenIssues}} {{$.i18n.Tr "repo.issues.open_title"}} + {{svg "octicon-check" 16 "mr-3"}} + {{JsPrettyNumber .NumClosedIssues}} {{$.i18n.Tr "repo.issues.closed_title"}} + {{if .TotalTrackedTime}} + {{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}} + {{end}} {{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index 4fc8033289b7..92c9fb81550f 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -1,4 +1,4 @@ -import {mqBinarySearch, prettyNumber} from '../utils.js'; +import {mqBinarySearch} from '../utils.js'; import createDropzone from './dropzone.js'; import {initCompColorPicker} from './comp/ColorPicker.js'; @@ -318,15 +318,3 @@ export function initGlobalButtons() { }); }); } - -export function initGlobalFormattingReplacement() { - const lang = document.documentElement.lang; - - for (const el of document.querySelectorAll('.js-format-pretty-number')) { - const num = Number(el.getAttribute('data-original')); - const formatted = prettyNumber(num, lang); - if (formatted && formatted !== el.textContent) { - el.textContent = formatted; - } - } -} diff --git a/web_src/js/features/formatting.js b/web_src/js/features/formatting.js new file mode 100644 index 000000000000..b846705e11aa --- /dev/null +++ b/web_src/js/features/formatting.js @@ -0,0 +1,15 @@ +import {prettyNumber} from '../utils.js'; + +const {lang} = document.documentElement; + +export function initFormattingReplacements() { + // replace english formatted numbers with locale-specific separators + for (const el of document.getElementsByClassName('js-pretty-number')) { + const num = Number(el.getAttribute('data-value')); + console.log(num); + const formatted = prettyNumber(num, lang); + if (formatted && formatted !== el.textContent) { + el.textContent = formatted; + } + } +} diff --git a/web_src/js/index.js b/web_src/js/index.js index b87290abe48f..bab420424d58 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -44,7 +44,6 @@ import { initGlobalCommon, initGlobalDropzone, initGlobalEnterQuickSubmit, - initGlobalFormattingReplacement, initGlobalFormDirtyLeaveConfirm, initGlobalLinkActions, initHeadNavbarContentToggle, @@ -75,6 +74,11 @@ import {initRepoBranchButton} from './features/repo-branch.js'; import {initCommonOrganization} from './features/common-organization.js'; import {initRepoWikiForm} from './features/repo-wiki.js'; import {initRepoCommentForm, initRepository} from './features/repo-legacy.js'; +import {initFormattingReplacements} from './features/formatting.js'; + +// Run time-critical code as soon as possible. This is safe to do because this +// script appears at the end of and rendered HTML is accessible at that point. +initFormattingReplacements(); // Silence fomantic's error logging when tabs are used without a target content element $.fn.tab.settings.silent = true; @@ -86,7 +90,6 @@ $(document).ready(() => { initGlobalButtonClickOnEnter(); initGlobalButtons(); - initGlobalFormattingReplacement(); initGlobalCopyToClipboardListener(); initGlobalDropzone(); initGlobalEnterQuickSubmit(); From faaad8b7c9abae8e69072da6a768d7a300428a7e Mon Sep 17 00:00:00 2001 From: silverwind Date: Fri, 26 Nov 2021 15:31:56 -0800 Subject: [PATCH 09/12] Update modules/templates/helper.go --- modules/templates/helper.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 37d27d7133d7..ee61fab58dc4 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -975,8 +975,8 @@ func mirrorRemoteAddress(m models.RemoteMirrorer) remoteAddress { return a } -// JsPrettyNumber renders a number using english decimal separators, e.g. 1,200 -// subsequent Js will replace the number with locale-specific separators +// JsPrettyNumber renders a number using english decimal separators, e.g. 1,200 and subsequent +// JS will replace the number with locale-specific separators, based on the user's selected language func JsPrettyNumber(i interface{}) template.HTML { var num int64 switch v := i.(type) { From c071eff7939abaeefcd330e923286f71cc029af1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 26 Feb 2022 00:00:14 +0100 Subject: [PATCH 10/12] Apply some suggestions. --- modules/base/tool.go | 17 ++--------------- modules/templates/helper.go | 16 ++-------------- modules/util/util.go | 17 +++++++++++++++++ web_src/js/features/formatting.js | 1 - 4 files changed, 21 insertions(+), 30 deletions(-) diff --git a/modules/base/tool.go b/modules/base/tool.go index 1850832bf056..6f64bd74766c 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -24,6 +24,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" "github.com/dustin/go-humanize" ) @@ -145,21 +146,7 @@ func FileSize(s int64) string { // PrettyNumber produces a string form of the given number in base 10 with // commas after every three orders of magnitude func PrettyNumber(i interface{}) string { - var value int64 - switch v := i.(type) { - case int: - value = int64(v) - case int8: - value = int64(v) - case int16: - value = int64(v) - case int32: - value = int64(v) - case int64: - value = v - } - - return humanize.Comma(value) + return humanize.Comma(util.NumberIntoInt64(i)) } // Subtract deals with subtraction of all types of number. diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 7c0c046cf056..4f711cac2131 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -18,8 +18,8 @@ import ( "reflect" "regexp" "runtime" - "strings" "strconv" + "strings" texttmpl "text/template" "time" "unicode" @@ -923,19 +923,7 @@ func mirrorRemoteAddress(ctx context.Context, m repo_model.RemoteMirrorer) remot // JsPrettyNumber renders a number using english decimal separators, e.g. 1,200 and subsequent // JS will replace the number with locale-specific separators, based on the user's selected language func JsPrettyNumber(i interface{}) template.HTML { - var num int64 - switch v := i.(type) { - case int: - num = int64(v) - case int8: - num = int64(v) - case int16: - num = int64(v) - case int32: - num = int64(v) - case int64: - num = v - } + num := util.NumberIntoInt64(i) return template.HTML(`` + base.PrettyNumber(num) + ``) } diff --git a/modules/util/util.go b/modules/util/util.go index af6581f7cdbe..246bbbae1fe9 100644 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -181,3 +181,20 @@ func ToUpperASCII(s string) string { } return string(b) } + +func NumberIntoInt64(number interface{}) int64 { + var value int64 + switch v := number.(type) { + case int: + value = int64(v) + case int8: + value = int64(v) + case int16: + value = int64(v) + case int32: + value = int64(v) + case int64: + value = v + } + return value +} diff --git a/web_src/js/features/formatting.js b/web_src/js/features/formatting.js index b846705e11aa..a7ee7ec3cf36 100644 --- a/web_src/js/features/formatting.js +++ b/web_src/js/features/formatting.js @@ -6,7 +6,6 @@ export function initFormattingReplacements() { // replace english formatted numbers with locale-specific separators for (const el of document.getElementsByClassName('js-pretty-number')) { const num = Number(el.getAttribute('data-value')); - console.log(num); const formatted = prettyNumber(num, lang); if (formatted && formatted !== el.textContent) { el.textContent = formatted; From aef87e0ef8bf68a53edf8bcb3f05c4a34530bbb8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 26 Feb 2022 00:04:34 +0100 Subject: [PATCH 11/12] Add comment --- modules/util/util.go | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/util/util.go b/modules/util/util.go index 246bbbae1fe9..7a2893de3e04 100644 --- a/modules/util/util.go +++ b/modules/util/util.go @@ -182,6 +182,7 @@ func ToUpperASCII(s string) string { return string(b) } +// NumberIntoInt64 transform a given int into int64. func NumberIntoInt64(number interface{}) int64 { var value int64 switch v := number.(type) { From 8a18fd71c2e422f65f046c3f27d138c59f862a71 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 26 Feb 2022 08:22:58 +0000 Subject: [PATCH 12/12] Update templates/user/dashboard/issues.tmpl Co-authored-by: silverwind --- templates/user/dashboard/issues.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl index 497edac48bd9..d50bbdeec3f9 100644 --- a/templates/user/dashboard/issues.tmpl +++ b/templates/user/dashboard/issues.tmpl @@ -61,7 +61,7 @@