public async void ConstructTranslationKeysType(OperationMode mode, string targetTranslationKey, string keysFilePath, string[] catalogFilePaths) { await Task.Run(() => { var targetUnit = new CodeCompileUnit(); var translationKeysClass = new CodeTypeDeclaration(TranslationKeysGeneratedTypeName) { IsClass = true, TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed }; LocalizationEditorData.GeneratedNamespace.Types.Add(translationKeysClass); targetUnit.Namespaces.Add(LocalizationEditorData.GeneratedNamespace); //Add existing translation keys to generated field foreach (var existingTranslationKey in TranslationKeysType.GetFields().Where(f => f.FieldType == typeof(string))) { //Skip a key in order to delete it if (mode == OperationMode.Delete && existingTranslationKey.Name == LocalizationEditorWindow.FormatStringForFieldName(targetTranslationKey)) { continue; } translationKeysClass.Members.Add(new CodeMemberField { Type = new CodeTypeReference(typeof(string)), Attributes = MemberAttributes.Public | MemberAttributes.Const, Name = existingTranslationKey.Name, InitExpression = new CodePrimitiveExpression(existingTranslationKey.GetValue(existingTranslationKey)) }); } if (mode == OperationMode.Add) { //Add new translation key to generated field translationKeysClass.Members.Add(new CodeMemberField { Type = new CodeTypeReference(typeof(string)), Attributes = MemberAttributes.Public | MemberAttributes.Const, Name = LocalizationEditorWindow.FormatStringForFieldName(targetTranslationKey), InitExpression = new CodePrimitiveExpression(LocalizationEditorWindow.FormatStringForTranslationKey(targetTranslationKey)) }); } var taskList = new List <Task> { Task.Run(() => GenerateTypeFile(keysFilePath, targetUnit)) }; foreach (var catalogFilePath in catalogFilePaths) { taskList.Add(Task.Run(() => UpdateTranslationCatalogKeys(catalogFilePath, targetTranslationKey, mode))); } Task.WaitAll(taskList.ToArray()); }); _localizationEditorWindow.SetRunning(); }
public SupportedLanguagesOperations(LocalizationEditorWindow localizationEditorWindow) { _localizationEditorWindow = localizationEditorWindow; }
public TranslationKeysOperations(LocalizationEditorWindow localizationEditorWindow) { _localizationEditorWindow = localizationEditorWindow; }