Ver código fonte

Translate region labels and day offset suffix in world clock

- Add clock/region-* keys for all IANA timezone region prefixes
  (Asia, America, Americas, Europe, Africa, Australia, Pacific, UTC,
  Indian, Atlantic, Arctic) across all 6 locales
- Add clock/day-suffix key (d / 天 / 日 / 日 / 日 / 일) for the
  +1d / -1d offset shown on world clock cards
- initLocalClock: derive region label from tz.split('/')[0] via getStr
  so "GMT+9 · Asia" renders as e.g. "GMT+9 · アジア" in Japanese
- wcRefresh: use translated day suffix instead of hard-coded "d"
- tzRenderList: translate region group headers in the tz picker sheet

https://claude.ai/code/session_019JJo6yrD9D6Cp4trTr8SHa
Claude 2 semanas atrás
pai
commit
a5b26cf7f1
2 arquivos alterados com 84 adições e 9 exclusões
  1. 6 3
      src/web/Clock/index.html
  2. 78 6
      src/web/Clock/locale/clock.json

+ 6 - 3
src/web/Clock/index.html

@@ -692,7 +692,9 @@ function initLocalClock(){
         var offFmt = new Intl.DateTimeFormat('en', { timeZone: tz, timeZoneName: 'shortOffset' });
         var offset = '';
         offFmt.formatToParts(new Date()).forEach(function(x){ if (x.type==='timeZoneName') offset = x.value; });
-        document.getElementById('lc-tz').textContent = offset + '  ·  ' + tz.split('/')[0];
+        var tzRegion = tz.split('/')[0];
+        var tzRegionLabel = getStr('clock/region-' + tzRegion.toLowerCase(), tzRegion);
+        document.getElementById('lc-tz').textContent = offset + '  ·  ' + tzRegionLabel;
     } catch(e){}
     updateLocalClock();
 }
