From 708f4bc3b6bb40dd2b18ff7c009e2f9cfe7c4780 Mon Sep 17 00:00:00 2001
From: 0ko <0ko@noreply.codeberg.org>
Date: Tue, 19 Mar 2024 14:37:03 +0500
Subject: [PATCH] Fix heatmap localization

Fixes #2552
---
 options/locale/locale_ar.ini              |  2 +-
 options/locale/locale_bg.ini              |  4 ++--
 options/locale/locale_cs-CZ.ini           |  2 +-
 options/locale/locale_de-DE.ini           |  2 +-
 options/locale/locale_el-GR.ini           |  2 +-
 options/locale/locale_en-US.ini           |  5 ++++-
 options/locale/locale_eo.ini              |  2 +-
 options/locale/locale_es-ES.ini           |  2 +-
 options/locale/locale_fr-FR.ini           |  4 ++--
 options/locale/locale_gl.ini              |  4 ++--
 options/locale/locale_it-IT.ini           |  2 +-
 options/locale/locale_ja-JP.ini           |  2 +-
 options/locale/locale_lv-LV.ini           |  2 +-
 options/locale/locale_nl-NL.ini           |  2 +-
 options/locale/locale_pt-BR.ini           |  4 ++--
 options/locale/locale_pt-PT.ini           |  2 +-
 options/locale/locale_ru-RU.ini           |  5 ++++-
 options/locale/locale_sk-SK.ini           |  2 +-
 options/locale/locale_sl.ini              |  4 ++--
 options/locale/locale_tr-TR.ini           |  2 +-
 options/locale/locale_zh-CN.ini           |  2 +-
 options/locale/locale_zh-TW.ini           |  2 +-
 templates/user/heatmap.tmpl               |  5 ++++-
 web_src/js/components/ActivityHeatmap.vue | 18 ++++++++++++++++--
 web_src/js/features/heatmap.js            |  7 ++++---
 25 files changed, 57 insertions(+), 33 deletions(-)

diff --git a/options/locale/locale_ar.ini b/options/locale/locale_ar.ini
index c60ed5c42c..ced4e49263 100644
--- a/options/locale/locale_ar.ini
+++ b/options/locale/locale_ar.ini
@@ -1535,7 +1535,7 @@ filter.container.tagged = موسوم
 [heatmap]
 less = أقل
 number_of_contributions_in_the_last_12_months = %s مساهم في آخر 12 شهر
-no_contributions = بلا مساهمات
+contributions_zero = بلا مساهمات
 more = أكثر
 
 [admin]
diff --git a/options/locale/locale_bg.ini b/options/locale/locale_bg.ini
index 3eca60f551..23d9737b6b 100644
--- a/options/locale/locale_bg.ini
+++ b/options/locale/locale_bg.ini
@@ -1357,7 +1357,7 @@ runners.description = Описание
 [heatmap]
 less = По-малко
 number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца
-no_contributions = Няма приноси
+contributions_zero = Няма приноси
 more = Повече
 
 [git.filemode]
@@ -1382,4 +1382,4 @@ recent_commits.what = скорошни подавания
 component_loading = Зареждане на %s...
 
 [projects]
-type-1.display_name = Индивидуален проект
\ No newline at end of file
+type-1.display_name = Индивидуален проект
diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini
index 9c61881754..d5a78af95a 100644
--- a/options/locale/locale_cs-CZ.ini
+++ b/options/locale/locale_cs-CZ.ini
@@ -166,7 +166,7 @@ footer.links=Odkazy
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s příspěvků za posledních 12 měsíců
-no_contributions=Žádné příspěvky
+contributions_zero=Žádné příspěvky
 less=Méně
 more=Více
 
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 3056e7f2ff..71e16f0398 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -164,7 +164,7 @@ footer.links=Links
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s Beiträge in den letzten 12 Monaten
-no_contributions=Keine Beiträge
+contributions_zero=Keine Beiträge
 less=Weniger
 more=Mehr
 
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index eaa0a5d77d..473c978b68 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -159,7 +159,7 @@ footer.links=Συνδέσεις
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s συνεισφορές τους τελευταίους 12 μήνες
-no_contributions=Χωρίς συνεισφορές
+contributions_zero=Χωρίς συνεισφορές
 less=Λιγότερα
 more=Περισσότερα
 
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index a7f4de48a8..10dc4a0806 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -164,7 +164,10 @@ footer.links = Links
 
 [heatmap]
 number_of_contributions_in_the_last_12_months = %s contributions in the last 12 months
