নেট থেকে স্থানীয়করণের কার্যকর কৌশলসমূহ [বন্ধ]


121

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

প্রকল্পটি প্রাথমিকভাবে ইংরেজিতে করা হচ্ছে। ভবিষ্যতে স্থানীয়করণ কার্যকর করা সহজ করার জন্য এই মুহুর্তে আমার কী ব্যবস্থা নেওয়া উচিত?


2
দুর্দান্ত প্রশ্ন! আমি একই ধরণের পরিস্থিতির মুখোমুখি হয়েছি এবং বিশেষজ্ঞরা এটির বিষয়ে বিবেচনা করতে পছন্দ করবেন।

কেউ কি রিসোর্স ম্যানেজমেন্টের জন্য কোনও ভাল মান পেয়েছে? স্থানীয় মানটিতে কেবল স্ট্রিং নয় চিত্রগুলিও অন্তর্ভুক্ত থাকতে পারে।

1
এটি কি ডাব্লুপিএফ / সিলভারলাইট ইউআই, বা উইনফর্মস? আমার (সীমাবদ্ধ) অভিজ্ঞতা থেকে স্থানীয়করণের জন্য উইনফোর্ডসের অভিজ্ঞতা ডাব্লুপিএফ / সিলভারলাইটের চেয়ে অনেক সহজ।
পিট স্টেনসনেস

1
: আপনি শেষ পর্যন্ত পরিবর্তে রিসোর্স ফাইল, ডাটাবেসের মধ্যে আপনার স্থানীয় স্ট্রিং সংরক্ষণকারী, আপনি এই আলোচনা কটাক্ষপাত করা করতে পারেন stackoverflow.com/questions/2458615/...

1
@ পিট, @ স্মার্টকাভম্যান বলেছেন যে তিনি "একটি নেট নেট এমভিসি আবেদনের জন্য ইউআই বিকাশ করছেন", তাই ...
ব্রুনোসালভিনো

উত্তর:


74

আপনি এএসপি. নেট এমভিসি অ্যাপ্লিকেশন বিকাশ করছেন, আপনি কি? অন্যান্য উত্তরগুলি ডেস্কটপ অ্যাপ্লিকেশনগুলির সাথে নির্দিষ্ট বলে মনে হচ্ছে। আমাকে সাধারণ জিনিসগুলি ক্যাপচার করুন:

লোকাল সনাক্তকরণ

আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর লোকেল সঠিকভাবে সনাক্ত করা অত্যন্ত গুরুত্বপূর্ণ। ডেস্কটপ অ্যাপ্লিকেশনটিতে, সংস্কৃতিআইনফো.কন্ট্রাল কালচারের কাছে পছন্দের ফর্ম্যাটিং লোকেল রয়েছে (যেগুলি নম্বর, তারিখ, মুদ্রা ইত্যাদির ফর্ম্যাট করতে ব্যবহার করা উচিত) যেখানে সংস্কৃতিআইএনফো। বর্তমান সংস্কৃতিতে পছন্দের ইউজার ইন্টারফেস লোকেল (স্থানীয় বার্তাগুলি প্রদর্শনের জন্য ব্যবহার করা উচিত) । ওয়েব অ্যাপ্লিকেশনগুলির জন্য, আপনার উভয় সংস্কৃতি অটোতে সেট করা উচিত (অ্যাকসেপ্টল্যাংগুয়েজার শিরোলেখ থেকে স্বয়ংক্রিয়ভাবে লোকাল সনাক্ত করতে) যদি না আপনি কিছু অভিনব লোকেল সনাক্তকরণের ওয়ার্কফ্লো বাস্তবায়িত করতে চান (যেমন চাহিদা অনুযায়ী ভাষা পরিবর্তন করতে চান না)।

বাহ্যিক স্ট্রিং

সমস্ত স্ট্রিংগুলি রিসোর্স ফাইল থেকে আসা উচিত that উইনফর্মস অ্যাপে এটি স্থানীয়করণযোগ্য সম্পত্তি রূপে সেট করে সহজেই অর্জনযোগ্য। আপনার মডেলগুলি থেকে আসা স্ট্রিংগুলি আপনাকে ম্যানুয়ালি (দুর্ভাগ্যক্রমে) বহিরাগত করতে হবে। এটি তুলনামূলকভাবে সহজও। Asp.Net এ আপনাকে ম্যানুয়ালি সব কিছুতে বাহ্যিক প্রয়োজন হবে ...

লেআউট

