সি # তে .resx ফাইল থেকে স্ট্রিংটি কীভাবে পড়বেন? আমাকে গাইডলাইন প্রেরণ করুন। ধাপে ধাপে
সি # তে .resx ফাইল থেকে স্ট্রিংটি কীভাবে পড়বেন? আমাকে গাইডলাইন প্রেরণ করুন। ধাপে ধাপে
উত্তর:
এই উদাহরণটি রিসোর্স ম্যানেজ.গেটস্ট্রিং () এর এমএসডিএন পৃষ্ঠা থেকে এসেছে :
// Create a resource manager to retrieve resources.
ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());
// Retrieve the value of the string resource named "welcome".
// The resource manager will retrieve the value of the
// localized resource using the caller's current culture setting.
String str = rm.GetString("welcome");
ResourceManagerতখনই প্রয়োজন যখন আপনি কোনও বাহ্যিক সংস্থান লোড করতে চান। <Namespace>.Propertiesপরিবর্তে ব্যবহার করুন।
ResourceManagerআপনি যদি কোনও বাহ্যিক উত্স থেকে লোড না করেন তবে প্রয়োজন হবে না ।
বেশিরভাগ জিনিসের জন্য, বলুন যে আপনি একটি প্রকল্প তৈরি করেছেন (ডিএলএল, উইনফোর্ডস, যাই হোক না কেন) আপনি কেবলমাত্র প্রকল্পের নাম স্থান, "সংস্থানগুলি" এবং সংস্থান সনাক্তকারী ব্যবহার করেন use যেমন:
একটি প্রকল্পের নাম স্থান ধরে নেওয়া: UberSoft.WidgetPro
এবং আপনার রেক্সে রয়েছে:

