الحصول على جميع الثقافات معتمد من جمعية الأقمار الصناعية

StackOverflow https://stackoverflow.com/questions/217968

سؤال

وأنا باستخدام التجميع القمر الصناعي لاحتواء كافة الموارد توطين في C # التطبيق.

وماذا أحتاج إلى القيام به هو إنشاء قائمة في واجهة المستخدم الرسومية مع جميع اللغات المتوفرة موجود للتطبيق. هل هناك أي طريقة للحصول على معلومات حيوي؟

هل كانت مفيدة؟

المحلول

وهذه الدالة تقوم بإرجاع مجموعة من كافة الثقافات المثبتة في المجلد App_GlobalResources - تغيير مسار البحث وفقا لاحتياجاتك. للثقافة ثابتة فإنها ترجع "لصناعة السيارات".

public static string[] GetInstalledCultures()
{
    List<string> cultures = new List<string>();
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), \\Change folder to search in if needed.
        "*.resx", SearchOption.TopDirectoryOnly))
    {
        string name = file.Split('\\').Last();
        name = name.Split('.')[1];

        cultures.Add(name != "resx" ? name : "auto"); \\Change "auto" to something else like "en-US" if needed.
    }
    return cultures.ToArray();
}

ويمكنك أيضا استخدام هذا واحد لمزيد من الوظائف الحصول على الحالات CultureInfo الكامل:

public static CultureInfo[] GetInstalledCultures()
{
    List<CultureInfo> cultures = new List<CultureInfo>();
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), "*.resx", SearchOption.TopDirectoryOnly))
    {
        string name = file.Split('\\').Last();
        name = name.Split('.')[1];

     string culture = name != "resx" ? name : "en-US";
     cultures.Add(new CultureInfo(culture));
    }
    return cultures.ToArray();
}

نصائح أخرى

كل جمعية الأقمار الصناعية للغة معينة يدعى نفسها ولكن يكمن في مجلد فرعي اسمه بعد ثقافة معينة على سبيل المثال الاب او الاب-CA.
ربما يمكنك استخدام هذه الحقيقة ومسح التسلسل الهرمي للمجلد لبناء تلك القائمة بشكل حيوي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top