আপনার অবশ্যই স্ট্রিং প্রসারণের অনুমতি দেওয়া দরকার। উইনফর্মস ওয়ার্ল্ডে এটি টেবিললআউটপ্যানেলের মাধ্যমে অর্জনযোগ্য যা লম্বা পাঠ্যকে সামঞ্জস্য করার জন্য বিন্যাসটি স্বয়ংক্রিয়ভাবে সামঞ্জস্য হবে তা নিশ্চিত করতে ব্যবহার করা উচিত। ওয়েব জগতে, আপনি ভাগ্য থেকে কিছুটা দূরে are আপনার সিএসএস লোকালাইজেশন মেকানিজম প্রয়োগ করতে হবে - সিএসএস সংজ্ঞা সংশোধন করার (ওভাররাইড) করার উপায়। এটি স্থানীয়করণের লোকদের চাহিদা অনুসারে শৈলী সংক্রান্ত সমস্যাগুলি সংশোধন করার অনুমতি দেবে। নিশ্চিত হয়ে নিন যে রেন্ডারযুক্ত পৃষ্ঠায় প্রতিটি HTML উপাদানটির অনন্য আইডি রয়েছে - এটি এটিকে নিখুঁতভাবে লক্ষ্য করার অনুমতি দেয়।

সংস্কৃতি নির্দিষ্ট সমস্যা

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

টোস্ট্রিং () এবং পার্স ()

টসস্ট্রিং () সমর্থন না করা থাকলে সর্বদা কালচারআইনফো পাস করার বিষয়টি নিশ্চিত করুন । এইভাবে আপনি আপনার উদ্দেশ্যগুলি মন্তব্য করছেন। উদাহরণস্বরূপ: আপনি যদি কিছু নম্বর অভ্যন্তরীণভাবে ব্যবহার করছেন এবং কোনও কারণে এটি স্ট্রিং ব্যবহারে রূপান্তর করতে হবে:

int i = 42;
var s = i.ToString(CultureInfo.InvariantCulture);

যে ব্যবহারকারীর ব্যবহারের জন্য প্রদর্শিত হবে এমন সংখ্যার জন্য:

var s = i.ToString(CultureInfo.CurrentCulture); // formatting culture used

একইটি পার্স (), ট্রাইপার্স () এবং এমনকি পার্সে এক্স্যাক্ট () -র ক্ষেত্রেও প্রযোজ্য - কালচারআইনফো-র সঠিক ব্যবহার না করে কিছু বাজে বাগ প্রবর্তিত হতে পারে। এর কারণ হ'ল মাইক্রোসফ্টের কিছু দুর্বল আত্মা, ভাল উদ্দেশ্য নিয়ে পূর্ণ সিদ্ধান্ত নিয়েছে যে কালচারইনফো.কন্ট্রন কালচারকে ডিফল্ট হিসাবে বিবেচনা করা ভাল (এটি যদি আপনি কিছু পাস না করেন তবে এটি ব্যবহার করা হবে) - কেউ যখন টসস্ট্রিং ব্যবহার করছেন তখন ( ) তিনি / তিনি এটি ব্যবহারকারীর কাছে প্রদর্শন করতে চান, তাই না? দেখা যাচ্ছে এটি সর্বদা ক্ষেত্রে হয় না - উদাহরণস্বরূপ আপনার অ্যাপ্লিকেশন সংস্করণ নম্বরটি ডাটাবেসে সংরক্ষণ করার চেষ্টা করুন এবং তারপরে সংস্করণ শ্রেণির উদাহরণে রূপান্তর করুন। শুভকামনা।

তারিখ এবং সময় অঞ্চল

সর্বদা ইউটিসিতে ডেটটাইম সংরক্ষণ এবং ইনস্ট্যান্ট করার বিষয়ে নিশ্চিত হন (ডেটটাইম.উইটকিউ এর পরিবর্তে ডেটটাইম.নিউ ব্যবহার করুন)। প্রদর্শনের সময় স্থানীয় ফর্ম্যাটে এটিকে স্থানীয় সময় রূপান্তর করুন:

DateTime now = DateTime.UtcNow;
var s = now.ToLocalTime().ToString(CultureInfo.CurrentCulture);

আপনার যদি শরীরের সময় রেফারেন্স সহ ইমেলগুলি প্রেরণ করতে হয় তবে সময় অঞ্চল সম্পর্কিত তথ্য অবশ্যই অন্তর্ভুক্ত করবেন - ইউটিসি অফসেট এবং শহরগুলির তালিকা উভয়ই অন্তর্ভুক্ত করুন:

DateTime someDate; // i.e. from database
var formattedDate = String.Format("{0} {1}", 
             someDate.ToLocaleTime().ToString(CultureInfo.CurrentCulture),
             TimeZoneInfo.Local.DisplayName);

যৌগিক বার্তা

