ব্যবহারকারী বার্তায় বহুবচন


106

অনেক সময় ব্যবহারকারীর কাছে বার্তা উত্পন্ন করার সময়, বার্তায় বেশ কয়েকটি এমন কিছু থাকবে যা আমি গ্রাহককে জানাতে চাই।

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

একটি উপায় হ'ল জেনেরিক বার্তাটি এভাবে করা:

int noofitemsselected = SomeFunction();
string message = "You have selected " + noofitemsselected + " item(s). Are you sure you want to delete it/them?";

"সমস্যা" এখানে যদি কোথায় noofitemselected1, এবং আমরা লিখতে হবে আইটেমটি এবং এটা পরিবর্তে আইটেম এবং তাদের

আমার সাধারণ সমাধানটি এরকম কিছু হবে

int noofitemsselected = SomeFunction();
string message = "You have selected " + noofitemsselected + " " + (noofitemsselected==1?"item" : "items") + ". Are you sure you want to delete " + (noofitemsselected==1?"it" : "them") + "?";

কোডের অভ্যন্তরে সংখ্যার বহুত্বের উল্লেখ রয়েছে এবং সত্যিকারের বার্তাটি পড়া খুব শক্ত হয়ে যায় তবে এটি বেশ দীর্ঘ এবং বেশ বাজে সত্যই দ্রুত হয়ে যায়।

আমার প্রশ্ন তাই সহজ। এর মতো বার্তা উত্পন্ন করার আরও ভাল উপায় আছে কি?

সম্পাদনা

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

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

সুতরাং এটি মূলত বেশিরভাগ পাঠ্যের ক্ষেত্রে প্রযোজ্য যা প্রোগ্রামগুলি থেকে কোনও উপায়ে আউটপুট হয় এবং তারপরে সমাধানটি কেবলমাত্র প্রোগ্রামটিকে আর আউটপুট পাঠ্যরূপে না পরিবর্তন করার মতো সহজ নয় :)


6
@ 0xA3: প্রতিটি ভাষার একটি বহুবচন রয়েছে যা "আইটেম (গুলি) হিসাবে সহজেই প্রকাশিত হয় তা আমি সত্যিই জানি না।
জেনস

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

4
@ জেনস: এগুলি সাধারণত কম সুবিধাজনক উপায়ে সম্ভব হয় না। কিছু ভাষার যেমন 5-অনন্তের চেয়ে 2-4 এর জন্য বিভিন্ন বহুবচন রয়েছে, যা লিঙ্গের উপর নির্ভর করে। "প্রাকৃতিক ভাষা: স্থানীয়করণের উন্মাদনা! শীঘ্রই আপনার কাছের কম্পিউটারে আসছে!"
পিসকভোর

29
আইএমও, কোনও কিছুই প্রোগ্রামারদের খারাপ বহুত্বের চেয়ে অলস দেখায় না।
গ্রেগ

4
@ আইভিন্দ: আপনার সম্পাদনার জন্য +1 মনে হচ্ছে এখানকার অনেক "উত্তরদাতারা" সঠিক সমাধান দেওয়ার পরিবর্তে আপনার প্রশ্নটি ভুল প্রমাণ করার পক্ষে আরও বেশি আগ্রহী। বিরোধী সমাধান, আপনি যদি।
mwolfe02

উত্তর:


53

যদি কোনও সুযোগ থাকে তবে তা যতই ছোট হোক না কেন, এই অ্যাপ্লিকেশনটিকে অন্য ভাষায় অনুবাদ করার প্রয়োজন হবে তবে উভয়ই ভুল। এটি করার সঠিক উপায় হ'ল:

string message = ( noofitemsselected==1 ?
  "You have selected " + noofitemsselected + " item. Are you sure you want to delete it?":
  "You have selected " + noofitemsselected + " items. Are you sure you want to delete them?"
);

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

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

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


35
আমি এই সিদ্ধান্তের সাথে একমত হওয়ার পরেও আপনি এমন ভাষাগুলিকে উপেক্ষা করছেন যা দুটি ডিগ্রির বেশি বহুবচন রয়েছে। (উদাহরণস্বরূপ রাশিয়ান নিন saying এটির 1, <5, বা> = 5 এর উপর নির্ভর করে বলার তিনটি ভিন্ন উপায় এবং এমনকি এটি আপনি কী বলছেন তা নির্ভর করে)। মূলত আমি বলছি আপনার একটি শক্তিশালী শর্তাধীন বিবৃতি প্রয়োজন, কেবল একটি টের্নারি অপারেটর নয়।
ক্র্যাসিক

4
এমনকি noofitemsselectedপ্রথম বিকল্পের জন্য আপনি এই উদাহরণটিকে অপ্টিমাইজ করতে পারেন ; যেহেতু আপনি জানেন এটি 1।
ডিফল্ট

16
আমরা যখন এটি করছি, হিব্রুতে 1, 2, 3-10 এবং 11+ এর জন্য বিভিন্ন বহুবচন থাকতে পারে।
জোয়েল স্পলস্কি

3
@ জোয়েল, হিব্রু যে বিভিন্ন বহুবচন থাকতে পারে? לא ידעתי (আমি জানতাম না)! আধুনিক হিব্রু ভাষা বহুবচন হিসাবে ইংরেজী মত (যদিও প্রাচীন হিব্রু এছাড়াও দ্বৈত রূপ ছিল।)
কেন ব্লুম

3
ইংরাজীতে শূন্যকে বহুবচন (0 আইটেম, 2 আইটেম) এর মতো আচরণ করা হয়; হিব্রু, রাশিয়ান, রোমানিয়ান ভাষায় শূন্যের সাথে কী ঘটে? রেঞ্জগুলি চিহ্নিত করার কোনও সহজ উপায় আছে? আমি অনুমান করছি যে তথ্য প্রতি ভাষা হিসাবে নির্ধারণ করতে হবে, সুতরাং বার্তা ফাইলের উপর ভিত্তি করে যে কোনও সিস্টেমকে বার্তাগুলির একটি সেটে বিভিন্ন পরিমাণে বহুবচনতা মোকাবেলা করতে হবে। সেকি! অনুবাদগুলি সেট আপ করাও জটিল - বিভিন্ন ভাষার জন্য বিভিন্ন সংখ্যক বার্তা প্রয়োজন।
জোনাথন লেফলার

94

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

আপনি যখন একটি বিস্তৃত পূর্বাবস্থায় সুবিধা তৈরি করেন আপনি আসলে 2 টি সুবিধা পান। প্রথম সুবিধাটি ব্যবহারকারীর জীবনকে আরও সহজ করে তোলে তাকে ভুলগুলি বিপরীত করার এবং পাঠ্যকে ছোট করার অনুমতি দিয়ে। দ্বিতীয় সুবিধাটি হ'ল আপনার অ্যাপটি তুচ্ছ-ওয়ার্কফ্লোটি (কেবল ভুল নয়) বিপরীতটিকে অনুমতি দিয়ে বাস্তব জীবনকে প্রতিফলিত করছে।

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


12
কিছু কারণে, আমি সত্যই মনে করি যে আমি এটির সাথে একমত এবং এটিকে উত্সাহ দেওয়া উচিত।
কোডি গ্রে

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

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

50
আমি এটি না পড়েই এটি উত্সাহিত করেছি। আমি সবসময় পরে এটিকে পূর্বাবস্থায় ফেরাতে পারি
স্টিভেন এ। লো

6
@ রবার্ট হার্ভে: সম্ভবত আপোক্রিফাল, কিন্তু বহু বছর আগে আমি পড়েছিলাম যে ম্যাকের জন্য লোটাস 40,000 ইউনিট লোটাস নোটের পাঠিয়েছিল এবং 60,000 ফিরিয়ে দেওয়া হয়েছিল। ইন্টারফেসটি এত খারাপ ছিল যে এটির পাইরেটেড করা লোকেরাও এটি আবার পাঠিয়েছিল।
ডানকান

39

কীভাবে ঠিক:

string message = "Are you sure you want to delete " + noofitemsselected + " item(s)?"

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

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