@@ -830,7 +832,8 @@ function wcRefresh(){
             var tzMidnight = new Date(now.toLocaleString('en-US', { timeZone: c.tz }));
             tzMidnight.setHours(0,0,0,0);
             var dd = Math.round((tzMidnight - localMidnight) / 86400000);
-            var dayLabel = dd > 0 ? ' · +'+dd+'d' : (dd < 0 ? ' · '+dd+'d' : '');
+            var dSuffix = getStr('clock/day-suffix', 'd');
+            var dayLabel = dd > 0 ? ' · +'+dd+dSuffix : (dd < 0 ? ' · '+dd+dSuffix : '');
 
             var hmEl   = document.getElementById('wc-hm-'+i);
             var secEl  = document.getElementById('wc-sec-'+i);
@@ -899,7 +902,7 @@ function tzRenderList(){
     var html = '';
     ORDER.forEach(function(r){
         if (!groups[r] || !groups[r].length) return;
-        html += '<div class="tz-region-lbl">'+r+'</div>';
+        html += '<div class="tz-region-lbl">'+getStr('clock/region-'+r.toLowerCase().replace(/ /g,'-'), r)+'</div>';
         groups[r].forEach(function(c){
             html += '<div class="tz-item" data-city="'+htmlEsc(c[0])+'" data-tz="'+htmlEsc(c[1])+'">' +
                 '<span class="tz-item-name">'+htmlEsc(c[0])+'</span>' +

+ 78 - 6
src/web/Clock/locale/clock.json

@@ -27,7 +27,19 @@
                 "clock/wintitle-countdown-paused": "Countdown (Paused)",
                 "clock/wintitle-times-up": "⏰ Time's up!",
                 "clock/wintitle-stopwatch-paused": "Stopwatch (Paused)",
-                "clock/btn-remove": "Remove"
+                "clock/btn-remove": "Remove",
+                "clock/day-suffix": "d",
+                "clock/region-asia": "Asia",
+                "clock/region-america": "America",
+                "clock/region-americas": "Americas",
+                "clock/region-europe": "Europe",
+                "clock/region-africa": "Africa",
+                "clock/region-australia": "Australia",
+                "clock/region-pacific": "Pacific",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "Indian Ocean",
+                "clock/region-atlantic": "Atlantic",
+                "clock/region-arctic": "Arctic"
             },
             "titles": {
                 "Start": "Start",
@@ -67,7 +79,19 @@
                 "clock/wintitle-countdown-paused": "倒计时(已暂停)",
                 "clock/wintitle-times-up": "⏰ 时间到!",
                 "clock/wintitle-stopwatch-paused": "秒表(已暂停)",
-                "clock/btn-remove": "删除"
+                "clock/btn-remove": "删除",
+                "clock/day-suffix": "天",
+                "clock/region-asia": "亚洲",
+                "clock/region-america": "美洲",
+                "clock/region-americas": "美洲",
+                "clock/region-europe": "欧洲",
+                "clock/region-africa": "非洲",
+                "clock/region-australia": "澳洲",
+                "clock/region-pacific": "太平洋",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "印度洋",
+                "clock/region-atlantic": "大西洋",
+                "clock/region-arctic": "北极"
             },
             "titles": {
                 "Start": "开始",
@@ -107,7 +131,19 @@
                 "clock/wintitle-countdown-paused": "倒數計時(已暫停)",
                 "clock/wintitle-times-up": "⏰ 時間到!",
                 "clock/wintitle-stopwatch-paused": "碼錶(已暫停)",
-                "clock/btn-remove": "移除"
+                "clock/btn-remove": "移除",
+                "clock/day-suffix": "日",
+                "clock/region-asia": "亞洲",
+                "clock/region-america": "美洲",
+                "clock/region-americas": "美洲",
+                "clock/region-europe": "歐洲",
+                "clock/region-africa": "非洲",
+                "clock/region-australia": "澳洲",
+                "clock/region-pacific": "太平洋",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "印度洋",
+                "clock/region-atlantic": "大西洋",
+                "clock/region-arctic": "北極"
             },
             "titles": {
                 "Start": "開始",
@@ -147,7 +183,19 @@
                 "clock/wintitle-countdown-paused": "倒數計時(已暫停)",
                 "clock/wintitle-times-up": "⏰ 時間到!",
                 "clock/wintitle-stopwatch-paused": "秒錶(已暫停)",
-                "clock/btn-remove": "移除"
+                "clock/btn-remove": "移除",
+                "clock/day-suffix": "日",
+                "clock/region-asia": "亞洲",
+                "clock/region-america": "美洲",
+                "clock/region-americas": "美洲",
+                "clock/region-europe": "歐洲",
+                "clock/region-africa": "非洲",
+                "clock/region-australia": "澳洲",
+                "clock/region-pacific": "太平洋",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "印度洋",
+                "clock/region-atlantic": "大西洋",
+                "clock/region-arctic": "北極"
             },
             "titles": {
                 "Start": "開始",
@@ -187,7 +235,19 @@
                 "clock/wintitle-countdown-paused": "カウントダウン(一時停止中)",
                 "clock/wintitle-times-up": "⏰ 時間切れ!",
                 "clock/wintitle-stopwatch-paused": "ストップウォッチ(一時停止中)",
-                "clock/btn-remove": "削除"
+                "clock/btn-remove": "削除",
+                "clock/day-suffix": "日",
+                "clock/region-asia": "アジア",
+                "clock/region-america": "アメリカ",
+                "clock/region-americas": "南北アメリカ",
+                "clock/region-europe": "ヨーロッパ",
+                "clock/region-africa": "アフリカ",
+                "clock/region-australia": "オセアニア",
+                "clock/region-pacific": "太平洋",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "インド洋",
+                "clock/region-atlantic": "大西洋",
+                "clock/region-arctic": "北極"
             },
             "titles": {
                 "Start": "開始",
@@ -227,7 +287,19 @@
                 "clock/wintitle-countdown-paused": "카운트다운 (일시 정지됨)",
                 "clock/wintitle-times-up": "⏰ 시간 초과!",
                 "clock/wintitle-stopwatch-paused": "스톱워치 (일시 정지됨)",
-                "clock/btn-remove": "제거"
+                "clock/btn-remove": "제거",
+                "clock/day-suffix": "일",
+                "clock/region-asia": "아시아",
+                "clock/region-america": "아메리카",
+                "clock/region-americas": "아메리카",
+                "clock/region-europe": "유럽",
+                "clock/region-africa": "아프리카",
+                "clock/region-australia": "오세아니아",
+                "clock/region-pacific": "태평양",
+                "clock/region-utc": "UTC",
+                "clock/region-indian": "인도양",
+                "clock/region-atlantic": "대서양",
+                "clock/region-arctic": "북극"
             },
             "titles": {
                 "Start": "시작",