আপনি ইতিমধ্যে সতর্কতা অবলম্বন করা হয়েছে স্ট্রিং কনটেনেট না করতে। পরিবর্তে আপনি সম্ভবত স্ট্রিং.ফর্ম্যাট () উপরের চিত্র হিসাবে ব্যবহার করবেন। তবে, আমি অবশ্যই জানিয়েছি যে আপনার যৌগিক বার্তাগুলির ব্যবহার কম করা উচিত। এটি কেবলমাত্র কারণ ব্যাকরণের নিয়মগুলি বেশ সাধারণভাবে পৃথক, তাই অনুবাদকদের কেবল বাক্যটি পুনরায় অর্ডার করার প্রয়োজন হতে পারে না (এটি স্থানধারক এবং স্ট্রিং ব্যবহার করে সমাধান করা হবে For ফর্ম্যাট ()), তবে পুরো বাক্যটিকে ভিন্নভাবে অনুবাদ করে এর উপর ভিত্তি করে প্রতিস্থাপন করা হবে কি। আমি আপনাকে কয়েকটি উদাহরণ দেই:

// Multiple plural forms
English: 4 viruses found.
Polish: Znaleziono 4 wirusy. **OR** Znaleziono 5 wirusów.

// Conjugation
English: Program encountered incorrect character | Application encountered incorrect character.
Polish: Program napotkał nieznaną literę | Aplikacja napotkała nieznaną literę.

অন্যান্য কনটেস্টেশন ইস্যু

প্রতিযোগিতা স্ট্রিংয়ের মধ্যে সীমাবদ্ধ নয়। একসাথে নিয়ন্ত্রণ স্থাপন এড়ান, বলুন:

[সংখ্যা সহ পাঠ্য বাক্স] দিনের মধ্যে আমাকে আবার স্মরণ করিয়ে দিন।

এটি এমন কিছুর সাথে আবার নকশা করা উচিত: এই সংখ্যক দিনের মধ্যে আমাকে আবার স্মরণ করিয়ে দিন: [পাঠ্য বাক্স]।

চরিত্রের এনকোডিং এবং হরফ

ইউনিকোডে যেকোনো পাঠ্য (যেমন ইউটিএফ -8 এ) সর্বদা সংরক্ষণ করুন, স্থানান্তর করুন। হার্ড-কোড ফন্টগুলি করবেন না - স্থানীয়করণের এগুলি সংশোধন করার প্রয়োজন হতে পারে এবং এটি ডিফল্ট ফন্ট ফ্যাল-ব্যাক প্রক্রিয়াটি বন্ধ করে দেবে (উইনফর্মের ক্ষেত্রে)। বেশিরভাগ ক্ষেত্রে (অর্থাত্ ব্যবহারকারীর নাম) "অদ্ভুত" অক্ষরগুলি মঞ্জুরি দেওয়া মনে রাখবেন।

পরীক্ষা

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


5
যৌগিক বার্তাগুলি সম্পর্কে - আমাকে একবার বহু-বহুবচন ফর্মগুলি করতে হয়েছিল। আমি প্রসারিত String.Formatকরেছি যাতে এটি এই শীতল বাক্য গঠনটিকে সমর্থন করতে পারে: "There {0:was|were} {0} {0:virus|viruses} found."প্রতিটি ভাষা তার নিজস্ব নিয়মগুলি লোড করতে পারে, তাই আপনি করতে পারেন "Znaleziono {0} {0:wirusy|wirusów}." উত্সটি গিটিহাবের
স্কট রিপ্পি

2
@ স্কট রিপ্পি কি আপনি লক্ষ্য করেছেন যে পোলিশ উদাহরণটি "জানালেজিওনো 4 ভাইরাসি। বা জ্নালেজিওনো 5 ভাইরাসউ" পড়েছে। <- অন্যান্য ভাষার মতো পোলিশেরও দুটিরও বেশি বহুবচন রূপ রয়েছে এবং তাদের মধ্যে পার্থক্য করার নিয়মগুলিও জটিল হতে পারে। এখানে আমি অবশ্যই পোলিশ ছেড়ে চলে যেতে পারি যেহেতু আমি এটি না বলি, তবে আমার ভাষায়, 101 টির জন্য বহুবচন রূপটি 1 টির মতো is জিএনইউ কীভাবে এই সমস্যাটিকে মোকাবেলা করে তা আপনি একবার দেখে নিতে পারেন: gnu.org/s/hello/manual/gettext/Puraral-forms.html
গ্রেগপেট

2
@ গ্রেগোপেট আমার পোলিশ উদাহরণটি তৈরি করা হয়েছে, কারণ আমি এটি বলি না, তবে স্মার্টফোর্মেট প্রকল্পটি ঠিক তাই করে exactly এখানে একটি ভাল উদাহরণ আছে: "{0} {0:plik|pliki|plików}"। ফর্ম্যাটারে একটি পোলিশ নিয়ম রয়েছে যা 3 টির মধ্যে কোনটি ব্যবহার করতে হবে তা নির্দিষ্ট করে এবং বিশেষ কেসগুলি সঠিকভাবে নির্ধারণ করে। আমি বর্তমানে আরও নিয়ম যুক্ত করার জন্য কাজ করছি, সুতরাং gettextনিবন্ধটি খুব কার্যকর প্রমাণিত হবে, আপনাকে ধন্যবাদ।
স্কট রিপ্পি

