desktop editors: edit in place what App Store Connect and Play Console let the owner edit (listings per language for both stores with live counters and the check / scan rules, store details, App info, age rating, App Review, Play store settings, Data safety and App Privacy answers, promotion blocks, catalog names / prices / offers, TestFlight information, scene order); storebound edit (project.edit) saves into the config by path keeping comments and formatting, the listing files and the review contact, dry run with the diff and the checks first; Apply shows each store's dry run in the window; unsaved edits survive tab switches with undo / redo; tests/edit.test.ts, apps/desktop/tests/edits.test.ts, boot check editor case

This commit is contained in:
CRTkafa 2026-10-14 00:35:29 +08:00
parent 714352ec18
commit 3cea2af4e1
37 changed files with 3020 additions and 54 deletions

View file

@ -1545,4 +1545,182 @@ export const en = {
'deps.sdkFrom': 'Found through',
'deps.sdkNone': 'Not found. play build needs it (install Android Studio, or set ANDROID_HOME). Checked:',
'ai.dsFrom': 'from {source}',
'ed.countAria': '{n} of {limit} characters',
'ed.unsavedField': 'Unsaved change',
'ed.was': 'Saved:',
'ed.empty': '(empty)',
'ed.removed': '(removed)',
'ed.reset': 'Reset',
'ed.notSet': 'Not set',
'ed.none': 'none',
'ed.notNumber': 'Not a number',
'ed.notJson': 'Not valid JSON: {error}',
'ed.noGit': 'Not a git folder',
'ed.gitClean': 'No uncommitted changes in these files',
'ed.gitDirty': 'Uncommitted in git: {files}. storebound never commits.',
'ed.also': 'the same section also serves {codes}',
'ed.newFile': 'new file',
'ed.masked': 'Personal data: not shown.',
'ed.unsaved': '{count} unsaved changes',
'ed.unsaved_one': '1 unsaved change',
'ed.noChanges': 'No unsaved changes',
'ed.undo': 'Undo',
'ed.redo': 'Redo',
'ed.discard': 'Discard',
'ed.review': 'Review and save',
'ed.close': 'Close',
'ed.fixFirst': 'Fix the errors first',
'ed.save': 'Save to the app folder',
'ed.saved': 'Saved to the app folder',
'ed.nothingToApply': 'Nothing to change on the store.',
'ed.applyNow': 'Apply to the store',
'ed.saveFirst': 'Save your edits first: the store gets what the files hold.',
'ed.statusDraft': 'Machine draft, not reviewed',
'ed.statusTranslate': 'Not translated yet',
'ed.alsoServes': 'also {codes}',
'ed.newSection': '{lang} has no section in the listing file yet. Fill in the required fields; saving adds the section.',
'ed.keywordsHint': 'Comma separated, no spaces after commas; do not repeat words from the name or subtitle.',
'ed.whatsNewApple': 'Not allowed on the first version.',
'ed.nameHint': 'Empty: the app name from the config.',
'ed.supportUrl': 'Support URL',
'ed.marketingUrl': 'Marketing URL',
'ed.privacyUrl': 'Privacy policy URL',
'ed.termsUrl': 'Terms of Use URL',
'ed.termsHint': 'Needed with subscriptions (Apple 3.1.2).',
'ed.website': 'Website',
'ed.websiteHint': 'Google Play: the domain that serves app-ads.txt.',
'ed.contactEmail': 'Contact email',
'ed.copyright': 'Copyright',
'ed.video': 'Promo video (YouTube URL)',
'ed.videoHint': 'Public or unlisted, ads off, embeddable. Play takes no video upload.',
'ed.listingTitle': 'Edit the listing',
'ed.listingSub': 'Per language, both stores side by side. Counters use the store limits; the checks of check and scan run as you type.',
'ed.pullPlay': 'Pull from Google Play',
'ed.pullApple': 'Pull from the App Store',
'ed.pulled': 'The listing file now matches the store',
'ed.pullHint': 'Reads the live texts and shows the diff before anything in the files changes.',
'ed.pullDirty': 'You have unsaved edits: they stay pending on top of the pulled text.',
'ed.pullNote': 'Pulling rewrites the listing files after a diff; your unsaved edits stay pending on top.',
'ed.playCode': 'Play language',
'ed.rtl': 'Right-to-left language.',
'ed.noStoreForLang': '{lang} is on neither store in the config.',
'ed.detailsTitle': 'Store details',
'ed.detailsSub': 'URLs, contact and copyright, shared by both stores (storebound.config.ts).',
'ed.applyTitle': 'Apply to the stores',
'ed.applySub': 'Each store: the dry run (old to new per language) in the window, then the confirm dialog, then the real run.',
'ed.applyPlay': 'Google Play listing: preview',
'ed.applyApple': 'App Store {version}: preview',
'ed.applyNote': 'Nothing goes to review: the texts wait in the store until you send the version or changes for review.',
'ed.appleInfoTitle': 'App Store app information',
'ed.appleInfoSub': 'Categories, content rights, price, export compliance and the App Store name.',
'ed.catPrimary': 'Primary category',
'ed.catSub1': 'Game subcategory 1',
'ed.catSub2': 'Game subcategory 2',
'ed.catSecondary': 'Secondary category',
'ed.free': 'Price',
'ed.freeHint': 'Free: available in every territory and new ones.',
'ed.encHint': 'Only you can answer this: export compliance skill.',
'ed.appleName': 'App Store name',
'ed.appleNameHint': 'When the app name is taken on the App Store.',
'ed.ageTitle': 'Age rating',
'ed.ageSub': 'Every question of the App Store declaration. Not set: the "nothing" answer.',
'ed.ageDefault': 'Default: {value}',
'ed.reviewSub': 'Sign-in, notes and contact for App Review. The demo account password is never shown.',
'ed.notesHint': 'App Store Connect takes at most {max} bytes.',
'ed.signInSteps': 'Sign-in steps for reviewers',
'ed.contact_firstName': 'Contact first name',
'ed.contact_lastName': 'Contact last name',
'ed.contact_phone': 'Contact phone',
'ed.contact_email': 'Contact email',
'ed.contactHint': 'Personal data: kept in the private .storebound/ folder (gitignored), shown masked. Type to replace.',
'ed.demoHint': 'The demo account lives only in the private .storebound/ folder; the window never reads the password.',
'ed.game': 'Game',
'ed.app': 'App',
'ed.playSettingsTitle': 'Google Play store settings',
'ed.playSettingsSub': 'Category, countries, managed publishing, target audience, delete-account page.',
'ed.playCategory': 'App category',
'ed.noApiHint': 'No API: the console plan step uses this value.',
'ed.managed': 'Managed publishing',
'ed.countries': 'Production countries',
'ed.countriesHint': 'Two-letter codes (US, GB, TR). Empty: all countries.',
'ed.targetAges': 'Target age groups',
'ed.targetAgesHint': 'Of {groups}.',
'ed.deletionUrl': 'Delete-account page',
'ed.declTitle': 'Data safety and App Privacy answers',
'ed.declSub': 'The answers both forms are filled from. Only you know them: change what the app and its SDKs really do.',
'ed.dsTypes': 'Data types (Play)',
'ed.dsTypesHint': 'Play data type id to usage: { "PSL_EMAIL": { "shared": false, "collect": ["account"] } }. Not listed: not collected.',
'ed.apAnswers': 'App Privacy (App Store)',
'ed.apHint': 'Checked with the whole config when you save; App Privacy has no API (console fill).',
'ed.promoTitle': 'App Store promotion',
'ed.promoSub': 'Promoted purchases, custom product pages and in-app events.',
'ed.promoted': 'Promoted in-app purchases',
'ed.promotedHint': 'Turning them on stays a terminal step (apple promoted --enable).',
'ed.cpp': 'Custom product pages',
'ed.cppHint': 'Submitting a page and making it visible stay terminal steps.',
'ed.events': 'In-app events',
'ed.eventsHint': 'Name 30, short 50, long 120 characters per locale. Sending to review stays a terminal step.',
'ed.applyCpp': 'Custom product pages: preview',
'ed.applyEvents': 'In-app events: preview',
'ed.applyInfoSub': 'App information, App Review, export compliance, Data safety and the Play app details.',
'ed.applyPlayDetails': 'Play contact email and website: preview',
'ed.playConsoleOnly': 'Category, countries and managed publishing have no API: App info > Console steps.',
'ed.itemName': 'Name',
'ed.itemDescription': 'Description',
'ed.benefits': 'Benefits (Play)',
'ed.benefitsHint': 'Comma separated, up to 4, 40 characters each.',
'ed.usd': 'Base price (USD)',
'ed.usdHint': 'A live product\'s new price waits for your decision (Apply the price changes).',
'ed.refName': 'Reference name',
'ed.reviewNote': 'Review note',
'ed.reviewShot': 'Review screenshot',
'ed.family': 'Family Sharing',
'ed.offerCodes': 'Offer codes',
'ed.offerCodesHint': 'Creating codes stays a terminal step (they work like vouchers).',
'ed.level': 'Level in the group',
'ed.levelHint': '1 = highest level of service.',
'ed.period': 'Period',
'ed.periodHint': 'Cannot change after the subscription is approved.',
'ed.intro': 'Introductory offer',
'ed.introHint': 'For example { "type": "free", "duration": "P1W" }.',
'ed.offers': 'Promotional offers',
'ed.winBack': 'Win-back offers',
'ed.winBackHint': 'Creating one stays a terminal step: it goes live by itself on its start date.',
'ed.catalogTitle': 'Edit the catalog',
'ed.catalogEmpty': 'No products or subscriptions in the config',
'ed.catalogEmptyText': 'Add them with the store-iap-setup or store-subscriptions skill.',
'ed.productsTitle': 'In-app products',
'ed.productsSub': 'Names, descriptions per language, price and review details.',
'ed.groupTitle': 'Subscription group {name}',
'ed.groupSub': 'Group display name per language and each subscription.',
'ed.groupName': 'Group display name',
'ed.applyCatalogSub': 'Each store: the dry run per product in the window, then the confirm dialog.',
'ed.applyPlayProducts': 'Play products: preview',
'ed.applyPlaySubs': 'Play subscriptions: preview',
'ed.applyAppleIap': 'App Store in-app purchases: preview',
'ed.applyAppleSubs': 'App Store subscriptions: preview',
'ed.applyIapReview': 'Review screenshots: preview',
'ed.priceGate': 'Price changes of live products are never applied here: they wait for your decision in the owner action.',
'ed.tfTitle': 'Edit TestFlight information',
'ed.tfSub': 'What to Test per locale, the beta description, notes for Beta App Review and the groups.',
'ed.whatToTest': 'What to Test',
'ed.whatToTestHint': 'Empty: the What\'s new text is used.',
'ed.betaDescription': 'Beta App Description',
'ed.betaDescriptionAll': 'Beta App Description (every locale)',
'ed.betaNotes': 'Notes for Beta App Review',
'ed.tfGroups': 'Beta groups',
'ed.tfGroupsHint': '[{ "name": "Studio team", "internal": true }]. Existing groups are never changed or deleted.',
'ed.applyTfSub': 'Test information and the missing groups. External testing and Beta App Review stay terminal steps.',
'ed.applyTfInfo': 'Test information: preview',
'ed.artTitle': 'Screenshot order and frames',
'ed.artSub': 'The stores show the screenshots in this order. Point a scene at another frame to replace its screenshot.',
'ed.artEmpty': 'No screenshot scenes in the config',
'ed.artEmptyText': 'Set up shots with the store-screenshots skill.',
'ed.frame': 'Frame',
'ed.up': 'Up',
'ed.down': 'Down',
'ed.moveUp': 'Move {id} up',
'ed.moveDown': 'Move {id} down',
'ed.applyArtSub': 'Render, then upload: an upload replaces the store\'s screenshot set (dry run first).',
'ed.loadFailed': 'Could not read the app folder\'s files: {error}',
} as const;

