@jjlmoya/utils-developer 1.13.0 → 1.15.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 +1 -1
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/ru.ts +1 -1
- package/src/layouts/PreviewLayout.astro +1 -0
- package/src/pages/[locale]/[slug].astro +29 -12
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +113 -0
- package/src/tests/no_en_dash.test.ts +73 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/aspectRatio/aspect-ratio-calculator.css +1 -1
- package/src/tool/aspectRatio/i18n/de.ts +1 -1
- package/src/tool/aspectRatio/i18n/fr.ts +1 -1
- package/src/tool/aspectRatio/i18n/pl.ts +2 -2
- package/src/tool/aspectRatio/i18n/ru.ts +4 -4
- package/src/tool/aspectRatio/i18n/zh.ts +1 -1
- package/src/tool/aspectRatio/seo.astro +2 -1
- package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +26 -26
- package/src/tool/calculadoraTiempoDatos/i18n/de.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +5 -5
- package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +5 -5
- package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/seo.astro +2 -1
- package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +9 -9
- package/src/tool/colorConverter/i18n/de.ts +1 -1
- package/src/tool/colorConverter/i18n/ru.ts +2 -2
- package/src/tool/colorConverter/seo.astro +2 -1
- package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +24 -24
- package/src/tool/conversorExcelCsvHtml/i18n/es.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -2
- package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -2
- package/src/tool/conversorExcelCsvHtml/seo.astro +2 -1
- package/src/tool/cronGenerator/cron.css +5 -5
- package/src/tool/cronGenerator/i18n/de.ts +4 -4
- package/src/tool/cronGenerator/i18n/en.ts +1 -1
- package/src/tool/cronGenerator/i18n/es.ts +2 -2
- package/src/tool/cronGenerator/i18n/fr.ts +5 -5
- package/src/tool/cronGenerator/i18n/id.ts +1 -1
- package/src/tool/cronGenerator/i18n/nl.ts +1 -1
- package/src/tool/cronGenerator/i18n/pl.ts +8 -8
- package/src/tool/cronGenerator/i18n/pt.ts +1 -1
- package/src/tool/cronGenerator/i18n/ru.ts +9 -9
- package/src/tool/cronGenerator/i18n/sv.ts +1 -1
- package/src/tool/cronGenerator/i18n/zh.ts +3 -3
- package/src/tool/cronGenerator/seo.astro +2 -1
- package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/de.ts +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/fr.ts +3 -3
- package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -2
- package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -2
- package/src/tool/cssSpecificityCalculator/seo.astro +2 -1
- package/src/tool/cssToInlineConverter/css-to-inline-converter.css +1 -1
- package/src/tool/cssToInlineConverter/i18n/de.ts +6 -6
- package/src/tool/cssToInlineConverter/i18n/es.ts +1 -1
- package/src/tool/cssToInlineConverter/i18n/fr.ts +3 -3
- package/src/tool/cssToInlineConverter/seo.astro +2 -1
- package/src/tool/duplicateCssRemover/duplicate-css-remover.css +2 -2
- package/src/tool/duplicateCssRemover/i18n/de.ts +7 -7
- package/src/tool/duplicateCssRemover/i18n/fr.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/id.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/nl.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/pl.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/pt.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/ru.ts +3 -3
- package/src/tool/duplicateCssRemover/i18n/sv.ts +1 -1
- package/src/tool/duplicateCssRemover/seo.astro +2 -1
- package/src/tool/generadorSecurityTxt/i18n/de.ts +5 -5
- package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -2
- package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +9 -9
- package/src/tool/generadorSecurityTxt/seo.astro +2 -1
- package/src/tool/hashGenerator/hash-generator.css +10 -10
- package/src/tool/hashGenerator/i18n/ru.ts +5 -5
- package/src/tool/hashGenerator/i18n/zh.ts +2 -2
- package/src/tool/hashGenerator/seo.astro +2 -1
- package/src/tool/inspectorCertificadosSsl/i18n/de.ts +6 -6
- package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +5 -5
- package/src/tool/inspectorCertificadosSsl/seo.astro +2 -1
- package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +9 -9
- package/src/tool/jsonFormatter/i18n/de.ts +4 -4
- package/src/tool/jsonFormatter/i18n/en.ts +4 -4
- package/src/tool/jsonFormatter/i18n/es.ts +4 -4
- package/src/tool/jsonFormatter/i18n/fr.ts +4 -4
- package/src/tool/jsonFormatter/i18n/id.ts +4 -4
- package/src/tool/jsonFormatter/i18n/it.ts +4 -4
- package/src/tool/jsonFormatter/i18n/ja.ts +4 -4
- package/src/tool/jsonFormatter/i18n/ko.ts +4 -4
- package/src/tool/jsonFormatter/i18n/nl.ts +4 -4
- package/src/tool/jsonFormatter/i18n/pl.ts +4 -4
- package/src/tool/jsonFormatter/i18n/pt.ts +4 -4
- package/src/tool/jsonFormatter/i18n/ru.ts +5 -5
- package/src/tool/jsonFormatter/i18n/sv.ts +4 -4
- package/src/tool/jsonFormatter/i18n/tr.ts +4 -4
- package/src/tool/jsonFormatter/i18n/zh.ts +5 -5
- package/src/tool/jsonFormatter/json-formatter.css +33 -33
- package/src/tool/jsonFormatter/seo.astro +2 -1
- package/src/tool/keycode/i18n/de.ts +7 -7
- package/src/tool/keycode/i18n/en.ts +5 -5
- package/src/tool/keycode/i18n/es.ts +5 -5
- package/src/tool/keycode/i18n/fr.ts +7 -7
- package/src/tool/keycode/i18n/id.ts +5 -5
- package/src/tool/keycode/i18n/it.ts +5 -5
- package/src/tool/keycode/i18n/ja.ts +5 -5
- package/src/tool/keycode/i18n/ko.ts +5 -5
- package/src/tool/keycode/i18n/nl.ts +5 -5
- package/src/tool/keycode/i18n/pl.ts +7 -7
- package/src/tool/keycode/i18n/pt.ts +5 -5
- package/src/tool/keycode/i18n/ru.ts +6 -6
- package/src/tool/keycode/i18n/sv.ts +5 -5
- package/src/tool/keycode/i18n/tr.ts +5 -5
- package/src/tool/keycode/i18n/zh.ts +5 -5
- package/src/tool/keycode/keycode.css +1 -1
- package/src/tool/keycode/seo.astro +2 -1
- package/src/tool/llmCostCalculator/i18n/de.ts +4 -4
- package/src/tool/llmCostCalculator/i18n/en.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/fr.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/id.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/pt.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/ru.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/sv.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/tr.ts +3 -3
- package/src/tool/llmCostCalculator/i18n/zh.ts +3 -3
- package/src/tool/llmCostCalculator/llm-cost-calculator.css +1 -1
- package/src/tool/llmCostCalculator/seo.astro +2 -1
- package/src/tool/mobileMockupGenerator/i18n/es.ts +1 -1
- package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +68 -68
- package/src/tool/mobileMockupGenerator/seo.astro +2 -1
- package/src/tool/musicalTypography/i18n/de.ts +1 -1
- package/src/tool/musicalTypography/i18n/fr.ts +1 -1
- package/src/tool/musicalTypography/i18n/id.ts +1 -1
- package/src/tool/musicalTypography/i18n/it.ts +1 -1
- package/src/tool/musicalTypography/i18n/ko.ts +1 -1
- package/src/tool/musicalTypography/i18n/ru.ts +3 -3
- package/src/tool/musicalTypography/musical-typography.css +8 -8
- package/src/tool/musicalTypography/seo.astro +2 -1
- package/src/tool/placeholderGenerator/i18n/de.ts +4 -4
- package/src/tool/placeholderGenerator/i18n/ru.ts +1 -1
- package/src/tool/placeholderGenerator/placeholder-image-generator.css +2 -2
- package/src/tool/placeholderGenerator/seo.astro +2 -1
- package/src/tool/promptLibrary/i18n/de.ts +1 -1
- package/src/tool/promptLibrary/prompt-library.css +30 -30
- package/src/tool/promptLibrary/seo.astro +2 -1
- package/src/tool/readabilityCalculator/i18n/de.ts +2 -2
- package/src/tool/readabilityCalculator/seo.astro +2 -1
- package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +98 -14
- package/src/tool/svgSanitizer/i18n/de.ts +2 -2
- package/src/tool/svgSanitizer/i18n/id.ts +1 -1
- package/src/tool/svgSanitizer/i18n/pl.ts +1 -1
- package/src/tool/svgSanitizer/i18n/ru.ts +7 -7
- package/src/tool/svgSanitizer/i18n/sv.ts +3 -3
- package/src/tool/svgSanitizer/i18n/tr.ts +3 -3
- package/src/tool/svgSanitizer/i18n/zh.ts +3 -3
- package/src/tool/svgSanitizer/seo.astro +2 -1
- package/src/tool/svgSanitizer/svg-sanitizer.css +7 -7
- package/src/tool/svgToCss/i18n/de.ts +2 -2
- package/src/tool/svgToCss/i18n/es.ts +1 -1
- package/src/tool/svgToCss/i18n/fr.ts +1 -1
- package/src/tool/svgToCss/i18n/pl.ts +1 -1
- package/src/tool/svgToCss/i18n/ru.ts +2 -2
- package/src/tool/svgToCss/i18n/zh.ts +2 -2
- package/src/tool/svgToCss/seo.astro +2 -1
- package/src/tool/svgToCss/svg-to-css-converter.css +2 -2
- package/src/tool/urlCleaner/component.astro +23 -5
- package/src/tool/urlCleaner/i18n/de.ts +3 -3
- package/src/tool/urlCleaner/i18n/es.ts +1 -1
- package/src/tool/urlCleaner/i18n/id.ts +1 -1
- package/src/tool/urlCleaner/i18n/nl.ts +1 -1
- package/src/tool/urlCleaner/seo.astro +2 -1
- package/src/tool/urlCleaner/url-tracking-cleaner.css +104 -14
- package/src/tool/urlEncoderDecoder/i18n/de.ts +5 -5
- package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -2
- package/src/tool/urlEncoderDecoder/i18n/pl.ts +5 -5
- package/src/tool/urlEncoderDecoder/i18n/ru.ts +8 -8
- package/src/tool/urlEncoderDecoder/i18n/sv.ts +5 -5
- package/src/tool/urlEncoderDecoder/i18n/zh.ts +5 -5
- package/src/tool/urlEncoderDecoder/seo.astro +2 -1
- package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +1 -1
- package/src/tool/utmGenerator/i18n/de.ts +2 -2
- package/src/tool/utmGenerator/i18n/pl.ts +5 -5
- package/src/tool/utmGenerator/i18n/ru.ts +6 -6
- package/src/tool/utmGenerator/seo.astro +2 -1
- package/src/tool/utmGenerator/utm-generator.css +6 -6
|
@@ -33,15 +33,15 @@ const faqData = [
|
|
|
33
33
|
const howToData = [
|
|
34
34
|
{
|
|
35
35
|
name: 'Rohtext einfügen',
|
|
36
|
-
text: 'Geben Sie Ihre URL oder Zeichenfolge in das obere Feld
|
|
36
|
+
text: 'Geben Sie Ihre URL oder Zeichenfolge in das obere Feld "Rohtext (lesbar)" ein oder fügen Sie sie ein.',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
name: 'Kodieren oder Dekodieren',
|
|
40
|
-
text: 'Klicken Sie auf
|
|
40
|
+
text: 'Klicken Sie auf "URL kodieren", um den Text in das sichere Percent-Encoding-Format zu konvertieren, oder auf "Dekodieren", um eine kodierte URL wieder in ihre lesbare Form zu bringen.',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: 'Ergebnis kopieren',
|
|
44
|
-
text: 'Verwenden Sie die Schaltfläche
|
|
44
|
+
text: 'Verwenden Sie die Schaltfläche "Kopieren" des entsprechenden Feldes, um das Ergebnis in Ihre Zwischenablage zu übernehmen.',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -123,7 +123,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'paragraph',
|
|
126
|
-
html: 'Beim Surfen im Internet oder beim Senden von Anfragen an Server betrachtet man eine URL (Uniform Resource Locator) oft einfach als
|
|
126
|
+
html: 'Beim Surfen im Internet oder beim Senden von Anfragen an Server betrachtet man eine URL (Uniform Resource Locator) oft einfach als "Webadresse". Das Internetprotokoll schreibt jedoch vor, dass URLs nur mit einem sehr eingeschränkten Satz von <strong>Standard-ASCII</strong>-Zeichen übertragen werden dürfen.',
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
type: 'paragraph',
|
|
@@ -136,7 +136,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
type: 'paragraph',
|
|
139
|
-
html: 'Wenn Sie dieses Tool verwenden, nimmt der Algorithmus jedes
|
|
139
|
+
html: 'Wenn Sie dieses Tool verwenden, nimmt der Algorithmus jedes "unsichere" Zeichen (wie ein Leerzeichen oder einen Umlaut wie ä) und ersetzt es durch ein Prozentzeichen <code>%</code> gefolgt von zwei hexadezimalen Ziffern, die seinem Wert im UTF-8-Standard entsprechen.',
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
@@ -11,7 +11,7 @@ const faqData = [
|
|
|
11
11
|
{
|
|
12
12
|
question: 'Quels caractères sont encodés dans une URL ?',
|
|
13
13
|
answer:
|
|
14
|
-
"Tous les caractères non autorisés dans le standard ASCII pour les URLs sont encodés
|
|
14
|
+
"Tous les caractères non autorisés dans le standard ASCII pour les URLs sont encodés: espaces, lettres accentuées, symboles tels que &, =, +, #, ?, / et d'autres. Par exemple, un espace devient %20 et ñ devient %C3%B1.",
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
question: 'Quelle est la différence entre encodeURI et encodeURIComponent ?',
|
|
@@ -141,7 +141,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
143
143
|
items: [
|
|
144
|
-
'<strong>Exemple Basique
|
|
144
|
+
'<strong>Exemple Basique:</strong> Un simple espace sera remplacé par son équivalent sécurisé: <code>%20</code>.',
|
|
145
145
|
'<strong>Support Étendu :</strong> La lettre <code>á</code> devient <code>%C3%A1</code>, et <code>ñ</code> devient <code>%C3%B1</code>.',
|
|
146
146
|
],
|
|
147
147
|
},
|
|
@@ -33,15 +33,15 @@ const faqData = [
|
|
|
33
33
|
const howToData = [
|
|
34
34
|
{
|
|
35
35
|
name: 'Wklej surowy tekst',
|
|
36
|
-
text: 'Wpisz lub wklej swój adres URL lub ciąg tekstowy w górnym polu
|
|
36
|
+
text: 'Wpisz lub wklej swój adres URL lub ciąg tekstowy w górnym polu "Tekst surowy (czytelny)".',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
name: 'Zakoduj lub dekoduj',
|
|
40
|
-
text: 'Kliknij
|
|
40
|
+
text: 'Kliknij "Koduj URL", aby przekonwertować tekst na bezpieczny format Percent-Encoding, lub "Dekoduj", aby przywrócić zakodowany adres URL do jego czytelnej formy.',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: 'Skopiuj wynik',
|
|
44
|
-
text: 'Użyj przycisku
|
|
44
|
+
text: 'Użyj przycisku "Kopiuj" w odpowiednim polu, aby przenieść wynik do schowka.',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -123,7 +123,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'paragraph',
|
|
126
|
-
html: 'Podczas przeglądania Internetu lub wysyłania żądań do serwerów często myślimy o adresie URL (Uniform Resource Locator) po prostu jako o
|
|
126
|
+
html: 'Podczas przeglądania Internetu lub wysyłania żądań do serwerów często myślimy o adresie URL (Uniform Resource Locator) po prostu jako o "adresie internetowym". Jednak protokół internetowy dyktuje, że adresy URL mogą być przesyłane wyłącznie przy użyciu bardzo ograniczonego zestawu <strong>standardowych znaków ASCII</strong>.',
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
type: 'paragraph',
|
|
@@ -136,7 +136,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
type: 'paragraph',
|
|
139
|
-
html: 'Gdy korzystasz z tego narzędzia, algorytm pobiera dowolny
|
|
139
|
+
html: 'Gdy korzystasz z tego narzędzia, algorytm pobiera dowolny "niebezpieczny" znak (taki jak spacja lub litera z akcentem, np. ñ) i zastępuje go znakiem procenta <code>%</code>, po którym następują dwie cyfry szesnastkowe odpowiadające jego wartości w standardzie UTF-8.',
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
@@ -11,7 +11,7 @@ const faqData = [
|
|
|
11
11
|
{
|
|
12
12
|
question: 'Какие символы кодируются в URL?',
|
|
13
13
|
answer:
|
|
14
|
-
'Кодируются все символы, не разрешенные стандартом ASCII для URL: пробелы, буквы с диакритическими знаками, символы, такие как &, =, +, #, ?, / и другие. Например, пробел заменяется на %20, а ñ
|
|
14
|
+
'Кодируются все символы, не разрешенные стандартом ASCII для URL: пробелы, буквы с диакритическими знаками, символы, такие как &, =, +, #, ?, / и другие. Например, пробел заменяется на %20, а ñ - на %C3%B1.',
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
question: 'В чем разница между encodeURI и encodeURIComponent?',
|
|
@@ -21,7 +21,7 @@ const faqData = [
|
|
|
21
21
|
{
|
|
22
22
|
question: 'Почему в моем URL-адресе %20 вместо пробелов?',
|
|
23
23
|
answer:
|
|
24
|
-
'Протокол HTTP не допускает использования пробелов в URL-адресах. %20
|
|
24
|
+
'Протокол HTTP не допускает использования пробелов в URL-адресах. %20 - это представление пробела в кодировке Percent-Encoding согласно стандарту ASCII. Некоторые системы используют знак + в качестве альтернативы, но %20 является наиболее универсальным и безопасным.',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
question: 'Безопасно ли использовать этот инструмент с личными URL-адресами?',
|
|
@@ -33,15 +33,15 @@ const faqData = [
|
|
|
33
33
|
const howToData = [
|
|
34
34
|
{
|
|
35
35
|
name: 'Вставьте исходный текст',
|
|
36
|
-
text: 'Введите или вставьте ваш URL-адрес или текстовую строку в верхнее поле
|
|
36
|
+
text: 'Введите или вставьте ваш URL-адрес или текстовую строку в верхнее поле "Исходный текст (читаемый)".',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
name: 'Закодируйте или декодируйте',
|
|
40
|
-
text: 'Нажмите
|
|
40
|
+
text: 'Нажмите "Закодировать URL", чтобы преобразовать текст в безопасный формат Percent-Encoding, или "Декодировать", чтобы вернуть закодированный URL-адрес в читаемый вид.',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: 'Скопируйте результат',
|
|
44
|
-
text: 'Используйте кнопку
|
|
44
|
+
text: 'Используйте кнопку "Копировать" в соответствующем поле, чтобы перенести результат в буфер обмена.',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -123,7 +123,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'paragraph',
|
|
126
|
-
html: 'При просмотре веб-страниц или отправке запросов на серверы часто думают об URL (Uniform Resource Locator) просто как о
|
|
126
|
+
html: 'При просмотре веб-страниц или отправке запросов на серверы часто думают об URL (Uniform Resource Locator) просто как о "веб-адресе". Однако интернет-протокол диктует, что URL-адреса могут передаваться только с использованием очень ограниченного набора <strong>стандартных символов ASCII</strong>.',
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
type: 'paragraph',
|
|
@@ -136,13 +136,13 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
type: 'paragraph',
|
|
139
|
-
html: 'Когда вы используете этот инструмент, алгоритм берет любой
|
|
139
|
+
html: 'Когда вы используете этот инструмент, алгоритм берет любой "небезопасный" символ (например, пробел или букву с диакритическим знаком, такую как ñ) и заменяет его знаком процента <code>%</code>, за которым следуют две шестнадцатеричные цифры, соответствующие его значению в стандарте UTF-8.',
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
143
143
|
items: [
|
|
144
144
|
'<strong>Базовый пример:</strong> обычный пробел будет заменен его безопасным эквивалентом: <code>%20</code>.',
|
|
145
|
-
'<strong>Расширенная поддержка:</strong> буква <code>ё</code> заменяется на <code>%D1%91</code>, а <code>й</code>
|
|
145
|
+
'<strong>Расширенная поддержка:</strong> буква <code>ё</code> заменяется на <code>%D1%91</code>, а <code>й</code> - на <code>%D0%B9</code>.',
|
|
146
146
|
],
|
|
147
147
|
},
|
|
148
148
|
{
|
|
@@ -33,15 +33,15 @@ const faqData = [
|
|
|
33
33
|
const howToData = [
|
|
34
34
|
{
|
|
35
35
|
name: 'Klistra in råtexten',
|
|
36
|
-
text: 'Skriv eller klistra in din URL eller textsträng i det övre fältet
|
|
36
|
+
text: 'Skriv eller klistra in din URL eller textsträng i det övre fältet "Råtext (läsbar)".',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
name: 'Koda eller avkoda',
|
|
40
|
-
text: 'Klicka på
|
|
40
|
+
text: 'Klicka på "Koda URL" för att konvertera texten till det säkra Percent-Encoding-formatet, eller "Avkoda" för att återställa en kodad URL till dess läsbara form.',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: 'Kopiera resultatet',
|
|
44
|
-
text: 'Använd knappen
|
|
44
|
+
text: 'Använd knappen "Kopiera" i motsvarande fält för att ta resultatet till ditt urklipp.',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -123,7 +123,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'paragraph',
|
|
126
|
-
html: 'När man surfar på internet eller skickar förfrågningar till servrar är det vanligt att tänka på en URL (Uniform Resource Locator) helt enkelt som en
|
|
126
|
+
html: 'När man surfar på internet eller skickar förfrågningar till servrar är det vanligt att tänka på en URL (Uniform Resource Locator) helt enkelt som en "webbadress". Internetprotokoll föreskriver dock att URL:er endast kan överföras med en mycket begränsad uppsättning <strong>standard-ASCII</strong>-tecken.',
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
type: 'paragraph',
|
|
@@ -136,7 +136,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
type: 'paragraph',
|
|
139
|
-
html: 'När du använder det här verktyget tar algoritmen alla
|
|
139
|
+
html: 'När du använder det här verktyget tar algoritmen alla "osäkra" tecken (som ett blanksteg eller ett tecken med accent som ñ) och ersätter det med ett procenttecken <code>%</code> följt av två hexadecimala siffror som motsvarar dess värde i UTF-8-standarden.',
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
@@ -33,15 +33,15 @@ const faqData = [
|
|
|
33
33
|
const howToData = [
|
|
34
34
|
{
|
|
35
35
|
name: '粘贴原始文本',
|
|
36
|
-
text: '
|
|
36
|
+
text: '在上方"原始文本(可读)"字段中输入或粘贴您的 URL 或文本字符串。',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
name: '编码或解码',
|
|
40
|
-
text: '
|
|
40
|
+
text: '点击"URL 编码"将文本转换为安全的百分比编码格式,或点击"解码"将已编码的 URL 恢复为可读形式。',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: '复制结果',
|
|
44
|
-
text: '
|
|
44
|
+
text: '使用对应字段的"复制"按钮将结果保存到剪贴板。',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -123,7 +123,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'paragraph',
|
|
126
|
-
html: '在浏览互联网或向服务器发送请求时,人们通常将 URL
|
|
126
|
+
html: '在浏览互联网或向服务器发送请求时,人们通常将 URL(统一资源定位符)简单地视为"网址"。然而,互联网协议规定 URL 只能使用非常有限的 <strong>标准 ASCII</strong> 字符集进行传输。',
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
type: 'paragraph',
|
|
@@ -136,7 +136,7 @@ export const content: ToolLocaleContent<UrlEncoderDecoderUI> = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
type: 'paragraph',
|
|
139
|
-
html: '
|
|
139
|
+
html: '当您使用此工具时,算法会将任何"不安全"的字符(如空格或 ñ 等带重音符号的字母)替换为百分号 <code>%</code>,后跟与其在 UTF-8 标准中的值相对应的两个十六进制数字。',
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
type: 'list',
|
|
@@ -9,6 +9,7 @@ interface Props {
|
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
11
|
const content = await urlEncoderDecoder.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
12
13
|
---
|
|
13
14
|
|
|
14
|
-
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -17,7 +17,7 @@ const faqData = [
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
question: 'Unterscheidet Google Analytics bei UTM zwischen Groß- und Kleinschreibung?',
|
|
20
|
-
answer: 'Ja.
|
|
20
|
+
answer: 'Ja. "google", "Google" und "GOOGLE" werden als unterschiedliche Quellen behandelt. Achten Sie immer auf Konsistenz, am besten verwenden Sie nur Kleinschreibung.',
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
|
|
@@ -107,7 +107,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
107
107
|
{
|
|
108
108
|
type: 'list',
|
|
109
109
|
items: [
|
|
110
|
-
'<strong>Einheitliche Schreibweise:</strong> Tools unterscheiden zwischen
|
|
110
|
+
'<strong>Einheitliche Schreibweise:</strong> Tools unterscheiden zwischen "Google", "GOOGLE" und "google". Verwenden Sie immer Kleinschreibung, um Duplikate zu vermeiden.',
|
|
111
111
|
'<strong>Leerzeichen vermeiden:</strong> Leerzeichen werden zu %20. Verwenden Sie stattdessen Bindestriche (-) oder Unterstriche (_).',
|
|
112
112
|
'<strong>Nicht bei internen Links verwenden:</strong> UTM-Tracking ist ausschließlich für externen Traffic gedacht. Bei internen Links unterbricht es die Sitzung und verfälscht wichtige Kennzahlen.',
|
|
113
113
|
'<strong>Dokumentieren Sie Ihre Tags:</strong> Führen Sie Protokoll über alle verwendeten Kombinationen, um Inkonsistenzen zu vermeiden.',
|
|
@@ -17,7 +17,7 @@ const faqData = [
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
question: 'Czy Google Analytics rozróżnia wielkość liter w UTM?',
|
|
20
|
-
answer: 'Tak.
|
|
20
|
+
answer: 'Tak. "google", "Google" i "GOOGLE" będą traktowane jako różne źródła. Zawsze zachowuj spójność, najlepiej używając tylko małych liter.',
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
|
|
@@ -81,8 +81,8 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
81
81
|
faq: faqData,
|
|
82
82
|
bibliographyTitle: 'Referencje',
|
|
83
83
|
bibliography: [
|
|
84
|
-
{ name: 'Gromadzenie danych kampanii za pomocą niestandardowych adresów URL
|
|
85
|
-
{ name: 'Najlepsze praktyki tagowania adresów URL kampanii
|
|
84
|
+
{ name: 'Gromadzenie danych kampanii za pomocą niestandardowych adresów URL - Pomoc Google Analytics (2024)', url: 'https://support.google.com/analytics/answer/1033863' },
|
|
85
|
+
{ name: 'Najlepsze praktyki tagowania adresów URL kampanii - Blog VWO (2023)', url: 'https://vwo.com/blog/utm-tagging-best-practices/' },
|
|
86
86
|
],
|
|
87
87
|
howTo: howToData,
|
|
88
88
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
99
99
|
'<strong>Źródło kampanii:</strong> Identyfikuje wyszukiwarkę, sieć społecznościową lub pochodzenie ruchu. Przykład: google, newsletter, facebook.',
|
|
100
100
|
'<strong>Medium kampanii:</strong> Odnosi się do kanału marketingowego. Przykład: cpc, e-mail, social, banner, organic.',
|
|
101
101
|
'<strong>Nazwa kampanii:</strong> Konkretna nazwa Twojej kampanii. Przykład: oferta_letnia_2025, app_launch_v2.',
|
|
102
|
-
'<strong>Termin kampanii:</strong> W przypadku wyszukiwania płatnego
|
|
102
|
+
'<strong>Termin kampanii:</strong> W przypadku wyszukiwania płatnego - słowa kluczowe, na które licytujesz. Przykład: kup_buty_sportowe.',
|
|
103
103
|
'<strong>Treść kampanii:</strong> Do testów A/B. Rozróżnia podobne elementy w ramach kampanii. Przykład: header_v1, sidebar_v2.',
|
|
104
104
|
],
|
|
105
105
|
},
|
|
@@ -107,7 +107,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
107
107
|
{
|
|
108
108
|
type: 'list',
|
|
109
109
|
items: [
|
|
110
|
-
'<strong>Spójność wielkości liter:</strong> Narzędzia rozróżniają
|
|
110
|
+
'<strong>Spójność wielkości liter:</strong> Narzędzia rozróżniają "Google", "GOOGLE" i "google". Zawsze używaj małych liter, aby uniknąć duplikatów.',
|
|
111
111
|
'<strong>Unikaj spacji:</strong> Spacje zmieniają się w %20. Zamiast nich używaj łączników (-) lub podkreśleń (_).',
|
|
112
112
|
'<strong>Nie używaj w linkach wewnętrznych:</strong> Śledzenie UTM służy wyłącznie do ruchu zewnętrznego. W linkach wewnętrznych przerywa sesję i psuje kluczowe wskaźniki.',
|
|
113
113
|
'<strong>Dokumentuj swoje tagi:</strong> Prowadź rejestr wszystkich używanych kombinacji, aby zapobiec niespójnościom.',
|
|
@@ -17,7 +17,7 @@ const faqData = [
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
question: 'Различает ли Google Analytics регистр в UTM?',
|
|
20
|
-
answer: 'Да.
|
|
20
|
+
answer: 'Да. "google", "Google" и "GOOGLE" будут рассматриваться как разные источники. Всегда соблюдайте единообразие, предпочтительно используя только строчные буквы.',
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
|
|
@@ -81,8 +81,8 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
81
81
|
faq: faqData,
|
|
82
82
|
bibliographyTitle: 'Ссылки',
|
|
83
83
|
bibliography: [
|
|
84
|
-
{ name: 'Сбор данных кампании с помощью пользовательских URL
|
|
85
|
-
{ name: 'Лучшие практики для разметки URL кампаний
|
|
84
|
+
{ name: 'Сбор данных кампании с помощью пользовательских URL - Справка Google Analytics (2024)', url: 'https://support.google.com/analytics/answer/1033863' },
|
|
85
|
+
{ name: 'Лучшие практики для разметки URL кампаний - Блог VWO (2023)', url: 'https://vwo.com/blog/utm-tagging-best-practices/' },
|
|
86
86
|
],
|
|
87
87
|
howTo: howToData,
|
|
88
88
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
@@ -90,7 +90,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
90
90
|
{ type: 'title', text: 'Генератор UTM: параметры отслеживания для Google Analytics', level: 2 },
|
|
91
91
|
{
|
|
92
92
|
type: 'paragraph',
|
|
93
|
-
html: 'Параметры <strong>UTM</strong> (Urchin Tracking Module)
|
|
93
|
+
html: 'Параметры <strong>UTM</strong> (Urchin Tracking Module) - это текстовые метки, добавляемые в конец URL-адреса для отслеживания веб-трафика. Наш генератор упрощает создание ссылок с отслеживанием для ваших цифровых маркетинговых кампаний.',
|
|
94
94
|
},
|
|
95
95
|
{ type: 'title', text: '5 столпов отслеживаемой ссылки', level: 3 },
|
|
96
96
|
{
|
|
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
99
99
|
'<strong>Источник кампании:</strong> определяет поисковую систему, социальную сеть или источник трафика. Пример: google, newsletter, facebook.',
|
|
100
100
|
'<strong>Канал кампании:</strong> относится к маркетинговому каналу. Пример: cpc, email, social, banner, organic.',
|
|
101
101
|
'<strong>Название кампании:</strong> конкретное название вашей кампании. Пример: summer_offer_2025, app_launch_v2.',
|
|
102
|
-
'<strong>Ключевое слово кампании:</strong> для платного поиска
|
|
102
|
+
'<strong>Ключевое слово кампании:</strong> для платного поиска - ключевые слова, по которым вы делаете ставки. Пример: buy_sports_shoes.',
|
|
103
103
|
'<strong>Контент кампании:</strong> для A/B-тестирования. Позволяет различать похожие элементы в рамках одной кампании. Пример: header_v1, sidebar_v2.',
|
|
104
104
|
],
|
|
105
105
|
},
|
|
@@ -107,7 +107,7 @@ export const content: ToolLocaleContent<UtmGeneratorUI> = {
|
|
|
107
107
|
{
|
|
108
108
|
type: 'list',
|
|
109
109
|
items: [
|
|
110
|
-
'<strong>Единообразие регистра:</strong> инструменты различают
|
|
110
|
+
'<strong>Единообразие регистра:</strong> инструменты различают "Google", "GOOGLE" и "google". Всегда используйте строчные буквы, чтобы избежать дубликатов.',
|
|
111
111
|
'<strong>Избегайте пробелов:</strong> пробелы превращаются в %20. Вместо них используйте дефисы (-) или подчеркивания (_).',
|
|
112
112
|
'<strong>Не используйте на внутренних ссылках:</strong> отслеживание UTM предназначено исключительно для внешнего трафика. На внутренних ссылках оно прерывает сеанс и портит ключевые показатели.',
|
|
113
113
|
'<strong>Документируйте свои теги:</strong> ведите учет всех используемых вами комбинаций, чтобы предотвратить несоответствия.',
|
|
@@ -9,6 +9,7 @@ interface Props {
|
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
11
|
const content = await utmGenerator.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
12
13
|
---
|
|
13
14
|
|
|
14
|
-
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.06);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
.theme-dark .ug-container {
|
|
18
18
|
background: rgba(15, 23, 42, 0.75);
|
|
19
19
|
border-color: rgba(255, 255, 255, 0.06);
|
|
20
20
|
}
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
color: rgb(100, 116, 139);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
.theme-dark .ug-input-group label {
|
|
55
55
|
color: rgb(148, 163, 184);
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
transition: all 0.2s ease;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
.theme-dark .ug-input {
|
|
68
68
|
background: rgba(255, 255, 255, 0.04);
|
|
69
69
|
border-color: rgb(51, 65, 85);
|
|
70
70
|
color: rgb(203, 213, 225);
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
border: 1px solid rgba(99, 102, 241, 0.2);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
.theme-dark .ug-result {
|
|
92
92
|
background: rgba(99, 102, 241, 0.05);
|
|
93
93
|
border-color: rgba(99, 102, 241, 0.15);
|
|
94
94
|
}
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
font-size: 0.875rem;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
.theme-dark .ug-result-label {
|
|
112
112
|
color: rgb(203, 213, 225);
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
.theme-dark .ug-result-url {
|
|
126
126
|
background: rgb(30, 41, 59);
|
|
127
127
|
border-color: rgb(51, 65, 85);
|
|
128
128
|
color: rgb(129, 140, 248);
|