@jjlmoya/utils-drones 1.15.0 → 1.16.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.
Files changed (93) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +1 -0
  5. package/src/pages/[locale]/[slug].astro +30 -14
  6. package/src/tests/locale_completeness.test.ts +4 -22
  7. package/src/tests/shared-test-helpers.ts +56 -0
  8. package/src/tests/tool_exports.test.ts +34 -0
  9. package/src/tests/tool_validation.test.ts +2 -2
  10. package/src/tool/antenna-length-calculator/bibliography.astro +3 -11
  11. package/src/tool/antenna-length-calculator/bibliography.ts +6 -0
  12. package/src/tool/antenna-length-calculator/i18n/de.ts +2 -8
  13. package/src/tool/antenna-length-calculator/i18n/en.ts +2 -8
  14. package/src/tool/antenna-length-calculator/i18n/es.ts +2 -8
  15. package/src/tool/antenna-length-calculator/i18n/fr.ts +2 -8
  16. package/src/tool/antenna-length-calculator/i18n/id.ts +2 -8
  17. package/src/tool/antenna-length-calculator/i18n/it.ts +2 -8
  18. package/src/tool/antenna-length-calculator/i18n/ja.ts +2 -8
  19. package/src/tool/antenna-length-calculator/i18n/ko.ts +2 -8
  20. package/src/tool/antenna-length-calculator/i18n/nl.ts +2 -8
  21. package/src/tool/antenna-length-calculator/i18n/pl.ts +2 -8
  22. package/src/tool/antenna-length-calculator/i18n/pt.ts +2 -8
  23. package/src/tool/antenna-length-calculator/i18n/ru.ts +2 -8
  24. package/src/tool/antenna-length-calculator/i18n/sv.ts +2 -8
  25. package/src/tool/antenna-length-calculator/i18n/tr.ts +2 -8
  26. package/src/tool/antenna-length-calculator/i18n/zh.ts +2 -8
  27. package/src/tool/antenna-length-calculator/seo.astro +2 -26
  28. package/src/tool/drone-flight-time/bibliography.astro +3 -11
  29. package/src/tool/drone-flight-time/bibliography.ts +7 -0
  30. package/src/tool/drone-flight-time/i18n/de.ts +2 -9
  31. package/src/tool/drone-flight-time/i18n/en.ts +2 -9
  32. package/src/tool/drone-flight-time/i18n/es.ts +2 -9
  33. package/src/tool/drone-flight-time/i18n/fr.ts +2 -9
  34. package/src/tool/drone-flight-time/i18n/id.ts +2 -9
  35. package/src/tool/drone-flight-time/i18n/it.ts +2 -9
  36. package/src/tool/drone-flight-time/i18n/ja.ts +2 -9
  37. package/src/tool/drone-flight-time/i18n/ko.ts +2 -9
  38. package/src/tool/drone-flight-time/i18n/nl.ts +2 -9
  39. package/src/tool/drone-flight-time/i18n/pl.ts +2 -9
  40. package/src/tool/drone-flight-time/i18n/pt.ts +2 -9
  41. package/src/tool/drone-flight-time/i18n/ru.ts +2 -9
  42. package/src/tool/drone-flight-time/i18n/sv.ts +2 -9
  43. package/src/tool/drone-flight-time/i18n/tr.ts +2 -9
  44. package/src/tool/drone-flight-time/i18n/zh.ts +2 -9
  45. package/src/tool/drone-flight-time/seo.astro +2 -18
  46. package/src/tool/drone-power-analyzer/bibliography.astro +6 -0
  47. package/src/tool/drone-power-analyzer/bibliography.ts +7 -0
  48. package/src/tool/drone-power-analyzer/component.astro +210 -0
  49. package/src/tool/drone-power-analyzer/components/FlightProfile.astro +37 -0
  50. package/src/tool/drone-power-analyzer/components/MotorConfig.astro +46 -0
  51. package/src/tool/drone-power-analyzer/components/PowerGauge.astro +48 -0
  52. package/src/tool/drone-power-analyzer/components/WeightConfig.astro +49 -0
  53. package/src/tool/drone-power-analyzer/drone-power-analyzer.css +535 -0
  54. package/src/tool/drone-power-analyzer/entry.ts +29 -0
  55. package/src/tool/drone-power-analyzer/i18n/de.ts +203 -0
  56. package/src/tool/drone-power-analyzer/i18n/en.ts +203 -0
  57. package/src/tool/drone-power-analyzer/i18n/es.ts +203 -0
  58. package/src/tool/drone-power-analyzer/i18n/fr.ts +203 -0
  59. package/src/tool/drone-power-analyzer/i18n/id.ts +203 -0
  60. package/src/tool/drone-power-analyzer/i18n/it.ts +203 -0
  61. package/src/tool/drone-power-analyzer/i18n/ja.ts +203 -0
  62. package/src/tool/drone-power-analyzer/i18n/ko.ts +203 -0
  63. package/src/tool/drone-power-analyzer/i18n/nl.ts +203 -0
  64. package/src/tool/drone-power-analyzer/i18n/pl.ts +203 -0
  65. package/src/tool/drone-power-analyzer/i18n/pt.ts +203 -0
  66. package/src/tool/drone-power-analyzer/i18n/ru.ts +203 -0
  67. package/src/tool/drone-power-analyzer/i18n/sv.ts +203 -0
  68. package/src/tool/drone-power-analyzer/i18n/tr.ts +203 -0
  69. package/src/tool/drone-power-analyzer/i18n/zh.ts +203 -0
  70. package/src/tool/drone-power-analyzer/index.ts +8 -0
  71. package/src/tool/drone-power-analyzer/seo.astro +15 -0
  72. package/src/tool/gps-coordinates-converter/bibliography.astro +3 -11
  73. package/src/tool/gps-coordinates-converter/bibliography.ts +12 -0
  74. package/src/tool/gps-coordinates-converter/components/GpsMap.astro +3 -2
  75. package/src/tool/gps-coordinates-converter/gps-coordinates-converter.css +197 -119
  76. package/src/tool/gps-coordinates-converter/i18n/de.ts +35 -36
  77. package/src/tool/gps-coordinates-converter/i18n/en.ts +4 -14
  78. package/src/tool/gps-coordinates-converter/i18n/es.ts +4 -14
  79. package/src/tool/gps-coordinates-converter/i18n/fr.ts +4 -14
  80. package/src/tool/gps-coordinates-converter/i18n/id.ts +36 -37
  81. package/src/tool/gps-coordinates-converter/i18n/it.ts +35 -36
  82. package/src/tool/gps-coordinates-converter/i18n/ja.ts +19 -20
  83. package/src/tool/gps-coordinates-converter/i18n/ko.ts +20 -21
  84. package/src/tool/gps-coordinates-converter/i18n/nl.ts +33 -36
  85. package/src/tool/gps-coordinates-converter/i18n/pl.ts +19 -20
  86. package/src/tool/gps-coordinates-converter/i18n/pt.ts +19 -20
  87. package/src/tool/gps-coordinates-converter/i18n/ru.ts +19 -20
  88. package/src/tool/gps-coordinates-converter/i18n/sv.ts +19 -20
  89. package/src/tool/gps-coordinates-converter/i18n/tr.ts +19 -20
  90. package/src/tool/gps-coordinates-converter/i18n/zh.ts +20 -21
  91. package/src/tool/gps-coordinates-converter/seo.astro +2 -26
  92. package/src/tools.ts +3 -0
  93. package/src/types.ts +1 -3
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'konwerter-wspolrzednych-gps';
5
6
  const title = 'Konwerter Wspolrzednych GPS Nawigacji po Punktach Trasy';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Często Zadawane Pytania',