1
ভাল উত্তর. তবে এই ক্ষেত্রে গ্রাহককে অনেক ক্ষেত্রে ত্রুটি বার্তা সরবরাহ করার জন্য অনুরোধ করা হয়েছিল কারণ তিনি মনে করেন যে এটিই সেরা পদ্ধতির। তবে পাঠ্য পরিবর্তন করা কমপক্ষে সমস্যাটি হ্রাস করতে এবং এটিকে কম অগোছালো করে তুলতে পারে।
vyvind ব্রাথিন

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

বিকল্পগুলি সর্বাধিক স্বাগত। এজন্যই আমি এটিকে একটি +1ও দিয়েছি :)
vআইভিন্দ ব্রাথিন

1
অবিশ্বাস্য সমস্যা সমাধানের চেষ্টা না করার জন্য +1। এবং স্টিভ ক্রুসের আইন মনে রাখবেন: অর্ধেক শব্দ মুছে ফেলুন। তারপরে আবার করুন। আমি ব্যবহার করি: "{x} আইটেম (গুলি) মুছবেন?"
সার্জ ওয়াটিয়ার

20

জাভা বছরের পর বছর যা করেছে তা সম্পর্কে কী? Java.text.Message Format এবং Choiceformat? আরও তথ্যের জন্য http://download.oracle.com/javase/1.4.2/docs/api/java/text/Message Format.html দেখুন ।

MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
form.applyPattern(
   "There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");

Object[] testArgs = {new Long(12373), "MyDisk"};

System.out.println(form.format(testArgs));

// output, with different testArgs
output: The disk "MyDisk" are no files.
output: The disk "MyDisk" is one file.
output: The disk "MyDisk" are 1,273 files.

আপনার ক্ষেত্রে আপনি কিছুটা সহজ কিছু চান:

MessageFormat form = new MessageFormat("Are you sure you want to delete {0,choice,1#one item,1<{0,number.integer} files}?");

এই পদ্ধতির সুবিধাটি হ'ল এটি i18n বান্ডিলগুলির সাথে ভাল কাজ করে এবং আপনি ভাষাগুলির জন্য যথাযথ অনুবাদ সরবরাহ করতে পারেন (জাপানের মতো) যা বহুবচন বা একবচন শব্দের কোনও ধারণা নেই।


1
এই পদ্ধতির বহুত্বত্ব পরিচালনা করার জন্য ভাল কাজ করে তবে দু: খজনকভাবে লিঙ্গ পরিচালনা করে না। মুছে ফেলা যায় এমন প্রতিটি ধরণের জিনিসের জন্য আপনার আলাদা স্ট্রিং দরকার।
মিঃ শাইনি এবং নিউ 宇 宇

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

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

12

আমি বার্তাটি হার্ডকোডিং না করে পৃথক রিসোর্স ফাইলে দুটি বার্তা সরবরাহ করে যাব। মত

string DELETE_SINGLE = "You have selected {0} item. Are you sure you want to delete it?";
string DELETE_MULTI = "You have selected {0} items. Are you sure you want to delete them?";

এবং তারপরে এগুলিকে স্ট্রিংয়ে ফিড করুন For

if(noofitemsselected == 1)
    messageTemplate = MessageResources.DELETE_SINGLE;
else
    messageTemplate = MessageResources.DELETE_MULTI;

string message = String.Format(messageTemplate, noofitemsselected)

আমি মনে করি এই পদ্ধতির স্থানীয়করণ এবং বজায় রাখা সহজ is সমস্ত ইউআই বার্তাগুলি একক লোকায়নে থাকবে।


+1, আমি এই পদ্ধতির পছন্দ করি। যদিও, আপনার সংস্থান নামের সমতুল্য ট্র্যাক রাখা প্রয়োজন।
ডিফল্ট

11

আপনি বার্তাটি আলাদাভাবে আলাদা করে ইস্যুটিকে পুরোপুরি আলাদা করতে পারেন।

string message = "The number of selected items is " + noofitemsselected + ". Are you sure you want to delete everything in this selection?";

10

প্রথম জিনিসটি আমি পরামর্শ দিচ্ছি: ব্যবহার করুন string.Format। এটি আপনাকে এরকম কিছু করতে দেয়:

