<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های بهمن عنایتی</title><link>https://virgool.ir/feed/@benayatei</link><description></description><language>fa</language><pubDate>2026-11-11 10:56:52</pubDate><image><url>https://files.virgool.ir/upload/users/22242/avatar/foS1co.jpeg</url><title>بهمن عنایتی</title><link>https://virgool.ir/@benayatei</link></image><item><title>سایت چند زبانه در nuxt js</title><link>https://virgool.ir/vue-developers/سایت-چند-زبانه-در-nuxt-js-mtlioriau1yx</link><description>سایت چند زبانه در nuxt jsسلام به جاوااسکریپتی های عزیز.کارهایی که میخواهیم انجام بدیم:نصب کتابخانه  vue-i18n نصب و کانفیگایجاد یه میدلویر برای رسیدگی به وضیعت زبان های مختلفساخت فایل زبان هانصب کتابخانه  vue-i18n$ npm install vue-i18n --saveداخل پوشه plugins یه پلاگین جدید بسازید با عنوان : i18n.jsمحتوای درونش:import Vue from &#39;vue&#39;;&#xA;import VueI18n from &#39;vue-i18n&#39;;&#xA;Vue.use(VueI18n);&#xA;export default ({ app, store }) =&gt; {&#xA;  // Setup i18n&#xA;  app.i18n = new VueI18n({&#xA;    locale: store.state.locale,&#xA;    fallbackLocale: &#39;fa&#39;,&#xA;    messages: {&#xA;      &#39;fa&#39;: require(&#39;~/locales/fa.json&#39;)&#xA;    }&#xA;  });&#xA;  app.i18n.path = (link) =&gt; {&#xA;    if (app.i18n.locale === app.i18n.fallbackLocale) {&#xA;      return `/${link}`;&#xA;    }&#xA;    return `/${app.i18n.locale}/${link}`;&#xA;  }&#xA;}&#xA;من زبان پیش فرض رو فارسی گذاشتم و شما میتونید هر چیز دیگه ای بزارید.داخل store/index.js یه state تعریف میکنیم برای نگهداری زبان فعلی و زبان هایی که قراره داشته باشیم.state: () =&gt; ({&#xA;  locales: [&#39;fa&#39;,&#39;en&#39;],&#xA;  locale: &#39;fa&#39;&#xA;}),اولی برای زبان هایی که داریم.دومی زبان فعلی. حالا تکه کد زیر رو تو قسمت mutations فایل store/index.js قرار بدید برای تغییر زبان فعلی:mutations: {&#xA;  SET_LANG(state, locale) {&#xA;    if (state.locales.indexOf(locale) !== -1) {&#xA;      state.locale = locale&#xA;    }&#xA;  }&#xA;},خب حالا باید پلاگینی که ساختیم رو داخل nuxt.config.js فراخوانی بکنیم:module.exports = {&#xA;  build: { &#xA;    vendor: [&#39;vue-i18n&#39;] &#xA;  },&#xA;  router: {   &#xA;    middleware: &#39;i18n&#39;   // برای اعمال بر روی تمامی مسیر ها&#xA;  },&#xA;  plugins: [&#39;~/plugins/i18n.js&#39;],&#xA;}حالا نوبت ساختن فایل میدلویر هستش: middleware/i18n.js export default function({ isHMR, app, store, route, params, error, redirect }) {&#xA;  if (isHMR) { &#xA;    return&#xA;  }&#xA;  else if (!params.lang) {//اگر پارامتر زبان وجود نداشته باشد اظافه میکند&#xA;    return redirect(&#39;/fa&#39; + route.fullPath)&#xA;  }&#xA;  const locale = params.lang || &#39;fa&#39;&#xA;  store.commit(&#39;SET_LANG&#39;, locale)&#xA;  app.i18n.locale = store.state.locale&#xA;}حالا باید فایل زبان هارو بسازیم.من یک فایل برای زبان فارسی و زبان انگلیسی میسازم و شما میتونید چندین زبان دلخواه خودتون رو بسازید. locales/fa.json {&#xA;  &#34;links&#34;: {&#xA;    &#34;home&#34;: &#34;خانه&#34;,&#xA;    &#34;about: &#34;درباره ما&#34;&#xA;  },&#xA; &#34;index&#34;: {    &#xA;     &#34;title&#34;: &#34;سلام دنیا&#34;, &#xA;  }, &#xA;} locales/en.json  {   &#34;links&#34;: {     &#34;home&#34;: &#34;home&#34;,     &#34;about: &#34;about&#34;   },  &#34;index&#34;: {          &#34;title&#34;: &#34;Hello world!&#34;,    },  } حالا کافیه داخل پوشه pages یک پوشه بسازید با عنوان lang_  و بقیه صفحه هاتون رو داخل این قرار بدید.برای صدا زدن محتوایی که تعریف کردیم برای مثال من یه صفحه ای ایجاد میکنم :pages/_lang/index.vue&lt;template&gt;&#xA;  &lt;div&gt;&#xA;      &lt;h1 class=&#34;page_title&#34;&gt;{{ $t(&#39;links.home&#39;) }}&lt;/h1&gt;&#xA;     &lt;nuxt-link class=&#34;navbar-item&#34; :to=&#34;&#39;/&#39; + $i18n.locale + &#39;/about&#39;&#34;&gt;{{$t(&#39;links.contact&#39;) }}&lt;/nuxt-link&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/template&gt;&#xA;export default {&#xA;  head() {&#xA;    return { title: this.$t(&#39;index.title&#39;) }&#xA;  }&#xA;}&#xA;بعضی وقت ها نیاز هستش که برای ترجمه ها یه پارامتر هم تعریف بکنیم که یه مقداری رو بهشون پاس بدیم، برای اینکار از روش زیر استفاده میکنیم: {   &#xA; &#34;links&#34; : {   &#xA;   &#34;home&#34;: &#34;خانه شماره {number}&#34;,    &#xA;    &#34;about: &#34;درباره ما&#34; &#xA;      }, &#xA;    &#34;index&#34;: {         &#xA;     &#34;title&#34;: &#34;سلام دنیا&#34;,  &#xA;       },&#xA;     } &#xA;موقع صدا زدن هم به این شکل:&lt;h1 class=&#34;page_title&#34;&gt;{{ $t(&#39;links.home&#39;,{number:1}) }}&lt;/h1&gt;امیدوارم بدردتون بخوره.موفق باشید.</description><category>بهمن عنایتی</category><author>بهمن عنایتی</author><pubDate>Mon, 01 Jul 2019 13:23:05 +0430</pubDate></item></channel></rss>