Exemplo n.º 1
0
        // Unloads translations.
        public void Unload()
        {
            if (Messages != null)
            {
                Expr = null;
                Messages.Clear();
                NPlurals = 0;

                Messages = null;
            }
        }
Exemplo n.º 2
0
        // Loads translations into catalog.
        // Returns true if translations were successfuly loaded.
        public bool Load()
        {
            // Already loaded.
            if (Messages != null)
            {
                return(true);
            }

            try
            {
                Parser parser = new Parser();

                string file = System.IO.Path.Combine(Path, MessagesFilename);
                using (StreamReader reader = new StreamReader(file))
                {
                    Messages = new Dictionary <string, string[]>();

                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        if (parser.ParseLine(line))
                        {
                            AddMessage(parser);
                        }
                    }
                    if (parser.ParseLine(""))
                    {
                        AddMessage(parser);
                    }

                    // Set plural forms.
                    NPlurals = parser.NPlurals;
                    Expr     = parser.Plural;

                    return(true);
                }
            }
            catch
            {
                Messages = null;
            }

            return(false);
        }
Exemplo n.º 3
0
            // Process header entry.
            private void Header()
            {
                // Ignore duplicit header.
                if (HasHeader)
                {
                    return;
                }

                HasHeader = true;

                string[] fields = Strings[0].TrimEnd().Split('\n');
                foreach (string field in fields)
                {
                    if (field.StartsWith("Plural-Forms:"))
                    {
                        string value = field.Replace(" ", "").Substring(13);
                        if (value.Length == 0) // No value.
                        {
                            return;
                        }

                        string[] assignments = value.ToLowerInvariant().TrimEnd(';').Split(';');
                        foreach (string assignment in assignments)
                        {
                            if (assignment.StartsWith("nplurals="))
                            {
                                if (!uint.TryParse(assignment.Substring(9), out NPlurals))
                                {
                                    // Invalid nplurals value.
                                    Plural = null;
                                    return;
                                }
                            }
                            else if (assignment.StartsWith("plural="))
                            {
                                try
                                {
                                    Plural = new NExpression(assignment.Substring(7));
                                }
                                catch
                                {
                                    // Invalid plural expression.
                                    NPlurals = 0;
                                    return;
                                }
                            }
                        }
                        break;
                    }
                }

                // Ignore partial Plural-Forms field (i.e. missing either nplurals or plural expression).
                if (NPlurals == 0)
                {
                    Plural = null;
                }
                if (Plural == null)
                {
                    NPlurals = 0;
                }
            }