ভারী আই 18n পদ্ধতির আসলে একটি বিকল্প রয়েছে। সমাধানটিকে ট্র 8 এন বলা হয়।
আপনার উপরের কোডটি সহজভাবে হবে:
<%= tr("You have {num || kid}", num: 1) %>
এটাই. আপনার কোড থেকে আপনার কীগুলি বের করে নেওয়ার দরকার নেই এবং এগুলিকে সংস্থান বান্ডলে বজায় রাখতে হবে না, প্রতিটি ভাষার জন্য বহুবচন বিধি প্রয়োগ করার দরকার নেই। Tr8n সমস্ত ভাষার জন্য সংখ্যার প্রসঙ্গ নিয়ম নিয়ে আসে। এটি লিঙ্গ বিধি, তালিকা বিধি এবং ভাষার ক্ষেত্রেও আসে।
উপরোক্ত অনুবাদ কীটির সম্পূর্ণ সংজ্ঞাটি আসলে এর মতো দেখাবে:
<%= tr("You have {num:number || one: kid, other: kids}", num: 1) %>
তবে যেহেতু আমরা স্থান এবং সময় বাঁচাতে চাই, সংখ্যাটি স্বয়ংক্রিয়ভাবে সংখ্যার নিয়মে ম্যাপ করা হয় এবং নিয়মের মানগুলির জন্য সমস্ত বিকল্প সরবরাহ করার দরকার নেই। Tr8n বহুবচনকারী এবং প্রতিস্থাপনকারীদের সাথে আসে যা উড়তে আপনার জন্য কাজ করবে।
রাশিয়ান ভাষায় আপনার কীটির অনুবাদটি হ'ল:
"У вас есть {num || ребенок, ребенка, детей}"
যাইহোক, আপনার অনুবাদটি ভাষাগুলিতে ভুল হতে পারে যার লিঙ্গ নির্দিষ্ট বিধি রয়েছে। উদাহরণস্বরূপ, হিব্রু ভাষায়, আপনাকে উদাহরণস্বরূপ কমপক্ষে 2 টি অনুবাদ নির্দিষ্ট করতে হবে, কারণ দেখা ব্যবহারকারীদের লিঙ্গের উপর ভিত্তি করে "আপনি" আলাদা হয়ে থাকবেন। Tr8n এটি খুব ভাল পরিচালনা করে। এখানে হিব্রু অনুবাদগুলির একটি লিখিত লিপি:
"Yesh leha yeled ahad" with {context: {viewing_user: male, num: one}}
"Yesh leha {num} yeladim" with {context: {viewing_user: male, num: other}}
"Yesh lah yeled ahad" with {context: {viewing_user: female, num: one}}
"Yesh lah {num} yeladim" with {context: {viewing_user: female, num: other}}
সুতরাং আপনার একক ইংরাজী কী, এই ক্ষেত্রে 4 টি অনুবাদ দরকার। সমস্ত অনুবাদ প্রসঙ্গে করা হয় - আপনার বাক্যটি ভাঙতে হবে না। Tr8n এর ভাষা এবং প্রসঙ্গের ভিত্তিতে একাধিক অনুবাদগুলিতে একটি কী ম্যাপ করার ব্যবস্থা আছে - সবই ফ্লাইয়ে করা।
গত এক জিনিস. আপনি যদি গণনা অংশটি সাহসী করে তোলেন? এটি সহজভাবে হবে:
<%= tr("You have [bold: {num || kid}]", num: 1, bold: "<strong>{$0}</strong>") %>
আপনি যদি আপনার "সাহসী" কে পরে নতুন করে সংজ্ঞায়িত করতে চান - এটি খুব সহজ হবে - আপনাকে আপনার সমস্ত YAML ফাইলের মধ্য দিয়ে যেতে হবে না এবং এগুলি পরিবর্তন করতে হবে না - আপনি কেবল এটি একটি জায়গায় করবেন।
আরও জানতে, দয়া করে এখানে একবার দেখুন:
https://github.com/tr8n/tr8n_rails_clientsdk
প্রকাশ: আমি Tr8n ফ্রেমওয়ার্ক এবং এর সমস্ত লাইব্রেরির বিকাশকারী এবং রক্ষণাবেক্ষণকারী।
"#{....}"
উপরের কোডে "ইন্টারপোলটার" এবং উদ্ধৃতিগুলি প্রয়োজনীয় নয়।