int numOfItems = GetNumOfItems();
string msgTemplate;
msgTemplate = numOfItems == 1 ? "You selected only {0} item." : "Wow, you selected {0} items!";
string msg = string.Format(msgTemplate, numOfItems);

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

<TextBlock Text="{Binding numOfItems, Converter={StaticResource c:NumericMessageFormatter}, ConverterParameter={StaticResource s:SuitableMessageTemplate}}" />

7

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

নিয়মিত পুংলিঙ্গ:

Vous avez choisi 1 compte. Voulez-vous vraiment le supprimer.
Vous avez choisi 2 comptes. Voulez-vous vraiment les supprimer.

নিয়মিত মেয়েলি

Vous avez choisi 1 table. Voulez-vous vraiment la supprimer.
Vous avez choisi 2 tables. Voulez-vous vraiment les supprimer.

অনিয়মিত পুংলিঙ্গ ('গুলি' দিয়ে শেষ)

Vous avez choisi 1 pays. Voulez-vous vraiment le supprimer.
Vous avez choisi 2 pays. Voulez-vous vraiment les supprimer?

একই সমস্যা বেশিরভাগ লাতিন ভাষায় বিদ্যমান এবং জার্মান বা রাশিয়ান ভাষায় আরও খারাপ হয়, যেখানে 3 জন লিঙ্গ রয়েছে (পুরুষানু, স্ত্রীলিঙ্গ এবং নিউউটার)।

আপনার উদ্দেশ্যটি কেবল ইংরেজির চেয়ে বেশি হ্যান্ডেল করা উচিত তবে আপনাকে যত্ন নেওয়া দরকার।


কমপক্ষে আমার ক্ষেত্রে, এটি আসলে কোনও সমস্যা নয়। প্রতিটি পাঠ্যের জন্য আমি সংখ্যাটি সন্নিবেশ করতে চাই, আমি জানতে পারি স্ট্রিং তৈরি করার সময় বিশেষ্যটি কী। তবে আরও সাধারণ সমাধান করার জন্য আমি আপনার সাথে একমত, এটি "সমস্ত" ভাষার পক্ষে কাজ করা খুব কঠিন হতে পারে, যদি না অসম্ভব কাজ হয়।
vyvind ব্রাথিন

1
বা পোলিশ নিন, যেখানে ব্যবহৃত বিশেষ্যটির বহুবচন রূপের উপর নির্ভর করে আলাদা! : /
ক্রিক

5

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

উদাহরণস্বরূপ, আপনি কোন বার্তাটি প্রদর্শন করতে চান তা নির্দিষ্ট করতে কোনও ধরণের ধ্রুবক ব্যবহার করুন। কিছু ফাংশন ব্যবহার করে বার্তাটি আনুন যা প্রয়োগের বিশদটি গোপন করবে।

get_message(DELETE_WARNING, quantity)

এর পরে, এমন একটি অভিধান তৈরি করুন যা সম্ভাব্য বার্তাগুলি এবং তারতম্যগুলিকে ধারণ করে এবং তার ব্যবহারগুলি কখন ব্যবহার করা উচিত তা জানাতে।

DELETE_WARNING = {
   1: 'Are you sure you want to delete %s item',
   >1: 'Are you sure you want to delete %s items'
   >5: 'My language has special plural above five, do you wish to delete it?'
}

এখন আপনি কেবল সেই বার্তাটি দিয়ে quantityমানটির অনুরূপ কীটি খুঁজে পেতে পারেন quantity

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


5

আপনাকে নীচের ফাংশনটি ভিবিএ থেকে সি # তে অনুবাদ করতে হবে, তবে আপনার ব্যবহারটি এতে পরিবর্তন হবে:

int noofitemsselected = SomeFunction();
string message = Pluralize("You have selected # item[s]. Are you sure you want to delete [it/them]?", noofitemsselected);

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