সিউডো-লোকালাইজেশনের জন্য, আমি সিউডলোকালাইজ ডট কম এ একটি নিখরচায় অনলাইন সিউডোকোকালাইজেশন সরঞ্জাম তৈরি করেছি
জেরস্কিনিড

74

কিছু প্রাথমিক বিষয় যা আপনার বিবেচনায় নেওয়া উচিত:

সমস্ত স্ট্রিং সংস্থানগুলি বহিরাগত করুন

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

স্ট্রিং প্রসারণের জন্য পর্যাপ্ত জায়গার অনুমতি দিন

কিছু ভাষার স্ট্রিংগুলি ৩০% পর্যন্ত দীর্ঘ হতে পারে (যেমন গ্রীক), ফরাসিদের জন্য একটি চরম উদাহরণ এখানে:

ঠিক আছে -> স্বীকারকারী (ফরাসী - 400% প্রসারণ)

আমি একটি প্রারম্ভিক পয়েন্ট ( http://en.wikedia.org/wiki/Pseudolocalization ) হিসাবে কিছু ধরণের সিউডো অনুবাদ করার পরামর্শ দিই । অথবা আপনি গুগল অনুবাদ বা বিং এর মাধ্যমে আপনার সংস্থানগুলি অনুবাদ করতে পারেন। এটি আপনাকে প্রকৃত অনুবাদগুলির মতো দেখতে ভাল ইঙ্গিত দেবে।

চিত্রগুলিতে পাঠ্যের জন্য নজর রাখুন

আপনি যদি আপনার অ্যাপ্লিকেশনটিতে কোনও চিত্র ব্যবহার করেন - তা নিশ্চিত করুন যে সেগুলিতে কোনও পাঠ্য নেই this এটি অবশ্যই অনুবাদ করা যায় না।

উইন্ডোজ ফোল্ডারগুলির কোনও পথই হার্ডকোড করবেন না

স্পষ্টতই, তবে আমি এটি অতীতে দেখেছি। উদাহরণস্বরূপ, C:\Program Filesউইন্ডোজের কয়েকটি আন্তর্জাতিক সংস্করণে অনুবাদ করা হয়েছে, যেমন এটি C:\Programmeএকটি জার্মান ওএসে।

স্থানীয় নির্দিষ্ট শব্দ ব্যবহার করা থেকে বিরত থাকুন

উদাহরণস্বরূপ, আপনি যদি কোনও ফর্মের জন্য কাউকে তাদের 'হাই স্কুল' জিজ্ঞাসা করেন, পশ্চিম ইউরোপের এটির কোনও অর্থ নেই।

স্ট্রিং কনটেনটেশনের মাধ্যমে স্ট্রিং তৈরি করা এড়িয়ে চলুন

উদাহরণস্বরূপ, এটি নিরীহ দেখাচ্ছে:

strWelcome = ReadExternalString("Welcome"); 
strMessage = strWelcome + ", " + UserName;

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

সময় / তারিখের সেটিংস

ওএসকে সর্বদা সময় / তারিখের ফর্ম্যাটটি নিশ্চিত করার বিষয়টি নিশ্চিত করুন।


@ জিমি সি, আপনি কীভাবে ভাষা-স্বতন্ত্র লজিক্যাল ধারাবাহিকতার জন্য স্ট্রিং তৈরি করতে যাবেন?
স্মার্টকাভম্যান

14
@ স্মার্ট আপনার উত্সে "in 0}, {1}" এর মতো কিছু করুন তারপরে আপনি যখন এটি স্থানীয় করবেন, তখন স্ট্রিং.ফর্ম্যাট ব্যবহার করুন এবং গ্রিটিং এবং ব্যবহারকারীর নামটি পাস করুন। এছাড়াও এটি আপনাকে "বর্তমান {0} গতি {1} {2}" থাকার সুবিধা দেয় এবং আপনি "ইঞ্জিন", "50" এবং "এমপিএইচ" তে পাস করতে পারেন এবং যখন আপনি আপনার বাক্য অনুবাদ করেন, আপনি { 0} ইত্যাদির আশেপাশে যেখানে তারা সেই ভাষাটি
বোঝায়

4
ভাল তালিকা জিমিসি। "উইন্ডোজ ফোল্ডারগুলির কোনও পথই হার্ডকোড কখনও নয়" উইন্ডোজ পাথের জন্য স্ট্রিং কনটেনটেশনের পরিবর্তে "সর্বদা পাথ.কোমাইন ব্যবহার করুন" মনে করিয়ে দেয়।

@ জিমি-সি দুর্দান্ত উত্তর!

1
এনভায়রনমেন্ট.গেটফোল্ডারপথ সেই ফোল্ডারগুলির ইংরেজি নামের উপর নির্ভর করে মাই ডকুমেন্টস এর মতো সাধারণ পাথগুলিতে বৈধ পাথ পেতে ব্যবহার করা যেতে পারে।
এপ্রিলেস্মার্ফ

24

এশিয়ান ভাষার জন্য বিশেষ বিবেচনা

ইতিমধ্যে এখানে সমস্ত দুর্দান্ত উত্তরের পাশাপাশি কিছু এশিয়ান ভাষাগুলির জন্য নজর রাখা হয়েছে:

বিভিন্ন দৈর্ঘ্যের পাঠ্য সম্পর্কে সতর্ক থাকুন

চাইনিজ এবং কোরিয়ান পাঠ্য সমতুল্য ইংরেজি পাঠ্যের চেয়ে অনেক ছোট হয়ে থাকে (যেহেতু সাধারণত একই জিনিসটি লেখার জন্য আপনার কম ব্লকি বর্ণের প্রয়োজন হয়), তাই কোনও পৃষ্ঠা আসলে চীনাতে খালি দেখতে পারে তবে জার্মান ভাষায় পূর্ণ জ্যামে ... আপনার করা দরকার ভাল দেখতে কিছু গতিশীল সাইজিং।

তবে জাপানি পাঠ সাধারণত চরিত্র গণনার ক্ষেত্রে সমান ইংরেজী পাঠের চেয়ে দীর্ঘতর হয়।

বেসলাইন বিন্যাস এবং "স্লাইড আপ" চেহারা থেকে সাবধান থাকুন

এশিয়ান অক্ষরগুলি সাধারণত বেসলাইনে থাকে , যার মধ্যে অবতরণকারী (যেমন y, g, q, j ইত্যাদি অন্তর্ভুক্ত থাকে না) যখন আপনি কোনও স্ক্রিন উপাদান ফর্ম্যাট করেন - সাধারণত বোতামগুলি ভিতরে টেক্সট সহ এবং যদি তা হয় পাঠ্যটি কেবল এশিয়ান ভাষাগুলি (অর্থাত্ পশ্চিমা বর্ণমালা নয়), তবে পাঠ্যটি দেখতে উপরের দিকে সরানো হবে বলে মনে হবে।

সংখ্যা এবং স্থানীয় সংখ্যাসূচক এককগুলির বিন্যাসকরণ

নম্বর বিন্যাস অন্যরকম হ্যান্ডেল করুন। বিভিন্ন এশিয়ান দেশগুলির সংখ্যা বিন্যাস করার বিভিন্ন পদ্ধতি রয়েছে। মুদ্রার সাথে একই। উদাহরণস্বরূপ, পূর্ব এশিয়ায় 10,000 (ওয়ান) একটি সাধারণ ইউনিট। ভারতে, 100,000 (লক্ষ) সাধারণ।

স্থানীয় মুদ্রা

কিছু দেশের মুদ্রায় প্রচুর শূন্য থাকে এবং দশমিক বিন্দু থাকে না (যেমন জাপান, ইন্দোনেশিয়া, ইতালি), অন্যদিকে দশমিক দশকের পরে দুই অঙ্ক থাকে।

বিভিন্ন শব্দের ক্রম থেকে সাবধান থাকুন

শব্দ ক্রম সর্বদা এক হতে পারে না। স্ট্রিং ফর্ম্যাটিংয়ে হার্ড-কোডিং শব্দের ক্রমের পরিবর্তে Best 0}, {1} ইত্যাদি ব্যবহার করা ভাল, যদি আপনার স্ট্রিংটি বিভিন্ন টুকরো ডেটার সংমিশ্রণ থেকে আসে।

