شناسایی موقعیت مکانی کاربر و تغییر نوع محتوا بر اساس آن – Spring MVC

با استفاده از تکنیک های شناسایی موقعیت، شما به راحتی می توانید برنامه های تحت وب خود را ترجمه و بومی سازی کنید. شناسایی موقعیت کاربر می تواند به روش های گوناگون و بر اساس معیارهای مختلف، اعم از accept header یا کوکی ای که در ماشین مشتری قرار می گیرد، انجام شود.

مولفه اصلی درگیر با محلی سازی org.springframework.web.servlet.LocaleResolver است. این مولفه دو متد دارد: یکی برای شناسایی موقعیت و زبان کاربر بر اساس درخواست های ورودی، و دیگری برای تنظیم زبان، مثلا با استفاده از HttpServletResponse، که در نتیجه، آن را مانا می کند. (این کار می تواند مثلا با استفاده از یک کوکی در CookieLocaleResolver اعمال شود). متد دوم در هر جایی قابل استفاده نیست. چرا که همه مکان هایی که در آن اطلاعات محلی ذخیره شده است قابل نوشتن نیستند (به عنوان مثال می توان به headerها در HttpServletRequest اشاره کرد).

 

 

استفاده از یک LocaleResolver ساده است؛ کافی است یک نمونه از آن را در زمینه نرم افزار خود تعریف کنید و سپس Spring MVC به صورت خودکار از آن استفاده خواهد کرد.

org.springframework.web.servlet.support.RequestContextUtils امکان بازیابی مکان را با استفاده از دو متد زیر دارد:

 

Spring دارای سه LocaleResolvers و همچنین یک LocaleChangeInterceptor است که بر اساس پارامترهای درخواست HTTP قادر به تغییر زبان است. این سه کلاس عبارتند از:

 

در ادامه در مورد هر یک از این سه کلاس صحبت خواهیم کرد.

AcceptHeaderLocaleResolver با استفاده از accept-header موجود در هدرهای ارسال شده توسط مرورگر، به بازیابی زبان مورد نظر می پردازد. بازیابی موقعیت و زبان کاربر از درخواست به سادگی از طریق فراخوانی ()HttpServletRequest.getLocale امکان پذیر است. AcceptHeaderLocaleResolver از تنظیم زبان پشتیبانی نمی کند: این کلاس تنها برای شناسایی یک مکان در نظر گرفته شده است.

SessionLocaleResolver جلسه HTTP را در صورت وجود برای یک شیء تعیین زبان جستجو می کند. اگر هیچ جلسه وجود نداشته باشد، یا شئ مورد نظر پیدا نشود در آن صورت accept-header به عنوان یک جایگزین استفاده می شود. این کلاس از تنظیم زبان پشتیبانی می کند.

کلاس سوم Spring در زمینه شناسایی موقعیت، CookieLocaleResolver است که در مورد آن بیشتر توضیح می دهیم. این کلاس معمولا همراه با LocaleChangeInterceptor استفاده می شود، که بر اساس پارامترهای درخواست HTTP قادر به تغییر زبان است. ابتدا، اجازه دهید تا CookieLocaleResolver را اجرا کنیم:

 

اگر شما بخواهید، می توانید مسیر کوکی را تغییر داده و یا سطح در دسترس بودن کوکی و یا نام آن را محدود کنید.

در مرحله بعد، ما با استفاده از LocaleChangeInterceptor، به کاربران اجازه می دهیم تا (با استفاده از لینک های دارای پارامترهای مورد نظر) تغییر زبان دهند.

 

با استفاده از این نگاشت handler (البته همراه با برخی از نگاشت های دیگر بین URLها و کنترلرها)، کاربران در هنگام اجرای درخواست قادر به تغییر مکان خواهند بود. در مثال زیر، زبان به انگلیسی و فارسی تغییر خواهد کرد.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *