Example #1
0
        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;
 }
Example #3
0
 public TranslationKeysOperations(LocalizationEditorWindow localizationEditorWindow)
 {
     _localizationEditorWindow = localizationEditorWindow;
 }