লোকেল-নির্দিষ্ট সাজান ব্যবহার করুন

বাছাই ভাষা প্রতি ভাষা এবং লোকাল অনুযায়ী আলাদা - আপনার সর্বদা ও / এস এর লোকেল-নির্দিষ্ট সাজানোর উপর নির্ভর করা উচিত।

পূর্ণ-প্রস্থ / অর্ধ-প্রস্থের অক্ষরগুলির সাথে খুব সতর্ক হন

"পূর্ণ-প্রস্থ" এবং "অর্ধ-প্রস্থ" অক্ষরের মধ্যে পার্থক্য থেকে সাবধান থাকুন। বন্ধনী, বিরামচিহ্ন ইত্যাদির "পূর্ণ-প্রস্থ" সংস্করণগুলি স্ট্যান্ডার্ড এএসসিআইআই থেকে আলাদা। আপনি যদি এই অক্ষরের উপর ভিত্তি করে অনুসন্ধান বা স্ট্রিং বিভাজন করেন, আপনাকে প্রথমে সমস্ত পূর্ণ-প্রস্থের চিহ্নগুলিকে অর্ধ-প্রস্থের সমতুল্যে রূপান্তর করতে হবে।

পিরিয়ড কোনও বিন্দু নয় ... কমা কমা নয় ...

