<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * UI strings for admin (React) and public chat. All user-facing text goes through __().
 * Logic must never compare translated labels — only WooCommerce slugs/keys.
 */
class DC_V2_I18n {

	public static function admin_strings() {
		dc_v2_load_textdomain();
		return self::admin_strings_table();
	}

	/**
	 * EN + ES dictionaries for the admin language switcher (client-side).
	 *
	 * @return array{en: array<string,string>, es: array<string,string>}
	 */
	public static function admin_i18n_packs() {
		static $packs = null;
		if ( null !== $packs ) {
			return $packs;
		}

		unload_textdomain( 'order-from-dm' );
		$en = self::admin_strings_table();

		$po = self::parse_po_map( DC_V2_PATH . 'languages/order-from-dm-es_ES.po' );
		$es = array();
		foreach ( $en as $key => $msgid ) {
			$es[ $key ] = ( isset( $po[ $msgid ] ) && '' !== $po[ $msgid ] ) ? $po[ $msgid ] : $msgid;
		}

		dc_v2_load_textdomain( true );

		$packs = array(
			'en' => $en,
			'es' => $es,
		);
		return $packs;
	}

	/**
	 * @return array<string,string> msgid => msgstr
	 */
	private static function parse_po_map( $path ) {
		$map = array();
		if ( ! is_readable( $path ) ) {
			return $map;
		}
		$raw = (string) file_get_contents( $path );
		if ( preg_match_all( '/msgid "(.*)"\nmsgstr "(.*)"/U', $raw, $m, PREG_SET_ORDER ) ) {
			foreach ( $m as $row ) {
				$id  = stripcslashes( $row[1] );
				$str = stripcslashes( $row[2] );
				if ( '' !== $id && '' !== $str ) {
					$map[ $id ] = $str;
				}
			}
		}
		return $map;
	}

	/**
	 * Raw admin string table. Values are English msgids via __() — translation
	 * depends on whether the text domain is currently loaded.
	 *
	 * @return array<string,string>
	 */
	public static function admin_strings_table() {
		return array(
			'appSubtitle'              => __( 'DM-style shared orders for assisted sales', 'order-from-dm' ),
			'heroTitleLead'            => __( 'Turn conversations', 'order-from-dm' ),
			'heroTitleAccent'          => __( 'into real orders', 'order-from-dm' ),
			'heroSubtitleLine1'        => __( 'Share a checkout link.', 'order-from-dm' ),
			'heroSubtitleLine2'        => __( 'Collect every detail.', 'order-from-dm' ),
			'heroSubtitleLine3'        => __( 'Receive the order in WooCommerce.', 'order-from-dm' ),
			'heroCtaCreate'            => __( '+ Create new link', 'order-from-dm' ),
			'heroCtaDocs'              => __( 'View docs', 'order-from-dm' ),
			'heroCarouselLabel'        => __( 'Order From DM highlights', 'order-from-dm' ),
			'heroCarouselPrev'         => __( 'Previous highlight', 'order-from-dm' ),
			'heroCarouselNext'         => __( 'Next highlight', 'order-from-dm' ),
			'heroFieldsBadge'          => __( 'Included feature', 'order-from-dm' ),
			'heroFieldsTitleLead'      => __( 'Personalize products.', 'order-from-dm' ),
			'heroFieldsTitleMid'       => __( 'Capture', 'order-from-dm' ),
			'heroFieldsTitleAccent'    => __( 'every detail.', 'order-from-dm' ),
			'heroFieldsSubtitle'       => __( 'Add text, photo, and options. Answers stay with the WooCommerce order.', 'order-from-dm' ),
			'heroFieldsCtaAdd'         => __( '+ Add custom fields', 'order-from-dm' ),
			'heroFieldsCtaHow'         => __( 'See how it works', 'order-from-dm' ),
			'docsTitle'                => __( 'Order From DM — Documentation', 'order-from-dm' ),
			'docsCloseAria'            => __( 'Close documentation', 'order-from-dm' ),
			'docsConfidenceTitle'      => __( 'We trust this workflow', 'order-from-dm' ),
			'docsConfidenceBody'       => __( 'Stores using Order From DM close more assisted sales because the customer never leaves the conversation vibe — yet you still get a proper WooCommerce order, with your usual admin tools and emails.', 'order-from-dm' ),
			'docsSecOverviewTitle'     => __( 'What is Order From DM?', 'order-from-dm' ),
			'docsSecOverviewBody'      => __( 'Order From DM replaces long DM (Direct Messages — WhatsApp, Instagram, and similar chats) back-and-forth with a unique mobile checkout link per order. You build the order in admin; your customer completes custom fields and shipping in a DM-style thread, then pays with the methods you enable for that link (bank transfer, and/or Stripe, PayPal, Mercado Pago when configured in WooCommerce).', 'order-from-dm' ),
			'docsSecQuickStartTitle'   => __( 'Quick start', 'order-from-dm' ),
			'docsSecQuickStartBody'    => __( 'From Orders, create a new shared order, add products, activate the link, and send it to your customer.', 'order-from-dm' ),
			'docsSecQuickStartBullet1' => __( 'Click + Create new order link and name the order.', 'order-from-dm' ),
			'docsSecQuickStartBullet2' => __( 'Add WooCommerce products and configure custom fields if needed.', 'order-from-dm' ),
			'docsSecQuickStartBullet3' => __( 'Activate the link and copy the URL (yourstore.com/c/slug/).', 'order-from-dm' ),
			'docsSecQuickStartBullet4' => __( 'When the customer finishes, a WooCommerce order is created automatically — no manual copy-paste.', 'order-from-dm' ),
			'docsSecLinksTitle'        => __( 'Checkout links', 'order-from-dm' ),
			'docsSecLinksBody'         => __( 'Each row in Your checkout links is one shareable URL. Draft links are hidden from customers until activated.', 'order-from-dm' ),
			'docsSecLinksBullet1'      => __( 'Search by order name or URL.', 'order-from-dm' ),
			'docsSecLinksBullet2'      => __( 'Clone reuses products and fields with a new slug.', 'order-from-dm' ),
			'docsSecLinksBullet3'      => __( 'Linked WooCommerce orders appear as pills on each row.', 'order-from-dm' ),
			'docsSecProductsTitle'     => __( 'Products & custom fields', 'order-from-dm' ),
			'docsSecProductsBody'      => __( 'The customer does not pick products — you define order lines in admin. Per-product fields collect text, photos, or options. You can also define fields on the WooCommerce product itself.', 'order-from-dm' ),
			'docsSecProductsBullet1'   => __( 'Variable products: select catalog options or collect details in custom fields.', 'order-from-dm' ),
			'docsSecProductsBullet2'   => __( 'On each product edit screen, open the OFDM Fields tab to attach fields that travel with every Order From DM link that includes that product.', 'order-from-dm' ),
			'docsSecProductsBullet3'   => __( 'Those same product fields also appear on the normal WooCommerce product page so shoppers fill them in a regular cart purchase — not only on an Order From DM link.', 'order-from-dm' ),
			'docsSecProductsBullet4'   => __( 'From a link in the composer, use Edit on product to jump straight to that product’s OFDM Fields tab.', 'order-from-dm' ),
			'docsSecProductsBullet5'   => __( 'Checkout copy (welcome, shipping, success) can be customized per order or globally in Settings.', 'order-from-dm' ),
			'docsSecCustomerTitle'     => __( 'Customer checkout', 'order-from-dm' ),
			'docsSecCustomerBody'      => __( 'The storefront is mobile-first and feels like an Instagram DM thread — without free-text chat.', 'order-from-dm' ),
			'docsSecCustomerBullet1'   => __( 'Brand messages on the left; customer actions on the right.', 'order-from-dm' ),
			'docsSecCustomerBullet2'   => __( 'Shipping uses Chile region and comuna when configured.', 'order-from-dm' ),
			'docsSecCustomerBullet3'   => __( 'The customer picks among the payment methods you enabled for the link; bank transfer stays in-chat, and online gateways use your WooCommerce setup.', 'order-from-dm' ),
			'docsSecPaymentsTitle'     => __( 'Payment methods', 'order-from-dm' ),
			'docsSecPaymentsBody'      => __( 'Each link can offer the WooCommerce payment methods you select for that order. Compatible options: bank transfer (BACS), Stripe, PayPal, and Mercado Pago when those gateways are enabled and configured.', 'order-from-dm' ),
			'docsSecPaymentsBullet1'   => __( 'In the link composer, choose Payment methods for this link — customers only see what you select.', 'order-from-dm' ),
			'docsSecPaymentsBullet2'   => __( 'Bank transfer shows account details in the chat after the order is created.', 'order-from-dm' ),
			'docsSecPaymentsBullet3'   => __( 'Stripe, PayPal, and Mercado Pago use your WooCommerce gateway settings (sandbox or live).', 'order-from-dm' ),
			'docsSecPaymentsBullet4'   => __( 'If no methods are selected, bank transfer (BACS) is used as the fallback when available.', 'order-from-dm' ),
			'docsSecWooTitle'          => __( 'WooCommerce integration', 'order-from-dm' ),
			'docsSecWooBody'           => __( 'Every completed checkout creates a real WooCommerce order linked to the shared document — the same Orders screen you already use.', 'order-from-dm' ),
			'docsSecWooBullet1'        => __( 'The order is created automatically in WooCommerce with the payment method the customer chose as soon as they submit the link.', 'order-from-dm' ),
			'docsSecWooBullet2'        => __( 'WooCommerce sends its normal transactional emails: new-order notice to the store, and the customer on-hold order email with order details (if enabled under WooCommerce → Settings → Emails).', 'order-from-dm' ),
			'docsSecWooBullet3'        => __( 'Custom field values are stored on line items — just like a standard order.', 'order-from-dm' ),
			'docsSecWooBullet4'        => __( 'Preview linked orders from the admin list without leaving the plugin.', 'order-from-dm' ),
			'docsSecTipsTitle'         => __( 'Tips to sell more with Order From DM', 'order-from-dm' ),
			'docsSecTipsBody'          => __( 'Small habits that make a big difference in assisted sales:', 'order-from-dm' ),
			'docsSecTipsBullet1'       => __( 'Send the link while the customer is still hot — right after they say yes in the DM.', 'order-from-dm' ),
			'docsSecTipsBullet2'       => __( 'Pre-build the order in admin so the customer only personalizes — fewer steps, more completions.', 'order-from-dm' ),
			'docsSecTipsBullet3'       => __( 'Use a warm welcome message that matches how you talk on Instagram or WhatsApp.', 'order-from-dm' ),
			'docsSecTipsBullet4'       => __( 'Clone your best-performing links instead of starting from scratch every time.', 'order-from-dm' ),
			'docsSecTipsBullet5'       => __( 'Keep field labels crystal clear (name, photo, size) so customers do not hesitate.', 'order-from-dm' ),
			'docsSecTipsBullet6'       => __( 'Follow up in the DM with the order number after they submit — it builds trust while they pay.', 'order-from-dm' ),
			'editOnProduct'            => __( 'Edit on product', 'order-from-dm' ),
			'editOnProductHint'        => __( 'Opens the product editor on the OFDM Fields tab', 'order-from-dm' ),
			'docsSecManychatTitle'     => __( 'Using ManyChat', 'order-from-dm' ),
			'docsSecManychatBody'      => __( 'If you automate Instagram or WhatsApp with ManyChat, you do not need API keys or technical setup. Order From DM gives you a unique checkout URL per order — paste that URL into ManyChat when you are ready to send it.', 'order-from-dm' ),
			'docsSecManychatBullet1'   => __( 'Create and activate the order in Order From DM, then copy the link (yourstore.com/c/order-name/).', 'order-from-dm' ),
			'docsSecManychatBullet2'   => __( 'In ManyChat, open Live Chat for that customer — or the automation where you usually reply.', 'order-from-dm' ),
			'docsSecManychatBullet3'   => __( 'Paste the link in a text message, or add a Button block → Open website → paste the same URL.', 'order-from-dm' ),
			'docsSecManychatBullet4'   => __( 'Use only the /c/... link from this plugin — not your shop homepage or WooCommerce cart.', 'order-from-dm' ),
			'docsSecManychatNote'      => __( 'Preview links (?preview=1) are for you to test before sending, not for customers.', 'order-from-dm' ),
			'docsSecManychatSampleLabel' => __( 'Suggested message', 'order-from-dm' ),
			'docsSecManychatSample'    => __( 'Your order is ready! Tap below to complete your order.', 'order-from-dm' ),
			'docsSecDashboardTitle'    => __( 'Dashboard', 'order-from-dm' ),
			'docsSecDashboardBody'     => __( 'The dashboard summarizes completed orders, revenue, conversion, awaiting payment, and top product — calculated from every Order From DM link and its WooCommerce orders.', 'order-from-dm' ),
			'docsSecSettingsTitle'     => __( 'Settings', 'order-from-dm' ),
			'docsSecSettingsBody'      => __( 'Global appearance and default checkout copy apply to new orders unless overridden per link.', 'order-from-dm' ),
			'docsSecSettingsBullet1'   => __( 'Logo, colors, typing speed, and preview the chat checkout live.', 'order-from-dm' ),
			'docsSecSettingsBullet2'   => __( 'Default welcome and success messages for new orders.', 'order-from-dm' ),
			'docsSecSettingsBullet3'   => __( 'Use the support button in the header to request improvements or report issues.', 'order-from-dm' ),
			'docsSecLicenseTitle'      => __( 'Plan & license', 'order-from-dm' ),
			'docsSecLicenseBody'       => __( 'Order From DM is freemium: try it free, then subscribe to Pro for unlimited orders. Cancel anytime.', 'order-from-dm' ),
			'docsSecLicenseBullet1'    => __( 'Free plan: 5 completed checkouts per store domain. Drafts, editing, and cloning always work.', 'order-from-dm' ),
			'docsSecLicenseBullet2'    => __( 'Pro plan: unlimited orders — US$9/month or US$79/year via Lemon Squeezy. Activate your license key in Settings.', 'order-from-dm' ),
			'docsSecLicenseBullet3'    => __( 'At the free limit you cannot publish new links; existing active links stop accepting new orders until you upgrade.', 'order-from-dm' ),
			'docsSecLicenseBullet4'    => __( 'Get Pro from the banner on Orders or Settings; paste your license key after purchase to unlock Pro.', 'order-from-dm' ),
			'docsSecLicenseBullet5'    => __( 'Proprietary software (not GPL): installing or activating a key accepts the EULA in the plugin ZIP and the Terms on the product site.', 'order-from-dm' ),
			'docsSupport'              => __( 'Need help? Contact us at', 'order-from-dm' ),
			'supportAria'              => __( 'Support and feedback', 'order-from-dm' ),
			'requestImprovement'       => __( 'Request an improvement', 'order-from-dm' ),
			'letsBuildCta'             => __( 'Would you like to build a plugin?', 'order-from-dm' ),
			'tabOrders'                => __( 'Order From DM', 'order-from-dm' ),
			'tabSettings'              => __( 'Settings', 'order-from-dm' ),
			'dashTitle'                => __( 'Dashboard', 'order-from-dm' ),
			'dashInfoAria'             => __( 'What do these dashboard metrics mean?', 'order-from-dm' ),
			'dashInfoTitle'            => __( 'Your DM sales dashboard', 'order-from-dm' ),
			'dashInfoIntro'            => __( 'A quick snapshot of how your shared checkout links are performing. Metrics count WooCommerce orders from every Order From DM link.', 'order-from-dm' ),
			'dashInfoBullet1'          => __( 'Completed — WooCommerce orders with status completed from every Order From DM link.', 'order-from-dm' ),
			'dashInfoBullet2'          => __( 'DM revenue — Sum of order totals from completed orders only (all links), formatted in your store currency.', 'order-from-dm' ),
			'dashInfoBullet3'          => __( 'Converted — Share of all checkout links (active and draft) that received at least one order.', 'order-from-dm' ),
			'dashInfoBullet4'          => __( 'Awaiting pay — Orders still pending payment or confirmation (Pending payment, on-hold, or processing) from every Order From DM link.', 'order-from-dm' ),
			'dashInfoBullet5'          => __( 'Top product — Most frequently included product in links that generated orders.', 'order-from-dm' ),
			'dashHero'                 => __( '%d orders completed via DM', 'order-from-dm' ),
			'dashCompleted'            => __( 'Completed', 'order-from-dm' ),
			'dashRevenue'              => __( 'DM revenue', 'order-from-dm' ),
			'dashConverted'            => __( 'Converted', 'order-from-dm' ),
			'dashAwaitingPay'          => __( 'Awaiting pay', 'order-from-dm' ),
			'dashTopProduct'           => __( 'Top product', 'order-from-dm' ),
			'dashTopProductTitle'      => __( 'In %d links with orders', 'order-from-dm' ),
			'ordersTitle'              => __( 'Your checkout links', 'order-from-dm' ),
			'ordersTabLinks'           => __( 'Your checkout links', 'order-from-dm' ),
			'ordersTabTrash'           => __( 'Trash', 'order-from-dm' ),
			'ordersTrashEmpty'         => __( 'Trash is empty.', 'order-from-dm' ),
			'ordersTrashIntro'         => __( 'Links in the trash stay out of customers’ reach. Preview them, restore them, or delete them permanently. Links that already have purchases can’t be permanently deleted.', 'order-from-dm' ),
			'statusTrash'              => __( 'Trash', 'order-from-dm' ),
			'moveToTrash'              => __( 'Move to trash', 'order-from-dm' ),
			'confirmMoveToTrash'       => __( 'Move this link to the trash?', 'order-from-dm' ),
			'movedToTrash'             => __( 'Moved to trash', 'order-from-dm' ),
			'restoreFromTrash'         => __( 'Restore', 'order-from-dm' ),
			'restoredFromTrash'        => __( 'Restored as draft', 'order-from-dm' ),
			'deletePermanently'        => __( 'Delete permanently', 'order-from-dm' ),
			'confirmDeletePermanent'   => __( 'Delete this link permanently? This cannot be undone.', 'order-from-dm' ),
			'confirmDeletePermanentTitle' => __( 'Delete permanently?', 'order-from-dm' ),
			'cannotDeleteWithOrders'   => __( 'You can’t permanently delete links that already have purchases.', 'order-from-dm' ),
			'ordersInfoAria'           => __( 'What is Order From DM?', 'order-from-dm' ),
			'ordersInfoTitle'          => __( 'What is Order From DM?', 'order-from-dm' ),
			'ordersInfoIntro'          => __( 'Turn assisted sales on Instagram or WhatsApp into a smooth mobile checkout — without a long store cart.', 'order-from-dm' ),
			'ordersInfoBullet1'        => __( 'Create a unique link per order and share it with your customer.', 'order-from-dm' ),
			'ordersInfoBullet2'        => __( 'The customer completes products and shipping in a DM-style chat thread.', 'order-from-dm' ),
			'ordersInfoBullet3'        => __( 'Collect custom fields per product (text, photos, options).', 'order-from-dm' ),
			'ordersInfoBullet4'        => __( 'Orders are created in WooCommerce with bank transfer (BACS) instructions.', 'order-from-dm' ),
			'ordersInfoBullet5'        => __( 'Clone links to reuse similar orders with a new URL.', 'order-from-dm' ),
			'ordersActiveCount'        => __( '%d active', 'order-from-dm' ),
			'searchOrdersPlaceholder'  => __( 'Search by name or URL…', 'order-from-dm' ),
			'newOrder'                 => __( '+ New link', 'order-from-dm' ),
			'newOrderMobile'           => __( 'Add', 'order-from-dm' ),
			'aiGenerateCta'            => __( 'Generate with AI', 'order-from-dm' ),
			'aiGenerateCtaMobile'      => __( 'Add with IA', 'order-from-dm' ),
			'aiModalTitle'             => __( 'Generate a link with AI', 'order-from-dm' ),
			'aiModalIntro'             => __( 'Describe the link in your own words: which products, what you need to ask your customer, and any chat message you want changed.', 'order-from-dm' ),
			'aiModalExample'           => __( 'Example: Link for the Gold Necklace. Ask for the name to engrave and a reference photo. The welcome message should say: Hi! Let\'s finish your order.', 'order-from-dm' ),
			'aiPromptPlaceholder'      => __( 'Describe your link…', 'order-from-dm' ),
			'aiAutoPublishLabel'       => __( 'Publish it automatically when it is ready?', 'order-from-dm' ),
			'aiAutoPublishHint'        => __( 'Off means it is saved as a draft for you to review first.', 'order-from-dm' ),
			'aiCancel'                 => __( 'Cancel', 'order-from-dm' ),
			'aiGenerate'               => __( 'Generate link', 'order-from-dm' ),
			'aiGenerating'             => __( 'Building your link…', 'order-from-dm' ),
			'aiDiscardConfirm'         => __( 'Discard what you wrote?', 'order-from-dm' ),
			'aiCharsLeft'              => __( '%d characters left', 'order-from-dm' ),
			'aiQuotaLeft'              => __( '%d of %d generations left', 'order-from-dm' ),
			'aiTrialLeft'              => __( '%d free AI generations left', 'order-from-dm' ),
			'aiQuotaSpent'             => __( 'No AI generations left for now.', 'order-from-dm' ),
			'aiDraftBanner'            => __( 'This link is a draft. Open it to review and publish.', 'order-from-dm' ),
			'aiPublishedBanner'        => __( 'Your link is published and ready to share.', 'order-from-dm' ),
			'aiPublishBlockedBanner'   => __( 'Saved as a draft: your plan does not allow publishing right now.', 'order-from-dm' ),
			'aiEditLink'               => __( 'Edit link', 'order-from-dm' ),
			'aiGenericError'           => __( 'We could not build that link. Try describing it differently.', 'order-from-dm' ),
			'aiDroppedProducts'        => __( 'A link holds up to %d products, so %d were left out. Add them from the editor.', 'order-from-dm' ),
			'aiInfoOpen'               => __( 'How it works', 'order-from-dm' ),
			'aiInfoBack'               => __( 'Back', 'order-from-dm' ),
			'aiInfoTitle'              => __( 'How AI link generation works', 'order-from-dm' ),
			'aiInfoCanTitle'           => __( 'What it can build', 'order-from-dm' ),
			'aiInfoCan1'               => __( 'Simple or variable products from your catalog (name the size/colour when it matters), with the quantity you ask for.', 'order-from-dm' ),
			'aiInfoCan2'               => __( 'Custom fields to collect details: text, photo, options, number or date.', 'order-from-dm' ),
			'aiInfoCan3'               => __( 'Any of the six chat messages: welcome, before products, before payment, before shipping, note after confirmation, and the closing message.', 'order-from-dm' ),
			'aiInfoCan4'               => __( 'Payment methods you already have enabled in WooCommerce.', 'order-from-dm' ),
			'aiInfoCantTitle'          => __( 'What it will not do', 'order-from-dm' ),
			'aiInfoCant1'              => __( 'Change prices, stock, settings or anything else in your store.', 'order-from-dm' ),
			'aiInfoCant2'              => __( 'Guess a size or colour you did not name — it asks which variation you want instead.', 'order-from-dm' ),
			'aiInfoCant3'              => __( 'Put more than 10 products in one link. Extras are left out and you are told.', 'order-from-dm' ),
			'aiInfoFieldsTitle'        => __( 'About custom fields', 'order-from-dm' ),
			'aiInfoFields1'            => __( 'Fields already saved on a product (OFDM Fields tab) always travel with it and are never duplicated.', 'order-from-dm' ),
			'aiInfoFields2'            => __( 'If you do not ask for fields, the product is added without asking your customer anything.', 'order-from-dm' ),
			'aiInfoPublishTitle'       => __( 'Draft or published', 'order-from-dm' ),
			'aiInfoPublish1'           => __( 'Links are saved as drafts so you can review them before sharing.', 'order-from-dm' ),
			'aiInfoPublish2'           => __( 'Tick the box to publish right away. Publishing follows your plan, same as any other link.', 'order-from-dm' ),
			'aiInfoTipsTitle'          => __( 'For a better result', 'order-from-dm' ),
			'aiInfoTips1'              => __( 'Name products as they appear in your catalog.', 'order-from-dm' ),
			'aiInfoTips2'              => __( 'For variable products, name the option too (size, colour). If several match, it asks instead of guessing.', 'order-from-dm' ),
			'aiInfoTips3'              => __( 'Quote the exact wording you want, for example: the welcome message should say: …', 'order-from-dm' ),
			'aiInfoQuotaTitle'         => __( 'Your allowance', 'order-from-dm' ),
			'aiInfoQuota1'             => __( 'Pro includes 100 generations every 30 days. The free plan includes 3 to try it.', 'order-from-dm' ),
			'aiInfoQuota2'             => __( 'If a generation fails on our side it is not counted.', 'order-from-dm' ),
			'aiInfoReuseTitle'         => __( 'Links you already have', 'order-from-dm' ),
			'aiInfoReuse1'             => __( 'If a link already carries the same products, we offer it instead of creating a near-identical one.', 'order-from-dm' ),
			'aiInfoReuse2'             => __( 'You keep one URL per offer and every order stays under the same link, so there is no guessing which one you sent.', 'order-from-dm' ),
			'aiInfoReuse3'             => __( 'Say "create another link" when you do want a separate one.', 'order-from-dm' ),
			'aiMatchTitle'             => __( 'You already have a link with these products', 'order-from-dm' ),
			'aiMatchIntro'             => __( 'Pick the one to use, or create a separate link.', 'order-from-dm' ),
			'aiMatchChangesTitle'      => __( 'This will be applied to the link you pick', 'order-from-dm' ),
			'aiMatchQuantity'          => __( '%1$s: quantity %2$d → %3$d', 'order-from-dm' ),
			'aiMatchCopyChange'        => __( 'Replaces the chat message: %s', 'order-from-dm' ),
			'aiMatchUse'               => __( 'Use this link', 'order-from-dm' ),
			'aiMatchCreateNew'         => __( 'Create a separate link', 'order-from-dm' ),
			'aiMatchStatusActive'      => __( 'Active', 'order-from-dm' ),
			'aiMatchStatusDraft'       => __( 'Draft', 'order-from-dm' ),
			'aiReusedBanner'           => __( 'Reused a link you already had.', 'order-from-dm' ),
			'aiReusedBannerChanges'    => __( 'Reused a link you already had — %s', 'order-from-dm' ),
			'ordersIntro'              => __( 'Each row is a unique link to share with your customer. Use Clone to create a similar order with a new URL.', 'order-from-dm' ),
			'linkedOrdersLabel'        => __( 'WooCommerce orders', 'order-from-dm' ),
			'linkedOrdersEmpty'        => __( 'No orders from this link yet.', 'order-from-dm' ),
			'wcOrderPreviewTitle'      => __( 'Order preview', 'order-from-dm' ),
			'wcOrderPreviewLoading'    => __( 'Loading order…', 'order-from-dm' ),
			'wcOrderPreviewError'      => __( 'Could not load order preview.', 'order-from-dm' ),
			'closeSheet'               => __( 'Close', 'order-from-dm' ),
			'loading'                  => __( 'Loading…', 'order-from-dm' ),
			'noOrders'                 => __( 'No orders yet.', 'order-from-dm' ),
			'createFirstOrder'         => __( 'Create first link', 'order-from-dm' ),
			'statusActive'             => __( 'Active', 'order-from-dm' ),
			'statusDraft'              => __( 'Draft', 'order-from-dm' ),
			'goProPill'                => __( 'GO PRO', 'order-from-dm' ),
			'copyLink'                 => __( 'Copy link', 'order-from-dm' ),
			'previewLink'              => __( 'Preview checkout', 'order-from-dm' ),
			'linkPreviewSheetLabel'    => __( 'Customer checkout preview', 'order-from-dm' ),
			'moreActionsAria'          => __( 'More actions', 'order-from-dm' ),
			'linkCopied'               => __( 'Link copied', 'order-from-dm' ),
			'open'                     => __( 'Open', 'order-from-dm' ),
			'clone'                    => __( 'Clone', 'order-from-dm' ),
			'activate'                 => __( 'Activate', 'order-from-dm' ),
			'deactivate'               => __( 'Deactivate', 'order-from-dm' ),
			'delete'                   => __( 'Delete', 'order-from-dm' ),
			'confirmDelete'            => __( 'Delete this order?', 'order-from-dm' ),
			'deleted'                  => __( 'Deleted', 'order-from-dm' ),
			'orderCloned'              => __( 'Order cloned — edit the slug for a new link', 'order-from-dm' ),
			'orderActivated'           => __( 'Order activated', 'order-from-dm' ),
			'orderDeactivated'         => __( 'Order deactivated', 'order-from-dm' ),
			'updatedAtLabel'           => __( 'Updated:', 'order-from-dm' ),
			'productCount'             => __( '%d product', 'order-from-dm' ),
			'productCountPlural'       => __( '%d products', 'order-from-dm' ),
			'clickToCopy'              => __( 'Click to copy', 'order-from-dm' ),
			'backToOrders'             => __( '← Back to orders', 'order-from-dm' ),
			'composerNewTitle'         => __( 'New shared order', 'order-from-dm' ),
			'composerEditTitle'        => __( 'Edit order', 'order-from-dm' ),
			'composerNewDesc'          => __( 'Build the order and generate a link to share.', 'order-from-dm' ),
			'composerEditDesc'         => __( 'Products, checkout copy, and share link.', 'order-from-dm' ),
			'orderName'                => __( 'Order name', 'order-from-dm' ),
			'orderNamePlaceholder'     => __( 'e.g. Jane — custom item', 'order-from-dm' ),
			'slugLabel'                => __( 'URL identifier (slug)', 'order-from-dm' ),
			'slugPlaceholder'          => __( 'jane-custom-item', 'order-from-dm' ),
			'slugPreview'              => __( 'Customer URL: %s/c/%s/', 'order-from-dm' ),
			'searchProducts'           => __( 'Choose the products', 'order-from-dm' ),
			'searchProductsDefaultView'=> __( 'Choose the products (Default view)', 'order-from-dm' ),
			'searchProductsChatView'   => __( 'Choose the products (Chat view)', 'order-from-dm' ),
			'searchProductsPlaceholder'=> __( 'Name, SKU or ID…', 'order-from-dm' ),
			'searching'                => __( 'Searching…', 'order-from-dm' ),
			'noSearchResults'          => __( 'No results.', 'order-from-dm' ),
			'addProduct'               => __( 'Add', 'order-from-dm' ),
			'chooseVariation'          => __( 'Choose options', 'order-from-dm' ),
			'variationModalTitle'      => __( 'Which option for %s?', 'order-from-dm' ),
			'variationModalIntro'      => __( 'Pick the variation before adding it to this link. Nothing is selected by default.', 'order-from-dm' ),
			'variationModalEmpty'      => __( 'This product has no published variations.', 'order-from-dm' ),
			'configureOptions'         => __( 'Configure options', 'order-from-dm' ),
			'selectAttribute'          => __( 'Select: %s', 'order-from-dm' ),
			'productOptionsTitle'      => __( 'Product options: %s', 'order-from-dm' ),
			'pickerHintSingleAxis'     => __( 'Select the required catalog option (may affect price). Other details can be collected in customer fields.', 'order-from-dm' ),
			'pickerHintOptional'       => __( 'Optional options can be skipped here and collected in customer fields later.', 'order-from-dm' ),
			'pickerHintFull'           => __( 'Select the options agreed with your customer. Additional details go in customer fields.', 'order-from-dm' ),
			'axisOptional'             => __( '(optional)', 'order-from-dm' ),
			'selectPlaceholder'        => __( 'Select…', 'order-from-dm' ),
			'skipInFields'             => __( 'Skip / ask in fields', 'order-from-dm' ),
			'addToOrder'               => __( 'Add to order', 'order-from-dm' ),
			'cancel'                   => __( 'Cancel', 'order-from-dm' ),
			'productsInOrder'          => __( 'Products in this order', 'order-from-dm' ),
			'searchAndAddProducts'     => __( 'Search and add products above.', 'order-from-dm' ),
			'quantity'                 => __( 'Qty.', 'order-from-dm' ),
			'noCustomization'          => __( 'No customization', 'order-from-dm' ),
			'configureFieldsHint'      => __( 'Configure what the customer must fill in for this product.', 'order-from-dm' ),
			'configureFields'          => __( 'Configure fields', 'order-from-dm' ),
			'editFields'               => __( 'Edit fields', 'order-from-dm' ),
			'fieldsCount'              => __( '%d field(s)', 'order-from-dm' ),
			'removeProduct'            => __( 'Remove', 'order-from-dm' ),
			'chatCopySection'          => __( 'Checkout messages', 'order-from-dm' ),
			'useLastCopy'              => __( 'Use last saved copy', 'order-from-dm' ),
			'saveDraft'                => __( 'Save draft', 'order-from-dm' ),
			'publish'                  => __( 'Publish', 'order-from-dm' ),
			'titleRequired'            => __( 'Title is required', 'order-from-dm' ),
			'productRequired'          => __( 'Add at least one product', 'order-from-dm' ),
			'fieldsRequired'           => __( 'Add at least one field or enable "No customization"', 'order-from-dm' ),
			'fieldsSaved'              => __( 'Fields saved for this product', 'order-from-dm' ),
			'fieldsSavedToast'         => __( 'Fields updated', 'order-from-dm' ),
			'fieldsEditorUnavailable'  => __( 'Fields editor unavailable. Check your Order From DM connection and reload.', 'order-from-dm' ),
			'fieldsSavedWithTemplate'  => __( 'Fields saved. Template "%s" is now available.', 'order-from-dm' ),
			'templateApplied'          => __( 'Template applied', 'order-from-dm' ),
			'published'                => __( 'Order published', 'order-from-dm' ),
			'draftSaved'               => __( 'Draft saved', 'order-from-dm' ),
			'urlEmptySlug'             => __( 'Enter a slug and save to generate the link.', 'order-from-dm' ),
			'urlShareTitle'            => __( 'Link to share', 'order-from-dm' ),
			'urlActive'                => __( 'Active — ready to share', 'order-from-dm' ),
			'urlDraft'                 => __( 'Draft — publish to activate', 'order-from-dm' ),
			'urlSlugNote'              => __( 'Identifier: /c/%s/ — each order has its own link.', 'order-from-dm' ),
			'linkCopiedShare'          => __( 'Link copied', 'order-from-dm' ),
			'settingsAppearance'       => __( 'Global appearance', 'order-from-dm' ),
			'presetBrand'              => __( 'Brand preset', 'order-from-dm' ),
			'presetNeutral'            => __( 'Neutral preset', 'order-from-dm' ),
			'badgeText'                => __( 'Badge text', 'order-from-dm' ),
			'logo'                     => __( 'Logo', 'order-from-dm' ),
			'chooseLogo'               => __( 'Choose', 'order-from-dm' ),
			'removeLogo'               => __( 'Remove logo', 'order-from-dm' ),
			'saveSettings'             => __( 'Save settings', 'order-from-dm' ),
			'settingsSaved'            => __( 'Settings saved', 'order-from-dm' ),
			'settingsAutoSaveHint'     => __( 'Changes save automatically when you leave a field.', 'order-from-dm' ),
			'mediaLibraryHint'         => __( 'Could not open the media library. Hard-refresh this page (Ctrl+Shift+R) and try again.', 'order-from-dm' ),
			'mediaLibraryTitle'        => __( 'Choose image', 'order-from-dm' ),
			'mediaLibrarySearch'       => __( 'Search images…', 'order-from-dm' ),
			'mediaLibraryEmpty'        => __( 'No images found.', 'order-from-dm' ),
			'mediaLibraryLoading'      => __( 'Loading images…', 'order-from-dm' ),
			'mediaLibraryError'        => __( 'Could not load images from the media library.', 'order-from-dm' ),
			'mediaLibraryLoadMore'     => __( 'Load more', 'order-from-dm' ),
			'livePreview'              => __( 'Live preview', 'order-from-dm' ),
			'livePreviewHint'          => __( 'Preview updates as you edit. Settings save when you leave each field.', 'order-from-dm' ),
			'previewSlugPlaceholder'   => __( 'Order slug for preview', 'order-from-dm' ),
			'previewSlugRequired'      => __( 'Enter a slug to preview the checkout.', 'order-from-dm' ),
			'featureRequestTitle'      => __( 'Request an improvement', 'order-from-dm' ),
			'featureRequestIntro'      => __( 'Tell us what you need. We include your site and email for follow-up.', 'order-from-dm' ),
			'featureType'              => __( 'Request type', 'order-from-dm' ),
			'featureArea'              => __( 'Area', 'order-from-dm' ),
			'featurePriority'          => __( 'Priority', 'order-from-dm' ),
			'featureDescription'       => __( 'Description', 'order-from-dm' ),
			'featureDescriptionPlaceholder' => __( 'What would you like us to improve? What problem did you find?', 'order-from-dm' ),
			'featureSend'              => __( 'Send request', 'order-from-dm' ),
			'featureSending'           => __( 'Sending…', 'order-from-dm' ),
			'featureSent'              => __( 'Request sent — thank you for your feedback', 'order-from-dm' ),
			'featureMinLength'         => __( 'Describe your request (at least 10 characters)', 'order-from-dm' ),
			'fieldDialogTitle'         => __( 'Product fields', 'order-from-dm' ),
			'addField'                 => __( '+ Add field', 'order-from-dm' ),
			'fieldLabel'               => __( 'Label', 'order-from-dm' ),
			'fieldType'                => __( 'Type', 'order-from-dm' ),
			'fieldOptions'             => __( 'Options: comma-separated', 'order-from-dm' ),
			'fieldRequired'            => __( 'Required', 'order-from-dm' ),
			'removeField'              => __( 'Remove field', 'order-from-dm' ),
			'saveFields'               => __( 'Save fields', 'order-from-dm' ),
			'templateName'             => __( 'Template name (optional)', 'order-from-dm' ),
			'recentTemplates'          => __( 'Recent templates', 'order-from-dm' ),
			'licenseSection'           => __( 'Plan & license', 'order-from-dm' ),
			'licensePlanFree'          => __( 'Free plan', 'order-from-dm' ),
			'licensePlanPro'           => __( 'Pro — unlimited', 'order-from-dm' ),
			'licenseUsage'             => __( '%d of %d free orders used', 'order-from-dm' ),
			'licenseUsageUnlimited'    => __( 'Unlimited orders', 'order-from-dm' ),
			'licenseRemaining'         => __( '%d free orders left', 'order-from-dm' ),
			'licenseKeyLabel'          => __( 'License key', 'order-from-dm' ),
			'licenseKeyPlaceholder'    => __( 'Paste your Lemon Squeezy license key', 'order-from-dm' ),
			'licenseActivateBtn'       => __( 'Activate', 'order-from-dm' ),
			'licenseLegalNote'         => __( 'By activating a license you agree to the Terms of Use and the EULA included in the plugin package.', 'order-from-dm' ),
			'licenseLegalTermsLink'    => __( 'Terms of Use', 'order-from-dm' ),
			'licenseDeactivateBtn'     => __( 'Deactivate', 'order-from-dm' ),
			'licenseDeactivateConfirmTitle' => __( 'Deactivate Pro license?', 'order-from-dm' ),
			'licenseDeactivateConfirmBody'  => __( 'This store will return to the free plan. You can activate the same license key again later if you have activations left.', 'order-from-dm' ),
			'licenseBuyBtn'            => __( 'Pro — $9/mo', 'order-from-dm' ),
			'licenseBuyYearlyBtn'      => __( 'Pro — $79/yr', 'order-from-dm' ),
			'licenseActivated'         => __( 'License activated — you now have unlimited orders.', 'order-from-dm' ),
			'licenseProWelcomeTitle'   => __( 'You\'re Pro now!', 'order-from-dm' ),
			'licenseProWelcomeBody'    => __( 'Congratulations — unlimited orders, publish any checkout link, and no more limits on your store.', 'order-from-dm' ),
			'licenseProWelcomeCta'     => __( 'Let\'s go', 'order-from-dm' ),
			'licenseInvalid'           => __( 'That license key could not be activated.', 'order-from-dm' ),
			'licenseDeactivated'       => __( 'License removed.', 'order-from-dm' ),
			'licenseActiveNote'        => __( 'Pro subscription active on this site. Keep billing current so the license stays valid.', 'order-from-dm' ),
			'licenseLimitBanner'       => __( 'You reached your free plan limit. Upgrade to keep receiving orders.', 'order-from-dm' ),
			'licensePublishBlocked'    => __( 'You reached your free plan limit. Upgrade to Pro to publish checkout links.', 'order-from-dm' ),
			'licenseNearLimitBanner'   => __( 'Almost there: %d free orders left. Upgrade to avoid interruptions.', 'order-from-dm' ),
			'licenseBannerPitch'       => __( 'The free plan includes %d orders. Pro is US$9/month or US$79/year for unlimited orders while subscribed.', 'order-from-dm' ),
			'licenseBannerPitchLimit'  => __( 'You\'ve hit the free limit. Unlock unlimited orders with Pro — US$9/month or US$79/year. Cancel anytime.', 'order-from-dm' ),
			'licenseUnverifiedBadge'   => __( 'Plan not verified', 'order-from-dm' ),
			'licenseUnverifiedPitch'   => __( 'We could not reach Reborn Labs to confirm your plan, so publishing links is paused. Check that your site can connect to rebornlabs.me and retry.', 'order-from-dm' ),
			'licenseUnverifiedRetry'   => __( 'Retry check', 'order-from-dm' ),
			'licenseUnverifiedSupport' => __( 'Contact support', 'order-from-dm' ),
			'licenseUnverifiedBlocked' => __( 'We could not verify your plan. Retry in Settings → Plan and license, or contact support.', 'order-from-dm' ),
			'licenseBannerCta'         => __( 'Pro — $9/mo', 'order-from-dm' ),
			'licenseBannerCtaYearly'   => __( 'Pro — $79/yr', 'order-from-dm' ),
			'licenseBannerLicenseCta'  => __( 'Activate license', 'order-from-dm' ),
			'adminBannerCarouselLabel' => __( 'Notices', 'order-from-dm' ),
			'adminBannerCarouselPrev'  => __( 'Previous notice', 'order-from-dm' ),
			'adminBannerCarouselNext'  => __( 'Next notice', 'order-from-dm' ),
			'updatesSection'           => __( 'Updates', 'order-from-dm' ),
			'updatesInstalled'         => __( 'Installed: %s', 'order-from-dm' ),
			'updatesInstalledIncludes' => __( 'What\'s included in this version:', 'order-from-dm' ),
			'updatesLatest'            => __( 'Latest: %s', 'order-from-dm' ),
			'updatesAvailable'         => __( 'A new version is available — update with one click.', 'order-from-dm' ),
			'updatesUpToDate'          => __( 'You are on the latest version.', 'order-from-dm' ),
			'updatesOneClickBtn'       => __( 'Update now', 'order-from-dm' ),
			'updatesRunning'           => __( 'Updating…', 'order-from-dm' ),
			'updatesSuccess'           => __( 'Order From DM was updated to %s.', 'order-from-dm' ),
			'updatesFailed'            => __( 'The plugin could not be updated. Try again from Order From DM settings.', 'order-from-dm' ),
			'updatesPermissionDenied'  => __( 'Your WordPress user cannot update plugins from here. Ask an administrator.', 'order-from-dm' ),
			'updatesPluginsLink'       => __( 'Open Plugins screen', 'order-from-dm' ),
			'updatesUseInAppHint'      => __( 'Update here to see progress in this page. The Plugins screen link opens WordPress update.php and may show a permission error on some hosts.', 'order-from-dm' ),
			'updatesProgressTitle'     => __( 'Updating Order From DM…', 'order-from-dm' ),
			'updatesProgressBody'      => __( 'Downloading and installing the new version. Do not close this tab.', 'order-from-dm' ),
			'updatesAutoToggle'        => __( 'Install updates automatically', 'order-from-dm' ),
			'updatesAutoToggleHint'    => __( 'WordPress will update Order From DM in the background when a new release is published.', 'order-from-dm' ),
			'updateAvailableTitle'     => __( 'Order From DM %s is ready', 'order-from-dm' ),
			'updateAvailableBody'      => __( 'Go to Plugins to install the latest fixes and improvements. This banner stays until you update.', 'order-from-dm' ),
			'updateNoticeTitle'        => __( 'Order From DM was updated to %s', 'order-from-dm' ),
			'updateNoticeDismiss'      => __( 'Got it', 'order-from-dm' ),
			'updateNoticeFallback'     => __( 'Thank you for keeping Order From DM up to date.', 'order-from-dm' ),
			'copyWelcomeLabel'         => __( 'Welcome message', 'order-from-dm' ),
			'copyWelcomeHint'          => __( 'First message in the checkout thread.', 'order-from-dm' ),
			'copyProductsLabel'        => __( 'Message before products', 'order-from-dm' ),
			'copyProductsHint'         => __( 'Optional. Shown just before product cards.', 'order-from-dm' ),
			'copyPaymentLabel'         => __( 'Message before payment', 'order-from-dm' ),
			'copyPaymentHint'          => __( 'Shown when asking the customer to choose a payment method.', 'order-from-dm' ),
			'copyShippingLabel'        => __( 'Message before shipping', 'order-from-dm' ),
			'copyShippingHint'         => __( 'Shown when the customer completed product fields.', 'order-from-dm' ),
			'copySuccessLabel'         => __( 'Note after confirmation', 'order-from-dm' ),
			'copySuccessHint'          => __( 'Below payment details — e.g. send payment proof.', 'order-from-dm' ),
			'copySuccessCloseLabel'    => __( 'Message to close window', 'order-from-dm' ),
			'copySuccessCloseHint'     => __( 'Final chat bubble after payment details — e.g. you can close this window.', 'order-from-dm' ),
			'copySharePreviewLabel'    => __( 'Link preview text', 'order-from-dm' ),
			'copySharePreviewHint'     => __( 'Shown when the link is shared on Instagram, WhatsApp, etc. (preview title image + description). Keep it short.', 'order-from-dm' ),
			'paymentMethodsLabel'      => __( 'Payment methods for this link', 'order-from-dm' ),
			'paymentMethodsHelp'       => __( 'Customers choose among these methods in the chat. Bank transfer stays in-chat; Stripe, PayPal, and Mercado Pago use your WooCommerce gateways (sandbox or live).', 'order-from-dm' ),
			'paymentMethodsEmpty'      => __( 'No compatible payment methods are enabled. Enable Bank transfer (BACS) and/or Stripe, PayPal, or Mercado Pago in WooCommerce → Payments.', 'order-from-dm' ),
			'paymentMethodNeedsSetup'  => __( 'Add bank details', 'order-from-dm' ),
			'paymentOnlineNeedsSetup'  => __( 'Add sandbox/live credentials in WooCommerce → Payments before using this method.', 'order-from-dm' ),
			'paymentBacsSetupTitle'    => __( 'Bank transfer details', 'order-from-dm' ),
			'paymentBacsBank'          => __( 'Bank name', 'order-from-dm' ),
			'paymentBacsHolder'        => __( 'Account holder', 'order-from-dm' ),
			'paymentBacsNumber'        => __( 'Account number', 'order-from-dm' ),
			'paymentBacsInstructions'  => __( 'Instructions (optional)', 'order-from-dm' ),
			'paymentBacsSave'          => __( 'Save to WooCommerce', 'order-from-dm' ),
			'paymentBacsSaved'         => __( 'Bank details saved.', 'order-from-dm' ),
			'paymentMethodsUpdated'    => __( 'Payment methods updated', 'order-from-dm' ),
			'changesSaved'             => __( 'Changes saved', 'order-from-dm' ),
			'paymentSelectAtLeastOne'  => __( 'Select at least one payment method.', 'order-from-dm' ),
			'paymentDemoSandboxBadge'  => __( 'Sandbox', 'order-from-dm' ),
			'paymentOnlineBadge'       => __( 'Online', 'order-from-dm' ),
			'fieldTypeText'            => __( 'Text', 'order-from-dm' ),
			'fieldTypeTextarea'        => __( 'Text area', 'order-from-dm' ),
			'fieldTypeDropdown'        => __( 'Dropdown', 'order-from-dm' ),
			'fieldTypeRadio'           => __( 'Options', 'order-from-dm' ),
			'fieldTypeImage'           => __( 'Image', 'order-from-dm' ),
			'configureCustomFields'    => __( 'Configure custom fields', 'order-from-dm' ),
			'customerFieldsTitle'      => __( 'Product fields', 'order-from-dm' ),
			'editFromProduct'          => __( 'Edit from product', 'order-from-dm' ),
			'closeFieldsConfirm'       => __( 'Close without saving fields? The customer will have nothing to fill in for this product.', 'order-from-dm' ),
			'selectFieldType'          => __( 'Select a field type', 'order-from-dm' ),
			'editBtn'                  => __( 'Edit', 'order-from-dm' ),
			'deleteBtn'                => __( 'Delete', 'order-from-dm' ),
			'backBtn'                  => __( 'Back', 'order-from-dm' ),
			'saveFieldBtn'             => __( 'Save field', 'order-from-dm' ),
			'addFieldTitle'            => __( 'New field · %s', 'order-from-dm' ),
			'editFieldTitle'           => __( 'Edit field · %s', 'order-from-dm' ),
			'fieldLabelRequired'       => __( 'Field name is required.', 'order-from-dm' ),
			'fieldOptionsRequired'     => __( 'Add at least one option.', 'order-from-dm' ),
			'fieldOptionsHint'         => __( 'One option per line. For radio, the first is the default.', 'order-from-dm' ),
			'fieldOptionsLinesPlaceholder' => __( "Option 1\nOption 2\nOption 3", 'order-from-dm' ),
			'fieldOptionalCheckbox'    => __( 'Mark as optional', 'order-from-dm' ),
			'noFieldsYet'              => __( 'No fields yet. Choose a type and add one.', 'order-from-dm' ),
			'unnamedField'             => __( '(unnamed)', 'order-from-dm' ),
			'optionalShort'            => __( 'optional', 'order-from-dm' ),
			'reorderField'             => __( 'Reorder field', 'order-from-dm' ),
			'saveAsTemplate'           => __( 'Save as template (optional)', 'order-from-dm' ),
			'previewNeedsSlug'         => __( 'Save the order with a slug to preview the customer view.', 'order-from-dm' ),
			'previewPlaceholderTitle'  => __( 'Build your checkout link', 'order-from-dm' ),
			'previewPlaceholderStep1'  => __( 'Set a slug for the shareable URL', 'order-from-dm' ),
			'previewPlaceholderStep2'  => __( 'Search and add products to the order', 'order-from-dm' ),
			'previewPlaceholderStep3'  => __( 'Configure custom fields for each product', 'order-from-dm' ),
			'previewPlaceholderStep4'  => __( 'Save draft — the customer preview appears here', 'order-from-dm' ),
			'previewPlaceholderPowered' => __( '⚡️ Powered by Reborn Labs', 'order-from-dm' ),
			'addFieldBtn'              => __( '+ Add field', 'order-from-dm' ),
			'saveDraftBtn'             => __( 'Save draft', 'order-from-dm' ),
			'saveDraftAlreadyDraft'    => __( 'This link is already a draft. Changes save automatically.', 'order-from-dm' ),
			'publishAlreadyPublished'  => __( 'Already published', 'order-from-dm' ),
			'publishBtn'               => __( 'Publish', 'order-from-dm' ),
			'previewTitle'             => __( 'Customer preview', 'order-from-dm' ),
			'tabLinkProducts'          => __( 'Link & products', 'order-from-dm' ),
			'tabChatMessages'          => __( 'Chat messages', 'order-from-dm' ),
			'slugHelpNote'             => __( 'Used in the URL and as the internal order name in your list.', 'order-from-dm' ),
			'slugUrlPlaceholder'       => __( 'your-slug', 'order-from-dm' ),
			'slugRequiredToast'        => __( 'Enter a URL identifier (slug).', 'order-from-dm' ),
			'fieldsMissingPublish'     => __( 'Configure fields for "%s" before publishing (or enable "No customization").', 'order-from-dm' ),
			'fieldsMissingDraft'       => __( 'Fields still need to be configured for "%s".', 'order-from-dm' ),
			'aProduct'                 => __( 'a product', 'order-from-dm' ),
			'publishedLinkCopied'      => __( 'Published — link copied to clipboard', 'order-from-dm' ),
			'publishedOrderToast'      => __( 'Order published', 'order-from-dm' ),
			'saveError'                => __( 'Could not save', 'order-from-dm' ),
			'unnamedOrder'             => __( 'Unnamed order', 'order-from-dm' ),
			'newOrderShort'            => __( 'New link', 'order-from-dm' ),
			'editFieldsCount'          => __( 'Edit fields (%d)', 'order-from-dm' ),
			'productTemplateOption'    => __( 'Product template…', 'order-from-dm' ),
			'recentTemplateOption'     => __( 'Recent template…', 'order-from-dm' ),
			'applyTemplateOption'      => __( 'Apply template…', 'order-from-dm' ),
			'removeProductAria'        => __( 'Remove product', 'order-from-dm' ),
			'lastCopyApplied'          => __( 'Copy from last saved order applied', 'order-from-dm' ),
			'publishAndCopyLink'       => __( 'Publish & copy link', 'order-from-dm' ),
			'mobilePreview'            => __( 'Mobile preview', 'order-from-dm' ),
			'previewModeAdmin'         => __( 'Edit order', 'order-from-dm' ),
			'previewModeUser'          => __( 'Order preview', 'order-from-dm' ),
			'previewModeAdminHint'     => __( 'Tweak products and fields in the chat layout. Edits sync to this order.', 'order-from-dm' ),
			'previewModeUserHint'      => __( 'Full checkout storyboard — messages, products, payment, shipping, and a mocked order-sent ending. Your customer still sees it one step at a time in chat.', 'order-from-dm' ),
			'fieldNumber'              => __( 'Field %d', 'order-from-dm' ),
			'fieldLabelHint'           => __( 'Label shown to the customer in the checkout.', 'order-from-dm' ),
			'fieldLabelPlaceholder'    => __( 'e.g. Size, Color, Notes', 'order-from-dm' ),
			'fieldPlaceholderOptional' => __( 'Placeholder (optional)', 'order-from-dm' ),
			'fieldPlaceholderExample'  => __( 'e.g. Optional hint for the customer', 'order-from-dm' ),
			'fieldOptionsLabel'        => __( 'Options', 'order-from-dm' ),
			'fieldOptionsPlaceholder'  => __( 'Option A, Option B, Option C (comma-separated)', 'order-from-dm' ),
			'fieldRequiredCheckbox'    => __( 'Required', 'order-from-dm' ),
			'templateNameExample'      => __( 'e.g. My usual fields', 'order-from-dm' ),
			'productColLabel'          => __( 'Product:', 'order-from-dm' ),
			'productTemplatesLabel'    => __( 'Templates for this product', 'order-from-dm' ),
			'recentlyUsedLabel'        => __( 'Recently used', 'order-from-dm' ),
			'selectTemplateOption'     => __( 'Select template…', 'order-from-dm' ),
			'optionsForProduct'        => __( 'Options: %s', 'order-from-dm' ),
			'skuLabel'                 => __( 'SKU %s', 'order-from-dm' ),
			'typingSpeedLabel'         => __( 'Message animation', 'order-from-dm' ),
			'typingSpeedAnimated'      => __( 'Animated', 'order-from-dm' ),
			'typingSpeedWithout'       => __( 'Without animation', 'order-from-dm' ),
			'colorPrimary'             => __( 'Primary color', 'order-from-dm' ),
			'colorSecondary'           => __( 'Secondary color', 'order-from-dm' ),
			'colorBackground'          => __( 'Background color', 'order-from-dm' ),
			'colorForeground'          => __( 'Text color', 'order-from-dm' ),
			'settingsLanguage'         => __( 'Language', 'order-from-dm' ),
			'settingsLanguageHint'     => __( 'Admin panel language. Saved in this browser.', 'order-from-dm' ),
			'langEnglish'              => __( 'English', 'order-from-dm' ),
			'langSpanish'              => __( 'Spanish', 'order-from-dm' ),
			'genericError'             => __( 'Error', 'order-from-dm' ),
		);
	}

