paint-brush
সুইফটে স্থানীয়করণের বিবর্তন: স্ট্রিং থেকে স্ট্রিং ক্যাটালগ পর্যন্তদ্বারা@mniagolov
1,097 পড়া
1,097 পড়া

সুইফটে স্থানীয়করণের বিবর্তন: স্ট্রিং থেকে স্ট্রিং ক্যাটালগ পর্যন্ত

দ্বারা Maksim Niagolov8m2024/06/12
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

অ্যাপ্লিকেশানগুলিতে সহজেই স্থানীয়করণকে অন্তর্ভুক্ত করার জন্য সুইফট শক্তিশালী সরঞ্জাম সরবরাহ করে। এই নির্দেশিকাটি সুইফটে স্থানীয়করণে রূপান্তর ব্যাখ্যা করে, প্রাথমিক কৌশল থেকে সর্বশেষ টুলে বিকাশকারীদের এই ক্ষমতাগুলির সম্পূর্ণ সুবিধা নিতে সাহায্য করার জন্য। স্থানীয়করণ ব্যবহারকারীর অভিজ্ঞতা বাড়ায়, এর নাগাল প্রসারিত করে এবং আন্তর্জাতিক স্তরে সফ্টওয়্যারের সাফল্যের উপর বড় প্রভাব ফেলতে পারে।
featured image - সুইফটে স্থানীয়করণের বিবর্তন: স্ট্রিং থেকে স্ট্রিং ক্যাটালগ পর্যন্ত
Maksim Niagolov HackerNoon profile picture

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


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


স্থানীয়করণে প্রাথমিক চ্যালেঞ্জ

প্রাথমিকভাবে, যখন সুইফট প্রথম চালু করা হয়েছিল, তখন এটি অবজেক্টিভ-সি থেকে স্থানীয়করণ পরিকাঠামো উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছিল, যেটি Localizable.strings ফাইল এবং NSLocalizedString ফাংশনের চারপাশে নির্মিত হয়েছিল। এইভাবে, ডেভেলপারদের স্থানীয় স্ট্রিংগুলিকে ম্যানুয়ালি সম্পাদনা করতে হয়েছিল এবং সেগুলিকে বিভিন্ন ভাষার ফাইলগুলিতে সিঙ্ক্রোনাইজ করতে হয়েছিল, একটি প্রক্রিয়া যা ত্রুটি এবং সময়সাপেক্ষ উভয়ই প্রবণ।

Localizable.strings এর বেসিক

স্থানীয়করণযোগ্য ফাইল হল একটি সাধারণ কী-মানের জোড়া ফাইল যেখানে স্ট্রিংগুলি একটি "কী" = "মান" বিন্যাসে সংরক্ষণ করা হয়, যেখানে "কী" হল কোড শনাক্তকারী এবং "মান" হল স্থানীয়কৃত স্ট্রিং যা ব্যবহারকারী দেখতে পাবে৷ এই ফাইলটিকে প্রতিটি সমর্থিত ভাষায় সদৃশ এবং অনুবাদ করতে হবে এবং যথাযথ সংশ্লিষ্ট '.lproj' ডিরেক্টরিতে রাখতে হবে, যেমন ইংরেজি ভাষার জন্য 'en.lproj' এবং জার্মান ভাষার জন্য 'de.lproj'

একটি Localizable.strings এন্ট্রির উদাহরণ :

 "hello_world_key" = "Hello, World!";


সুইফট কোডে, এই স্ট্রিংটি এইভাবে পুনরুদ্ধার করা যেতে পারে:

 let greeting = NSLocalizedString("hello_world_key", comment: "The default greeting")


NSLocalizedString ফাংশন Localizable.strings থেকে কী ব্যবহার করে স্থানীয় বিষয়বস্তু অ্যাক্সেস করা সহজ করে তোলে।


এই ফাংশনটি একটি কী নেয়, একটি ফলব্যাক মান প্রদান করে এবং অনুবাদকদের জন্য একটি মন্তব্য রাখে। একটি মন্তব্য অফার করা অত্যন্ত গুরুত্বপূর্ণ কারণ এটি অনুবাদকদের অনুবাদের নির্ভুলতা এবং উপযুক্ততা উন্নত করার জন্য সাবটেক্সট দেয়।


উদাহরণ: দিনের সময়ের উপর ভিত্তি করে একজন ব্যবহারকারীকে শুভেচ্ছা জানানো:

 func greetingBasedOnTime() -> String { let hour = Calendar.current.component(.hour, from: Date()) let key = hour < 12 ? "good_morning_key" : "good_evening_key" return NSLocalizedString(key, comment: "Greeting based on time of day") }


সংশ্লিষ্ট Localizable.strings এর সাথে, এন্ট্রিগুলি দেখতে এইরকম:

 "good_morning_key" = "Good morning!"; "good_evening_key" = "Good evening!";


