@intlayer/docs 7.3.11 → 7.3.13
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/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_nuxt.md +294 -438
- package/docs/ar/intlayer_with_react_router_v7.md +33 -4
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +516 -0
- package/docs/ar/intlayer_with_tanstack.md +2 -12
- package/docs/ar/intlayer_with_vite+vue.md +1 -0
- package/docs/de/intlayer_with_nuxt.md +284 -410
- package/docs/de/intlayer_with_react_router_v7.md +33 -4
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +573 -0
- package/docs/de/intlayer_with_tanstack.md +1 -0
- package/docs/de/intlayer_with_vite+vue.md +1 -0
- package/docs/en/intlayer_with_nuxt.md +237 -341
- package/docs/en/intlayer_with_react_router_v7.md +24 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +570 -0
- package/docs/en/intlayer_with_tanstack.md +2 -12
- package/docs/en/intlayer_with_vite+vue.md +49 -48
- package/docs/en-GB/intlayer_with_nuxt.md +254 -378
- package/docs/en-GB/intlayer_with_react_router_v7.md +33 -4
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +513 -0
- package/docs/en-GB/intlayer_with_tanstack.md +2 -12
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -0
- package/docs/es/intlayer_with_nuxt.md +271 -390
- package/docs/es/intlayer_with_react_router_v7.md +33 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +575 -0
- package/docs/es/intlayer_with_tanstack.md +1 -0
- package/docs/es/intlayer_with_vite+vue.md +1 -2
- package/docs/fr/intlayer_with_nuxt.md +278 -405
- package/docs/fr/intlayer_with_react_router_v7.md +34 -5
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +574 -0
- package/docs/fr/intlayer_with_tanstack.md +1 -0
- package/docs/fr/intlayer_with_vite+vue.md +1 -0
- package/docs/hi/intlayer_with_nuxt.md +303 -447
- package/docs/hi/intlayer_with_react_router_v7.md +33 -4
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +518 -0
- package/docs/hi/intlayer_with_tanstack.md +2 -12
- package/docs/hi/intlayer_with_vite+vue.md +1 -0
- package/docs/id/intlayer_with_nuxt.md +266 -395
- package/docs/id/intlayer_with_react_router_v7.md +29 -4
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +521 -0
- package/docs/id/intlayer_with_tanstack.md +2 -12
- package/docs/id/intlayer_with_vite+vue.md +1 -0
- package/docs/it/intlayer_with_nuxt.md +299 -423
- package/docs/it/intlayer_with_react_router_v7.md +33 -4
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +574 -0
- package/docs/it/intlayer_with_tanstack.md +1 -0
- package/docs/ja/intlayer_with_nuxt.md +309 -432
- package/docs/ja/intlayer_with_react_router_v7.md +33 -4
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +574 -0
- package/docs/ja/intlayer_with_tanstack.md +2 -12
- package/docs/ja/intlayer_with_vite+vue.md +1 -0
- package/docs/ko/intlayer_with_nuxt.md +295 -422
- package/docs/ko/intlayer_with_react_router_v7.md +33 -4
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +515 -0
- package/docs/ko/intlayer_with_tanstack.md +2 -12
- package/docs/ko/intlayer_with_vite+vue.md +1 -0
- package/docs/pl/intlayer_with_nuxt.md +273 -476
- package/docs/pl/intlayer_with_react_router_v7.md +32 -5
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +615 -0
- package/docs/pl/intlayer_with_tanstack.md +2 -12
- package/docs/pl/intlayer_with_vite+vue.md +1 -0
- package/docs/pt/intlayer_with_nuxt.md +277 -420
- package/docs/pt/intlayer_with_react_router_v7.md +28 -0
- package/docs/pt/intlayer_with_tanstack.md +1 -0
- package/docs/ru/intlayer_with_nuxt.md +287 -425
- package/docs/ru/intlayer_with_react_router_v7.md +33 -4
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +574 -0
- package/docs/ru/intlayer_with_tanstack.md +1 -0
- package/docs/ru/intlayer_with_vite+vue.md +1 -0
- package/docs/tr/intlayer_with_nuxt.md +313 -406
- package/docs/tr/intlayer_with_react_router_v7.md +33 -4
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +572 -0
- package/docs/tr/intlayer_with_tanstack.md +2 -12
- package/docs/tr/intlayer_with_vite+vue.md +1 -0
- package/docs/vi/intlayer_with_nuxt.md +273 -418
- package/docs/vi/intlayer_with_react_router_v7.md +29 -4
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +523 -0
- package/docs/vi/intlayer_with_tanstack.md +2 -12
- package/docs/vi/intlayer_with_vite+vue.md +1 -0
- package/docs/zh/intlayer_with_nuxt.md +300 -461
- package/docs/zh/intlayer_with_react_router_v7.md +33 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +516 -0
- package/docs/zh/intlayer_with_tanstack.md +2 -12
- package/docs/zh/intlayer_with_vite+vue.md +1 -0
- package/package.json +10 -11
- package/src/generated/docs.entry.ts +19 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt: 2025-
|
|
3
|
-
updatedAt: 2025-
|
|
4
|
-
title: Nuxt
|
|
5
|
-
description: Nuxt ve Vue web sitenizi çok dilli hale
|
|
2
|
+
createdAt: 2025-06-18
|
|
3
|
+
updatedAt: 2025-12-07
|
|
4
|
+
title: Nuxt ve Vue uygulamanızı nasıl çevirirsiniz – i18n rehberi 2025
|
|
5
|
+
description: Nuxt ve Vue web sitenizi çok dilli hale nasıl getireceğinizi keşfedin. Uluslararasılaştırma (i18n) ve çeviri için dokümantasyonu takip edin.
|
|
6
6
|
keywords:
|
|
7
7
|
- Uluslararasılaştırma
|
|
8
8
|
- Dokümantasyon
|
|
@@ -14,16 +14,22 @@ slugs:
|
|
|
14
14
|
- doc
|
|
15
15
|
- environment
|
|
16
16
|
- nuxt-and-vue
|
|
17
|
-
applicationTemplate: https://github.com/aymericzip/intlayer-nuxt-template
|
|
17
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-nuxt-4-template
|
|
18
|
+
youtubeVideo: https://www.youtube.com/watch?v=nhUcUAVQ6eQ
|
|
18
19
|
history:
|
|
20
|
+
- version: 7.3.11
|
|
21
|
+
date: 2025-12-07
|
|
22
|
+
changes: LocaleSwitcher, SEO, metadata güncellendi
|
|
19
23
|
- version: 5.5.10
|
|
20
24
|
date: 2025-06-29
|
|
21
|
-
changes:
|
|
25
|
+
changes: Geçmiş başlatıldı
|
|
22
26
|
---
|
|
23
27
|
|
|
24
|
-
# Intlayer
|
|
28
|
+
# Intlayer kullanarak Nuxt ve Vue web sitenizi çevirin | Uluslararasılaştırma (i18n)
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
## İçindekiler
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
27
33
|
|
|
28
34
|
## Intlayer Nedir?
|
|
29
35
|
|
|
@@ -31,18 +37,39 @@ GitHub'da [Uygulama Şablonu](https://github.com/aymericzip/intlayer-nuxt-templa
|
|
|
31
37
|
|
|
32
38
|
Intlayer ile şunları yapabilirsiniz:
|
|
33
39
|
|
|
34
|
-
- **Bileşen
|
|
35
|
-
- **Meta verileri, rotaları ve içeriği dinamik olarak yerelleştirin
|
|
36
|
-
- **Otomatik tamamlama ve hata
|
|
37
|
-
- **Dinamik
|
|
40
|
+
- **Bileşen seviyesinde deklaratif sözlükler kullanarak çevirileri kolayca yönetin.**
|
|
41
|
+
- **Meta verileri, rotaları ve içeriği dinamik olarak yerelleştirin.**
|
|
42
|
+
- **Otomatik oluşturulan tiplerle TypeScript desteğini sağlayarak otomatik tamamlama ve hata tespitini geliştirin.**
|
|
43
|
+
- **Dinamik dil algılama ve değiştirme gibi gelişmiş özelliklerden faydalanın.**
|
|
38
44
|
|
|
39
45
|
---
|
|
40
46
|
|
|
41
|
-
## Nuxt Uygulamasında Intlayer Kurulumu Adım Adım
|
|
47
|
+
## Nuxt Uygulamasında Intlayer Kurulumu Adım Adım Rehber
|
|
48
|
+
|
|
49
|
+
<Tab defaultTab="video">
|
|
50
|
+
<TabItem label="Video" value="video">
|
|
51
|
+
|
|
52
|
+
<iframe title="Nuxt ve Vue uygulamanızı Intlayer kullanarak nasıl çevirirsiniz? Intlayer'ı keşfedin" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/nhUcUAVQ6eQ?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
53
|
+
|
|
54
|
+
</TabItem>
|
|
55
|
+
<TabItem label="Kod" value="code">
|
|
56
|
+
|
|
57
|
+
<iframe
|
|
58
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-nuxt-4-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
59
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
60
|
+
title="Demo CodeSandbox - Intlayer kullanarak uygulamanızı nasıl uluslararasılaştırırsınız"
|
|
61
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
62
|
+
loading="lazy"
|
|
63
|
+
/>
|
|
42
64
|
|
|
43
|
-
|
|
65
|
+
</TabItem>
|
|
66
|
+
</Tab>
|
|
44
67
|
|
|
45
|
-
|
|
68
|
+
GitHub'da [Uygulama Şablonunu](https://github.com/aymericzip/intlayer-nuxt-4-template) inceleyin.
|
|
69
|
+
|
|
70
|
+
### Adım 1: Bağımlılıkları Yükleyin
|
|
71
|
+
|
|
72
|
+
Gerekli paketleri npm kullanarak yükleyin:
|
|
46
73
|
|
|
47
74
|
```bash packageManager="npm"
|
|
48
75
|
npm install intlayer vue-intlayer
|
|
@@ -61,17 +88,17 @@ yarn add --save-dev nuxt-intlayer
|
|
|
61
88
|
|
|
62
89
|
- **intlayer**
|
|
63
90
|
|
|
64
|
-
|
|
91
|
+
Konfigürasyon yönetimi, çeviri, [içerik beyanı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/content_file.md), transpile etme ve [CLI komutları](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/index.md) için uluslararasılaştırma araçları sağlayan temel paket.
|
|
65
92
|
|
|
66
93
|
- **vue-intlayer**
|
|
67
|
-
Intlayer'ı Vue
|
|
94
|
+
Intlayer'ı Vue uygulamasıyla entegre eden paket. Vue bileşenleri için composables sağlar.
|
|
68
95
|
|
|
69
96
|
- **nuxt-intlayer**
|
|
70
|
-
Intlayer'ı
|
|
97
|
+
Nuxt uygulamalarıyla Intlayer'ı entegre eden Nuxt modülü. Otomatik kurulum, yerel algılama için middleware, çerez yönetimi ve URL yönlendirmesi sağlar.
|
|
71
98
|
|
|
72
|
-
### Adım 2:
|
|
99
|
+
### Adım 2: Projenizin yapılandırması
|
|
73
100
|
|
|
74
|
-
Uygulamanızın dillerini yapılandırmak için bir
|
|
101
|
+
Uygulamanızın dillerini yapılandırmak için bir konfigürasyon dosyası oluşturun:
|
|
75
102
|
|
|
76
103
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
77
104
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -82,13 +109,10 @@ const config: IntlayerConfig = {
|
|
|
82
109
|
Locales.ENGLISH,
|
|
83
110
|
Locales.FRENCH,
|
|
84
111
|
Locales.SPANISH,
|
|
85
|
-
// Diğer
|
|
112
|
+
// Diğer dilleriniz
|
|
86
113
|
],
|
|
87
114
|
defaultLocale: Locales.ENGLISH,
|
|
88
115
|
},
|
|
89
|
-
content: {
|
|
90
|
-
contentDir: ["."], // Çünkü varsayılan olarak Intayer, içerik bildirim dosyalarını `./src` dizininden izleyecek
|
|
91
|
-
},
|
|
92
116
|
};
|
|
93
117
|
|
|
94
118
|
export default config;
|
|
@@ -104,13 +128,10 @@ const config = {
|
|
|
104
128
|
Locales.ENGLISH,
|
|
105
129
|
Locales.FRENCH,
|
|
106
130
|
Locales.SPANISH,
|
|
107
|
-
// Diğer
|
|
131
|
+
// Diğer dilleriniz
|
|
108
132
|
],
|
|
109
133
|
defaultLocale: Locales.ENGLISH,
|
|
110
134
|
},
|
|
111
|
-
content: {
|
|
112
|
-
contentDir: ["."],
|
|
113
|
-
},
|
|
114
135
|
};
|
|
115
136
|
|
|
116
137
|
export default config;
|
|
@@ -126,21 +147,18 @@ const config = {
|
|
|
126
147
|
Locales.ENGLISH,
|
|
127
148
|
Locales.FRENCH,
|
|
128
149
|
Locales.SPANISH,
|
|
129
|
-
// Diğer
|
|
150
|
+
// Diğer dilleriniz
|
|
130
151
|
],
|
|
131
152
|
defaultLocale: Locales.ENGLISH,
|
|
132
153
|
},
|
|
133
|
-
content: {
|
|
134
|
-
contentDir: ["."],
|
|
135
|
-
},
|
|
136
154
|
};
|
|
137
155
|
|
|
138
156
|
module.exports = config;
|
|
139
157
|
```
|
|
140
158
|
|
|
141
|
-
> Bu yapılandırma dosyası aracılığıyla, yerelleştirilmiş URL'
|
|
159
|
+
> Bu yapılandırma dosyası aracılığıyla, yerelleştirilmiş URL'leri, middleware yönlendirmesini, çerez isimlerini, içerik bildirimlerinizin konumunu ve uzantısını ayarlayabilir, Intlayer loglarını konsolda devre dışı bırakabilir ve daha fazlasını yapabilirsiniz. Mevcut parametrelerin tam listesi için [yapılandırma dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) bakınız.
|
|
142
160
|
|
|
143
|
-
### Adım 3:
|
|
161
|
+
### Adım 3: Intlayer'ı Nuxt Yapılandırmanıza Entegre Edin
|
|
144
162
|
|
|
145
163
|
Intlayer modülünü Nuxt yapılandırmanıza ekleyin:
|
|
146
164
|
|
|
@@ -153,203 +171,46 @@ export default defineNuxtConfig({
|
|
|
153
171
|
});
|
|
154
172
|
```
|
|
155
173
|
|
|
156
|
-
> `nuxt-intlayer` modülü, Intlayer'ın Nuxt ile entegrasyonunu otomatik olarak yönetir. İçerik
|
|
174
|
+
> `nuxt-intlayer` modülü, Intlayer'ın Nuxt ile entegrasyonunu otomatik olarak yönetir. İçerik bildirimlerinin oluşturulmasını ayarlar, geliştirme modunda dosyaları izler, yerel tespit için middleware sağlar ve yerelleştirilmiş yönlendirmeyi yönetir.
|
|
157
175
|
|
|
158
176
|
### Adım 4: İçeriğinizi Bildirin
|
|
159
177
|
|
|
160
178
|
Çevirileri depolamak için içerik bildirimlerinizi oluşturun ve yönetin:
|
|
161
179
|
|
|
162
|
-
```tsx fileName="
|
|
163
|
-
import {
|
|
180
|
+
```tsx fileName="content/home-page.content.ts" contentDeclarationFormat="typescript"
|
|
181
|
+
import { type Dictionary, t } from "intlayer";
|
|
164
182
|
|
|
165
|
-
const
|
|
166
|
-
key: "
|
|
183
|
+
const content = {
|
|
184
|
+
key: "home-page",
|
|
167
185
|
content: {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
173
|
-
}),
|
|
174
|
-
checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
|
|
175
|
-
nuxtIntlayer: t({
|
|
176
|
-
en: "Nuxt Intlayer documentation",
|
|
177
|
-
fr: "Documentation de Nuxt Intlayer",
|
|
178
|
-
es: "Documentación de Nuxt Intlayer",
|
|
179
|
-
}),
|
|
180
|
-
learnMore: t({
|
|
181
|
-
en: "Learn more about Nuxt in the ",
|
|
182
|
-
fr: "En savoir plus sur Nuxt dans la ",
|
|
183
|
-
es: "Aprenda más sobre Nuxt en la ",
|
|
186
|
+
title: t({
|
|
187
|
+
en: "Hello world",
|
|
188
|
+
fr: "Bonjour le monde",
|
|
189
|
+
es: "Hola mundo",
|
|
184
190
|
}),
|
|
185
|
-
|
|
186
|
-
en: "
|
|
187
|
-
fr: "
|
|
188
|
-
es: "
|
|
191
|
+
metaTitle: t({
|
|
192
|
+
en: "Welcome | My Application",
|
|
193
|
+
fr: "Bienvenue | Mon Application",
|
|
194
|
+
es: "Bienvenido | Mi Aplicación",
|
|
189
195
|
}),
|
|
190
|
-
|
|
191
|
-
en: "
|
|
192
|
-
fr: "
|
|
193
|
-
es: "
|
|
196
|
+
metaDescription: t({
|
|
197
|
+
en: "Discover your multilingual Nuxt app homepage powered by Intlayer.",
|
|
198
|
+
fr: "Découvrez la page d'accueil multilingue de votre application Nuxt propulsée par Intlayer.",
|
|
199
|
+
es: "Descubre la página de inicio multilingüe de tu aplicación Nuxt impulsada por Intlayer.",
|
|
194
200
|
}),
|
|
195
201
|
},
|
|
196
202
|
} satisfies Dictionary;
|
|
197
203
|
|
|
198
|
-
export default
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
```javascript fileName="components/helloWorld.content.mjs" contentDeclarationFormat="esm"
|
|
202
|
-
import { t } from "intlayer";
|
|
203
|
-
|
|
204
|
-
/** @type {import('intlayer').Dictionary} */
|
|
205
|
-
const helloWorldContent = {
|
|
206
|
-
key: "helloworld",
|
|
207
|
-
content: {
|
|
208
|
-
count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
|
|
209
|
-
edit: t({
|
|
210
|
-
en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
211
|
-
fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
212
|
-
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
213
|
-
}),
|
|
214
|
-
checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
|
|
215
|
-
nuxtIntlayer: t({
|
|
216
|
-
en: "Nuxt Intlayer documentation",
|
|
217
|
-
fr: "Documentation de Nuxt Intlayer",
|
|
218
|
-
es: "Documentación de Nuxt Intlayer",
|
|
219
|
-
}),
|
|
220
|
-
learnMore: t({
|
|
221
|
-
en: "Learn more about Nuxt in the ",
|
|
222
|
-
fr: "En savoir plus sur Nuxt dans la ",
|
|
223
|
-
es: "Aprenda más sobre Nuxt en la ",
|
|
224
|
-
}),
|
|
225
|
-
nuxtDocs: t({
|
|
226
|
-
en: "Nuxt Documentation",
|
|
227
|
-
fr: "Documentation Nuxt",
|
|
228
|
-
es: "Documentación de Nuxt",
|
|
229
|
-
}),
|
|
230
|
-
readTheDocs: t({
|
|
231
|
-
en: "Click on the Nuxt logo to learn more",
|
|
232
|
-
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
233
|
-
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
234
|
-
}),
|
|
235
|
-
},
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
export default helloWorldContent;
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
```javascript fileName="components/helloWorld.content.cjs" codeFormat="commonjs"
|
|
242
|
-
const { t } = require("intlayer");
|
|
243
|
-
|
|
244
|
-
/** @type {import('intlayer').Dictionary} */
|
|
245
|
-
const helloWorldContent = {
|
|
246
|
-
key: "helloworld",
|
|
247
|
-
content: {
|
|
248
|
-
count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
|
|
249
|
-
edit: t({
|
|
250
|
-
en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
251
|
-
fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
252
|
-
es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
|
|
253
|
-
}),
|
|
254
|
-
checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
|
|
255
|
-
nuxtIntlayer: t({
|
|
256
|
-
en: "Nuxt Intlayer documentation",
|
|
257
|
-
fr: "Documentation de Nuxt Intlayer",
|
|
258
|
-
es: "Documentación de Nuxt Intlayer",
|
|
259
|
-
}),
|
|
260
|
-
learnMore: t({
|
|
261
|
-
en: "Learn more about Nuxt in the ",
|
|
262
|
-
fr: "En savoir plus sur Nuxt dans la ",
|
|
263
|
-
es: "Aprenda más sobre Nuxt en la ",
|
|
264
|
-
}),
|
|
265
|
-
nuxtDocs: t({
|
|
266
|
-
en: "Nuxt Documentation",
|
|
267
|
-
fr: "Documentation Nuxt",
|
|
268
|
-
es: "Documentación de Nuxt",
|
|
269
|
-
}),
|
|
270
|
-
readTheDocs: t({
|
|
271
|
-
en: "Click on the Nuxt logo to learn more",
|
|
272
|
-
fr: "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
273
|
-
es: "Haga clic en el logotipo de Nuxt para obtener más información",
|
|
274
|
-
}),
|
|
275
|
-
},
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
module.exports = helloWorldContent;
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
```json fileName="components/helloWorld.content.json" contentDeclarationFormat="json"
|
|
282
|
-
{
|
|
283
|
-
"$schema": "https://intlayer.org/schema.json",
|
|
284
|
-
"key": "helloworld",
|
|
285
|
-
"content": {
|
|
286
|
-
"count": {
|
|
287
|
-
"nodeType": "translation",
|
|
288
|
-
"translation": {
|
|
289
|
-
"en": "count is ",
|
|
290
|
-
"fr": "le compte est ",
|
|
291
|
-
"es": "el recuento es "
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
"edit": {
|
|
295
|
-
"nodeType": "translation",
|
|
296
|
-
"translation": {
|
|
297
|
-
"en": "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
|
|
298
|
-
"fr": "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
|
|
299
|
-
"es": "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR"
|
|
300
|
-
}
|
|
301
|
-
},
|
|
302
|
-
"checkOut": {
|
|
303
|
-
"nodeType": "translation",
|
|
304
|
-
"translation": {
|
|
305
|
-
"en": "Check out ",
|
|
306
|
-
"fr": "Vérifiez ",
|
|
307
|
-
"es": "Compruebe "
|
|
308
|
-
}
|
|
309
|
-
},
|
|
310
|
-
"nuxtIntlayer": {
|
|
311
|
-
"nodeType": "translation",
|
|
312
|
-
"translation": {
|
|
313
|
-
"en": "Nuxt Intlayer documentation",
|
|
314
|
-
"fr": "Documentation de Nuxt Intlayer",
|
|
315
|
-
"es": "Documentación de Nuxt Intlayer"
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
"learnMore": {
|
|
319
|
-
"nodeType": "translation",
|
|
320
|
-
"translation": {
|
|
321
|
-
"en": "Learn more about Nuxt in the ",
|
|
322
|
-
"fr": "En savoir plus sur Nuxt dans la ",
|
|
323
|
-
"es": "Aprenda más sobre Nuxt en la "
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
"nuxtDocs": {
|
|
327
|
-
"nodeType": "translation",
|
|
328
|
-
"translation": {
|
|
329
|
-
"en": "Nuxt Documentation",
|
|
330
|
-
"fr": "Documentation Nuxt",
|
|
331
|
-
"es": "Documentación de Nuxt"
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
"readTheDocs": {
|
|
335
|
-
"nodeType": "translation",
|
|
336
|
-
"translation": {
|
|
337
|
-
"en": "Click on the Nuxt logo to learn more",
|
|
338
|
-
"fr": "Cliquez sur le logo Nuxt pour en savoir plus",
|
|
339
|
-
"es": "Haga clic en el logotipo de Nuxt para obtener más información"
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
204
|
+
export default content;
|
|
344
205
|
```
|
|
345
206
|
|
|
346
|
-
> İçerik bildirimleriniz,
|
|
207
|
+
> İçerik bildirimleriniz, uygulamanızın herhangi bir yerinde tanımlanabilir, yeter ki `contentDir` dizini içinde yer alsın (varsayılan olarak `./src`). Ve içerik bildirim dosya uzantısıyla eşleşsin (varsayılan olarak `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
347
208
|
|
|
348
|
-
> Daha fazla detay için [içerik bildirim dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/
|
|
209
|
+
> Daha fazla detay için [içerik bildirim dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/content_file.md) bakınız.
|
|
349
210
|
|
|
350
|
-
### Adım 5:
|
|
211
|
+
### Adım 5: Intlayer'ı Kodunuzda Kullanın
|
|
351
212
|
|
|
352
|
-
`useIntlayer` composable'
|
|
213
|
+
Nuxt uygulamanızın her yerinde içerik sözlüklerinize `useIntlayer` composable'ı ile erişin:
|
|
353
214
|
|
|
354
215
|
```vue fileName="components/HelloWorld.vue"
|
|
355
216
|
<script setup lang="ts">
|
|
@@ -403,81 +264,71 @@ const countRef = ref(0);
|
|
|
403
264
|
Intlayer, içeriğinize erişmek için farklı API'ler sunar:
|
|
404
265
|
|
|
405
266
|
- **Bileşen tabanlı sözdizimi** (önerilen):
|
|
406
|
-
|
|
267
|
+
`<myContent />` veya `<Component :is="myContent" />` sözdizimini kullanarak içeriği bir Intlayer Node olarak render edin. Bu, [Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) ve [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md) ile sorunsuz bir şekilde entegre olur.
|
|
407
268
|
|
|
408
|
-
- **
|
|
409
|
-
|
|
269
|
+
- **Metin tabanlı sözdizimi**:
|
|
270
|
+
İçeriği Visual Editor desteği olmadan düz metin olarak render etmek için `{{ myContent }}` kullanın.
|
|
410
271
|
|
|
411
|
-
- **Ham HTML sözdizimi**:
|
|
412
|
-
|
|
272
|
+
- **Ham HTML sözdizimi**:
|
|
273
|
+
İçeriği Visual Editor desteği olmadan ham HTML olarak render etmek için `<div v-html="myContent" />` kullanın.
|
|
413
274
|
|
|
414
|
-
- **
|
|
415
|
-
`useIntlayer` composable
|
|
416
|
-
- `const content = useIntlayer("myContent");`
|
|
417
|
-
-
|
|
275
|
+
- **Yapı bozma (Destructuration) sözdizimi**:
|
|
276
|
+
`useIntlayer` composable, içerikle birlikte bir Proxy döner. Bu proxy, reaktiviteyi koruyarak içeriğe erişmek için yapı bozma yöntemiyle ayrıştırılabilir.
|
|
277
|
+
- `const content = useIntlayer("myContent");` kullanın ve `{{ content.myContent }}` / `<content.myContent />` şeklinde render edin.
|
|
278
|
+
- Ya da içeriği yapı bozma ile almak için `const { myContent } = useIntlayer("myContent");` kullanın ve `{{ myContent}}` / `<myContent/>` şeklinde render edin.
|
|
418
279
|
|
|
419
|
-
### (İsteğe Bağlı) Adım 6: İçeriğinizin dilini
|
|
280
|
+
### (İsteğe Bağlı) Adım 6: İçeriğinizin dilini değiştirin
|
|
420
281
|
|
|
421
|
-
İçeriğinizin dilini değiştirmek için
|
|
282
|
+
İçeriğinizin dilini değiştirmek için `useLocale` composable tarafından sağlanan `setLocale` fonksiyonunu kullanabilirsiniz. Bu fonksiyon, uygulamanın yerel ayarını belirlemenize ve içeriği buna göre güncellemenize olanak tanır.
|
|
422
283
|
|
|
423
|
-
|
|
284
|
+
`NuxtLink` kullanarak diller arasında geçiş yapmak için bir bileşen oluşturun. **Dil değiştirme için butonlar yerine link kullanmak, SEO ve sayfa keşfedilebilirliği açısından en iyi uygulamadır**, çünkü bu sayede arama motorları sayfalarınızın tüm yerelleştirilmiş versiyonlarını tarayabilir ve indeksleyebilir.
|
|
424
285
|
|
|
425
286
|
```vue fileName="components/LocaleSwitcher.vue"
|
|
426
|
-
<template>
|
|
427
|
-
<div class="locale-switcher">
|
|
428
|
-
<select v-model="selectedLocale" @change="changeLocale">
|
|
429
|
-
<option v-for="loc in availableLocales" :key="loc" :value="loc">
|
|
430
|
-
{{ getLocaleName(loc) }}
|
|
431
|
-
</option>
|
|
432
|
-
</select>
|
|
433
|
-
</div>
|
|
434
|
-
</template>
|
|
435
|
-
|
|
436
287
|
<script setup lang="ts">
|
|
437
|
-
import {
|
|
438
|
-
import { getLocaleName } from "intlayer";
|
|
288
|
+
import { getLocaleName, getLocalizedUrl } from "intlayer";
|
|
439
289
|
import { useLocale } from "vue-intlayer";
|
|
440
290
|
|
|
441
|
-
//
|
|
291
|
+
// Nuxt useRoute'u otomatik olarak import eder
|
|
292
|
+
const route = useRoute();
|
|
442
293
|
const { locale, availableLocales, setLocale } = useLocale();
|
|
443
|
-
|
|
444
|
-
// Seçilen yerel ayarı bir ref ile takip edin
|
|
445
|
-
const selectedLocale = ref(locale.value);
|
|
446
|
-
|
|
447
|
-
// Seçim değiştiğinde yerel ayarı güncelleyin
|
|
448
|
-
const changeLocale = () => setLocale(selectedLocale.value);
|
|
449
|
-
|
|
450
|
-
// Seçilen yerel ayarı küresel yerel ayar ile senkronize tutun
|
|
451
|
-
watch(
|
|
452
|
-
() => locale.value,
|
|
453
|
-
(newLocale) => {
|
|
454
|
-
selectedLocale.value = newLocale;
|
|
455
|
-
}
|
|
456
|
-
);
|
|
457
294
|
</script>
|
|
295
|
+
|
|
296
|
+
<template>
|
|
297
|
+
<nav class="locale-switcher">
|
|
298
|
+
<NuxtLink
|
|
299
|
+
v-for="localeEl in availableLocales"
|
|
300
|
+
:key="localeEl"
|
|
301
|
+
:to="getLocalizedUrl(route.fullPath, localeEl)"
|
|
302
|
+
class="locale-link"
|
|
303
|
+
:class="{ 'active-locale': localeEl === locale }"
|
|
304
|
+
@click="setLocale(localeEl)"
|
|
305
|
+
>
|
|
306
|
+
{{ getLocaleName(localeEl) }}
|
|
307
|
+
</NuxtLink>
|
|
308
|
+
</nav>
|
|
458
309
|
</template>
|
|
310
|
+
```
|
|
459
311
|
|
|
460
|
-
|
|
461
|
-
.locale-switcher {
|
|
462
|
-
margin: 1rem 0;
|
|
463
|
-
}
|
|
312
|
+
> `NuxtLink`'i uygun `href` öznitelikleriyle ( `getLocalizedUrl` aracılığıyla) kullanmak, arama motorlarının sayfalarınızın tüm dil varyantlarını keşfetmesini sağlar. Bu, arama motoru tarayıcılarının takip etmeyebileceği yalnızca JavaScript ile yapılan dil değiştirmeye tercih edilir.
|
|
464
313
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
314
|
+
Sonra, `app.vue` dosyanızı layout kullanacak şekilde ayarlayın:
|
|
315
|
+
|
|
316
|
+
```vue fileName="app.vue"
|
|
317
|
+
<template>
|
|
318
|
+
<NuxtLayout>
|
|
319
|
+
<NuxtPage />
|
|
320
|
+
</NuxtLayout>
|
|
321
|
+
</template>
|
|
471
322
|
```
|
|
472
323
|
|
|
473
|
-
|
|
324
|
+
### (İsteğe Bağlı) Adım 6b: Navigasyonlu Bir Layout Oluşturun
|
|
474
325
|
|
|
475
|
-
|
|
326
|
+
Nuxt layout'ları, sayfalarınız için ortak bir yapı tanımlamanıza olanak tanır. Dil değiştirici ve navigasyonu içeren varsayılan bir layout oluşturun:
|
|
327
|
+
|
|
328
|
+
```vue fileName="layouts/default.vue"
|
|
476
329
|
<script setup lang="ts">
|
|
477
|
-
import
|
|
330
|
+
import Links from "~/components/Links.vue";
|
|
478
331
|
import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
|
|
479
|
-
|
|
480
|
-
const content = useIntlayer("app"); // İlgili intlayer bildirim dosyası oluşturun
|
|
481
332
|
</script>
|
|
482
333
|
|
|
483
334
|
<template>
|
|
@@ -486,15 +337,20 @@ const content = useIntlayer("app"); // İlgili intlayer bildirim dosyası oluşt
|
|
|
486
337
|
<LocaleSwitcher />
|
|
487
338
|
</header>
|
|
488
339
|
<main>
|
|
489
|
-
<
|
|
340
|
+
<slot />
|
|
490
341
|
</main>
|
|
342
|
+
|
|
343
|
+
<Links href="/">Ana Sayfa</Links>
|
|
344
|
+
<Links href="/about">Hakkında</Links>
|
|
491
345
|
</div>
|
|
492
346
|
</template>
|
|
493
347
|
```
|
|
494
348
|
|
|
495
|
-
|
|
349
|
+
`Links` bileşeni (aşağıda gösterilmiştir), dahili navigasyon bağlantılarının otomatik olarak yerelleştirilmesini sağlar.
|
|
350
|
+
|
|
351
|
+
### (İsteğe Bağlı) Adım 7: Uygulamanıza yerelleştirilmiş Yönlendirme ekleyin
|
|
496
352
|
|
|
497
|
-
`nuxt-intlayer` modülünü
|
|
353
|
+
Nuxt, `nuxt-intlayer` modülünü kullandığınızda yerelleştirilmiş yönlendirmeyi otomatik olarak yönetir. Bu, sayfalar dizin yapınıza dayanarak her dil için otomatik olarak rotalar oluşturur.
|
|
498
354
|
|
|
499
355
|
Örnek:
|
|
500
356
|
|
|
@@ -506,266 +362,317 @@ pages/
|
|
|
506
362
|
└── index.vue → /contact, /fr/contact, /es/contact
|
|
507
363
|
```
|
|
508
364
|
|
|
509
|
-
Yerelleştirilmiş
|
|
365
|
+
Yerelleştirilmiş sayfalar oluşturmak için, `pages/` dizininde Vue dosyalarınızı oluşturmanız yeterlidir. İşte iki örnek sayfa:
|
|
510
366
|
|
|
511
|
-
|
|
367
|
+
**Ana Sayfa (`pages/index.vue`):**
|
|
368
|
+
|
|
369
|
+
```vue fileName="pages/index.vue"
|
|
512
370
|
<script setup lang="ts">
|
|
513
371
|
import { useIntlayer } from "vue-intlayer";
|
|
514
372
|
|
|
515
|
-
const content = useIntlayer("
|
|
373
|
+
const content = useIntlayer("home-page");
|
|
374
|
+
|
|
375
|
+
useHead({
|
|
376
|
+
title: content.metaTitle.value,
|
|
377
|
+
meta: [
|
|
378
|
+
{
|
|
379
|
+
name: "description",
|
|
380
|
+
content: content.metaDescription.value,
|
|
381
|
+
},
|
|
382
|
+
],
|
|
383
|
+
});
|
|
516
384
|
</script>
|
|
517
385
|
|
|
518
386
|
<template>
|
|
519
|
-
<
|
|
520
|
-
<h1>{{ content.title }}</h1>
|
|
521
|
-
<p>{{ content.description }}</p>
|
|
522
|
-
</div>
|
|
387
|
+
<h1><content.title /></h1>
|
|
523
388
|
</template>
|
|
524
389
|
```
|
|
525
390
|
|
|
526
|
-
`
|
|
391
|
+
**Hakkında Sayfası (`pages/about.vue`):**
|
|
527
392
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
- Yerel ayar çerezlerini yönetir
|
|
532
|
-
- Kullanıcıları uygun yerelleştirilmiş URL'ye yönlendirir
|
|
393
|
+
```vue fileName="pages/about.vue"
|
|
394
|
+
<script setup lang="ts">
|
|
395
|
+
import { useIntlayer } from "vue-intlayer";
|
|
533
396
|
|
|
534
|
-
|
|
397
|
+
const content = useIntlayer("about-page");
|
|
535
398
|
|
|
536
|
-
|
|
399
|
+
useHead({
|
|
400
|
+
title: content.metaTitle.raw, // Primitif string erişimi için .raw kullanın
|
|
401
|
+
meta: [
|
|
402
|
+
{
|
|
403
|
+
name: "description",
|
|
404
|
+
content: content.metaDescription.raw, // Primitif string erişimi için .raw kullanın
|
|
405
|
+
},
|
|
406
|
+
],
|
|
407
|
+
});
|
|
408
|
+
</script>
|
|
537
409
|
|
|
538
|
-
```vue fileName="components/LocalizedLink.vue"
|
|
539
410
|
<template>
|
|
540
|
-
<
|
|
541
|
-
<slot />
|
|
542
|
-
</NuxtLink>
|
|
411
|
+
<h1><content.title /></h1>
|
|
543
412
|
</template>
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
> Not: `useHead` Nuxt'ta otomatik olarak içe aktarılır. İçerik değerlerine ihtiyaçlarınıza bağlı olarak `.value` (reaktif) veya `.raw` (primitif string) ile erişebilirsiniz.
|
|
416
|
+
|
|
417
|
+
`nuxt-intlayer` modülü otomatik olarak:
|
|
418
|
+
|
|
419
|
+
- Kullanıcının tercih ettiği yerel dili algılar
|
|
420
|
+
- URL üzerinden yerel dil değişimini yönetir
|
|
421
|
+
- Uygun `<html lang="">` özniteliğini ayarlar
|
|
422
|
+
- Yerel dil çerezlerini yönetir
|
|
423
|
+
- Kullanıcıları uygun yerelleştirilmiş URL'ye yönlendirir
|
|
424
|
+
|
|
425
|
+
### (İsteğe Bağlı) Adım 8: Yerelleştirilmiş Bir Link Bileşeni Oluşturma
|
|
544
426
|
|
|
427
|
+
Uygulamanızın navigasyonunun mevcut locale'a uygun olmasını sağlamak için özel bir `Links` bileşeni oluşturabilirsiniz. Bu bileşen, dahili URL'lerin önüne otomatik olarak mevcut dili ekler; bu, **SEO ve sayfa keşfedilebilirliği** için çok önemlidir.
|
|
428
|
+
|
|
429
|
+
```vue fileName="components/Links.vue"
|
|
545
430
|
<script setup lang="ts">
|
|
546
|
-
import { computed } from "vue";
|
|
547
431
|
import { getLocalizedUrl } from "intlayer";
|
|
548
432
|
import { useLocale } from "vue-intlayer";
|
|
549
433
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
434
|
+
interface Props {
|
|
435
|
+
href: string;
|
|
436
|
+
locale?: string;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
const props = defineProps<Props>();
|
|
440
|
+
|
|
441
|
+
const { locale: currentLocale } = useLocale();
|
|
556
442
|
|
|
557
|
-
|
|
443
|
+
// Son yolu hesapla
|
|
444
|
+
const finalPath = computed(() => {
|
|
445
|
+
// 1. Linkin harici olup olmadığını kontrol et
|
|
446
|
+
const isExternal = /^https?:\/\//.test(props.href || "");
|
|
558
447
|
|
|
559
|
-
//
|
|
560
|
-
|
|
448
|
+
// 2. Eğer harici ise, olduğu gibi döndür (NuxtLink <a> etiketi oluşturmayı yönetir)
|
|
449
|
+
if (isExternal) return props.href;
|
|
561
450
|
|
|
562
|
-
//
|
|
563
|
-
const
|
|
564
|
-
|
|
565
|
-
);
|
|
451
|
+
// 3. Eğer dahili ise, URL'yi yerelleştir
|
|
452
|
+
const targetLocale = props.locale || currentLocale.value;
|
|
453
|
+
return getLocalizedUrl(props.href, targetLocale);
|
|
454
|
+
});
|
|
566
455
|
</script>
|
|
456
|
+
|
|
457
|
+
<template>
|
|
458
|
+
<NuxtLink :to="finalPath" v-bind="$attrs">
|
|
459
|
+
<slot />
|
|
460
|
+
</NuxtLink>
|
|
461
|
+
</template>
|
|
567
462
|
```
|
|
568
463
|
|
|
569
|
-
|
|
464
|
+
Sonra bu bileşeni uygulamanızın her yerinde kullanabilirsiniz:
|
|
465
|
+
|
|
466
|
+
```vue fileName="layouts/default.vue"
|
|
467
|
+
<script setup lang="ts">
|
|
468
|
+
import Links from "~/components/Links.vue";
|
|
469
|
+
import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
|
|
470
|
+
</script>
|
|
570
471
|
|
|
571
|
-
```vue fileName="pages/index.vue"
|
|
572
472
|
<template>
|
|
573
473
|
<div>
|
|
574
|
-
<
|
|
575
|
-
|
|
576
|
-
</
|
|
577
|
-
<
|
|
578
|
-
|
|
579
|
-
</
|
|
474
|
+
<header>
|
|
475
|
+
<LocaleSwitcher />
|
|
476
|
+
</header>
|
|
477
|
+
<main>
|
|
478
|
+
<slot />
|
|
479
|
+
</main>
|
|
480
|
+
|
|
481
|
+
<Links href="/">Anasayfa</Links>
|
|
482
|
+
<Links href="/about">Hakkında</Links>
|
|
580
483
|
</div>
|
|
581
484
|
</template>
|
|
582
|
-
|
|
583
|
-
<script setup lang="ts">
|
|
584
|
-
import { useIntlayer } from "vue-intlayer";
|
|
585
|
-
import LocalizedLink from "~/components/LocalizedLink.vue";
|
|
586
|
-
|
|
587
|
-
const content = useIntlayer("home");
|
|
588
|
-
</script>
|
|
589
485
|
```
|
|
590
486
|
|
|
487
|
+
> `NuxtLink`'i yerelleştirilmiş yollarla kullanarak şunları sağlarsınız:
|
|
488
|
+
>
|
|
489
|
+
> - Arama motorları sayfalarınızın tüm dil versiyonlarını tarayabilir ve dizine ekleyebilir
|
|
490
|
+
> - Kullanıcılar yerelleştirilmiş URL'leri doğrudan paylaşabilir
|
|
491
|
+
> - Tarayıcı geçmişi, dil önekli URL'lerle doğru şekilde çalışır
|
|
492
|
+
|
|
591
493
|
### (İsteğe Bağlı) Adım 9: Meta Verileri ve SEO'yu Yönetme
|
|
592
494
|
|
|
593
|
-
Nuxt, mükemmel SEO yetenekleri
|
|
495
|
+
Nuxt, `useHead` composable (otomatik olarak içe aktarılır) aracılığıyla mükemmel SEO yetenekleri sunar. Intlayer'ı, yerelleştirilmiş meta verileri yönetmek için `.raw` veya `.value` erişicisini kullanarak temel string değerini almak için kullanabilirsiniz:
|
|
594
496
|
|
|
595
497
|
```vue fileName="pages/about.vue"
|
|
596
498
|
<script setup lang="ts">
|
|
597
|
-
import {
|
|
598
|
-
import { getIntlayer } from "intlayer";
|
|
599
|
-
import { useLocale } from "vue-intlayer";
|
|
499
|
+
import { useIntlayer } from "vue-intlayer";
|
|
600
500
|
|
|
601
|
-
|
|
602
|
-
const content =
|
|
501
|
+
// useHead Nuxt'ta otomatik olarak içe aktarılır
|
|
502
|
+
const content = useIntlayer("about-page");
|
|
603
503
|
|
|
604
|
-
|
|
605
|
-
title: content.
|
|
606
|
-
|
|
504
|
+
useHead({
|
|
505
|
+
title: content.metaTitle.raw, // Temel string erişimi için .raw kullanın
|
|
506
|
+
meta: [
|
|
507
|
+
{
|
|
508
|
+
name: "description",
|
|
509
|
+
content: content.metaDescription.raw, // İlkel string erişimi için .raw kullanın
|
|
510
|
+
},
|
|
511
|
+
],
|
|
607
512
|
});
|
|
608
513
|
</script>
|
|
609
514
|
|
|
610
515
|
<template>
|
|
611
|
-
<
|
|
612
|
-
<h1>{{ content.pageTitle }}</h1>
|
|
613
|
-
<p>{{ content.pageContent }}</p>
|
|
614
|
-
</div>
|
|
516
|
+
<h1><content.title /></h1>
|
|
615
517
|
</template>
|
|
616
518
|
```
|
|
617
519
|
|
|
618
|
-
|
|
520
|
+
> Alternatif olarak, Vue reaktivitesi olmadan içeriği almak için `import { getIntlayer } from "intlayer"` fonksiyonunu kullanabilirsiniz.
|
|
521
|
+
|
|
522
|
+
> **İçerik değerlerine erişim:**
|
|
523
|
+
>
|
|
524
|
+
> - İlkel string değeri almak için `.raw` kullanın (reaktif değil)
|
|
525
|
+
> - Reaktif değeri almak için `.value` kullanın
|
|
526
|
+
> - Görsel Editör desteği için `<content.key />` bileşen sözdizimini kullanın
|
|
527
|
+
|
|
528
|
+
İlgili içerik bildirimi oluşturun:
|
|
619
529
|
|
|
620
|
-
```ts fileName="pages/about-
|
|
530
|
+
```ts fileName="pages/about-page.content.ts" contentDeclarationFormat="typescript"
|
|
621
531
|
import { t, type Dictionary } from "intlayer";
|
|
622
|
-
import type { useSeoMeta } from "nuxt/app";
|
|
623
532
|
|
|
624
|
-
const
|
|
625
|
-
key: "about-
|
|
533
|
+
const aboutPageContent = {
|
|
534
|
+
key: "about-page",
|
|
626
535
|
content: {
|
|
627
|
-
|
|
628
|
-
en: "
|
|
536
|
+
metaTitle: t({
|
|
537
|
+
en: "Hakkımızda - Şirketim",
|
|
629
538
|
fr: "À Propos - Ma Société",
|
|
630
539
|
es: "Acerca de Nosotros - Mi Empresa",
|
|
631
540
|
}),
|
|
632
|
-
|
|
633
|
-
en: "
|
|
541
|
+
metaDescription: t({
|
|
542
|
+
en: "Şirketimiz ve misyonumuz hakkında daha fazla bilgi edinin",
|
|
634
543
|
fr: "En savoir plus sur notre société et notre mission",
|
|
635
544
|
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
636
545
|
}),
|
|
546
|
+
title: t({
|
|
547
|
+
en: "Hakkımızda",
|
|
548
|
+
fr: "À Propos",
|
|
549
|
+
es: "Acerca de Nosotros",
|
|
550
|
+
}),
|
|
637
551
|
},
|
|
638
|
-
} satisfies Dictionary
|
|
552
|
+
} satisfies Dictionary;
|
|
639
553
|
|
|
640
|
-
export default
|
|
554
|
+
export default aboutPageContent;
|
|
641
555
|
```
|
|
642
556
|
|
|
643
|
-
```
|
|
557
|
+
```javascript fileName="pages/about-page.content.mjs" contentDeclarationFormat="esm"
|
|
644
558
|
import { t } from "intlayer";
|
|
645
559
|
|
|
646
560
|
/** @type {import('intlayer').Dictionary} */
|
|
647
|
-
const
|
|
648
|
-
key: "about-
|
|
561
|
+
const aboutPageContent = {
|
|
562
|
+
key: "about-page",
|
|
649
563
|
content: {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
en: "About Us - My Company",
|
|
564
|
+
metaTitle: t({
|
|
565
|
+
en: "Hakkımızda - Şirketim",
|
|
653
566
|
fr: "À Propos - Ma Société",
|
|
654
567
|
es: "Acerca de Nosotros - Mi Empresa",
|
|
655
568
|
}),
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
en: "Learn more about our company and our mission",
|
|
569
|
+
metaDescription: t({
|
|
570
|
+
en: "Şirketimiz ve misyonumuz hakkında daha fazla bilgi edinin",
|
|
659
571
|
fr: "En savoir plus sur notre société et notre mission",
|
|
660
572
|
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
661
573
|
}),
|
|
574
|
+
title: t({
|
|
575
|
+
en: "Hakkımızda",
|
|
576
|
+
fr: "À Propos",
|
|
577
|
+
es: "Acerca de Nosotros",
|
|
578
|
+
}),
|
|
662
579
|
},
|
|
663
580
|
};
|
|
664
581
|
|
|
665
|
-
export default
|
|
582
|
+
export default aboutPageContent;
|
|
666
583
|
```
|
|
667
584
|
|
|
668
|
-
```
|
|
585
|
+
```javascript fileName="pages/about-page.content.cjs" contentDeclarationFormat="commonjs"
|
|
669
586
|
const { t } = require("intlayer");
|
|
670
587
|
|
|
671
588
|
/** @type {import('intlayer').Dictionary} */
|
|
672
|
-
const
|
|
673
|
-
key: "about-
|
|
589
|
+
const aboutPageContent = {
|
|
590
|
+
key: "about-page",
|
|
674
591
|
content: {
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
en: "About Us - My Company",
|
|
592
|
+
metaTitle: t({
|
|
593
|
+
en: "Hakkımızda - Şirketim",
|
|
678
594
|
fr: "À Propos - Ma Société",
|
|
679
595
|
es: "Acerca de Nosotros - Mi Empresa",
|
|
680
596
|
}),
|
|
681
|
-
|
|
682
|
-
zh: "了解更多关于我们公司和我们的使命",
|
|
597
|
+
metaDescription: t({
|
|
683
598
|
en: "Learn more about our company and our mission",
|
|
684
599
|
fr: "En savoir plus sur notre société et notre mission",
|
|
685
600
|
es: "Conozca más sobre nuestra empresa y nuestra misión",
|
|
686
601
|
}),
|
|
602
|
+
title: t({
|
|
603
|
+
en: "About Us",
|
|
604
|
+
fr: "À Propos",
|
|
605
|
+
es: "Acerca de Nosotros",
|
|
606
|
+
}),
|
|
687
607
|
},
|
|
688
608
|
};
|
|
689
609
|
|
|
690
|
-
module.exports =
|
|
610
|
+
module.exports = aboutPageContent;
|
|
691
611
|
```
|
|
692
612
|
|
|
693
|
-
```json fileName="pages/about-
|
|
613
|
+
```json fileName="pages/about-page.content.json" contentDeclarationFormat="json"
|
|
694
614
|
{
|
|
695
|
-
"
|
|
615
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
616
|
+
"key": "about-page",
|
|
696
617
|
"content": {
|
|
697
|
-
"
|
|
618
|
+
"metaTitle": {
|
|
698
619
|
"nodeType": "translation",
|
|
699
|
-
"
|
|
700
|
-
"zh": "关于我们 - 我的公司",
|
|
620
|
+
"translation": {
|
|
701
621
|
"en": "About Us - My Company",
|
|
702
622
|
"fr": "À Propos - Ma Société",
|
|
703
623
|
"es": "Acerca de Nosotros - Mi Empresa"
|
|
704
624
|
}
|
|
705
625
|
},
|
|
706
|
-
"
|
|
626
|
+
"metaDescription": {
|
|
707
627
|
"nodeType": "translation",
|
|
708
|
-
"
|
|
709
|
-
"zh": "了解更多关于我们公司和我们的使命",
|
|
628
|
+
"translation": {
|
|
710
629
|
"en": "Learn more about our company and our mission",
|
|
711
630
|
"fr": "En savoir plus sur notre société et notre mission",
|
|
712
|
-
"es": "Conozca más sobre nuestra empresa y nuestra misión"
|
|
631
|
+
"es": "Conozca más sobre nuestra empresa y nuestra misión",
|
|
632
|
+
"tr": "Şirketimiz ve misyonumuz hakkında daha fazla bilgi edinin"
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
"title": {
|
|
636
|
+
"nodeType": "translation",
|
|
637
|
+
"translation": {
|
|
638
|
+
"en": "About Us",
|
|
639
|
+
"fr": "À Propos",
|
|
640
|
+
"es": "Acerca de Nosotros",
|
|
641
|
+
"tr": "Hakkımızda"
|
|
713
642
|
}
|
|
714
643
|
}
|
|
715
644
|
}
|
|
716
645
|
}
|
|
717
646
|
```
|
|
718
647
|
|
|
719
|
-
###
|
|
648
|
+
### Git Yapılandırması
|
|
720
649
|
|
|
721
|
-
Intlayer
|
|
650
|
+
Intlayer tarafından oluşturulan dosyaların göz ardı edilmesi önerilir. Bu, bu dosyaların Git deposuna commit edilmesini önler.
|
|
722
651
|
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-

|
|
726
|
-
|
|
727
|
-
TypeScript yapılandırmanızın otomatik olarak oluşturulan türleri içerdiğinden emin olun.
|
|
728
|
-
|
|
729
|
-
```json5 fileName="tsconfig.json"
|
|
730
|
-
{
|
|
731
|
-
// ... Mevcut TypeScript yapılandırmalarınız
|
|
732
|
-
"include": [
|
|
733
|
-
// ... Mevcut TypeScript yapılandırmalarınız
|
|
734
|
-
".intlayer/**/*.ts", // Otomatik olarak oluşturulan türleri dahil edin
|
|
735
|
-
],
|
|
736
|
-
}
|
|
737
|
-
```
|
|
738
|
-
|
|
739
|
-
### Git Yapılandırma
|
|
740
|
-
|
|
741
|
-
Intlayer tarafından oluşturulan dosyaları yok saymanız önerilir. Bu, onları Git deponuza göndermekten kaçınmanıza olanak tanır.
|
|
742
|
-
|
|
743
|
-
Bunu yapmak için, `.gitignore` dosyanıza aşağıdaki talimatları ekleyin:
|
|
652
|
+
Bunu yapmak için `.gitignore` dosyanıza aşağıdaki talimatları ekleyebilirsiniz:
|
|
744
653
|
|
|
745
654
|
```plaintext fileName=".gitignore"
|
|
746
|
-
# Intlayer tarafından oluşturulan dosyaları
|
|
655
|
+
# Intlayer tarafından oluşturulan dosyaları göz ardı et
|
|
747
656
|
.intlayer
|
|
748
657
|
```
|
|
749
658
|
|
|
750
|
-
### VS Code
|
|
659
|
+
### VS Code Eklentisi
|
|
751
660
|
|
|
752
|
-
Intlayer ile geliştirme deneyiminizi
|
|
661
|
+
Intlayer ile geliştirme deneyiminizi iyileştirmek için resmi **Intlayer VS Code Uzantısı**nı yükleyebilirsiniz.
|
|
753
662
|
|
|
754
|
-
[VS Code Marketplace'ten
|
|
663
|
+
[VS Code Marketplace'ten Yükleyin](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
755
664
|
|
|
756
665
|
Bu uzantı şunları sağlar:
|
|
757
666
|
|
|
758
|
-
-
|
|
759
|
-
-
|
|
760
|
-
-
|
|
761
|
-
-
|
|
667
|
+
- Çeviri anahtarları için **Otomatik tamamlama**.
|
|
668
|
+
- Eksik çeviriler için **Gerçek zamanlı hata tespiti**.
|
|
669
|
+
- Çevrilmiş içeriğin **Satır içi önizlemeleri**.
|
|
670
|
+
- Çevirileri kolayca oluşturup güncellemek için **Hızlı işlemler**.
|
|
762
671
|
|
|
763
|
-
Uzantının nasıl kullanılacağı hakkında daha fazla
|
|
672
|
+
Uzantının nasıl kullanılacağı hakkında daha fazla bilgi için [Intlayer VS Code Uzantısı dokümantasyonuna](https://intlayer.org/doc/vs-code-extension) bakabilirsiniz.
|
|
764
673
|
|
|
765
674
|
---
|
|
766
675
|
|
|
767
|
-
### Daha
|
|
768
|
-
|
|
769
|
-
Daha fazla ilerlemek için, [görsel düzenleyiciyi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) uygulayabilir veya içeriğinizi [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md) kullanarak harici hale getirebilirsiniz.
|
|
676
|
+
### Daha İleri Gitmek
|
|
770
677
|
|
|
771
|
-
|
|
678
|
+
Daha ileri gitmek için, [görsel editörü](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) uygulayabilir veya içeriğinizi [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md) kullanarak dışa aktarabilirsiniz.
|