	public static function feature_request_options() {
		dc_v2_load_textdomain();
		return array(
			'types' => array(
				array( 'value' => 'new_feature', 'label' => __( 'New feature', 'order-from-dm' ) ),
				array( 'value' => 'improvement', 'label' => __( 'Improve existing feature', 'order-from-dm' ) ),
				array( 'value' => 'bug', 'label' => __( 'Report a problem', 'order-from-dm' ) ),
				array( 'value' => 'feedback', 'label' => __( 'Idea / feedback', 'order-from-dm' ) ),
				array( 'value' => 'other', 'label' => __( 'Other', 'order-from-dm' ) ),
			),
			'areas' => array(
				array( 'value' => 'composer', 'label' => __( 'Orders & composer', 'order-from-dm' ) ),
				array( 'value' => 'preview', 'label' => __( 'Preview / customer checkout', 'order-from-dm' ) ),
				array( 'value' => 'products', 'label' => __( 'WooCommerce products', 'order-from-dm' ) ),
				array( 'value' => 'fields', 'label' => __( 'Fields & templates', 'order-from-dm' ) ),
				array( 'value' => 'settings', 'label' => __( 'Settings / appearance', 'order-from-dm' ) ),
				array( 'value' => 'other', 'label' => __( 'Other', 'order-from-dm' ) ),
			),
			'priorities' => array(
				array( 'value' => 'whenever', 'label' => __( 'Whenever possible', 'order-from-dm' ) ),
				array( 'value' => 'important', 'label' => __( 'Important for my business', 'order-from-dm' ) ),
				array( 'value' => 'blocking', 'label' => __( 'Blocking my work', 'order-from-dm' ) ),
			),
		);
	}