-no_contributions = No contributions
+contributions_zero = No contributions
+contributions_format = {contributions} on {month} {day}, {year}
+contributions_one = contribution
+contributions_few = contributions
 less = Less
 more = More
 
diff --git a/options/locale/locale_eo.ini b/options/locale/locale_eo.ini
index 7f56810d6f..53f7264cad 100644
--- a/options/locale/locale_eo.ini
+++ b/options/locale/locale_eo.ini
@@ -174,7 +174,7 @@ server_internal = Eraris interno de servilo
 [heatmap]
 less = Malpli
 number_of_contributions_in_the_last_12_months = %s kontribuoj dum la pasintaj 12 monatoj
-no_contributions = Neniu kontribuo
+contributions_zero = Neniu kontribuo
 more = Pli
 
 [startpage]
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index 57ab69b255..94d23ea2fe 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -150,7 +150,7 @@ footer.links=Enlaces
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s contribuciones en los últimos 12 meses
-no_contributions=No hay contribuciones
+contributions_zero=No hay contribuciones
 less=Menos
 more=Más
 
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 3875ea8385..cb9307fc2f 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -165,7 +165,7 @@ footer.links=Liens
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s contributions au cours des 12 derniers mois
-no_contributions=Aucune contribution
+contributions_zero=Aucune contribution
 less=Moins
 more=Plus
 
@@ -3733,4 +3733,4 @@ component_loading_info = Cela peut prendre du temps…
 component_failed_to_load = Une erreur inattendue s'est produite.
 contributors.what = contributions
 component_loading = Chargement %s...
-component_loading_failed = Échec de chargement de %s
\ No newline at end of file
+component_loading_failed = Échec de chargement de %s
diff --git a/options/locale/locale_gl.ini b/options/locale/locale_gl.ini
index 3ccdfc2bbc..7c77357e3b 100644
--- a/options/locale/locale_gl.ini
+++ b/options/locale/locale_gl.ini
@@ -131,7 +131,7 @@ footer.software = Sobre o Software
 footer.links = Ligazóns
 
 [heatmap]
-no_contributions = Sen Achegas
+contributions_zero = Sen Achegas
 less = Menos
 more = Máis
 number_of_contributions_in_the_last_12_months = %s de contribucións nos últimos 12 meses
@@ -140,4 +140,4 @@ number_of_contributions_in_the_last_12_months = %s de contribucións nos último
 buttons.heading.tooltip = Engadir Título
 buttons.italic.tooltip = Engade texto en cursiva
 buttons.quote.tooltip = Texto de cita
-buttons.bold.tooltip = Engadir texto en negriña
\ No newline at end of file
+buttons.bold.tooltip = Engadir texto en negriña
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index 9a3979808a..80b328b845 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -152,7 +152,7 @@ footer.software = A proposito del Software
 
 [heatmap]
 more = Più
-no_contributions = Nessun contributo
+contributions_zero = Nessun contributo
 less = Meno
 number_of_contributions_in_the_last_12_months = %s contributi negli ultimi 12 mesi
 
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index 8922eaaecc..712437df3e 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -163,7 +163,7 @@ footer.links=リンク
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=過去 12 か月間で %s 件の実績
-no_contributions=実績なし
+contributions_zero=実績なし
 less=少
 more=多
 
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 718f3dc9a4..e6c3b39b15 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -150,7 +150,7 @@ footer.links=Saites
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s darbības pēdējo 12 mēnešu laikā
-no_contributions=Nav aktivitātes
+contributions_zero=Nav aktivitātes
 less=Mazāk
 more=Vairāk
 
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index fe30475936..88267c4880 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -164,7 +164,7 @@ footer.links = Verwijzingen
 
 [heatmap]
 number_of_contributions_in_the_last_12_months = %s contributies in de laatste 12 maanden