'---------------------------------------------------------------------------------------'
' Procedure : Pluralize'
' Purpose   : Formats an English phrase to make verbs agree in number.'
' Usage     : Msg = "There [is/are] # record[s].  [It/They] consist[s/] of # part[y/ies] each."'
'             Pluralize(Msg, 1) --> "There is 1 record.  It consists of 1 party each."'
'             Pluralize(Msg, 6) --> "There are 6 records.  They consist of 6 parties each."'
'---------------------------------------------------------------------------------------'
''
Function Pluralize(Text As String, Num As Variant, Optional NumToken As String = "#")
Const OpeningBracket = "\["
Const ClosingBracket = "\]"
Const DividingSlash = "/"
Const CharGroup = "([^\]]*)"  'Group of 0 or more characters not equal to closing bracket'
Dim IsPlural As Boolean, Msg As String, Pattern As String

    On Error GoTo Err_Pluralize

    If IsNumeric(Num) Then
        IsPlural = (Num <> 1)
    End If

    Msg = Text

    'Replace the number token with the actual number'
    Msg = Replace(Msg, NumToken, Num)

    'Replace [y/ies] style references'
    Pattern = OpeningBracket & CharGroup & DividingSlash & CharGroup & ClosingBracket
    Msg = RegExReplace(Pattern, Msg, "$" & IIf(IsPlural, 2, 1))

    'Replace [s] style references'
    Pattern = OpeningBracket & CharGroup & ClosingBracket
    Msg = RegExReplace(Pattern, Msg, IIf(IsPlural, "$1", ""))

    'Return the modified message'    
    Pluralize = Msg
End Function

Function RegExReplace(SearchPattern As String, _
                      TextToSearch As String, _
                      ReplacePattern As String) As String
Dim RE As Object

    Set RE = CreateObject("vbscript.regexp")
    With RE
        .MultiLine = False
        .Global = True
        .IgnoreCase = False
        .Pattern = SearchPattern
    End With

    RegExReplace = RE.Replace(TextToSearch, ReplacePattern)
End Function

উপরের কোড মন্তব্যগুলিতে ব্যবহারটি কিছুটা বিচ্ছিন্ন হয়ে গেছে, তাই আমি এটি এখানে পুনরাবৃত্তি করব:

Msg = "There [is/are] # record[s]. [It/They] consist[s/] of # part[y/ies] each."

Pluralize(Msg, 1) --> "There is 1 record.  It consists of 1 party each."
Pluralize(Msg, 6) --> "There are 6 records.  They consist of 6 parties each."

হ্যাঁ, এই সমাধানটি ইংরেজী নয় এমন ভাষাগুলি উপেক্ষা করে। বিষয়টি আপনার প্রয়োজনীয়তার উপর নির্ভর করে কিনা।


4

আপনি বহুবচন স্বয়ংক্রিয়ভাবে তৈরি করতে পারেন, উদাহরণস্বরূপ দেখুন। বহুবচন জেনারেটর

বহুবচন উত্পাদনের নিয়মের জন্য উইকিপিডিয়া দেখুন

string msg = "Do you want to delete " + numItems + GetPlural(" item", numItems) + "?";

অ্যাপ্লিকেশনটি আন্তর্জাতিকীকরণ না করা হলে আমি এই পদ্ধতিটি ব্যবহার করতে পছন্দ করি। স্থায়ীকরণের ফলে আরও পালিশ করা হয়।
সিএসপল্টন

1
এটির আন্তর্জাতিকীকরণ করা সত্যিই কঠিন এবং এটি প্রায়শই ইংরেজিতে ব্যর্থ হয় যেমন "আপনার কাছে অর্ডার + নামমাইস + গেটপ্লারাল (" মাউস ", নামমাইস) রয়েছে" "
জেমস অ্যান্ডারসন

@ জেমস অ্যান্ডারসন: এখন, ব্যাকরণগতভাবে এটি সর্বোত্তম উদাহরণ নয় ;-) গেটপিউরাল পদ্ধতি ব্যবহারের একমাত্র পদ্ধতি যা আপনাকে ব্যবহারের অনুমতি দেয় তা ভেবে ফাঁদে পড়বেন না ।
সিএসপল্টন

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

4

কিভাবে আরও সাধারণ উপায়। দ্বিতীয় বাক্যে বহুবচন রক্ষা করুন:

