Ana SayfaPlaygroundShowcaseUygulamaDokümanBlog
    • Englishİngilizce
      EN
    • русскийRusça
      RU
    • 日本語Japonca
      JA
    • françaisFransızca
      FR
    • 한국어Korece
      KO
    • 中文Çince
      ZH
    • españolİspanyolca
      ES
    • DeutschAlmanca
      DE
    • العربيةArapça
      AR
    • italianoİtalyanca
      IT
    • British Englishİngiliz İngilizcesi
      EN-GB
    • portuguêsPortekizce
      PT
    • हिन्दीHintçe
      HI
    • TürkçeTürkçe
      TR
    • polskiLehçe
      PL
    • IndonesiaEndonezce
      ID
    • Tiếng ViệtVietnamca
      VI
    • українськаUkraynaca
      UK
    /
    Çerçeveye göre belgeleri filtrele
    Alt+←
    Neden Intlayer?
    Başla
    Kavram
    • Intlayer Nasıl Çalışır
    • Yapılandırma
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Görsel Editör
    • CMS
    • CI/CD Entegrasyonu
    • ÇeviriÇoğulNumaralandırmaKoşulCinsiyetEklemeDosyaİç İçe GeçmeMarkdownHTMLFonksiyon Getirme
    • Yerel Dosya
    • Derleyici
    • Otomatik Doldurma
    • Test
    • Paket Optimizasyonu
    Ortam
    • Next.js 14 ve Uygulama Yönlendirici
      Next.js 15
      Next.js locale’siz URL
      Next.js ve Sayfa Yönlendirici
      Derleyici
    • Tanstack Start Solid
    • Astro ve React
      Astro ve Svelte
      Astro ve Vue
      Astro ve Solid
      Astro ve Preact
      Astro ve Lit
      Astro ve Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt ve Vue
    • Vite ve Solid
    • SvelteKit
    • Vite ve Preact
    • Vite ve Vanilla JS
    • Vite ve Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native ve Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx ve React
    Plugins
    • JSON
    • gettext (.po)
    VS Code Uzantısı
    Aracı
    • MCP Sunucusu
    • Aracı becerileri
    Sürümler
    • v8
    • v7
    • v6
    Karşılaştırma
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Bir soru sor
    1. Documentation
    2. Ortam
    3. Vite ve Vue
    \n\n\n```\n\n#### Intlayer'da İçeriğe Erişim\n\nIntlayer, içeriğinize erişmek için farklı API'ler sunar:\n\n- **Bileşen tabanlı sözdizimi** (önerilen):\n İçeriği Intlayer Düğümü olarak işlemek için `` veya `` sözdizimini kullanın. Bu, [Görsel Düzenleyici](/tr/doc/concept/editor) ve [CMS](/tr/doc/concept/cms) ile sorunsuz bir şekilde entegre olur.\n\n- **Dize tabanlı sözdizimi**:\n İçeriği düz metin olarak işlemek için `{{ myContent }}` kullanın, Görsel Düzenleyici desteği olmadan.\n\n- **Ham HTML sözdizimi**:\n İçeriği ham HTML olarak işlemek için `
    ` kullanın, Görsel Düzenleyici desteği olmadan.\n\n- **Yıkım sözdizimi**:\n `useIntlayer` composable, içeriği erişirken reaktifliği koruyan bir Proxy döndürür.\n - `const content = useIntlayer(\"myContent\");` Ve `{{ content.myContent }}` / `` kullanın.\n - Veya `const { myContent } = useIntlayer(\"myContent\");` Ve `{{ myContent}}` / `` kullanarak içeriği yıkın.\n\n> Eğer uygulamanız zaten mevcutsa, binlerce bileşeni bir saniye içinde dönüştürmek için [Intlayer Compiler](/tr/doc/compiler)'ı [extract komutu](/tr/doc/concept/cli/extract) ile birlikte kullanabilirsiniz.\n\n### (İsteğe Bağlı) Adım 6: İçeriğinizin Dilini Değiştirin\n\nİçeriğinizin dilini değiştirmek için `useLocale` composable tarafından sağlanan `setLocale` işlevini kullanabilirsiniz. Bu işlev, uygulamanın yerel ayarını ayarlamanıza ve içeriği buna göre güncellemenize olanak tanır.\n\nDilleri değiştirmek için bir bileşen oluşturun:\n\n```vue fileName=\"src/components/LocaleSwitcher.vue\"\n\n\n\n```\n\nArdından, bu bileşeni App.vue'nuzda kullanın:\n\n```vue fileName=\"src/App.vue\"\n\n\n\n```\n\n### (İsteğe Bağlı) Adım 7: Uygulamanıza Yerelleştirilmiş Yönlendirme Ekleyin\n\nVue uygulamasında yerelleştirilmiş yönlendirme eklemek genellikle yerel ayar önekleriyle Vue Router kullanmayı içerir. Bu, her dil için benzersiz rotalar oluşturur, SEO ve SEO dostu URL'ler için kullanışlıdır.\nÖrnek:\n\n```plaintext\n- https://example.com/about\n- https://example.com/es/about\n- https://example.com/fr/about\n```\n\nÖncelikle Vue Router'ı kurun:\n\n```bash packageManager=\"npm\"\nnpm install vue-router\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add vue-router\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add vue-router\n```\n\nArdından, yerel ayar tabanlı yönlendirmeyi yöneten bir yönlendirici yapılandırması oluşturun:\n\n```js fileName=\"src/router/index.ts\"\nimport {\n localeFlatMap,\n type Locale,\n} from 'intlayer';\nimport { createIntlayerClient } from \"vue-intlayer\";\nimport { createRouter, createWebHistory } from 'vue-router';\nimport HomeView from './views/home/HomeView.vue';\nimport RootView from './views/root/Root.vue';\n\n/**\n * Yerel ayar özel yollarla ve meta verilerle rotaları bildirin.\n */\nconst routes = localeFlatMap(({ urlPrefix, locale }) => [\n {\n path: `${urlPrefix}/`,\n name: `Root-${locale}`,\n component: RootView,\n meta: {\n locale,\n },\n },\n {\n path: `${urlPrefix}/home`,\n name: `Home-${locale}`,\n component: HomeView,\n meta: {\n locale,\n },\n },\n]);\n\n// Yönlendirici örneğini oluştur\nexport const router = createRouter({\n history: createWebHistory(),\n routes,\n});\n\n// Yerel ayar yönetimi için navigasyon koruması ekleyin\nrouter.beforeEach((to, _from, next) => {\n const client = createIntlayerClient();\n\n const metaLocale = to.meta.locale as Locale;\n\n // Rota meta'sında tanımlanan yerel ayarı yeniden kullan\n client.setLocale(metaLocale);\n next();\n});\n```\n\n> Ad, tüm rotalar arasında benzersiz olmalı ve çakışmaları önlemek için yönlendirme ve bağlantıyı sağlamak için kullanılır.\n\nArdından, yönlendiriciyi main.js dosyanızda kaydedin:\n\n```js fileName=\"src/main.ts\"\nimport { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport { router } from \"./router\";\nimport \"./style.css\";\n\nconst app = createApp(App);\n\n// Uygulamaya yönlendiriciyi ekleyin\napp.use(router);\n\n// Uygulamayı bağlayın\napp.mount(\"#app\");\n```\n\nArdından, RouterView bileşenini işlemek için App.vue dosyanızı güncelleyin. Bu bileşen, geçerli rota için eşleşen bileşeni görüntüler.\n\n```vue fileName=\"src/App.vue\"\n\n\n\n```\n\nParalel olarak, uygulamanıza sunucu tarafı yönlendirme eklemek için `intlayerProxy`'i de kullanabilirsiniz. Bu eklenti, URL'ye göre geçerli yerel ayarı otomatik olarak algılar ve uygun yerel ayar çerezini ayarlar. Hiç yerel ayar belirtilmezse, eklenti kullanıcının tarayıcı dil tercihlerine göre en uygun yerel ayarı belirler. Hiç yerel ayar algılanmazsa, varsayılan yerel ayara yönlendirir.\n\n> Not: Üretimde `intlayerProxy`'i kullanmak için `vite-intlayer` paketini `devDependencies`'den `dependencies`'e taşımalısınız.\n\n```typescript {3,7} fileName=\"vite.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { defineConfig } from \"vite\";\nimport vue from \"@vitejs/plugin-vue\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [\n intlayerProxy(), // should be placed first\n vue(),\n intlayer(),\n ],\n});\n```\n\n### (İsteğe Bağlı) Adım 8: Yerel ayar değiştiğinde URL'yi değiştirin\n\nKullanıcı dili değiştirdiğinde URL'yi otomatik olarak güncellemek için `LocaleSwitcher` bileşenini Vue Router kullanacak şekilde değiştirebilirsiniz:\n\n```vue fileName=\"src/components/LocaleSwitcher.vue\"\n\n\n\n```\n\nİpucu: Daha iyi SEO ve erişilebilirlik için, dil özel sayfalarına bağlanmak üzere `` gibi etiketleri kullanın. Bu, arama motorlarının dil özel URL'lerini keşfetmesine ve uygun şekilde indekslemesine olanak tanır. SPA davranışını korumak için varsayılan navigasyonu @click.prevent ile önleyin, useLocale ile yerel ayarı değiştirin ve Vue Router kullanarak programatik olarak gidin.\n\n```html\n
      \n
    1. \n \n
      \n English\n English\n EN\n
      \n
      \n
    2. \n
    3. \n \n
      \n Español\n Spanish\n ES\n
      \n \n
    4. \n
    \n```\n\n### (İsteğe Bağlı) Adım 9: HTML Dil ve Yön Niteliklerini Değiştirin\n\nUygulamanız birden fazla dili desteklediğinde, `` etiketinin `lang` ve `dir` niteliklerini geçerli yerel ayar ile eşleşecek şekilde güncellemek önemlidir. Bunu yapmak şunları sağlar:\n\n- **Erişilebilirlik**: Ekran okuyucular ve yardımcı teknolojiler, içeriği doğru şekilde telaffuz etmek ve yorumlamak için doğru `lang` niteliğine güvenir.\n- **Metin İşleme**: `dir` (yön) niteliği, metnin doğru sırada işlenmesini sağlar (örneğin, İngilizce için soldan sağa, Arapça veya İbranice için sağdan sola), okunabilirlik için gereklidir.\n- **SEO**: Arama motorları, sayfanızın dilini belirlemek için `lang` niteliğini kullanır, arama sonuçlarında doğru yerelleştirilmiş içeriği sunmaya yardımcı olur.\n\nYerel ayar değiştiğinde bu nitelikleri dinamik olarak güncellemek, tüm desteklenen diller için tutarlı ve erişilebilir bir deneyim sağlar.\n\n```js fileName=\"src/composables/useI18nHTMLAttributes.ts\"\nimport { watch } from \"vue\";\nimport { useLocale } from \"vue-intlayer\";\nimport { getHTMLTextDir } from \"intlayer\";\n\n/**\n * Geçerli yerel ayara göre HTML etiketinin `lang` ve `dir` niteliklerini günceller.\n *\n * @example\n * // App.vue'nuzda veya genel bir bileşende\n * import { useI18nHTMLAttributes } from './composables/useI18nHTMLAttributes'\n *\n * useI18nHTMLAttributes()\n */\nexport const useI18nHTMLAttributes = () => {\n const { locale } = useLocale();\n\n // Yerel ayar değiştiğinde HTML niteliklerini güncelleyin\n watch(\n () => locale.value,\n (newLocale) => {\n if (!newLocale) return;\n\n // Dil niteliğini güncelleyin\n document.documentElement.lang = newLocale;\n\n // Metin yönünü ayarlayın (çoğu dil için ltr, Arapça, İbranice vb. için rtl)\n document.documentElement.dir = getHTMLTextDir(newLocale);\n },\n { immediate: true }\n );\n};\n```\n\nBu composable'ı App.vue'nuzda veya genel bir bileşende kullanın:\n\n```vue fileName=\"src/App.vue\"\n\n\n\n```\n\n### (İsteğe Bağlı) Adım 10: Yerelleştirilmiş Bağlantı Bileşeni Oluşturun\n\nUygulamanızın navigasyonunun geçerli yerel ayarı saygı gösterdiğinden emin olmak için özel bir `Link` bileşeni oluşturabilirsiniz. Bu bileşen, dahili URL'leri otomatik olarak geçerli dille önekler, böylece. Örneğin, bir Fransızca konuşan kullanıcı \"Hakkında\" sayfasına giden bir bağlantıya tıkladığında, `/about` yerine `/fr/about`'a yönlendirilir.\n\nBu davranış çeşitli nedenlerle kullanışlıdır:\n\n- **SEO ve Kullanıcı Deneyimi**: Yerelleştirilmiş URL'ler, arama motorlarının dil özel sayfalarını doğru şekilde indekslemesine yardımcı olur ve kullanıcılara tercih ettikleri dilde içerik sunar.\n- **Tutarlılık**: Uygulamanız boyunca yerelleştirilmiş bir bağlantı kullanarak, navigasyonun aynı yerel ayar bağlamında kalmasını garanti edersiniz, beklenmedik dil anahtarlarını önlersiniz.\n- **Bakım Kolaylığı**: URL mantığını tek bir bileşende merkezileştirmek, yönetimini basitleştirir, uygulamanız büyüdükçe kod tabanınızı daha kolay yönetilebilir hale getirir.\n\n```vue fileName=\"src/components/Link.vue\"\n\n\n\n```\n\nVue Router ile kullanmak için yönlendiriciye özel bir sürüm oluşturun:\n\n```vue fileName=\"src/components/RouterLink.vue\"\n\n\n\n```\n\nUygulamanızda bu bileşenleri kullanın:\n\n```vue fileName=\"src/App.vue\"\n\n\n\n```\n\n### (İsteğe Bağlı) Adım 11: Markdown İşleyin\n\nIntlayer, Vue uygulamanızda Markdown içeriğini doğrudan işleme desteği sağlar. Varsayılan olarak, Markdown düz metin olarak kabul edilir. Markdown'ı zengin HTML'ye dönüştürmek için [markdown-it](https://github.com/markdown-it/markdown-it), bir Markdown ayrıştırıcısı entegre edebilirsiniz.\n\nBu, çevirileriniz listeler, bağlantılar veya vurgu gibi biçimlendirilmiş içerik içerdiğinde özellikle kullanışlıdır.\n\nVarsayılan olarak Intlayer markdown'ı dize olarak işler. Ancak Intlayer, markdown'ı HTML'ye dönüştürmek için `installIntlayerMarkdown` işlevini kullanarak markdown'ı işleme konusunda bir yol sağlar.\n\n> Markdown içeriğini `intlayer` paketi kullanarak nasıl bildireceğinizi görmek için [markdown dokümantasyonuna](https://github.com/aymericzip/intlayer/tree/main/docs/en/dictionary/markdown.md) bakın.\n\n```ts fileName=\"main.ts\"\nimport MarkdownIt from \"markdown-it\";\nimport { createApp, h } from \"vue\";\nimport { installIntlayer, installIntlayerMarkdown } from \"vue-intlayer\";\n\nconst app = createApp(App);\n\napp.use(intlayer);\n\nconst md = new MarkdownIt({\n html: true, // HTML etiketlerine izin ver\n linkify: true, // URL'leri otomatik olarak bağla\n typographer: true, // Akıllı tırnaklar, tireler vb. etkinleştir\n});\n\n// Intlayer'a markdown'ı HTML'ye dönüştürmesi gerektiğinde md.render() kullanmasını söyle\ninstallIntlayerMarkdown(app, (markdown) => {\n const html = md.render(markdown);\n return h(\"div\", { innerHTML: html });\n});\n```\n\nKaydedildikten sonra, bileşen tabanlı sözdizimini kullanarak Markdown içeriğini doğrudan görüntüleyebilirsiniz:\n\n```vue\n\n\n\n```\n\n### TypeScript Yapılandırın\n\nIntlayer, modül genişletmesi kullanarak TypeScript avantajlarından yararlanır.\n\n![Autocompletion](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)\n\n![Translation error](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)\n\nOtomatik oluşturulan türleri TypeScript yapılandırmanıza dahil edin.\n\n```json5 fileName=\"tsconfig.json\"\n{\n // ... Mevcut TypeScript yapılandırmalarınız\n \"include\": [\n // ... Mevcut TypeScript yapılandırmalarınız\n \".intlayer/**/*.ts\", // Otomatik oluşturulan türleri dahil et\n ],\n}\n```\n\n### Git Yapılandırması\n\nIntlayer tarafından oluşturulan dosyaları Git deponuza kaydetmekten kaçınmak için bunları yok saymanız önerilir. Bu, bunları Git deponuza kaydetmekten kaçınmanıza olanak tanır.\n\nBunu yapmak için `.gitignore` dosyanıza aşağıdaki talimatları ekleyin:\n\n```bash\n# Intlayer tarafından oluşturulan dosyaları yok say\n.intlayer\n```\n\n### VS Code Uzantısı\n\nIntlayer ile geliştirme deneyiminizi iyileştirmek için resmi **Intlayer VS Code Uzantısı**'nı kurun.\n\n[VS Code Marketplace'ten yükleyin](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nBu uzantı şunları sağlar:\n\n- **Çeviri anahtarları için otomatik tamamlama**.\n- **Eksik çeviriler için gerçek zamanlı hata algılama**.\n- **Çevrilmiş içeriğin satır içi önizlemeleri**.\n- **Çevirileri kolayca oluşturmak ve güncellemek için hızlı eylemler**.\n\nUzantıyı kullanma hakkında daha fazla ayrıntı için [Intlayer VS Code Uzantısı dokümantasyonuna](https://intlayer.org/doc/vs-code-extension) bakın.\n\n---\n\n### (İsteğe bağlı) Adım 12 : Bileşenlerinizin içeriğini çıkarın\n\nMevcut bir kod tabanınız varsa, binlerce dosyayı dönüştürmek zaman alıcı olabilir.\n\nBu süreci kolaylaştırmak için Intlayer, bileşenlerinizi dönüştürmek ve içeriği çıkarmak için bir [derleyici](/tr/doc/compiler) / [çıkarıcı](/tr/doc/concept/cli/extract) sunar.\n\nKurulum için `intlayer.config.ts` dosyanıza bir `compiler` bölümü ekleyebilirsiniz:\n\n```typescript fileName=\"intlayer.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Yapılandırmanızın geri kalanı\n compiler: {\n /**\n * Derleyicinin etkinleştirilip etkinleştirilmeyeceğini belirtir.\n */\n enabled: true,\n\n /**\n * Çıktı dosyalarının yolunu tanımlar\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Bileşenlerin dönüştürüldükten sonra kaydedilip kaydedilmeyeceğini belirtir. Bu sayede derleyici, uygulamayı dönüştürmek için yalnızca bir kez çalıştırılabilir ve ardından kaldırılabilir.\n */\n saveComponents: false,\n\n /**\n * Sözlük anahtarı öneki\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n```\n\n\n \n\nBileşenlerinizi dönüştürmek ve içeriği çıkarmak için çıkarıcıyı çalıştırın\n\n```bash packageManager=\"npm\"\nnpx intlayer extract\n```\n\n```bash packageManager=\"pnpm\"\npnpm intlayer extract\n```\n\n```bash packageManager=\"yarn\"\nyarn intlayer extract\n```\n\n```bash packageManager=\"bun\"\nbun x intlayer extract\n```\n\n \n \n\n`vite.config.ts` dosyanızı `intlayerCompiler` eklentisini içerecek şekilde güncelleyin:\n\n```ts fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Derleyici eklentisini ekler\n ],\n});\n```\n\n```bash packageManager=\"npm\"\nnpm run build # Veya npm run dev\n```\n\n```bash packageManager=\"pnpm\"\npnpm run build # Or pnpm run dev\n```\n\n```bash packageManager=\"yarn\"\nyarn build # Or yarn dev\n```\n\n```bash packageManager=\"bun\"\nbun run build # Or bun run dev\n```\n\n \n\n\n### (İsteğe bağlı) Sitemap ve robots.txt (derleme zamanı üretimi)\n\nIntlayer, `generateSitemap` ve `getMultilingualUrls` ile tarayıcılar için çok dilli `sitemap.xml` ve `robots.txt` üretip bunları `public/` klasörüne otomatik yazmanıza yardımcı olur. Genelde Vite’tan **önce** küçük bir Node betiği çalıştırılır (ör. npm `predev` / `prebuild` kancaları).\n\n#### Sitemap\n\nIntlayer sitemap oluşturucusu yerel ayarlarınıza uyar ve tarayıcılar için metadata ekler.\n\n> Üretilen sitemap `xhtml:link` (hreflang) ad alanını destekler. Düz URL listesi yerine, her sayfanın tüm dil sürümleri çift yönlü bağlanır (ör. `/about`, `/fr/about` veya `/about?lang=fr` - yönlendirme moduna bağlı).\n\n#### Robots.txt\n\n`getMultilingualUrls` kullanarak `Disallow` kurallarının hassas yolların tüm yerelleştirilmiş varyantlarını kapsamasını sağlayın.\n\n#### 1. Proje köküne `generate-seo.mjs` ekleyin\n\n```javascript fileName=\"generate-seo.mjs\"\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n```\n\nBetik `intlayer` içe aktarabilmeli; paket kurulu olmalı. Üretimde ortam değişkeni `SITE_URL` ayarlayın (ör. CI).\n\n> Node ESM için `generate-seo.mjs` tercih edin. `generate-seo.js` kullanıyorsanız `package.json` içinde `\"type\": \"module\"` veya ESM’yi başka şekilde etkinleştirin.\n\n#### 2. Betiği Vite’tan önce çalıştırın\n\n```json fileName=\"package.json\"\n{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n```\n\npnpm veya yarn kullanıyorsanız komutları uyarlayın. CI’dan da çağrılabilir.\n\n### Daha Fazla İlerle\n\nDaha fazla ilerlemek için [görsel düzenleyici](/tr/doc/concept/editor) veya içeriğinizi [CMS](/tr/doc/concept/cms) kullanarak dışa aktarmayı uygulayabilirsiniz.\n\n---\n","about":"Vite ve Vue web sitenizi çok dilli hale getirmeyi öğrenin. Dokümantasyonu takip ederek uluslararasılaştırma (i18n) ve çevirisini yapın.","url":"https://intlayer.org/tr/doc/environment/vite-and-vue","datePublished":"07-09-2025","dateModified":"06-05-2026","keywords":"Uluslararasılaştırma, Dokümantasyon, Intlayer, Vite, Vue, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Geliştiriciler, İçerik Yöneticileri"}}
    Oluşturma:2025-09-07Son güncelleme:2026-05-06
    GitHub'da uygulama şablonunu görüntüle

    Bu sayfada kullanılabilir bir uygulama şablonu var.

    Vitrin uygulamasını görüntüle

    Bu sayfa şablonun canlı demosuna bağlanır.

    Video eğitimini izleyin

    Bu sayfada bir video eğitimi mevcuttur.

    Bu dokümanı favori AI asistanınıza referans verin
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın

    Sürüm Geçmişi

    1. "Solid useIntlayer API kullanımını doğrudan özellik erişimine güncelle"
      v8.9.004.05.2026
    2. "init komutu ekle"
      v7.5.930.12.2025
    3. "Geçmiş başlatıldı"
      v5.5.1029.06.2025

    Bu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.

    Orijinal içeriğin İngilizce son sürümünü görüntüleyin
    Bu dokümanı düzenle

    Bu dokümantasyonu geliştirmek için bir fikriniz varsa, lütfen GitHub'da bir çekme isteği göndererek katkıda bulunmaktan çekinmeyin.

    Dokümantasyon için GitHub bağlantısı
    Kopyala

    Belge Markdown'ını panoya kopyala

    Intlayer ile Vite and Vue çevirin | Uluslararasılaştırma (i18n)

    GitHub'da Uygulama Şablonu'na bakın.

    Intlayer Nedir?

    Intlayer, modern web uygulamalarında çok dilli desteği basitleştirmek için tasarlanmış yenilikçi, açık kaynaklı bir uluslararasılaştırma (i18n) kütüphanesidir.

    Intlayer ile şunları yapabilirsiniz:

    • Bileşen düzeyinde açıklayıcı sözlükler kullanarak çevirileri kolayca yönetin.
    • Meta verileri, rotaları ve içeriği dinamik olarak yerelleştirin.
    • Otomatik oluşturulan türlerle TypeScript desteği sağlayın, böylece otomatik tamamlama ve hata algılama iyileşir.
    • Dinamik yerel ayar algılama ve anahtarlama gibi gelişmiş özelliklerden yararlanın.

    Vite ve Vue Uygulamasında Intlayer Kurulumu İçin Adım Adım Kılavuz

    www.youtube.com
    ide.intlayer.org
    intlayer-vite-vue-template.vercel.app

    GitHub'da Uygulama Şablonu'na bakın.

    Adım 1: Bağımlılıkları Kurma

    Gerekli paketleri npm kullanarak kurun:

    bash
    Kodu kopyala

    Kodu panoya kopyala

    npm install intlayer vue-intlayernpm install vite-intlayer --save-devnpx intlayer init
    • intlayer

      Yapılandırma yönetimi, çeviri, içerik bildirimi, dönüştürme ve CLI komutları için uluslararasılaştırma araçları sağlayan çekirdek paket.

    • vue-intlayer Vue uygulamasıyla Intlayer'ı entegre eden paket. Vue uluslararasılaştırması için bağlam sağlayıcıları ve composables sağlar.

    • vite-intlayer Vite bundler ile Intlayer'ı entegre etmek için Vite eklentisini ve kullanıcının tercih ettiği yerel ayarı algılamak, çerezleri yönetmek ve URL yönlendirmesi yapmak için middleware'i içerir.

    Adım 2: Projenizi Yapılandırma

    Uygulamanızın dillerini yapılandırmak için bir yapılandırma dosyası oluşturun:

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [
          Locales.ENGLISH,
          Locales.FRENCH,
          Locales.SPANISH,
          // Diğer yerel ayarlarınız
        ],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;
    Bu yapılandırma dosyası aracılığıyla, yerelleştirilmiş URL'leri, middleware yönlendirmesini, çerez adlarını, içerik bildiriminizin konumunu ve uzantısını, Intlayer günlüklerini konsolda devre dışı bırakmayı ve daha fazlasını ayarlayabilirsiniz. Kullanılabilir parametrelerin tam listesi için yapılandırma dokümantasyonuna bakın.

    Adım 3: Intlayer'ı Vite Yapılandırmanıza Entegre Etme

    Yapılandırmanıza intlayer eklentisini ekleyin.

    vite.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { defineConfig } from "vite";
    import vue from "@vitejs/plugin-vue";
    import { intlayer } from "vite-intlayer";
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue(), intlayer()],
    });
    intlayer() Vite eklentisi, Vite ile Intlayer'ı entegre etmek için kullanılır. İçerik bildirimi dosyalarının oluşturulmasını sağlar ve bunları geliştirme modunda izler. Ayrıca Intlayer ortam değişkenlerini Vite uygulaması içinde tanımlar. Ek olarak, performansı optimize etmek için takma adlar sağlar.

    Adım 4: İçeriğinizi Bildirin

    Çevirileri depolamak için içerik bildiriminizi oluşturun ve yönetin:

    src/helloWorld.content.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "helloworld",
      content: {
        count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
        edit: t({
          en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
          fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
          es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
        }),
        checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
        officialStarter: t({
          en: "the official Vue + Vite starter",
          fr: "le starter officiel Vue + Vite",
          es: "el starter oficial Vue + Vite",
        }),
        learnMore: t({
          en: "Learn more about IDE Support for Vue in the ",
          fr: "En savoir plus sur le support IDE pour Vue dans le ",
          es: "Aprenda más sobre el soporte IDE para Vue en el ",
        }),
        vueDocs: t({
          en: "Vue Docs Scaling up Guide",
          fr: "Vue Docs Scaling up Guide",
          es: "Vue Docs Scaling up Guide",
        }),
        readTheDocs: t({
          en: "Click on the Vite and Vue logos to learn more",
          fr: "Cliquez sur les logos Vite et Vue pour en savoir plus",
          es: "Haga clic en los logotipos de Vite y Vue para obtener más información",
        }),
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    İçerik bildiriminiz uygulamanızın herhangi bir yerine yerleştirilebilir, yeter ki contentDir dizinine dahil edilsin (varsayılan olarak ./src). Ve içerik bildirimi dosya uzantısı ile eşleşsin (varsayılan olarak .content.{json,ts,tsx,js,jsx,mjs,cjs}).
    Daha fazla ayrıntı için içerik bildirimi dokümantasyonuna bakın.

    Adım 5: Kodunuzda Intlayer'ı Kullanın

    Vue uygulamanız boyunca Intlayer'ın uluslararasılaştırma özelliklerine erişmek için, ana dosyanızda Intlayer singleton örneğini kaydetmeniz gerekir. Bu adım, çevirilerin bileşen ağacınızın herhangi bir yerinde erişilebilir olmasını sağlamak için çok önemlidir.

    Kodu kopyala

    Kodu panoya kopyala

    import { createApp } from "vue";import { intlayer } from "vue-intlayer";import App from "./App.vue";import "./style.css";const app = createApp(App);// Üst düzeyde sağlayıcıyı enjekte edinapp.use(intlayer);// Uygulamayı bağlayınapp.mount("#app");

    İçerik sözlüklerinize uygulamanız boyunca erişin ve useIntlayer composables kullanarak bir ana Vue bileşeni oluşturun:

    src/HelloWord.vue
    Kodu kopyala

    Kodu panoya kopyala

    <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  officialStarter,  learnMore,  vueDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"      >create-vue</a    >, <officialStarter />  </p>  <p>    <learnMore />    <a      href="https://vuejs.org/guide/scaling-up/tooling.html#ide-support"      target="_blank"      ><vueDocs /></a    >.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>

    Intlayer'da İçeriğe Erişim

    Intlayer, içeriğinize erişmek için farklı API'ler sunar:

    • Bileşen tabanlı sözdizimi (önerilen): İçeriği Intlayer Düğümü olarak işlemek için <myContent /> veya <Component :is="myContent" /> sözdizimini kullanın. Bu, Görsel Düzenleyici ve CMS ile sorunsuz bir şekilde entegre olur.

    • Dize tabanlı sözdizimi: İçeriği düz metin olarak işlemek için {{ myContent }} kullanın, Görsel Düzenleyici desteği olmadan.

    • Ham HTML sözdizimi: İçeriği ham HTML olarak işlemek için <div v-html="myContent" /> kullanın, Görsel Düzenleyici desteği olmadan.

    • Yıkım sözdizimi: useIntlayer composable, içeriği erişirken reaktifliği koruyan bir Proxy döndürür.

      • const content = useIntlayer("myContent"); Ve {{ content.myContent }} / <content.myContent /> kullanın.
      • Veya const { myContent } = useIntlayer("myContent"); Ve {{ myContent}} / <myContent/> kullanarak içeriği yıkın.
    Eğer uygulamanız zaten mevcutsa, binlerce bileşeni bir saniye içinde dönüştürmek için Intlayer Compiler'ı extract komutu ile birlikte kullanabilirsiniz.

    (İsteğe Bağlı) Adım 6: İçeriğinizin Dilini Değiştirin

    İçeriğinizin dilini değiştirmek için useLocale composable tarafından sağlanan setLocale işlevini kullanabilirsiniz. Bu işlev, uygulamanın yerel ayarını ayarlamanıza ve içeriği buna göre güncellemenize olanak tanır.

    Dilleri değiştirmek için bir bileşen oluşturun:

    src/components/LocaleSwitcher.vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <div class="locale-switcher">    <select v-model="selectedLocale" @change="changeLocale">      <option v-for="loc in availableLocales" :key="loc" :value="loc">        {{ getLocaleName(loc) }}      </option>    </select>  </div></template><script setup lang="ts">import { ref, watch } from "vue";import { getLocaleName } from "intlayer";import { useLocale } from "vue-intlayer";// Yerel ayar bilgilerini ve setLocale işlevini alınconst { locale, availableLocales, setLocale } = useLocale();// Seçilen yerel ayarı bir ref ile takip edinconst selectedLocale = ref(locale.value);// Seçim değiştiğinde yerel ayarı güncelleyinconst changeLocale = () => setLocale(selectedLocale.value);// Seçilen yerel ayarı genel yerel ayar ile senkronize tutunwatch(  () => locale.value,  (newLocale) => {    selectedLocale.value = newLocale;  });</script>

    Ardından, bu bileşeni App.vue'nuzda kullanın:

    src/App.vue
    Kodu kopyala

    Kodu panoya kopyala

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";import HelloWorld from "@components/HelloWorld.vue";import LocaleSwitcher from "@components/LocaleSwitcher.vue";import { ref, watch } from "vue";const content = useIntlayer("app"); // İlgili intlayer bildirim dosyası oluşturun</script><template>  <div>    <LocaleSwitcher />    <a href="https://vite.dev" target="_blank">      <img src="/vite.svg" class="logo" :alt="content.viteLogo" />    </a>    <a href="https://vuejs.org/" target="_blank">      <img src="./assets/vue.svg" class="logo vue" :alt="content.vueLogo" />    </a>  </div>  <HelloWorld :msg="content.title" /></template>

    (İsteğe Bağlı) Adım 7: Uygulamanıza Yerelleştirilmiş Yönlendirme Ekleyin

    Vue uygulamasında yerelleştirilmiş yönlendirme eklemek genellikle yerel ayar önekleriyle Vue Router kullanmayı içerir. Bu, her dil için benzersiz rotalar oluşturur, SEO ve SEO dostu URL'ler için kullanışlıdır. Örnek:

    plaintext
    Kodu kopyala

    Kodu panoya kopyala

    - https://example.com/about- https://example.com/es/about- https://example.com/fr/about

    Öncelikle Vue Router'ı kurun:

    bash
    Kodu kopyala

    Kodu panoya kopyala

    npm install vue-routernpx intlayer init

    Ardından, yerel ayar tabanlı yönlendirmeyi yöneten bir yönlendirici yapılandırması oluşturun:

    src/router/index.ts
    Kodu kopyala

    Kodu panoya kopyala

    import {  localeFlatMap,  type Locale,} from 'intlayer';import { createIntlayerClient } from "vue-intlayer";import { createRouter, createWebHistory } from 'vue-router';import HomeView from './views/home/HomeView.vue';import RootView from './views/root/Root.vue';/** * Yerel ayar özel yollarla ve meta verilerle rotaları bildirin. */const routes = localeFlatMap(({ urlPrefix, locale }) => [  {    path: `${urlPrefix}/`,    name: `Root-${locale}`,    component: RootView,    meta: {      locale,    },  },  {    path: `${urlPrefix}/home`,    name: `Home-${locale}`,    component: HomeView,    meta: {      locale,    },  },]);// Yönlendirici örneğini oluşturexport const router = createRouter({  history: createWebHistory(),  routes,});// Yerel ayar yönetimi için navigasyon koruması ekleyinrouter.beforeEach((to, _from, next) => {  const client = createIntlayerClient();  const metaLocale = to.meta.locale as Locale;  // Rota meta'sında tanımlanan yerel ayarı yeniden kullan  client.setLocale(metaLocale);  next();});
    Ad, tüm rotalar arasında benzersiz olmalı ve çakışmaları önlemek için yönlendirme ve bağlantıyı sağlamak için kullanılır.

    Ardından, yönlendiriciyi main.js dosyanızda kaydedin:

    src/main.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { createApp } from "vue";import App from "./App.vue";import { router } from "./router";import "./style.css";const app = createApp(App);// Uygulamaya yönlendiriciyi ekleyinapp.use(router);// Uygulamayı bağlayınapp.mount("#app");

    Ardından, RouterView bileşenini işlemek için App.vue dosyanızı güncelleyin. Bu bileşen, geçerli rota için eşleşen bileşeni görüntüler.

    src/App.vue
    Kodu kopyala

    Kodu panoya kopyala

    <script setup lang="ts">import LocaleSwitcher from "@components/LocaleSwitcher.vue";</script><template>  <nav>    <LocaleSwitcher />  </nav>  <RouterView /></template>

    Paralel olarak, uygulamanıza sunucu tarafı yönlendirme eklemek için intlayerProxy'i de kullanabilirsiniz. Bu eklenti, URL'ye göre geçerli yerel ayarı otomatik olarak algılar ve uygun yerel ayar çerezini ayarlar. Hiç yerel ayar belirtilmezse, eklenti kullanıcının tarayıcı dil tercihlerine göre en uygun yerel ayarı belirler. Hiç yerel ayar algılanmazsa, varsayılan yerel ayara yönlendirir.

    Not: Üretimde intlayerProxy'i kullanmak için vite-intlayer paketini devDependencies'den dependencies'e taşımalısınız.
    vite.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { defineConfig } from "vite";
    import vue from "@vitejs/plugin-vue";
    import { intlayer, intlayerProxy } from "vite-intlayer";
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [
        intlayerProxy(), // should be placed first
        vue(),
        intlayer(),
      ],
    });

    (İsteğe Bağlı) Adım 8: Yerel ayar değiştiğinde URL'yi değiştirin

    Kullanıcı dili değiştirdiğinde URL'yi otomatik olarak güncellemek için LocaleSwitcher bileşenini Vue Router kullanacak şekilde değiştirebilirsiniz:

    src/components/LocaleSwitcher.vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <div class="locale-switcher">    <select v-model="selectedLocale" @change="changeLocale">      <option v-for="loc in availableLocales" :key="loc" :value="loc">        {{ getLocaleName(loc) }}      </option>    </select>  </div></template><script setup lang="ts">import { ref, watch } from "vue";import { useRouter } from "vue-router";import { Locales, getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Vue Router'ı alınconst router = useRouter();// Yerel ayar bilgilerini ve setLocale işlevini alınconst { locale, availableLocales, setLocale } = useLocale({  onLocaleChange: (newLocale) => {    // Geçerli rotayı alın ve yerelleştirilmiş bir URL oluşturun    const currentPath = router.currentRoute.value.fullPath;    const localizedPath = getLocalizedUrl(currentPath, newLocale);    // Sayfayı yeniden yüklemeden yerelleştirilmiş rotaya gidin    router.push(localizedPath);  },});// Seçilen yerel ayarı bir ref ile takip edinconst selectedLocale = ref(locale.value);// Seçim değiştiğinde yerel ayarı güncelleyinconst changeLocale = () => {  setLocale(selectedLocale.value);};// Seçilen yerel ayarı genel yerel ayar ile senkronize tutunwatch(  () => locale.value,  (newLocale) => {    selectedLocale.value = newLocale;  });</script>

    İpucu: Daha iyi SEO ve erişilebilirlik için, dil özel sayfalarına bağlanmak üzere <a href="/fr/home" hreflang="fr"> gibi etiketleri kullanın. Bu, arama motorlarının dil özel URL'lerini keşfetmesine ve uygun şekilde indekslemesine olanak tanır. SPA davranışını korumak için varsayılan navigasyonu @click.prevent ile önleyin, useLocale ile yerel ayarı değiştirin ve Vue Router kullanarak programatik olarak gidin.

    html
    Kodu kopyala

    Kodu panoya kopyala

    <ol>  <li>    <a      hreflang="x-default"      aria-label="Switch to English"      target="_self"      aria-current="page"      href="/doc/get-started"    >      <div>        <span dir="ltr" lang="en">English</span>        <span>English</span>        <span>EN</span>      </div>    </a>  </li>  <li>    <a      hreflang="es"      aria-label="Switch to Spanish"      target="_self"      href="/es/doc/get-started"    >      <div>        <span dir="ltr" lang="es">Español</span>        <span>Spanish</span>        <span>ES</span>      </div>    </a>  </li></ol>

    (İsteğe Bağlı) Adım 9: HTML Dil ve Yön Niteliklerini Değiştirin

    Uygulamanız birden fazla dili desteklediğinde, <html> etiketinin lang ve dir niteliklerini geçerli yerel ayar ile eşleşecek şekilde güncellemek önemlidir. Bunu yapmak şunları sağlar:

    • Erişilebilirlik: Ekran okuyucular ve yardımcı teknolojiler, içeriği doğru şekilde telaffuz etmek ve yorumlamak için doğru lang niteliğine güvenir.
    • Metin İşleme: dir (yön) niteliği, metnin doğru sırada işlenmesini sağlar (örneğin, İngilizce için soldan sağa, Arapça veya İbranice için sağdan sola), okunabilirlik için gereklidir.
    • SEO: Arama motorları, sayfanızın dilini belirlemek için lang niteliğini kullanır, arama sonuçlarında doğru yerelleştirilmiş içeriği sunmaya yardımcı olur.

    Yerel ayar değiştiğinde bu nitelikleri dinamik olarak güncellemek, tüm desteklenen diller için tutarlı ve erişilebilir bir deneyim sağlar.

    src/composables/useI18nHTMLAttributes.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { watch } from "vue";import { useLocale } from "vue-intlayer";import { getHTMLTextDir } from "intlayer";/** * Geçerli yerel ayara göre HTML <html> etiketinin `lang` ve `dir` niteliklerini günceller. * * @example * // App.vue'nuzda veya genel bir bileşende * import { useI18nHTMLAttributes } from './composables/useI18nHTMLAttributes' * * useI18nHTMLAttributes() */export const useI18nHTMLAttributes = () => {  const { locale } = useLocale();  // Yerel ayar değiştiğinde HTML niteliklerini güncelleyin  watch(    () => locale.value,    (newLocale) => {      if (!newLocale) return;      // Dil niteliğini güncelleyin      document.documentElement.lang = newLocale;      // Metin yönünü ayarlayın (çoğu dil için ltr, Arapça, İbranice vb. için rtl)      document.documentElement.dir = getHTMLTextDir(newLocale);    },    { immediate: true }  );};

    Bu composable'ı App.vue'nuzda veya genel bir bileşende kullanın:

    src/App.vue
    Kodu kopyala

    Kodu panoya kopyala

    <script setup lang="ts">import { useI18nHTMLAttributes } from "@composables/useI18nHTMLAttributes";// Geçerli yerel ayara göre HTML niteliklerini uygulayınuseI18nHTMLAttributes();</script><template>  <!-- Uygulama şablonunuz --></template>

    (İsteğe Bağlı) Adım 10: Yerelleştirilmiş Bağlantı Bileşeni Oluşturun

    Uygulamanızın navigasyonunun geçerli yerel ayarı saygı gösterdiğinden emin olmak için özel bir Link bileşeni oluşturabilirsiniz. Bu bileşen, dahili URL'leri otomatik olarak geçerli dille önekler, böylece. Örneğin, bir Fransızca konuşan kullanıcı "Hakkında" sayfasına giden bir bağlantıya tıkladığında, /about yerine /fr/about'a yönlendirilir.

    Bu davranış çeşitli nedenlerle kullanışlıdır:

    • SEO ve Kullanıcı Deneyimi: Yerelleştirilmiş URL'ler, arama motorlarının dil özel sayfalarını doğru şekilde indekslemesine yardımcı olur ve kullanıcılara tercih ettikleri dilde içerik sunar.
    • Tutarlılık: Uygulamanız boyunca yerelleştirilmiş bir bağlantı kullanarak, navigasyonun aynı yerel ayar bağlamında kalmasını garanti edersiniz, beklenmedik dil anahtarlarını önlersiniz.
    • Bakım Kolaylığı: URL mantığını tek bir bileşende merkezileştirmek, yönetimini basitleştirir, uygulamanız büyüdükçe kod tabanınızı daha kolay yönetilebilir hale getirir.
    src/components/Link.vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <a :href="localizedHref" v-bind="$attrs">    <slot />  </a></template><script setup lang="ts">import { computed } from "vue";import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";const props = defineProps({  href: {    type: String,    required: true,  },});const { locale } = useLocale();// Bağlantının harici olup olmadığını kontrol edinconst isExternalLink = computed(() => /^https?:\/\//.test(props.href || ""));// Dahili bağlantılar için yerelleştirilmiş bir href oluşturunconst localizedHref = computed(() =>  isExternalLink.value ? props.href : getLocalizedUrl(props.href, locale.value));</script>

    Vue Router ile kullanmak için yönlendiriciye özel bir sürüm oluşturun:

    src/components/RouterLink.vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <router-link :to="localizedTo" v-bind="$attrs">    <slot />  </router-link></template><script setup lang="ts">import { computed } from "vue";import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";const props = defineProps({  to: {    type: [String, Object],    required: true,  },});const { locale } = useLocale();// Router-link için yerelleştirilmiş to-prop oluşturunconst localizedTo = computed(() => {  if (typeof props.to === "string") {    return getLocalizedUrl(props.to, locale.value);  } else {    // 'to' bir nesne ise, yol özelliğini yerelleştirin    return {      ...props.to,      path: getLocalizedUrl(props.to.path ?? "/", locale.value),    };  }});</script>

    Uygulamanızda bu bileşenleri kullanın:

    src/App.vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <div>    <!-- Vue router  -->    <RouterLink to="/">Kök</RouterLink>    <RouterLink to="/home">Ana Sayfa</RouterLink>    <!-- Diğer -->    <Link href="/">Kök</Link>    <Link href="/home">Ana Sayfa</Link>  </div></template><script setup lang="ts">import Link from "@components/Link.vue";import RouterLink from "@components/RouterLink.vue";</script>

    (İsteğe Bağlı) Adım 11: Markdown İşleyin

    Intlayer, Vue uygulamanızda Markdown içeriğini doğrudan işleme desteği sağlar. Varsayılan olarak, Markdown düz metin olarak kabul edilir. Markdown'ı zengin HTML'ye dönüştürmek için markdown-it, bir Markdown ayrıştırıcısı entegre edebilirsiniz.

    Bu, çevirileriniz listeler, bağlantılar veya vurgu gibi biçimlendirilmiş içerik içerdiğinde özellikle kullanışlıdır.

    Varsayılan olarak Intlayer markdown'ı dize olarak işler. Ancak Intlayer, markdown'ı HTML'ye dönüştürmek için installIntlayerMarkdown işlevini kullanarak markdown'ı işleme konusunda bir yol sağlar.

    Markdown içeriğini intlayer paketi kullanarak nasıl bildireceğinizi görmek için markdown dokümantasyonuna bakın.
    main.ts
    Kodu kopyala

    Kodu panoya kopyala

    import MarkdownIt from "markdown-it";import { createApp, h } from "vue";import { installIntlayer, installIntlayerMarkdown } from "vue-intlayer";const app = createApp(App);app.use(intlayer);const md = new MarkdownIt({  html: true, // HTML etiketlerine izin ver  linkify: true, // URL'leri otomatik olarak bağla  typographer: true, // Akıllı tırnaklar, tireler vb. etkinleştir});// Intlayer'a markdown'ı HTML'ye dönüştürmesi gerektiğinde md.render() kullanmasını söyleinstallIntlayerMarkdown(app, (markdown) => {  const html = md.render(markdown);  return h("div", { innerHTML: html });});

    Kaydedildikten sonra, bileşen tabanlı sözdizimini kullanarak Markdown içeriğini doğrudan görüntüleyebilirsiniz:

    vue
    Kodu kopyala

    Kodu panoya kopyala

    <template>  <div>    <myMarkdownContent />  </div></template><script setup lang="ts">import { useIntlayer } from "vue-intlayer";const { myMarkdownContent } = useIntlayer("my-component");</script>

    TypeScript Yapılandırın

    Intlayer, modül genişletmesi kullanarak TypeScript avantajlarından yararlanır.

    Autocompletion

    Translation error

    Otomatik oluşturulan türleri TypeScript yapılandırmanıza dahil edin.

    tsconfig.json
    Kodu kopyala

    Kodu panoya kopyala

    {  // ... Mevcut TypeScript yapılandırmalarınız  "include": [    // ... Mevcut TypeScript yapılandırmalarınız    ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil et  ],}

    Git Yapılandırması

    Intlayer tarafından oluşturulan dosyaları Git deponuza kaydetmekten kaçınmak için bunları yok saymanız önerilir. Bu, bunları Git deponuza kaydetmekten kaçınmanıza olanak tanır.

    Bunu yapmak için .gitignore dosyanıza aşağıdaki talimatları ekleyin:

    bash
    Kodu kopyala

    Kodu panoya kopyala

    #  Intlayer tarafından oluşturulan dosyaları yok say.intlayer

    VS Code Uzantısı

    Intlayer ile geliştirme deneyiminizi iyileştirmek için resmi Intlayer VS Code Uzantısı'nı kurun.

    VS Code Marketplace'ten yükleyin

    Bu uzantı şunları sağlar:

    • Çeviri anahtarları için otomatik tamamlama.
    • Eksik çeviriler için gerçek zamanlı hata algılama.
    • Çevrilmiş içeriğin satır içi önizlemeleri.
    • Çevirileri kolayca oluşturmak ve güncellemek için hızlı eylemler.

    Uzantıyı kullanma hakkında daha fazla ayrıntı için Intlayer VS Code Uzantısı dokümantasyonuna bakın.


    (İsteğe bağlı) Adım 12 : Bileşenlerinizin içeriğini çıkarın

    Mevcut bir kod tabanınız varsa, binlerce dosyayı dönüştürmek zaman alıcı olabilir.

    Bu süreci kolaylaştırmak için Intlayer, bileşenlerinizi dönüştürmek ve içeriği çıkarmak için bir derleyici / çıkarıcı sunar.

    Kurulum için intlayer.config.ts dosyanıza bir compiler bölümü ekleyebilirsiniz:

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      // ... Yapılandırmanızın geri kalanı
      compiler: {
        /**
         * Derleyicinin etkinleştirilip etkinleştirilmeyeceğini belirtir.
         */
        enabled: true,
    
        /**
         * Çıktı dosyalarının yolunu tanımlar
         */
        output: ({ fileName, extension }) => `./${fileName}${extension}`,
    
        /**
         * Bileşenlerin dönüştürüldükten sonra kaydedilip kaydedilmeyeceğini belirtir. Bu sayede derleyici, uygulamayı dönüştürmek için yalnızca bir kez çalıştırılabilir ve ardından kaldırılabilir.
         */
        saveComponents: false,
    
        /**
         * Sözlük anahtarı öneki
         */
        dictionaryKeyPrefix: "",
      },
    };
    
    export default config;

    Bileşenlerinizi dönüştürmek ve içeriği çıkarmak için çıkarıcıyı çalıştırın

    bash
    Kodu kopyala

    Kodu panoya kopyala

    npx intlayer extract

    vite.config.ts dosyanızı intlayerCompiler eklentisini içerecek şekilde güncelleyin:

    vite.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Derleyici eklentisini ekler ],});
    bash
    Kodu kopyala

    Kodu panoya kopyala

    npm run build # Veya npm run dev

    (İsteğe bağlı) Sitemap ve robots.txt (derleme zamanı üretimi)

    Intlayer, generateSitemap ve getMultilingualUrls ile tarayıcılar için çok dilli sitemap.xml ve robots.txt üretip bunları public/ klasörüne otomatik yazmanıza yardımcı olur. Genelde Vite’tan önce küçük bir Node betiği çalıştırılır (ör. npm predev / prebuild kancaları).

    Sitemap

    Intlayer sitemap oluşturucusu yerel ayarlarınıza uyar ve tarayıcılar için metadata ekler.

    Üretilen sitemap xhtml:link (hreflang) ad alanını destekler. Düz URL listesi yerine, her sayfanın tüm dil sürümleri çift yönlü bağlanır (ör. /about, /fr/about veya /about?lang=fr - yönlendirme moduna bağlı).

    Robots.txt

    getMultilingualUrls kullanarak Disallow kurallarının hassas yolların tüm yerelleştirilmiş varyantlarını kapsamasını sağlayın.

    1. Proje köküne generate-seo.mjs ekleyin

    generate-seo.mjs
    Kodu kopyala

    Kodu panoya kopyala

    import fs from "fs";import path from "path";import { fileURLToPath } from "url";import { generateSitemap, getMultilingualUrls } from "intlayer";const __dirname = path.dirname(fileURLToPath(import.meta.url));const SITE_URL = (process.env.SITE_URL || "http://localhost:5173").replace(  /\/$/,  "");const pathList = [  { path: "/", changefreq: "daily", priority: 1.0 },  { path: "/about", changefreq: "monthly", priority: 0.7 },];const sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);const getAllMultilingualUrls = (urls) =>  urls.flatMap((url) => Object.values(getMultilingualUrls(url)));const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);const robotsTxt = [  "User-agent: *",  "Allow: /",  ...disallowedPaths.map((path) => `Disallow: ${path}`),  "",  `Sitemap: ${SITE_URL}/sitemap.xml`,].join("\n");fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);console.log("SEO files generated successfully.");

    Betik intlayer içe aktarabilmeli; paket kurulu olmalı. Üretimde ortam değişkeni SITE_URL ayarlayın (ör. CI).

    Node ESM için generate-seo.mjs tercih edin. generate-seo.js kullanıyorsanız package.json içinde "type": "module" veya ESM’yi başka şekilde etkinleştirin.

    2. Betiği Vite’tan önce çalıştırın

    package.json
    Kodu kopyala

    Kodu panoya kopyala

    {  "scripts": {    "dev": "vite",    "prebuild": "node generate-seo.mjs",    "build": "vite build",    "preview": "vite preview"  }}

    pnpm veya yarn kullanıyorsanız komutları uyarlayın. CI’dan da çağrılabilir.

    Daha Fazla İlerle

    Daha fazla ilerlemek için görsel düzenleyici veya içeriğinizi CMS kullanarak dışa aktarmayı uygulayabilirsiniz.


    Compiler
    Nuxt ve Vue
    Alt+→

    Bu sayfada

      Tartışmalar anonimdir ve yaygın sorunları ele almak için düzenli olarak incelenir. Özellik fikirleri, belgeleme hakkında geri bildirimler veya Intlayer ile ilgili herhangi bir şeyi paylaşmaktan çekinmeyin, bu girdileri yol haritamızı şekillendirmek ve ürünü geliştirmek için kullanıyoruz.

      npm install intlayer vue-intlayernpm install vite-intlayer --save-devnpx intlayer init
      import { createApp } from "vue";import { intlayer } from "vue-intlayer";import App from "./App.vue";import "./style.css";const app = createApp(App);// Üst düzeyde sağlayıcıyı enjekte edinapp.use(intlayer);// Uygulamayı bağlayınapp.mount("#app");
      <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  officialStarter,  learnMore,  vueDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"      >create-vue</a    >, <officialStarter />  </p>  <p>    <learnMore />    <a      href="https://vuejs.org/guide/scaling-up/tooling.html#ide-support"      target="_blank"      ><vueDocs /></a    >.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>
      <template>  <div class="locale-switcher">    <select v-model="selectedLocale" @change="changeLocale">      <option v-for="loc in availableLocales" :key="loc" :value="loc">        {{ getLocaleName(loc) }}      </option>    </select>  </div></template><script setup lang="ts">import { ref, watch } from "vue";import { getLocaleName } from "intlayer";import { useLocale } from "vue-intlayer";// Yerel ayar bilgilerini ve setLocale işlevini alınconst { locale, availableLocales, setLocale } = useLocale();// Seçilen yerel ayarı bir ref ile takip edinconst selectedLocale = ref(locale.value);// Seçim değiştiğinde yerel ayarı güncelleyinconst changeLocale = () => setLocale(selectedLocale.value);// Seçilen yerel ayarı genel yerel ayar ile senkronize tutunwatch(  () => locale.value,  (newLocale) => {    selectedLocale.value = newLocale;  });</script>
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";import HelloWorld from "@components/HelloWorld.vue";import LocaleSwitcher from "@components/LocaleSwitcher.vue";import { ref, watch } from "vue";const content = useIntlayer("app"); // İlgili intlayer bildirim dosyası oluşturun</script><template>  <div>    <LocaleSwitcher />    <a href="https://vite.dev" target="_blank">      <img src="/vite.svg" class="logo" :alt="content.viteLogo" />    </a>    <a href="https://vuejs.org/" target="_blank">      <img src="./assets/vue.svg" class="logo vue" :alt="content.vueLogo" />    </a>  </div>  <HelloWorld :msg="content.title" /></template>
      - https://example.com/about- https://example.com/es/about- https://example.com/fr/about
      npm install vue-routernpx intlayer init
      import {  localeFlatMap,  type Locale,} from 'intlayer';import { createIntlayerClient } from "vue-intlayer";import { createRouter, createWebHistory } from 'vue-router';import HomeView from './views/home/HomeView.vue';import RootView from './views/root/Root.vue';/** * Yerel ayar özel yollarla ve meta verilerle rotaları bildirin. */const routes = localeFlatMap(({ urlPrefix, locale }) => [  {    path: `${urlPrefix}/`,    name: `Root-${locale}`,    component: RootView,    meta: {      locale,    },  },  {    path: `${urlPrefix}/home`,    name: `Home-${locale}`,    component: HomeView,    meta: {      locale,    },  },]);// Yönlendirici örneğini oluşturexport const router = createRouter({  history: createWebHistory(),  routes,});// Yerel ayar yönetimi için navigasyon koruması ekleyinrouter.beforeEach((to, _from, next) => {  const client = createIntlayerClient();  const metaLocale = to.meta.locale as Locale;  // Rota meta'sında tanımlanan yerel ayarı yeniden kullan  client.setLocale(metaLocale);  next();});
      import { createApp } from "vue";import App from "./App.vue";import { router } from "./router";import "./style.css";const app = createApp(App);// Uygulamaya yönlendiriciyi ekleyinapp.use(router);// Uygulamayı bağlayınapp.mount("#app");
      <script setup lang="ts">import LocaleSwitcher from "@components/LocaleSwitcher.vue";</script><template>  <nav>    <LocaleSwitcher />  </nav>  <RouterView /></template>
      <template>  <div class="locale-switcher">    <select v-model="selectedLocale" @change="changeLocale">      <option v-for="loc in availableLocales" :key="loc" :value="loc">        {{ getLocaleName(loc) }}      </option>    </select>  </div></template><script setup lang="ts">import { ref, watch } from "vue";import { useRouter } from "vue-router";import { Locales, getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Vue Router'ı alınconst router = useRouter();// Yerel ayar bilgilerini ve setLocale işlevini alınconst { locale, availableLocales, setLocale } = useLocale({  onLocaleChange: (newLocale) => {    // Geçerli rotayı alın ve yerelleştirilmiş bir URL oluşturun    const currentPath = router.currentRoute.value.fullPath;    const localizedPath = getLocalizedUrl(currentPath, newLocale);    // Sayfayı yeniden yüklemeden yerelleştirilmiş rotaya gidin    router.push(localizedPath);  },});// Seçilen yerel ayarı bir ref ile takip edinconst selectedLocale = ref(locale.value);// Seçim değiştiğinde yerel ayarı güncelleyinconst changeLocale = () => {  setLocale(selectedLocale.value);};// Seçilen yerel ayarı genel yerel ayar ile senkronize tutunwatch(  () => locale.value,  (newLocale) => {    selectedLocale.value = newLocale;  });</script>
      <ol>  <li>    <a      hreflang="x-default"      aria-label="Switch to English"      target="_self"      aria-current="page"      href="/doc/get-started"    >      <div>        <span dir="ltr" lang="en">English</span>        <span>English</span>        <span>EN</span>      </div>    </a>  </li>  <li>    <a      hreflang="es"      aria-label="Switch to Spanish"      target="_self"      href="/es/doc/get-started"    >      <div>        <span dir="ltr" lang="es">Español</span>        <span>Spanish</span>        <span>ES</span>      </div>    </a>  </li></ol>
      import { watch } from "vue";import { useLocale } from "vue-intlayer";import { getHTMLTextDir } from "intlayer";/** * Geçerli yerel ayara göre HTML <html> etiketinin `lang` ve `dir` niteliklerini günceller. * * @example * // App.vue'nuzda veya genel bir bileşende * import { useI18nHTMLAttributes } from './composables/useI18nHTMLAttributes' * * useI18nHTMLAttributes() */export const useI18nHTMLAttributes = () => {  const { locale } = useLocale();  // Yerel ayar değiştiğinde HTML niteliklerini güncelleyin  watch(    () => locale.value,    (newLocale) => {      if (!newLocale) return;      // Dil niteliğini güncelleyin      document.documentElement.lang = newLocale;      // Metin yönünü ayarlayın (çoğu dil için ltr, Arapça, İbranice vb. için rtl)      document.documentElement.dir = getHTMLTextDir(newLocale);    },    { immediate: true }  );};
      <script setup lang="ts">import { useI18nHTMLAttributes } from "@composables/useI18nHTMLAttributes";// Geçerli yerel ayara göre HTML niteliklerini uygulayınuseI18nHTMLAttributes();</script><template>  <!-- Uygulama şablonunuz --></template>
      <template>  <a :href="localizedHref" v-bind="$attrs">    <slot />  </a></template><script setup lang="ts">import { computed } from "vue";import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";const props = defineProps({  href: {    type: String,    required: true,  },});const { locale } = useLocale();// Bağlantının harici olup olmadığını kontrol edinconst isExternalLink = computed(() => /^https?:\/\//.test(props.href || ""));// Dahili bağlantılar için yerelleştirilmiş bir href oluşturunconst localizedHref = computed(() =>  isExternalLink.value ? props.href : getLocalizedUrl(props.href, locale.value));</script>
      <template>  <router-link :to="localizedTo" v-bind="$attrs">    <slot />  </router-link></template><script setup lang="ts">import { computed } from "vue";import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";const props = defineProps({  to: {    type: [String, Object],    required: true,  },});const { locale } = useLocale();// Router-link için yerelleştirilmiş to-prop oluşturunconst localizedTo = computed(() => {  if (typeof props.to === "string") {    return getLocalizedUrl(props.to, locale.value);  } else {    // 'to' bir nesne ise, yol özelliğini yerelleştirin    return {      ...props.to,      path: getLocalizedUrl(props.to.path ?? "/", locale.value),    };  }});</script>
      <template>  <div>    <!-- Vue router  -->    <RouterLink to="/">Kök</RouterLink>    <RouterLink to="/home">Ana Sayfa</RouterLink>    <!-- Diğer -->    <Link href="/">Kök</Link>    <Link href="/home">Ana Sayfa</Link>  </div></template><script setup lang="ts">import Link from "@components/Link.vue";import RouterLink from "@components/RouterLink.vue";</script>
      import MarkdownIt from "markdown-it";import { createApp, h } from "vue";import { installIntlayer, installIntlayerMarkdown } from "vue-intlayer";const app = createApp(App);app.use(intlayer);const md = new MarkdownIt({  html: true, // HTML etiketlerine izin ver  linkify: true, // URL'leri otomatik olarak bağla  typographer: true, // Akıllı tırnaklar, tireler vb. etkinleştir});// Intlayer'a markdown'ı HTML'ye dönüştürmesi gerektiğinde md.render() kullanmasını söyleinstallIntlayerMarkdown(app, (markdown) => {  const html = md.render(markdown);  return h("div", { innerHTML: html });});
      <template>  <div>    <myMarkdownContent />  </div></template><script setup lang="ts">import { useIntlayer } from "vue-intlayer";const { myMarkdownContent } = useIntlayer("my-component");</script>
      {  // ... Mevcut TypeScript yapılandırmalarınız  "include": [    // ... Mevcut TypeScript yapılandırmalarınız    ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil et  ],}
      #  Intlayer tarafından oluşturulan dosyaları yok say.intlayer
      npx intlayer extract
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Derleyici eklentisini ekler ],});
      npm run build # Veya npm run dev
      import fs from "fs";import path from "path";import { fileURLToPath } from "url";import { generateSitemap, getMultilingualUrls } from "intlayer";const __dirname = path.dirname(fileURLToPath(import.meta.url));const SITE_URL = (process.env.SITE_URL || "http://localhost:5173").replace(  /\/$/,  "");const pathList = [  { path: "/", changefreq: "daily", priority: 1.0 },  { path: "/about", changefreq: "monthly", priority: 0.7 },];const sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);const getAllMultilingualUrls = (urls) =>  urls.flatMap((url) => Object.values(getMultilingualUrls(url)));const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);const robotsTxt = [  "User-agent: *",  "Allow: /",  ...disallowedPaths.map((path) => `Disallow: ${path}`),  "",  `Sitemap: ${SITE_URL}/sitemap.xml`,].join("\n");fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);console.log("SEO files generated successfully.");
      {  "scripts": {    "dev": "vite",    "prebuild": "node generate-seo.mjs",    "build": "vite build",    "preview": "vite preview"  }}