-no_contributions = Geen contributies
+contributions_zero = Geen contributies
 less = Minder
 more = Meer
 
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index e6fc0df5ef..3503e68f35 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -151,7 +151,7 @@ footer.links=Links
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s contribuições nos últimos 12 meses
-no_contributions=Sem contribuições
+contributions_zero=Sem contribuições
 less=Menos
 more=Mais
 
@@ -3579,4 +3579,4 @@ executable_file = Arquivo executável
 component_loading = Carregando %s...
 component_loading_failed = Não foi possível carregar o(a) %s
 component_loading_info = Pode demorar um pouco…
-contributors.what = contribuições
\ No newline at end of file
+contributors.what = contribuições
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 649ddfd819..ea1ded0deb 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -151,7 +151,7 @@ footer.links=Ligações
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s contribuições nos últimos 12 meses
-no_contributions=Nenhuma contribuição
+contributions_zero=Nenhuma contribuição
 less=Menos
 more=Mais
 
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 0f495a2d19..274a3a1e88 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -164,7 +164,10 @@ footer.links=Ссылки
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=Принимал(а) участие %s раз за последние 12 месяцев
-no_contributions=Не принимал(а) участия
+contributions_zero=Действий не было
+contributions_format = {contributions} {day} {month} {year}
+contributions_one=действие
+contributions_few=действий
 less=Меньше
 more=Больше
 
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 758b01573d..9b7b534a14 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -149,7 +149,7 @@ footer.links=Odkazy
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=%s príspevkov za posledných 12 mesiacov
-no_contributions=Žiadne príspevky
+contributions_zero=Žiadne príspevky
 less=Menej
 more=Viac
 
diff --git a/options/locale/locale_sl.ini b/options/locale/locale_sl.ini
index 5ad4023eb9..8eda3007b0 100644
--- a/options/locale/locale_sl.ini
+++ b/options/locale/locale_sl.ini
@@ -377,7 +377,7 @@ gpg_key_verified_long = Ključ je bil preverjen z žetonom in ga je mogoče upor
 [heatmap]
 less = Manj
 number_of_contributions_in_the_last_12_months = %s prispevkov v zadnjih 12 mesecih
-no_contributions = Ni prispevkov
+contributions_zero = Ni prispevkov
 more = Več
 
 [filter]
@@ -691,4 +691,4 @@ code = Koda
 owner.settings.chef.keypair.description = Za preverjanje pristnosti v registru Chef je potreben par ključev. Če ste par ključev ustvarili že prej, se pri ustvarjanju novega para ključev stari par ključev zavrže.
 
 [actions]
-runners.runner_manage_panel = Upravljanje tekačev
\ No newline at end of file
+runners.runner_manage_panel = Upravljanje tekačev
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 0702262f9c..c1639f1bb5 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -150,7 +150,7 @@ footer.links=Bağlantılar
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=son 12 ayda %s katkı
-no_contributions=Katkı yapılmamış
+contributions_zero=Katkı yapılmamış
 less=Daha az
 more=Daha Fazla
 
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 69bc91b6dd..7eb6639d89 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -164,7 +164,7 @@ footer.links=链接
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=一年内 %s 次贡献
-no_contributions=目前还没有贡献。
+contributions_zero=目前还没有贡献。
 less=更少的
 more=更多的
 
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index e49be30691..f75b2d9079 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -134,7 +134,7 @@ footer.links=連結
 
 [heatmap]
 number_of_contributions_in_the_last_12_months=過去十二個月內有 %s 個貢獻
