public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.PropertyField(targetComponent);

            Localize.TargetComponent target = (Localize.TargetComponent)targetComponent.enumValueIndex;

            switch (target)
            {
            case Localize.TargetComponent.RTLTextMeshPro:
                EditorGUILayout.PropertyField(localizedString, new GUIContent("Key"), true);
                EditorGUILayout.PropertyField(outline, new GUIContent("Outline"), true);

                EditorGUILayout.PropertyField(fixedFontAsset, new GUIContent("Fixed FontAsset"), true);
                if (TargetLocalize.FixedFontAsset)
                {
                    EditorGUILayout.PropertyField(fixedFontAssetDetails, new GUIContent("Fixed FontAsset Details"), true);
                }

                EditorGUILayout.PropertyField(isContainsAtSign, new GUIContent("Contains AtSign(@)"), true);
                break;

            case Localize.TargetComponent.AudioSource:
                EditorGUILayout.PropertyField(audioClips, new GUIContent("AudioClips"), false);
                ShowArrayProperty(audioClips);
                break;

            case Localize.TargetComponent.Image:
                EditorGUILayout.PropertyField(sprites, new GUIContent("Sprites"), false);
                ShowArrayProperty(sprites);
                break;

            case Localize.TargetComponent.GridLayoutGroup:
                EditorGUILayout.PropertyField(gridLayoutGroupProperties, new GUIContent("GridLayoutGroup Properties"), false);
                ShowArrayPropertyForCustomClass(gridLayoutGroupProperties);
                break;

            case Localize.TargetComponent.HorizontalOrVerticalLayoutGroup:
                EditorGUILayout.PropertyField(horizontalOrVerticalLayoutGroupProperties, new GUIContent("HorizontalOrVerticalLayoutGroup Properties"), false);
                ShowArrayPropertyForCustomClass(horizontalOrVerticalLayoutGroupProperties);
                break;

            case Localize.TargetComponent.RectTransform:
                EditorGUILayout.PropertyField(rectTransformProperties, new GUIContent("RectTransform Properties"), false);
                ShowButtonsForArrayProperty(rectTransformProperties);
                break;
            }

            foreach (LocalizedLanguage language in System.Enum.GetValues(typeof(LocalizedLanguage)))
            {
                if (GUILayout.Button(language.ToString()))
                {
                    TargetLocalize.ApplyLocalization((int)language, true);
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        EditorGUILayout.PropertyField(targetComponent);

        Localize.TargetComponent target = (Localize.TargetComponent)targetComponent.enumValueIndex;

        switch (target)
        {
        case Localize.TargetComponent.AudioSource:
            EditorGUILayout.PropertyField(audioClips, new GUIContent("AudioClips:"), true);
            ShowArrayProperty(audioClips);
            break;

        case Localize.TargetComponent.Image:
            EditorGUILayout.PropertyField(sprites, new GUIContent("Sprites:"), true);
            ShowArrayProperty(sprites);
            break;

        case Localize.TargetComponent.RTLText:
            EditorGUILayout.PropertyField(localizedString, new GUIContent("Key"), true);
            EditorGUILayout.PropertyField(outline, new GUIContent("Outline"), true);
            EditorGUILayout.PropertyField(fixedFontAsset, new GUIContent("FixedFontAsset?"), true);
            break;

        case Localize.TargetComponent.Font:
            EditorGUILayout.PropertyField(fonts, new GUIContent("Fonts:"), true);
            ShowArrayProperty(fonts);
            break;

        case Localize.TargetComponent.FontAsset:
            EditorGUILayout.PropertyField(fontAssets, new GUIContent("FontAssets:"), true);
            ShowArrayProperty(fontAssets);
            break;

        case Localize.TargetComponent.GridLayoutGroup:
            EditorGUILayout.PropertyField(startCorner, new GUIContent("StartCorner:"), true);
            break;

        case Localize.TargetComponent.Position2D:
            EditorGUILayout.PropertyField(positions, new GUIContent("2D Positions:"), true);
            ShowArrayProperty(positions);
            break;
        }

        foreach (LocalizationManager.LocalizedLanguage language in System.Enum.GetValues(typeof(LocalizationManager.LocalizedLanguage)))
        {
            if (GUILayout.Button(language.ToString()))
            {
                TargetLocalize.ApplyLocalization((int)language, true);
            }
        }

        serializedObject.ApplyModifiedProperties();
    }