示例#1
0
        public static IEnumerable <ResourceString> Generate(ResourceIdType resourceIdType, LocalizedString localizedString)
        {
            string [] translated;

            if (localizedString.HasValidTranslations)
            {
                translated = localizedString.TranslatedValues;
            }
            else
            {
                translated = new [] {
                    localizedString.UntranslatedSingularValue,
                    localizedString.UntranslatedPluralValue
                };
            }

            for (int i = 0; i < translated.Length; i++)
            {
                if (translated [i] == null ||
                    (i == 0 && String.IsNullOrWhiteSpace(localizedString.UntranslatedSingularValue)))
                {
                    continue;
                }

                yield return(new ResourceString {
                    Id = Catalog.GetResourceId(resourceIdType,
                                               localizedString.Context, localizedString.UntranslatedSingularValue,
                                               localizedString.Gender, i),
                    Untranslated = localizedString.UntranslatedSingularValue,
                    Translated = translated [i]
                });
            }
        }
示例#2
0
        public static IEnumerable<ResourceString> Generate(ResourceIdType resourceIdType, LocalizedString localizedString)
        {
            string [] translated;

            if (localizedString.HasValidTranslations) {
                translated = localizedString.TranslatedValues;
            } else {
                translated = new [] {
                    localizedString.UntranslatedSingularValue,
                    localizedString.UntranslatedPluralValue
                };
            }

            for (int i = 0; i < translated.Length; i++) {
                if (translated [i] == null ||
                    (i == 0 && String.IsNullOrWhiteSpace (localizedString.UntranslatedSingularValue))) {
                    continue;
                }

                yield return new ResourceString {
                    Id = Catalog.GetResourceId (resourceIdType,
                        localizedString.Context, localizedString.UntranslatedSingularValue,
                        localizedString.Gender, i),
                    Untranslated = localizedString.UntranslatedSingularValue,
                    Translated = translated [i]
                };
            }
        }
示例#3
0
        public static string GetResourceId(ResourceIdType resourceIdType,
                                           string context, string message, LanguageGender gender, int pluralOrder)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            var builder = new StringBuilder("Vernacular_P");

            if (!String.IsNullOrEmpty(context))
            {
                message = context + "__" + message;
            }

            builder.Append(pluralOrder);
            builder.Append('_');

            if (gender != LanguageGender.Neutral)
            {
                builder.Append(gender == LanguageGender.Masculine ? "M_" : "F_");
            }

            switch (resourceIdType)
            {
            case ResourceIdType.ComprehensibleIdentifier:
                break;

            case ResourceIdType.Base64:
                message = Convert.ToBase64String(Encoding.UTF8.GetBytes(message));
                break;

            default:
                throw new Exception("Unknown ResourceIdType");
            }

            foreach (var c in message)
            {
                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_')
                {
                    builder.Append(c);
                }
                else if (c != ' ')
                {
                    builder.Append((int)c);
                }
            }

            return(builder.ToString());
        }
示例#4
0
        public static string GetResourceId (ResourceIdType resourceIdType,
            string context, string message, LanguageGender gender, int pluralOrder)
        {
            if (message == null) {
                throw new ArgumentNullException ("message");
            }

            var builder = new StringBuilder ("Vernacular_P");

            if (!String.IsNullOrEmpty (context)) {
                message = context + "__" + message;
            }

            builder.Append (pluralOrder);
            builder.Append ('_');

            if (gender != LanguageGender.Neutral) {
                builder.Append (gender == LanguageGender.Masculine ? "M_" : "F_");
            }

            switch (resourceIdType) {
                case ResourceIdType.ComprehensibleIdentifier:
                    break;
                case ResourceIdType.Base64:
                    message = Convert.ToBase64String (Encoding.UTF8.GetBytes (message));
                    break;
                default:
                    throw new Exception ("Unknown ResourceIdType");
            }

            foreach (var c in message) {
                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_') {
                    builder.Append (c);
                } else if (c != ' ') {
                    builder.Append ((int)c);
                }
            }

            return builder.ToString ();
        }
示例#5
0
 public ResourceCatalog ()
 {
     ResourceIdType = ResourceIdType.ComprehensibleIdentifier;
 }
示例#6
0
 public ResourceCatalog()
 {
     ResourceIdType = ResourceIdType.ComprehensibleIdentifier;
 }