মুছে ফেলার জন্য নির্বাচিত আইটেমের সংখ্যা: নুফাইটেমেসলেটেড।
তুমি কি নিশ্চিত?

আমি খুঁজে পেয়েছি যে এটি এভাবে করা লাইনের শেষে নম্বরটি রাখে যা স্পষ্ট করা সহজ। এই সমাধানটি কোনও ভাষায় একই যুক্তি দিয়ে কাজ করবে।


"নির্বাচিত আইটেমগুলি মুছতে হবে:" ঠিক শোনাচ্ছে না, বাক্যটি নামের একটি তালিকা নির্দেশ করে তবে একটি সংখ্যা মুদ্রিত। এমনকি "মুছতে হবে এমন আইটেমের সংখ্যা:" এ পরিবর্তিত হলেও এখনও "আইটেমগুলি" বিশ্রী।
lalli

@ লেলি: হ্যাঁ, শব্দটি নিখুঁত নয় এবং সরবরাহকৃত সমাধানগুলির মধ্যে কোনওটিই নিখুঁত নয়। আমি কেবল এটিকে লেবেল এবং মানের মতো ফর্মের মধ্যে রাখার পরামর্শ দিচ্ছি। আপনি যুক্ত করার বিষয়ে ঠিক বলেছেন Number(আমার বাচ্চাকে ঘুমাতে দুলানোর সময় আমি উত্তর দিয়েছিলাম)।
ড্যানোসরে

4

আমার সাধারণ পদ্ধতিটি হ'ল এইভাবে একটি "একক / বহুবচন ফাংশন" লেখার জন্য:

public static string noun(int n, string single, string plural)
{
  if (n==1)
    return single;
  else
    return plural;
}

তারপরে বার্তার মূল অংশে আমি এই ফাংশনটি কল করি:

string message="Congratulations! You have won "+n+" "+noun(n, "foobar", "foobars")+"!";

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

অবশ্যই এটি কেবল ইংরেজির জন্যই কাজ করে, তবে ধারণাটি আরও জটিল শেষগুলির সাথে সহজেই এক্সটেনসিবল।

আমার কাছে এমনটি ঘটে যে আপনি সহজ কেসের জন্য শেষ প্যারামিটারটি optionচ্ছিক করতে পারেন:

public static string noun(int n, string single, string plural=null)
{
  if (n==1)
    return single;
  else if (plural==null)
    return single+"s";
  else
    return plural;
}

1
আমি আপনার শেষ অংশটি পছন্দ করি যেখানে আপনি বিশেষ্যটি বহুবচন করার জন্য একটি এস যুক্ত করার ডিফল্ট ক্রিয়াকলাপের ক্ষেত্রে কোডটি "অস্বচ্ছল" করতে একটি ডিফল্ট মান ব্যবহার করেন।
vyvind ব্রাথিন

4

আন্তর্জাতিকীকরণ

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

আপনি জিএনইউ গেটেক্সটেক্সের ngettextফাংশনটি ব্যবহার করতে পারেন এবং আপনার উত্স কোডে দুটি ইংরেজি বার্তা সরবরাহ করতে পারেন । গেটেক্সটেক্স অন্যান্য ভাষায় অনুবাদ করলে অন্যান্য (সম্ভাব্য আরও) বার্তাগুলি থেকে চয়ন করার জন্য অবকাঠামো সরবরাহ করবে। জিএনইউ গেটেক্সটেক্সটের বহুবচন সমর্থন সম্পর্কে সম্পূর্ণ বিবরণের জন্য http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html দেখুন ।

জিএনইউ গেটেক্সট এলজিপিএল এর অধীনে। গেটেক্সটেক্সের সি # বন্দরে ngettextনামকরণ করা GettextResourceManager.GetPluralStringহয়েছে।

(যদি আপনার স্থানীয়করণ সহায়তার প্রয়োজন হয় না এবং এখনই গেটেক্সট ব্যবহার করতে চান না, তবে আপনার নিজের ফাংশনটি লিখুন যা এটি ইংরেজির জন্য করে এবং এতে দুটি পূর্ণ বার্তা প্রেরণ করুন , যদি আপনার পরে l10n দরকার হয় তবে আপনি এটি করতে পারেন) একটি একক ফাংশন পুনরায় লিখে যোগ করুন।)