ডেটা ইনপুট গেটছার থেকে সাবধান থাকুন - উদাহরণস্বরূপ, চীনা ভাষায়, একটি সময়কাল বিন্দু নয় " কমা সম্পূর্ণ প্রস্থ, "," নয়। ডেটা-এন্ট্রি করছেন এমন ব্যবহারকারী যদি ভুলবশত এশিয়ান ভাষার আইএমই চালু করতে পারে তবে পশ্চিমা বিরামচিহ্নগুলি অনুসন্ধান করার চেষ্টা করবেন না।

ফোন নাম্বারগুলো

ফোন নম্বর বিন্যাসে কিছু মনে করবেন না । এখানে সবসময় কোনও এরিয়া কোড থাকে না এবং এটিকে আলাদাভাবে ফর্ম্যাট করা যায়। সাধারণত, প্রতি দেশ ফর্ম্যাট স্ট্রিং আছে।

ধরে নিবেন না যে মানুষের কাছে কেবল একটি মোবাইল ফোন নম্বর বা একটি ফ্যাক্স নম্বর থাকবে Asia এশিয়াতে এটি এমন নয়।

ঠিকানাগুলি - আপনি যা ভাবেন তার চেয়ে কম

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

অভিবাদন

অভিবাদন শুধুমাত্র ইত্যাদি জনাব, মিসেস অবধি সীমিত নেই যদিও আপনি সম্ভবত সেক্স জন্য "M" এবং "এফ" ব্যবহার নিরাপদ গেছে - আমরা না যে এখনো wierd ...


1
শেষ অনুচ্ছেদটি আমাকে হাসিয়ে দিয়েছে।
বোলটক্লক

ওহ, আমরা (i18n ছেলেরা) এখনও শুরু করি নি ... আমরা কেবল পৃষ্ঠটি স্ক্র্যাচ করতে সক্ষম হয়েছি :) যদি আমরা GB18030 সমর্থনের মতো নির্দিষ্ট বিষয়ে কথা বলতে পারি তবে আমাদের পোস্টটি তাই পরিচালনা করতে খুব দীর্ঘ হবে :) ধন্যবাদ যাইহোক আপনার নোটের জন্য, আমি বেশ কয়েকটি আইটেম মিস করেছি।
পাওয়ে ডায়দা

শেষ সম্পর্কে, আমি বিশ্বাস করি ইউকে এখন অফিসিয়ালি "অন্যান্য" কে যৌন হিসাবে গ্রহণ করে as ট্রান্সজেন্ডারদের ভাবুন।
বার্ট ফ্রেডারিচস

11

কিছু প্রাথমিক পদক্ষেপ হ'ল স্ক্রিনে প্রদর্শিত যে কোনও স্ট্রিং আপনার কোডে আক্ষরিক নয় তা নিশ্চিত করা। আপনি যদি উইনফর্মগুলি করেন তবে প্রতিটি ফর্মের একটি ইউআই সংস্থান থাকবে। কথোপকথন, প্রতিবেদন ইত্যাদির জন্য নিশ্চিত হয়ে নিন যে আপনি প্রকল্পের সংস্থান ফাইল ব্যবহার করছেন।

সুতরাং আপনার কোডটিতে "আপলোড ব্যর্থ হয়েছে" এর পরিবর্তে আপনার কাছে রিসোর্সগুলির মতো কিছু থাকতে পারে p আপলোডফাইড

আপনি যে ভাষা ব্যবহার করেন তার জন্য এই পদ্ধতিতে আপনি নতুন সংস্থান ফাইল তৈরি করতে পারেন (এবং। নেট এটি সাহায্য করবে)) এবং প্রতিটি ফাইলে স্থানীয় স্ট্রিং রয়েছে have

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


1
আমার L10n অভিজ্ঞতা থেকে, রাশিয়ান সবচেয়ে খারাপ পরিস্থিতি। উইলফরম ইন উইলফর্মস যথাযথ ব্যবহারকারীর সাথে টেবিললআউটপ্যানেলস স্ট্রিং গ্রোথটি দক্ষতার সাথে পরিচালনা করতে পারে।
পাওয়ে ডায়দা

হ্যাঁ, আমার অভিজ্ঞতাটি 7 টি ভাষায় সীমাবদ্ধ ছিল: ইংরেজি, জার্মান, পর্তুগিজ, ইতালিয়ান, ফরাসী, স্পেনীয় এবং জাপানি। তবে আমি দেখতে পাচ্ছি রাশিয়ানরা খারাপ হয়েছে কারণ তাদের প্রচুর প্রত্যয় এবং উপসর্গ রয়েছে
taylonr

