@jjlmoya/utils-audiovisual 1.6.0 → 1.8.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 (175) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/fr.ts +1 -1
  4. package/src/category/i18n/id.ts +198 -0
  5. package/src/category/i18n/it.ts +198 -0
  6. package/src/category/i18n/ja.ts +198 -0
  7. package/src/category/i18n/ko.ts +198 -0
  8. package/src/category/i18n/nl.ts +198 -0
  9. package/src/category/i18n/pl.ts +198 -0
  10. package/src/category/i18n/pt.ts +198 -0
  11. package/src/category/i18n/ru.ts +198 -0
  12. package/src/category/i18n/sv.ts +198 -0
  13. package/src/category/i18n/tr.ts +198 -0
  14. package/src/category/i18n/zh.ts +198 -0
  15. package/src/category/index.ts +31 -3
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/schemas_fulfillment.test.ts +23 -0
  18. package/src/tests/title_quality.test.ts +55 -0
  19. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/en.ts +1 -1
  21. package/src/tool/chromaticLens/i18n/es.ts +1 -1
  22. package/src/tool/chromaticLens/i18n/fr.ts +1 -1
  23. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  29. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  30. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  31. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  32. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  33. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  34. package/src/tool/chromaticLens/index.ts +15 -7
  35. package/src/tool/collageMaker/i18n/de.ts +233 -0
  36. package/src/tool/collageMaker/i18n/en.ts +1 -1
  37. package/src/tool/collageMaker/i18n/es.ts +1 -1
  38. package/src/tool/collageMaker/i18n/fr.ts +1 -1
  39. package/src/tool/collageMaker/i18n/id.ts +233 -0
  40. package/src/tool/collageMaker/i18n/it.ts +233 -0
  41. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  42. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  43. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  44. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  45. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  46. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  47. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  48. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  49. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  50. package/src/tool/collageMaker/index.ts +15 -6
  51. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/en.ts +2 -2
  53. package/src/tool/exifCleaner/i18n/es.ts +2 -2
  54. package/src/tool/exifCleaner/i18n/fr.ts +4 -4
  55. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  56. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  57. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  58. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  59. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  60. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  61. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  62. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  63. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  64. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  65. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  66. package/src/tool/exifCleaner/index.ts +16 -8
  67. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/en.ts +2 -2
  69. package/src/tool/imageCompressor/i18n/es.ts +2 -2
  70. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  71. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  72. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  73. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  74. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  75. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  76. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  77. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  78. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  79. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  80. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  81. package/src/tool/imageCompressor/index.ts +15 -7
  82. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
  84. package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
  85. package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
  86. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  87. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  88. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  89. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  90. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  91. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  92. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  93. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  94. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  95. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  96. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  97. package/src/tool/printQualityCalculator/index.ts +15 -7
  98. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  99. package/src/tool/privacyBlur/i18n/en.ts +1 -1
  100. package/src/tool/privacyBlur/i18n/es.ts +1 -1
  101. package/src/tool/privacyBlur/i18n/fr.ts +1 -1
  102. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  103. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  104. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  105. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  106. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  107. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  108. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  109. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  110. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  111. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  112. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  113. package/src/tool/privacyBlur/index.ts +15 -7
  114. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  115. package/src/tool/subtitleSync/i18n/en.ts +1 -1
  116. package/src/tool/subtitleSync/i18n/es.ts +1 -1
  117. package/src/tool/subtitleSync/i18n/fr.ts +8 -8
  118. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  119. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  120. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  121. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  122. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  123. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  124. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  125. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  126. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  127. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  128. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  129. package/src/tool/subtitleSync/index.ts +15 -7
  130. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  131. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  132. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  133. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  134. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  135. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  136. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  137. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  138. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  139. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  140. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  141. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  142. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  143. package/src/tool/timelapseCalculator/index.ts +16 -8
  144. package/src/tool/tvDistance/i18n/de.ts +223 -0
  145. package/src/tool/tvDistance/i18n/en.ts +1 -1
  146. package/src/tool/tvDistance/i18n/es.ts +1 -1
  147. package/src/tool/tvDistance/i18n/fr.ts +1 -1
  148. package/src/tool/tvDistance/i18n/id.ts +223 -0
  149. package/src/tool/tvDistance/i18n/it.ts +223 -0
  150. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  151. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  152. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  153. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  154. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  155. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  156. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  157. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  158. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  159. package/src/tool/tvDistance/index.ts +15 -7
  160. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  161. package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
  162. package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
  163. package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
  164. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  165. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  166. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  167. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  168. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  169. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  170. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  171. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  172. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  173. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  174. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  175. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,223 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