86
- bibliographyTitle: 'Materiały Źródłowe',
87
86
  ui: {
88
- faqTitle: 'Często Zadawane Pytania',
89
- bibliographyTitle: 'Materiały Źródłowe',
90
- latitude: 'Szerokość Geograficzna',
91
- longitude: 'Długość Geograficzna',
92
- decimalDegrees: 'Stopnie Dziesiętne (DD)',
93
- degreesMinutesSeconds: 'Stopnie, Minuty, Sekundy (DMS)',
94
- gpsHardware: 'Sprzętowy Format GPS (Surowy)',
87
+ decimalDD: 'Dziesiętne (DD)',
88
+ degreesGMS: 'Stopnie (DMS)',
89
+ useLocation: 'Użyj mojej lokalizacji',
90
+ lat: 'Szerokość',
91
+ lng: 'Długość',
92
+ latGMS: 'Szerokość (DMS)',
93
+ lngGMS: 'Długość (DMS)',
94
+ gmsTraditional: 'Tradycyjne DMS',
95
+ nauticalDM: 'Stopnie & dzies. min. (Nautyczne)',
96
+ googleMapsFormat: 'Format Google Maps',
97
+ mapVisualization: 'Wizualizacja na Mapie',
98
+ mapHint: 'Kliknij na mapę, aby bezpośrednio pobrać współrzędne.',
95
99
  copy: 'Kopiuj',
96
100
  copied: 'Skopiowano!',
97
- invalidCoordinate: 'Nieprawidłowa Współrzędna',
98
- pasteHardwareMapFormat: 'Wklej surowe dane sprzętowe (np. 404306300, -739981800)',
99
- validation: {
100
- latRange: 'Szerokość geograficzna musi mieścić się w przedziale od -90 do 90.',
101
- lonRange: 'Długość geograficzna musi mieścić się w przedziale od -180 do 180.',
102
- invalidFormat: 'Format nierozpoznany. Sprawdź, czy wprowadzono poprawne dane.',
103
- },
101
+ recentHistory: 'Ostatnia Historia',
102
+ clear: 'Wyczyść',
103
+ noHistory: 'Brak ostatnich konwersji.',
104
+ load: 'Wczytaj',
105
+ delete: 'Usuń',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: 'Ardupilot – Oficjalny przewodnik Dokumentujący o Integracjach Lotu Autonomousnych .', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: 'Encyklopedyczne objaśnienie notatek wymiaru Współrzędnej u Wikipedia o formie DD', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: 'Rzetelnie zweryfikuj posiadany Format jako Źródło',
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'conversor-de-coordenadas-gps';
5
6
  const title = 'Conversor de Coordenadas GPS para Navegacao em Waypoints';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Perguntas Frequentes',
86
- bibliographyTitle: 'Referências Bibliográficas',
87
86
  ui: {
88
- faqTitle: 'Perguntas Frequentes',
89
- bibliographyTitle: 'Referências Bibliográficas',
90
- latitude: 'Latitude',
91
- longitude: 'Longitude',
92
- decimalDegrees: 'Graus Decimais (DD)',
93
- degreesMinutesSeconds: 'Graus, Minutos, Segundos (DMS)',
94
- gpsHardware: 'Formato de Hardware GPS (Bruto)',
87
+ decimalDD: 'Decimal (DD)',
88
+ degreesGMS: 'Graus (DMS)',
89
+ useLocation: 'Usar minha localização',
90
+ lat: 'Latitude',
91
+ lng: 'Longitude',
92
+ latGMS: 'Latitude (DMS)',
93
+ lngGMS: 'Longitude (DMS)',
94
+ gmsTraditional: 'DMS Tradicional',
95
+ nauticalDM: 'Graus & Min. Dec. (Náutico)',
96
+ googleMapsFormat: 'Formato Google Maps',
97
+ mapVisualization: 'Visualização no Mapa',
98
+ mapHint: 'Clique no mapa para capturar as coordenadas diretamente.',
95
99
  copy: 'Copiar',
96
100
  copied: 'Copiado!',
97
- invalidCoordinate: 'Coordenada Inválida',
98
- pasteHardwareMapFormat: 'Cole dados brutos (ex: 404306300, -739981800)',
99
- validation: {
100
- latRange: 'A latitude deve estar entre -90 e 90.',
101
- lonRange: 'A longitude deve estar entre -180 e 180.',
102
- invalidFormat: 'Formato não reconhecido. Por favor, verifique a sua entrada.',
103
- },
101
+ recentHistory: 'Histórico Recente',
102
+ clear: 'Limpar',
103
+ noHistory: 'Nenhuma conversão recente.',
104
+ load: 'Carregar',
105
+ delete: 'Excluir',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: 'O Portal Do Mundo Autómato Ardupilot nas referências a Manuseamento E Informações .', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: 'Documento Completo De Natureza Histórica E Cientifica Na wikipedia ( DD / Conversões E Graus Base Terra )', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: 'Observe Os seus dados e descubra a classe da Linguagem .',
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'konverter-gps-koordinat';
5
6
  const title = 'Конвертер GPS координат для путевых точек Ardupilot и INAV';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Часто задаваемые вопросы',
86
- bibliographyTitle: 'Библиографические ссылки',
87
86
  ui: {
88
- faqTitle: 'Часто задаваемые вопросы',
89
- bibliographyTitle: 'Библиографические ссылки',
90
- latitude: 'Широта',
91
- longitude: 'Долгота',
92
- decimalDegrees: 'Десятичные градусы (DD)',
93
- degreesMinutesSeconds: 'Градусы, Минуты, Секунды (DMS)',
94
- gpsHardware: 'Аппаратный формат GPS (Raw)',
87
+ decimalDD: 'Десятичный (DD)',
88
+ degreesGMS: 'Градусы (DMS)',
89
+ useLocation: 'Использовать мое местоположение',
90
+ lat: 'Широта',
91
+ lng: 'Долгота',
92
+ latGMS: 'Широта (DMS)',
93
+ lngGMS: 'Долгота (DMS)',
94
+ gmsTraditional: 'Традиционный DMS',
95
+ nauticalDM: 'Градусы и дес. минуты (Морской)',
96
+ googleMapsFormat: 'Формат Google Maps',
97
+ mapVisualization: 'Визуализация на карте',
98
+ mapHint: 'Нажмите на карту, чтобы получить координаты напрямую.',
95
99
  copy: 'Копировать',
96
100
  copied: 'Скопировано!',
97
- invalidCoordinate: 'Неверные координаты',
98
- pasteHardwareMapFormat: 'Вставьте исходные данные (например, 404306300, -739981800)',
99
- validation: {
100
- latRange: 'Широта должна быть в пределах от -90 до 90.',
101
- lonRange: 'Долгота должна быть в пределах от -180 до 180.',
102
- invalidFormat: 'Формат не распознан. Пожалуйста, проверьте ввод.',
103
- },
101
+ recentHistory: 'Недавняя история',
102
+ clear: 'Очистить',
103
+ noHistory: 'Нет недавних преобразований.',
104
+ load: 'Загрузить',
105
+ delete: 'Удалить',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: 'Интеграция GPS в ArduPilot', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: 'Десятичные градусы (Википедия)', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: 'Определите текущий формат',
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'gps-koordinat-omvandlare';
5
6
  const title = 'GPS Koordinat Omvandlare for ArduPilot och INAV Waypoints';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Vanliga Frågor',
86
- bibliographyTitle: 'Referenser',
87
86
  ui: {
88
- faqTitle: 'Vanliga Frågor',
89
- bibliographyTitle: 'Referenser',
90
- latitude: 'Latitud',
91
- longitude: 'Longitud',
92
- decimalDegrees: 'Decimalgrader (DD)',
93
- degreesMinutesSeconds: 'Grader, Minuter, Sekunder (DMS)',
94
- gpsHardware: 'GPS-hårdvaruformat (Raw)',
87
+ decimalDD: 'Decimal (DD)',
88
+ degreesGMS: 'Grader (DMS)',
89
+ useLocation: 'Använd min plats',
90
+ lat: 'Latitud',
91
+ lng: 'Longitud',
92
+ latGMS: 'Latitud (DMS)',
93
+ lngGMS: 'Longitud (DMS)',
94
+ gmsTraditional: 'Traditionell DMS',
95
+ nauticalDM: 'Grader & Min. (Nautisk)',
96
+ googleMapsFormat: 'Google Maps Format',
97
+ mapVisualization: 'Kartvisualisering',
98
+ mapHint: 'Klicka på kartan för att hämta koordinater direkt.',
95
99
  copy: 'Kopiera',
96
100
  copied: 'Kopierad!',
97
- invalidCoordinate: 'Ogiltig koordinat',
98
- pasteHardwareMapFormat: 'Klistra in raw hårdvarudata (t.ex. 404306300, -739981800)',
99
- validation: {
100
- latRange: 'Latitud måste vara mellan -90 och 90.',
101
- lonRange: 'Longitud måste vara mellan -180 och 180.',
102
- invalidFormat: 'Formatet känns inte igen. Kontrollera din inmatning.',
103
- },
101
+ recentHistory: 'Senaste historik',
102
+ clear: 'Rensa',
103
+ noHistory: 'Inga senaste konverteringar.',
104
+ load: 'Ladda',
105
+ delete: 'Ta bort',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: 'ArduPilot Officiell GPS handbok.', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: 'Förstå decimala värden. DD wikipedia.', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: 'Börja Med Att Bestämma Indata Formatet.',
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'gps-koordinat-donusturucu';
5
6
  const title = 'ArduPilot ve INAV Icin GPS Koordinat Donusturucu';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Sıkça Sorulan Sorular',
86
- bibliographyTitle: 'Referans Kılavuzları',
87
86
  ui: {
88
- faqTitle: 'Sıkça Sorulan Sorular',
89
- bibliographyTitle: 'Referans Kılavuzları',
90
- latitude: 'Enlem',
91
- longitude: 'Boylam',
92
- decimalDegrees: 'Ondalık Derece (DD)',
93
- degreesMinutesSeconds: 'Derece, Dakika, Saniye (DMS)',
94
- gpsHardware: 'GPS Donanım Formatı (Raw)',
87
+ decimalDD: 'Ondalık (DD)',
88
+ degreesGMS: 'Derece (DMS)',
89
+ useLocation: 'Konumumu Kullan',
90
+ lat: 'Enlem',
91
+ lng: 'Boylam',
92
+ latGMS: 'Enlem (DMS)',
93
+ lngGMS: 'Boylam (DMS)',
94
+ gmsTraditional: 'Geleneksel DMS',
95
+ nauticalDM: 'Derece & Ond. Dak. (Denizcilik)',
96
+ googleMapsFormat: 'Google Haritalar Formatı',
97
+ mapVisualization: 'Harita Görselleştirme',
98
+ mapHint: 'Koordinatları doğrudan yakalamak için haritaya tıklayın.',
95
99
  copy: 'Kopyala',
96
100
  copied: 'Kopyalandı!',
97
- invalidCoordinate: 'Geçersiz Koordinat',
98
- pasteHardwareMapFormat: 'Ham (raw) donanım verisini yapıştırın (örn. 404306300, -739981800)',
99
- validation: {
100
- latRange: 'Enlem -90 ile 90 arasında olmalıdır.',
101
- lonRange: 'Boylam -180 ile 180 arasında olmalıdır.',
102
- invalidFormat: 'Format tanınamadı. Lütfen girişinizi kontrol edin.',
103
- },
101
+ recentHistory: 'Son Geçmiş',
102
+ clear: 'Temizle',
103
+ noHistory: 'Yakın zamanda dönüşüm yok.',
104
+ load: 'Yükle',
105
+ delete: 'Sil',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: 'ArduPilot GPS Entagrasyon Belgesi', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: 'Ondalık Yüzdeler (Decimal Degrees) ve Dönüşüm (Wikipedia)', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: 'Formatı Tanımlayın',
@@ -1,5 +1,6 @@
1
1
  import type { GpsCoordinatesConverterLocaleContent } from '../index';
2
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
3
+ import { bibliography } from '../bibliography';
3
4
 
4
5
  const slug = 'gps-coordinates-converter';
5
6
  const title = 'Ardupilot及INAV航点模式用GPS坐标转换器';
@@ -82,25 +83,26 @@ export const content: GpsCoordinatesConverterLocaleContent = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: '常见问题解答',
86
- bibliographyTitle: '参考文献与指南',
87
86
  ui: {
88
- faqTitle: '常见问题解答',
89
- bibliographyTitle: '参考文献与指南',
90
- latitude: '纬度',
91
- longitude: '经度',
92
- decimalDegrees: '十进制度 (DD / Decimal Degrees)',
93
- degreesMinutesSeconds: '度-分-秒 (DMS / Degrees Minutes Seconds)',
94
- gpsHardware: 'GPS固件硬件格式 (Raw Integer)',
87
+ decimalDD: '十进制 (DD)',
88
+ degreesGMS: '度分秒 (DMS)',
89
+ useLocation: '使用我的位置',
90
+ lat: '纬度',
91
+ lng: '经度',
92
+ latGMS: '纬度 (DMS)',
93
+ lngGMS: '经度 (DMS)',
94
+ gmsTraditional: '传统度分秒',
95
+ nauticalDM: '度 & 分 (航海)',
96
+ googleMapsFormat: 'Google 地图格式',
97
+ mapVisualization: '地图可视化',
98
+ mapHint: '点击地图直接捕捉坐标。',
95
99
  copy: '复制',
96
- copied: '已复制!',
97
- invalidCoordinate: '无效坐标 (Invalid Coordinate)',
98
- pasteHardwareMapFormat: '粘贴原始硬编码数据 (例如: 404306300, -739981800)',
99
- validation: {
100
- latRange: '纬度值必须介于 -90 到 90 之间。',
101
- lonRange: '经度值必须介于 -180 到 180 之间。',
102
- invalidFormat: '输入格式无法识别。请仔细检查您的输入。',
103
- },
100
+ copied: '已复制!',
101
+ recentHistory: '最近历史',
102
+ clear: '清除',
103
+ noHistory: '没有最近的转换。',
104
+ load: '加载',
105
+ delete: '删除',
104
106
  },
105
107
  seo: [
106
108
  {
@@ -196,10 +198,7 @@ export const content: GpsCoordinatesConverterLocaleContent = {
196
198
  },
197
199
  ],
198
200
  faq: faqItems,
199
- bibliography: [
200
- { name: '官方权威基石:ArduPilot 全体系与定位模组的基础构筑知识库及导入准则。', url: 'https://ardupilot.org/copter/docs/common-positioning-landing-page.html' },
201
- { name: '知识宝库扩充: 十进制算法 与 经纬制图(维基百科源学术资料)。', url: 'https://en.wikipedia.org/wiki/Decimal_degrees' },
202
- ],
201
+ bibliography,
203
202
  howTo: [
204
203
  {
205
204
  name: '甄别与判定手上信息的归路归属',
@@ -1,5 +1,5 @@
1
1
  ---
2
- import { SEOArticle, SEOTitle, SEOList, SEOTable } from '@jjlmoya/utils-shared';
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
3
  import { gpsCoordinatesConverter } from './index';
4
4
  import type { KnownLocale } from '../../types';
5
5
 
@@ -12,28 +12,4 @@ const content = await gpsCoordinatesConverter.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- <SEOArticle>
16
- {content.seo.map((section: any) => {
17
- if (section.type === 'title') {
18
- return <SEOTitle title={section.text} level={section.level || 2} />;
19
- }
20
- if (section.type === 'paragraph') {
21
- return <p set:html={section.html} />;
22
- }
23
- if (section.type === 'list') {
24
- return <SEOList items={section.items} />;
25
- }
26
- if (section.type === 'table') {
27
- return (
28
- <SEOTable headers={section.headers}>
29
- {section.rows.map((row: string[]) => (
30
- <tr>
31
- {row.map((cell: string) => <td set:html={cell} />)}
32
- </tr>
33
- ))}
34
- </SEOTable>
35
- );
36
- }
37
- return null;
38
- })}
39
- </SEOArticle>
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
package/src/tools.ts CHANGED
@@ -2,17 +2,20 @@ export { ALL_ENTRIES } from './entries';
2
2
  import { DRONE_FLIGHT_TIME_TOOL } from './tool/drone-flight-time/index';
3
3
  import { ANTENNA_LENGTH_CALCULATOR_TOOL } from './tool/antenna-length-calculator/index';
4
4
  import { GPS_COORDINATES_CONVERTER_TOOL } from './tool/gps-coordinates-converter/index';
5
+ import { DRONE_POWER_ANALYZER_TOOL } from './tool/drone-power-analyzer/index';
5
6
  import type { ToolDefinition } from './types';
6
7
 
7
8
  export const ALL_TOOLS: ToolDefinition[] = [
8
9
  DRONE_FLIGHT_TIME_TOOL,
9
10
  ANTENNA_LENGTH_CALCULATOR_TOOL,
10
11
  GPS_COORDINATES_CONVERTER_TOOL,
12
+ DRONE_POWER_ANALYZER_TOOL,
11
13
  ];
12
14
 
13
15
  export {
14
16
  DRONE_FLIGHT_TIME_TOOL,
15
17
  ANTENNA_LENGTH_CALCULATOR_TOOL,
16
18
  GPS_COORDINATES_CONVERTER_TOOL,
19
+ DRONE_POWER_ANALYZER_TOOL,
17
20
  };
18
21
 
package/src/types.ts CHANGED
@@ -5,7 +5,7 @@ export type { SEOSection };
5
5
 
6
6
  export type KnownLocale =
7
7
  | 'ar' | 'da' | 'de' | 'en' | 'es' | 'fi'
8
- | 'fr' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
8
+ | 'fr' | 'id' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
9
9
  | 'pl' | 'pt' | 'ru' | 'sv' | 'tr' | 'zh';
10
10
 
11
11
  export interface FAQItem {
@@ -29,9 +29,7 @@ export interface ToolLocaleContent<TUI extends Record<string, string> = Record<s
29
29
  description: string;
30
30
  ui: TUI;
31
31
  seo: SEOSection[];
32
- faqTitle?: string;
33
32
  faq: FAQItem[];
34
- bibliographyTitle?: string;
35
33
  bibliography: BibliographyEntry[];
36
34
  howTo: HowToStep[];
37
35
  schemas: WithContext<Thing>[];