9

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার সমাবেশগুলিতে FXCop বা ভিজ্যুয়াল স্টুডিও কোড বিশ্লেষণ (তারা বেশ সমান) run

এগুলি .NET কোড যা সঠিক সংস্কৃতি ভিত্তিক ওভারলোডগুলি ব্যবহার করে না এটি সনাক্তকরণে ভাল: CA1305: আইফোর্ম্যাটপ্রাইডার নির্দিষ্ট করুন

আমি অবশ্যই যুক্ত করব যে এই সরঞ্জামগুলি হতাশাবোধক কারণ তারা সাধারণত আপনার কোডের লক্ষ লক্ষ সমস্যা সনাক্ত করে তবে তবুও, আপনি প্রতিটি নিয়ম না মেনে চললেও আপনাকে অনেক কিছু শিখতে হবে।


এটি কি ডিফল্ট, নাকি বিশ্বায়ন-নির্দিষ্ট নিয়মের সন্ধানের জন্য এর জন্য আমার কিছু সেটিং নির্দিষ্ট করতে হবে?
স্মার্টকাভম্যান

@ স্মার্টকাভম্যান - এটি ডিফল্ট (হুম .. আসলে, কিছু লোক মনে করেন যে এই সরঞ্জামগুলিতে অনেকগুলি ডিফল্ট নিয়ম রয়েছে :-)
সাইমন মউরিয়ার

7

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


সিউডোলোকালাইজ করার দ্রুত, সহজ পদ্ধতির জন্য, আমি সিউডলোকালাইজ
ডট

6

অন্যান্য সমস্ত সহায়ক ইঙ্গিত ছাড়াও, এখানে কিছু নিখোঁজ রয়েছে:

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

আপনি যদি ব্যবহারকারীকে এমন একটি প্রশ্ন জিজ্ঞাসা করেন যা একটি একক চিঠির উত্তর প্রত্যাশা করে, ব্যবহারকারী হ্যাঁ বলার জন্য 'Y' কী টিপবেন বলে আশা করবেন না।

স্টোরড প্রোকগুলিতে খুব সচেতন থাকুন যে এসকিউএল ডিবিতে তারিখগুলি ইউএসএ ফর্ম্যাটে রয়েছে

ডিবিতে পাঠ্য স্ট্রিং স্থাপন করা আপনাকে পরে পুনরায় প্রচার না করে অতিরিক্ত ভাষা যুক্ত করতে দেয় to

অনুবাদ করার জন্য লিখিত পাঠ্য ফাইল প্রেরণ করার সময়, অনুবাদক সঠিক শব্দটি নির্বাচন করে তা নিশ্চিত করার জন্য সর্বদা প্রসঙ্গের বিবরণ অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, আপনি "পিচ:" শব্দটি বা এমন একটি জায়গায় অনুবাদ করতে পারেন যা আপনি ফুটবল খেলেন

ঠিকানা লেবেলের সর্বদা রূপান্তর করা প্রয়োজন। কানাডার প্রদেশ, আমেরিকার রাজ্য, যুক্তরাজ্যের কাউন্টি


5

আপনার বিবেচনা করা দরকার:

  1. বহুভাষার জন্য রাউটিং

  2. সমস্ত হার্ডকোড স্ট্রিং রিসোর্স ফাইলে সরান

একটি সম্পত্তির উদাহরণ:

মডেল:

[Display(Name = <Resource for display name>.<field for this property>)]
[Required(ErrorMessage = <Resource for error message>.<field for this validate message>)]
public string TestProperty { get; set; }

দেখুন:

@Html.LabelFor(m=>m.TestProperty)
@Html.EditorFor(m => m.TestProperty)
@Html.ValidationMessageFor(m => m.TestProperty)

5

এখানে বাকি উত্তরে উল্লেখ করা হয়নি এমন কিছু।

আপনার অ্যাপ্লিকেশন এবং এর স্থানীয়করণের জটিলতার উপর নির্ভর করে, আমি বিকল্পধারার সংস্থান সরবরাহকারীকে কার্যকর করা এবং স্থানীয়ভাবে সংস্থানগুলি একটি ডাটাবেসে রাখার পরামর্শ দেব। ডিফল্ট ASP.NET স্থানীয়করণ প্রকল্পের সাহায্যে সমস্ত সংস্থান RESX ফাইলে রাখা হয়, যা:

  1. ভিজ্যুয়াল স্টুডিওতে সম্পাদনা করতে বোতামের ব্যথা
  2. অ্যাপ্লিকেশনটি সংকলিত / শিপড / চালানোর পরে স্থানীয় সংস্থাগুলির বিতরণ এবং পরিচালনা সীমাবদ্ধ করুন।