3

কিভাবে সম্পর্কে লিখুন ফাংশন

string GetOutputMessage(int count, string oneItemMsg, string multiItemMsg)
{
 return string.Format("{0} {1}", count, count > 1 ? multiItemMsg : oneItemMsg);
}

.. এবং যখনই আপনার প্রয়োজন হবে এটি ব্যবহার করবেন?

string message = "You have selected " + GetOutputMessage(noofitemsselected,"item","items") + ". Are you sure you want to delete it/them?";

3
আপনি কি মনে করেন না সেই করেনি আপনি লোল, আপনি তা বৃদ্ধি পায় বাছা করার জন্য একটি ফাংশন আছে বা না বাক্য তারপর আপনি "এটা / তাদের" প্রান্তে তোমার একটি করা যেতে জন্য
Barkermn01

এই ফাংশনে পুরো বাক্যটির জন্য আপনার কেবল দুটি বার্তা পাঠানো উচিত।
কেন ব্লুম

এটি কেবল একটি উদাহরণ ছিল। আমি বুঝতে পারি পুরো বাক্য প্রেরণের বৈকল্পিকটি আরও সঠিক।
পাভেল মোর্শেয়্যুক

3

প্রথম সমস্যা জন্য, আমি বহুবচনাত্মক বলতে চাচ্ছি, আপনি ব্যবহার করতে পারেন Inflector

এবং দ্বিতীয়টির জন্য, আপনি টোপ্রনাউনস্ট্রিংয়ের মতো একটি নামের সাথে একটি স্ট্রিং প্রতিনিধিত্ব এক্সটেনশন ব্যবহার করতে পারেন।


3

গতকাল আমাদের দলের একজন সদস্য আমাকে এই একই প্রশ্নটি করেছিল।

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

আমি দ্রুত কিছু একসাথে রেখেছি এবং এটি কোনওভাবেই নিখুঁত নয় তবে এটি কার্যকর হতে পারে বা কিছু আলোচনা / বিকাশ শুরু করে।

এই কোডটি 3 টি বার্তা থাকতে পারে এই ধারণার ভিত্তিতে তৈরি। শূন্য আইটেমগুলির জন্য একটি, একটি আইটেমের জন্য একটি এবং একাধিক আইটেমের জন্য যা নিম্নলিখিত কাঠামো অনুসরণ করে:

সিঙ্গেলপ্রপার্টিনেম
সিঙ্গলপ্রোপার্টিনেম_জিরো
সিঙ্গলপ্রোপার্টিনেম_প্লুরাল

রিসোর্স ক্লাসটি নকল করার জন্য পরীক্ষার জন্য আমি একটি অভ্যন্তরীণ ক্লাস তৈরি করেছি। আমি আসল রিসোর্স ফাইলটি ব্যবহার করে এখনও এটি পরীক্ষা করি নি তাই এখনও আমি সম্পূর্ণ ফলাফল দেখতে পাচ্ছি না।

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

    public static string GetMessage<T>(int count, string resourceSingularName, T resourceType) where T : Type
{
    var resourcePluralName = resourceSingularName + "_Plural";
    var resourceZeroName = resourceSingularName + "_Zero";
    string resource = string.Empty;
    if(count == 0)
    {
        resource = resourceZeroName;
    }
    else{
        resource = (count <= 1)? resourceSingularName : resourcePluralName;
    }
    var x = resourceType.GetProperty(resource).GetValue(Activator.CreateInstance(resourceType),null);

    return x.ToString();
}

পরীক্ষার সংস্থান শ্রেণি:

internal class TestMessenger
{
    public string Tester{get{
    return "Hello World of one";}}
    public string Tester_Zero{get{
    return "Hello no world";}}
    public string Tester_Plural{get{
    return "Hello Worlds";}}
}

এবং আমার দ্রুত সম্পাদন পদ্ধতি

void Main()
{
    var message = GetMessage(56, "Tester",typeof(TestMessenger));
    message.Dump();
}

