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);
            }
        }
Beispiel #3
0
        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));
 }