স্থানীয়করণ বার্তা বিন্যাস

প্রতিটি আন্তর্জাতিক এক্সটেনশন বা অ্যাপের অন্তত একটি ফাইল রয়েছে যার নাম messages.json যা লোকেল-নির্দিষ্ট স্ট্রিং প্রদান করে। এই পৃষ্ঠাটি messages.json ফাইলের বিন্যাস বর্ণনা করে। কীভাবে আন্তর্জাতিকীকরণ এবং স্থানীয়করণ করা যায় সে সম্পর্কে তথ্যের জন্য, আন্তর্জাতিকীকরণ পৃষ্ঠাটি দেখুন।

ক্ষেত্রের সারাংশ

নিম্নলিখিত কোডটি messages.json এর জন্য সমর্থিত ক্ষেত্র দেখায়। শুধুমাত্র " নাম " এবং "বার্তা" ক্ষেত্র প্রয়োজন।

{
  "name": {
    "message": "Message text, with optional placeholders.",
    "description": "Translator-aimed description of the message.",
    "placeholders": {
      "placeholder_name": {
        "content": "A string to be placed within the message.",
        "example": "Translator-aimed example of the placeholder string."
      },
      ...
    }
  },
  ...
}

উদাহরণ

এখানে একটি messages.json ফাইল রয়েছে যা "prompt_for_name", "hello" এবং "bye" নামের তিনটি বার্তা সংজ্ঞায়িত করে:

{
  "prompt_for_name": {
    "message": "What's your name?",
    "description": "Ask for the user's name"
  },
  "hello": {
    "message": "Hello, $USER$",
    "description": "Greet the user",
    "placeholders": {
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  },
  "bye": {
    "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!",
    "description": "Say goodbye to the user",
    "placeholders": {
      "our_site": {
        "content": "Example.com",
      },
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  }
}

ক্ষেত্রের বিবরণ

এই বিভাগটি প্রতিটি ক্ষেত্র বর্ণনা করে যা একটি messages.json ফাইলে প্রদর্শিত হতে পারে। কিভাবে বার্তা ফাইল ব্যবহার করা হয় তার বিশদ বিবরণের জন্য-উদাহরণস্বরূপ, যখন একটি লোকেল সমস্ত বার্তাগুলিকে সংজ্ঞায়িত করে না তখন কী হয়— আন্তর্জাতিককরণ দেখুন।

নাম

আসলে, "নাম" বলে কোনো ক্ষেত্র নেই। এই ক্ষেত্রের নাম হল বার্তাটির নাম—একই নাম যা আপনি __MSG__name___ বা getMessage("_name_") এ দেখতে পাচ্ছেন।

নামটি একটি কেস-সংবেদনশীল কী যা আপনাকে স্থানীয় বার্তার পাঠ্য পুনরুদ্ধার করতে দেয়। নাম নিম্নলিখিত অক্ষর অন্তর্ভুক্ত করতে পারে:

  • AZ
  • az
  • 0-9
  • _ (আন্ডারস্কোর)
  • @
দ্রষ্টব্য: "@@" দিয়ে শুরু হওয়া নামগুলিকে সংজ্ঞায়িত করবেন না। এই নামগুলি পূর্বনির্ধারিত বার্তাগুলির জন্য সংরক্ষিত।

এখানে নামের তিনটি উদাহরণ রয়েছে, উদাহরণ বিভাগ থেকে নেওয়া হয়েছে:

"prompt_for_name": {
  ...
},
"hello": {
  ...
},
"bye": {
  ...
}

নাম ব্যবহারের আরও উদাহরণের জন্য, আন্তর্জাতিকীকরণ পৃষ্ঠাটি দেখুন।

বার্তা

অনুবাদিত বার্তা, একটি স্ট্রিং আকারে যাতে স্থানধারক থাকতে পারে। একটি নির্দিষ্ট স্থানধারক উল্লেখ করতে $_placeholder_name_$ (কেস সংবেদনশীল) ব্যবহার করুন। উদাহরণস্বরূপ, আপনি "our_site" নামের একটি স্থানধারককে $our_site$ , $OUR_SITE$ বা $oUR_sITe$ হিসাবে উল্লেখ করতে পারেন।

এখানে বার্তাগুলির তিনটি উদাহরণ রয়েছে, উদাহরণ বিভাগ থেকে নেওয়া হয়েছে:

"message": "What's your name?"
...
"message": "Hello, $USER$"
...
"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!"

স্ট্রিং-এ ডলার চিহ্ন ( $ ) বসাতে ব্যবহার করুন $$. For example, use the following code to specify the message Amount (in $):

"message": "Amount (in $$)"

যদিও প্লেসহোল্ডার যেমন $USER$ হল প্রতিস্থাপন স্ট্রিং উল্লেখ করার পছন্দের উপায় ( i18n.getMessage এর প্রতিস্থাপন প্যারামিটার ব্যবহার করে নির্দিষ্ট করা স্ট্রিং) আপনি সরাসরি বার্তার মধ্যে প্রতিস্থাপন স্ট্রিংগুলিও উল্লেখ করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত বার্তাটি getMessage() এ পাস করা প্রথম তিনটি প্রতিস্থাপন স্ট্রিংকে বোঝায়:

"message": "Params: $1, $2, $3"

এই উদাহরণ সত্ত্বেও, আমরা সুপারিশ করি যে আপনি আপনার বার্তাগুলির মধ্যে $_n_ স্ট্রিংয়ের পরিবর্তে স্থানধারক ব্যবহার করতে থাকুন৷ স্থানধারকদের ভালো পরিবর্তনশীল নাম হিসেবে ভাবুন। আপনি আপনার কোড লেখার এক সপ্তাহ পরে, আপনি সম্ভবত ভুলে যাবেন যে $1 কী বোঝায়, কিন্তু আপনি জানবেন যে আপনার স্থানধারকরা কী নির্দেশ করে। স্থানধারক এবং প্রতিস্থাপন স্ট্রিং সম্পর্কে আরও তথ্যের জন্য, স্থানধারক বিভাগটি দেখুন।

বর্ণনা

ঐচ্ছিক। বার্তার একটি বিবরণ, অনুবাদককে সর্বোত্তম সম্ভাব্য অনুবাদ করতে সাহায্য করার জন্য প্রসঙ্গ বা বিশদ বিবরণ দেওয়ার উদ্দেশ্যে।

এখানে বর্ণনার তিনটি উদাহরণ রয়েছে, উদাহরণ বিভাগ থেকে নেওয়া হয়েছে:

"description": "Ask for the user's name"
...
"description": "Greet the user"
...
"description": "Say goodbye to the user"

স্থানধারক

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

  • আপনার বার্তার একটি অংশের জন্য পাঠ্য সংজ্ঞায়িত করতে যা অনুবাদ করা উচিত নয়। উদাহরণ: HTML কোড, ট্রেডমার্ক করা নাম, ফরম্যাটিং স্পেসিফায়ার।
  • getMessage() এ পাস করা একটি প্রতিস্থাপন স্ট্রিং উল্লেখ করতে। উদাহরণ: $1

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

"সামগ্রী" আইটেমের মান হল একটি স্ট্রিং যা প্রতিস্থাপন স্ট্রিংগুলিকে উল্লেখ করতে পারে, যা i18n.getMessage পদ্ধতির প্রতিস্থাপন পরামিতি ব্যবহার করে নির্দিষ্ট করা হয়। একটি "সামগ্রী" আইটেমের মান সাধারণত "Example.com" বা "$1" এর মতো কিছু। যদি আপনি একটি প্রতিস্থাপন স্ট্রিং উল্লেখ করেন যা বিদ্যমান নেই, আপনি একটি খালি স্ট্রিং পাবেন। নিচের সারণীটি দেখায় কিভাবে $_n_ স্ট্রিংগুলি প্রতিস্থাপন পরামিতি দ্বারা নির্দিষ্ট করা স্ট্রিংগুলির সাথে মিলে যায়৷

প্রতিস্থাপন পরামিতি $1 এর মূল্য $2 এর মূল্য $3 এর মূল্য
userName userName মান "" ""
["Cira", "Kathy"] "Cira" "Kathy" ""

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

উদাহরণ বিভাগ থেকে নেওয়া নিম্নলিখিত স্নিপেটটি একটি "প্লেসহোল্ডার" আইটেম দেখায় যেটিতে "আওয়ার_সাইট" এবং "ব্যবহারকারী" নামে দুটি স্থানধারক রয়েছে। "আমাদের_সাইট" স্থানধারকের কোন "উদাহরণ" আইটেম নেই কারণ এর মান "সামগ্রী" ক্ষেত্র থেকে স্পষ্ট।

"placeholders": {
  "our_site": {
    "content": "Example.com",
  },
  "user": {
    "content": "$1",
    "example": "Cira"
  }
}