	public static function public_strings() {
		dc_v2_load_textdomain();
		return array(
			'trustPayment'           => __( 'Secure bank transfer payment', 'order-from-dm' ),
			'continue'               => __( 'Continue', 'order-from-dm' ),
			'confirmOrder'           => __( 'Confirm order', 'order-from-dm' ),
			'shippingIncomplete'     => __( 'Complete shipping details', 'order-from-dm' ),
			'processing'             => __( 'Processing…', 'order-from-dm' ),
			'select'                 => __( 'Select…', 'order-from-dm' ),
			'quantity'               => __( 'Quantity: %d', 'order-from-dm' ),
			'noExtraData'            => __( 'This product does not require extra details.', 'order-from-dm' ),
			'fieldsNotConfigured'    => __( 'This product has no fields configured yet. Please contact the store.', 'order-from-dm' ),
			'unit'                   => __( 'Unit %d', 'order-from-dm' ),
			'unitDetails'            => __( 'Details', 'order-from-dm' ),
			'unitFill'               => __( 'Fill fields %d', 'order-from-dm' ),
			'unitFillDetails'        => __( 'Fill fields', 'order-from-dm' ),
			'unitTodo'               => __( 'To do %d/%d', 'order-from-dm' ),
			'unitProgress'           => __( '%d/%d', 'order-from-dm' ),
			'unitStatusComplete'     => __( 'Completed', 'order-from-dm' ),
			'unitStatusPending'      => __( 'Pending', 'order-from-dm' ),
			'viewProduct'            => __( 'View product', 'order-from-dm' ),
			'productPreview'         => __( 'Product preview', 'order-from-dm' ),
			'closeSheet'             => __( 'Close', 'order-from-dm' ),
			'openProductPage'        => __( 'Open product page', 'order-from-dm' ),
			'seeMoreProducts'        => __( 'Show %d more product', 'order-from-dm' ),
			'seeMoreProductsPlural'  => __( 'Show %d more products', 'order-from-dm' ),
			'uploadPhoto'            => __( 'Tap to upload photo', 'order-from-dm' ),
			'changePhoto'            => __( 'Tap to change photo', 'order-from-dm' ),
			'shippingName'           => __( 'Full name', 'order-from-dm' ),
			'shippingPhone'          => __( 'Phone', 'order-from-dm' ),
			'shippingEmail'          => __( 'Email', 'order-from-dm' ),
			'shippingAddress'        => __( 'Address', 'order-from-dm' ),
			'shippingCountry'        => __( 'Country', 'order-from-dm' ),
			'shippingRegion'         => __( 'Region', 'order-from-dm' ),
			'shippingComuna'         => __( 'District', 'order-from-dm' ),
			'orderNumber'            => __( 'Order #%s', 'order-from-dm' ),
			'total'                  => __( 'Total:', 'order-from-dm' ),
			'estimatedTotal'         => __( 'Estimated total:', 'order-from-dm' ),
			'confirmError'           => __( 'Could not confirm. Please try again.', 'order-from-dm' ),
			'loadError'              => __( 'Could not load this order.', 'order-from-dm' ),
			'validationIncomplete'   => __( '%s — %d incomplete field', 'order-from-dm' ),
			'validationIncompletePlural' => __( '%s — %d incomplete fields', 'order-from-dm' ),
			'unitSuffix'             => __( ' — unit %d', 'order-from-dm' ),
			'productsReady'          => __( 'All set! ✅', 'order-from-dm' ),
			'orderConfirmed'         => __( 'Order confirmed! Almost yours 🎉', 'order-from-dm' ),
			'orderRequested'         => __( 'Order requested', 'order-from-dm' ),
			'orderPaid'              => __( 'Paid', 'order-from-dm' ),
			'fieldRequired'          => __( 'Required', 'order-from-dm' ),
			'shippingEmailInvalid'   => __( 'Enter a valid email', 'order-from-dm' ),
			'shippingPhoneInvalid'   => __( 'Enter a valid phone', 'order-from-dm' ),
			'bacsTransferTo'         => __( 'Transfer to:', 'order-from-dm' ),
			'bacsBank'               => __( 'Bank', 'order-from-dm' ),
			'bacsHolder'             => __( 'Account holder', 'order-from-dm' ),
			'bacsAccount'            => __( 'Account number', 'order-from-dm' ),
			'bacsCopy'               => __( 'Copy number', 'order-from-dm' ),
			'bacsCopied'             => __( 'Copied ✓', 'order-from-dm' ),
			'bacsSendProof'          => __( 'Send the transfer receipt with your order number by Instagram. As soon as we confirm it, we start preparing it 💜', 'order-from-dm' ),
			'confirmFailedBubble'    => __( 'Something went wrong confirming. Please try again in a moment.', 'order-from-dm' ),
			'comuna'                 => __( 'District', 'order-from-dm' ),
			'editProduct'            => __( 'Edit product', 'order-from-dm' ),
			'configureFields'        => __( 'Configure fields', 'order-from-dm' ),
			'applyTemplateOption'    => __( 'Apply template…', 'order-from-dm' ),
			'productTemplatesLabel'  => __( 'Product templates', 'order-from-dm' ),
			'recentlyUsedLabel'      => __( 'Recently used', 'order-from-dm' ),
			'adminPreviewHint'       => __( 'Tap a product to edit', 'order-from-dm' ),
			'decreaseQty'            => __( 'Decrease quantity', 'order-from-dm' ),
			'increaseQty'            => __( 'Increase quantity', 'order-from-dm' ),
			'fieldTypeText'          => __( 'Text', 'order-from-dm' ),
			'fieldTypeTextarea'      => __( 'Long text', 'order-from-dm' ),
			'fieldTypeDropdown'      => __( 'Dropdown', 'order-from-dm' ),
			'fieldTypeRadio'         => __( 'Choice', 'order-from-dm' ),
			'fieldTypeImage'         => __( 'Photo', 'order-from-dm' ),
			'paymentDemoSandboxBadge'=> __( 'Sandbox', 'order-from-dm' ),
			'paymentOnlineBadge'     => __( 'Online', 'order-from-dm' ),
			'demoPayOrderReady'      => __( 'Order created — complete payment to finish ✅', 'order-from-dm' ),
			'demoPayPaidBubble'      => __( 'Payment received — you\'re all set ✅', 'order-from-dm' ),
			'demoPayPaidLabel'       => __( 'Paid', 'order-from-dm' ),
			'demoPayPaidNote'        => __( 'Thanks! We will start preparing your order.', 'order-from-dm' ),
			'demoPayHint'            => __( 'You will continue to a secure checkout, then return here.', 'order-from-dm' ),
			'demoPayComplete'        => __( 'Pay now', 'order-from-dm' ),
			'paymentPendingReturn'   => __( 'We have not confirmed the payment yet. If you already paid, wait a moment or check your email from the payment provider.', 'order-from-dm' ),
			'stripePayInChatHint'    => __( 'Enter your card below — you stay in this chat.', 'order-from-dm' ),
			'previewDemoOrderNote'   => __( 'Preview only — no real order was created.', 'order-from-dm' ),
			'previewDemoOrderNumber' => __( 'Preview', 'order-from-dm' ),
		);
	}

	public static function appearance_presets() {
		dc_v2_load_textdomain();
		return array(
			'orderfromdm' => array(
				'label' => 'Order From DM',
				'values' => array_merge( array(
					'preset'     => 'orderfromdm',
					'primary'    => '#3797f0',
					'secondary'  => '#a8a8a8',
					'background' => '#000000',
					'foreground' => '#f5f5f5',
				), dc_v2_orderfromdm_appearance_tokens() ),
			),
			'light' => array(
				'label' => __( 'Light', 'order-from-dm' ),
				'values' => array_merge( array(
					'preset'     => 'light',
					'primary'    => '#18181b',
					'secondary'  => '#71717a',
					'background' => '#fafafa',
					'foreground' => '#09090b',
				), dc_v2_light_appearance_tokens() ),
			),
			'dark' => array(
				'label' => __( 'Dark', 'order-from-dm' ),
				'values' => array_merge( array(
					'preset'     => 'dark',
					'primary'    => '#f4f4f5',
					'secondary'  => '#a1a1aa',
					'background' => '#09090b',
					'foreground' => '#fafafa',
				), dc_v2_dark_appearance_tokens() ),
			),
		);
	}
}
