public string Get(string id) { // double reflection in GetIdentifier, should be replaced by something better var intId = _applicationContext.Resources.GetIdentifier(AndroidResourceNameEncoder.Encode(id), "string", _applicationContext.PackageName); if (intId != 0) { return(_applicationContext.Resources.GetString(intId)); } return("[" + id + "]"); }
public static string?Convert(ResourceCandidate resourceCandidate, string defaultLanguage) { try { ValidatePlatform(resourceCandidate); var language = GetLanguage(resourceCandidate.GetQualifierValue("language"), defaultLanguage); var dpi = GetDpi(resourceCandidate.GetQualifierValue("scale")); var fileName = AndroidResourceNameEncoder.Encode(Path.GetFileNameWithoutExtension(resourceCandidate.LogicalPath)) + Path.GetExtension(resourceCandidate.LogicalPath); return(Path.Combine($"drawable{language}{dpi}", fileName)); } catch (Exception ex) { ex.Log().Info($"Couldn't convert {resourceCandidate.ValueAsString} to an Android resource path.", ex); return(null); } }
public static void Write(Dictionary <string, string> resources, string path, string comment = null) { Directory.CreateDirectory(Path.GetDirectoryName(path)); var document = new XDocument( new XDeclaration("1.0", "utf-8", null), new XElement("resources", resources.Select(resource => new XElement("string", new XAttribute("formatted", "false"), // allows special characters (%, $, etc.) new XAttribute("name", AndroidResourceNameEncoder.Encode(resource.Key)), Sanitize(resource.Value) ) )) ); comment.Maybe(c => document.AddFirst(new XComment(c))); document.Save(path); }
public void When_Encode(string input, string expected) { Assert.AreEqual(expected, AndroidResourceNameEncoder.Encode(input)); }