আপনি কেবল ব্যবহার করতে পারেন:
Ubersoft.WidgetPro.Properties.Resources.RESPONSE_SEARCH_WILFRED
এটি চেষ্টা করুন, আমার জন্য কাজ করে .. সহজ
ধরে নিন যে আপনার রিসোর্স ফাইলটির নাম "TestResource.resx", এবং আপনি তখন গতিশীলভাবে কী পাস করতে চান,
string resVal = TestResource.ResourceManager.GetString(dynamicKeyVal);
নেমস্পেস যুক্ত করুন
using System.Resources;
ResourceManagerতখনই প্রয়োজন যখন আপনি কোনও বাহ্যিক সংস্থান লোড করতে চান। <Namespace>.Propertiesপরিবর্তে ব্যবহার করুন।
.Resx ফাইলটি খুলুন এবং "অ্যাক্সেস মডিফায়ার "টিকে সর্বজনীনতে সেট করুন।
var <Variable Name> = Properties.Resources.<Resource Name>
ধরে নিলাম .resx ফাইলটি প্রকল্পের বৈশিষ্ট্যের অধীনে ভিজ্যুয়াল স্টুডিও ব্যবহার করে যুক্ত করা হয়েছে, স্ট্রিংটিতে অ্যাক্সেস করার সহজ এবং কম ত্রুটিযুক্ত প্রবণতা রয়েছে।
স্ট্রিংটি অ্যাক্সেস করা এতটা সহজ:
var resourceManager = JoshCodes.Core.Testing.Unit.Properties.Resources.ResourceManager;
var exampleXmlString = resourceManager.GetString("exampleXml");
JoshCodes.Core.Testing.Unitপ্রকল্পের ডিফল্ট নেমস্পেস দিয়ে প্রতিস্থাপন করুন ।
যদি কোনও কারণে আপনি আপনার রিসোর্স ফাইলগুলি অ্যাপ_গ্লোবাল রিসোর্সগুলিতে রাখতে না পারেন, তবে আপনি সরাসরি রেসএক্সআরসোর্স রিডার বা এক্সএমএল রিডার ব্যবহার করে রিসোর্স ফাইলগুলি খুলতে পারেন।
রেসএক্স রিসোর্স রিডার ব্যবহার করার জন্য এখানে নমুনা কোড:
public static string GetResourceString(string ResourceName, string strKey)
{
//Figure out the path to where your resource files are located.
//In this example, I'm figuring out the path to where a SharePoint feature directory is relative to a custom SharePoint layouts subdirectory.
string currentDirectory = Path.GetDirectoryName(HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"]));
string featureDirectory = Path.GetFullPath(currentDirectory + "\\..\\..\\..\\FEATURES\\FEATURENAME\\Resources");
//Look for files containing the name
List<string> resourceFileNameList = new List<string>();
DirectoryInfo resourceDir = new DirectoryInfo(featureDirectory);
var resourceFiles = resourceDir.GetFiles();
foreach (FileInfo fi in resourceFiles)
{
if (fi.Name.Length > ResourceName.Length+1 && fi.Name.ToLower().Substring(0,ResourceName.Length + 1) == ResourceName.ToLower()+".")
{
resourceFileNameList.Add(fi.Name);
}
}
if (resourceFileNameList.Count <= 0)
{ return ""; }
//Get the current culture
string strCulture = CultureInfo.CurrentCulture.Name;
string[] cultureStrings = strCulture.Split('-');
string strLanguageString = cultureStrings[0];
string strResourceFileName="";
string strDefaultFileName = resourceFileNameList[0];
foreach (string resFileName in resourceFileNameList)
{
if (resFileName.ToLower() == ResourceName.ToLower() + ".resx")
{
strDefaultFileName = resFileName;
}
if (resFileName.ToLower() == ResourceName.ToLower() + "."+strCulture.ToLower() + ".resx")
{
strResourceFileName = resFileName;
break;
}
else if (resFileName.ToLower() == ResourceName.ToLower() + "." + strLanguageString.ToLower() + ".resx")
{
strResourceFileName = resFileName;
break;
}
}
if (strResourceFileName == "")
{
strResourceFileName = strDefaultFileName;
}
//Use resx resource reader to read the file in.
//https://msdn.microsoft.com/en-us/library/system.resources.resxresourcereader.aspx
ResXResourceReader rsxr = new ResXResourceReader(featureDirectory + "\\"+ strResourceFileName);
//IDictionaryEnumerator idenumerator = rsxr.GetEnumerator();
foreach (DictionaryEntry d in rsxr)
{
if (d.Key.ToString().ToLower() == strKey.ToLower())
{
return d.Value.ToString();
}
}
return "";
}
System.Windows.Formsব্যবহারের জন্য একটি রেফারেন্স যুক্ত করতে হবে System.Resources.ResXResourceReader। এছাড়াও, আপনি এর var enumerator = rsxr.OfType<DictionaryEntry>();পরিবর্তে লিনকুইটি করতে এবং ব্যবহার করতে পারেন ।
একবার আপনি সমাধান / সমাবেশে কোনও সংস্থান (নাম: রিসোর্সনাম এবং মান: রিসোর্সভ্যালু) যুক্ত করলে প্রয়োজনীয় সংস্থানটি পেতে আপনি কেবল "প্রোপার্টি.সোর্স.সেসোসরনাম" ব্যবহার করতে পারেন।
আমি ভিজুয়াল স্টুডিওর মাধ্যমে .resx ফাইলটি যুক্ত করেছি। এটি designer.csচাইলে যে কোনও কীটির মানটি তাত্ক্ষণিকভাবে ফিরিয়ে দিতে সম্পত্তি সহ একটি ফাইল তৈরি করেছে । উদাহরণস্বরূপ, এটি ডিজাইনার ফাইল থেকে কিছু স্বয়ংক্রিয় উত্পন্ন কোড।
/// <summary>
/// Looks up a localized string similar to When creating a Commissioning change request, you must select valid Assignees, a Type, a Component, and at least one (1) affected unit..
/// </summary>
public static string MyErrorMessage {
get {
return ResourceManager.GetString("MyErrorMessage", resourceCulture);
}
}
এইভাবে, আমি সহজভাবে করতে সক্ষম হয়েছি:
string message = Errors.MyErrorMessage;
কোথায় Errorsহয় Errors.resxভিসুয়াল স্টুডিও মাধ্যমে তৈরি ফাইল এবং MyErrorMessageচাবিকাঠি।
আমি সরাসরি আমার প্রকল্পে আমার সংস্থান ফাইল যুক্ত করেছি, এবং তাই আমি রেক্স ফাইলের নাম দিয়ে ঠিক সূক্ষ্ম ভিতরে স্ট্রিংগুলি অ্যাক্সেস করতে সক্ষম হয়েছি।
উদাহরণ: রিসোর্স 1.রেক্সে, কী "রিসোর্সকি" -> স্ট্রিং "ডেটাস্ট্রিং"। স্ট্রিংটি "ডেটাস্ট্রিং" পেতে, আমি কেবল রিসোর্স 1. রিসোর্সকি রাখি।
এটি না করার কারণ থাকতে পারে যা সম্পর্কে আমি জানিনা, তবে এটি আমার পক্ষে কাজ করেছিল।
এটি করার সবচেয়ে সহজ উপায় হ'ল:
রিসোর্স ফাইল থেকে মান পাওয়ার সহজ উপায়। প্রকল্পে রিসোর্স ফাইল যুক্ত করুন। এখন আপনি যেখানে স্ট্রিংটি পেতে চান আমার ক্ষেত্রে এটি পাঠ্য ব্লক (সিলভারলাইট) ছিল was কোনও নামস্থানও যুক্ত করার দরকার নেই ts এটি আমার ক্ষেত্রে কাজ করে
txtStatus.Text = Constants.RefractionUpdateMessage;
এটি আমার পক্ষে কাজ করে। বলুন আপনার কাছে একটি স্ট্রিংস.রেক্স ফাইল রয়েছে এতে স্ট্রিং ঠিক আছে। এটি পড়তে
String varOk = My.Resources.strings.ok