আমি (অন্য সকলের মতো) NSLocalizedString
আমার অ্যাপ্লিকেশন স্থানীয়করণ করতে ব্যবহার করছি ।
দুর্ভাগ্যক্রমে, বেশ কয়েকটি "ত্রুটি" রয়েছে (অগত্যা এনএসলোক্যালাইজড স্ট্রিংয়েরই দোষ নয়), সহ
- এক্সকোডে স্ট্রিংয়ের জন্য কোনও অটোকম্প্লেশন নেই। এটি কেবল ত্রুটি-প্রবণই নয়, ক্লান্তিকরও কাজ করে।
- আপনি হয়ত স্ট্রিংটির নতুন সংজ্ঞা দিতে পারেন কারণ আপনি ইতিমধ্যে একটি সমমানের স্ট্রিংটি জানেন না (যেমন "দয়া করে পাসওয়ার্ড লিখুন" বনাম "প্রথমে পাসওয়ার্ড দিন")
- একইভাবে স্বতঃপূরণ-ইস্যুতে, আপনাকে মন্তব্যগুলির স্ট্রিংগুলি "মনে রাখতে হবে" / কপিপাইস্ট করতে
genstring
হবে , অন্যথায় এক স্ট্রিংয়ের জন্য একাধিক মন্তব্যে শেষ হবে genstring
ইতিমধ্যে কিছু স্ট্রিং স্থানীয়করণের পরে আপনি যদি ব্যবহার করতে চান তবে আপনার পুরাতন স্থানীয়করণটি হারাতে না পারা উচিত।- আপনার পুরো প্রকল্পটি একই স্ট্রিংগুলি ছড়িয়ে ছিটিয়ে রয়েছে। উদাহরণস্বরূপ, আপনি
NSLocalizedString(@"Abort", @"Cancel action")
সর্বত্র ব্যবহার করেছেন এবং তারপরে কোড পর্যালোচনা কোডটিকেNSLocalizedString(@"Cancel", @"Cancel action")
আরও সুসংগত করার জন্য স্ট্রিংটির নাম পরিবর্তন করতে বলে।
আমি যা করি (এবং এসও-তে কিছু অনুসন্ধানের পরে আমি অনেক লোক এটি করতে পেরেছিলাম) এর একটি পৃথক strings.h
ফাইল থাকতে হবে যেখানে আমি #define
সমস্ত স্থানীয়করণ-কোড করি। উদাহরণ স্বরূপ
// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);
এটি মূলত কোড-সমাপ্তি, ভেরিয়েবলের নামগুলি পরিবর্তনের জন্য একক জায়গা (সুতরাং আর জেনস্ট্রিংয়ের দরকার নেই) এবং অটো-রিফ্যাক্টরের একটি অনন্য কীওয়ার্ড সরবরাহ করে। যাইহোক, এটি সম্পূর্ণরূপে #define
বিবৃতিগুলির সাথে সমাপ্তির মূল্যে আসে যা সহজাতভাবে কাঠামোগত হয় না (যেমন লোকস্ট্রিং.কমন.ক্যান্সেল বা এর মতো কিছু)।
সুতরাং, এটি কিছুটা দুর্দান্ত কাজ করার সময় আমি ভাবছিলাম যে আপনারা কীভাবে আপনার প্রকল্পগুলিতে এটি করেন। এনএসলোক্যালাইজড স্ট্রিংয়ের ব্যবহারকে সহজ করার জন্য কি অন্যান্য পন্থা রয়েছে? এমনকি এখানে এমন কোনও ফ্রেমওয়ার্ক রয়েছে যা এটি ঘিরে রেখেছে?