<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های بهمن عنایتی</title>
        <link>https://virgool.io/feed/@benayatei</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 02:53:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/22242/avatar/foS1co.jpeg?height=120&amp;width=120</url>
            <title>بهمن عنایتی</title>
            <link>https://virgool.io/@benayatei</link>
        </image>

                    <item>
                <title>سایت چند زبانه در nuxt js</title>
                <link>https://virgool.io/vue-developers/%D8%B3%D8%A7%DB%8C%D8%AA-%DA%86%D9%86%D8%AF-%D8%B2%D8%A8%D8%A7%D9%86%D9%87-%D8%AF%D8%B1-nuxt-js-mtlioriau1yx</link>
                <description>سایت چند زبانه در nuxt jsسلام به جاوااسکریپتی های عزیز.کارهایی که میخواهیم انجام بدیم:نصب کتابخانه  vue-i18n نصب و کانفیگایجاد یه میدلویر برای رسیدگی به وضیعت زبان های مختلفساخت فایل زبان هانصب کتابخانه  vue-i18n$ npm install vue-i18n --saveداخل پوشه plugins یه پلاگین جدید بسازید با عنوان : i18n.jsمحتوای درونش:import Vue from &#039;vue&#039;;
import VueI18n from &#039;vue-i18n&#039;;
Vue.use(VueI18n);
export default ({ app, store }) =&gt; {
  // Setup i18n
  app.i18n = new VueI18n({
    locale: store.state.locale,
    fallbackLocale: &#039;fa&#039;,
    messages: {
      &#039;fa&#039;: require(&#039;~/locales/fa.json&#039;)
    }
  });
  app.i18n.path = (link) =&gt; {
    if (app.i18n.locale === app.i18n.fallbackLocale) {
      return `/${link}`;
    }
    return `/${app.i18n.locale}/${link}`;
  }
}
من زبان پیش فرض رو فارسی گذاشتم و شما میتونید هر چیز دیگه ای بزارید.داخل store/index.js یه state تعریف میکنیم برای نگهداری زبان فعلی و زبان هایی که قراره داشته باشیم.state: () =&gt; ({
  locales: [&#039;fa&#039;,&#039;en&#039;],
  locale: &#039;fa&#039;
}),اولی برای زبان هایی که داریم.دومی زبان فعلی. حالا تکه کد زیر رو تو قسمت mutations فایل store/index.js قرار بدید برای تغییر زبان فعلی:mutations: {
  SET_LANG(state, locale) {
    if (state.locales.indexOf(locale) !== -1) {
      state.locale = locale
    }
  }
},خب حالا باید پلاگینی که ساختیم رو داخل nuxt.config.js فراخوانی بکنیم:module.exports = {
  build: { 
    vendor: [&#039;vue-i18n&#039;] 
  },
  router: {   
    middleware: &#039;i18n&#039;   // برای اعمال بر روی تمامی مسیر ها
  },
  plugins: [&#039;~/plugins/i18n.js&#039;],
}حالا نوبت ساختن فایل میدلویر هستش: middleware/i18n.js export default function({ isHMR, app, store, route, params, error, redirect }) {
  if (isHMR) { 
    return
  }
  else if (!params.lang) {//اگر پارامتر زبان وجود نداشته باشد اظافه میکند
    return redirect(&#039;/fa&#039; + route.fullPath)
  }
  const locale = params.lang || &#039;fa&#039;
  store.commit(&#039;SET_LANG&#039;, locale)
  app.i18n.locale = store.state.locale
}حالا باید فایل زبان هارو بسازیم.من یک فایل برای زبان فارسی و زبان انگلیسی میسازم و شما میتونید چندین زبان دلخواه خودتون رو بسازید. locales/fa.json {
  &quot;links&quot;: {
    &quot;home&quot;: &quot;خانه&quot;,
    &quot;about: &quot;درباره ما&quot;
  },
 &quot;index&quot;: {    
     &quot;title&quot;: &quot;سلام دنیا&quot;, 
  }, 
} locales/en.json  {   &quot;links&quot;: {     &quot;home&quot;: &quot;home&quot;,     &quot;about: &quot;about&quot;   },  &quot;index&quot;: {          &quot;title&quot;: &quot;Hello world!&quot;,    },  } حالا کافیه داخل پوشه pages یک پوشه بسازید با عنوان lang_  و بقیه صفحه هاتون رو داخل این قرار بدید.برای صدا زدن محتوایی که تعریف کردیم برای مثال من یه صفحه ای ایجاد میکنم :pages/_lang/index.vue&lt;template&gt;
  &lt;div&gt;
      &lt;h1 class=&quot;page_title&quot;&gt;{{ $t(&#039;links.home&#039;) }}&lt;/h1&gt;
     &lt;nuxt-link class=&quot;navbar-item&quot; :to=&quot;&#039;/&#039; + $i18n.locale + &#039;/about&#039;&quot;&gt;{{$t(&#039;links.contact&#039;) }}&lt;/nuxt-link&gt;
  &lt;/div&gt;
&lt;/template&gt;
export default {
  head() {
    return { title: this.$t(&#039;index.title&#039;) }
  }
}
بعضی وقت ها نیاز هستش که برای ترجمه ها یه پارامتر هم تعریف بکنیم که یه مقداری رو بهشون پاس بدیم، برای اینکار از روش زیر استفاده میکنیم: {   
 &quot;links&quot; : {   
   &quot;home&quot;: &quot;خانه شماره {number}&quot;,    
    &quot;about: &quot;درباره ما&quot; 
      }, 
    &quot;index&quot;: {         
     &quot;title&quot;: &quot;سلام دنیا&quot;,  
       },
     } 
موقع صدا زدن هم به این شکل:&lt;h1 class=&quot;page_title&quot;&gt;{{ $t(&#039;links.home&#039;,{number:1}) }}&lt;/h1&gt;امیدوارم بدردتون بخوره.موفق باشید.</description>
                <category>بهمن عنایتی</category>
                <author>بهمن عنایتی</author>
                <pubDate>Mon, 01 Jul 2019 12:23:05 +0430</pubDate>
            </item>
            </channel>
</rss>