এখানে স্থানীয়করণের সাথে কিছু চ্যালেঞ্জ রয়েছে। স্ট্রিং যা আপনি সম্মুখীন হতে পারে:
1) মাপযোগ্যতা সমস্যা.

স্ট্রিংয়ের সংখ্যা বাড়ার সাথে সাথে তাদের পরিচালনা করা কঠিন হয়ে পড়ে। সময়ের সাথে সাথে একাধিক .strings ফাইল পরিচালনা করা কষ্টকর হয়ে ওঠে।


2) নকল।

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


3) প্রসঙ্গের অভাব।

যাইহোক, মন্তব্যগুলি NSLocalizedString-এ যোগ করা যেতে পারে – এমনকি যদি তারা সবসময় অনুবাদককে প্রসঙ্গটি সম্পূর্ণরূপে বুঝতে সাহায্য না করে, এর ফলে অনুবাদে ভুল হতে পারে। ডেভেলপাররা প্রায়ই তাদের সঠিকভাবে পূরণ করতে অলস হয়।

বহুবচনের জন্য stringsdict স্থানান্তর করা হচ্ছে

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


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


stringsdict ফাইল বোঝা

Stringsdict ফাইল হল একটি XML সম্পত্তির তালিকা, যা সাংখ্যিক মানের উপর নির্ভর করে স্থানীয়করণ করা স্ট্রিং তৈরি করতে ব্যবহৃত হয়। এই কার্যকারিতাটি সঠিকভাবে বহুবচন ফর্মগুলিকে প্রক্রিয়া করার উদ্দেশ্যে কারণ বিভিন্ন ভাষার বহুবচন ফর্মগুলি প্রক্রিয়া করার জন্য তাদের নিজস্ব আলাদা নিয়ম রয়েছে৷

একটি stringsdict ফাইলের গঠন :

stringsdict ফাইলের একটি নমুনায় সমস্ত স্ট্রিংগুলির এন্ট্রি রয়েছে যেগুলিকে বহুবচন করতে হবে। প্রতিটি এন্ট্রিতে একটি কী এবং একটি অভিধান থাকে যেখানে ব্যবহারকারী বিভিন্ন বহুবচন বিভাগের প্রতিনিধিত্বকারী এক বা একাধিক সাবকি সংজ্ঞায়িত করে।


 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>numberOfSongs</key> <dict> <key>NSStringLocalizedFormatKey</key> <string>%#@songs@</string> <key>songs</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>one</key> <string>One song</string> <key>other</key> <string>%d songs</string> </dict> </dict> </dict> </plist>


বহুবচনের জন্য stringsdict ব্যবহারের উদাহরণ

ধরা যাক আমাদের একটি অ্যাপ্লিকেশন আছে যা একজন ব্যবহারকারীর পড়া নিবন্ধের সংখ্যা দেখায়। স্ক্রিনে, এটি পঠিত নিবন্ধের সংখ্যার সঠিক বহুবচন ফর্ম উপস্থাপন করে একটি বার্তা দেখাতে হবে।


ইংরেজি এবং পোলিশের জন্য Localizable.stringsdict :

 <!-- English --> <key>article_count</key> <dict> <key>NSStringLocalizedFormatKey</key> <string>%#@articles@</string> <key>articles</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>one</key> <string>One article</string> <key>other</key> <string>%d articles</string> </dict> </dict> <!-- Polish --> <key>article_count</key> <dict> <key>NSStringLocalizedFormatKey</key> <string>%#@articles@</string> <key>articles</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>one</key> <string>Jeden artykuł</string> <key>few</key> <string>%d artykuły</string> <key>many</key> <string>%d artykułów</string> <key>other</key> <string>%d artykułu</string> </dict> </dict>


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


দ্রুত বাস্তবায়ন:

NSLocalizedString কল করার সময় ফাইলে সংজ্ঞায়িত কীগুলি উল্লেখ করে stringsdict এন্ট্রিগুলি কোডে ব্যবহার করা যেতে পারে।

 let count = getArticleCount() let formatString = NSLocalizedString("article_count", comment: "Count of articles read by a user") let message = String(format: formatString, count)

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


stringsdict সুবিধা

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

স্ট্রিং ক্যাটালগ সহ আধুনিক স্থানীয়করণ কৌশল

Xcode 15-এর সাথে চালু করা নতুন বৈশিষ্ট্যগুলির মধ্যে একটি হল স্ট্রিং ক্যাটালগ যা ডেভেলপারদের iOS এবং macOS অ্যাপ্লিকেশনগুলিকে আগের চেয়ে আরও সহজে স্থানীয়করণ করতে সাহায্য করবে বলে মনে করা হয়। যদিও Localizable.strings এবং stringsdict স্ট্রিংগুলি সংরক্ষণ এবং সংগঠিত করার জন্য সহায়ক সংস্থান হয়েছে, স্ট্রিং ক্যাটালগগুলি স্থানীয়কৃত স্ট্রিংগুলি পরিচালনা করার জন্য অনেক বেশি সমন্বিত এবং আরও UI বন্ধুত্বপূর্ণ।