-no_contributions=沒有貢獻
+contributions_zero=沒有貢獻
 less=少
 more=多
 
diff --git a/templates/user/heatmap.tmpl b/templates/user/heatmap.tmpl
index b604b929a3..05403e34e3 100644
--- a/templates/user/heatmap.tmpl
+++ b/templates/user/heatmap.tmpl
@@ -2,7 +2,10 @@
 	<div id="user-heatmap" class="is-loading"
 		data-heatmap-data="{{JsonUtils.EncodeToString .HeatmapData}}"
 		data-locale-total-contributions="{{ctx.Locale.Tr "heatmap.number_of_contributions_in_the_last_12_months" (ctx.Locale.PrettyNumber .HeatmapTotalContributions)}}"
-		data-locale-no-contributions="{{ctx.Locale.Tr "heatmap.no_contributions"}}"
+		data-locale-contributions-zero="{{ctx.Locale.Tr "heatmap.contributions_zero"}}"
+		data-locale-contributions-format="{{ctx.Locale.Tr "heatmap.contributions_format"}}"
+		data-locale-contributions-one="{{ctx.Locale.Tr "heatmap.contributions_one"}}"
+		data-locale-contributions-few="{{ctx.Locale.Tr "heatmap.contributions_few"}}"
 		data-locale-more="{{ctx.Locale.Tr "heatmap.more"}}"
 		data-locale-less="{{ctx.Locale.Tr "heatmap.less"}}"
 	></div>
diff --git a/web_src/js/components/ActivityHeatmap.vue b/web_src/js/components/ActivityHeatmap.vue
index 96a6e68012..cc03f1bb2a 100644
--- a/web_src/js/components/ActivityHeatmap.vue
+++ b/web_src/js/components/ActivityHeatmap.vue
@@ -59,8 +59,22 @@ export default {
   </div>
   <calendar-heatmap
     :locale="locale"
-    :no-data-text="locale.no_contributions"
-    :tooltip-unit="locale.contributions"
+    :no-data-text="locale.contributions_zero"
+    :tooltip-formatter="
+      (v) =>
+        locale.contributions_format
+          .replace(
+            '{contributions}',
+            `<b>${v.count} ${
+              v.count === 1
+                ? locale.contributions_one
+                : locale.contributions_few
+            }</b>`
+          )
+          .replace('{month}', locale.months[v.date.getMonth()])
+          .replace('{day}', v.date.getDate())
+          .replace('{year}', v.date.getFullYear())
+    "
     :end-date="endDate"
     :values="values"
     :range-color="colorRange"
diff --git a/web_src/js/features/heatmap.js b/web_src/js/features/heatmap.js
index b6f06d0cfb..688f06c2b2 100644
--- a/web_src/js/features/heatmap.js
+++ b/web_src/js/features/heatmap.js
@@ -18,13 +18,14 @@ export function initHeatmap() {
       return {date: new Date(v), count: heatmap[v]};
     });
 
-    // last heatmap tooltip localization attempt https://github.com/go-gitea/gitea/pull/24131/commits/a83761cbbae3c2e3b4bced71e680f44432073ac8
     const locale = {
       months: new Array(12).fill().map((_, idx) => translateMonth(idx)),
       days: new Array(7).fill().map((_, idx) => translateDay(idx)),
-      contributions: 'contributions',
       contributions_in_the_last_12_months: el.getAttribute('data-locale-total-contributions'),
-      no_contributions: el.getAttribute('data-locale-no-contributions'),
+      contributions_zero: el.getAttribute('data-locale-contributions-zero'),
+      contributions_format: el.getAttribute('data-locale-contributions-format'),
+      contributions_one: el.getAttribute('data-locale-contributions-one'),
+      contributions_few: el.getAttribute('data-locale-contributions-few'),
       more: el.getAttribute('data-locale-more'),
       less: el.getAttribute('data-locale-less'),
     };