@intlayer/docs 8.12.2 → 8.12.4-canary.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/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/doc.cjs.map +1 -1
- package/dist/cjs/frequentQuestions.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +1 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +1 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +1 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +1 -0
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/cjs/legal.cjs.map +1 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/doc.mjs.map +1 -1
- package/dist/esm/frequentQuestions.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/esm/legal.mjs.map +1 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/doc.d.ts.map +1 -1
- package/dist/types/frequentQuestions.d.ts.map +1 -1
- package/dist/types/legal.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +250 -102
- package/docs/ar/configuration.md +10 -10
- package/docs/bn/bundle_optimization.md +252 -104
- package/docs/bn/configuration.md +10 -10
- package/docs/cs/bundle_optimization.md +253 -105
- package/docs/cs/configuration.md +10 -10
- package/docs/de/bundle_optimization.md +245 -97
- package/docs/de/configuration.md +10 -10
- package/docs/en/bundle_optimization.md +172 -49
- package/docs/en/configuration.md +10 -10
- package/docs/en-GB/bundle_optimization.md +230 -82
- package/docs/en-GB/configuration.md +10 -10
- package/docs/es/bundle_optimization.md +250 -102
- package/docs/es/configuration.md +10 -10
- package/docs/fr/bundle_optimization.md +223 -75
- package/docs/fr/configuration.md +10 -10
- package/docs/hi/bundle_optimization.md +253 -105
- package/docs/hi/configuration.md +10 -10
- package/docs/id/bundle_optimization.md +258 -110
- package/docs/id/configuration.md +10 -10
- package/docs/it/bundle_optimization.md +249 -103
- package/docs/it/configuration.md +10 -10
- package/docs/ja/bundle_optimization.md +245 -97
- package/docs/ja/configuration.md +10 -10
- package/docs/ko/bundle_optimization.md +253 -105
- package/docs/ko/configuration.md +10 -10
- package/docs/nl/bundle_optimization.md +249 -101
- package/docs/nl/configuration.md +10 -10
- package/docs/pl/bundle_optimization.md +258 -111
- package/docs/pl/configuration.md +10 -10
- package/docs/pt/bundle_optimization.md +256 -115
- package/docs/pt/configuration.md +10 -10
- package/docs/ru/bundle_optimization.md +253 -105
- package/docs/ru/configuration.md +10 -10
- package/docs/tr/bundle_optimization.md +255 -107
- package/docs/tr/configuration.md +10 -10
- package/docs/uk/bundle_optimization.md +250 -102
- package/docs/uk/configuration.md +10 -10
- package/docs/ur/bundle_optimization.md +257 -109
- package/docs/ur/configuration.md +10 -10
- package/docs/vi/bundle_optimization.md +259 -111
- package/docs/vi/configuration.md +10 -10
- package/docs/zh/bundle_optimization.md +260 -112
- package/docs/zh/configuration.md +10 -10
- package/docs/zh-TW/bundle_optimization.md +602 -0
- package/package.json +8 -8
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-25
|
|
3
|
-
updatedAt: 2026-
|
|
4
|
-
title: i18n
|
|
5
|
-
description: Uluslararasılaştırma (i18n) içeriğini optimize ederek uygulama
|
|
3
|
+
updatedAt: 2026-06-07
|
|
4
|
+
title: i18n Paket Boyutu ve Performans Optimizasyonu
|
|
5
|
+
description: Uluslararasılaştırma (i18n) içeriğini optimize ederek uygulama paket boyutunuzu küçültün. Intlayer ile sözlükler için tree shaking ve lazy loading'i nasıl kullanacağınızı öğrenin.
|
|
6
6
|
keywords:
|
|
7
|
-
-
|
|
7
|
+
- Paket Optimizasyonu
|
|
8
8
|
- İçerik Otomasyonu
|
|
9
9
|
- Dinamik İçerik
|
|
10
10
|
- Intlayer
|
|
@@ -16,33 +16,36 @@ slugs:
|
|
|
16
16
|
- concept
|
|
17
17
|
- bundle-optimization
|
|
18
18
|
history:
|
|
19
|
+
- version: 8.12.0
|
|
20
|
+
date: 2026-06-07
|
|
21
|
+
changes: "Babel/Webpack için `intlayerPurgeBabelPlugin` ve `intlayerMinifyBabelPlugin` eklendi; eklenti (plugin) süreci netleştirildi"
|
|
19
22
|
- version: 8.7.0
|
|
20
23
|
date: 2026-04-08
|
|
21
|
-
changes: "
|
|
24
|
+
changes: "Derleme (build) yapılandırmasına `minify` ve `purge` seçenekleri eklendi"
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
# i18n
|
|
27
|
+
# i18n Paket Boyutu ve Performans Optimizasyonu
|
|
25
28
|
|
|
26
|
-
JSON dosyalarına
|
|
29
|
+
JSON dosyalarına dayanan geleneksel i18n çözümlerinde en yaygın zorluklardan biri içerik boyutunu yönetmektir. Geliştiriciler içeriği manuel olarak isim alanlarına (namespaces) ayırmazlarsa, kullanıcılar genellikle yalnızca tek bir sayfayı görüntülemek için her sayfanın ve potansiyel olarak her dilin çevirilerini indirir.
|
|
27
30
|
|
|
28
|
-
Örneğin, 10 dilde çevrilmiş 10
|
|
31
|
+
Örneğin, 10 dilde çevrilmiş 10 sayfalı bir uygulama, bir kullanıcının yalnızca **birine** (geçerli dilde geçerli sayfaya) ihtiyacı olmasına rağmen 100 sayfanın içeriğini indirmesine neden olabilir. Bu da israf edilen bant genişliği ve daha yavaş yükleme süreleri anlamına gelir.
|
|
29
32
|
|
|
30
|
-
**Intlayer bu sorunu build zamanı
|
|
33
|
+
**Intlayer bu sorunu build zamanı optimizasyonlarıyla çözer.** Kodunuzu analiz ederek her bileşen (component) için gerçekte hangi sözlüklerin kullanıldığını tespit eder ve yalnızca gerekli içeriği paketinizin (bundle) içine yeniden enjekte eder.
|
|
31
34
|
|
|
32
35
|
## İçindekiler
|
|
33
36
|
|
|
34
37
|
<TOC />
|
|
35
38
|
|
|
36
|
-
##
|
|
39
|
+
## Paketinizi analiz edin
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Paketinizi analiz etmek, "ağır" JSON dosyalarını ve kod bölme (code-splitting) fırsatlarını belirlemede atılacak ilk adımdır. Bu araçlar, uygulamanızın derlenmiş (compiled) kodunun görsel bir treemap'ini oluşturarak tam olarak hangi kütüphanelerin en çok yer kapladığını görmenize olanak tanır.
|
|
39
42
|
|
|
40
43
|
<Tabs>
|
|
41
44
|
<Tab value="vite">
|
|
42
45
|
|
|
43
46
|
### Vite / Rollup
|
|
44
47
|
|
|
45
|
-
Vite, arka planda Rollup kullanır. `rollup-plugin-visualizer` eklentisi, grafiğinizdeki her modülün boyutunu gösteren etkileşimli bir HTML dosyası
|
|
48
|
+
Vite, arka planda Rollup kullanır. `rollup-plugin-visualizer` eklentisi, grafiğinizdeki her modülün boyutunu gösteren etkileşimli bir HTML dosyası üretir.
|
|
46
49
|
|
|
47
50
|
```bash
|
|
48
51
|
npm install -D rollup-plugin-visualizer
|
|
@@ -55,7 +58,7 @@ import { visualizer } from "rollup-plugin-visualizer";
|
|
|
55
58
|
export default defineConfig({
|
|
56
59
|
plugins: [
|
|
57
60
|
visualizer({
|
|
58
|
-
open: true, // Raporu
|
|
61
|
+
open: true, // Raporu otomatik olarak tarayıcınızda açar
|
|
59
62
|
filename: "stats.html",
|
|
60
63
|
gzipSize: true,
|
|
61
64
|
brotliSize: true,
|
|
@@ -69,7 +72,7 @@ export default defineConfig({
|
|
|
69
72
|
|
|
70
73
|
### Next.js (Turbopack)
|
|
71
74
|
|
|
72
|
-
App Router ve Turbopack kullanan
|
|
75
|
+
App Router ve Turbopack kullanan projelerde, Next.js ekstra bir bağımlılığa ihtiyaç duymayan yerleşik, deneysel bir analizör sağlar.
|
|
73
76
|
|
|
74
77
|
```bash packageManager='npm'
|
|
75
78
|
npx next experimental-analyze
|
|
@@ -92,7 +95,7 @@ bun next experimental-analyze
|
|
|
92
95
|
|
|
93
96
|
### Next.js (Webpack)
|
|
94
97
|
|
|
95
|
-
Next.js'de varsayılan Webpack
|
|
98
|
+
Next.js'de varsayılan Webpack paketleyiciyi kullanıyorsanız, resmi bundle analyzer'ı kullanın. Bunu derleme (build) sırasında bir ortam değişkeni ayarlayarak tetikleyebilirsiniz.
|
|
96
99
|
|
|
97
100
|
```bash packageManager='npm'
|
|
98
101
|
npm install -D @next/bundle-analyzer
|
|
@@ -120,7 +123,7 @@ module.exports = withBundleAnalyzer({
|
|
|
120
123
|
});
|
|
121
124
|
```
|
|
122
125
|
|
|
123
|
-
**Kullanım
|
|
126
|
+
**Kullanımı:**
|
|
124
127
|
|
|
125
128
|
```bash
|
|
126
129
|
ANALYZE=true npm run build
|
|
@@ -131,7 +134,7 @@ ANALYZE=true npm run build
|
|
|
131
134
|
|
|
132
135
|
### Standart Webpack
|
|
133
136
|
|
|
134
|
-
Create React App (ejected), Angular veya özel Webpack
|
|
137
|
+
Create React App (ejected), Angular veya özel Webpack yapılandırmaları için endüstri standardı olan `webpack-bundle-analyzer`ı kullanın.
|
|
135
138
|
|
|
136
139
|
```bash packageManager='npm'
|
|
137
140
|
npm install -D webpack-bundle-analyzer
|
|
@@ -166,18 +169,55 @@ export default {
|
|
|
166
169
|
</Tab>
|
|
167
170
|
</Tabs>
|
|
168
171
|
|
|
169
|
-
## Nasıl Çalışır
|
|
172
|
+
## Nasıl Çalışır
|
|
170
173
|
|
|
171
|
-
Intlayer, **bileşen başına yaklaşım
|
|
174
|
+
Intlayer, **bileşen başına bir yaklaşım** kullanır. Global JSON dosyalarının aksine, içeriğiniz bileşenlerinizin yanında veya içinde tanımlanır. Derleme işlemi sırasında Intlayer şunları gerçekleştirir:
|
|
172
175
|
|
|
173
|
-
1.
|
|
174
|
-
2.
|
|
175
|
-
3.
|
|
176
|
+
1. `useIntlayer` çağrılarını bulmak için kodunuzu **analiz eder**.
|
|
177
|
+
2. Karşılık gelen sözlük (dictionary) içeriğini **oluşturur**.
|
|
178
|
+
3. `useIntlayer` çağrısını, yapılandırmanıza göre optimize edilmiş kod ile **değiştirir**.
|
|
176
179
|
|
|
177
|
-
Bu şu
|
|
180
|
+
Bu şu anlamlara gelir:
|
|
178
181
|
|
|
179
|
-
- Bir bileşen
|
|
180
|
-
- Bir bileşen
|
|
182
|
+
- Bir bileşen (component) import edilmezse, içeriği de pakete (bundle) dahil edilmez (Dead Code Elimination).
|
|
183
|
+
- Bir bileşen lazy-loaded (tembel yükleme) ile çağrılırsa, içeriği de lazy-loaded olur.
|
|
184
|
+
|
|
185
|
+
## Eklenti (Plugin) Referansı
|
|
186
|
+
|
|
187
|
+
Intlayer'ın derleme optimizasyonu, her birinin tek bir sorumluluğu olduğu birkaç ayrı eklentiye bölünmüştür. Her birinin ne işe yaradığını anlamak yapılandırma sırasında karışıklığı önler.
|
|
188
|
+
|
|
189
|
+
### Babel eklentileri (`@intlayer/babel`)
|
|
190
|
+
|
|
191
|
+
Bunlar doğrudan Webpack tabanlı yapılandırmalarda (Babel ile kullanılan Next.js, CRA, özel Webpack vb.) `babel.config.js` içinde kullanılır.
|
|
192
|
+
|
|
193
|
+
| Eklenti | Ne yapar |
|
|
194
|
+
| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
195
|
+
| `intlayerExtractBabelPlugin` | `.content.ts` dosyalarını tarayarak derlenmiş sözlükleri `.intlayer/` altına yazar |
|
|
196
|
+
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` çağrısını `useDictionary(hash)` olarak yeniden yazar ve ilgili sözlük için eşleşen bir `import` ifadesi enjekte eder |
|
|
197
|
+
| `intlayerPurgeBabelPlugin` | Tüm kaynak dosyaları tarar, derlenmiş `.intlayer/**/*.json` sözlük dosyalarından **kullanılmayan içerik alanlarını** temizler |
|
|
198
|
+
| `intlayerMinifyBabelPlugin` | JSON dosyalarındaki ve kaynak koddaki **içerik alanı anahtarlarını kısa alfabetik isimlere (alias)** (`title` → `a`) dönüştürür |
|
|
199
|
+
|
|
200
|
+
> **Eklenti sırası önemlidir.** `babel.config.js` dosyanızda purge ve minify eklentileri optimize eklentisinden **önce** gelmelidir. Optimize aşaması `useIntlayer('key')` öğesini belirsiz bir `useDictionary(hash)` çağrısı ile değiştirdiğinden, purge ve minify işlemlerinin hangi alanların kullanıldığını tespit edebilmesi için gerekli olan sözlük anahtar bilgisi kaybolur.
|
|
201
|
+
|
|
202
|
+
Her Babel eklentisi, yapılandırma yüklenme zamanında `intlayer.config.ts`'yi bir kez okuyan ve önceden çözümlenmiş değerler döndüren, kendisine eşlik eden bir opsiyon yardımcısı (options helper) içerir:
|
|
203
|
+
|
|
204
|
+
| Opsiyon yardımcısı | Birlikte kullanıldığı eklenti |
|
|
205
|
+
| :--------------------------- | :---------------------------- |
|
|
206
|
+
| `getExtractPluginOptions()` | `intlayerExtractBabelPlugin` |
|
|
207
|
+
| `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
|
|
208
|
+
| `getPurgePluginOptions()` | `intlayerPurgeBabelPlugin` |
|
|
209
|
+
| `getMinifyPluginOptions()` | `intlayerMinifyBabelPlugin` |
|
|
210
|
+
|
|
211
|
+
### Vite eklentileri (`vite-intlayer`)
|
|
212
|
+
|
|
213
|
+
Vite kullanıcıları **bunları asla doğrudan yapılandırmaz**. Bunlar `vite.config.ts` içinde `withIntlayer()` fonksiyonu çağrıldığında otomatik olarak bağlanır. `intlayer.config.ts` içindeki `build.purge` ve `build.minify` bayrakları, ek bir eklenti kaydına (registration) gerek kalmadan karşılık gelen davranışı etkinleştirip kapatır.
|
|
214
|
+
|
|
215
|
+
| Dahili Vite eklentisi | Eşdeğer davranışı |
|
|
216
|
+
| :-------------------- | :----------------------------------------------------------------------------------------------- |
|
|
217
|
+
| Usage analyzer | `intlayerPurgeBabelPlugin` analizi ile aynı |
|
|
218
|
+
| Dictionary prune | `intlayerPurgeBabelPlugin` JSON yazma adımı ile aynı |
|
|
219
|
+
| Dictionary minify | `intlayerMinifyBabelPlugin` JSON yazma adımı ile aynı |
|
|
220
|
+
| Babel transform | `intlayerMinifyBabelPlugin` kaynak kod yeniden adlandırması + `intlayerOptimizeBabelPlugin` aynı |
|
|
181
221
|
|
|
182
222
|
## Platforma Göre Kurulum
|
|
183
223
|
|
|
@@ -186,9 +226,9 @@ Bu şu avantajları sağlar:
|
|
|
186
226
|
|
|
187
227
|
### Next.js
|
|
188
228
|
|
|
189
|
-
Next.js,
|
|
229
|
+
Next.js, derleme işlemleri için SWC kullandığından, optimize adımı (import yeniden yazma) için `@intlayer/swc` eklentisine ihtiyaç duyar.
|
|
190
230
|
|
|
191
|
-
> Bu eklenti varsayılan olarak yüklenmez çünkü SWC eklentileri Next.js için hala deneysel aşamadadır.
|
|
231
|
+
> Bu eklenti varsayılan olarak yüklenmez çünkü SWC eklentileri Next.js için hala deneysel aşamadadır. İlerleyen zamanlarda bu durum değişebilir.
|
|
192
232
|
|
|
193
233
|
```bash packageManager="npm"
|
|
194
234
|
npm install -D @intlayer/swc
|
|
@@ -206,21 +246,63 @@ pnpm add -D @intlayer/swc
|
|
|
206
246
|
bun add -d @intlayer/swc
|
|
207
247
|
```
|
|
208
248
|
|
|
209
|
-
|
|
249
|
+
Yüklendikten sonra Intlayer eklentiyi otomatik olarak algılar ve kullanır.
|
|
250
|
+
|
|
251
|
+
**Purge ve minify** adımları için (alan kaldırma ve alan yeniden adlandırma), bununla birlikte `@intlayer/babel` paketini de kurun ve Babel eklentilerini ekleyin. Next.js dönüşüm için SWC'yi kullansa da, eklenti yapılandırması için hala `babel.config.js` dosyasını kontrol ettiği için Babel eklentileri SWC'den önceki bir adım olarak çalışır.
|
|
252
|
+
|
|
253
|
+
```bash packageManager="npm"
|
|
254
|
+
npm install -D @intlayer/babel
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
```javascript fileName="babel.config.js"
|
|
258
|
+
const {
|
|
259
|
+
intlayerPurgeBabelPlugin,
|
|
260
|
+
intlayerMinifyBabelPlugin,
|
|
261
|
+
getPurgePluginOptions,
|
|
262
|
+
getMinifyPluginOptions,
|
|
263
|
+
} = require("@intlayer/babel");
|
|
264
|
+
|
|
265
|
+
module.exports = {
|
|
266
|
+
presets: ["next/babel"],
|
|
267
|
+
plugins: [
|
|
268
|
+
// Purge: kullanılmayan içerik alanlarını .intlayer/**/*.json'dan siler
|
|
269
|
+
[intlayerPurgeBabelPlugin, getPurgePluginOptions()],
|
|
270
|
+
// Minify: JSON + kaynak kodunda içerik alanı anahtarlarını yeniden adlandırır
|
|
271
|
+
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
272
|
+
// Not: intlayerOptimizeBabelPlugin burada GEREKLİ DEĞİLDİR çünkü
|
|
273
|
+
// @intlayer/swc paketi useIntlayer → useDictionary değişikliğini halleder.
|
|
274
|
+
],
|
|
275
|
+
};
|
|
276
|
+
```
|
|
210
277
|
|
|
211
278
|
</Tab>
|
|
212
279
|
<Tab value="vite">
|
|
213
280
|
|
|
214
281
|
### Vite
|
|
215
282
|
|
|
216
|
-
Vite, `vite-intlayer` bağımlılığı olarak dahil edilen `@intlayer/babel` eklentisini kullanır.
|
|
283
|
+
Vite, `vite-intlayer` bağımlılığı (dependency) olarak dahil edilen `@intlayer/babel` eklentisini kullanır. Import yeniden yazma, purge ve minify işlemlerini barındıran tam optimizasyon işlemi varsayılan olarak etkindir ve herhangi bir ekstra eklenti kaydı gerektirmez.
|
|
284
|
+
|
|
285
|
+
`intlayer.config.ts` içinde karşılık gelen ayarları ayarlayarak purge ve minify seçeneklerini etkinleştirebilirsiniz:
|
|
286
|
+
|
|
287
|
+
```typescript fileName="intlayer.config.ts"
|
|
288
|
+
import type { IntlayerConfig } from "intlayer";
|
|
289
|
+
|
|
290
|
+
const config: IntlayerConfig = {
|
|
291
|
+
build: {
|
|
292
|
+
purge: true, // derlenmiş paketlenmiş JSON içinden kullanılmayan içerik alanlarını kaldır
|
|
293
|
+
minify: true, // içerik alanı anahtarlarını daha kısa isimlere (alias) yeniden adlandır
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
export default config;
|
|
298
|
+
```
|
|
217
299
|
|
|
218
300
|
</Tab>
|
|
219
301
|
<Tab value="webpack">
|
|
220
302
|
|
|
221
|
-
### Webpack
|
|
303
|
+
### Webpack (ve Babel kullanan Next.js)
|
|
222
304
|
|
|
223
|
-
|
|
305
|
+
`@intlayer/babel` paketini yükleyin:
|
|
224
306
|
|
|
225
307
|
```bash packageManager="npm"
|
|
226
308
|
npm install -D @intlayer/babel
|
|
@@ -238,14 +320,37 @@ pnpm add -D @intlayer/babel
|
|
|
238
320
|
bun add -d @intlayer/babel
|
|
239
321
|
```
|
|
240
322
|
|
|
241
|
-
|
|
323
|
+
Dört eklentinin (plugin) tümünü `babel.config.js` dosyasına doğru sırayla ekleyin:
|
|
324
|
+
|
|
325
|
+
```javascript fileName="babel.config.js"
|
|
242
326
|
const {
|
|
243
|
-
|
|
327
|
+
intlayerExtractBabelPlugin,
|
|
328
|
+
intlayerPurgeBabelPlugin,
|
|
329
|
+
intlayerMinifyBabelPlugin,
|
|
244
330
|
intlayerOptimizeBabelPlugin,
|
|
331
|
+
getExtractPluginOptions,
|
|
332
|
+
getPurgePluginOptions,
|
|
333
|
+
getMinifyPluginOptions,
|
|
334
|
+
getOptimizePluginOptions,
|
|
245
335
|
} = require("@intlayer/babel");
|
|
246
336
|
|
|
247
337
|
module.exports = {
|
|
248
|
-
plugins: [
|
|
338
|
+
plugins: [
|
|
339
|
+
// Extract: .content.ts dosyalarını → .intlayer/**/*.json olacak şekilde derler
|
|
340
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
341
|
+
|
|
342
|
+
// Purge: kullanılmayan alanları .intlayer/**/*.json dosyalarından kaldırır
|
|
343
|
+
// (intlayer.config.ts içerisindeki build.purge seçeneğini okur)
|
|
344
|
+
[intlayerPurgeBabelPlugin, getPurgePluginOptions()],
|
|
345
|
+
|
|
346
|
+
// Minify: JSON ve kaynak kodundaki alan anahtarlarını kısaltarak yeniden adlandırır
|
|
347
|
+
// (intlayer.config.ts içerisindeki build.minify seçeneğini okur)
|
|
348
|
+
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
349
|
+
|
|
350
|
+
// Optimize: useIntlayer('key') çağrılarını → useDictionary(hash) çağrısına çevirir
|
|
351
|
+
// Sözlük anahtarını tamamen değiştirdiği için en sonda bulunmalıdır.
|
|
352
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
353
|
+
],
|
|
249
354
|
};
|
|
250
355
|
```
|
|
251
356
|
|
|
@@ -254,57 +359,62 @@ module.exports = {
|
|
|
254
359
|
|
|
255
360
|
## Yapılandırma
|
|
256
361
|
|
|
257
|
-
Intlayer'ın bundle
|
|
362
|
+
Intlayer'ın paketinizi (bundle) nasıl optimize edeceğini `intlayer.config.ts` dosyanızdaki `build` özelliği aracılığıyla kontrol edebilirsiniz.
|
|
258
363
|
|
|
259
364
|
```typescript fileName="intlayer.config.ts"
|
|
260
365
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
261
366
|
|
|
262
367
|
const config: IntlayerConfig = {
|
|
263
368
|
internationalization: {
|
|
264
|
-
locales: [Locales.ENGLISH, Locales.
|
|
369
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
265
370
|
defaultLocale: Locales.ENGLISH,
|
|
266
371
|
},
|
|
267
372
|
dictionary: {
|
|
268
373
|
importMode: "dynamic",
|
|
269
374
|
},
|
|
270
375
|
build: {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
* Build'in TypeScript tiplerini kontrol edip etmeyeceğini belirtir
|
|
283
|
-
*/
|
|
284
|
-
checkTypes: false;
|
|
376
|
+
// Derleme zamanında useIntlayer() çağrılarını doğrudan sözlük içe aktarmalarıyla (import) değiştirir.
|
|
377
|
+
// undefined = otomatik (üretim/production ortamında etkin), true = daima, false = asla.
|
|
378
|
+
optimize: undefined,
|
|
379
|
+
|
|
380
|
+
// Derlenmiş sözlüklerdeki içerik alanı anahtarlarını kısa alfabetik isimlerle (alias) yeniden
|
|
381
|
+
// adlandırır (örneğin title → a). JSON boyutunu küçültür; optimize işlemi (optimize: true) gerektirir.
|
|
382
|
+
minify: true,
|
|
383
|
+
|
|
384
|
+
// Kaynak kodda asla erişilmeyen içerik alanlarını kaldırır.
|
|
385
|
+
// optimize işlemi gerektirir.
|
|
386
|
+
purge: true,
|
|
285
387
|
},
|
|
286
388
|
};
|
|
287
389
|
|
|
288
390
|
export default config;
|
|
289
391
|
```
|
|
290
392
|
|
|
291
|
-
> Çoğu durumda `optimize`
|
|
393
|
+
> Çoğu durumda `optimize` ayarı için varsayılan değeri (`undefined`) korumak önerilir.
|
|
292
394
|
|
|
293
|
-
>
|
|
395
|
+
> Tüm seçenekler için yapılandırma referansına bakın: [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md)
|
|
294
396
|
|
|
295
|
-
### Build Seçenekleri
|
|
397
|
+
### Derleme (Build) Seçenekleri
|
|
296
398
|
|
|
297
|
-
|
|
399
|
+
| Özellik | Tip | Varsayılan | Açıklama |
|
|
400
|
+
| :------------- | :--------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
401
|
+
| **`optimize`** | `boolean \| undefined` | `undefined` | İçe aktarma (import) yeniden yazma işlemini etkinleştirir. `undefined` = yalnızca production derlemelerinde aktiftir. `false` olarak ayarlanırsa purge ve minify işlemleri de devre dışı kalır. |
|
|
402
|
+
| **`minify`** | `boolean` | `false` | Derlenmiş JSON dosyalarındaki içerik alanlarının anahtar isimlerini kısa alfabetik adlara dönüştürür. Kaynak kodundaki eşleşen özellikleri de buna uygun şekilde yeniden adlandırır. `optimize` ayarı `false` ise hiçbir etkisi olmaz. |
|
|
403
|
+
| **`purge`** | `boolean` | `false` | Derlenmiş JSON dosyalarından, kaynak kodda erişilmeyen statik içerik alanlarını kaldırır. `optimize` ayarı `false` ise hiçbir etkisi olmaz. |
|
|
298
404
|
|
|
299
|
-
|
|
300
|
-
| :------------- | :-------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
301
|
-
| **`optimize`** | `boolean` | `undefined` | Build optimizasyonunun etkin olup olmadığını kontrol eder. `true` ise, Intlayer sözlük çağrılarını optimize edilmiş enjeksiyonlarla değiştirir. `false` ise optimizasyon devre dışıdır. Prod ortamında `true` olmalıdır. |
|
|
302
|
-
| **`minify`** | `boolean` | `false` | Bundle boyutunu azaltmak için sözlüklerin küçültülüp küçültülmeyeceği. |
|
|
303
|
-
| **`purge`** | `boolean` | `false` | Sözlüklerdeki kullanılmayan anahtarların temizlenip temizlenmeyeceği. |
|
|
405
|
+
### Minification (alan anahtarını yeniden adlandırma)
|
|
304
406
|
|
|
305
|
-
|
|
407
|
+
`build.minify` komutu JavaScript paketinizi minify **etmez** — bunu bundler'ınız (Webpack, Rollup vb.) halleder. Bunun yerine, kullanıcı tarafından tanımlanmış her içerik alanının adını kısa bir harfe çevirerek derlenmiş olan JSON sözlük dosyalarını küçültür:
|
|
306
408
|
|
|
307
|
-
|
|
409
|
+
```
|
|
410
|
+
// Minify öncesi
|
|
411
|
+
{ "title": "Merhaba", "subtitle": "Dünya" }
|
|
412
|
+
|
|
413
|
+
// Minify sonrası
|
|
414
|
+
{ "a": "Merhaba", "b": "Dünya" }
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Aynı yeniden adlandırma işlemi kaynak kodunuzdaki erişim özelliklerine de yansır; bu nedenle derlenmiş kodda `content.title` erişimi `content.a` haline gelir. Çalışma zamanı (runtime) davranışı tamamen aynı kalır.
|
|
308
418
|
|
|
309
419
|
```typescript fileName="intlayer.config.ts"
|
|
310
420
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -318,11 +428,13 @@ const config: IntlayerConfig = {
|
|
|
318
428
|
export default config;
|
|
319
429
|
```
|
|
320
430
|
|
|
321
|
-
>
|
|
431
|
+
> `optimize` seçeneği `false` olduğunda veya `editor.enabled` `true` olduğunda minification atlanır (görsel düzenleyicinin düzenlemeye olanak tanıması için orijinal alan isimlerine ihtiyacı vardır).
|
|
432
|
+
|
|
433
|
+
> Ayrıca, JSON'ların orijinal isimleriyle uzak (remote) API'den getirildiği durumlarda, yani sözlüklerin `importMode: 'fetch'` ile yüklendiği durumlarda da atlanır — istemci tarafındaki (client-side) isimleri değiştirmek sunucu/istemci sözleşmesini bozacaktır.
|
|
322
434
|
|
|
323
|
-
###
|
|
435
|
+
### Purging (kullanılmayan alanların silinmesi)
|
|
324
436
|
|
|
325
|
-
|
|
437
|
+
`build.purge`, kaynak kodunuzda gerçekte hangi içerik alanlarına erişildiğini analiz eder ve derlenen JSON dosyalarından diğer tüm kullanılmayan alanları kaldırır.
|
|
326
438
|
|
|
327
439
|
```typescript fileName="intlayer.config.ts"
|
|
328
440
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -336,34 +448,50 @@ const config: IntlayerConfig = {
|
|
|
336
448
|
export default config;
|
|
337
449
|
```
|
|
338
450
|
|
|
339
|
-
|
|
451
|
+
**Örnek:** Beş alanı olan ve sadece ikisinin kullanıldığı bir sözlük:
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
// Purge öncesi
|
|
455
|
+
{ "title": "…", "subtitle": "…", "cta": "…", "footer": "…", "badge": "…" }
|
|
456
|
+
|
|
457
|
+
// Purge sonrası (kaynak kodda sadece title + subtitle kullanılıyor)
|
|
458
|
+
{ "title": "…", "subtitle": "…" }
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
> `optimize` `false` olduğunda veya `editor.enabled` `true` olduğunda Purge işlemi atlanır.
|
|
462
|
+
|
|
463
|
+
> Ayrıca, bir kaynak dosyasının ayrıştırılamadığı veya `useIntlayer` sonucunun bir değişkene atanıp (örneğin objeye yayılması, parçalama (destructuring) yapılmadan bir prop olarak iletilmesi gibi) statik analiz aracının takip edemeyeceği yollarla gönderildiği durumlarda Purge işlemi tedbir amaçlı olarak atlanır. Bu durumlarda tüm sözlük bozulmadan korunur.
|
|
464
|
+
|
|
465
|
+
### İçe Aktarım Modu (Import Mode)
|
|
340
466
|
|
|
341
|
-
|
|
467
|
+
Farklı sayfalar ve yerel ayarlar (locales) içeren büyük uygulamalarda, JSON dosyalarınız toplam paket boyutunun önemli bir bölümünü oluşturabilir. Intlayer, `importMode` seçeneğini kullanarak sözlüklerin nasıl yükleneceğini belirlemenize olanak tanır.
|
|
342
468
|
|
|
343
|
-
|
|
469
|
+
### Global tanımlama
|
|
344
470
|
|
|
345
|
-
İçe
|
|
471
|
+
İçe aktarım modu (import mode), genel kullanım için `intlayer.config.ts` dosyanızda tanımlanabilir.
|
|
346
472
|
|
|
347
473
|
```typescript fileName="intlayer.config.ts"
|
|
348
474
|
import type { IntlayerConfig } from "intlayer";
|
|
349
475
|
|
|
350
476
|
const config: IntlayerConfig = {
|
|
351
|
-
|
|
352
|
-
|
|
477
|
+
dictionary: {
|
|
478
|
+
importMode: "dynamic", // Varsayılan değer 'static'
|
|
353
479
|
},
|
|
354
480
|
};
|
|
355
481
|
|
|
356
482
|
export default config;
|
|
357
483
|
```
|
|
358
484
|
|
|
359
|
-
|
|
485
|
+
### Sözlük bazlı (Per-dictionary) tanımlama
|
|
486
|
+
|
|
487
|
+
Ayrıca tek bir sözlüğün içe aktarma modunu (import mode), kendisine ait olan `.content.{{ts|tsx|js|jsx|mjs|cjs|json|jsonc|json5|md|mdx|yaml|yml}}` dosyasında kolayca üzerine yazabilirsiniz (override).
|
|
360
488
|
|
|
361
489
|
```ts
|
|
362
490
|
import { type Dictionary, t } from "intlayer";
|
|
363
491
|
|
|
364
492
|
const appContent: Dictionary = {
|
|
365
493
|
key: "app",
|
|
366
|
-
importMode: "dynamic", //
|
|
494
|
+
importMode: "dynamic", // Sözlüğün varsayılan import modunu ezer
|
|
367
495
|
content: {
|
|
368
496
|
// ...
|
|
369
497
|
},
|
|
@@ -372,83 +500,103 @@ const appContent: Dictionary = {
|
|
|
372
500
|
export default appContent;
|
|
373
501
|
```
|
|
374
502
|
|
|
375
|
-
| Özellik | Tür | Varsayılan | Açıklama
|
|
376
|
-
| :--------------- | :--------------------------------- | :--------- |
|
|
377
|
-
| **`importMode`** | `'static'`, `'dynamic'`, `'fetch'` | `'static'` |
|
|
503
|
+
| Özellik | Tür | Varsayılan | Açıklama |
|
|
504
|
+
| :--------------- | :--------------------------------- | :--------- | :----------------------------------------------------------------------------------------------------------------------------- |
|
|
505
|
+
| **`importMode`** | `'static'`, `'dynamic'`, `'fetch'` | `'static'` | **Önerilmiyor**: Yerine `dictionary.importMode` seçeneğini kullanın. Sözlüklerin nasıl yükleneceğini belirler (aşağıya bakın). |
|
|
378
506
|
|
|
379
|
-
`importMode` ayarı, sözlük içeriğinin
|
|
380
|
-
Bunu `intlayer.config.ts` dosyasında `dictionary` nesnesi altında global olarak tanımlayabilir veya belirli bir sözlük için `.content.ts` dosyasında geçersiz kılabilirsiniz.
|
|
507
|
+
`importMode` ayarı, sözlük içeriğinin bileşeniniz içine (component) nasıl enjekte edileceğini belirler. Bunu `intlayer.config.ts` dosyasında `dictionary` altında genel olarak ayarlayabilir veya `.content.ts` dosyasında sözlük bazlı olacak şekilde değiştirebilirsiniz.
|
|
381
508
|
|
|
382
|
-
### 1.
|
|
509
|
+
### 1. Static Mode (`default`)
|
|
383
510
|
|
|
384
|
-
Statik modda Intlayer, `useIntlayer`
|
|
511
|
+
Statik modda Intlayer, `useIntlayer` kullanımını `useDictionary` ile değiştirir ve sözlüğü doğrudan JavaScript paketi içerisine koyar.
|
|
385
512
|
|
|
386
|
-
- **Artıları:** Anında işleme (senkron),
|
|
387
|
-
- **Eksileri:**
|
|
388
|
-
- **
|
|
513
|
+
- **Artıları:** Anında işleme (senkron), hydration işlemi sırasında hiç fazladan ağ (network) isteği gerektirmez.
|
|
514
|
+
- **Eksileri:** Paket, bileşen için desteklenen **tüm** dillerdeki (locales) içerikleri beraberinde yükler.
|
|
515
|
+
- **Kullanım Senaryosu:** Tek Sayfalı Uygulamalar (Single Page Applications - SPA).
|
|
389
516
|
|
|
390
517
|
**Dönüştürülmüş Kod Örneği:**
|
|
391
518
|
|
|
392
519
|
```tsx
|
|
393
|
-
//
|
|
520
|
+
// Yazdığınız kod
|
|
394
521
|
const content = useIntlayer("my-key");
|
|
395
522
|
|
|
396
|
-
//
|
|
523
|
+
// (Statik Mod için) dönüştürülmüş en iyi kodun temsili
|
|
524
|
+
// Bu sadece temsili bir gösterimdir; asıl kod yapılandırma ve optimizasyona bağlı olarak farklı olabilir.
|
|
397
525
|
const content = useDictionary({
|
|
398
526
|
key: "my-key",
|
|
399
527
|
content: {
|
|
400
528
|
nodeType: "translation",
|
|
401
529
|
translation: {
|
|
402
530
|
en: "My title",
|
|
403
|
-
|
|
531
|
+
tr: "Benim başlığım",
|
|
404
532
|
},
|
|
405
533
|
},
|
|
406
534
|
});
|
|
407
535
|
```
|
|
408
536
|
|
|
409
|
-
### 2.
|
|
537
|
+
### 2. Dynamic Mode
|
|
410
538
|
|
|
411
|
-
Dinamik modda Intlayer, `useIntlayer`
|
|
539
|
+
Dinamik modda Intlayer, `useIntlayer` işlevini `useDictionaryAsync` işleviyle değiştirir. Bu, mevcut geçerli dile (locale) ait JSON verisini özel olarak ve sonradan yüklemek için `import()` işlevini (Suspense benzeri bir mekanizma) kullanır.
|
|
412
540
|
|
|
413
|
-
- **Artıları:** **
|
|
414
|
-
- **Eksileri:**
|
|
415
|
-
- **
|
|
541
|
+
- **Artıları:** **Yerel (locale) seviyesinde tree shaking sağlar.** Türkçe sürümü görüntüleyen bir kullanıcı _yalnızca_ Türkçe sözlüğü indirir. İngilizce sözlük ise hiçbir zaman indirilmez veya yüklenmez.
|
|
542
|
+
- **Eksileri:** İlk açılışta (hydration esnasında) bileşen başına bir veri getirme ağ (network) isteğini tetikler.
|
|
543
|
+
- **Kullanım Senaryosu:** Büyük metin blokları barındıran uygulamalar, makaleler veya paket boyutunun (bundle size) oldukça kritik olduğu çok fazla dilli projeler.
|
|
416
544
|
|
|
417
545
|
**Dönüştürülmüş Kod Örneği:**
|
|
418
546
|
|
|
419
547
|
```tsx
|
|
420
|
-
//
|
|
548
|
+
// Yazdığınız kod
|
|
421
549
|
const content = useIntlayer("my-key");
|
|
422
550
|
|
|
423
|
-
//
|
|
551
|
+
// (Dinamik Mod için) dönüştürülmüş en iyi kodun temsili
|
|
552
|
+
// Bu sadece temsili bir gösterimdir; asıl kod optimizasyon nedenleriyle değişebilir
|
|
424
553
|
const content = useDictionaryAsync({
|
|
425
554
|
en: () =>
|
|
426
555
|
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
427
556
|
(mod) => mod.default
|
|
428
557
|
),
|
|
429
|
-
|
|
430
|
-
import(".intlayer/dynamic_dictionary/my-key/
|
|
558
|
+
tr: () =>
|
|
559
|
+
import(".intlayer/dynamic_dictionary/my-key/tr.json").then(
|
|
431
560
|
(mod) => mod.default
|
|
432
561
|
),
|
|
433
562
|
});
|
|
434
563
|
```
|
|
435
564
|
|
|
436
|
-
> `importMode: 'dynamic'`
|
|
565
|
+
> `importMode: 'dynamic'` seçeneği kullanıyorken bir bileşende (component) `useIntlayer` kullanan 100 ayrı alanınız varsa, sistem bu alanlara ayrı ayrı olarak ulaşmak için 100 adet istek yapmaya çalışacaktır. Bu tür karmaşık olan istek (request) trafiğinden ve performans kaybından kaçınmak için atom parçalar (atom component) yerine içeriği genel alanlara ayırarak `.content` (örneğin sayfa bölümüne özel bir sözlük dosyası) gruplandırmalarına koyun. Ek olarak aynı isme sahip birkaç `.content` dosyasını kullanmak da mümkündür. İsimler (keyler) aynı ise Intlayer bunları tamamen tek bir sözlük dosyası altında gruplandıracaktır.
|
|
566
|
+
|
|
567
|
+
### 3. Fetch Mode
|
|
437
568
|
|
|
438
|
-
|
|
569
|
+
Dinamik modla fazlasıyla benzer şekilde çalışır ancak ilk olarak uzak sözlükleri bulup almak için Intlayer Live Sync API'ye başvurmaya çalışır. Uzak (Remote API) isteği başarısız olursa veya içeriğin anlık senkronizasyona tabi (live updates) olmadığı belirlenirse yedek (fallback) olan statik duruma, yani dinamik içe aktarım işlemine (dynamic import) geçer.
|
|
570
|
+
|
|
571
|
+
**Dönüştürülmüş Kod Örneği:**
|
|
439
572
|
|
|
440
|
-
|
|
573
|
+
```tsx
|
|
574
|
+
// Yazdığınız kod
|
|
575
|
+
const content = useIntlayer("my-key");
|
|
576
|
+
|
|
577
|
+
// Optimize Edilmiş Kod Örneği (Fetch - İçe Aktarım İçin)
|
|
578
|
+
const content = useDictionaryAsync({
|
|
579
|
+
en: () =>
|
|
580
|
+
fetch("https://intlayer.my-domain.com/dictionary/my-key/en").then((res) =>
|
|
581
|
+
res.json()
|
|
582
|
+
),
|
|
583
|
+
tr: () =>
|
|
584
|
+
fetch("https://intlayer.my-domain.com/dictionary/my-key/tr").then((res) =>
|
|
585
|
+
res.json()
|
|
586
|
+
),
|
|
587
|
+
});
|
|
588
|
+
```
|
|
441
589
|
|
|
442
|
-
>
|
|
590
|
+
> CMS (İçerik Yönetim Sistemi) için doküman detayına bakın: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md)
|
|
443
591
|
|
|
444
|
-
>
|
|
592
|
+
> API tarafında verilerin tamamen orijinal alan (key) bilgisi barındırması gerektiği için uzak (fetch) çalışma alanlarında (minify) küçültme ve (purge) tamamen temizleme sistemleri uygulanmaz.
|
|
445
593
|
|
|
446
|
-
## Özet: Statik vs Dinamik
|
|
594
|
+
## Özet: Static (Statik) vs Dynamic (Dinamik)
|
|
447
595
|
|
|
448
|
-
| Özellik | Statik Mod | Dinamik Mod
|
|
449
|
-
| :------------------- |
|
|
450
|
-
| **JS
|
|
451
|
-
| **İlk Yükleme
|
|
452
|
-
| **Ağ İstekleri** | 0
|
|
453
|
-
| **Tree Shaking** | Bileşen
|
|
454
|
-
| **En İyi
|
|
596
|
+
| Özellik | Static Mode (Statik Mod) | Dynamic Mode (Dinamik Mod) |
|
|
597
|
+
| :------------------- | :------------------------------------------------------------- | :------------------------------------------- |
|
|
598
|
+
| **JS Paketi Boyutu** | Büyük (Bileşen için kullanılan tüm dil dosyalarını barındırır) | Küçük (Sadece kod tabanı vardır) |
|
|
599
|
+
| **İlk Yükleme Hızı** | Anlık (Sözlük, genel paketin içindedir) | Küçük Gecikme ile (JSON sonradan indirilir) |
|
|
600
|
+
| **Ağ İstekleri** | 0 Eksta İstek Gerektirmez | 1 Sözlük için anahtar isteği alır |
|
|
601
|
+
| **Tree Shaking** | Bileşen Seviyesinde | Bileşen ve Dil Seviyesinde |
|
|
602
|
+
| **En İyi Senaryo** | UI ve Arayüz Bileşenleri, Küçük Uygulamalar | Büyük Yazılar içeren Siteler, Çok Sayıda Dil |
|
package/docs/tr/configuration.md
CHANGED
|
@@ -679,16 +679,16 @@ routing: {
|
|
|
679
679
|
|
|
680
680
|
Tanımlama bilgisi saklama alanını kullanırken, ek nitelikler yapılandırabilirsiniz:
|
|
681
681
|
|
|
682
|
-
| Alan | Açıklama
|
|
683
|
-
| ---------- |
|
|
684
|
-
| `name` | Tanımlama bilgisi adı. Varsayılan: `'INTLAYER_LOCALE'`
|
|
685
|
-
| `domain` | Tanımlama bilgisi alanı. Varsayılan: `undefined`
|
|
686
|
-
| `path` | Tanımlama bilgisi yolu. Varsayılan: `undefined`
|
|
687
|
-
| `secure` | HTTPS gerektirir. Varsayılan: `undefined`
|
|
688
|
-
| `httpOnly` | HTTP-only bayrağı. Varsayılan: `undefined`
|
|
689
|
-
| `sameSite` | SameSite politikası.
|
|
690
|
-
| `expires` |
|
|
691
|
-
| `maxAge` | Oluşturulmasından itibaren saniye cinsinden ömrü. `expires` seçeneğinden önceliklidir. Varsayılan: `undefined`
|
|
682
|
+
| Alan | Açıklama | Tür |
|
|
683
|
+
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
684
|
+
| `name` | Tanımlama bilgisi adı. Varsayılan: `'INTLAYER_LOCALE'` | `string` |
|
|
685
|
+
| `domain` | Tanımlama bilgisi alanı. Varsayılan: `undefined` | `string` |
|
|
686
|
+
| `path` | Tanımlama bilgisi yolu. Varsayılan: `undefined` | `string` |
|
|
687
|
+
| `secure` | HTTPS gerektirir. Varsayılan: `undefined` | `boolean` |
|
|
688
|
+
| `httpOnly` | HTTP-only bayrağı. Varsayılan: `undefined` | `boolean` |
|
|
689
|
+
| `sameSite` | SameSite politikası. | `'strict'` | <br/> `'lax'` | <br/> `'none'` |
|
|
690
|
+
| `expires` | Sayı, oluşturulmasından itibaren günleri temsil eder; tarih (veya ISO tarih dizesi) mutlak bir son kullanma tarihidir. Varsayılan: `undefined` | `Date` | <br/> `number` | <br/> `string` |
|
|
691
|
+
| `maxAge` | Oluşturulmasından itibaren saniye cinsinden ömrü. `expires` seçeneğinden önceliklidir. Varsayılan: `undefined` | `number` |
|
|
692
692
|
|
|
693
693
|
#### Saklama Nitelikleri
|
|
694
694
|
|