示例#1
0
        static private void JsonToProtocol()
        {
            var JsonFileName     = @"C:\projects\projects\talestra\csharp\TalesOfVesperiaUtils\TestInput\tov.json";
            var ProtocolFileName = @"C:\projects\projects\talestra\csharp\TalesOfVesperiaUtils\TestInput\tov.protocol";

            /*
             * Console.WriteLine("[1]");
             * var Items = JsonTranslations.ReadAll(File.OpenRead()).ToArray();
             * foreach (var Entry in Items)
             * {
             *      //Console.WriteLine(Entry.texts["es"][0]);
             * }
             */

            Console.WriteLine("[1]");

            /*
             * JsonTranslations.JsonToProtocolBuffer(JsonFileName, ProtocolFileName");
             */
            var List = JsonTranslations.ReadProto(File.OpenRead(ProtocolFileName));

            foreach (var Entry in List.Items)
            {
                foreach (var Text in Entry.texts.es)
                {
                    var Messages = PitfallDetector.Detect(Text);
                    if (Messages.Count > 0)
                    {
                        Console.WriteLine(Text);
                        Console.WriteLine(JsonConvert.SerializeObject(Messages));
                    }
                }
            }
            //List.Items.

            Console.WriteLine("[2]");
            //JsonTranslations.WriteProto(File.OpenWrite("test2.bin"), List.Items);

            Console.WriteLine("[3]");
        }
示例#2
0
        public static ActionResult HandleRequest(Gettext gettext = null)
        {
            string js;

            using (var jsStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("GettextMvcLib.JavaScript.gettext.js"))
            using (var sr = new StreamReader(jsStream))
            {
                js = sr.ReadToEnd();
            }

            if (gettext == null)
            {
                var g = GettextMvcUtils.GetGettext();
                gettext = g as Gettext;
            }

            var jsonTr = "";

            if (gettext != null)
            {
                var jsTranslations = gettext.Catalog.Translations.Where(x =>
                                                                       {
                                                                           var c = x.Comment.String;
                                                                           if (string.IsNullOrWhiteSpace(c)) return false;
                                                                           return c.Contains(".js");
                                                                       }).ToList();

                var j = new JsonTranslations();

                if (jsTranslations.Count > 0)
                {
                    foreach (var jsTranslation in jsTranslations)
                    {
                        var t = new JsonTranslations.Translation();
                        t.P = jsTranslation.MessageIdPlural.String;

                        t.T = jsTranslation.MessageTranslations.OrderBy(x => x.Index).Select(x => x.Message.String).ToArray();

                        j.Translations.Add(jsTranslation.MessageId.String, t);
                    }
                }

                var ss = new JavaScriptSerializer();
                jsonTr = ss.Serialize(j);

                if (!string.IsNullOrWhiteSpace(jsonTr))
                {
                    string jsRepl = "__gettext_translations = " + jsonTr + ";\n";

                    if (gettext.Catalog.PluralExpression != null)
                    {
                        jsRepl += string.Format("__gettext_plural_func = function(n) {{ return {0} ; }};\n", gettext.Catalog.PluralExpression.ToPrint());
                    }

                    js = js.Replace("/* == TRANSLATION == */", jsRepl);
                }
            }

            return new ContentResult
                       {
                           Content = js,
                           ContentEncoding = Encoding.UTF8,
                           ContentType = "text/javascript"
                       };
        }