@jjlmoya/utils-developer 1.30.0 → 1.32.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 +70 -70
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/es.ts +1 -1
- package/src/category/index.ts +2 -1
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/entries.ts +2 -0
- package/src/env.d.ts +1 -1
- package/src/index.ts +1 -0
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/[locale]/[slug].astro +161 -161
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +76 -0
- package/src/tests/entry_contract.test.ts +8 -2
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +2 -6
- package/src/tests/inverted_punctuation.test.ts +113 -113
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/promote_this_website_i18n.test.ts +33 -0
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/slug_language_code_format.test.ts +25 -25
- package/src/tests/slug_uniqueness.test.ts +86 -86
- package/src/tests/tool_validation.test.ts +16 -16
- package/src/tool/aspectRatio/i18n/de.ts +164 -164
- package/src/tool/aspectRatio/i18n/ja.ts +1 -1
- package/src/tool/aspectRatio/i18n/ko.ts +1 -1
- package/src/tool/aspectRatio/i18n/pl.ts +164 -164
- package/src/tool/aspectRatio/i18n/ru.ts +164 -164
- package/src/tool/aspectRatio/i18n/zh.ts +165 -165
- package/src/tool/aspectRatio/seo.astro +15 -15
- package/src/tool/calculadoraTiempoDatos/i18n/de.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +1 -1
- package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +144 -144
- package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +143 -143
- package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +144 -144
- package/src/tool/calculadoraTiempoDatos/seo.astro +15 -15
- package/src/tool/colorConverter/i18n/de.ts +120 -120
- package/src/tool/colorConverter/i18n/ja.ts +1 -1
- package/src/tool/colorConverter/i18n/ko.ts +1 -1
- package/src/tool/colorConverter/i18n/ru.ts +120 -120
- package/src/tool/colorConverter/i18n/zh.ts +1 -1
- package/src/tool/colorConverter/seo.astro +15 -15
- package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +1 -1
- package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +124 -124
- package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +124 -124
- package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +125 -125
- package/src/tool/conversorExcelCsvHtml/seo.astro +15 -15
- package/src/tool/cronGenerator/i18n/ja.ts +1 -1
- package/src/tool/cronGenerator/i18n/ko.ts +1 -1
- package/src/tool/cronGenerator/i18n/zh.ts +183 -183
- package/src/tool/cronGenerator/seo.astro +15 -15
- package/src/tool/cssSpecificityCalculator/i18n/ja.ts +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/ko.ts +1 -1
- package/src/tool/cssSpecificityCalculator/i18n/zh.ts +1 -1
- package/src/tool/cssSpecificityCalculator/seo.astro +15 -15
- package/src/tool/cssToInlineConverter/i18n/ja.ts +1 -1
- package/src/tool/cssToInlineConverter/i18n/ko.ts +1 -1
- package/src/tool/cssToInlineConverter/i18n/zh.ts +1 -1
- package/src/tool/cssToInlineConverter/seo.astro +15 -15
- package/src/tool/dualOsIconPreview/assets/day-check.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/fast-task.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/fortune-cookie.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/lexi-crash.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/pizzametrics.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/sauce-lab.webp +0 -0
- package/src/tool/dualOsIconPreview/assets/vesp.webp +0 -0
- package/src/tool/dualOsIconPreview/bibliography.astro +6 -0
- package/src/tool/dualOsIconPreview/bibliography.ts +7 -0
- package/src/tool/dualOsIconPreview/component.astro +117 -0
- package/src/tool/dualOsIconPreview/controller.ts +157 -0
- package/src/tool/dualOsIconPreview/dom-views.ts +82 -0
- package/src/tool/dualOsIconPreview/dual-ios-android-app-icon-preview.css +861 -0
- package/src/tool/dualOsIconPreview/entry.ts +31 -0
- package/src/tool/dualOsIconPreview/evaluator.ts +20 -0
- package/src/tool/dualOsIconPreview/i18n/de.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/en.ts +46 -0
- package/src/tool/dualOsIconPreview/i18n/es.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/fr.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/id.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/it.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/ja.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/ko.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/nl.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/pl.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/pt.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/ru.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/sv.ts +56 -0
- package/src/tool/dualOsIconPreview/i18n/tr.ts +43 -0
- package/src/tool/dualOsIconPreview/i18n/zh.ts +43 -0
- package/src/tool/dualOsIconPreview/index.ts +11 -0
- package/src/tool/dualOsIconPreview/logic.test.ts +63 -0
- package/src/tool/dualOsIconPreview/logic.ts +135 -0
- package/src/tool/dualOsIconPreview/seo.astro +15 -0
- package/src/tool/dualOsIconPreview/storage.ts +18 -0
- package/src/tool/dualOsIconPreview/ui.ts +52 -0
- package/src/tool/duplicateCssRemover/i18n/ja.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/ko.ts +1 -1
- package/src/tool/duplicateCssRemover/i18n/zh.ts +1 -1
- package/src/tool/duplicateCssRemover/seo.astro +15 -15
- package/src/tool/generadorSecurityTxt/i18n/ja.ts +1 -1
- package/src/tool/generadorSecurityTxt/i18n/ko.ts +1 -1
- package/src/tool/generadorSecurityTxt/i18n/zh.ts +1 -1
- package/src/tool/generadorSecurityTxt/seo.astro +15 -15
- package/src/tool/hashGenerator/i18n/ja.ts +1 -1
- package/src/tool/hashGenerator/i18n/ko.ts +1 -1
- package/src/tool/hashGenerator/seo.astro +15 -15
- package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +1 -1
- package/src/tool/inspectorCertificadosSsl/seo.astro +15 -15
- package/src/tool/jsonFormatter/seo.astro +15 -15
- package/src/tool/jwtDecoder/i18n/es.ts +248 -248
- package/src/tool/jwtDecoder/i18n/fr.ts +248 -248
- package/src/tool/jwtDecoder/i18n/tr.ts +248 -248
- package/src/tool/keycode/seo.astro +15 -15
- package/src/tool/llmCostCalculator/i18n/fr.ts +149 -149
- package/src/tool/llmCostCalculator/i18n/ja.ts +1 -1
- package/src/tool/llmCostCalculator/i18n/ko.ts +1 -1
- package/src/tool/llmCostCalculator/seo.astro +15 -15
- package/src/tool/mobileMockupGenerator/i18n/ja.ts +1 -1
- package/src/tool/mobileMockupGenerator/i18n/ko.ts +1 -1
- package/src/tool/mobileMockupGenerator/i18n/zh.ts +1 -1
- package/src/tool/mobileMockupGenerator/seo.astro +15 -15
- package/src/tool/musicalTypography/i18n/ja.ts +1 -1
- package/src/tool/musicalTypography/i18n/ko.ts +1 -1
- package/src/tool/musicalTypography/i18n/zh.ts +1 -1
- package/src/tool/musicalTypography/seo.astro +15 -15
- package/src/tool/placeholderGenerator/i18n/ja.ts +1 -1
- package/src/tool/placeholderGenerator/i18n/ko.ts +1 -1
- package/src/tool/placeholderGenerator/i18n/zh.ts +1 -1
- package/src/tool/placeholderGenerator/seo.astro +15 -15
- package/src/tool/promoteThisWebsite/entry.ts +13 -0
- package/src/tool/promoteThisWebsite/i18n/de.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/fr.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/id.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/it.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ja.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ko.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/nl.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/pl.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/pt.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/ru.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/sv.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/tr.ts +95 -0
- package/src/tool/promoteThisWebsite/i18n/zh.ts +95 -0
- package/src/tool/promptLibrary/i18n/ja.ts +1 -1
- package/src/tool/promptLibrary/i18n/ko.ts +1 -1
- package/src/tool/promptLibrary/i18n/zh.ts +1 -1
- package/src/tool/promptLibrary/seo.astro +15 -15
- package/src/tool/readabilityCalculator/i18n/ja.ts +1 -1
- package/src/tool/readabilityCalculator/i18n/ko.ts +1 -1
- package/src/tool/readabilityCalculator/i18n/zh.ts +1 -1
- package/src/tool/readabilityCalculator/seo.astro +15 -15
- package/src/tool/serpPixelSimulator/entry.ts +30 -30
- package/src/tool/serpPixelSimulator/i18n/en.ts +211 -211
- package/src/tool/serpPixelSimulator/i18n/fr.ts +214 -214
- package/src/tool/serpPixelSimulator/i18n/ru.ts +214 -214
- package/src/tool/serpPixelSimulator/logic.ts +18 -18
- package/src/tool/serpPixelSimulator/serp-pixel-simulator.css +195 -195
- package/src/tool/svgSanitizer/i18n/ja.ts +1 -1
- package/src/tool/svgSanitizer/i18n/ko.ts +1 -1
- package/src/tool/svgSanitizer/seo.astro +15 -15
- package/src/tool/svgToCss/i18n/ja.ts +1 -1
- package/src/tool/svgToCss/i18n/ko.ts +1 -1
- package/src/tool/svgToCss/seo.astro +15 -15
- package/src/tool/urlCleaner/i18n/ja.ts +1 -1
- package/src/tool/urlCleaner/i18n/ko.ts +1 -1
- package/src/tool/urlCleaner/i18n/zh.ts +1 -1
- package/src/tool/urlCleaner/seo.astro +15 -15
- package/src/tool/urlEncoderDecoder/i18n/es.ts +146 -146
- package/src/tool/urlEncoderDecoder/i18n/ko.ts +1 -1
- package/src/tool/urlEncoderDecoder/seo.astro +15 -15
- package/src/tool/utmGenerator/i18n/ja.ts +1 -1
- package/src/tool/utmGenerator/i18n/ko.ts +1 -1
- package/src/tool/utmGenerator/i18n/zh.ts +1 -1
- package/src/tool/utmGenerator/seo.astro +15 -15
- package/src/tools.ts +2 -1
- package/src/types.ts +1 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'promuj-te-strone',
|
|
8
|
+
title: 'Promuj tę stronę',
|
|
9
|
+
description: 'Wewnętrzne biuro propagandy jjlmoya.es po hiszpańsku i GameBob.dev na świecie. Zamieniaj zrzuty własnych stron w obrazy do mediów społecznościowych, zanim Bob uzna, że feed jest żenujący.',
|
|
10
|
+
faqTitle: 'Promuj tę stronę bez denerwowania kota',
|
|
11
|
+
bibliographyTitle: 'Strony z operacji',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: 'Dla kogo właściwie jest to narzędzie?', answer: 'Do promowania stron jjlmoya.es po hiszpańsku i GameBob.dev na świecie. Reszta może patrzeć przez okno.' },
|
|
14
|
+
{ question: 'Czy mogę wkleić zrzut ekranu?', answer: 'Tak. Skopiuj zrzut i naciśnij Ctrl+V. Stanie się warstwą narzędzia, bo koci zarząd przyjmuje dowody w poprawnym formacie.' },
|
|
15
|
+
{ question: 'Co się dzieje po wklejeniu adresu produkcyjnego?', answer: 'Narzędzie odczytuje tytuł meta, wybiera markę i ładuje obraz Open Graph. Slug nie dostanie już awansu.' },
|
|
16
|
+
{ question: 'Dlaczego są dwie marki?', answer: 'jjlmoya.es to strona hiszpańska, a GameBob.dev międzynarodowa. Koty całkowicie ignorują tę różnicę.' },
|
|
17
|
+
{ question: 'Czy moje obrazy są wysyłane?', answer: 'Nie. Zostają w przeglądarce, a kompozycja jest renderowana lokalnie. Stronę opuszcza tylko świadomie pobrany PNG.' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: 'Wklej zrzut ekranu', text: 'Wklej Ctrl+V zrzut z jjlmoya.es lub GameBob.dev. Zarząd żąda dowodu z własnego imperium.' },
|
|
21
|
+
{ name: 'Wybierz markę', text: 'Wybierz jjlmoya.es dla hiszpańskiego lub GameBob.dev dla strony międzynarodowej. Kot już posiada lokal.' },
|
|
22
|
+
{ name: 'Ułóż obraz', text: 'Przeciągaj zrzut, tytuł, logo, tło i maskotkę, aż kompozycja będzie wyglądała na zamierzoną.' },
|
|
23
|
+
{ name: 'Eksportuj PNG', text: 'Pobierz PNG w wybranym rozmiarze, zanim Bob przypisze sobie zasługi.' },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'Oficjalne biuro propagandy jjlmoya i GameBob',
|
|
26
|
+
seoIntro: 'To nie jest ogólny kompozytor obrazów społecznościowych dla kogoś, kto właśnie odkrył słowo branding. Służy do promowania naszych stron jjlmoya.es i GameBob.dev pod nadzorem kotów.',
|
|
27
|
+
seoBody: 'Wklej prawdziwy zrzut lub załaduj adres produkcyjny. Narzędzie czyta tytuł strony zamiast zgadywać go ze sluga i zachowuje widoczny obraz Open Graph podczas układania warstw. Możesz dopasować układ, markę, tło, logo i maskotkę do formatu publikacji, a potem pobrać gotowy PNG bez opuszczania narzędzia.',
|
|
28
|
+
seoTip: 'Zacznij od adresu produkcyjnego jjlmoya.es lub GameBob.dev. Jeśli tytuł, marka lub obraz się nie ładują, zarząd obwini sieć, człowieka, a na końcu koty.',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: 'Adres strony', urlPlaceholder: 'https://www.example.com/narzedzia/przyklad/', applyUrl: 'Zastosuj',
|
|
32
|
+
formatLabel: 'Format', panoramic: 'Panorama · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: 'Kwadrat · 1080 × 1080', story: 'Relacja · 1080 × 1920',
|
|
33
|
+
titleLabel: 'Tytuł', titlePlaceholder: 'Krótki tytuł obrazu', titleSizeLabel: 'Rozmiar czcionki tytułu', titleBoxSizeLabel: 'Rozmiar pola tytułu', titleStyleLabel: 'Styl tytułu',
|
|
34
|
+
brandLabel: 'Marka', brandStyleLabel: 'Styl marki', advancedLabel: 'Zaawansowana kompozycja', assetsLabel: 'Zasoby', backgroundLabel: 'Tło', toolLabel: 'Zrzut narzędzia', logoLabel: 'Logo', mascotLabel: 'Maskotka',
|
|
35
|
+
layersLabel: 'Warstwy', backgroundLayer: 'Tło', toolLayer: 'Narzędzie', logoLayer: 'Logo', mascotLayer: 'Maskotka', titleLayer: 'Tytuł', reset: 'Resetuj', download: 'Pobierz PNG', activeLayer: 'Aktywna warstwa',
|
|
36
|
+
canvasHint: 'Przeciągaj warstwy bezpośrednio po obszarze roboczym. Wklej zrzut skrótem Ctrl+V.', pasted: 'Zrzut wklejony jako warstwa narzędzia.', urlApplied: 'Zastosowano adres. Dostosuj tytuł i dodaj zrzut, który chcesz promować.', urlLoading: 'Odczytywanie tytułu strony i oficjalnego obrazu...', urlFailed: 'Nie udało się odczytać strony. Sprawdź adres lub dodaj zasoby ręcznie.', fileLoaded: 'Zasób załadowany.',
|
|
37
|
+
titlePaper: 'Papier redakcyjny', titleRibbon: 'Złożona wstążka', titleInk: 'Plama atramentu', titlePoster: 'Nocny plakat', titleTicket: 'Oderwany bilet', titleMarker: 'Materiałowe podkreślenie', titleSplit: 'Podzielony blok', titleCapsule: 'Minimalna kapsuła', titleCorner: 'Róg redakcyjny', titleVertical: 'Pionowy akcent',
|
|
38
|
+
brandPlain: 'Prosta marka', brandPlaque: 'Ceramiczna tabliczka', brandTicket: 'Bilet wstępu', brandStamp: 'Gumowa pieczęć', brandNeon: 'Neonowy szyld', brandRibbon: 'Wstążka sygnałowa', brandCorner: 'Róg redakcyjny', brandPixel: 'Blok pikseli', brandHalo: 'Delikatna poświata', brandEditorial: 'Linia redakcyjna', defaultTool: 'Wklej zrzut narzędzia',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'pl',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'promover-este-site',
|
|
8
|
+
title: 'Promover este site',
|
|
9
|
+
description: 'A central de propaganda interna do jjlmoya.es em espanhol e do GameBob.dev internacional. Transforma capturas das tuas próprias páginas em imagens sociais antes de Bob achar o feed embaraçoso.',
|
|
10
|
+
faqTitle: 'Promover este site sem irritar a gata',
|
|
11
|
+
bibliographyTitle: 'Páginas da operação',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: 'Para quem é esta ferramenta?', answer: 'Para promover as páginas do jjlmoya.es em espanhol e do GameBob.dev internacionalmente. Os restantes podem espreitar pela janela.' },
|
|
14
|
+
{ question: 'Posso colar uma captura diretamente?', answer: 'Sim. Copia uma captura e prime Ctrl+V. Ela torna-se a camada da ferramenta, porque até o conselho felino aceita provas no formato certo.' },
|
|
15
|
+
{ question: 'O que acontece com um URL de produção?', answer: 'A ferramenta lê o título meta, escolhe a marca e carrega a imagem Open Graph. O slug deixa finalmente de receber promoção.' },
|
|
16
|
+
{ question: 'Porque existem duas marcas?', answer: 'jjlmoya.es é a página espanhola e GameBob.dev é a página internacional. As gatas ignoram completamente a distinção.' },
|
|
17
|
+
{ question: 'As minhas imagens são carregadas?', answer: 'Não. Ficam no navegador e a composição é renderizada localmente. Só sai o PNG que descarregas de propósito.' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: 'Cola uma captura', text: 'Cola com Ctrl+V uma captura do jjlmoya.es ou do GameBob.dev. O conselho quer provas do seu próprio império.' },
|
|
21
|
+
{ name: 'Escolhe a marca', text: 'Escolhe jjlmoya.es para espanhol ou GameBob.dev para a página internacional. A gata já é dona das instalações.' },
|
|
22
|
+
{ name: 'Compõe a imagem', text: 'Arrasta captura, título, logótipo, fundo e mascote até a composição parecer intencional.' },
|
|
23
|
+
{ name: 'Exporta o PNG', text: 'Descarrega o PNG nas dimensões escolhidas antes de Bob ficar com o mérito.' },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'A central oficial de propaganda do jjlmoya e do GameBob',
|
|
26
|
+
seoIntro: 'Isto não é um compositor social genérico para alguém que acabou de descobrir a palavra branding. Existe para promover as nossas páginas jjlmoya.es e GameBob.dev enquanto as gatas supervisionam.',
|
|
27
|
+
seoBody: 'Cola uma captura real ou carrega um URL de produção. A ferramenta lê o título da página em vez de adivinhar pelo slug e mantém a imagem Open Graph visível durante a composição.',
|
|
28
|
+
seoTip: 'Começa por um URL de produção do jjlmoya.es ou do GameBob.dev. Se título, marca ou imagem não carregarem, o conselho culpará a rede, depois o humano e por fim as gatas.',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: 'URL do site', urlPlaceholder: 'https://www.example.com/ferramentas/exemplo/', applyUrl: 'Aplicar',
|
|
32
|
+
formatLabel: 'Formato', panoramic: 'Panorâmico · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: 'Quadrado · 1080 × 1080', story: 'Story · 1080 × 1920',
|
|
33
|
+
titleLabel: 'Título', titlePlaceholder: 'Um título curto para a imagem', titleSizeLabel: 'Tamanho da fonte do título', titleBoxSizeLabel: 'Tamanho da caixa do título', titleStyleLabel: 'Estilo do título',
|
|
34
|
+
brandLabel: 'Marca', brandStyleLabel: 'Estilo da marca', advancedLabel: 'Composição avançada', assetsLabel: 'Recursos', backgroundLabel: 'Fundo', toolLabel: 'Captura da ferramenta', logoLabel: 'Logótipo', mascotLabel: 'Mascote',
|
|
35
|
+
layersLabel: 'Camadas', backgroundLayer: 'Fundo', toolLayer: 'Ferramenta', logoLayer: 'Logótipo', mascotLayer: 'Mascote', titleLayer: 'Título', reset: 'Repor', download: 'Descarregar PNG', activeLayer: 'Camada ativa',
|
|
36
|
+
canvasHint: 'Arrasta as camadas diretamente no canvas. Cola uma captura com Ctrl+V.', pasted: 'Captura colada como camada da ferramenta.', urlApplied: 'URL aplicada. Ajusta o título e adiciona a captura que queres promover.', urlLoading: 'A ler o título da página e a imagem oficial...', urlFailed: 'Não foi possível ler essa página. Verifica o URL ou adiciona os recursos manualmente.', fileLoaded: 'Recurso carregado.',
|
|
37
|
+
titlePaper: 'Papel editorial', titleRibbon: 'Fita dobrada', titleInk: 'Mancha de tinta', titlePoster: 'Cartaz noturno', titleTicket: 'Bilhete recortado', titleMarker: 'Sublinhado material', titleSplit: 'Bloco dividido', titleCapsule: 'Cápsula minimalista', titleCorner: 'Canto editorial', titleVertical: 'Acento vertical',
|
|
38
|
+
brandPlain: 'Marca simples', brandPlaque: 'Placa de cerâmica', brandTicket: 'Bilhete de entrada', brandStamp: 'Carimbo de borracha', brandNeon: 'Letreiro de néon', brandRibbon: 'Fita de sinalização', brandCorner: 'Canto editorial', brandPixel: 'Bloco de píxeis', brandHalo: 'Halo suave', brandEditorial: 'Linha editorial', defaultTool: 'Cola a captura da tua ferramenta',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'pt',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'prodvigat-etot-sayt',
|
|
8
|
+
title: 'Продвигать этот сайт',
|
|
9
|
+
description: 'Внутренний отдел пропаганды jjlmoya.es на испанском и GameBob.dev для международной аудитории. Превращайте снимки собственных страниц в изображения для соцсетей, пока Боб не решил, что лента выглядит неловко.',
|
|
10
|
+
faqTitle: 'Продвигайте сайт, не сердя кошку',
|
|
11
|
+
bibliographyTitle: 'Страницы операции',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: 'Для кого предназначен этот инструмент?', answer: 'Для продвижения страниц jjlmoya.es на испанском и GameBob.dev для международной аудитории. Остальные могут смотреть из окна.' },
|
|
14
|
+
{ question: 'Можно ли вставить снимок экрана?', answer: 'Да. Скопируйте снимок и нажмите Ctrl+V. Он станет слоем инструмента: кошачий совет принимает доказательства в правильном формате.' },
|
|
15
|
+
{ question: 'Что происходит с рабочим URL?', answer: 'Инструмент читает метатег заголовка, выбирает бренд и загружает изображение Open Graph. У slug больше нет шансов на повышение.' },
|
|
16
|
+
{ question: 'Зачем нужны два бренда?', answer: 'jjlmoya.es - испанская страница, а GameBob.dev - международная. Кошки полностью игнорируют это различие.' },
|
|
17
|
+
{ question: 'Мои изображения загружаются?', answer: 'Нет. Они остаются в браузере, а композиция создаётся локально. Страницу покидает только скачанный вами PNG.' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: 'Вставьте снимок', text: 'Вставьте Ctrl+V снимок страницы jjlmoya.es или GameBob.dev. Совет требует доказательств из собственной империи.' },
|
|
21
|
+
{ name: 'Выберите бренд', text: 'Выберите jjlmoya.es для испанского или GameBob.dev для международной страницы. Кошка уже владеет помещением.' },
|
|
22
|
+
{ name: 'Соберите изображение', text: 'Перетащите снимок, заголовок, логотип, фон и маскот, чтобы композиция выглядела намеренной.' },
|
|
23
|
+
{ name: 'Экспортируйте PNG', text: 'Скачайте PNG нужного размера, пока Боб не присвоил себе заслугу.' },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'Официальный отдел пропаганды jjlmoya и GameBob',
|
|
26
|
+
seoIntro: 'Это не универсальный редактор социальных изображений для человека, который только узнал слово branding. Он нужен для продвижения наших страниц jjlmoya.es и GameBob.dev под наблюдением кошек.',
|
|
27
|
+
seoBody: 'Вставьте настоящий снимок или загрузите рабочий URL. Инструмент читает заголовок страницы, а не угадывает его по slug, и оставляет официальное изображение Open Graph видимым. Затем настройте композицию, бренд, фон, логотип и маскота под формат публикации и скачайте готовый PNG без выхода из инструмента.',
|
|
28
|
+
seoTip: 'Начните с рабочего URL jjlmoya.es или GameBob.dev. Если заголовок, бренд или изображение не загрузились, совет обвинит сеть, человека и наконец кошек.',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: 'URL сайта', urlPlaceholder: 'https://www.example.com/tools/example/', applyUrl: 'Применить',
|
|
32
|
+
formatLabel: 'Формат', panoramic: 'Панорама · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: 'Квадрат · 1080 × 1080', story: 'История · 1080 × 1920',
|
|
33
|
+
titleLabel: 'Заголовок', titlePlaceholder: 'Короткий заголовок для изображения', titleSizeLabel: 'Размер шрифта заголовка', titleBoxSizeLabel: 'Размер блока заголовка', titleStyleLabel: 'Стиль заголовка',
|
|
34
|
+
brandLabel: 'Бренд', brandStyleLabel: 'Стиль бренда', advancedLabel: 'Расширенная композиция', assetsLabel: 'Материалы', backgroundLabel: 'Фон', toolLabel: 'Снимок инструмента', logoLabel: 'Логотип', mascotLabel: 'Маскот',
|
|
35
|
+
layersLabel: 'Слои', backgroundLayer: 'Фон', toolLayer: 'Инструмент', logoLayer: 'Логотип', mascotLayer: 'Маскот', titleLayer: 'Заголовок', reset: 'Сбросить', download: 'Скачать PNG', activeLayer: 'Активный слой',
|
|
36
|
+
canvasHint: 'Перетаскивайте слои прямо по холсту. Вставьте снимок клавишами Ctrl+V.', pasted: 'Снимок вставлен как слой инструмента.', urlApplied: 'URL применён. Настройте заголовок и добавьте нужный снимок.', urlLoading: 'Читаем заголовок страницы и официальное изображение...', urlFailed: 'Не удалось прочитать страницу. Проверьте URL или добавьте материалы вручную.', fileLoaded: 'Материал загружен.',
|
|
37
|
+
titlePaper: 'Редакционная бумага', titleRibbon: 'Сложенная лента', titleInk: 'Брызги чернил', titlePoster: 'Ночной плакат', titleTicket: 'Оторванный билет', titleMarker: 'Материальное подчёркивание', titleSplit: 'Разделённый блок', titleCapsule: 'Минимальная капсула', titleCorner: 'Редакционный угол', titleVertical: 'Вертикальный акцент',
|
|
38
|
+
brandPlain: 'Простой знак', brandPlaque: 'Керамическая табличка', brandTicket: 'Входной билет', brandStamp: 'Резиновый штамп', brandNeon: 'Неоновая вывеска', brandRibbon: 'Сигнальная лента', brandCorner: 'Редакционный угол', brandPixel: 'Пиксельный блок', brandHalo: 'Мягкое свечение', brandEditorial: 'Редакционная линия', defaultTool: 'Вставьте снимок инструмента',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'ru',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'marknadsfor-den-har-webbplatsen',
|
|
8
|
+
title: 'Marknadsför den här webbplatsen',
|
|
9
|
+
description: 'Den interna propagandadisken för jjlmoya.es på spanska och GameBob.dev internationellt. Gör skärmbilder av dina egna sidor till sociala bilder innan Bob tycker att flödet är pinsamt.',
|
|
10
|
+
faqTitle: 'Marknadsför sidan utan att göra katten arg',
|
|
11
|
+
bibliographyTitle: 'Sidor från operationen',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: 'Vem är verktyget egentligen till för?', answer: 'För att marknadsföra sidorna på jjlmoya.es på spanska och GameBob.dev internationellt. Alla andra får titta genom fönstret.' },
|
|
14
|
+
{ question: 'Kan jag klistra in en skärmbild direkt?', answer: 'Ja. Kopiera en skärmbild och tryck Ctrl+V. Den blir verktygslagret, eftersom kattstyrelsen godkänner bevis i rätt format.' },
|
|
15
|
+
{ question: 'Vad händer med en produktions-URL?', answer: 'Verktyget läser sidans metatitel, väljer rätt varumärke och laddar Open Graph-bilden. Sluggen får ingen befordran.' },
|
|
16
|
+
{ question: 'Varför finns två varumärken?', answer: 'jjlmoya.es är den spanska sidan och GameBob.dev den internationella. Katten bryr sig inte om skillnaden.' },
|
|
17
|
+
{ question: 'Laddas mina bilder upp?', answer: 'Nej. De stannar i webbläsaren och kompositionen renderas lokalt. Bara PNG-filen du själv laddar ner lämnar sidan.' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: 'Klistra in en skärmbild', text: 'Klistra in en bild från jjlmoya.es eller GameBob.dev med Ctrl+V. Styrelsen vill ha bevis från sitt eget imperium.' },
|
|
21
|
+
{ name: 'Välj varumärke', text: 'Välj jjlmoya.es för spanska eller GameBob.dev för den internationella sidan. Katten äger redan lokalen.' },
|
|
22
|
+
{ name: 'Ordna bilden', text: 'Dra skärmbild, titel, logotyp, bakgrund och maskot tills kompositionen ser avsiktlig ut.' },
|
|
23
|
+
{ name: 'Exportera PNG', text: 'Ladda ner PNG i önskad storlek innan Bob tar åt sig äran.' },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'Den officiella propagandadisken för jjlmoya och GameBob',
|
|
26
|
+
seoIntro: 'Det här är inte en generisk social bildkompositör för någon som precis upptäckt ordet branding. Den finns för att marknadsföra våra sidor på jjlmoya.es och GameBob.dev medan katterna övervakar.',
|
|
27
|
+
seoBody: 'Klistra in en riktig skärmbild eller läs in en produktions-URL. Verktyget läser sidans titel i stället för att gissa från sluggen och håller Open Graph-bilden synlig.',
|
|
28
|
+
seoTip: 'Börja med en produktions-URL från jjlmoya.es eller GameBob.dev. Om titel, varumärke eller bild inte laddas skyller styrelsen på nätet, människan och till sist katterna.',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: 'Webbplatsens URL', urlPlaceholder: 'https://www.example.com/verktyg/exempel/', applyUrl: 'Använd',
|
|
32
|
+
formatLabel: 'Format', panoramic: 'Panorama · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: 'Kvadrat · 1080 × 1080', story: 'Story · 1080 × 1920',
|
|
33
|
+
titleLabel: 'Titel', titlePlaceholder: 'En kort titel för bilden', titleSizeLabel: 'Titelns teckenstorlek', titleBoxSizeLabel: 'Titelrutans storlek', titleStyleLabel: 'Titelstil',
|
|
34
|
+
brandLabel: 'Varumärke', brandStyleLabel: 'Varumärkesstil', advancedLabel: 'Avancerad komposition', assetsLabel: 'Resurser', backgroundLabel: 'Bakgrund', toolLabel: 'Skärmbild av verktyget', logoLabel: 'Logotyp', mascotLabel: 'Maskot',
|
|
35
|
+
layersLabel: 'Lager', backgroundLayer: 'Bakgrund', toolLayer: 'Verktyg', logoLayer: 'Logotyp', mascotLayer: 'Maskot', titleLayer: 'Titel', reset: 'Återställ', download: 'Ladda ner PNG', activeLayer: 'Aktivt lager',
|
|
36
|
+
canvasHint: 'Dra lagren direkt på arbetsytan. Klistra in en skärmbild med Ctrl+V.', pasted: 'Skärmbilden klistrades in som verktygslager.', urlApplied: 'URL tillämpad. Justera titeln och lägg till skärmbilden du vill marknadsföra.', urlLoading: 'Läser sidans titel och officiella bild...', urlFailed: 'Sidan kunde inte läsas. Kontrollera URL:en eller lägg till resurser manuellt.', fileLoaded: 'Resurs laddad.',
|
|
37
|
+
titlePaper: 'Redaktionellt papper', titleRibbon: 'Vikt band', titleInk: 'Bläckstänk', titlePoster: 'Nattposter', titleTicket: 'Avriven biljett', titleMarker: 'Materiell understrykning', titleSplit: 'Delat block', titleCapsule: 'Minimal kapsel', titleCorner: 'Redaktionellt hörn', titleVertical: 'Vertikal accent',
|
|
38
|
+
brandPlain: 'Enkel logotyp', brandPlaque: 'Keramisk plakett', brandTicket: 'Inträdesbiljett', brandStamp: 'Gummistämpel', brandNeon: 'Neonskylt', brandRibbon: 'Signalband', brandCorner: 'Redaktionellt hörn', brandPixel: 'Pixelblock', brandHalo: 'Mjuk gloria', brandEditorial: 'Redaktionell linje', defaultTool: 'Klistra in verktygets skärmbild',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'sv',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'bu-web-sitesini-tanit',
|
|
8
|
+
title: 'Bu web sitesini tanıt',
|
|
9
|
+
description: 'İspanyolca jjlmoya.es ve uluslararası GameBob.dev için dahili propaganda masası. Bob akışın utanç verici olduğuna karar vermeden kendi sayfalarının ekran görüntülerini sosyal görsellere dönüştür.',
|
|
10
|
+
faqTitle: 'Kediyi kızdırmadan siteyi tanıt',
|
|
11
|
+
bibliographyTitle: 'Operasyondaki sayfalar',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: 'Bu araç aslında kimin için?', answer: 'İspanyolca jjlmoya.es ve uluslararası GameBob.dev sayfalarını tanıtmak için. Diğer herkes pencereden bakabilir.' },
|
|
14
|
+
{ question: 'Ekran görüntüsünü doğrudan yapıştırabilir miyim?', answer: "Evet. Görüntüyü kopyalayıp Ctrl+V'ye bas. Doğru formatta gelen kanıtı kedi kurulu bile kabul eder." },
|
|
15
|
+
{ question: "Üretim URL'si yapıştırınca ne olur?", answer: 'Araç meta başlığını okur, doğru markayı seçer ve Open Graph görselini yükler. Slug artık terfi alamaz.' },
|
|
16
|
+
{ question: 'Neden iki marka var?', answer: 'jjlmoya.es İspanyolca, GameBob.dev uluslararası sayfadır. Kediler bu ayrımı tamamen görmezden gelir.' },
|
|
17
|
+
{ question: 'Görsellerim yükleniyor mu?', answer: 'Hayır. Görseller tarayıcıda kalır ve kompozisyon yerel olarak oluşturulur. Yalnızca bilerek indirdiğin PNG dışarı çıkar.' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: 'Ekran görüntüsü yapıştır', text: 'jjlmoya.es veya GameBob.dev ekran görüntüsünü Ctrl+V ile yapıştır. Kurul kendi imparatorluğundan kanıt istiyor.' },
|
|
21
|
+
{ name: 'Markayı seç', text: 'İspanyolca için jjlmoya.es, uluslararası sayfa için GameBob.dev seç. Kedi binanın zaten sahibi.' },
|
|
22
|
+
{ name: 'Görseli düzenle', text: 'Ekran görüntüsünü, başlığı, logoyu, arka planı ve maskotu bilinçli görünecek şekilde sürükle.' },
|
|
23
|
+
{ name: 'PNG dışa aktar', text: "Bob övgüyü üstlenmeden önce istediğin boyutta PNG'yi indir." },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'jjlmoya ve GameBob için resmi propaganda masası',
|
|
26
|
+
seoIntro: 'Bu, branding kelimesini yeni keşfetmiş biri için genel bir sosyal görsel düzenleyici değil. Kediler denetlerken jjlmoya.es ve GameBob.dev sayfalarımızı tanıtmak için var.',
|
|
27
|
+
seoBody: "Gerçek bir ekran görüntüsü yapıştır veya üretim URL'si yükle. Araç slugdan tahmin etmek yerine sayfa başlığını okur ve kompozisyon sırasında resmi Open Graph görselini görünür tutar. Yerleşimi, markayı, arka planı, logoyu ve maskotu paylaşım formatına göre düzenleyip hazır PNG dosyasını araçtan ayrılmadan indirebilirsin.",
|
|
28
|
+
seoTip: 'jjlmoya.es veya GameBob.dev üretim URLsiyle başla. Başlık, marka veya görsel yüklenmezse kurul önce ağı, sonra insanı, en son kedileri suçlar.',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: "Web sitesi URL'si", urlPlaceholder: 'https://www.example.com/araclar/ornek/', applyUrl: 'Uygula',
|
|
32
|
+
formatLabel: 'Biçim', panoramic: 'Panoramik · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: 'Kare · 1080 × 1080', story: 'Hikâye · 1080 × 1920',
|
|
33
|
+
titleLabel: 'Başlık', titlePlaceholder: 'Görsel için kısa bir başlık', titleSizeLabel: 'Başlık yazı boyutu', titleBoxSizeLabel: 'Başlık kutusu boyutu', titleStyleLabel: 'Başlık tasarımı',
|
|
34
|
+
brandLabel: 'Marka', brandStyleLabel: 'Marka tasarımı', advancedLabel: 'Gelişmiş kompozisyon', assetsLabel: 'Varlıklar', backgroundLabel: 'Arka plan', toolLabel: 'Araç ekran görüntüsü', logoLabel: 'Logo', mascotLabel: 'Maskot',
|
|
35
|
+
layersLabel: 'Katmanlar', backgroundLayer: 'Arka plan', toolLayer: 'Araç', logoLayer: 'Logo', mascotLayer: 'Maskot', titleLayer: 'Başlık', reset: 'Sıfırla', download: 'PNG indir', activeLayer: 'Etkin katman',
|
|
36
|
+
canvasHint: 'Katmanları doğrudan tuval üzerinde sürükle. Ctrl+V ile ekran görüntüsü yapıştır.', pasted: 'Ekran görüntüsü araç katmanı olarak yapıştırıldı.', urlApplied: 'URL uygulandı. Başlığı ayarla ve tanıtmak istediğin ekran görüntüsünü ekle.', urlLoading: 'Sayfa başlığı ve resmi görsel okunuyor...', urlFailed: "Sayfa okunamadı. URL'yi kontrol et veya varlıkları elle ekle.", fileLoaded: 'Varlık yüklendi.',
|
|
37
|
+
titlePaper: 'Editoryal kâğıt', titleRibbon: 'Katlanmış şerit', titleInk: 'Mürekkep lekesi', titlePoster: 'Gece afişi', titleTicket: 'Yırtık bilet', titleMarker: 'Malzeme alt çizgisi', titleSplit: 'Bölünmüş blok', titleCapsule: 'Minimal kapsül', titleCorner: 'Editoryal köşe', titleVertical: 'Dikey vurgu',
|
|
38
|
+
brandPlain: 'Sade marka', brandPlaque: 'Seramik plaka', brandTicket: 'Giriş bileti', brandStamp: 'Lastik damga', brandNeon: 'Neon tabela', brandRibbon: 'Sinyal şeridi', brandCorner: 'Editoryal köşe', brandPixel: 'Piksel blok', brandHalo: 'Yumuşak hale', brandEditorial: 'Editoryal çizgi', defaultTool: 'Araç ekran görüntüsünü yapıştır',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'tr',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PromoteThisWebsiteUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const localized = {
|
|
7
|
+
slug: 'promote-this-website',
|
|
8
|
+
title: '推广这个网站',
|
|
9
|
+
description: '为西班牙语 jjlmoya.es 和国际版 GameBob.dev 准备的内部宣传台。在 Bob 觉得信息流很丢脸之前,把自己页面的截图变成社交媒体图片。',
|
|
10
|
+
faqTitle: '别惹猫生气,推广这个网站',
|
|
11
|
+
bibliographyTitle: '行动中的页面',
|
|
12
|
+
faq: [
|
|
13
|
+
{ question: '这个工具到底给谁用?', answer: '用来推广西班牙语 jjlmoya.es 和国际版 GameBob.dev 页面。其他人可以从窗户往里看。' },
|
|
14
|
+
{ question: '可以直接粘贴截图吗?', answer: '可以。复制截图后按 Ctrl+V,它会成为工具图层。只要格式正确,猫咪委员会也接受证据。' },
|
|
15
|
+
{ question: '粘贴生产环境 URL 会发生什么?', answer: '工具会读取页面的 meta 标题,选择对应品牌并加载 Open Graph 图片。slug 终于不会得到晋升。' },
|
|
16
|
+
{ question: '为什么有两个品牌?', answer: 'jjlmoya.es 是西班牙语页面,GameBob.dev 是国际页面。猫咪完全不在乎这个区别。' },
|
|
17
|
+
{ question: '我的图片会被上传吗?', answer: '不会。图片留在浏览器中,合成也在本地完成。只有你主动下载的 PNG 会离开页面。' },
|
|
18
|
+
],
|
|
19
|
+
howTo: [
|
|
20
|
+
{ name: '粘贴截图', text: '用 Ctrl+V 粘贴 jjlmoya.es 或 GameBob.dev 的截图。委员会需要自己帝国的证据。' },
|
|
21
|
+
{ name: '选择品牌', text: '西班牙语选择 jjlmoya.es,国际页面选择 GameBob.dev。猫咪已经拥有办公场所。' },
|
|
22
|
+
{ name: '排列图片', text: '拖动截图、标题、标志、背景和吉祥物,让合成看起来像是认真设计过的。' },
|
|
23
|
+
{ name: '导出 PNG', text: '在 Bob 抢走功劳之前,按需要的尺寸下载 PNG。' },
|
|
24
|
+
],
|
|
25
|
+
seoTitle: 'jjlmoya 和 GameBob 的官方宣传台',
|
|
26
|
+
seoIntro: '这不是给刚学会 branding 这个词的人准备的通用社交图片编辑器。它的用途是推广我们在 jjlmoya.es 和 GameBob.dev 上的页面,同时接受猫咪监督。',
|
|
27
|
+
seoBody: '粘贴真实截图或加载生产环境 URL。工具读取页面标题,而不是从 slug 猜测,并在排列其他图层时保持官方 Open Graph 图片可见。',
|
|
28
|
+
seoTip: '从 jjlmoya.es 或 GameBob.dev 的生产环境 URL 开始。如果标题、品牌或图片没有加载,委员会会先责怪网络,再责怪人,最后责怪猫。',
|
|
29
|
+
};
|
|
30
|
+
const ui: PromoteThisWebsiteUI = {
|
|
31
|
+
urlLabel: '网站 URL', urlPlaceholder: 'https://www.example.com/tools/example/', applyUrl: '应用',
|
|
32
|
+
formatLabel: '格式', panoramic: '全景 · 1536 × 1024', instagram: 'Instagram · 1080 × 1350', square: '方形 · 1080 × 1080', story: '快拍 · 1080 × 1920',
|
|
33
|
+
titleLabel: '标题', titlePlaceholder: '图片的简短标题', titleSizeLabel: '标题字体大小', titleBoxSizeLabel: '标题框大小', titleStyleLabel: '标题设计',
|
|
34
|
+
brandLabel: '品牌', brandStyleLabel: '品牌设计', advancedLabel: '高级合成', assetsLabel: '素材', backgroundLabel: '背景', toolLabel: '工具截图', logoLabel: '标志', mascotLabel: '吉祥物',
|
|
35
|
+
layersLabel: '图层', backgroundLayer: '背景', toolLayer: '工具', logoLayer: '标志', mascotLayer: '吉祥物', titleLayer: '标题', reset: '重置', download: '下载 PNG', activeLayer: '当前图层',
|
|
36
|
+
canvasHint: '直接在画布上拖动图层。使用 Ctrl+V 粘贴截图。', pasted: '截图已作为工具图层粘贴。', urlApplied: 'URL 已应用。调整标题并添加要推广的截图。', urlLoading: '正在读取页面标题和官方图片...', urlFailed: '无法读取该页面。请检查 URL 或手动添加素材。', fileLoaded: '素材已加载。',
|
|
37
|
+
titlePaper: '编辑纸张', titleRibbon: '折叠丝带', titleInk: '墨水飞溅', titlePoster: '夜间海报', titleTicket: '撕边票据', titleMarker: '材质下划线', titleSplit: '分割方块', titleCapsule: '极简胶囊', titleCorner: '编辑角标', titleVertical: '垂直强调',
|
|
38
|
+
brandPlain: '简洁标志', brandPlaque: '陶瓷铭牌', brandTicket: '入场券', brandStamp: '橡皮图章', brandNeon: '霓虹招牌', brandRibbon: '信号丝带', brandCorner: '编辑角标', brandPixel: '像素方块', brandHalo: '柔和光晕', brandEditorial: '编辑线条', defaultTool: '粘贴工具截图',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
'@type': 'FAQPage',
|
|
44
|
+
mainEntity: localized.faq.map((item) => ({
|
|
45
|
+
'@type': 'Question',
|
|
46
|
+
name: item.question,
|
|
47
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
const howToSchema: WithContext<HowTo> = {
|
|
51
|
+
'@context': 'https://schema.org',
|
|
52
|
+
'@type': 'HowTo',
|
|
53
|
+
name: localized.title,
|
|
54
|
+
description: localized.description,
|
|
55
|
+
step: localized.howTo.map((step, index) => ({
|
|
56
|
+
'@type': 'HowToStep',
|
|
57
|
+
position: index + 1,
|
|
58
|
+
name: step.name,
|
|
59
|
+
text: step.text,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'SoftwareApplication',
|
|
65
|
+
name: localized.title,
|
|
66
|
+
description: localized.description,
|
|
67
|
+
applicationCategory: 'DeveloperApplication',
|
|
68
|
+
operatingSystem: 'Any',
|
|
69
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
70
|
+
inLanguage: 'zh',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const content: ToolLocaleContent<PromoteThisWebsiteUI> = {
|
|
74
|
+
slug: localized.slug,
|
|
75
|
+
title: localized.title,
|
|
76
|
+
description: localized.description,
|
|
77
|
+
ui,
|
|
78
|
+
faqTitle: localized.faqTitle,
|
|
79
|
+
faq: localized.faq,
|
|
80
|
+
bibliographyTitle: localized.bibliographyTitle,
|
|
81
|
+
bibliography,
|
|
82
|
+
howTo: localized.howTo,
|
|
83
|
+
schemas: [appSchema, faqSchema, howToSchema],
|
|
84
|
+
seo: [
|
|
85
|
+
{ type: 'title', text: localized.seoTitle, level: 2 },
|
|
86
|
+
{ type: 'paragraph', html: localized.seoIntro },
|
|
87
|
+
{ type: 'stats', columns: 3, items: [{ value: '2', label: ui.brandLabel, icon: 'mdi:domain' }, { value: '4', label: ui.formatLabel, icon: 'mdi:crop' }, { value: '0', label: ui.activeLayer, icon: 'mdi:cat' }] },
|
|
88
|
+
{ type: 'title', text: localized.title, level: 3 },
|
|
89
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
90
|
+
{ type: 'title', text: localized.faqTitle, level: 3 },
|
|
91
|
+
{ type: 'paragraph', html: localized.seoBody },
|
|
92
|
+
{ type: 'table', headers: [ui.toolLayer, ui.titleLayer, ui.brandLabel], rows: [[ui.toolLabel, ui.titleLabel, ui.logoLabel]] },
|
|
93
|
+
{ type: 'tip', title: localized.faqTitle, html: localized.seoTip },
|
|
94
|
+
],
|
|
95
|
+
};
|