In order to solve this issue I have created a couple of wrappers based on the URL. The idea is simple, I use a set of constants to store the “internal names” of the lists and always retrieve them using this constants. So far it has worked fine.
/// <summary> /// Returns null if the list is not found /// </summary> public static SPList GetListByInternalName(this SPListCollection Lists, string InternalName) { if (string.IsNullOrEmpty(InternalName)) return null; Guid ListGuid = Lists.GetListIdByInternalName(InternalName); if (ListGuid != Guid.Empty) return Lists[ListGuid]; return null; } /// <summary> /// Returns the UIDC of the list /// </summary> static Guid GetListIdByInternalName(this SPListCollection Lists, string InternalName) { if (string.IsNullOrEmpty(InternalName)) return Guid.Empty; foreach (SPList list in Lists) if (list.GetInternalName().ToLower() == InternalName.ToLower()) return list.ID; return Guid.Empty; } /// <summary> /// Gets the Url of the list. That's what we consider its internal name /// </summary> public static string GetInternalName(this SPList list) { string Url = list.RootFolder.ServerRelativeUrl; string[] split = Url.Split('/'); return split[split.Length - 1]; }
After this the display name of the list is not relevant any more and localization is simple
No comments:
Post a Comment