using UnityEditor; using UnityEngine; using Crowdin.Plugin.Models; using Crowdin.Plugin.Server_API.Helpers; namespace Crowdin.Editor.SendToServer { using Plugin.Helpers.PluginLocalization; using Plugin.Helpers.UnityLocalization; using Plugin.Operations; public class PushAssetTranslationsToCrowdin : BasePopupEditor { [MenuItem("Tools/Crowdin/Push asset translations to Crowdin", false, 94)] private static void OpenPopup() { InitPopup( LocalizationHelper.GetLocalStringByKey(LocalKeys.push_assets_translations_popup_title) ); } private TableSelector tableSelector; protected override void OnEnable() { base.OnEnable(); tableSelector = TableSelector.CreateForAssetTables(); } private void OnGUI() { if (!isBusy) { tableSelector.DrawLayout(); GUILayout.Space(10); if (GUILayout.Button( LocalizationHelper.GetLocalStringByKey(LocalKeys.push_assets_translations_popup_title))) { if (!IsProjectSelected()) { return; } if (SettingsHelper.GetProjectType() is ProjectType.StringBased) { DialogUtility.NoAssetActionsInStringBasedProject(); return; } if (!UnityLocalizationHelper.IsHavePluginAssetsTables()) { status.Clear(); status.AppendLine(LocalizationHelper.GetLocalStringByKey(LocalKeys.no_asset_tables)); return; } if (tableSelector.NoTablesAreSelected()) { DialogUtility.NoTablesAreSelected(); return; } tableSelector.SaveSettings(); // Unlike string translations, asset translations are never auto-approved and // this popup exposes no toggle for it. var options = new PushTranslationsOptions( tableSelector.ResolveTables(), BranchId: null, UpdateStrings: false, CleanupMode: false, AutoApprove: false); RunOperation( (progress, cancellationToken) => PushAssetTranslations.RunAsync(options, progress, cancellationToken), result => { status.AppendLine(LocalizationHelper.GetLocalStringByKey( LocalKeys.send_translations_finished, result.SentTranslations.ToString())); }); } } OnGUIStatusLabel(); } protected override void OnDisable() { base.OnDisable(); tableSelector?.Dispose(); } } }