সম্ভাব্য ব্যবহারের কেস হিসাবে, আপনার অ্যাপ্লিকেশনটির জন্য ল্যাঙ্গুয়েজ প্যাকগুলি সরবরাহ এবং ইউআইয়ের মাধ্যমে ভাষা আমদানি ও রফতানি করার ক্ষমতা বিবেচনা করুন। RESX ফাইলগুলি এখানে সহায়তা করবে না।

এই জাতীয় পরিস্থিতিতে একটি বিকল্প সংস্থান সরবরাহকারী খুব সহায়ক। কীভাবে একটি বাস্তবায়ন করা যায় সে সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে । অবশ্যই এটি এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলিতে বেশি দেখা যায় তবে এটি বৈধ but


1
এই দুর্দান্ত উত্তরের উত্তরগুলি সন্ধান করতে এবং এখনও নতুন এবং সহায়ক কিছু অবদান রাখার জন্য আপনাকে ধন্যবাদ।
স্মার্টকাভম্যান

+1 টি; আমি Asp.NET এ একটি বিস্তৃত ওয়েব অ্যাপ্লিকেশন তৈরি করেছি এবং আমরা ডাটাবেসের মাধ্যমে অনুবাদগুলি শেষ করেছি। নতুন বৈশিষ্ট্যগুলি প্রায়শই যুক্ত করা হত তবে আমাদের অনুবাদকরা নির্দিষ্ট পরিভাষায় বিশেষজ্ঞ না থাকায় আমরা ক্রুদ্ধ গ্রাহকের ইমেলগুলি দ্রুত "এই ধরণের জন্য X এর জন্য Y ব্যবহার করছেন কেন?"
গ্রেগপেট

3

সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল বিভিন্ন ভাষায় সামগ্রী পরিচালনা করা। আমি নিজে বেশ কয়েকটি ওয়েবসাইট তৈরি করেছি এবং বিভিন্ন ভাষায় কন্টেন্ট পরিচালনা করা সবচেয়ে বড় চ্যালেঞ্জ।

আমি সংস্থানসমূহ / সামগ্রী সংরক্ষণ করার জন্য ডেটাবেস ব্যবহার করছি। এটি আমাকে যে কোনও ভাষা সমর্থন যুক্ত করার নমনীয়তা দেয়। নির্দিষ্ট ভাষায় যদি কোনও উত্স না পাওয়া যায় তবে আমি ইংরাজী ভাষায় ফিরে যাওয়ার যুক্তি প্রয়োগ করেছি।

আপনি পরে অনুবাদককে যেকোন ভাষাতে ইংরেজী মান রূপান্তর করতে পারেন use


2

আন্তর্জাতিকীকরণে বিবেচনার বিষয়গুলির সংক্ষিপ্তসার:

  • সমস্ত তথ্য আন্তর্জাতিকীকরণ করা উচিত। গ্রাফিক্সের এমন তথ্য থাকতে পারে যা আমরা আন্তর্জাতিককরণ করতে চাই consideration

  • ক্ষেত্র বা স্ট্রিংগুলির আকার, ভাষার উপর নির্ভর করে কারণ এটি আমাদের সমস্যার কারণ হতে পারে।

  • শব্দের ক্রমটি আমরা যে ভাষার হয়েছি তার উপর নির্ভর করে, তাই একটি ভাষার ক্রম অন্য ভাষায় একই হবে।

  • আমাদের অবশ্যই ધ્યાનમાં নিতে হবে যে তারিখের ফর্ম্যাটটি এক ভাষা থেকে অন্য ভাষায় পরিবর্তিত হবে


1

কি তুরস্ক পরীক্ষা :

সফ্টওয়্যার আন্তর্জাতিককরণ সর্বোত্তম পরিস্থিতিতে কঠিন , তবে এটি সর্বদা আমাকে অবাক করে দিয়েছিল যে কোনও একটি বিশেষ দেশ প্রায়শই আন্তর্জাতিকীকরণ সমস্যার আলোচনায় উঠে আসে: তুরস্ক ...

যদি আপনি স্থানীয়করণ বা আন্তর্জাতিকীকরণ সম্পর্কে কোনও সাদা বিষয় বিবেচনা করেন তবে যত তাড়াতাড়ি সম্ভব যুক্তিসঙ্গতভাবে আপনার কোডটি তুরস্কের স্থানীয় অধীনে চালিত করতে বাধ্য করুন । আপনার কোডটি বেশিরভাগ ক্ষেত্রে চলার জন্য এটি একটি শক্তিশালী ঘণ্টাওয়ালা - তবে কোনওভাবেই নয় - সংস্কৃতি এবং লোকাল ...

যদি আপনার সাইট / প্রোগ্রামটি তুর্কি ক্লায়েন্টের সাথে ভালভাবে চলে তবে আপনি নিশ্চিত হতে পারেন যে এটি বেশিরভাগ অন্যান্য প্ল্যাটফর্মে চালিত হবে।

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