/// <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); } } }
/// <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); } } }