3
+
4
+ const slug = 'tv-izleme-mesafesi-hesaplama-thx-4k-ideal-ekran';
5
+ const title = 'TV Mesafesi Hesaplayıcı: THX ve 4K İdeal Ekran';
6
+ const description = 'Boyutuna ve çözünürlüğüne göre televizyon izlemek için ideal mesafeyi hesaplayın. Home Cinema deneyiminizi THX ve SMPTE standartlarıyla optimize edin.';
7
+
8
+ const ui: TvDistanceUI = {
9
+ specTitle: "Teknik Özellikler",
10
+ diagonalLabel: "Diyagonal Boyut",
11
+ resolutionLabel: "Çözünürlük",
12
+ thxRecommendation: "THX Önerisi",
13
+ thxDescription: "THX, sürükleyici bir sinematik deneyim için 40 derecelik bir izleme açısını kapsayan bir mesafe önerir.",
14
+ simulationBadge: "Gerçek Zamanlı Simülasyon",
15
+ tvWidthLabel: "cm genişlik",
16
+ userLocationLabel: "Konumunuz",
17
+ minLimitLabel: "Minimum Sınır",
18
+ optimalLimitLabel: "İdeal Mesafe",
19
+ maxLimitLabel: "Maksimum Sınır",
20
+ unitMeters: "m",
21
+ unitCm: "cm"
22
+ };
23
+
24
+ const faq: TvDistanceLocaleContent['faq'] = [
25
+ {
26
+ question: "Mesafe hesaplarken çözünürlük neden önemlidir?",
27
+ answer: "Daha yüksek çözünürlüklerde (4K veya 8K gibi), pikseller daha küçüktür. Bu, piksel ızgarasını fark etmeden ekrana daha yakın oturmanıza olanak tanıyarak sürükleyiciliği artırır.",
28
+ },
29
+ {
30
+ question: "40 derecelik izleme açısı nedir?",
31
+ answer: "Ekranın, profesyonel bir sinema salonu deneyimine benzer şekilde, çevresel görüşünüzün büyük bir kısmını kaplaması için THX tarafından önerilen standarttır.",
32
+ },
33
+ {
34
+ question: "Önerilenden daha uzakta oturabilir miyim?",
35
+ answer: "Evet, ancak yüksek çözünürlüğün avantajını kaybedersiniz. 4K bir TV'den çok uzakta oturursanız, gözünüz ekstra ayrıntıları ayırt edemez ve içeriği 1080p'ymiş gibi görürsünüz.",
36
+ },
37
+ ];
38
+
39
+ const howTo: TvDistanceLocaleContent['howTo'] = [
40
+ {
41
+ name: "İnç değerini belirtin",
42
+ text: "Mevcut televizyonunuzun veya satın almayı planladığınız televizyonun boyutunu seçmek için kaydırıcıyı hareket ettirin.",
43
+ },
44
+ {
45
+ name: "Çözünürlük seçin",
46
+ text: "Görsel keskinlik sınırlarını ayarlamak için 1080p, 4K veya 8K arasından seçim yapın.",
47
+ },
48
+ {
49
+ name: "Simülasyonu görüntüleyin",
50
+ text: "Diyagramda sizinle ekran arasındaki boyut ilişkisinin nasıl değiştiğini gözlemleyin.",
51
+ },
52
+ {
53
+ name: "Kanepenizi ayarlayın",
54
+ text: "Sinematik sürükleyiciliği en üst düzeye çıkarmak için koltuğunuzu 'İdeal Mesafe' aralığına yerleştirin.",
55
+ },
56
+ ];
57
+
58
+ const bibliography: TvDistanceLocaleContent['bibliography'] = [
59
+ {
60
+ name: "THX - HDTV Set Up Guide",
61
+ url: "https://www.thx.com/questions/what-is-the-best-viewing-distance-for-my-tv/",
62
+ },
63
+ {
64
+ name: "SMPTE - Standards Documentation",
65
+ url: "https://www.smpte.org/",
66
+ },
67
+ ];
68
+
69
+ const seo: TvDistanceLocaleContent['seo'] = [
70
+ {
71
+ type: 'summary',
72
+ title: 'Çözünürlük ve Boyuta Göre İdeal TV Mesafesi',
73
+ items: [
74
+ 'Sürükleyici sinematik deneyim için THX standartları (40°)',
75
+ '1080p, 4K ve 8K için maksimum hassasiyette hesaplamalar',
76
+ 'Kurulumunuzun gerçek zamanlı görsel simülasyonu',
77
+ 'Göz yorgunluğunu önleyin ve içerik sürükleyiciliğini artırın'
78
+ ]
79
+ },
80
+ { type: 'title', text: 'Sürükleyicilik Bilimi: İdeal TV Mesafesi', level: 2 },
81
+ { type: 'paragraph', html: 'Bu sadece konforla ilgili değil, insan görsel fizyolojisi ile ilgilidir. Gözün bir çözünürlük keskinliği sınırı vardır; 4K bir ekrandan çok uzakta oturursanız, görüşünüzün kullanamayacağı pikseller için para harcamış olursunuz. Çok yakın oturmak ise göz yorgunluğuna neden olur.' },
82
+
83
+ { type: 'stats', items: [
84
+ { value: '40°', label: 'İdeal THX Açısı', icon: 'mdi:eye' },
85
+ { value: '100%', label: 'Kullanılan Pikseller', icon: 'mdi:video-high-definition' },
86
+ { value: 'Sıfır', label: 'Görsel Yorgunluk', icon: 'mdi:heart-pulse' }
87
+ ], columns: 3 },
88
+
89
+ { type: 'title', text: 'İki Profesyonel Standart: THX vs SMPTE', level: 3 },
90
+ { type: 'paragraph', html: 'Audiovisual endüstrisinde izleme deneyiminizi nasıl optimize edeceğinizi belirleyen iki ana otorite vardır:' },
91
+ { type: 'comparative', items: [
92
+ {
93
+ title: 'THX Standardı',
94
+ description: '40° izleme açısı - Daha sürükleyici',
95
+ icon: 'mdi:filmstrip',
96
+ points: [
97
+ 'Ekran çevresel görüşünüzün daha fazlasını kaplar',
98
+ 'Sürükleyici sinematik deneyim',
99
+ 'Aksiyon filmleri ve canlı sporlar için ideal',
100
+ 'Daha fazla oda alanı gerektirir'
101
+ ],
102
+ highlight: true
103
+ },
104
+ {
105
+ title: 'SMPTE Standardı',
106
+ description: '30° izleme açısı - Daha rahat',
107
+ icon: 'mdi:television',
108
+ points: [
109
+ 'Daha konforlu oturma mesafesi',
110
+ 'Muhafazakar profesyonel öneri',
111
+ 'Çeşitli içerikler için ideal (haberler, diziler)',
112
+ 'Daha küçük odalar için daha uygun'
113
+ ]
114
+ }
115
+ ], columns: 2 },
116
+
117
+ { type: 'title', text: 'Çözünürlük Denklemi Nasıl Değiştirir', level: 3 },
118
+ { type: 'table', headers: ['Çözünürlük', '55" TV Boyutu', 'Minimum Mesafe (piksel görünmez)', 'İdeal THX Mesafesi'], rows: [
119
+ ['1080p (Full HD)', '55 inç', '2.0 m', '2.3 m'],
120
+ ['4K (Ultra HD)', '55 inç', '1.2 m', '1.5 m'],
121
+ ['8K', '55 inç', '0.8 m', '1.0 m']
122
+ ] },
123
+
124
+ { type: 'paragraph', html: 'Gördüğünüz gibi, daha yüksek çözünürlük piksel yapısını fark etmeden daha yakın oturmaya izin verir. 4K bir TV 1.2 metreden izlenebilir; 1080p için en az 2 metre gereklidir.' },
125
+
126
+ { type: 'card', title: 'İnsan Görsel Keskinlik Sınırı', html: 'İnsan gözünün bir çözünürlük sınırı kapasitesi vardır. Belirli bir mesafenin ötesinde, ekran 8K olsa bile daha fazla ayrıntıyı ayırt edemezsiniz. Hesaplamalarımız sizi piksellerin %100\'ünü kullandığınız "ideal bölgeye" yerleştirir.' },
127
+
128
+ { type: 'diagnostic', variant: 'info', title: 'Göz Yorgunluğu ve Mesafe', icon: 'mdi:information', badge: 'Görsel Sağlık', html: 'Çok yakın olmak yorgunluğa neden olur çünkü gözlerinizin sürekli uç açılara uyum sağlaması gerekir. Çok uzak olmak ayrıntıları ayırt etmek için zorlanmaya neden olur. Hesaplayıcımız sizi "tatlı noktaya" (THX için 40°) yerleştirir.' },
129
+
130
+ { type: 'proscons', items: [
131
+ {
132
+ pro: 'THX 40° gerçek sinematik sürükleyicilik yaratır - profesyonel bir sinema salonu gibi',
133
+ con: 'Oda içinde daha fazla kullanılabilir alan gerektirir'
134
+ },
135
+ {
136
+ pro: '4K, 1080p\'den daha yakın oturmaya izin verir - dar alanlarda kullanışlıdır',
137
+ con: 'Ekstra piksellerden yararlanmak için minimum mesafede olmalısınız'
138
+ },
139
+ {
140
+ pro: 'En baştan doğru konumlanarak göz yorgunluğunu önleyin',
141
+ con: 'Çoğu ev odası bu standartları TAKİP ETMEZ'
142
+ },
143
+ {
144
+ pro: 'Mevcut TV\'nizin iyi konumlandırılıp konumlandırılmadığını doğrulayabilirsiniz',
145
+ con: 'Yanlışsa mobilyaların hareket ettirilmesini gerektirir'
146
+ }
147
+ ], proTitle: 'Avantajlar', conTitle: 'Sınırlamalar' },
148
+
149
+ { type: 'glossary', items: [
150
+ {
151
+ term: 'İzleme Açısı (derece cinsinden)',
152
+ definition: 'Ekranın konumunuzdan kapladığı görüş açısı. 40° = çok sürükleyici; 20° = arka plan içeriği (sürükleyici değil).'
153
+ },
154
+ {
155
+ term: 'THX (Tomlinson Holman Experiment)',
156
+ definition: 'Lucasfilm tarafından oluşturulan görsel-işitsel kalite sertifikası. Sinemalar ve ev sineması için standartları belirler. 40° temel önerisidir.'
157
+ },
158
+ {
159
+ term: 'SMPTE (Society of Motion Picture Technical Engineers)',
160
+ definition: 'Film ve video için teknik standartlar organizasyonu. Muhafazakar bir profesyonel mesafe olarak 30°\'yi önerir.'
161
+ },
162
+ {
163
+ term: 'İnsan Görsel Keskinliği',
164
+ definition: 'Gözün ince detayları ayırt etme yeteneği. Belirli bir mesafeden sonra tek bir piksel fark edilemez.'
165
+ },
166
+ {
167
+ term: '4K (Ultra HD)',
168
+ definition: '~3840x2160 piksel çözünürlük. 1080p\'den 4 kat daha fazla piksel.'
169
+ }
170
+ ] },
171
+
172
+ { type: 'message', title: 'Profesyonel Görsel İşitsel Oda Optimizasyonu', ariaLabel: 'TV kurulum standartları hakkında bilgi', html: 'Profesyonel sinemalar mesafe, açı ve aydınlatmanın mükemmel olmasını sağlamak için milyonlar harcar. Hesaplayıcımız aynı prensipleri evinize getiriyor.' },
173
+
174
+ { type: 'title', text: 'Ev Sinemanızı Profesyonelce Kurun', level: 3 },
175
+ { type: 'paragraph', html: 'Mesafe, ekran boyutu ve çözünürlük kadar ÖNEMLİDİR. Salonunuzu otantik bir sinema salonuna dönüştürmek için bu standartları takip edin.' }
176
+ ];
177
+
178
+ const faqSchema: WithContext<FAQPage> = {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: faq.map((item) => ({
182
+ '@type': 'Question',
183
+ name: item.question,
184
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
185
+ })),
186
+ };
187
+
188
+ const howToSchema: WithContext<HowTo> = {
189
+ '@context': 'https://schema.org',
190
+ '@type': 'HowTo',
191
+ name: title,
192
+ description,
193
+ step: howTo.map((step) => ({
194
+ '@type': 'HowToStep',
195
+ name: step.name,
196
+ text: step.text,
197
+ })),
198
+ };
199
+
200
+ const appSchema: WithContext<SoftwareApplication> = {
201
+ '@context': 'https://schema.org',
202
+ '@type': 'SoftwareApplication',
203
+ name: title,
204
+ description,
205
+ applicationCategory: 'UtilitiesApplication',
206
+ operatingSystem: 'Web',
207
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
208
+ inLanguage: 'tr',
209
+ };
210
+
211
+ export const content: TvDistanceLocaleContent = {
212
+ slug,
213
+ title,
214
+ description,
215
+ ui,
216
+ seo,
217
+ faq,
218
+ faqTitle: 'TV İzleme Mesafesi Hakkında Sıkça Sorulan Sorular',
219
+ bibliography,
220
+ bibliographyTitle: 'Televizyon Kurulumu İçin Profesyonel Standartlar',
221
+ howTo,
222
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
223
+ };
@@ -0,0 +1,223 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TvDistanceUI, TvDistanceLocaleContent } from '../index';
3
+
4
+ const slug = 'tv-viewing-distance-calculator-china-thx-4k-optimal-screen';
5
+ const title = '电视观看距离计算器:THX 与 4K 最佳屏幕设置';
6
+ const description = '根据电视尺寸和分辨率计算理想的观看距离。利用 THX 和 SMPTE 标准优化您的家庭影院体验。';
7
+
8
+ const ui: TvDistanceUI = {
9
+ specTitle: "规格设置",
10
+ diagonalLabel: "对角线尺寸",
11
+ resolutionLabel: "分辨率",
12
+ thxRecommendation: "THX 推荐标准",
13
+ thxDescription: "THX 建议观看距离应覆盖 40 度的视角,以获得身临其境的电影体验。",
14
+ simulationBadge: "实时模拟",
15
+ tvWidthLabel: "厘米宽",
16
+ userLocationLabel: "您的位置",
17
+ minLimitLabel: "最小限制距离",
18
+ optimalLimitLabel: "最佳观看距离",
19
+ maxLimitLabel: "最大限制距离",
20
+ unitMeters: "米",
21
+ unitCm: "厘米"
22
+ };
23
+
24
+ const faq: TvDistanceLocaleContent['faq'] = [
25
+ {
26
+ question: "计算距离时,分辨率为什么很重要?",
27
+ answer: "在更高的分辨率下(如 4K 或 8K),像素点更小。这允许您坐得更近而不会察觉到像素颗粒感,从而增强沉浸感。",
28
+ },
29
+ {
30
+ question: "什么是 40 度视角?",
31
+ answer: "这是 THX 推荐的标准视角,使屏幕占据您大部分的周边视觉,类似于在专业电影院中的观看体验。",
32
+ },
33
+ {
34
+ question: "我可以坐得比推荐距离更远吗?",
35
+ answer: "可以,但您将失去高分辨率带来的优势。如果您坐得离 4K 电视太远,您的眼睛将无法分辨额外的细节,看到的画面效果将降级到如同 1080p 一样。",
36
+ },
37
+ ];
38
+
39
+ const howTo: TvDistanceLocaleContent['howTo'] = [
40
+ {
41
+ name: "设定英寸数",
42
+ text: "移动滑块选择您当前电视或计划购买的电视尺寸。",
43
+ },
44
+ {
45
+ name: "选择分辨率",
46
+ text: "在 1080p、4K 或 8K 之间选择,以调整视觉敏锐度限值。",
47
+ },
48
+ {
49
+ name: "查看视觉模拟",
50
+ text: "在图表中观察您与屏幕之间尺寸关系的实时变化。",
51
+ },
52
+ {
53
+ name: "调整沙发位置",
54
+ text: "将您的座位放置在“最佳观看距离”范围内,以实现最大的电影沉浸感。",
55
+ },
56
+ ];
57
+
58
+ const bibliography: TvDistanceLocaleContent['bibliography'] = [
59
+ {
60
+ name: "THX - HDTV Set Up Guide",
61
+ url: "https://www.thx.com/questions/what-is-the-best-viewing-distance-for-my-tv/",
62
+ },
63
+ {
64
+ name: "SMPTE - Standards Documentation",
65
+ url: "https://www.smpte.org/",
66
+ },
67
+ ];
68
+
69
+ const seo: TvDistanceLocaleContent['seo'] = [
70
+ {
71
+ type: 'summary',
72
+ title: '基于分辨率和尺寸的最佳电视观看距离',
73
+ items: [
74
+ '符合 THX 标准 (40°) 的沉浸式电影体验',
75
+ '针对 1080p、4K 和 8K 的精确计算',
76
+ '设置方案的实时视觉模拟',
77
+ '避免视觉疲劳,最大化内容沉浸感'
78
+ ]
79
+ },
80
+ { type: 'title', text: '沉浸感科学:最佳电视观看距离', level: 2 },
81
+ { type: 'paragraph', html: '这不仅关乎舒适度,更涉及人类的视觉生理学。人眼有感知分辨率的极限;如果您坐得离 4K 屏幕太远,您就是在浪费视觉无法捕捉到的像素价值。而如果坐得太近,则会导致视疲劳。' },
82
+
83
+ { type: 'stats', items: [
84
+ { value: '40°', label: 'THX 理想视角', icon: 'mdi:eye' },
85
+ { value: '100%', label: '像素有效利用', icon: 'mdi:video-high-definition' },
86
+ { value: '零', label: '视觉疲劳', icon: 'mdi:heart-pulse' }
87
+ ], columns: 3 },
88
+
89
+ { type: 'title', text: '两大专业标准:THX vs SMPTE', level: 3 },
90
+ { type: 'paragraph', html: '视听行业有两大权威机构定义了如何优化您的观看体验:' },
91
+ { type: 'comparative', items: [
92
+ {
93
+ title: 'THX 标准',
94
+ description: '40° 视角 - 更强沉浸感',
95
+ icon: 'mdi:filmstrip',
96
+ points: [
97
+ '屏幕占据更多周边视觉范围',
98
+ '身临其境的影院体验',
99
+ '适合动作片、体育赛事直播',
100
+ '需要更大的房间空间'
101
+ ],
102
+ highlight: true
103
+ },
104
+ {
105
+ title: 'SMPTE 标准',
106
+ description: '30° 视角 - 更轻松舒适',
107
+ icon: 'mdi:television',
108
+ points: [
109
+ '更舒适的坐姿距离',
110
+ '保守的专业推荐标准',
111
+ '适合多样化内容(新闻、剧集)',
112
+ '更适合较小的房间'
113
+ ]
114
+ }
115
+ ], columns: 2 },
116
+
117
+ { type: 'title', text: '分辨率如何改变计算结果', level: 3 },
118
+ { type: 'table', headers: ['分辨率', '55 英寸电视', '最小距离 (无像素点感)', 'THX 最佳距离'], rows: [
119
+ ['1080p (Full HD)', '55 英寸', '2.0 米', '2.3 米'],
120
+ ['4K (Ultra HD)', '55 英寸', '1.2 米', '1.5 米'],
121
+ ['8K', '55 英寸', '0.8 米', '1.0 米']
122
+ ] },
123
+
124
+ { type: 'paragraph', html: '如您所见,更高分辨率允许您坐得更近而不会察觉到像素结构。4K 电视在 1.2 米处即可获得极佳体验,而 1080p 则需要至少 2 米。' },
125
+
126
+ { type: 'card', title: '人类视觉敏锐度极限', html: '人眼的辨别能力(视觉敏锐度)是有极限的。超过一定距离,即使屏幕是 8K,您也无法区分更多细节。我们的计算让您准确处于“最佳区域”,在不浪费眼力的情况下 100% 发挥像素性能。' },
127
+
128
+ { type: 'diagnostic', variant: 'info', title: '视觉疲劳与距离', icon: 'mdi:information', badge: '视觉健康', html: '距离太近会导致疲劳,因为眼睛需要不断适应极端的角度。距离太远会导致为了看清细节而产生肌肉紧张。我们的计算器为您找到“黄金平衡点”(THX 标准下的 40°视角)。' },
129
+
130
+ { type: 'proscons', items: [
131
+ {
132
+ pro: 'THX 40° 营造真实的影院沉浸感 - 宛如置身专业影厅',
133
+ con: '房间需要有足够的可用空间'
134
+ },
135
+ {
136
+ pro: '4K 支持比 1080p 更近的距离 - 适用于狭小空间',
137
+ con: '必须处于最小距离内才能有效发挥额外像素的优势'
138
+ },
139
+ {
140
+ pro: '从一开始就正确定位,有效避免眼部疲劳',
141
+ con: '大多数家庭客厅由于布局限制并未遵循这些标准'
142
+ },
143
+ {
144
+ pro: '可以验证您当前的电视摆放是否合理',
145
+ con: '如果摆放位置有误,可能需要挪动家具'
146
+ }
147
+ ], proTitle: '优势', conTitle: '局限性' },
148
+
149
+ { type: 'glossary', items: [
150
+ {
151
+ term: '视角 (Viewing Angle)',
152
+ definition: '屏幕在您的位置所覆盖的可视角度。40° = 极强沉浸感(覆盖周边视觉);20° = 背景播放模式(无沉浸感)。'
153
+ },
154
+ {
155
+ term: 'THX (Tomlinson Holman Experiment)',
156
+ definition: '由卢卡斯影业创立的视听质量认证体系。定义了影院和家庭影院的标准。40° 是其核心推荐角度。'
157
+ },
158
+ {
159
+ term: 'SMPTE (电影电视工程师协会)',
160
+ definition: '制定电影和视频技术标准的专业组织。推荐 30° 作为稳健的开发标准距离。'
161
+ },
162
+ {
163
+ term: '人类视觉敏锐度',
164
+ definition: '人眼分辨精细细节的能力。超过一定距离后,单个像素点将无法辨认。'
165
+ },
166
+ {
167
+ term: '4K (Ultra HD)',
168
+ definition: '分辨率约为 3840x2160 像素。像素数是 1080p 的 4 倍。允许更近距离观看而无锯齿感。'
169
+ }
170
+ ] },
171
+
172
+ { type: 'message', title: '专业视听空间优化', ariaLabel: '关于电视设置标准的信息', html: '专业电影院花费巨资确保距离、角度和照明完美。我们的计算器将这些同样的原则带到您的家中。这不是奢侈品:这是对视觉舒适度的投资。' },
173
+
174
+ { type: 'title', text: '打造专业级的家庭影院', level: 3 },
175
+ { type: 'paragraph', html: '距离与屏幕尺寸和分辨率“同样重要”。遵循这些标准,将您的客厅转变成真正的私人影厅。' }
176
+ ];
177
+
178
+ const faqSchema: WithContext<FAQPage> = {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: faq.map((item) => ({
182
+ '@type': 'Question',
183
+ name: item.question,
184
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
185
+ })),
186
+ };
187
+
188
+ const howToSchema: WithContext<HowTo> = {
189
+ '@context': 'https://schema.org',
190
+ '@type': 'HowTo',
191
+ name: title,
192
+ description,
193
+ step: howTo.map((step) => ({
194
+ '@type': 'HowToStep',
195
+ name: step.name,
196
+ text: step.text,
197
+ })),
198
+ };
199
+
200
+ const appSchema: WithContext<SoftwareApplication> = {
201
+ '@context': 'https://schema.org',
202
+ '@type': 'SoftwareApplication',
203
+ name: title,
204
+ description,
205
+ applicationCategory: 'UtilitiesApplication',
206
+ operatingSystem: 'Web',
207
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
208
+ inLanguage: 'zh',
209
+ };
210
+
211
+ export const content: TvDistanceLocaleContent = {
212
+ slug,
213
+ title,
214
+ description,
215
+ ui,
216
+ seo,
217
+ faq,
218
+ faqTitle: '关于电视观看距离的常见问题',
219
+ bibliography,
220
+ bibliographyTitle: '电视安装设置的专业标准',
221
+ howTo,
222
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
223
+ };
@@ -22,10 +22,6 @@ export interface TvDistanceUI {
22
22
 
23
23
  export type TvDistanceLocaleContent = ToolLocaleContent<TvDistanceUI>;
24
24
 
25
- import { content as es } from './i18n/es';
26
- import { content as en } from './i18n/en';
27
- import { content as fr } from './i18n/fr';
28
-
29
25
  export const tvDistance: AudiovisualToolEntry<TvDistanceUI> = {
30
26
  id: 'distancia-tv',
31
27
  icons: {
@@ -33,9 +29,21 @@ export const tvDistance: AudiovisualToolEntry<TvDistanceUI> = {
33
29
  fg: 'mdi:ruler',
34
30
  },
35
31
  i18n: {
36
- es: async () => es as unknown as TvDistanceLocaleContent,
37
- en: async () => en as unknown as TvDistanceLocaleContent,
38
- fr: async () => fr as unknown as TvDistanceLocaleContent,
32
+ es: async () => (await import('./i18n/es')).content as unknown as TvDistanceLocaleContent,
33
+ en: async () => (await import('./i18n/en')).content as unknown as TvDistanceLocaleContent,
34
+ fr: async () => (await import('./i18n/fr')).content as unknown as TvDistanceLocaleContent,
35
+ de: async () => (await import('./i18n/de')).content as unknown as TvDistanceLocaleContent,
36
+ it: async () => (await import('./i18n/it')).content as unknown as TvDistanceLocaleContent,
37
+ pt: async () => (await import('./i18n/pt')).content as unknown as TvDistanceLocaleContent,
38
+ id: async () => (await import('./i18n/id')).content as unknown as TvDistanceLocaleContent,
39
+ ja: async () => (await import('./i18n/ja')).content as unknown as TvDistanceLocaleContent,
40
+ ko: async () => (await import('./i18n/ko')).content as unknown as TvDistanceLocaleContent,
41
+ nl: async () => (await import('./i18n/nl')).content as unknown as TvDistanceLocaleContent,
42
+ pl: async () => (await import('./i18n/pl')).content as unknown as TvDistanceLocaleContent,
43
+ ru: async () => (await import('./i18n/ru')).content as unknown as TvDistanceLocaleContent,
44
+ sv: async () => (await import('./i18n/sv')).content as unknown as TvDistanceLocaleContent,
45
+ tr: async () => (await import('./i18n/tr')).content as unknown as TvDistanceLocaleContent,
46
+ zh: async () => (await import('./i18n/zh')).content as unknown as TvDistanceLocaleContent,
39
47
  },
40
48
  };
41
49