আপনি যদি এটি সত্যিই সম্পূর্ণ হতে চান তবে singlePropertyName_Allএটিকে আরও সুস্পষ্ট করার জন্য আপনার বার্তাও যুক্ত করা উচিত ।
ড্যানোসরে

2

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


2

আপনি আরও জেনেরিক বার্তায় যেতে পারেন যেমন 'আপনি কি নির্বাচিত আইটেমগুলি মুছে ফেলার বিষয়ে নিশ্চিত?'


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

2

আপনি কতটা সুন্দর বার্তা পেতে চান তার উপরে আমি নির্ভর করি। সবচেয়ে সহজ থেকে কঠিন:

  1. বহুবচন রোধ করতে আপনার ত্রুটি বার্তাটি পুনরায় লিখুন। আপনার ব্যবহারকারীর পক্ষে ততটা সুন্দর নয়, তবে দ্রুত।

  2. আরও সাধারণ ভাষা ব্যবহার করুন তবে এখনও সংখ্যা (গুলি) অন্তর্ভুক্ত করুন।

  3. একটি "বহুবচন" এবং সূচক সিস্টেম আলা রেলগুলি ব্যবহার করুন, যাতে আপনি বলতে পারেন pluralize(5,'bunch')এবং পান 5 bunches। এর জন্য ਰੇਲগুলি একটি ভাল প্যাটার্ন রয়েছে।

  4. আন্তর্জাতিকীকরণের জন্য আপনার জাভা কী সরবরাহ করে তা দেখতে হবে। এটি 2 বা 3 আইটেমগুলির সাথে বিভিন্ন ধরণের বিশেষণগুলির সহ আরও বিভিন্ন ভাষার সমর্থন করবে। "এস" সমাধানটি খুব ইংরাজিক কেন্দ্রিক।

আপনি কোন বিকল্পটির সাথে যাচ্ছেন তা আপনার পণ্য লক্ষ্যগুলির উপর নির্ভর করে। - এনডিপি


2

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


(ঞ / ট)


+1: এখানে ভিতরে কিছু রসিকতা দেখতেও ভাল। আপনি যদি মজা করছেন তবুও আমি আপনার অন্তর্নিহিত বিষয়টি বুঝতে পারি। বছরগুলিতে তৈরি অনেকগুলি প্রোগ্রামের অত্যন্ত খারাপ বার্তা রয়েছে। সাধারণত যেহেতু তারা কোনও সাধারণ ব্যবহারকারীর জন্য বুঝতে প্রযুক্তিগত পথে আসে।
vyvind ব্রাথিন

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

2

ওয়ারক্রাফ্ট ওয়ার্ল্ডে এটি করা যেমন হয়েছে:

BILLING_NAG_WARNING = "Your play time expires in %d |4minute:minutes;";


0

আমি উল্লেখ না করে দেখেছি এমন একটি বিকল্প হ'ল বিকল্প / সিলেক্ট ট্যাগের ব্যবহার (উদাহরণস্বরূপ "আপনি" squ 0} স্কোয়াশ করতে চলেছেন [? আমি ({0} = 1): / ক্যাকটাস / ক্যাকটি /] "। (অন্য কথায়, একটি বিন্যাসের মতো অভিব্যক্তিটি আর্গুমেন্ট শূন্য, পূর্ণসংখ্যা হিসাবে নেওয়া হিসাবে সমান 1 এর উপর ভিত্তি করে প্রতিস্থাপন নির্দিষ্ট করে) আমি আগের দিনগুলিতে এই জাতীয় ট্যাগ ব্যবহার করেছি; তাদের জন্য নেট। স্ট্যান্ডার্ড, না আমি তাদের ফর্ম্যাট করার সর্বোত্তম উপায় জানি না।


0

আমি বাক্স থেকে এক মিনিটের জন্য ভাবব, এখানে দেওয়া সমস্ত পরামর্শ হ'ল হয় বহুবচনকরণ (এবং 1 টিরও বেশি বহুবচনকরণ, লিঙ্গ ইত্যাদি সম্পর্কে উদ্বিগ্ন) বা একেবারেই ব্যবহার না করে একটি সুন্দর পূর্বাবস্থা প্রদান করুন।

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

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

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