এইগুলি হল প্রধান দিক যা স্ট্রিং ক্যাটালগগুলিতে হাইলাইট করা উচিত:

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


  • ইন-লাইন ডকুমেন্টেশন: বিকাশকারীরা সরাসরি স্ট্রিং ক্যাটালগের মধ্যে বর্ণনা এবং প্রসঙ্গ সরবরাহ করতে পারে, যা অনুবাদের স্বচ্ছতা এবং সঠিকতাকে উল্লেখযোগ্যভাবে উন্নত করে।


  • গতিশীল স্থানীয়করণ: স্ট্রিংস ক্যাটালগ গতিশীল স্থানীয়করণকে সমর্থন করে, তাই বিকাশকারীদের অ্যাপ্লিকেশন থেকে প্রস্থান না করেই স্থানীয় স্ট্রিংগুলি পরিবর্তন করার অনুমতি দেওয়া হয়, যা পরীক্ষা এবং পুনরাবৃত্তিমূলক বিকাশের জন্য আদর্শ।


  • উন্নত বহুবচন এবং অভিযোজন: এটি বহুবচন ফর্মগুলির সূক্ষ্ম নিয়ন্ত্রণ এবং UI উপাদান এবং ডিভাইসের প্রকারের উপর নির্ভর করে বৈচিত্র সহ পাঠ্য সরবরাহ করে stringsdict কিছু ত্রুটিগুলিও কাটিয়ে ওঠে।


দ্রুত বাস্তবায়ন:

ধরা যাক, একটি মেসেজিং অ্যাপ্লিকেশনে, আপনাকে ব্যবহারকারীদের তাদের অপঠিত বার্তার সংখ্যা সম্পর্কে জানাতে হবে। বিজ্ঞপ্তিটি প্রাপ্ত বার্তার সংখ্যা দেখিয়ে গতিশীল হতে হবে এবং বিষয়বস্তুর প্রকার অনুসারে সামঞ্জস্য করা উচিত।


ধাপে ধাপে সেটআপ:

  1. একটি স্ট্রিং ক্যাটালগ তৈরি করুন: আপনার প্রকল্পে একটি নতুন স্ট্রিং ক্যাটালগ যোগ করুন। এটি একটি .stringcatalog ফাইল তৈরি করবে।


  2. এন্ট্রি যোগ করুন: প্রতিটি স্ট্রিংয়ের জন্য এন্ট্রি যোগ করতে এডিটর ব্যবহার করুন যা স্থানীয়করণ করা দরকার। তারপর প্রতিটি এন্ট্রির জন্য কী, ডিফল্ট মান এবং যেকোনো বহুবচন নিয়ম বা অভিযোজিত পরামিতি নির্দিষ্ট করুন।


  3. বিষয়বস্তু স্থানীয়করণ করুন: প্রতিটি সমর্থিত ভাষার জন্য অনুবাদ প্রদান করুন, বহুবচনের জন্য বিভিন্ন ফর্ম নির্দিষ্ট করে, ডিভাইসের প্রকারের জন্য অভিযোজন ইত্যাদি।


  4. কোডে প্রয়োগ করুন: আপনার সুইফট কোডে স্থানীয়কৃত শনাক্তকারী ব্যবহার করে এই স্ট্রিংগুলি উল্লেখ করুন।


 <!-- String Catalog Entry --> <key>unread_messages_count</key> <dict> <key>NSStringLocalizedFormatKey</key> <string>%#@messages@</string> <key>messages</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>one</key> <string>You have one unread message.</string> <key>other</key> <string>You have %d unread messages.</string> </dict> </dict>


আপনি এই স্ট্রিংটি এভাবে অ্যাক্সেস করতে পারেন:

 let unreadCount = fetchUnreadMessagesCount() let message = NSLocalizedString("unread_messages_count", value: "You have \(unreadCount) unread messages.", comment: "Notify about unread messages") print(message)



স্ট্রিং ক্যাটালগের সুবিধা

  • দক্ষতা: স্থানীয়করণ ফাইলগুলি পরিচালনার জন্য প্রয়োজনীয় সময় এবং প্রচেষ্টা সংরক্ষণ করে।


  • নির্ভুলতা: উন্নয়ন পরিবেশে আরও অতিরিক্ত প্রত্যক্ষ প্রসঙ্গ প্রদান করে নির্ভুলতা উন্নত করে।


  • নমনীয়তা: স্থানীয়কৃত সামগ্রীতে রিয়েল-টাইম এবং এমনকি গতিশীল আপডেটগুলিকে সমর্থন করে, যা একটি দ্রুত বিকাশ চক্রে বিশেষভাবে কার্যকর।

চ্যালেঞ্জ

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

উপসংহার

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


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