示例#1
0
        /// <summary>
        /// Reads any translations stored in the annotations of the current instance of an ITranslatableObject,
        /// and applies them to the model culture.
        /// </summary>
        /// <param name="obj"></param>
        public static void LoadTranslations(this IInternalTranslatableObject obj, bool includeChildren = false)
        {
            var tn = obj.GetAnnotation(AnnotationHelper.ANN_NAMES);

            if (tn != null)
            {
                obj.TranslatedNames.CopyFrom(DeserializeTranslations(tn));
                obj.RemoveAnnotation(AnnotationHelper.ANN_NAMES, false);
            }

            var td = obj.GetAnnotation(AnnotationHelper.ANN_DESCRIPTIONS);

            if (td != null)
            {
                obj.TranslatedDescriptions.CopyFrom(DeserializeTranslations(td));
                obj.RemoveAnnotation(AnnotationHelper.ANN_DESCRIPTIONS, false);
            }

            var tdf = obj.GetAnnotation(AnnotationHelper.ANN_DISPLAYFOLDERS);

            if (tdf != null && obj is IFolderObject)
            {
                (obj as IFolderObject).TranslatedDisplayFolders.CopyFrom(DeserializeTranslations(tdf));
                obj.RemoveAnnotation(AnnotationHelper.ANN_DISPLAYFOLDERS, false);
            }

            if (includeChildren && obj is ITabularObjectContainer)
            {
                foreach (var child in (obj as ITabularObjectContainer).GetChildren().OfType <IInternalTranslatableObject>())
                {
                    child.LoadTranslations(true);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Stores all translations on the current instance of an ITranslatableObject as annotations on the object.
        /// Translations can later be retrieved using the LoadTranslations() extension method.
        /// </summary>
        /// <param name="obj"></param>
        public static void SaveTranslations(this IInternalTranslatableObject obj, bool includeChildren = false)
        {
            if (!obj.TranslatedNames.IsEmpty)
            {
                obj.SetAnnotation(AnnotationHelper.ANN_NAMES, obj.TranslatedNames.ToJson(), false);
            }
            if (!obj.TranslatedDescriptions.IsEmpty)
            {
                obj.SetAnnotation(AnnotationHelper.ANN_DESCRIPTIONS, obj.TranslatedDescriptions.ToJson(), false);
            }
            if (obj is IFolderObject && !(obj as IFolderObject).TranslatedDisplayFolders.IsEmpty)
            {
                obj.SetAnnotation(AnnotationHelper.ANN_DISPLAYFOLDERS, (obj as IFolderObject).TranslatedDisplayFolders.ToJson(), false);
            }

            if (includeChildren && obj is ITabularObjectContainer)
            {
                foreach (var child in (obj as ITabularObjectContainer).GetChildren().OfType <IInternalTranslatableObject>())
                {
                    child.SaveTranslations(true);
                }
            }
        }