View file

@ -1547,4 +1547,182 @@ export const tr: Record<keyof typeof en, string> = {
'deps.sdkFrom': 'Bulunduğu yer',
'deps.sdkNone': 'Bulunamadı. play build buna ihtiyaç duyar (Android Studio\'yu kurun veya ANDROID_HOME ayarlayın). Bakılan yerler:',
'ai.dsFrom': 'kaynak: {source}',
'ed.countAria': '{limit} karakterin {n} tanesi',
'ed.unsavedField': 'Kaydedilmemiş değişiklik',
'ed.was': 'Kayıtlı:',
'ed.empty': '(boş)',
'ed.removed': '(kaldırıldı)',
'ed.reset': 'Geri al',
'ed.notSet': 'Ayarlanmadı',
'ed.none': 'yok',
'ed.notNumber': 'Sayı değil',
'ed.notJson': 'Geçerli JSON değil: {error}',
'ed.noGit': 'Git klasörü değil',
'ed.gitClean': 'Bu dosyalarda commit edilmemiş değişiklik yok',
'ed.gitDirty': 'Git\'te commit edilmemiş: {files}. storebound asla commit etmez.',
'ed.also': 'aynı bölüm {codes} için de geçerli',
'ed.newFile': 'yeni dosya',
'ed.masked': 'Kişisel veri: gösterilmiyor.',
'ed.unsaved': '{count} kaydedilmemiş değişiklik',
'ed.unsaved_one': '1 kaydedilmemiş değişiklik',
'ed.noChanges': 'Kaydedilmemiş değişiklik yok',
'ed.undo': 'Geri al',
'ed.redo': 'Yinele',
'ed.discard': 'Vazgeç',
'ed.review': 'Gözden geçir ve kaydet',
'ed.close': 'Kapat',
'ed.fixFirst': 'Önce hataları düzeltin',
'ed.save': 'Uygulama klasörüne kaydet',
'ed.saved': 'Uygulama klasörüne kaydedildi',
'ed.nothingToApply': 'Mağazada değişecek bir şey yok.',
'ed.applyNow': 'Mağazaya uygula',
'ed.saveFirst': 'Önce düzenlemeleri kaydedin: mağazaya dosyalardaki gönderilir.',
'ed.statusDraft': 'Makine taslağı, gözden geçirilmedi',
'ed.statusTranslate': 'Henüz çevrilmedi',
'ed.alsoServes': 'ayrıca {codes}',
'ed.newSection': '{lang} için listeleme dosyasında henüz bölüm yok. Zorunlu alanları doldurun; kaydetmek bölümü ekler.',
'ed.keywordsHint': 'Virgülle ayrılmış, virgülden sonra boşluk yok; ad veya alt başlıktaki kelimeleri tekrarlamayın.',
'ed.whatsNewApple': 'İlk sürümde kullanılamaz.',
'ed.nameHint': 'Boş: yapılandırmadaki uygulama adı.',
'ed.supportUrl': 'Destek URL\'si',
'ed.marketingUrl': 'Pazarlama URL\'si',
'ed.privacyUrl': 'Gizlilik politikası URL\'si',
'ed.termsUrl': 'Kullanım koşulları URL\'si',
'ed.termsHint': 'Aboneliklerde gerekli (Apple 3.1.2).',
'ed.website': 'Web sitesi',
'ed.websiteHint': 'Google Play: app-ads.txt dosyasını sunan alan adı.',
'ed.contactEmail': 'İletişim e-postası',
'ed.copyright': 'Telif hakkı',
'ed.video': 'Tanıtım videosu (YouTube URL\'si)',
'ed.videoHint': 'Herkese açık veya liste dışı, reklamsız, yerleştirilebilir. Play video yüklemesi almaz.',
'ed.listingTitle': 'Listelemeyi düzenle',
'ed.listingSub': 'Dil başına, iki mağaza yan yana. Sayaçlar mağaza sınırlarını kullanır; check ve scan denetimleri yazarken çalışır.',
'ed.pullPlay': 'Google Play\'den çek',
'ed.pullApple': 'App Store\'dan çek',
'ed.pulled': 'Listeleme dosyası artık mağazayla aynı',
'ed.pullHint': 'Canlı metinleri okur ve dosyalarda bir şey değişmeden önce farkı gösterir.',
'ed.pullDirty': 'Kaydedilmemiş düzenlemeleriniz var: çekilen metnin üzerinde bekler.',
'ed.pullNote': 'Çekme, farkı gösterdikten sonra listeleme dosyalarını yeniden yazar; kaydedilmemiş düzenlemeler üstte bekler.',
'ed.playCode': 'Play dili',
'ed.rtl': 'Sağdan sola yazılan dil.',
'ed.noStoreForLang': '{lang} yapılandırmada iki mağazada da yok.',
'ed.detailsTitle': 'Mağaza ayrıntıları',
'ed.detailsSub': 'URL\'ler, iletişim ve telif hakkı, iki mağazada ortak (storebound.config.ts).',
'ed.applyTitle': 'Mağazalara uygula',
'ed.applySub': 'Her mağaza: pencerede deneme çalıştırması (dil başına eskiden yeniye), sonra onay penceresi, sonra gerçek çalıştırma.',
'ed.applyPlay': 'Google Play listelemesi: önizle',
'ed.applyApple': 'App Store {version}: önizle',
'ed.applyNote': 'Hiçbir şey incelemeye gitmez: metinler sürümü veya değişiklikleri incelemeye gönderene kadar mağazada bekler.',
'ed.appleInfoTitle': 'App Store uygulama bilgileri',
'ed.appleInfoSub': 'Kategoriler, içerik hakları, fiyat, ihracat uyumluluğu ve App Store adı.',
'ed.catPrimary': 'Birincil kategori',
'ed.catSub1': 'Oyun alt kategorisi 1',
'ed.catSub2': 'Oyun alt kategorisi 2',
'ed.catSecondary': 'İkincil kategori',
'ed.free': 'Fiyat',
'ed.freeHint': 'Ücretsiz: her bölgede ve yenilerinde sunulur.',
'ed.encHint': 'Bunu yalnızca siz yanıtlayabilirsiniz: export-compliance becerisi.',
'ed.appleName': 'App Store adı',
'ed.appleNameHint': 'Uygulama adı App Store\'da alınmışsa.',
'ed.ageTitle': 'Yaş derecelendirmesi',
'ed.ageSub': 'App Store beyanının her sorusu. Ayarlanmadı: "hiç" yanıtı.',
'ed.ageDefault': 'Varsayılan: {value}',
'ed.reviewSub': 'App Review için oturum açma, notlar ve iletişim. Demo hesap parolası asla gösterilmez.',
'ed.notesHint': 'App Store Connect en fazla {max} bayt alır.',
'ed.signInSteps': 'İnceleyiciler için oturum açma adımları',
'ed.contact_firstName': 'İletişim adı',
'ed.contact_lastName': 'İletişim soyadı',
'ed.contact_phone': 'İletişim telefonu',
'ed.contact_email': 'İletişim e-postası',
'ed.contactHint': 'Kişisel veri: gizli .storebound/ klasöründe (gitignore) tutulur, maskeli gösterilir. Değiştirmek için yazın.',
'ed.demoHint': 'Demo hesap yalnızca gizli .storebound/ klasöründe; pencere parolayı asla okumaz.',
'ed.game': 'Oyun',
'ed.app': 'Uygulama',
'ed.playSettingsTitle': 'Google Play mağaza ayarları',
'ed.playSettingsSub': 'Kategori, ülkeler, yönetilen yayınlama, hedef kitle, hesap silme sayfası.',
'ed.playCategory': 'Uygulama kategorisi',
'ed.noApiHint': 'API yok: konsol planı adımı bu değeri kullanır.',
'ed.managed': 'Yönetilen yayınlama',
'ed.countries': 'Üretim ülkeleri',
'ed.countriesHint': 'İki harfli kodlar (US, GB, TR). Boş: tüm ülkeler.',
'ed.targetAges': 'Hedef yaş grupları',
'ed.targetAgesHint': 'Şunlardan: {groups}.',
'ed.deletionUrl': 'Hesap silme sayfası',
'ed.declTitle': 'Veri güvenliği ve App Privacy yanıtları',
'ed.declSub': 'İki formun doldurulduğu yanıtlar. Bunları yalnızca siz bilirsiniz: uygulamanın ve SDK\'larının gerçekte yaptığını yazın.',
'ed.dsTypes': 'Veri türleri (Play)',
'ed.dsTypesHint': 'Play veri türü kimliğinden kullanıma: { "PSL_EMAIL": { "shared": false, "collect": ["account"] } }. Listede olmayan: toplanmıyor.',
'ed.apAnswers': 'App Privacy (App Store)',
'ed.apHint': 'Kaydederken tüm yapılandırmayla denetlenir; App Privacy\'nin API\'si yok (konsolda doldurma).',
'ed.promoTitle': 'App Store tanıtımı',
'ed.promoSub': 'Öne çıkan satın almalar, özel ürün sayfaları ve uygulama içi etkinlikler.',
'ed.promoted': 'Öne çıkan uygulama içi satın almalar',
'ed.promotedHint': 'Etkinleştirme terminal adımı olarak kalır (apple promoted --enable).',
'ed.cpp': 'Özel ürün sayfaları',
'ed.cppHint': 'Sayfayı gönderme ve görünür yapma terminal adımları olarak kalır.',
'ed.events': 'Uygulama içi etkinlikler',
'ed.eventsHint': 'Yerel ayar başına ad 30, kısa 50, uzun 120 karakter. İncelemeye gönderme terminal adımı olarak kalır.',
'ed.applyCpp': 'Özel ürün sayfaları: önizle',
'ed.applyEvents': 'Uygulama içi etkinlikler: önizle',
'ed.applyInfoSub': 'Uygulama bilgileri, App Review, ihracat uyumluluğu, Veri güvenliği ve Play uygulama ayrıntıları.',
'ed.applyPlayDetails': 'Play iletişim e-postası ve web sitesi: önizle',
'ed.playConsoleOnly': 'Kategori, ülkeler ve yönetilen yayınlamanın API\'si yok: Uygulama bilgileri > Konsol adımları.',
'ed.itemName': 'Ad',
'ed.itemDescription': 'Açıklama',
'ed.benefits': 'Avantajlar (Play)',
'ed.benefitsHint': 'Virgülle ayrılmış, en fazla 4, her biri 40 karakter.',
'ed.usd': 'Taban fiyat (USD)',
'ed.usdHint': 'Canlı bir ürünün yeni fiyatı kararınızı bekler (Fiyat değişikliklerini uygula).',
'ed.refName': 'Referans adı',
'ed.reviewNote': 'İnceleme notu',
'ed.reviewShot': 'İnceleme ekran görüntüsü',
'ed.family': 'Aile Paylaşımı',
'ed.offerCodes': 'Teklif kodları',
'ed.offerCodesHint': 'Kod oluşturma terminal adımı olarak kalır (kupon gibi çalışırlar).',
'ed.level': 'Gruptaki düzey',
'ed.levelHint': '1 = en yüksek hizmet düzeyi.',
'ed.period': 'Dönem',
'ed.periodHint': 'Abonelik onaylandıktan sonra değiştirilemez.',
'ed.intro': 'Tanıtım teklifi',
'ed.introHint': 'Örneğin { "type": "free", "duration": "P1W" }.',
'ed.offers': 'Promosyon teklifleri',
'ed.winBack': 'Geri kazanma teklifleri',
'ed.winBackHint': 'Oluşturma terminal adımı olarak kalır: başlangıç tarihinde kendiliğinden yayına girer.',
'ed.catalogTitle': 'Kataloğu düzenle',
'ed.catalogEmpty': 'Yapılandırmada ürün veya abonelik yok',
'ed.catalogEmptyText': 'store-iap-setup veya store-subscriptions becerisiyle ekleyin.',
'ed.productsTitle': 'Uygulama içi ürünler',
'ed.productsSub': 'Dil başına adlar, açıklamalar, fiyat ve inceleme ayrıntıları.',
'ed.groupTitle': 'Abonelik grubu {name}',
'ed.groupSub': 'Dil başına grup görünen adı ve her abonelik.',
'ed.groupName': 'Grup görünen adı',
'ed.applyCatalogSub': 'Her mağaza: pencerede ürün başına deneme çalıştırması, sonra onay penceresi.',
'ed.applyPlayProducts': 'Play ürünleri: önizle',
'ed.applyPlaySubs': 'Play abonelikleri: önizle',
'ed.applyAppleIap': 'App Store uygulama içi satın almalar: önizle',
'ed.applyAppleSubs': 'App Store abonelikleri: önizle',
'ed.applyIapReview': 'İnceleme ekran görüntüleri: önizle',
'ed.priceGate': 'Canlı ürünlerin fiyat değişiklikleri burada asla uygulanmaz: sahip eyleminde kararınızı bekler.',
'ed.tfTitle': 'TestFlight bilgilerini düzenle',
'ed.tfSub': 'Yerel ayar başına Neyi Test Etmeli, beta açıklaması, Beta App Review notları ve gruplar.',
'ed.whatToTest': 'Neyi Test Etmeli',
'ed.whatToTestHint': 'Boş: Yenilikler metni kullanılır.',
'ed.betaDescription': 'Beta Uygulama Açıklaması',
'ed.betaDescriptionAll': 'Beta Uygulama Açıklaması (tüm yerel ayarlar)',
'ed.betaNotes': 'Beta App Review notları',
'ed.tfGroups': 'Beta grupları',
'ed.tfGroupsHint': '[{ "name": "Stüdyo ekibi", "internal": true }]. Mevcut gruplar asla değiştirilmez veya silinmez.',
'ed.applyTfSub': 'Test bilgileri ve eksik gruplar. Harici test ve Beta App Review terminal adımları olarak kalır.',
'ed.applyTfInfo': 'Test bilgileri: önizle',
'ed.artTitle': 'Ekran görüntüsü sırası ve kareler',
'ed.artSub': 'Mağazalar ekran görüntülerini bu sırayla gösterir. Görüntüsünü değiştirmek için bir sahneyi başka bir kareye yönlendirin.',
'ed.artEmpty': 'Yapılandırmada ekran görüntüsü sahnesi yok',
'ed.artEmptyText': 'shots ayarını store-screenshots becerisiyle yapın.',
'ed.frame': 'Kare',
'ed.up': 'Yukarı',
'ed.down': 'Aşağı',
'ed.moveUp': '{id} sahnesini yukarı taşı',
'ed.moveDown': '{id} sahnesini aşağı taşı',
'ed.applyArtSub': 'Oluştur, sonra yükle: yükleme mağazadaki ekran görüntüsü setinin yerini alır (önce deneme çalıştırması).',
'ed.loadFailed': 'Uygulama klasörünün dosyaları okunamadı: {error}',
};