@jjlmoya/utils-chrono 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +65 -0
- package/scripts/postinstall.mjs +27 -0
- package/src/category/ChronoCategorySEO.astro +8 -0
- package/src/category/i18n/de.ts +23 -0
- package/src/category/i18n/en.ts +23 -0
- package/src/category/i18n/es.ts +23 -0
- package/src/category/i18n/fr.ts +23 -0
- package/src/category/i18n/id.ts +23 -0
- package/src/category/i18n/it.ts +23 -0
- package/src/category/i18n/ja.ts +23 -0
- package/src/category/i18n/ko.ts +23 -0
- package/src/category/i18n/nl.ts +23 -0
- package/src/category/i18n/pl.ts +23 -0
- package/src/category/i18n/pt.ts +23 -0
- package/src/category/i18n/ru.ts +23 -0
- package/src/category/i18n/sv.ts +23 -0
- package/src/category/i18n/tr.ts +23 -0
- package/src/category/i18n/zh.ts +23 -0
- package/src/category/index.ts +42 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +11 -0
- package/src/entries.ts +32 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +28 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +161 -0
- package/src/pages/[locale].astro +251 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +29 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +18 -0
- package/src/tool/beat-rate-converter/beat-rate-converter.css +301 -0
- package/src/tool/beat-rate-converter/bibliography.astro +16 -0
- package/src/tool/beat-rate-converter/bibliography.ts +12 -0
- package/src/tool/beat-rate-converter/client.ts +46 -0
- package/src/tool/beat-rate-converter/component.astro +15 -0
- package/src/tool/beat-rate-converter/components/ConverterPanel.astro +87 -0
- package/src/tool/beat-rate-converter/entry.ts +42 -0
- package/src/tool/beat-rate-converter/i18n/de.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/en.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/es.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/fr.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/id.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/it.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/ja.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/ko.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/nl.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/pl.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/pt.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/ru.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/sv.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/tr.ts +138 -0
- package/src/tool/beat-rate-converter/i18n/zh.ts +138 -0
- package/src/tool/beat-rate-converter/index.ts +11 -0
- package/src/tool/beat-rate-converter/seo.astro +16 -0
- package/src/tool/crown-reference-guide/bibliography.astro +16 -0
- package/src/tool/crown-reference-guide/bibliography.ts +20 -0
- package/src/tool/crown-reference-guide/client.ts +193 -0
- package/src/tool/crown-reference-guide/component.astro +69 -0
- package/src/tool/crown-reference-guide/components/CrownView.astro +40 -0
- package/src/tool/crown-reference-guide/components/MovementSelector.astro +26 -0
- package/src/tool/crown-reference-guide/components/PositionPanel.astro +59 -0
- package/src/tool/crown-reference-guide/crown-reference-guide.css +383 -0
- package/src/tool/crown-reference-guide/entry.ts +60 -0
- package/src/tool/crown-reference-guide/i18n/de.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/en.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/es.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/fr.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/id.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/it.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/ja.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/ko.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/nl.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/pl.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/pt.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/ru.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/sv.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/tr.ts +207 -0
- package/src/tool/crown-reference-guide/i18n/zh.ts +207 -0
- package/src/tool/crown-reference-guide/index.ts +11 -0
- package/src/tool/crown-reference-guide/seo.astro +16 -0
- package/src/tool/crown-reference-guide/utils.ts +0 -0
- package/src/tool/demagnetizing-timer/bibliography.astro +16 -0
- package/src/tool/demagnetizing-timer/bibliography.ts +12 -0
- package/src/tool/demagnetizing-timer/client.ts +221 -0
- package/src/tool/demagnetizing-timer/component.astro +15 -0
- package/src/tool/demagnetizing-timer/components/TimerPanel.astro +92 -0
- package/src/tool/demagnetizing-timer/demagnetizing-timer.css +389 -0
- package/src/tool/demagnetizing-timer/entry.ts +50 -0
- package/src/tool/demagnetizing-timer/helpers/field.ts +134 -0
- package/src/tool/demagnetizing-timer/i18n/de.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/en.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/es.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/fr.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/id.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/it.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/ja.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/ko.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/nl.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/pl.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/pt.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/ru.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/sv.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/tr.ts +143 -0
- package/src/tool/demagnetizing-timer/i18n/zh.ts +143 -0
- package/src/tool/demagnetizing-timer/index.ts +11 -0
- package/src/tool/demagnetizing-timer/seo.astro +16 -0
- package/src/tool/demagnetizing-timer/utils.ts +0 -0
- package/src/tool/power-reserve-estimator/bibliography.astro +16 -0
- package/src/tool/power-reserve-estimator/bibliography.ts +16 -0
- package/src/tool/power-reserve-estimator/client.ts +139 -0
- package/src/tool/power-reserve-estimator/component.astro +15 -0
- package/src/tool/power-reserve-estimator/components/EstimatorPanel.astro +150 -0
- package/src/tool/power-reserve-estimator/entry.ts +51 -0
- package/src/tool/power-reserve-estimator/i18n/de.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/en.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/es.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/fr.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/id.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/it.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/ja.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/ko.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/nl.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/pl.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/pt.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/ru.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/sv.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/tr.ts +158 -0
- package/src/tool/power-reserve-estimator/i18n/zh.ts +158 -0
- package/src/tool/power-reserve-estimator/index.ts +11 -0
- package/src/tool/power-reserve-estimator/power-reserve-estimator.css +402 -0
- package/src/tool/power-reserve-estimator/seo.astro +16 -0
- package/src/tool/strap-taper-calculator/bibliography.astro +16 -0
- package/src/tool/strap-taper-calculator/bibliography.ts +12 -0
- package/src/tool/strap-taper-calculator/client.ts +129 -0
- package/src/tool/strap-taper-calculator/component.astro +15 -0
- package/src/tool/strap-taper-calculator/components/CalculatorPanel.astro +114 -0
- package/src/tool/strap-taper-calculator/entry.ts +56 -0
- package/src/tool/strap-taper-calculator/i18n/de.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/en.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/es.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/fr.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/id.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/it.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/ja.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/ko.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/nl.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/pl.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/pt.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/ru.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/sv.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/tr.ts +152 -0
- package/src/tool/strap-taper-calculator/i18n/zh.ts +152 -0
- package/src/tool/strap-taper-calculator/index.ts +11 -0
- package/src/tool/strap-taper-calculator/seo.astro +16 -0
- package/src/tool/strap-taper-calculator/strap-taper-calculator.css +320 -0
- package/src/tool/watch-accuracy-tracker/bibliography.astro +16 -0
- package/src/tool/watch-accuracy-tracker/bibliography.ts +12 -0
- package/src/tool/watch-accuracy-tracker/chart.ts +126 -0
- package/src/tool/watch-accuracy-tracker/client.ts +287 -0
- package/src/tool/watch-accuracy-tracker/component.astro +35 -0
- package/src/tool/watch-accuracy-tracker/components/AccuracyTracker.astro +96 -0
- package/src/tool/watch-accuracy-tracker/components/DriftPredictor.astro +126 -0
- package/src/tool/watch-accuracy-tracker/components/LogHistory.astro +66 -0
- package/src/tool/watch-accuracy-tracker/entry.ts +94 -0
- package/src/tool/watch-accuracy-tracker/i18n/de.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/en.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/es.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/fr.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/id.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/it.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/ja.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/ko.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/nl.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/pl.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/pt.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/ru.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/sv.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/tr.ts +167 -0
- package/src/tool/watch-accuracy-tracker/i18n/zh.ts +167 -0
- package/src/tool/watch-accuracy-tracker/index.ts +9 -0
- package/src/tool/watch-accuracy-tracker/logger.ts +105 -0
- package/src/tool/watch-accuracy-tracker/seo.astro +16 -0
- package/src/tool/watch-accuracy-tracker/utils.ts +99 -0
- package/src/tool/watch-accuracy-tracker/watch-accuracy-tracker.css +564 -0
- package/src/tool/watch-savings-planner/bibliography.astro +16 -0
- package/src/tool/watch-savings-planner/bibliography.ts +8 -0
- package/src/tool/watch-savings-planner/client.ts +271 -0
- package/src/tool/watch-savings-planner/component.astro +33 -0
- package/src/tool/watch-savings-planner/components/AddGoalForm.astro +49 -0
- package/src/tool/watch-savings-planner/components/GoalCard.astro +58 -0
- package/src/tool/watch-savings-planner/entry.ts +62 -0
- package/src/tool/watch-savings-planner/i18n/de.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/en.ts +155 -0
- package/src/tool/watch-savings-planner/i18n/es.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/fr.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/id.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/it.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/ja.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/ko.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/nl.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/pl.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/pt.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/ru.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/sv.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/tr.ts +153 -0
- package/src/tool/watch-savings-planner/i18n/zh.ts +153 -0
- package/src/tool/watch-savings-planner/index.ts +11 -0
- package/src/tool/watch-savings-planner/seo.astro +16 -0
- package/src/tool/watch-savings-planner/utils.ts +0 -0
- package/src/tool/watch-savings-planner/watch-savings-planner.css +460 -0
- package/src/tool/water-resistance-converter/bibliography.astro +16 -0
- package/src/tool/water-resistance-converter/bibliography.ts +16 -0
- package/src/tool/water-resistance-converter/client.ts +56 -0
- package/src/tool/water-resistance-converter/component.astro +15 -0
- package/src/tool/water-resistance-converter/components/ConverterPanel.astro +113 -0
- package/src/tool/water-resistance-converter/entry.ts +52 -0
- package/src/tool/water-resistance-converter/i18n/de.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/en.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/es.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/fr.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/id.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/it.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/ja.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/ko.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/nl.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/pl.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/pt.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/ru.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/sv.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/tr.ts +148 -0
- package/src/tool/water-resistance-converter/i18n/zh.ts +148 -0
- package/src/tool/water-resistance-converter/index.ts +11 -0
- package/src/tool/water-resistance-converter/seo.astro +16 -0
- package/src/tool/water-resistance-converter/water-resistance-converter.css +254 -0
- package/src/tool/wrist-presence-calculator/bibliography.astro +16 -0
- package/src/tool/wrist-presence-calculator/bibliography.ts +12 -0
- package/src/tool/wrist-presence-calculator/client.ts +180 -0
- package/src/tool/wrist-presence-calculator/component.astro +23 -0
- package/src/tool/wrist-presence-calculator/components/CalculatorInputs.astro +97 -0
- package/src/tool/wrist-presence-calculator/components/FitResult.astro +68 -0
- package/src/tool/wrist-presence-calculator/components/Visualizer.astro +16 -0
- package/src/tool/wrist-presence-calculator/entry.ts +59 -0
- package/src/tool/wrist-presence-calculator/helpers/canvas.ts +189 -0
- package/src/tool/wrist-presence-calculator/helpers/results.ts +78 -0
- package/src/tool/wrist-presence-calculator/i18n/de.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/en.ts +155 -0
- package/src/tool/wrist-presence-calculator/i18n/es.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/fr.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/id.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/it.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/ja.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/ko.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/nl.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/pl.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/pt.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/ru.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/sv.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/tr.ts +139 -0
- package/src/tool/wrist-presence-calculator/i18n/zh.ts +155 -0
- package/src/tool/wrist-presence-calculator/index.ts +11 -0
- package/src/tool/wrist-presence-calculator/seo.astro +16 -0
- package/src/tool/wrist-presence-calculator/utils.ts +30 -0
- package/src/tool/wrist-presence-calculator/wrist-presence-calculator.css +372 -0
- package/src/tools.ts +26 -0
- package/src/types.ts +70 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
export const content: ToolLocaleContent = {
|
|
5
|
+
slug: 'klocka-precision-kalkylator',
|
|
6
|
+
title: 'Klocka Precision & Gångavvikelse Kalkylator',
|
|
7
|
+
description: 'Logga och beräkna den dagliga tidsskillnaden för dina mekaniska klockor eller kvartsklockor för att analysera precision och stabilitet.',
|
|
8
|
+
ui: {
|
|
9
|
+
title: 'Klockprecision',
|
|
10
|
+
selectWatch: 'Välj eller lägg till en klocka',
|
|
11
|
+
watchPlaceholder: 't.ex. Seiko SKX007',
|
|
12
|
+
addWatch: 'Lägg till klocka',
|
|
13
|
+
deleteWatch: 'Ta bort klocka',
|
|
14
|
+
addLog: 'Logga ny mätning',
|
|
15
|
+
offsetLabel: 'Tidsavvikelse (sekunder)',
|
|
16
|
+
offsetPlaceholder: '0',
|
|
17
|
+
dateLabel: 'Mättidpunkt',
|
|
18
|
+
saveLog: 'Spara mätning',
|
|
19
|
+
avgRate: 'Genomsnittlig daglig avvikelse',
|
|
20
|
+
consistency: 'Präzisionsstatus',
|
|
21
|
+
totalLogs: 'Mätningar totalt',
|
|
22
|
+
historyTitle: 'Mäthistorik',
|
|
23
|
+
noLogs: 'Inga mätningar registrerade för denna klocka än. Lägg till minst två mätningar för att beräkna precisionen.',
|
|
24
|
+
tableDate: 'Datum & Tid',
|
|
25
|
+
tableOffset: 'Avvikelse',
|
|
26
|
+
tableRate: 'Daglig avvikelse',
|
|
27
|
+
tableActions: 'Åtgärder',
|
|
28
|
+
deleteLog: 'Ta bort',
|
|
29
|
+
coscExcellent: 'COSC-kronometer (+4/-6 s/d)',
|
|
30
|
+
excellent: 'Utmärkt (0 till +5 s/d)',
|
|
31
|
+
good: 'Bra (+/- 10 s/d)',
|
|
32
|
+
needsService: 'Service rekommenderas (> +/- 20 s/d)',
|
|
33
|
+
secondsPerDay: 's/d',
|
|
34
|
+
seconds: 'sekunder',
|
|
35
|
+
referenceTime: 'Referenstid',
|
|
36
|
+
watchTime: 'Klocktid',
|
|
37
|
+
useCurrentTime: 'Använd aktuell tid',
|
|
38
|
+
calculatedRate: 'Beräknad avvikelse',
|
|
39
|
+
driftPredictorTitle: 'Avvikelseprognos & Kalkylator',
|
|
40
|
+
driftPredictorDesc: 'Projicera den kumulerade tidsskillnaden över dagar, månader och år samt jämför med standarder.',
|
|
41
|
+
dailyRateInput: 'Daglig avvikelse (sekunder/dag)',
|
|
42
|
+
dailyRatePlaceholder: 't.ex. +4.5 eller -3',
|
|
43
|
+
driftHeading: 'Prognoser',
|
|
44
|
+
period: 'Tidsperiod',
|
|
45
|
+
accumulatedDrift: 'Projicerad avvikelse',
|
|
46
|
+
day: '1 Dag',
|
|
47
|
+
week: '1 Vecka',
|
|
48
|
+
month: '1 Månad',
|
|
49
|
+
months3: '3 Månader',
|
|
50
|
+
months6: '6 Månader',
|
|
51
|
+
year: '1 År',
|
|
52
|
+
years5: '5 År',
|
|
53
|
+
watchStandardTitle: 'Certifieringsstandarder',
|
|
54
|
+
trackerHeading: 'Tidsavvikelse i Realtid',
|
|
55
|
+
driftCalculatorTab: 'Gångprognos',
|
|
56
|
+
trackerTab: 'Gångprotokoll',
|
|
57
|
+
stdRolex: 'Rolex Superlative',
|
|
58
|
+
stdCosc: 'COSC Chronometer',
|
|
59
|
+
stdMetas: 'METAS Master',
|
|
60
|
+
stdStdMech: 'Standard Mekanisk',
|
|
61
|
+
stdQuartz: 'Standard Kvarts',
|
|
62
|
+
stdHaq: 'Högprecisionskvarts',
|
|
63
|
+
presetRolex: 'Rolex (+2 s/d)',
|
|
64
|
+
presetCosc: 'COSC (+4 s/d)',
|
|
65
|
+
presetStdMech: 'Standard (+15 s/d)',
|
|
66
|
+
presetQuartz: 'Kvarts (+0.5 s/d)',
|
|
67
|
+
statusPass: 'Godkänd',
|
|
68
|
+
statusFail: 'Underkänd',
|
|
69
|
+
toleranceRolex: '±2 s/d',
|
|
70
|
+
toleranceCosc: '-4 / +6 s/d',
|
|
71
|
+
toleranceMetas: '0 / +5 s/d',
|
|
72
|
+
toleranceStdMech: '±15 s/d',
|
|
73
|
+
toleranceQuartz: '±0.5 s/d',
|
|
74
|
+
toleranceHaq: '±10 s/år',
|
|
75
|
+
},
|
|
76
|
+
seo: [
|
|
77
|
+
{ type: 'title', text: 'Den ultimata guiden till klockprecision och mekanisk tidhållning', level: 2 },
|
|
78
|
+
{ type: 'paragraph', html: 'Mekaniska klockor är underverk av finmekanik, men till skillnad från kvartsur påverkas de av miljöfaktorer och fysiska krafter som påverkar tidhållningen. Att regelbundet mäta och analysera klockans dagliga tidsskillnad är avgörande för att bedöma dess skick och avgöra när en professionell service behövs.' },
|
|
79
|
+
{ type: 'title', text: 'Varför mekaniska klockor avviker: De viktigaste faktorerna', level: 2 },
|
|
80
|
+
{ type: 'paragraph', html: 'Många faktorer påverkar den dagliga gången. Gravitationen påverkar balanshjulet och balansspiralen olika beroende på hur klockan ligger (viloposition). Temperaturförändringar kan få spiralen att expandera eller dra ihop sig, vilket ändrar svängningsfrekvensen. Dessutom påverkar fjäderns spänning (gångreserven) amplituden: en fullt uppdragen klocka går stabilare än en klocka i slutet av sin gångreserv.' },
|
|
81
|
+
{ type: 'title', text: 'Kumulerad tidsavvikelse: Hur sekunder blir till timmar', level: 2 },
|
|
82
|
+
{ type: 'paragraph', html: 'En daglig avvikelse på bara +5 sekunder låter försumbar, men tid är kumulativ. På en vecka blir det 35 sekunder, på en månad 2,5 minuter och på ett år drar sig klockan över 30 minuter före eller efter. Denna kumulerade avvikelse visar varför det är viktigt att mäta precisionen regelbundet.' },
|
|
83
|
+
{ type: 'title', text: 'Hur du mäter och beräknar klockans precision manuellt', level: 2 },
|
|
84
|
+
{ type: 'paragraph', html: 'Du kan enkelt mäta din klockas avvikelse utan en dyr tidvåg. Synkronisera klockan med ett exakt atomur (t.ex. UTC-tid). Notera efter 24 till 48 timmar den nya tidsskillnaden i sekunder. Dela detta värde med antalet dagar för att få den genomsnittliga dagliga gångavvikelsen.' },
|
|
85
|
+
{ type: 'title', text: 'Använd klockans vilopositioner för naturlig reglering', level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: 'Många mekaniska klockor kan regleras något beroende på hur de läggs när de inte bärs. Om klockan läggs plant (urtavlan uppåt) brukar den gå aningen fortare. Om den läggs på sidan (kronan nedåt) saktar den ofta ner. Genom att medvetet välja viloposition under natten kan du kompensera för avvikelsen utan att öppna boetten.' },
|
|
87
|
+
],
|
|
88
|
+
faq: [
|
|
89
|
+
{
|
|
90
|
+
question: 'Vad är en normal daglig avvikelse för en mekanisk klocka?',
|
|
91
|
+
answer: 'Standardmässiga mekaniska klockor avviker oftast +/- 10 till 20 sekunder per dag. Chronometer-certifierade klockor enligt COSC är reglerade till inom -4 till +6 sekunder per dag. Kvartsverk av hög kvalitet kan uppnå avvikelser på under +/- 0.5 sekunder per dag.',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
question: 'Varför varierar klockans precision beroende på viloposition?',
|
|
95
|
+
answer: 'Gravitationskraften drar i balanshjulet och balansspiralen olika beroende på om klockan ligger plant (urtavla uppåt/nedåt) eller står på sidan (krona uppåt/nedåt). Detta orsakar små förändringar i amplituden och därmed gånghastigheten.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
bibliography,
|
|
99
|
+
howTo: [
|
|
100
|
+
{
|
|
101
|
+
name: 'Registrera startvärde',
|
|
102
|
+
text: 'Synkronisera klockan med ett tillförlitligt atomur och notera startavvikelsen i sekunder.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'Bär klockan och vänta',
|
|
106
|
+
text: 'Bär klockan normalt eller förvara den i en fast position i minst 12 till 24 timmar.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'Registrera slutvärde',
|
|
110
|
+
text: 'Mät återigen avvikelsen mot referenstiden. Systemet beräknar automatiskt den dagliga avvikelsen.',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
schemas: [
|
|
114
|
+
{
|
|
115
|
+
'@context': 'https://schema.org',
|
|
116
|
+
'@type': 'SoftwareApplication',
|
|
117
|
+
'name': 'Klocka Precision & Gångavvikelse Kalkylator',
|
|
118
|
+
'operatingSystem': 'All',
|
|
119
|
+
'applicationCategory': 'UtilitiesApplication',
|
|
120
|
+
'browserRequirements': 'Requires HTML5. Requires JavaScript.'
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
'@context': 'https://schema.org',
|
|
124
|
+
'@type': 'FAQPage',
|
|
125
|
+
'mainEntity': [
|
|
126
|
+
{
|
|
127
|
+
'@type': 'Question',
|
|
128
|
+
'name': 'Vad är en normal daglig avvikelse för en mekanisk klocka?',
|
|
129
|
+
'acceptedAnswer': {
|
|
130
|
+
'@type': 'Answer',
|
|
131
|
+
'text': 'Standardmässiga mekaniska klockor avviker oftast +/- 10 till 20 sekunder per dag. Chronometer-certifierade klockor enligt COSC är reglerade till inom -4 till +6 sekunder per dag. Kvartsverk av hög kvalitet kan uppnå avvikelser på under +/- 0.5 sekunder per dag.'
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
'@type': 'Question',
|
|
136
|
+
'name': 'Varför varierar klockans precision beroende på viloposition?',
|
|
137
|
+
'acceptedAnswer': {
|
|
138
|
+
'@type': 'Answer',
|
|
139
|
+
'text': 'Gravitationskraften drar i balanshjulet och balansspiralen olika beroende på om klockan ligger plant (urtavla uppåt/nedåt) eller står på sidan (krona uppåt/nedåt). Detta orsakar små förändringar i amplituden och därmed gånghastigheten.'
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
'@context': 'https://schema.org',
|
|
146
|
+
'@type': 'HowTo',
|
|
147
|
+
'name': 'Hur du mäter och beräknar klockans precision manuellt',
|
|
148
|
+
'step': [
|
|
149
|
+
{
|
|
150
|
+
'@type': 'HowToStep',
|
|
151
|
+
'name': 'Registrera startvärde',
|
|
152
|
+
'text': 'Synkronisera klockan med ett tillförlitligt atomur och notera startavvikelsen i sekunder.'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
'@type': 'HowToStep',
|
|
156
|
+
'name': 'Bär klockan och vänta',
|
|
157
|
+
'text': 'Bär klockan normalt eller förvara den i en fast position i minst 12 till 24 timmar.'
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
'@type': 'HowToStep',
|
|
161
|
+
'name': 'Registrera slutvärde',
|
|
162
|
+
'text': 'Mät återigen avvikelsen mot referenstiden. Systemet beräknar automatiskt den dagliga avvikelsen.'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
export const content: ToolLocaleContent = {
|
|
5
|
+
slug: 'saat-hassasiyeti-hesaplama',
|
|
6
|
+
title: 'Saat Hassasiyeti ve Günlük Sapma Hesaplama',
|
|
7
|
+
description: 'Mekanik veya kuvars saatlerinizin hassasiyetini ve kararlılığını analiz etmek için günlük zaman sapmasını kaydedin ve hesaplayın.',
|
|
8
|
+
ui: {
|
|
9
|
+
title: 'Saat Hassasiyeti',
|
|
10
|
+
selectWatch: 'Bir saat seçin veya ekleyin',
|
|
11
|
+
watchPlaceholder: 'örn. Seiko SKX007',
|
|
12
|
+
addWatch: 'Saat Ekle',
|
|
13
|
+
deleteWatch: 'Saati Sil',
|
|
14
|
+
addLog: 'Yeni Ölçüm Kaydet',
|
|
15
|
+
offsetLabel: 'Sapma (saniye)',
|
|
16
|
+
offsetPlaceholder: '0',
|
|
17
|
+
dateLabel: 'Ölçüm Zamanı',
|
|
18
|
+
saveLog: 'Kaydı Kaydet',
|
|
19
|
+
avgRate: 'Ortalama Günlük Sapma',
|
|
20
|
+
consistency: 'Hassasiyet Durumu',
|
|
21
|
+
totalLogs: 'Toplam Kayıtlar',
|
|
22
|
+
historyTitle: 'Ölçüm Geçmişi',
|
|
23
|
+
noLogs: 'Bu saat için henüz kayıt bulunmamaktadır. Hassasiyeti hesaplamak için en az iki kayıt ekleyin.',
|
|
24
|
+
tableDate: 'Tarih & Saat',
|
|
25
|
+
tableOffset: 'Sapma',
|
|
26
|
+
tableRate: 'Günlük Sapma',
|
|
27
|
+
tableActions: 'İşlemler',
|
|
28
|
+
deleteLog: 'Sil',
|
|
29
|
+
coscExcellent: 'COSC Kronometre (+4/-6 sn/gün)',
|
|
30
|
+
excellent: 'Mükemmel (0 ila +5 sn/gün)',
|
|
31
|
+
good: 'İyi (+/- 10 sn/gün)',
|
|
32
|
+
needsService: 'Bakım Gerekli (> +/- 20 sn/gün)',
|
|
33
|
+
secondsPerDay: 'sn/gün',
|
|
34
|
+
seconds: 'saniye',
|
|
35
|
+
referenceTime: 'Referans Zaman',
|
|
36
|
+
watchTime: 'Saat Zamanı',
|
|
37
|
+
useCurrentTime: 'Şimdiki Zamanı Kullan',
|
|
38
|
+
calculatedRate: 'Hesaplanan Sapma',
|
|
39
|
+
driftPredictorTitle: 'Sapma Tahmini & Hesaplama',
|
|
40
|
+
driftPredictorDesc: 'Zaman içindeki birikmiş sapmayı tahmin edin ve endüstri standartlarıyla karşılaştırın.',
|
|
41
|
+
dailyRateInput: 'Günlük Sapma (saniye/gün)',
|
|
42
|
+
dailyRatePlaceholder: 'örn. +4.5 veya -3',
|
|
43
|
+
driftHeading: 'Tahminler',
|
|
44
|
+
period: 'Dönem',
|
|
45
|
+
accumulatedDrift: 'Tahmini Sapma',
|
|
46
|
+
day: '1 Gün',
|
|
47
|
+
week: '1 Hafta',
|
|
48
|
+
month: '1 Ay',
|
|
49
|
+
months3: '3 Ay',
|
|
50
|
+
months6: '6 Ay',
|
|
51
|
+
year: '1 Yıl',
|
|
52
|
+
years5: '5 Yıl',
|
|
53
|
+
watchStandardTitle: 'Sertifikasyon Standartları',
|
|
54
|
+
trackerHeading: 'Gerçek Zamanlı Sapma Ölçümü',
|
|
55
|
+
driftCalculatorTab: 'Sapma Tahmini',
|
|
56
|
+
trackerTab: 'Hassasiyet Günlüğü',
|
|
57
|
+
stdRolex: 'Rolex Superlative',
|
|
58
|
+
stdCosc: 'COSC Kronometre',
|
|
59
|
+
stdMetas: 'METAS Master',
|
|
60
|
+
stdStdMech: 'Standart Mekanik',
|
|
61
|
+
stdQuartz: 'Standart Kuvars',
|
|
62
|
+
stdHaq: 'Yüksek Hassasiyetli Kuvars',
|
|
63
|
+
presetRolex: 'Rolex (+2 s/g)',
|
|
64
|
+
presetCosc: 'COSC (+4 s/g)',
|
|
65
|
+
presetStdMech: 'Standart (+15 s/g)',
|
|
66
|
+
presetQuartz: 'Kuvars (+0.5 s/g)',
|
|
67
|
+
statusPass: 'Geçti',
|
|
68
|
+
statusFail: 'Kaldı',
|
|
69
|
+
toleranceRolex: '±2 s/g',
|
|
70
|
+
toleranceCosc: '-4 / +6 s/g',
|
|
71
|
+
toleranceMetas: '0 / +5 s/g',
|
|
72
|
+
toleranceStdMech: '±15 s/g',
|
|
73
|
+
toleranceQuartz: '±0.5 s/g',
|
|
74
|
+
toleranceHaq: '±10 s/yıl',
|
|
75
|
+
},
|
|
76
|
+
seo: [
|
|
77
|
+
{ type: 'title', text: 'Mekanik Saatlerde Hassasiyet ve Günlük Sapma Ayarı Rehberi', level: 2 },
|
|
78
|
+
{ type: 'paragraph', html: 'Mekanik saatler mikro-mühendisliğin harikalarıdır, ancak kuvars mekanizmalardan farklı olarak zaman tutma hassasiyetlerini etkileyen çeşitli fiziksel ve çevresel kuvvetlere maruz kalırlar. Günlük sapmayı takip etmek saatinizin sağlığını korumak ve profesyonel bir bakıma ne zaman ihtiyaç duyacağını belirlemek için temel adımdır.' },
|
|
79
|
+
{ type: 'title', text: 'Mekanik Saatler Neden Sapma Yapar: Temel Faktörler', level: 2 },
|
|
80
|
+
{ type: 'paragraph', html: 'Günlük çalışma hızını birçok faktör etkiler. Yerçekimi, saatin duruş pozisyonuna bağlı olarak balans çarkını ve balans yayını farklı şekillerde etkiler. Sıcaklık dalgalanmaları yayın genleşmesine veya büzülmesine yol açarak titreşim frekansını değiştirir. Ek olarak, ana yayın gerginliği (güç rezervi) genliği etkiler: Tam kurulmuş bir saat, güç rezervinin sonuna yaklaşmış bir saate kıyasla daha kararlı çalışır.' },
|
|
81
|
+
{ type: 'title', text: 'Birikmiş Sapma: Saniyelerin Saatlere Dönüşümü', level: 2 },
|
|
82
|
+
{ type: 'paragraph', html: 'Günde sadece +5 saniyelik bir sapma önemsiz görünebilir ancak zaman birikimlidir. Bir haftada bu sapma 35 saniyeye ulaşır, bir ayda 2.5 dakika olur ve bir yılda saatiniz 30 dakikadan fazla sapma yapar. Bu birikmiş sapma, saatlerini sırayla takan koleksiyonerler için düzenli ölçüm yapmanın önemini gösterir.' },
|
|
83
|
+
{ type: 'title', text: 'Saat Hassasiyeti Manuel Olarak Nasıl Ölçülür ve Hesaplanır', level: 2 },
|
|
84
|
+
{ type: 'paragraph', html: 'Pahalı bir zaman ayar cihazı (timegrapher) olmadan saatinizin sapmasını manuel olarak ölçebilirsiniz. Saatinizi hassas bir atom saati ile (örn. UTC saati) senkronize edin. 24 ila 48 saat sonra yeni sapmayı saniye cinsinden not edin. Ortalama günlük sapmayı bulmak için bu farkı gün sayısına bölün.' },
|
|
85
|
+
{ type: 'title', text: 'Gece Duruş Pozisyonlarını Doğal Ayar İçin Kullanma', level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: 'Birçok mekanik saat, takılmadığı zamanlarda duruş şekline bağlı olarak hafifçe ayarlanabilir. Örneğin, saati düz bir zemine kadranı yukarı bakacak şekilde bırakmak genellikle saatin biraz hızlanmasına yol açar. Yan yatırıp kurma kolu aşağıda kalacak şekilde bırakmak ise saatin zaman kaybetmesine neden olur. Bu duruş şekillerini kullanarak saatinizin sapmasını kasa kapağını açmadan telafi edebilirsiniz.' },
|
|
87
|
+
],
|
|
88
|
+
faq: [
|
|
89
|
+
{
|
|
90
|
+
question: 'Mekanik saatler için normal günlük sapma miktarı nedir?',
|
|
91
|
+
answer: 'Standart mekanik saatler genellikle günde +/- 10 ila 20 saniye sapma gösterir. COSC sertifikalı kronometreler günde -4 ila +6 saniye aralığında çalışacak şekilde ayarlanmıştır. Yüksek kaliteli kuvars mekanizmalar günde +/- 0.5 saniyeden daha az sapma elde edebilir.',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
question: 'Saadimin hassasiyeti neden duruş pozisyonuna göre değişiyor?',
|
|
95
|
+
answer: 'Yerçekimi kuvveti, saatin duruş şekline (kadran yukarıda/aşağıda veya kurma kolu yukarıda/aşağıda) bağlı olarak balans çarkını ve balans yayını farklı şekillerde çeker. Bu durum genlikte ve çalışma hızında küçük değişikliklere neden olur.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
bibliography,
|
|
99
|
+
howTo: [
|
|
100
|
+
{
|
|
101
|
+
name: 'Başlangıç Değerini Kaydedin',
|
|
102
|
+
text: 'Saati güvenilir bir atom saati ile senkronize edin ve saniye cinsinden başlangıç sapmasını not edin.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'Takın ve Bekleyin',
|
|
106
|
+
text: 'Saati normal şekilde takın veya en az 12 ila 24 saat boyunca sabit bir pozisyonda saklayın.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'Bitiş Değerini Kaydedin',
|
|
110
|
+
text: 'Referans zamana göre yeni sapmayı girin. Sistem otomatik olarak günlük sapmayı hesaplayacaktır.',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
schemas: [
|
|
114
|
+
{
|
|
115
|
+
'@context': 'https://schema.org',
|
|
116
|
+
'@type': 'SoftwareApplication',
|
|
117
|
+
'name': 'Saat Hassasiyeti ve Günlük Sapma Hesaplama',
|
|
118
|
+
'operatingSystem': 'All',
|
|
119
|
+
'applicationCategory': 'UtilitiesApplication',
|
|
120
|
+
'browserRequirements': 'Requires HTML5. Requires JavaScript.'
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
'@context': 'https://schema.org',
|
|
124
|
+
'@type': 'FAQPage',
|
|
125
|
+
'mainEntity': [
|
|
126
|
+
{
|
|
127
|
+
'@type': 'Question',
|
|
128
|
+
'name': 'Mekanik saatler için normal günlük sapma miktarı nedir?',
|
|
129
|
+
'acceptedAnswer': {
|
|
130
|
+
'@type': 'Answer',
|
|
131
|
+
'text': 'Standart mekanik saatler genellikle günde +/- 10 ila 20 saniye sapma gösterir. COSC sertifikalı kronometreler günde -4 ila +6 saniye aralığında çalışacak şekilde ayarlanmıştır. Yüksek kaliteli kuvars mekanizmalar günde +/- 0.5 saniyeden daha az sapma elde edebilir.'
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
'@type': 'Question',
|
|
136
|
+
'name': 'Saadimin hassasiyeti neden duruş pozisyonuna göre değişiyor?',
|
|
137
|
+
'acceptedAnswer': {
|
|
138
|
+
'@type': 'Answer',
|
|
139
|
+
'text': 'Yerçekimi kuvveti, saatin duruş şekline (kadran yukarıda/aşağıda veya kurma kolu yukarıda/aşağıda) bağlı olarak balans çarkını ve balans yayını farklı şekillerde çeker. Bu durum genlikte ve çalışma hızında küçük değişikliklere neden olur.'
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
'@context': 'https://schema.org',
|
|
146
|
+
'@type': 'HowTo',
|
|
147
|
+
'name': 'Saat Hassasiyeti Manuel Olarak Nasıl Ölçülür ve Hesaplanır',
|
|
148
|
+
'step': [
|
|
149
|
+
{
|
|
150
|
+
'@type': 'HowToStep',
|
|
151
|
+
'name': 'Başlangıç Değerini Kaydedin',
|
|
152
|
+
'text': 'Saati güvenilir bir atom saati ile senkronize edin ve saniye cinsinden başlangıç sapmasını not edin.'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
'@type': 'HowToStep',
|
|
156
|
+
'name': 'Takın ve Bekleyin',
|
|
157
|
+
'text': 'Saati normal şekilde takın veya en az 12 ila 24 saat boyunca sabit bir pozisyonda saklayın.'
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
'@type': 'HowToStep',
|
|
161
|
+
'name': 'Bitiş Değerini Kaydedin',
|
|
162
|
+
'text': 'Referans zamana göre yeni sapmayı girin. Sistem otomatik olarak günlük sapmayı hesaplayacaktır.'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
export const content: ToolLocaleContent = {
|
|
5
|
+
slug: 'watch-accuracy-tracker',
|
|
6
|
+
title: '手表精度追踪与记录器',
|
|
7
|
+
description: '记录并计算您的机械表或石英表每日误差(日差),以分析其精度和稳定性。',
|
|
8
|
+
ui: {
|
|
9
|
+
title: '手表精度追踪器',
|
|
10
|
+
selectWatch: '选择或添加手表',
|
|
11
|
+
watchPlaceholder: '例如:精工 SKX007',
|
|
12
|
+
addWatch: '添加手表',
|
|
13
|
+
deleteWatch: '删除手表',
|
|
14
|
+
addLog: '记录新测量值',
|
|
15
|
+
offsetLabel: '误差(秒)',
|
|
16
|
+
offsetPlaceholder: '0',
|
|
17
|
+
dateLabel: '测量时间',
|
|
18
|
+
saveLog: '保存记录',
|
|
19
|
+
avgRate: '平均日差',
|
|
20
|
+
consistency: '精度状态',
|
|
21
|
+
totalLogs: '总记录数',
|
|
22
|
+
historyTitle: '测量历史',
|
|
23
|
+
noLogs: '该手表暂无记录。请至少添加两次记录以计算精度。',
|
|
24
|
+
tableDate: '日期与时间',
|
|
25
|
+
tableOffset: '误差',
|
|
26
|
+
tableRate: '日差',
|
|
27
|
+
tableActions: '操作',
|
|
28
|
+
deleteLog: '删除',
|
|
29
|
+
coscExcellent: 'COSC天文台认证标准 (+4/-6 秒/天)',
|
|
30
|
+
excellent: '极佳 (0 至 +5 秒/天)',
|
|
31
|
+
good: '良好 (+/- 10 秒/天)',
|
|
32
|
+
needsService: '需要保养 (> +/- 20 秒/天)',
|
|
33
|
+
secondsPerDay: '秒/天',
|
|
34
|
+
seconds: '秒',
|
|
35
|
+
referenceTime: '基准时间',
|
|
36
|
+
watchTime: '手表时间',
|
|
37
|
+
useCurrentTime: '使用当前时间',
|
|
38
|
+
calculatedRate: '计算出的日差',
|
|
39
|
+
driftPredictorTitle: '走时误差预测与投影',
|
|
40
|
+
driftPredictorDesc: '预测随时间推移累积的走时误差,并与行业标准进行对比。',
|
|
41
|
+
dailyRateInput: '每日走时误差(秒/天)',
|
|
42
|
+
dailyRatePlaceholder: '例如:+4.5 或 -3',
|
|
43
|
+
driftHeading: '误差投影',
|
|
44
|
+
period: '周期',
|
|
45
|
+
accumulatedDrift: '预测累积误差',
|
|
46
|
+
day: '1天',
|
|
47
|
+
week: '1周',
|
|
48
|
+
month: '1个月',
|
|
49
|
+
months3: '3个月',
|
|
50
|
+
months6: '6个月',
|
|
51
|
+
year: '1年',
|
|
52
|
+
years5: '5年',
|
|
53
|
+
watchStandardTitle: '标准与认证',
|
|
54
|
+
trackerHeading: '实时误差追踪',
|
|
55
|
+
driftCalculatorTab: '误差预测',
|
|
56
|
+
trackerTab: '误差记录',
|
|
57
|
+
stdRolex: '劳力士超卓天文台',
|
|
58
|
+
stdCosc: 'COSC天文台认证',
|
|
59
|
+
stdMetas: 'METAS至臻天文台',
|
|
60
|
+
stdStdMech: '标准机械表',
|
|
61
|
+
stdQuartz: '标准石英表',
|
|
62
|
+
stdHaq: '高精度石英表',
|
|
63
|
+
presetRolex: '劳力士 (+2 秒/天)',
|
|
64
|
+
presetCosc: 'COSC (+4 秒/天)',
|
|
65
|
+
presetStdMech: '普通机械表 (+15 秒/天)',
|
|
66
|
+
presetQuartz: '普通石英表 (+0.5 秒/天)',
|
|
67
|
+
statusPass: '合格',
|
|
68
|
+
statusFail: '不合格',
|
|
69
|
+
toleranceRolex: '±2 秒/天',
|
|
70
|
+
toleranceCosc: '-4 / +6 秒/天',
|
|
71
|
+
toleranceMetas: '0 / +5 秒/天',
|
|
72
|
+
toleranceStdMech: '±15 秒/天',
|
|
73
|
+
toleranceQuartz: '±0.5 秒/天',
|
|
74
|
+
toleranceHaq: '±10 秒/年',
|
|
75
|
+
},
|
|
76
|
+
seo: [
|
|
77
|
+
{ type: 'title', text: '手表精度与日差调整终极指南', level: 2 },
|
|
78
|
+
{ type: 'paragraph', html: '机械表是微型工程的奇迹,但与石英机芯不同,它们容易受到各种环境和物理因素的影响,从而影响其走时精度。监测并理解手表的每日误差对于维持其良好运行状态以及决定何时需要进行专业保养至关重要。' },
|
|
79
|
+
{ type: 'title', text: '机械表产生走时误差的主要原因', level: 2 },
|
|
80
|
+
{ type: 'paragraph', html: '有几个因素会影响手表每天的走时快慢。重力对摆轮的影响会根据手表的放置方位(位差)而有所不同。温度变化会导致游丝膨胀或收缩,从而改变振动频率。此外,主发条的满条程度(动力储存)也会影响摆幅,通常情况下,满弦手表的走时要比动力即将耗尽时更为稳定。' },
|
|
81
|
+
{ type: 'title', text: '理解累积误差:微小偏差是如何随时间放大的', level: 2 },
|
|
82
|
+
{ type: 'paragraph', html: '每天仅 +5 秒的日差听起来微不足道,但时间是累积的。在短短一周内,这就会累积到 35 秒。一个月内会增加到 2.5 分钟,而一年下来,您的手表误差将超过 30 分钟。这种累积误差凸显了为什么对于经常轮换佩戴手表并希望手表与原子基准时间同步的收藏家来说,精确追踪走时是必不可少的。' },
|
|
83
|
+
{ type: 'title', text: '如何手动追踪和计算手表精度', level: 2 },
|
|
84
|
+
{ type: 'paragraph', html: '若要在没有专业校表仪的情况下测量手表的日差,您可以使用“误差记录”功能。首先,将手表与可靠的原子时间源(如 UTC 或 NTP 时钟)同步并记下当前的初始误差(秒)。24 到 48 小时后,再次记录误差。将两次误差的差值除以间隔天数,即可得出您手表的平均每日走时误差。' },
|
|
85
|
+
{ type: 'title', text: '利用方位差进行自我微调', level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: '许多机械手表可以通过不佩戴时的放置姿势(方位)来进行细微的自我调整。例如,夜间将手表正面朝上平放可能会让其走快几秒,而将表冠朝下放置可能会让其走慢几秒。通过记录这些放置方位并使用我们的计算器,您可以确定夜间应如何放置手表,以自然抵消其每日误差。' },
|
|
87
|
+
],
|
|
88
|
+
faq: [
|
|
89
|
+
{
|
|
90
|
+
question: '机械表的正常每日走时误差是多少?',
|
|
91
|
+
answer: '标准的机械表日差通常在 +/- 10 至 20 秒之间。获得 COSC 天文台认证的表款经过精密调校,日差控制在 -4 至 +6 秒/天以内,而高品质的石英机芯可以达到每日误差小于 +/- 0.5 秒。',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
question: '为什么手表的精度会因放置位置而改变?',
|
|
95
|
+
answer: '当地表正面朝上、朝下、表冠朝上或朝下时,重力对摆轮和游丝的牵引力是不同的。这种方位差会导致手表摆幅和走时快慢产生细微的变化。',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
bibliography,
|
|
99
|
+
howTo: [
|
|
100
|
+
{
|
|
101
|
+
name: '记录初始状态',
|
|
102
|
+
text: '将手表与可靠的原子钟同步,或记下当前的误差(秒)。'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: '佩戴或静置观察',
|
|
106
|
+
text: '正常佩戴手表,或将其保持在单一位置至少 12 至 24 小时。'
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: '记录第二状态',
|
|
110
|
+
text: '再次记录手表的误差。系统将自动计算每日的走时误差(秒/天)。'
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
schemas: [
|
|
114
|
+
{
|
|
115
|
+
'@context': 'https://schema.org',
|
|
116
|
+
'@type': 'SoftwareApplication',
|
|
117
|
+
'name': '手表精度追踪与记录器',
|
|
118
|
+
'operatingSystem': 'All',
|
|
119
|
+
'applicationCategory': 'UtilitiesApplication',
|
|
120
|
+
'browserRequirements': 'Requires HTML5. Requires JavaScript.'
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
'@context': 'https://schema.org',
|
|
124
|
+
'@type': 'FAQPage',
|
|
125
|
+
'mainEntity': [
|
|
126
|
+
{
|
|
127
|
+
'@type': 'Question',
|
|
128
|
+
'name': '机械表的正常每日走时误差是多少?',
|
|
129
|
+
'acceptedAnswer': {
|
|
130
|
+
'@type': 'Answer',
|
|
131
|
+
'text': '标准的机械表日差通常在 +/- 10 至 20 秒之间。获得 COSC 天文台认证的表款经过精密调校,日差控制在 -4 至 +6 秒/天以内,而高品质的石英机芯可以达到每日误差小于 +/- 0.5 秒。'
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
'@type': 'Question',
|
|
136
|
+
'name': '为什么手表的精度会因放置位置而改变?',
|
|
137
|
+
'acceptedAnswer': {
|
|
138
|
+
'@type': 'Answer',
|
|
139
|
+
'text': '当地表正面朝上、朝下、表冠朝上或朝下时,重力对摆轮和游丝的牵引力是不同的。这种方位差会导致手表摆幅 and 走时快慢产生细微的变化。'
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
'@context': 'https://schema.org',
|
|
146
|
+
'@type': 'HowTo',
|
|
147
|
+
'name': '如何手动测量手表精度',
|
|
148
|
+
'step': [
|
|
149
|
+
{
|
|
150
|
+
'@type': 'HowToStep',
|
|
151
|
+
'name': '记录初始状态',
|
|
152
|
+
'text': '将手表与可靠的原子钟同步,或记下当前的误差(秒)。'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
'@type': 'HowToStep',
|
|
156
|
+
'name': '佩戴或静置观察',
|
|
157
|
+
'text': '正常佩戴手表,或将其保持在单一位置至少 12 至 24 小时。'
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
'@type': 'HowToStep',
|
|
161
|
+
'name': '记录第二状态',
|
|
162
|
+
'text': '再次记录手表的误差。系统将自动计算每日的走时误差(秒/天)。'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../../types';
|
|
2
|
+
import { watchAccuracyTracker } from './entry';
|
|
3
|
+
export * from './entry';
|
|
4
|
+
export const WATCH_ACCURACY_TRACKER_TOOL: ToolDefinition = {
|
|
5
|
+
entry: watchAccuracyTracker,
|
|
6
|
+
Component: () => import('./component.astro'),
|
|
7
|
+
SEOComponent: () => import('./seo.astro'),
|
|
8
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
9
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
calculateIntervalRate,
|
|
3
|
+
calculateAverageRate,
|
|
4
|
+
getPrecisionStatus
|
|
5
|
+
} from './utils';
|
|
6
|
+
|
|
7
|
+
export interface LogEntry {
|
|
8
|
+
id: string;
|
|
9
|
+
offset: number;
|
|
10
|
+
date: string;
|
|
11
|
+
position?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const STORAGE_LOGS = 'jjlmoya_chrono_logs_';
|
|
15
|
+
|
|
16
|
+
export function getLogs(watchId: string): LogEntry[] {
|
|
17
|
+
const data = localStorage.getItem(STORAGE_LOGS + watchId);
|
|
18
|
+
return data ? JSON.parse(data) : [];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function saveLogs(watchId: string, logs: LogEntry[]) {
|
|
22
|
+
localStorage.setItem(STORAGE_LOGS + watchId, JSON.stringify(logs));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function buildLogRow(
|
|
26
|
+
current: LogEntry,
|
|
27
|
+
prev: LogEntry | null,
|
|
28
|
+
deleteCallback: (logId: string) => void
|
|
29
|
+
): HTMLTableRowElement {
|
|
30
|
+
const row = document.createElement('tr');
|
|
31
|
+
const dateStr = new Date(current.date).toLocaleString();
|
|
32
|
+
const badge = current.position ? `<span class="pos-badge">${current.position}</span>` : '';
|
|
33
|
+
const offsetStr = `${current.offset >= 0 ? '+' : ''}${current.offset}s ${badge}`;
|
|
34
|
+
let rateText = '--';
|
|
35
|
+
if (prev) {
|
|
36
|
+
const rate = calculateIntervalRate(current.offset, prev.offset, current.date, prev.date);
|
|
37
|
+
if (rate !== null) rateText = `${rate >= 0 ? '+' : ''}${rate.toFixed(1)} s/d`;
|
|
38
|
+
}
|
|
39
|
+
row.innerHTML = `
|
|
40
|
+
<td>${dateStr}</td>
|
|
41
|
+
<td>${offsetStr}</td>
|
|
42
|
+
<td>${rateText}</td>
|
|
43
|
+
<td><button type="button" class="btn btn-danger btn-sm delete-log-btn" data-log-id="${current.id}">Delete</button></td>
|
|
44
|
+
`;
|
|
45
|
+
row.querySelector('.delete-log-btn')?.addEventListener('click', () => deleteCallback(current.id));
|
|
46
|
+
return row;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function renderLogsTable(
|
|
50
|
+
logs: LogEntry[],
|
|
51
|
+
logsTbody: HTMLElement,
|
|
52
|
+
deleteCallback: (logId: string) => void
|
|
53
|
+
) {
|
|
54
|
+
logsTbody.innerHTML = '';
|
|
55
|
+
logs.forEach((current, i) => {
|
|
56
|
+
const prev = i > 0 ? logs[i - 1] : null;
|
|
57
|
+
const row = buildLogRow(current, prev, deleteCallback);
|
|
58
|
+
logsTbody.appendChild(row);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function updateOverallStats(
|
|
63
|
+
logs: LogEntry[],
|
|
64
|
+
avgRateVal: HTMLElement | null,
|
|
65
|
+
precisionStatusVal: HTMLElement | null,
|
|
66
|
+
ui: Record<string, string>
|
|
67
|
+
) {
|
|
68
|
+
if (!avgRateVal || !precisionStatusVal) return;
|
|
69
|
+
if (logs.length < 2) {
|
|
70
|
+
avgRateVal.textContent = '--';
|
|
71
|
+
precisionStatusVal.textContent = '--';
|
|
72
|
+
precisionStatusVal.className = 'stat-value';
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const first = logs[0];
|
|
76
|
+
const last = logs[logs.length - 1];
|
|
77
|
+
const avgRate = calculateAverageRate(first.offset, last.offset, first.date, last.date);
|
|
78
|
+
if (avgRate !== null) {
|
|
79
|
+
avgRateVal.textContent = `${avgRate >= 0 ? '+' : ''}${avgRate.toFixed(1)} s/d`;
|
|
80
|
+
const status = getPrecisionStatus(avgRate, ui);
|
|
81
|
+
precisionStatusVal.textContent = status.text;
|
|
82
|
+
precisionStatusVal.className = status.cssClass;
|
|
83
|
+
} else {
|
|
84
|
+
avgRateVal.textContent = '--';
|
|
85
|
+
precisionStatusVal.textContent = '--';
|
|
86
|
+
precisionStatusVal.className = 'stat-value';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function exportToCsv(watchId: string) {
|
|
91
|
+
const logs = getLogs(watchId).sort(
|
|
92
|
+
(a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()
|
|
93
|
+
);
|
|
94
|
+
if (logs.length === 0) return;
|
|
95
|
+
let csv = 'data:text/csv;charset=utf-8,Date,Offset(seconds),Position\n';
|
|
96
|
+
logs.forEach(log => {
|
|
97
|
+
csv += `${new Date(log.date).toISOString()},${log.offset},${log.position || 'None'}\n`;
|
|
98
|
+
});
|
|
99
|
+
const link = document.createElement('a');
|
|
100
|
+
link.setAttribute('href', encodeURI(csv));
|
|
101
|
+
link.setAttribute('download', `watch_logs_${watchId}.csv`);
|
|
102
|
+
document.body.appendChild(link);
|
|
103
|
+
link.click();
|
|
104
|
+
document.body.removeChild(link);
|
|
105
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { watchAccuracyTracker } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'en' } = Astro.props;
|
|
11
|
+
const loader = watchAccuracyTracker.i18n[locale] || watchAccuracyTracker.i18n.en;
|
|
12
|
+
const content = await loader?.();
|
|
13
|
+
if (!content) return null;
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|