public LocalizeFileEditorPanel(ILocalizeFile file) { InitializeComponent(); _file = file; LoadFromFile(); }
public ILocalizeFile LoadFileFromData(string data, string extension) { ILocalizeFile file = null; file = _fileLoadFunctions[extension](data); if (file == null) { throw new IOException("ファイルが読み込めませんでした"); } _files.Add(file.CultureInfo, file); return(file); }
public ILocalizeFile LoadFile(string filePath, string extension) { ILocalizeFile file = null; string data = File.ReadAllText(filePath, Encoding.UTF8); file = _fileLoadFunctions[extension](data); if (file == null) { throw new IOException("ファイルが読み込めませんでした"); } _files.Add(file.CultureInfo, file); return(file); }
public static string Generate(CodeGenerateOptions options = null, LocalizationManager manager = null) { if (options == null) { options = new CodeGenerateOptions(); } if (manager == null) { manager = LocalizationManager.Instance; } if (manager == null) { throw new InvalidOperationException("LocalizationManagerが初期化されていません。"); } ILocalizeFile file = manager.GetFile(); var _ = typeof(Microsoft.CodeAnalysis.CSharp.Formatting.CSharpFormattingOptions); Workspace workspace = new AdhocWorkspace(); SyntaxGenerator generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp); List <SyntaxNode> nodes = new List <SyntaxNode>(); string[] imports = new[] { "System" }.Concat(options.AdditionalUsing).ToArray(); foreach (string ns in imports) { nodes.Add(generator.NamespaceImportDeclaration(ns)); } List <SyntaxNode> memberNodes = new List <SyntaxNode>(); if (options.GenerateMemberMode == GenerateMemberMode.ExtensionMethod) { foreach (KeyValuePair <string, ILocalizeContent <object> > pair in file) { string varName = $"{(options.UseFirstAtChar ? "@" : string.Empty)}{InvalidKeyReplace(pair.Key)}"; if (options.TypeAccessMode == TypeAccessMode.Default) { memberNodes.Add(generator.MethodDeclaration(varName, new[] { SyntaxFactory.Parameter(SyntaxFactory.Identifier("value")) .WithType(GetTypeSyntax(options.ExtensionType)) .WithModifiers(SyntaxTokenList.Create(SyntaxFactory.Token(SyntaxKind.ThisKeyword))) }, null, GetTypeSyntax(pair.Value.GetType()), Accessibility.Public, DeclarationModifiers.Static, new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"]")) })); } else if (options.TypeAccessMode == TypeAccessMode.QuickAccess) { memberNodes.Add(generator.MethodDeclaration(varName, new[] { SyntaxFactory.Parameter(SyntaxFactory.Identifier("value")) .WithType(GetTypeSyntax(options.ExtensionType)) .WithModifiers(SyntaxTokenList.Create(SyntaxFactory.Token(SyntaxKind.ThisKeyword))) }, null, GetTypeSyntax(pair.Value.Content.GetType()), Accessibility.Public, DeclarationModifiers.Static, new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"].Content")) })); } else if (options.TypeAccessMode == TypeAccessMode.Dynamic) { memberNodes.Add(generator.MethodDeclaration(varName, new[] { SyntaxFactory.Parameter(SyntaxFactory.Identifier("value")) .WithType(GetTypeSyntax(options.ExtensionType)) .WithModifiers(SyntaxTokenList.Create(SyntaxFactory.Token(SyntaxKind.ThisKeyword))) }, null, GetTypeSyntax(typeof(ILocalizeContent <object>)), Accessibility.Public, DeclarationModifiers.Static, new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"]")) })); } } } else if (options.GenerateMemberMode == GenerateMemberMode.Property) { foreach (KeyValuePair <string, ILocalizeContent <object> > pair in file) { string varName = $"{(options.UseFirstAtChar ? "@" : string.Empty)}{InvalidKeyReplace(pair.Key)}"; if (options.TypeAccessMode == TypeAccessMode.Default) { memberNodes.Add(generator.PropertyDeclaration(varName, GetTypeSyntax(pair.Value.GetType()), Accessibility.Public, DeclarationModifiers.Static.WithIsReadOnly(true), new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"]")) })); } else if (options.TypeAccessMode == TypeAccessMode.QuickAccess) { memberNodes.Add(generator.PropertyDeclaration(varName, GetTypeSyntax(pair.Value.Content.GetType()), Accessibility.Public, DeclarationModifiers.Static.WithIsReadOnly(true), new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"].Content")) })); } else if (options.TypeAccessMode == TypeAccessMode.Dynamic) { memberNodes.Add(generator.PropertyDeclaration(varName, GetTypeSyntax(typeof(ILocalizeContent <object>)), Accessibility.Public, DeclarationModifiers.Static.WithIsReadOnly(true), new[] { generator.ReturnStatement( SyntaxFactory.ParseExpression( $"LocalizationManager.Instance.GetFile()[\"{pair.Key}\"]")) })); } } } SyntaxNode classNode = generator.ClassDeclaration(options.ClassName, accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Static, members: memberNodes); SyntaxNode namespaceNode = generator.NamespaceDeclaration(options.Namespace, classNode); nodes.Add(namespaceNode); return(generator.CompilationUnit(nodes).NormalizeWhitespace().ToFullString()); }