আমার স্থানীয়করণ (সার্ভার-সাইড বা ক্লায়েন্ট-সাইড) কোথায় করা উচিত?


17

আমি বর্তমানে একটি সমৃদ্ধ জাভাস্ক্রিপ্ট ক্লায়েন্টের উপর ভিত্তি করে একটি নতুন ওয়েব অ্যাপ্লিকেশন বিকাশ করছি যা আমার সার্ভারে একাধিক REST ওয়েব পরিষেবাদির সাথে যোগাযোগ করে। এই অ্যাপ্লিকেশনটি কমপক্ষে দুটি দেশে বিভিন্ন ভাষার সাথে ব্যবহারের উদ্দেশ্যে, তাই আমাদের এটি স্থানীয়করণের প্রয়োজন।

আমার প্রশ্নটি হল যেখানে স্থানীয়করণ পরিচালনা করা উচিত: আরইএসটি পরিষেবাগুলি কী অনুরোধ গ্রহণ করবে এবং স্থানীয় তথ্য সহ উত্তর পাঠাবে, বা ক্লায়েন্টকে জেনেরিক ডেটা গ্রহণ এবং প্রেরণ করা উচিত এবং তারপরে স্থানীয়করণের জন্য দায়বদ্ধ হওয়া উচিত?

উত্তর:


19

আপনি যদি অনুবাদকৃত স্ট্রিংয়ের পরিবর্তে স্ট্রিং আইডি সরবরাহ করেন তবে আপনার REST এপিআই অন্যদের দ্বারা ব্যবহার করা সহজ হবে। এমন কোনও এপিআই ব্যবহার করে যা প্রত্যাবর্তন "E_NOT_AUTHORIZED"করে কিছু মানব-ভাষা, এমনকি স্থানীয়করণের স্ট্রিংয়ের চেয়েও সহজ।

এছাড়াও, আপনি ভবিষ্যতের সংস্করণগুলিতে স্থানীয় স্ট্রিংগুলি পরিবর্তন করতে চাইতে পারেন, এটি একটি ব্রেকিং এপিআই পরিবর্তন হবে। স্ট্রিং আইডি পদ্ধতির সাথে, আপনি এখনও "E_NOT_AUTHORIZED"আপনার পিপিআইকে সামঞ্জস্য রেখে ফিরে আসবেন ।

আপনি যদি Angular.js এর মতো কাঠামো ব্যবহার করেন তবে স্ট্রিং আইডি পদ্ধতির ব্যবহার করা হলে ভাষা হট-স্যুইচিং কার্যকর করা সহজ। আপনি কেবল অন্য স্ট্রিংটেবল লোড করেছেন এবং সমস্ত স্ট্রিং স্বয়ংক্রিয়ভাবে তাদের ভাষা পরিবর্তন করে কারণ আপনি যেমন আপনার টেম্পলেটগুলিতে কিছু ফিল্টার যুক্তি ব্যবহার করেন ঠিক তেমন {{errorStringID | loc}}

আরেকটি বিবেচনা: আপনার সার্ভারের লোড হ্রাস করতে, আপনার ব্যাক-এন্ড যথাসম্ভব সহজ রাখুন। আপনি একই সংখ্যক সার্ভার সহ আরও বেশি ক্লায়েন্টকে পরিবেশন করতে সক্ষম হবেন। আপনার স্ট্রিংটেবলগুলি সিডিএন এর মাধ্যমে বিতরণ করুন এবং সামনের প্রান্তে স্থানীয়করণ করুন।


5

ক্লায়েন্টদের Accept-Languageঅনুরোধে মানকৃত শিরোনাম প্রেরণ করুন , তারপরে সার্ভারে স্থানীয়করণ করুন Content-Languageএবং প্রতিক্রিয়াগুলিতে একটি শিরোনাম অন্তর্ভুক্ত করুন । দেখুন বোঝায় যা RFC 7231 অনুচ্ছেদ 5.3.5 বিস্তারিত জানার জন্য।

সার্ভার সাইডে স্থানীয়করণের ফলে ক্লায়েন্টদের স্থানীয়করণ মেটাডেটা প্রেরণের চেয়ে কম বৃত্তাকার ট্রিপ এবং ব্যান্ডউইথ খরচ হয়। কিন্তু কোনও সার্ভার ধরে নিতে পারে না যে কোনও ক্লায়েন্ট কোন ভাষা চায়, কারণ সেই ক্লায়েন্ট যদি কোনও প্রক্সি অন্য কারও কাছে এটি সরবরাহ করে তবে কী হবে? যদি ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি ক্যাচিং স্তর থাকে? কোনও স্বেচ্ছাসেবীর অনুরোধের জন্য কোন ভাষাটি কীভাবে ব্যবহার করা উচিত তা কোনও সার্ভারকে "ঠিক" খুঁজে বের করার কথা?

এই প্রশ্নগুলির উত্তর দেওয়ার চেষ্টা করা জটিল, সুতরাং পরিবর্তে অনুরোধগুলি স্ব-বর্ণনামূলক হতে হবে এবং স্ট্যান্ডার্ড শিরোনামটি ব্যবহার করুন যাতে ক্লায়েন্টরা কোন ভাষা তাদের পছন্দ তা নিয়ে আলোচনা করতে পারে । এটাকে বলা হয় বিষয়বস্তু আলোচনা। Accept-Languageহেডার এক ধরনের প্ররোচক বিষয়বস্তু আপস যেখানে একটি ক্লায়েন্ট একটি সার্ভার কি এটা পছন্দগুলি হয় বলে, তারপর সার্ভার সেই পছন্দ উপর ভিত্তি করে সঙ্গে সাড়া কি সিদ্ধান্ত নেয়। প্রতিক্রিয়াশীল বিষয়বস্তু আলাপ-আলোচনা হয় যেখানে কোনও ক্লায়েন্ট সার্ভারকে জিজ্ঞাসা করে যে কী ধরণের সামগ্রী রয়েছে তা সাধারণত লিঙ্কের একটি তালিকা সম্বলিত একটি প্রতিক্রিয়া পায় এবং তারপরে কোন লিঙ্কটি অনুসরণ করে এটি পছন্দ করে তা বেছে নেয়।


3

আপনি যদি একাধিক ডিভাইস সমর্থন করতে যাচ্ছেন তবে আমি সার্ভার সাইডে যথাসম্ভব বলব।

প্রতিটি ডিভাইস অবশ্যই এপিআই ইত্যাদির ত্রুটি বার্তাগুলি হিসাবে নিজের নিজের মতো করে ভাগ করা স্টাফগুলিতে কিছু অনুবাদ ব্যবহার করবে ডিভাইস নির্বিশেষে একই হবে।


2
আমি কেন তা বুঝতে পারছি না। ভাগ করা স্টাফগুলির জন্য, ক্লায়েন্ট স্থানীয়করণ করার পরেও, আমি ভেবেছিলাম যে আমি সার্ভার থেকে আসা একটি "অভিধান" ব্যবহার করব এবং আমি সেই অভিধানটি আমার ডিভাইসের মধ্যে ভাগ করতে পারি। বা আপনি অন্য কিছু বোঝাতে চেয়েছিলেন? (আমার ক্ষেত্রে আমি কেবল একটি ডিভাইস ব্যবহার করব তবে আকর্ষণীয় মন্তব্য)
gvo

1

এটি অনেকটা ব্যক্তিগত স্বাদের একটি প্রশ্ন, তবে আপনি যদি ক্লায়েন্টের পক্ষে কাজ করেন তবে আপনি সার্ভার লোডে সঞ্চয় করবেন (স্ট্যাটিক বা ক্যাশেড ডিকশনারি ধরে নিচ্ছেন), এবং পরিষেবাটি পরীক্ষার জন্য ভাষা অজ্ঞায়নের সরঞ্জামগুলি ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.