Plugin Directory

Changeset 3727722


Ignore:
Timestamp:
10/04/2026 06:50:23 PM (3 weeks ago)
Author:
moknah
Message:

1.4.1: Listener Feedback filters, large-site support, retention setting

Location:
ats-moknah-article-to-speech
Files:
476 added
9 edited

Legend:

Unmodified
Added
Removed
  • ats-moknah-article-to-speech/trunk/README.md

    r3717670 r3727722  
    1 # ATS Moknah - Article to Speech WordPress Plugin
     1# ATS Moknah – Text to Speech, AI Voice & Audio Player for WordPress
    22
    33Convert your WordPress articles into engaging AI-powered speech with text highlighting and advanced listener analytics.
    … …  
    2626- 🧩 **Custom CSS** - Add your own CSS, or edit the player's full built-in stylesheet
    2727- 🚗 **Car Mode** - Large-button, distraction-free listening mode
     28- 💬 **Listener Feedback** - Readers rate the audio in the player; see satisfaction and issues per article
    2829- 🔐 **Secure API Integration** - Uses the Moknah TTS API for reliable voice generation
    2930- 🎨 **Frontend Display** - Automatically displays an accessible audio player on enabled posts
    … …  
    4748## Getting Your API Key
    4849
    49 To use ATS Moknah, you need an API key from Moknah.io:
    50 
    51 📧 **Email**: sales@moknah.io 
    52 **Subject**: API Key Request for ATS Moknah Plugin
    53 
    54 Include your website URL and intended usage in your request.
     50To use ATS Moknah, you need an API key from Moknah.io.
     51
     52> [!IMPORTANT]
     53> **Register with an email on your website's domain.** Company access can only be requested from an account whose email domain matches the company website. For `https://yourcompany.com`, register with `you@yourcompany.com`. Accounts using Gmail, Outlook, Yahoo or any other domain **cannot** submit the request.
     54
     551. **Register** at [https://moknah.io/app/acc/register/](https://moknah.io/app/acc/register/) using your company email.
     562. **Request Company access** at [https://moknah.io/en/app/acc/my-company/request/](https://moknah.io/en/app/acc/my-company/request/): submit your company name, website, and (optionally) your purpose.
     573. **Wait for approval.** Company requests are reviewed by Moknah.
     584. **Get your API key.** Once approved, create and manage your API key from your Moknah account.
     595. **Connect WordPress.** Paste the key into **Settings → ATS Moknah → Moknah API Key** and save.
     60
     61Approved companies can use ATS Moknah services. The WordPress plugin is the primary integration, but not the only supported channel.
    5562
    5663---
    … …  
    272279## Changelog
    273280
     281### Version 1.4.1
     282- New: "Get an API key" links and step-by-step help in Settings and the post editor (register on Moknah.io, request company access, paste the key), with a clear warning that your Moknah account email must use your website's domain.
     283- New: notice on ATS Moknah screens when a new version is available, with one-click update (or a note when auto-updates are on).
     284- New: one-time "What's new" notice after updating.
     285- New: in-plugin star rating (ATS Moknah screens + post editor after audio is ready). 4–5 stars → one-click share on WordPress.org (sign-in lands on the review form); 1–3 stars → private feedback to the Moknah team, no account needed.
     286- New: "Rate" and "Get API key" links on the Plugins screen.
     287- New: Listener Feedback — readers answer "How was this audio?" in the player (good / not good + reasons + optional comment); results under ATS Moknah → Listener Feedback with per-article satisfaction, top issues, recent comments and CSV export.
     288- New: Listener Feedback filters — date range or custom dates, article search, sorting, minimum responses, reason / device / with-comment / text search; bulk delete and filtered CSV export.
     289- Improved: scales to very large sites (running totals, pagination, retention setting for old plain "Good" votes).
     290- New: admin translations for Hindi, Spanish, French, Chinese (Simplified), Japanese, Russian, German, Portuguese (Brazil), Turkish, Indonesian, Urdu, Persian, Korean and Italian.
     291- Improved: complete Arabic translation, including the post editor messages.
     292- Improved: clearer plugin name and description.
     293
    274294### Version 1.4.0
    275295- Added support for pages and custom post types – choose which post types get ATS in Display Settings.
  • ats-moknah-article-to-speech/trunk/assets/css/admin.css

    r3717670 r3727722  
    758758.ats-pt-selector-help { display: block; margin-top: 4px; font-size: 11px; color: #646970; line-height: 1.4; }
    759759.ats-pt-table td { vertical-align: top; }
     760
     761/* 1.4.1: settings footer rate link + meta box note */
     762.ats-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
     763
     764
     765
     766.ats-mb-alert-note{display:block;margin-top:4px;font-size:11.5px;color:#6b4b00}
     767
     768/* listener feedback summary in ATS Options */
     769.ats-mb-listeners{display:flex;align-items:center;gap:10px;margin-top:8px;padding:6px 10px;border-radius:6px;background:#f6f7f7;font-size:12px;color:#50575e;text-decoration:none}
     770.ats-mb-listeners:hover{background:#f0f0f1}
     771.ats-mb-listeners b{display:inline-flex;align-items:center;gap:3px}
     772.ats-mb-listeners .dashicons{width:15px;height:15px;font-size:15px}
     773.ats-mb-listeners .is-up{color:#00813d}.ats-mb-listeners .is-down{color:#b32d2e}
  • ats-moknah-article-to-speech/trunk/ats-moknah.php

    r3717670 r3727722  
    11<?php
    22/*
    3 Plugin Name: ATS Moknah
    4 Description: Convert WordPress articles to speech using Moknah TTS API.
    5 Version: 1.4.0
     3Plugin Name: ATS Moknah – Text to Speech, AI Voice & Audio Player
     4Description: Turn posts into natural AI voice audio. Text to speech in Arabic, English and more, with an audio player, word highlighting and listener analytics.
     5Version: 1.4.1
    66Requires PHP: 8.2
    77Requires at least: 5.8
    … …  
    3333define('ATS_MOKNAH_PATH', plugin_dir_path(__FILE__));
    3434define('ATS_MOKNAH_URL', plugin_dir_url(__FILE__));
     35define('ATS_MOKNAH_VERSION', '1.4.1');
    3536
    3637add_filter('plugin_action_links_' . plugin_basename(__FILE__), function ($links) {
    … …  
    6162        . '<p>' . esc_html__('For abuse prevention and deduplication, ATS Moknah stores a salted visitor hash, a salted IP hash, an anonymized IP value, and a truncated user-agent string. An anonymous first-party cookie (ats_vid) may be set for visitor deduplication.', 'ats-moknah-article-to-speech') . '</p>'
    6263        . '<p>' . esc_html__('Analytics data retention is controlled by your site policy; a common retention window is 30 to 90 days for raw event data.', 'ats-moknah-article-to-speech') . '</p>'
    63         . '<p>' . esc_html__('When GeoIP headers are unavailable, ATS Moknah may send the visitor IP to ipapi.co (third-party geolocation service) to resolve a 2-letter country code and cache it locally.', 'ats-moknah-article-to-speech') . '</p>';
     64        . '<p>' . esc_html__('When GeoIP headers are unavailable, ATS Moknah may send the visitor IP to ipapi.co (third-party geolocation service) to resolve a 2-letter country code and cache it locally.', 'ats-moknah-article-to-speech') . '</p>'
     65        . '<p>' . esc_html__('If an administrator chooses to send feedback from the plugin, the message, star rating, site URL, plugin/WordPress/PHP versions and (only if allowed) the administrator\'s email are emailed to Moknah.', 'ats-moknah-article-to-speech') . '</p>'
     66        . '<p>' . esc_html__('If listener feedback is enabled, visitors can rate the audio in the player. Their vote, chosen reasons, optional comment, the voice and device type are stored in this site\'s database with a salted visitor hash (no IP address). Nothing is sent to Moknah.', 'ats-moknah-article-to-speech') . '</p>';
    6467
    6568    wp_add_privacy_policy_content(
    … …  
    8184require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-player-design-admin.php';
    8285require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-callback.php';
     86require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-notices.php';
     87require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-rating.php';
     88require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-feedback.php';
    8389
    8490require_once ATS_MOKNAH_PATH . 'includes/class-ats-moknah-frontend.php';
    … …  
    8894\AtsMoknahPlugin\Admin::register();
    8995\AtsMoknahPlugin\PlayerDesignAdmin::register();
     96\AtsMoknahPlugin\Notices::register();
     97\AtsMoknahPlugin\Rating::register();
     98\AtsMoknahPlugin\Feedback::register();
     99register_deactivation_hook(__FILE__, ['\\AtsMoknahPlugin\\Feedback', 'deactivate']);
    90100
    91101// Register REST callback
  • ats-moknah-article-to-speech/trunk/includes/class-ats-moknah-admin.php

    r3717670 r3727722  
    27992799                        <?php esc_html_e('Add your Moknah API key to start generating audio.', 'ats-moknah-article-to-speech'); ?>
    28002800                        <a href="<?php echo esc_url($settingsUrl); ?>"><?php esc_html_e('Open settings', 'ats-moknah-article-to-speech'); ?></a>
     2801                        &middot;
     2802                        <a href="<?php echo esc_url(Notices::REGISTER_URL); ?>" target="_blank" rel="noopener"><?php esc_html_e('Get an API key', 'ats-moknah-article-to-speech'); ?></a>
    28012803                    </span>
     2804                    <span class="ats-mb-alert-note"><?php esc_html_e('Register with an email on your website\'s domain — company access requires a matching email domain.', 'ats-moknah-article-to-speech'); ?></span>
    28022805                </div>
    28032806            <?php elseif (!$hasVoices) : ?>
    … …  
    29192922                    </div>
    29202923                    <audio controls preload="metadata" src="<?php echo esc_url($audioUrl); ?>"></audio>
     2924                    <?php $fb = Feedback::postSummary((int)$post->ID); if ($fb['up'] + $fb['down'] > 0): ?>
     2925                        <a class="ats-mb-listeners" href="<?php echo esc_url(admin_url('admin.php?page=' . Feedback::PAGE_SLUG . '&range=all')); ?>">
     2926                            <span><?php esc_html_e('Listeners', 'ats-moknah-article-to-speech'); ?></span>
     2927                            <b class="is-up"><span class="dashicons dashicons-thumbs-up" aria-hidden="true"></span><?php echo esc_html(number_format_i18n($fb['up'])); ?></b>
     2928                            <b class="is-down"><span class="dashicons dashicons-thumbs-down" aria-hidden="true"></span><?php echo esc_html(number_format_i18n($fb['down'])); ?></b>
     2929                        </a>
     2930                    <?php endif; ?>
    29212931                </div>
     2932                <?php if (!$is_locked && $status !== 'failed' && Rating::shouldShowInEditor()) {
     2933                    Rating::renderCard('editor');
     2934                } ?>
    29222935            <?php endif; ?>
    29232936
    … …  
    30483061                                        ?>
    30493062                                    </p>
     3063                                <?php else: ?>
     3064                                    <style><?php echo Notices::apiKeyHelpCss(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static CSS ?></style>
     3065                                    <?php echo Notices::apiKeyHelpHtml(false); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped inside ?>
    30503066                                <?php endif; ?>
    30513067                            </div>
    … …  
    32283244                            </div>
    32293245                        </div>
     3246
     3247                        <div class="ats-settings-row">
     3248                            <label class="ats-settings-label" for="ats-listener-feedback">
     3249                                <span class="ats-settings-label-text"><?php esc_html_e('Listener Feedback', 'ats-moknah-article-to-speech'); ?></span>
     3250                                <span class="ats-settings-label-desc"><?php esc_html_e('Ask listeners "How was this audio?" in the player after they listen to half of an article. Results appear under ATS Moknah → Listener Feedback.', 'ats-moknah-article-to-speech'); ?></span>
     3251                            </label>
     3252                            <div class="ats-settings-field">
     3253                                <input type="hidden" name="<?php echo esc_attr(Feedback::OPTION_ENABLED); ?>" value="0">
     3254                                <label class="ats-toggle">
     3255                                    <input type="checkbox" id="ats-listener-feedback" name="<?php echo esc_attr(Feedback::OPTION_ENABLED); ?>" value="1" <?php checked(Feedback::isEnabled()); ?>>
     3256                                    <span class="ats-toggle-slider"></span>
     3257                                    <span class="ats-toggle-label"><?php esc_html_e('Show the feedback question in the player', 'ats-moknah-article-to-speech'); ?></span>
     3258                                </label>
     3259                                <p class="description" style="margin-top:10px">
     3260                                    <label for="ats-feedback-retention"><?php esc_html_e('Keep plain "Good" votes for', 'ats-moknah-article-to-speech'); ?></label>
     3261                                    <select id="ats-feedback-retention" name="<?php echo esc_attr(Feedback::OPTION_RETENTION); ?>">
     3262                                        <?php $ats_ret = (string)get_option(Feedback::OPTION_RETENTION, '90'); foreach (Feedback::retentionChoices() as $ats_k => $ats_l): ?>
     3263                                            <option value="<?php echo esc_attr((string)$ats_k); ?>" <?php selected($ats_ret, (string)$ats_k); ?>><?php echo esc_html($ats_l); ?></option>
     3264                                        <?php endforeach; ?>
     3265                                    </select>
     3266                                    <br><?php esc_html_e('Totals and charts are kept forever. "Not good" votes, reasons and comments are never removed automatically.', 'ats-moknah-article-to-speech'); ?>
     3267                                </p>
     3268                                <p class="description"><a href="<?php echo esc_url(admin_url('admin.php?page=' . Feedback::PAGE_SLUG)); ?>"><?php esc_html_e('View listener feedback', 'ats-moknah-article-to-speech'); ?> &rarr;</a></p>
     3269                            </div>
     3270                        </div>
    32303271                    </div>
    32313272
  • ats-moknah-article-to-speech/trunk/languages/ats-moknah-article-to-speech-ar-f98be19bec7bc848ce3ed383c60037c1.json

    r3717670 r3727722  
    1 {"translation-revision-date": "2026-09-28 17:02+0000", "generator": "ATS Moknah i18n", "domain": "messages", "locale_data": {"messages": {"": {"domain": "messages", "lang": "ar", "plural-forms": "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);"}, "Not enough credits": ["الرصيد غير كافٍ"], "Your Moknah balance is too low for this article. Top up, then try again.": ["رصيدك في مُكنة غير كافٍ لهذا المقال. اشحن رصيدك ثم حاول مرة أخرى."], "API key rejected": ["تم رفض مفتاح API"], "Moknah did not accept your API key. Check it in settings.": ["لم تقبل مُكنة مفتاح API الخاص بك. تحقق منه في الإعدادات."], "Generation timed out": ["انتهت مهلة الإنشاء"], "Moknah did not finish within 5 minutes. This is usually temporary — try again.": ["لم تُنهِ مُكنة المعالجة خلال 5 دقائق. غالبًا ما يكون هذا مؤقتًا — حاول مرة أخرى."], "Could not reach Moknah": ["تعذّر الاتصال بمُكنة"], "Audio generation failed": ["فشل إنشاء الصوت"], "Try again. If it keeps failing, send the details below to sales@moknah.io.": ["حاول مرة أخرى. إذا استمر الفشل، أرسل التفاصيل أدناه إلى sales@moknah.io."], "Try Again": ["حاول مرة أخرى"], "Failed": ["فشل"], "Technical details": ["التفاصيل التقنية"], "Session expired": ["انتهت الجلسة"], "Refresh the page and try again.": ["حدّث الصفحة ثم حاول مرة أخرى."], "Check your internet connection and try again.": ["تحقق من اتصالك بالإنترنت ثم حاول مرة أخرى."], "Server error": ["خطأ في الخادم"], "Your site returned an error. Try again in a moment.": ["أعاد موقعك خطأً. حاول مرة أخرى بعد قليل."], "Already generating": ["الإنشاء جارٍ بالفعل"], "A generation is already running for this post. Wait for it to finish.": ["هناك عملية إنشاء قيد التشغيل لهذا المقال. انتظر حتى تنتهي."], "Confirm Audio Generation": ["تأكيد إنشاء الصوت"]}}, "comment": {"reference": "assets/js/admin.js"}}
     1{"translation-revision-date": "2026-10-04 16:10+0000", "generator": "ATS Moknah i18n", "domain": "messages", "locale_data": {"messages": {"": {"domain": "messages", "lang": "ar", "plural-forms": "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);"}, "Not enough credits": ["الرصيد غير كافٍ"], "Your Moknah balance is too low for this article. Top up, then try again.": ["رصيدك في مُكنة غير كافٍ لهذا المقال. اشحن رصيدك ثم حاول مرة أخرى."], "API key rejected": ["تم رفض مفتاح API"], "Moknah did not accept your API key. Check it in settings.": ["لم تقبل مُكنة مفتاح API الخاص بك. تحقق منه في الإعدادات."], "Generation timed out": ["انتهت مهلة الإنشاء"], "Moknah did not finish within 5 minutes. This is usually temporary — try again.": ["لم تُنهِ مُكنة المعالجة خلال 5 دقائق. غالبًا ما يكون هذا مؤقتًا — حاول مرة أخرى."], "Could not reach Moknah": ["تعذّر الاتصال بمُكنة"], "Audio generation failed": ["فشل إنشاء الصوت"], "Try again. If it keeps failing, send the details below to sales@moknah.io.": ["حاول مرة أخرى. إذا استمر الفشل، أرسل التفاصيل أدناه إلى sales@moknah.io."], "Try Again": ["حاول مرة أخرى"], "Failed": ["فشل"], "Technical details": ["التفاصيل التقنية"], "Session expired": ["انتهت الجلسة"], "Refresh the page and try again.": ["حدّث الصفحة ثم حاول مرة أخرى."], "Check your internet connection and try again.": ["تحقق من اتصالك بالإنترنت ثم حاول مرة أخرى."], "Server error": ["خطأ في الخادم"], "Your site returned an error. Try again in a moment.": ["أعاد موقعك خطأً. حاول مرة أخرى بعد قليل."], "Already generating": ["الإنشاء جارٍ بالفعل"], "A generation is already running for this post. Wait for it to finish.": ["هناك عملية إنشاء قيد التشغيل لهذا المقال. انتظر حتى تنتهي."], "Confirm Audio Generation": ["تأكيد إنشاء الصوت"]}}, "comment": {"reference": "assets/js/admin.js"}}
  • ats-moknah-article-to-speech/trunk/languages/ats-moknah-article-to-speech-ar.po

    r3717670 r3727722  
    1 #
    2 msgid ""
    3 msgstr ""
    4 "Project-Id-Version: ATS Moknah 1.4.0\n"
    5 "Report-Msgid-Bugs-To: sales@moknah.io\n"
    6 "POT-Creation-Date: 2026-09-28T17:02:00+00:00\n"
    7 "PO-Revision-Date: 2026-09-28 17:02+0000\n"
     1# Copyright (C) 2026 Moknah.io
     2# This file is distributed under the GPLv2 or later.
     3msgid ""
     4msgstr ""
     5"Project-Id-Version: ATS Moknah 1.4.1\n"
     6"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ats-moknah-"
     7"article-to-speech\n"
     8"POT-Creation-Date: 2026-10-04T17:19:10+00:00\n"
     9"PO-Revision-Date: 2026-10-04 16:10+0000\n"
    810"Last-Translator: <EMAIL@ADDRESS>\n"
    911"Language-Team: Arabic\n"
    … …  
    1214"Content-Type: text/plain; charset=UTF-8\n"
    1315"Content-Transfer-Encoding: 8bit\n"
    14 "Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
     16"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
     17"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
    1518"X-Domain: ats-moknah-article-to-speech\n"
    1619"X-Generator: Loco https://localise.biz/\n"
    1720
    1821#. Plugin Name of the plugin
    19 #: ats-moknah.php ats-moknah.php:66 includes/class-ats-moknah-admin.php:46
    20 #: includes/class-ats-moknah-admin.php:47
    21 msgid "ATS Moknah"
    22 msgstr "ATS Moknah"
     22#: ats-moknah.php
     23msgid "ATS Moknah – Text to Speech, AI Voice & Audio Player"
     24msgstr "ATS Moknah – تحويل النص إلى كلام وصوت بالذكاء الاصطناعي ومشغل صوتي"
    2325
    2426#. Plugin URI of the plugin
    … …  
    2931#. Description of the plugin
    3032#: ats-moknah.php
    31 msgid "Convert WordPress articles to speech using Moknah TTS API."
    32 msgstr ""
    33 "حوّل مقالات ووردبريس إلى كلام مسموع باستخدام واجهة Moknah TTS البرمجية."
     33msgid ""
     34"Turn posts into natural AI voice audio. Text to speech in Arabic, English "
     35"and more, with an audio player, word highlighting and listener analytics."
     36msgstr ""
     37"حوّل مقالاتك إلى صوت طبيعي بالذكاء الاصطناعي. تحويل النص إلى كلام بالعربية "
     38"والإنجليزية وغيرهما، مع مشغل صوتي وتظليل الكلمات وتحليلات المستمعين."
    3439
    3540#. Author of the plugin
    … …  
    4449msgstr "https://moknah.io/"
    4550
    46 #: ats-moknah.php:59
     51#: ats-moknah.php:60
    4752msgid ""
    4853"ATS Moknah sends post content to the Moknah TTS API to generate audio files."
    4954msgstr ""
    50 "يرسل ATS Moknah محتوى المقال إلى واجهة برمجة تطبيقات Moknah TTS لإنشاء ملفات"
    51 " صوتية."
    52 
    53 #: ats-moknah.php:60
     55"يرسل ATS Moknah محتوى المقال إلى واجهة برمجة تطبيقات Moknah TTS لإنشاء ملفات "
     56"صوتية."
     57
     58#: ats-moknah.php:61
    5459msgid ""
    5560"The analytics module stores playback events and aggregated totals in your "
    5661"WordPress database."
    5762msgstr ""
    58 "تقوم وحدة التحليلات بتخزين أحداث التشغيل والمجاميع الإجمالية في قاعدة بيانات"
    59 " ووردبريس الخاصة بك."
    60 
    61 #: ats-moknah.php:61
     63"تقوم وحدة التحليلات بتخزين أحداث التشغيل والمجاميع الإجمالية في قاعدة بيانات "
     64"ووردبريس الخاصة بك."
     65
     66#: ats-moknah.php:62
    6267msgid ""
    6368"For abuse prevention and deduplication, ATS Moknah stores a salted visitor "
    … …  
    7176"الأول (ats_vid) لمنع تكرار الزوار."
    7277
    73 #: ats-moknah.php:62
     78#: ats-moknah.php:63
    7479msgid ""
    7580"Analytics data retention is controlled by your site policy; a common "
    … …  
    7984"بالبيانات الأولية للأحداث تتراوح بين 30 إلى 90 يومًا."
    8085
    81 #: ats-moknah.php:63
     86#: ats-moknah.php:64
    8287msgid ""
    8388"When GeoIP headers are unavailable, ATS Moknah may send the visitor IP to "
    … …  
    8590"code and cache it locally."
    8691msgstr ""
    87 "عندما تكون ترويسات GeoIP غير متاحة، قد يقوم ATS Moknah بإرسال عنوان IP الخاص"
    88 " بالزائر إلى ipapi.co (خدمة تحديد الموقع الجغرافي لطرف ثالث) لتحديد رمز "
    89 "البلد المكون من حرفين وتخزينه محليًا."
     92"عندما تكون ترويسات GeoIP غير متاحة، قد يقوم ATS Moknah بإرسال عنوان IP الخاص "
     93"بالزائر إلى ipapi.co (خدمة تحديد الموقع الجغرافي لطرف ثالث) لتحديد رمز البلد "
     94"المكون من حرفين وتخزينه محليًا."
     95
     96#: ats-moknah.php:65
     97msgid ""
     98"If an administrator chooses to send feedback from the plugin, the message, "
     99"star rating, site URL, plugin/WordPress/PHP versions and (only if allowed) "
     100"the administrator's email are emailed to Moknah."
     101msgstr ""
     102"إذا اختار أحد المسؤولين إرسال ملاحظات من الإضافة، تُرسل الرسالة والتقييم "
     103"بالنجوم ورابط الموقع وإصدارات الإضافة وووردبريس وPHP و(فقط عند السماح) "
     104"البريد الإلكتروني للمسؤول إلى مُكنة عبر البريد الإلكتروني."
     105
     106#: ats-moknah.php:66
     107msgid ""
     108"If listener feedback is enabled, visitors can rate the audio in the player. "
     109"Their vote, chosen reasons, optional comment, the voice and device type are "
     110"stored in this site's database with a salted visitor hash (no IP address). "
     111"Nothing is sent to Moknah."
     112msgstr ""
     113"عند تفعيل آراء المستمعين، يمكن للزوار تقييم الصوت في المشغل. يُخزَّن تصويتهم "
     114"والأسباب التي اختاروها والتعليق الاختياري والصوت المستخدم ونوع الجهاز في "
     115"قاعدة بيانات هذا الموقع مع بصمة زائر مُشفّرة بملح (دون عنوان IP). لا يُرسَل أي "
     116"شيء إلى مُكنة."
     117
     118#: ats-moknah.php:69 includes/class-ats-moknah-admin.php:46
     119#: includes/class-ats-moknah-admin.php:47
     120msgid "ATS Moknah"
     121msgstr "ATS Moknah"
    90122
    91123#: includes/analytics/class-ats-moknah-analytics-admin.php:21
    … …  
    115147
    116148#: includes/analytics/class-ats-moknah-analytics-admin.php:86
    117 #: includes/class-ats-moknah-admin.php:2882
     149#: includes/class-ats-moknah-admin.php:2885
    118150#: views/views-ats-moknah-admin-analytics.php:98
    119151msgid "Voice"
    … …  
    126158
    127159#: includes/analytics/class-ats-moknah-analytics-admin.php:92
     160#: includes/class-ats-moknah-feedback.php:851
    128161#: views/views-ats-moknah-admin-analytics.php:100
    129162msgid "Device"
    … …  
    147180"counted once in totals for the selected filters."
    148181msgstr ""
    149 "تَستخدم إحصاءات البلد والجهاز الزوار الفريدين على مستوى الموقع: يتم احتساب "
    150 "كل زائر مرة واحدة في المجاميع للفلاتر المحددة."
     182"تَستخدم إحصاءات البلد والجهاز الزوار الفريدين على مستوى الموقع: يتم احتساب كل "
     183"زائر مرة واحدة في المجاميع للفلاتر المحددة."
    151184
    152185#: includes/analytics/class-ats-moknah-analytics-admin.php:106
    … …  
    155188"post they visited."
    156189msgstr ""
    157 "تَحسب إحصاءات المقالات الزوار الفريدين لكل مقال: يتم احتساب الزائر مرة واحدة"
    158 " لكل مقال قام بزيارته."
     190"تَحسب إحصاءات المقالات الزوار الفريدين لكل مقال: يتم احتساب الزائر مرة واحدة "
     191"لكل مقال قام بزيارته."
    159192
    160193#: includes/analytics/class-ats-moknah-analytics-admin.php:129
    … …  
    230263
    231264#: includes/class-ats-moknah-admin.php:351
    232 msgid ""
    233 "Unable to load available voices. Please check your API key in settings."
     265msgid "Unable to load available voices. Please check your API key in settings."
    234266msgstr "تعذر تحميل الأصوات المتاحة. يرجى التحقق من مفتاح API في الإعدادات."
    235267
    … …  
    737769#: includes/class-ats-moknah-admin.php:1332
    738770msgid ""
    739 "Tip: start rules with #mk-mp-d1 so they only affect the player. Use "
    740 "!important if a built-in style wins."
    741 msgstr ""
    742 "تلميح: ابدأ القواعد بـ #mk-mp-d1 حتى تؤثر على المشغل فقط. استخدم ‎!important"
    743 " إذا تغلّب عليها نمط مدمج."
     771"Tip: start rules with #mk-mp-d1 so they only affect the player. Use !"
     772"important if a built-in style wins."
     773msgstr ""
     774"تلميح: ابدأ القواعد بـ #mk-mp-d1 حتى تؤثر على المشغل فقط. استخدم ‎!important "
     775"إذا تغلّب عليها نمط مدمج."
    744776
    745777#: includes/class-ats-moknah-admin.php:1338
    … …  
    785817
    786818#: includes/class-ats-moknah-admin.php:1366
     819#: includes/class-ats-moknah-feedback.php:853
    787820msgid "Desktop"
    788821msgstr "سطح المكتب"
    789822
    790823#: includes/class-ats-moknah-admin.php:1368
     824#: includes/class-ats-moknah-feedback.php:854
    791825msgid "Mobile"
    792826msgstr "الجوال"
    … …  
    819853#: includes/class-ats-moknah-admin.php:1432
    820854msgid "Discard your edited stylesheet and go back to the plugin default?"
    821 msgstr ""
    822 "هل تريد تجاهل ملف الأنماط المعدّل والعودة إلى الملف الافتراضي للإضافة؟"
     855msgstr "هل تريد تجاهل ملف الأنماط المعدّل والعودة إلى الملف الافتراضي للإضافة؟"
    823856
    824857#: includes/class-ats-moknah-admin.php:1433
    … …  
    906939#: includes/class-ats-moknah-admin.php:1453
    907940msgid ""
    908 "The published preset cannot be overwritten. Publish a different preset "
    909 "first."
     941"The published preset cannot be overwritten. Publish a different preset first."
    910942msgstr "لا يمكن استبدال النمط المسبق المنشور. انشر نمطًا مسبقًا آخر أولًا."
    911943
    … …  
    9711003#: includes/class-ats-moknah-admin.php:2706
    9721004#: includes/class-ats-moknah-admin.php:2800
    973 #: includes/class-ats-moknah-admin.php:2808
     1005#: includes/class-ats-moknah-admin.php:2811
     1006#: includes/class-ats-moknah-feedback.php:665
    9741007msgid "Open settings"
    9751008msgstr "فتح الإعدادات"
    … …  
    9841017"again."
    9851018msgstr ""
    986 "لم تُنهِ مُكنة المعالجة خلال 5 دقائق. غالبًا ما يكون هذا مؤقتًا — حاول مرة "
    987 "أخرى."
     1019"لم تُنهِ مُكنة المعالجة خلال 5 دقائق. غالبًا ما يكون هذا مؤقتًا — حاول مرة أخرى."
    9881020
    9891021#: includes/class-ats-moknah-admin.php:2692 assets/js/admin.js:190
    … …  
    10171049"contact Moknah."
    10181050msgstr ""
    1019 "هذا المقال أطول مما تسمح به الواجهة البرمجية في طلب واحد. اختصره أو تواصل مع"
    1020 " مُكنة."
     1051"هذا المقال أطول مما تسمح به الواجهة البرمجية في طلب واحد. اختصره أو تواصل مع "
     1052"مُكنة."
    10211053
    10221054#: includes/class-ats-moknah-admin.php:2704
    … …  
    10941126msgstr "أضف مفتاح API الخاص بمُكنة لبدء إنشاء الصوت."
    10951127
    1096 #: includes/class-ats-moknah-admin.php:2805
    1097 #: includes/class-ats-moknah-admin.php:2897
     1128#: includes/class-ats-moknah-admin.php:2802
     1129#: includes/class-ats-moknah-notices.php:242
     1130msgid "Get an API key"
     1131msgstr "احصل على مفتاح API"
     1132
     1133#: includes/class-ats-moknah-admin.php:2804
     1134msgid ""
     1135"Register with an email on your website's domain — company access requires a "
     1136"matching email domain."
     1137msgstr ""
     1138"سجّل ببريد إلكتروني على نطاق موقعك — يتطلب وصول الشركة تطابق نطاق البريد مع "
     1139"الموقع."
     1140
     1141#: includes/class-ats-moknah-admin.php:2808
     1142#: includes/class-ats-moknah-admin.php:2900
    10981143msgid "No voices available"
    10991144msgstr "لا توجد أصوات متاحة"
    11001145
    1101 #: includes/class-ats-moknah-admin.php:2807
     1146#: includes/class-ats-moknah-admin.php:2810
    11021147msgid "Voices could not be loaded. Check your API key."
    11031148msgstr "تعذّر تحميل الأصوات. تحقق من مفتاح API."
    11041149
    1105 #: includes/class-ats-moknah-admin.php:2815
     1150#: includes/class-ats-moknah-admin.php:2818
    11061151msgid "No details were returned."
    11071152msgstr "لم تُرجَع أي تفاصيل."
    11081153
    1109 #: includes/class-ats-moknah-admin.php:2830
     1154#: includes/class-ats-moknah-admin.php:2833
    11101155msgid "Your previous audio is still live on the post."
    11111156msgstr "لا يزال الصوت السابق منشورًا على المقال."
    11121157
    1113 #: includes/class-ats-moknah-admin.php:2835 assets/js/admin.js:213
     1158#: includes/class-ats-moknah-admin.php:2838 assets/js/admin.js:213
    11141159msgid "Technical details"
    11151160msgstr "التفاصيل التقنية"
    11161161
    11171162#. translators: %s: human time difference, e.g. "5 mins"
    1118 #: includes/class-ats-moknah-admin.php:2841
     1163#: includes/class-ats-moknah-admin.php:2844
     1164#: includes/class-ats-moknah-feedback.php:888
    11191165#, php-format
    11201166msgid "%s ago"
    11211167msgstr "منذ %s"
    11221168
    1123 #: includes/class-ats-moknah-admin.php:2863
     1169#: includes/class-ats-moknah-admin.php:2866
    11241170msgid "Enable Text-to-Speech"
    11251171msgstr "تفعيل تحويل النص إلى كلام"
    11261172
    1127 #: includes/class-ats-moknah-admin.php:2864
     1173#: includes/class-ats-moknah-admin.php:2867
    11281174msgid "Generate audio and show the player on this post."
    11291175msgstr "إنشاء الصوت وإظهار المشغل في هذا المقال."
    11301176
    1131 #: includes/class-ats-moknah-admin.php:2872
     1177#: includes/class-ats-moknah-admin.php:2875
    11321178msgid "AI preprocessing"
    11331179msgstr "المعالجة المسبقة بالذكاء الاصطناعي"
    11341180
    1135 #: includes/class-ats-moknah-admin.php:2873
     1181#: includes/class-ats-moknah-admin.php:2876
    11361182msgid "Clean and add tashkeel before speech (Arabic)."
    11371183msgstr "تنظيف النص وإضافة التشكيل قبل التحويل إلى كلام (للعربية)."
    11381184
    1139 #: includes/class-ats-moknah-admin.php:2887
    1140 #: includes/class-ats-moknah-admin.php:3121
     1185#: includes/class-ats-moknah-admin.php:2890
     1186#: includes/class-ats-moknah-admin.php:3137
    11411187msgid "Select a voice"
    11421188msgstr "اختر صوتًا"
    11431189
    1144 #: includes/class-ats-moknah-admin.php:2903
     1190#: includes/class-ats-moknah-admin.php:2906
    11451191msgid "Preview"
    11461192msgstr "معاينة"
    11471193
    1148 #: includes/class-ats-moknah-admin.php:2913
     1194#: includes/class-ats-moknah-admin.php:2916
    11491195msgid "Generated audio"
    11501196msgstr "الصوت المُنشأ"
    11511197
    1152 #: includes/class-ats-moknah-admin.php:2916
     1198#: includes/class-ats-moknah-admin.php:2919
    11531199msgid "AI preprocessed"
    11541200msgstr "تمت المعالجة بالذكاء الاصطناعي"
    11551201
    1156 #: includes/class-ats-moknah-admin.php:2917
     1202#: includes/class-ats-moknah-admin.php:2920
    11571203msgid "No preprocessing"
    11581204msgstr "بدون معالجة مسبقة"
    11591205
    11601206#: includes/class-ats-moknah-admin.php:2926
    1161 #: includes/class-ats-moknah-admin.php:3168
     1207msgid "Listeners"
     1208msgstr "المستمعون"
     1209
     1210#: includes/class-ats-moknah-admin.php:2939
     1211#: includes/class-ats-moknah-admin.php:3184
    11621212msgid "Player position"
    11631213msgstr "موضع المشغل"
    11641214
    1165 #: includes/class-ats-moknah-admin.php:2927
     1215#: includes/class-ats-moknah-admin.php:2940
    11661216msgid "Change"
    11671217msgstr "تغيير"
    11681218
    1169 #: includes/class-ats-moknah-admin.php:2941
     1219#: includes/class-ats-moknah-admin.php:2954
    11701220msgid "Regenerate after editing the post so the audio matches."
    11711221msgstr "أعد الإنشاء بعد تعديل المقال ليتطابق الصوت مع النص."
    11721222
    1173 #: includes/class-ats-moknah-admin.php:2942
     1223#: includes/class-ats-moknah-admin.php:2955
    11741224msgid "Save your latest edits first — the saved content is converted."
    11751225msgstr "احفظ آخر تعديلاتك أولًا — يُحوَّل المحتوى المحفوظ فقط."
    11761226
    1177 #: includes/class-ats-moknah-admin.php:2991
     1227#: includes/class-ats-moknah-admin.php:3004
    11781228msgid "Settings saved successfully."
    11791229msgstr "تم حفظ الإعدادات بنجاح."
    11801230
    1181 #: includes/class-ats-moknah-admin.php:3001
     1231#: includes/class-ats-moknah-admin.php:3014
    11821232msgid "Moknah Logo"
    11831233msgstr "شعار Moknah"
    11841234
    1185 #: includes/class-ats-moknah-admin.php:3003
     1235#: includes/class-ats-moknah-admin.php:3016
    11861236msgid "ATS Moknah Settings"
    11871237msgstr "إعدادات ATS Moknah"
    11881238
    1189 #: includes/class-ats-moknah-admin.php:3005
     1239#: includes/class-ats-moknah-admin.php:3018
    11901240msgid "Configure your Article to Speech settings and default preferences."
    11911241msgstr "قم بضبط إعدادات تحويل المقال إلى صوت وتفضيلاتك الافتراضية."
    11921242
    1193 #: includes/class-ats-moknah-admin.php:3011
     1243#: includes/class-ats-moknah-admin.php:3024
    11941244msgid "Warning:"
    11951245msgstr "تحذير:"
    11961246
    1197 #: includes/class-ats-moknah-admin.php:3012
    1198 msgid ""
    1199 "Unable to load voices from Moknah API. Please verify your API key is correct"
    1200 " and has the necessary permissions."
     1247#: includes/class-ats-moknah-admin.php:3025
     1248msgid ""
     1249"Unable to load voices from Moknah API. Please verify your API key is correct "
     1250"and has the necessary permissions."
    12011251msgstr ""
    12021252"تعذر تحميل الأصوات من واجهة Moknah API. يرجى التأكد من صحة مفتاح API وأنه "
    12031253"يمتلك الصلاحيات اللازمة."
    12041254
    1205 #: includes/class-ats-moknah-admin.php:3025
     1255#: includes/class-ats-moknah-admin.php:3038
    12061256msgid "API Configuration"
    12071257msgstr "إعدادات واجهة برمجة التطبيقات (API)"
    12081258
    1209 #: includes/class-ats-moknah-admin.php:3030
     1259#: includes/class-ats-moknah-admin.php:3043
    12101260msgid "Moknah API Key"
    12111261msgstr "مفتاح Moknah API"
    12121262
    1213 #: includes/class-ats-moknah-admin.php:3031
     1263#: includes/class-ats-moknah-admin.php:3044
    12141264msgid "Enter your Moknah API key to enable text-to-speech conversion."
    12151265msgstr "أدخل مفتاح Moknah API لتفعيل تحويل النص إلى كلام."
    12161266
    1217 #: includes/class-ats-moknah-admin.php:3039
     1267#: includes/class-ats-moknah-admin.php:3052
    12181268msgid "Enter a new API key to replace current key"
    12191269msgstr "أدخل مفتاح API جديد لاستبدال المفتاح الحالي"
    12201270
    12211271#. translators: %s: masked API key suffix
    1222 #: includes/class-ats-moknah-admin.php:3045
     1272#: includes/class-ats-moknah-admin.php:3058
    12231273#, php-format
    12241274msgid "Current key: %s"
    12251275msgstr "المفتاح الحالي: %s"
    12261276
    1227 #: includes/class-ats-moknah-admin.php:3055
     1277#: includes/class-ats-moknah-admin.php:3071
    12281278msgid "Article Selector"
    12291279msgstr "مُحدد المقال"
    12301280
    1231 #: includes/class-ats-moknah-admin.php:3056
     1281#: includes/class-ats-moknah-admin.php:3072
    12321282msgid ""
    12331283"Enter the innermost CSS selector that directly contains the post title and "
    … …  
    12351285msgstr "أدخل مُحدد CSS الأعمق الذي يحتوي مباشرةً على عنوان المقال ومحتواه."
    12361286
    1237 #: includes/class-ats-moknah-admin.php:3068
     1287#: includes/class-ats-moknah-admin.php:3084
    12381288msgid "Skipped Selectors"
    12391289msgstr "المُحددات المستثناة"
    12401290
    1241 #: includes/class-ats-moknah-admin.php:3069
    1242 msgid ""
    1243 "A list of CSS selectors inside \"Article Selector\" which you plan to ignore"
    1244 " them from being highlighted"
     1291#: includes/class-ats-moknah-admin.php:3085
     1292msgid ""
     1293"A list of CSS selectors inside \"Article Selector\" which you plan to ignore "
     1294"them from being highlighted"
    12451295msgstr ""
    12461296"قائمة بمُحددات CSS داخل \"مُحدد المقال\" التي ترغب في استثنائها من التمييز."
    12471297
    1248 #: includes/class-ats-moknah-admin.php:3070
     1298#: includes/class-ats-moknah-admin.php:3086
    12491299msgid "'.highlighter-skip' Selector is included by default"
    12501300msgstr "المُحدد '.highlighter-skip' مُضمّن افتراضيًا."
    12511301
    1252 #: includes/class-ats-moknah-admin.php:3082
     1302#: includes/class-ats-moknah-admin.php:3098
    12531303msgid "Callback url"
    12541304msgstr "رابط الاستدعاء (Callback URL)"
    12551305
    1256 #: includes/class-ats-moknah-admin.php:3083
     1306#: includes/class-ats-moknah-admin.php:3099
    12571307msgid "( optional )"
    12581308msgstr "( اختياري )"
    12591309
    1260 #: includes/class-ats-moknah-admin.php:3084
     1310#: includes/class-ats-moknah-admin.php:3100
    12611311msgid "Enter the callback URL to receive audio file notifications."
    12621312msgstr "أدخل رابط الاستدعاء (Callback URL) لتلقي إشعارات ملفات الصوت."
    12631313
    12641314#. translators: %s: Default callback URL
    1265 #: includes/class-ats-moknah-admin.php:3090
     1315#: includes/class-ats-moknah-admin.php:3106
    12661316#, php-format
    12671317msgid "Default: %s"
    12681318msgstr "الافتراضي: %s"
    12691319
    1270 #: includes/class-ats-moknah-admin.php:3108
     1320#: includes/class-ats-moknah-admin.php:3124
    12711321msgid "Voice Settings"
    12721322msgstr "إعدادات الصوت"
    12731323
    1274 #: includes/class-ats-moknah-admin.php:3113
     1324#: includes/class-ats-moknah-admin.php:3129
    12751325msgid "Default Voice"
    12761326msgstr "الصوت الافتراضي"
    12771327
    1278 #: includes/class-ats-moknah-admin.php:3114
     1328#: includes/class-ats-moknah-admin.php:3130
    12791329msgid "Select the default voice for new articles."
    12801330msgstr "حدد الصوت الافتراضي للمقالات الجديدة."
    12811331
    1282 #: includes/class-ats-moknah-admin.php:3143
     1332#: includes/class-ats-moknah-admin.php:3159
    12831333msgid "Please save your API key first to load available voices."
    12841334msgstr "يرجى حفظ مفتاح API أولاً لتحميل الأصوات المتاحة."
    12851335
    1286 #: includes/class-ats-moknah-admin.php:3153
     1336#: includes/class-ats-moknah-admin.php:3169
    12871337msgid "Display Settings"
    12881338msgstr "إعدادات العرض"
    12891339
    1290 #: includes/class-ats-moknah-admin.php:3158
     1340#: includes/class-ats-moknah-admin.php:3174
    12911341msgid "Post Types & Player Position"
    12921342msgstr "أنواع المحتوى وموضع المشغل"
    12931343
    1294 #: includes/class-ats-moknah-admin.php:3159
     1344#: includes/class-ats-moknah-admin.php:3175
    12951345msgid "Enable ATS per content type and choose where its player appears."
    12961346msgstr "فعّل ATS لكل نوع محتوى واختر مكان ظهور المشغل فيه."
    12971347
    1298 #: includes/class-ats-moknah-admin.php:3166
     1348#: includes/class-ats-moknah-admin.php:3182
    12991349msgid "Post type"
    13001350msgstr "نوع المحتوى"
    13011351
    1302 #: includes/class-ats-moknah-admin.php:3167
     1352#: includes/class-ats-moknah-admin.php:3183
    13031353msgid "Enabled"
    13041354msgstr "مفعّل"
    13051355
    1306 #: includes/class-ats-moknah-admin.php:3218
     1356#: includes/class-ats-moknah-admin.php:3234
    13071357msgid "e.g. .entry-meta  or  #post-title  or  .wp-block-post-featured-image"
    13081358msgstr "مثال: ‎.entry-meta أو ‎#post-title أو ‎.wp-block-post-featured-image"
    13091359
    1310 #: includes/class-ats-moknah-admin.php:3220
     1360#: includes/class-ats-moknah-admin.php:3236
    13111361msgid ""
    13121362"CSS selector of the element (class, ID…). The first match on the page is "
    13131363"used; if nothing matches, the player shows at the top of the content."
    13141364msgstr ""
    1315 "مُحدِّد CSS للعنصر (class أو ID…). يُستخدم أول تطابق في الصفحة؛ وإذا لم يوجد"
    1316 " تطابق، يظهر المشغل أعلى المحتوى."
    1317 
    1318 #: includes/class-ats-moknah-admin.php:3235
     1365"مُحدِّد CSS للعنصر (class أو ID…). يُستخدم أول تطابق في الصفحة؛ وإذا لم يوجد "
     1366"تطابق، يظهر المشغل أعلى المحتوى."
     1367
     1368#: includes/class-ats-moknah-admin.php:3249
     1369#: includes/class-ats-moknah-feedback.php:446
     1370#: includes/class-ats-moknah-feedback.php:447
     1371#: includes/class-ats-moknah-feedback.php:659
     1372msgid "Listener Feedback"
     1373msgstr "آراء المستمعين"
     1374
     1375#: includes/class-ats-moknah-admin.php:3250
     1376msgid ""
     1377"Ask listeners \"How was this audio?\" in the player after they listen to "
     1378"half of an article. Results appear under ATS Moknah → Listener Feedback."
     1379msgstr ""
     1380"اسأل المستمعين \"كيف كان هذا الصوت؟\" في المشغل بعد استماعهم إلى نصف المقال. "
     1381"تظهر النتائج ضمن ATS Moknah → آراء المستمعين."
     1382
     1383#: includes/class-ats-moknah-admin.php:3257
     1384msgid "Show the feedback question in the player"
     1385msgstr "إظهار سؤال التقييم في المشغل"
     1386
     1387#: includes/class-ats-moknah-admin.php:3260
     1388msgid "Keep plain \"Good\" votes for"
     1389msgstr "الاحتفاظ بتقييمات «جيد» العادية لمدة"
     1390
     1391#: includes/class-ats-moknah-admin.php:3266
     1392msgid ""
     1393"Totals and charts are kept forever. \"Not good\" votes, reasons and comments "
     1394"are never removed automatically."
     1395msgstr ""
     1396"تُحفظ الإجماليات والرسوم البيانية للأبد. لا تُحذف تقييمات «ليس جيدًا» والأسباب "
     1397"والتعليقات تلقائيًا أبدًا."
     1398
     1399#: includes/class-ats-moknah-admin.php:3268
     1400msgid "View listener feedback"
     1401msgstr "عرض آراء المستمعين"
     1402
     1403#: includes/class-ats-moknah-admin.php:3276
    13191404msgid "Save Settings"
    13201405msgstr "حفظ الإعدادات"
    13211406
    1322 #: includes/class-ats-moknah-admin.php:3381
     1407#: includes/class-ats-moknah-admin.php:3422
    13231408msgid "API authentication failed. Please check your API key in settings."
    13241409msgstr ""
    … …  
    13261411"في الإعدادات."
    13271412
    1328 #: includes/class-ats-moknah-admin.php:3385
     1413#: includes/class-ats-moknah-admin.php:3426
    13291414msgid "Invalid request data. Please check your input and try again."
    13301415msgstr "بيانات الطلب غير صالحة. يرجى التحقق من مدخلاتك والمحاولة مرة أخرى."
    13311416
    1332 #: includes/class-ats-moknah-admin.php:3389
     1417#: includes/class-ats-moknah-admin.php:3430
    13331418msgid ""
    13341419"The selected voice ID is invalid. Please choose a valid voice and try again."
    1335 msgstr ""
    1336 "مُعرّف الصوت المحدد غير صالح. يرجى اختيار صوت صالح والمحاولة مرة أخرى."
    1337 
    1338 #: includes/class-ats-moknah-admin.php:3393
     1420msgstr "مُعرّف الصوت المحدد غير صالح. يرجى اختيار صوت صالح والمحاولة مرة أخرى."
     1421
     1422#: includes/class-ats-moknah-admin.php:3434
    13391423msgid "Trial limit exceeded. Please contact api@moknah.io."
    13401424msgstr "تم تجاوز حد الفترة التجريبية. يرجى التواصل مع api@moknah.io."
    13411425
    1342 #: includes/class-ats-moknah-admin.php:3397
     1426#: includes/class-ats-moknah-admin.php:3438
    13431427msgid "Your account is suspended or inactive. Please contact api@moknah.io."
    13441428msgstr "حسابك معلق أو غير نشط. يرجى التواصل مع api@moknah.io."
    13451429
    1346 #: includes/class-ats-moknah-admin.php:3401
    1347 msgid ""
    1348 "This article is already being processed. Please wait until it finishes."
     1430#: includes/class-ats-moknah-admin.php:3442
     1431msgid "This article is already being processed. Please wait until it finishes."
    13491432msgstr "تتم معالجة هذا المقال بالفعل. يرجى الانتظار حتى تنتهي العملية."
    13501433
    1351 #: includes/class-ats-moknah-admin.php:3405
     1434#: includes/class-ats-moknah-admin.php:3446
    13521435msgid ""
    13531436"An error occurred while processing your request. Please try again later."
    13541437msgstr "حدث خطأ أثناء معالجة طلبك. يرجى المحاولة مرة أخرى لاحقًا."
    13551438
    1356 #: includes/class-ats-moknah-admin.php:3409
     1439#: includes/class-ats-moknah-admin.php:3450
    13571440msgid ""
    13581441"Unable to connect to Moknah API. Please check your internet connection and "
    … …  
    13621445"مرة أخرى."
    13631446
    1364 #: includes/class-ats-moknah-admin.php:3413
     1447#: includes/class-ats-moknah-admin.php:3454
    13651448msgid "Request timed out. Please try again later."
    13661449msgstr "انتهت مهلة الطلب. يرجى المحاولة مرة أخرى لاحقًا."
    13671450
    1368 #: includes/class-ats-moknah-admin.php:3417
     1451#: includes/class-ats-moknah-admin.php:3458
    13691452msgid "Too many requests. Please wait and try again."
    13701453msgstr "عدد كبير جدًا من الطلبات. يرجى الانتظار ثم المحاولة مرة أخرى."
     1454
     1455#: includes/class-ats-moknah-feedback.php:42
     1456msgid "Pronunciation"
     1457msgstr "النطق"
     1458
     1459#: includes/class-ats-moknah-feedback.php:43
     1460msgid "Voice quality"
     1461msgstr "جودة الصوت"
     1462
     1463#: includes/class-ats-moknah-feedback.php:44
     1464msgid "Too fast or too slow"
     1465msgstr "سريع جدًا أو بطيء جدًا"
     1466
     1467#: includes/class-ats-moknah-feedback.php:45
     1468msgid "Wrong or missing text"
     1469msgstr "نص خاطئ أو ناقص"
     1470
     1471#: includes/class-ats-moknah-feedback.php:46
     1472msgid "Player problem"
     1473msgstr "مشكلة في المشغل"
     1474
     1475#: includes/class-ats-moknah-feedback.php:47
     1476msgid "Other"
     1477msgstr "أخرى"
     1478
     1479#: includes/class-ats-moknah-feedback.php:54
     1480#: includes/class-ats-moknah-feedback.php:655
     1481msgid "30 days"
     1482msgstr "30 يومًا"
     1483
     1484#: includes/class-ats-moknah-feedback.php:55
     1485#: includes/class-ats-moknah-feedback.php:655
     1486msgid "90 days"
     1487msgstr "90 يومًا"
     1488
     1489#: includes/class-ats-moknah-feedback.php:56
     1490msgid "180 days"
     1491msgstr "180 يومًا"
     1492
     1493#: includes/class-ats-moknah-feedback.php:57
     1494msgid "1 year"
     1495msgstr "سنة واحدة"
     1496
     1497#: includes/class-ats-moknah-feedback.php:58
     1498msgid "Forever"
     1499msgstr "للأبد"
     1500
     1501#: includes/class-ats-moknah-feedback.php:428
     1502msgid "How was this audio?"
     1503msgstr "كيف كان هذا الصوت؟"
     1504
     1505#: includes/class-ats-moknah-feedback.php:429
     1506#: includes/class-ats-moknah-feedback.php:711
     1507#: includes/class-ats-moknah-feedback.php:797
     1508msgid "Good"
     1509msgstr "جيد"
     1510
     1511#: includes/class-ats-moknah-feedback.php:430
     1512#: includes/class-ats-moknah-feedback.php:711
     1513#: includes/class-ats-moknah-feedback.php:798
     1514msgid "Not good"
     1515msgstr "غير جيد"
     1516
     1517#: includes/class-ats-moknah-feedback.php:431
     1518msgid "Close"
     1519msgstr "إغلاق"
     1520
     1521#: includes/class-ats-moknah-feedback.php:432
     1522msgid "What could be better?"
     1523msgstr "ما الذي يمكن تحسينه؟"
     1524
     1525#: includes/class-ats-moknah-feedback.php:433
     1526msgid "Optional: tell us more…"
     1527msgstr "اختياري: أخبرنا بالمزيد…"
     1528
     1529#: includes/class-ats-moknah-feedback.php:434
     1530msgid "Send"
     1531msgstr "إرسال"
     1532
     1533#: includes/class-ats-moknah-feedback.php:435
     1534msgid "Thanks for your feedback!"
     1535msgstr "شكرًا على ملاحظاتك!"
     1536
     1537#: includes/class-ats-moknah-feedback.php:629
     1538#: includes/class-ats-moknah-frontend.php:512
     1539#: includes/class-ats-moknah-player-design-admin.php:559
     1540msgid "Previous"
     1541msgstr "السابق"
     1542
     1543#. translators: %d: page number
     1544#: includes/class-ats-moknah-feedback.php:632
     1545#, php-format
     1546msgid "Page %d"
     1547msgstr "الصفحة %d"
     1548
     1549#: includes/class-ats-moknah-feedback.php:634
     1550#: includes/class-ats-moknah-frontend.php:513
     1551#: includes/class-ats-moknah-player-design-admin.php:560
     1552msgid "Next"
     1553msgstr "التالي"
     1554
     1555#: includes/class-ats-moknah-feedback.php:655
     1556msgid "7 days"
     1557msgstr "7 أيام"
     1558
     1559#: includes/class-ats-moknah-feedback.php:655
     1560msgid "All time"
     1561msgstr "كل الأوقات"
     1562
     1563#: includes/class-ats-moknah-feedback.php:660
     1564msgid ""
     1565"What your readers say about the audio, from the \"How was this audio?\" "
     1566"question in the player."
     1567msgstr "ما يقوله قرّاؤك عن الصوت، من سؤال \"كيف كان هذا الصوت؟\" في المشغل."
     1568
     1569#: includes/class-ats-moknah-feedback.php:664
     1570msgid ""
     1571"Listener feedback is turned off. Turn it on in Settings → Display Settings."
     1572msgstr "آراء المستمعين معطّلة. فعّلها من الإعدادات → إعدادات العرض."
     1573
     1574#: includes/class-ats-moknah-feedback.php:679
     1575msgid "From"
     1576msgstr "من"
     1577
     1578#: includes/class-ats-moknah-feedback.php:682
     1579msgid "To"
     1580msgstr "إلى"
     1581
     1582#: includes/class-ats-moknah-feedback.php:684
     1583msgid "Apply"
     1584msgstr "تطبيق"
     1585
     1586#: includes/class-ats-moknah-feedback.php:686
     1587#: views/views-ats-moknah-admin-analytics.php:38
     1588msgid "Export CSV"
     1589msgstr "تصدير كملف CSV"
     1590
     1591#: includes/class-ats-moknah-feedback.php:690
     1592#: includes/class-ats-moknah-feedback.php:796
     1593msgid "Responses"
     1594msgstr "الردود"
     1595
     1596#: includes/class-ats-moknah-feedback.php:692
     1597#: includes/class-ats-moknah-feedback.php:799
     1598msgid "Satisfaction"
     1599msgstr "نسبة الرضا"
     1600
     1601#: includes/class-ats-moknah-feedback.php:696
     1602#: includes/class-ats-moknah-feedback.php:800
     1603msgid "Comments"
     1604msgstr "التعليقات"
     1605
     1606#: includes/class-ats-moknah-feedback.php:702
     1607msgid "Responses by month"
     1608msgstr "الردود حسب الشهر"
     1609
     1610#: includes/class-ats-moknah-feedback.php:702
     1611msgid "Responses by day"
     1612msgstr "الردود حسب اليوم"
     1613
     1614#: includes/class-ats-moknah-feedback.php:704
     1615msgid "Responses over time"
     1616msgstr "الردود عبر الوقت"
     1617
     1618#: includes/class-ats-moknah-feedback.php:714
     1619msgid "Top reasons for \"Not good\""
     1620msgstr "أبرز أسباب \"غير جيد\""
     1621
     1622#: includes/class-ats-moknah-feedback.php:716
     1623msgid "No reasons selected yet."
     1624msgstr "لم يتم اختيار أي أسباب بعد."
     1625
     1626#: includes/class-ats-moknah-feedback.php:729
     1627msgid "Articles"
     1628msgstr "المقالات"
     1629
     1630#: includes/class-ats-moknah-feedback.php:730
     1631msgid "Comments & issues"
     1632msgstr "التعليقات والمشكلات"
     1633
     1634#: includes/class-ats-moknah-feedback.php:759
     1635msgid "Most \"Not good\""
     1636msgstr "الأكثر «ليس جيدًا»"
     1637
     1638#: includes/class-ats-moknah-feedback.php:760
     1639msgid "Most responses"
     1640msgstr "الأكثر ردودًا"
     1641
     1642#: includes/class-ats-moknah-feedback.php:761
     1643msgid "Lowest satisfaction"
     1644msgstr "الأقل رضا"
     1645
     1646#: includes/class-ats-moknah-feedback.php:762
     1647msgid "Highest satisfaction"
     1648msgstr "الأعلى رضا"
     1649
     1650#: includes/class-ats-moknah-feedback.php:763
     1651msgid "Most recent"
     1652msgstr "الأحدث"
     1653
     1654#: includes/class-ats-moknah-feedback.php:770
     1655msgid "Search article title or ID…"
     1656msgstr "ابحث بعنوان المقال أو رقمه…"
     1657
     1658#: includes/class-ats-moknah-feedback.php:771
     1659msgid "Sort by"
     1660msgstr "ترتيب حسب"
     1661
     1662#: includes/class-ats-moknah-feedback.php:778
     1663msgid "Min. responses"
     1664msgstr "الحد الأدنى للردود"
     1665
     1666#: includes/class-ats-moknah-feedback.php:781
     1667#: includes/class-ats-moknah-feedback.php:859
     1668msgid "Filter"
     1669msgstr "تصفية"
     1670
     1671#: includes/class-ats-moknah-feedback.php:783
     1672#: includes/class-ats-moknah-feedback.php:861
     1673msgid "Clear filters"
     1674msgstr "مسح عوامل التصفية"
     1675
     1676#: includes/class-ats-moknah-feedback.php:789
     1677msgid ""
     1678"No articles match these filters. Readers see the question after listening to "
     1679"half of an article."
     1680msgstr ""
     1681"لا توجد مقالات تطابق عوامل التصفية هذه. يرى القراء السؤال بعد الاستماع إلى "
     1682"نصف المقال."
     1683
     1684#: includes/class-ats-moknah-feedback.php:795
     1685#: views/views-ats-moknah-admin-heatmap.php:51
     1686msgid "Article"
     1687msgstr "المقال"
     1688
     1689#: includes/class-ats-moknah-feedback.php:810
     1690msgid "Edit post"
     1691msgstr "تحرير المقال"
     1692
     1693#: includes/class-ats-moknah-feedback.php:817
     1694msgid "View feedback"
     1695msgstr "عرض الملاحظات"
     1696
     1697#: includes/class-ats-moknah-feedback.php:840
     1698msgid "Remove article filter"
     1699msgstr "إزالة تصفية المقال"
     1700
     1701#: includes/class-ats-moknah-feedback.php:843
     1702msgid "Article title or ID…"
     1703msgstr "عنوان المقال أو رقمه…"
     1704
     1705#: includes/class-ats-moknah-feedback.php:845
     1706msgid "Reason"
     1707msgstr "السبب"
     1708
     1709#: includes/class-ats-moknah-feedback.php:846
     1710msgid "All reasons"
     1711msgstr "كل الأسباب"
     1712
     1713#: includes/class-ats-moknah-feedback.php:852
     1714msgid "All devices"
     1715msgstr "كل الأجهزة"
     1716
     1717#: includes/class-ats-moknah-feedback.php:855
     1718msgid "Tablet"
     1719msgstr "جهاز لوحي"
     1720
     1721#: includes/class-ats-moknah-feedback.php:857
     1722msgid "With comment"
     1723msgstr "مع تعليق"
     1724
     1725#: includes/class-ats-moknah-feedback.php:858
     1726msgid "Search in comments…"
     1727msgstr "ابحث في التعليقات…"
     1728
     1729#: includes/class-ats-moknah-feedback.php:867
     1730msgid "No feedback matches these filters."
     1731msgstr "لا توجد ملاحظات تطابق عوامل التصفية هذه."
     1732
     1733#: includes/class-ats-moknah-feedback.php:867
     1734msgid "Nothing to review — readers only left positive votes."
     1735msgstr "لا شيء للمراجعة — ترك القرّاء تقييمات إيجابية فقط."
     1736
     1737#: includes/class-ats-moknah-feedback.php:875
     1738msgid "Select all"
     1739msgstr "تحديد الكل"
     1740
     1741#: includes/class-ats-moknah-feedback.php:876
     1742msgid "Delete selected"
     1743msgstr "حذف المحدد"
     1744
     1745#: includes/class-ats-moknah-feedback.php:881
     1746msgid "Select"
     1747msgstr "تحديد"
     1748
     1749#: includes/class-ats-moknah-feedback.php:914
     1750msgid "Delete the selected feedback? This cannot be undone."
     1751msgstr "حذف الملاحظات المحددة؟ لا يمكن التراجع عن ذلك."
     1752
     1753#: includes/class-ats-moknah-feedback.php:1001
     1754#: includes/class-ats-moknah-feedback.php:1032
     1755msgid "Not allowed."
     1756msgstr "غير مسموح."
    13711757
    13721758#: includes/class-ats-moknah-frontend.php:505
    … …  
    14001786msgstr "الانتقال إلى المقال التالي"
    14011787
    1402 #: includes/class-ats-moknah-frontend.php:512
    1403 #: includes/class-ats-moknah-player-design-admin.php:559
    1404 msgid "Previous"
    1405 msgstr "السابق"
    1406 
    1407 #: includes/class-ats-moknah-frontend.php:513
    1408 #: includes/class-ats-moknah-player-design-admin.php:560
    1409 msgid "Next"
    1410 msgstr "التالي"
    1411 
    14121788#: includes/class-ats-moknah-frontend.php:514
    14131789#: includes/class-ats-moknah-player-design-admin.php:561
    … …  
    14451821msgstr "تم إنشاء الصوت بالذكاء الاصطناعي بواسطة"
    14461822
     1823#. translators: %s: new version number
     1824#: includes/class-ats-moknah-notices.php:110
     1825#, php-format
     1826msgid "ATS Moknah %s is available"
     1827msgstr "الإصدار %s من ATS Moknah متاح"
     1828
     1829#: includes/class-ats-moknah-notices.php:116
     1830msgid "Auto-updates are on — it will update automatically soon."
     1831msgstr "التحديث التلقائي مفعّل — سيتم التحديث تلقائيًا قريبًا."
     1832
     1833#. translators: %s: installed version number
     1834#: includes/class-ats-moknah-notices.php:119
     1835#, php-format
     1836msgid "You are using version %s. Update to get the latest features and fixes."
     1837msgstr "أنت تستخدم الإصدار %s. حدّث للحصول على أحدث الميزات والإصلاحات."
     1838
     1839#: includes/class-ats-moknah-notices.php:126
     1840msgid "Update now"
     1841msgstr "حدّث الآن"
     1842
     1843#: includes/class-ats-moknah-notices.php:128
     1844msgid "What's new"
     1845msgstr "ما الجديد"
     1846
     1847#: includes/class-ats-moknah-notices.php:142
     1848msgid ""
     1849"Get an API key in a few clicks: register on Moknah.io, request company "
     1850"access, and paste the key in Settings."
     1851msgstr ""
     1852"احصل على مفتاح API بخطوات بسيطة: سجّل في Moknah.io، واطلب وصول الشركة، ثم "
     1853"الصق المفتاح في الإعدادات."
     1854
     1855#: includes/class-ats-moknah-notices.php:143
     1856msgid ""
     1857"ATS works on pages and custom post types, with a player position per post "
     1858"type."
     1859msgstr ""
     1860"يعمل ATS على الصفحات وأنواع المحتوى المخصصة، مع موضع مستقل للمشغل لكل نوع "
     1861"محتوى."
     1862
     1863#: includes/class-ats-moknah-notices.php:144
     1864msgid ""
     1865"Player Design: Custom CSS, editable player stylesheet and five new Pro "
     1866"presets."
     1867msgstr ""
     1868"تصميم المشغل: CSS مخصص، وملف أنماط قابل للتعديل، وخمسة أنماط احترافية جديدة."
     1869
     1870#: includes/class-ats-moknah-notices.php:145
     1871msgid "Admin translated into more languages."
     1872msgstr "ترجمة لوحة التحكم إلى لغات أكثر."
     1873
     1874#. translators: %s: version number
     1875#: includes/class-ats-moknah-notices.php:159
     1876#, php-format
     1877msgid "What's new in ATS Moknah %s"
     1878msgstr "ما الجديد في ATS Moknah %s"
     1879
     1880#: includes/class-ats-moknah-notices.php:167
     1881msgid "Full changelog"
     1882msgstr "سجل التغييرات الكامل"
     1883
     1884#: includes/class-ats-moknah-notices.php:170
     1885msgid "Got it"
     1886msgstr "حسنًا"
     1887
     1888#: includes/class-ats-moknah-notices.php:224
     1889msgid "Get API key"
     1890msgstr "احصل على مفتاح API"
     1891
     1892#: includes/class-ats-moknah-notices.php:225
     1893msgid "Rate ATS Moknah on WordPress.org"
     1894msgstr "قيّم ATS Moknah على WordPress.org"
     1895
     1896#: includes/class-ats-moknah-notices.php:225
     1897msgid "Rate"
     1898msgstr "قيّم"
     1899
     1900#: includes/class-ats-moknah-notices.php:232
     1901msgid ""
     1902"Register with an email on your website's domain (e.g. you@yourcompany.com "
     1903"for yourcompany.com). Company access can only be requested when the email "
     1904"domain matches the website."
     1905msgstr ""
     1906"سجّل ببريد إلكتروني على نطاق موقعك (مثل you@yourcompany.com لموقع yourcompany."
     1907"com). لا يمكن طلب وصول الشركة إلا إذا تطابق نطاق البريد الإلكتروني مع الموقع."
     1908
     1909#: includes/class-ats-moknah-notices.php:234
     1910msgid "Important:"
     1911msgstr "مهم:"
     1912
     1913#: includes/class-ats-moknah-notices.php:237
     1914msgid "Create a Moknah account"
     1915msgstr "أنشئ حسابًا في مُكنة"
     1916
     1917#: includes/class-ats-moknah-notices.php:238
     1918msgid "Request company access"
     1919msgstr "اطلب وصول الشركة"
     1920
     1921#: includes/class-ats-moknah-notices.php:239
     1922msgid ""
     1923"After approval, copy your API key from your Moknah account and paste it here."
     1924msgstr "بعد الموافقة، انسخ مفتاح API من حسابك في مُكنة والصقه هنا."
     1925
    14471926#: includes/class-ats-moknah-player-design-admin.php:63
    14481927msgid "Pro: Aurora Card"
    … …  
    14861965"during long reading sessions."
    14871966msgstr ""
    1488 "تساعدك مقالة المعاينة المُطولة هذه على اختبار سلوك المشغل المُثبّت أثناء "
    1489 "جلسات القراءة الطويلة."
     1967"تساعدك مقالة المعاينة المُطولة هذه على اختبار سلوك المشغل المُثبّت أثناء جلسات "
     1968"القراءة الطويلة."
    14901969
    14911970#: includes/class-ats-moknah-player-design-admin.php:614
    … …  
    14991978#: includes/class-ats-moknah-player-design-admin.php:615
    15001979msgid ""
    1501 "Use this area to validate spacing, contrast, and readability across dark and"
    1502 " light theme modes with your current design preset."
     1980"Use this area to validate spacing, contrast, and readability across dark and "
     1981"light theme modes with your current design preset."
    15031982msgstr ""
    15041983"استخدم هذه المنطقة للتحقق من المسافات، والتباين، وسهولة القراءة عبر أوضاع "
    … …  
    15181997"reachable and do not overlap article text on mobile breakpoints."
    15191998msgstr ""
    1520 "جرّب عروضًا مختلفة للأجهزة من شريط الأدوات للتأكد من أن عناصر التحكم تظل "
    1521 "قابلة للوصول ولا تتداخل مع نص المقال في مقاسات الجوال."
     1999"جرّب عروضًا مختلفة للأجهزة من شريط الأدوات للتأكد من أن عناصر التحكم تظل قابلة "
     2000"للوصول ولا تتداخل مع نص المقال في مقاسات الجوال."
    15222001
    15232002#: includes/class-ats-moknah-player-design-admin.php:618
    … …  
    15342013"rescue button remains visible while the main player is out of view."
    15352014msgstr ""
    1536 "واصل التمرير للوصول إلى قسم التذييل وتأكد من أن زر الإنقاذ العائم يظل مرئيًا"
    1537 " أثناء خروج المشغل الرئيسي عن الشاشة."
     2015"واصل التمرير للوصول إلى قسم التذييل وتأكد من أن زر الإنقاذ العائم يظل مرئيًا "
     2016"أثناء خروج المشغل الرئيسي عن الشاشة."
    15382017
    15392018#: includes/class-ats-moknah-player-design-admin.php:620
    … …  
    15892068"المؤقت فقط عندما يخرج المشغل عن الشاشة."
    15902069
     2070#: includes/class-ats-moknah-rating.php:65
     2071msgid "How does this audio sound?"
     2072msgstr "كيف تبدو جودة هذا الصوت؟"
     2073
     2074#: includes/class-ats-moknah-rating.php:66
     2075msgid "How would you rate ATS Moknah?"
     2076msgstr "ما تقييمك لـ ATS Moknah؟"
     2077
     2078#: includes/class-ats-moknah-rating.php:74
     2079msgid "Tap a star — it takes one second and helps us a lot."
     2080msgstr "اضغط على نجمة — يستغرق ذلك ثانية واحدة ويساعدنا كثيرًا."
     2081
     2082#: includes/class-ats-moknah-rating.php:77
     2083msgid "Rating"
     2084msgstr "التقييم"
     2085
     2086#. translators: %d: number of stars
     2087#: includes/class-ats-moknah-rating.php:80
     2088#, php-format
     2089msgid "%d star"
     2090msgid_plural "%d stars"
     2091msgstr[0] "%d نجوم"
     2092msgstr[1] "نجمة واحدة"
     2093msgstr[2] "نجمتان"
     2094msgstr[3] "%d نجوم"
     2095msgstr[4] "%d نجمة"
     2096msgstr[5] "%d نجمة"
     2097
     2098#: includes/class-ats-moknah-rating.php:83
     2099msgid "Not now"
     2100msgstr "ليس الآن"
     2101
     2102#: includes/class-ats-moknah-rating.php:88
     2103msgid "Thank you! Would you share that on WordPress.org?"
     2104msgstr "شكرًا لك! هل تشاركنا رأيك على WordPress.org؟"
     2105
     2106#: includes/class-ats-moknah-rating.php:89
     2107msgid ""
     2108"It takes about 30 seconds. Sign in to WordPress.org and you land right on "
     2109"the review form."
     2110msgstr ""
     2111"يستغرق ذلك نحو 30 ثانية. سجّل الدخول إلى WordPress.org وستنتقل مباشرة إلى "
     2112"نموذج التقييم."
     2113
     2114#: includes/class-ats-moknah-rating.php:93
     2115msgid "Share on WordPress.org"
     2116msgstr "شارك على WordPress.org"
     2117
     2118#: includes/class-ats-moknah-rating.php:95
     2119msgid "Maybe later"
     2120msgstr "ربما لاحقًا"
     2121
     2122#: includes/class-ats-moknah-rating.php:101
     2123msgid "Sorry to hear that. What should we improve?"
     2124msgstr "نأسف لسماع ذلك. ما الذي يجب أن نحسّنه؟"
     2125
     2126#: includes/class-ats-moknah-rating.php:102
     2127msgid "Your message goes privately to the Moknah team — no account needed."
     2128msgstr "تصل رسالتك بشكل خاص إلى فريق مُكنة — دون الحاجة إلى حساب."
     2129
     2130#: includes/class-ats-moknah-rating.php:104
     2131msgid "Tell us what went wrong or what is missing…"
     2132msgstr "أخبرنا بما حدث من خطأ أو ما ينقص…"
     2133
     2134#. translators: %s: the current user's email address
     2135#: includes/class-ats-moknah-rating.php:109
     2136#, php-format
     2137msgid "Moknah may reply to %s"
     2138msgstr "يمكن لمُكنة الرد على %s"
     2139
     2140#: includes/class-ats-moknah-rating.php:113
     2141msgid "Send feedback"
     2142msgstr "إرسال الملاحظات"
     2143
     2144#: includes/class-ats-moknah-rating.php:114
     2145msgid "Or post a public review on WordPress.org"
     2146msgstr "أو انشر تقييمًا عامًا على WordPress.org"
     2147
     2148#: includes/class-ats-moknah-rating.php:120
     2149msgid "Thank you — we read every message."
     2150msgstr "شكرًا لك — نقرأ كل رسالة."
     2151
     2152#: includes/class-ats-moknah-rating.php:170
     2153msgid "Please write a short message."
     2154msgstr "يرجى كتابة رسالة قصيرة."
     2155
    15912156#: views/views-ats-moknah-admin-analytics.php:16
    15922157msgid "Audio Analytics"
    … …  
    16082173msgid "Export All Pages"
    16092174msgstr "تصدير جميع الصفحات"
    1610 
    1611 #: views/views-ats-moknah-admin-analytics.php:38
    1612 msgid "Export CSV"
    1613 msgstr "تصدير كملف CSV"
    16142175
    16152176#: views/views-ats-moknah-admin-analytics.php:47
    … …  
    18042365msgstr "اعرف بدقة أين يتوقف المستمعون في مقالاتك الصوتية."
    18052366
    1806 #: views/views-ats-moknah-admin-heatmap.php:51
    1807 msgid "Article"
    1808 msgstr "المقال"
    1809 
    18102367#: views/views-ats-moknah-admin-heatmap.php:58
    18112368msgid "Search by title…"
    … …  
    18842441"as visitors listen to the audio."
    18852442msgstr ""
    1886 "لم يتم العثور على بيانات استماع لهذا المقال في الفترة المحددة. تُسجَّل "
    1887 "البيانات أثناء استماع الزوار إلى الصوت."
     2443"لم يتم العثور على بيانات استماع لهذا المقال في الفترة المحددة. تُسجَّل البيانات "
     2444"أثناء استماع الزوار إلى الصوت."
    18882445
    18892446#: views/views-ats-moknah-admin-heatmap.php:229
  • ats-moknah-article-to-speech/trunk/languages/ats-moknah-article-to-speech.pot

    r3717670 r3727722  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: ATS Moknah 1.4.0\n"
    6 "Report-Msgid-Bugs-To: sales@moknah.io\n"
     5"Project-Id-Version: ATS Moknah – Text to Speech, AI Voice & Audio Player 1.4.1\n"
     6"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ats-moknah-article-to-speech\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    88"Language-Team: LANGUAGE <LL@li.org>\n"
    … …  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-09-28T17:02:00+00:00\n"
     12"POT-Creation-Date: 2026-10-04T17:19:10+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
    … …  
    1717#. Plugin Name of the plugin
    1818#: ats-moknah.php
    19 #: ats-moknah.php:66
    20 #: includes/class-ats-moknah-admin.php:46
    21 #: includes/class-ats-moknah-admin.php:47
    22 msgid "ATS Moknah"
     19msgid "ATS Moknah – Text to Speech, AI Voice & Audio Player"
    2320msgstr ""
    2421
    … …  
    3027#. Description of the plugin
    3128#: ats-moknah.php
    32 msgid "Convert WordPress articles to speech using Moknah TTS API."
     29msgid "Turn posts into natural AI voice audio. Text to speech in Arabic, English and more, with an audio player, word highlighting and listener analytics."
    3330msgstr ""
    3431
    … …  
    4542msgstr ""
    4643
    47 #: ats-moknah.php:59
     44#: ats-moknah.php:60
    4845msgid "ATS Moknah sends post content to the Moknah TTS API to generate audio files."
    4946msgstr ""
    5047
    51 #: ats-moknah.php:60
     48#: ats-moknah.php:61
    5249msgid "The analytics module stores playback events and aggregated totals in your WordPress database."
    5350msgstr ""
    5451
    55 #: ats-moknah.php:61
     52#: ats-moknah.php:62
    5653msgid "For abuse prevention and deduplication, ATS Moknah stores a salted visitor hash, a salted IP hash, an anonymized IP value, and a truncated user-agent string. An anonymous first-party cookie (ats_vid) may be set for visitor deduplication."
    5754msgstr ""
    5855
    59 #: ats-moknah.php:62
     56#: ats-moknah.php:63
    6057msgid "Analytics data retention is controlled by your site policy; a common retention window is 30 to 90 days for raw event data."
    6158msgstr ""
    6259
    63 #: ats-moknah.php:63
     60#: ats-moknah.php:64
    6461msgid "When GeoIP headers are unavailable, ATS Moknah may send the visitor IP to ipapi.co (third-party geolocation service) to resolve a 2-letter country code and cache it locally."
     62msgstr ""
     63
     64#: ats-moknah.php:65
     65msgid "If an administrator chooses to send feedback from the plugin, the message, star rating, site URL, plugin/WordPress/PHP versions and (only if allowed) the administrator's email are emailed to Moknah."
     66msgstr ""
     67
     68#: ats-moknah.php:66
     69msgid "If listener feedback is enabled, visitors can rate the audio in the player. Their vote, chosen reasons, optional comment, the voice and device type are stored in this site's database with a salted visitor hash (no IP address). Nothing is sent to Moknah."
     70msgstr ""
     71
     72#: ats-moknah.php:69
     73#: includes/class-ats-moknah-admin.php:46
     74#: includes/class-ats-moknah-admin.php:47
     75msgid "ATS Moknah"
    6576msgstr ""
    6677
    … …  
    91102
    92103#: includes/analytics/class-ats-moknah-analytics-admin.php:86
    93 #: includes/class-ats-moknah-admin.php:2882
     104#: includes/class-ats-moknah-admin.php:2885
    94105#: views/views-ats-moknah-admin-analytics.php:98
    95106msgid "Voice"
    … …  
    102113
    103114#: includes/analytics/class-ats-moknah-analytics-admin.php:92
     115#: includes/class-ats-moknah-feedback.php:851
    104116#: views/views-ats-moknah-admin-analytics.php:100
    105117msgid "Device"
    … …  
    724736
    725737#: includes/class-ats-moknah-admin.php:1366
     738#: includes/class-ats-moknah-feedback.php:853
    726739msgid "Desktop"
    727740msgstr ""
    728741
    729742#: includes/class-ats-moknah-admin.php:1368
     743#: includes/class-ats-moknah-feedback.php:854
    730744msgid "Mobile"
    731745msgstr ""
    … …  
    910924#: includes/class-ats-moknah-admin.php:2706
    911925#: includes/class-ats-moknah-admin.php:2800
    912 #: includes/class-ats-moknah-admin.php:2808
     926#: includes/class-ats-moknah-admin.php:2811
     927#: includes/class-ats-moknah-feedback.php:665
    913928msgid "Open settings"
    914929msgstr ""
    … …  
    10211036msgstr ""
    10221037
    1023 #: includes/class-ats-moknah-admin.php:2805
    1024 #: includes/class-ats-moknah-admin.php:2897
     1038#: includes/class-ats-moknah-admin.php:2802
     1039#: includes/class-ats-moknah-notices.php:242
     1040msgid "Get an API key"
     1041msgstr ""
     1042
     1043#: includes/class-ats-moknah-admin.php:2804
     1044msgid "Register with an email on your website's domain — company access requires a matching email domain."
     1045msgstr ""
     1046
     1047#: includes/class-ats-moknah-admin.php:2808
     1048#: includes/class-ats-moknah-admin.php:2900
    10251049msgid "No voices available"
    10261050msgstr ""
    10271051
    1028 #: includes/class-ats-moknah-admin.php:2807
     1052#: includes/class-ats-moknah-admin.php:2810
    10291053msgid "Voices could not be loaded. Check your API key."
    10301054msgstr ""
    10311055
    1032 #: includes/class-ats-moknah-admin.php:2815
     1056#: includes/class-ats-moknah-admin.php:2818
    10331057msgid "No details were returned."
    10341058msgstr ""
    10351059
    1036 #: includes/class-ats-moknah-admin.php:2830
     1060#: includes/class-ats-moknah-admin.php:2833
    10371061msgid "Your previous audio is still live on the post."
    10381062msgstr ""
    10391063
    1040 #: includes/class-ats-moknah-admin.php:2835
     1064#: includes/class-ats-moknah-admin.php:2838
    10411065#: assets/js/admin.js:213
    10421066msgid "Technical details"
    … …  
    10441068
    10451069#. translators: %s: human time difference, e.g. "5 mins"
    1046 #: includes/class-ats-moknah-admin.php:2841
     1070#: includes/class-ats-moknah-admin.php:2844
     1071#: includes/class-ats-moknah-feedback.php:888
    10471072#, php-format
    10481073msgid "%s ago"
    10491074msgstr ""
    10501075
    1051 #: includes/class-ats-moknah-admin.php:2863
     1076#: includes/class-ats-moknah-admin.php:2866
    10521077msgid "Enable Text-to-Speech"
    10531078msgstr ""
    10541079
    1055 #: includes/class-ats-moknah-admin.php:2864
     1080#: includes/class-ats-moknah-admin.php:2867
    10561081msgid "Generate audio and show the player on this post."
    10571082msgstr ""
    10581083
    1059 #: includes/class-ats-moknah-admin.php:2872
     1084#: includes/class-ats-moknah-admin.php:2875
    10601085msgid "AI preprocessing"
    10611086msgstr ""
    10621087
    1063 #: includes/class-ats-moknah-admin.php:2873
     1088#: includes/class-ats-moknah-admin.php:2876
    10641089msgid "Clean and add tashkeel before speech (Arabic)."
    10651090msgstr ""
    10661091
    1067 #: includes/class-ats-moknah-admin.php:2887
    1068 #: includes/class-ats-moknah-admin.php:3121
     1092#: includes/class-ats-moknah-admin.php:2890
     1093#: includes/class-ats-moknah-admin.php:3137
    10691094msgid "Select a voice"
    10701095msgstr ""
    10711096
    1072 #: includes/class-ats-moknah-admin.php:2903
     1097#: includes/class-ats-moknah-admin.php:2906
    10731098msgid "Preview"
    10741099msgstr ""
    10751100
    1076 #: includes/class-ats-moknah-admin.php:2913
     1101#: includes/class-ats-moknah-admin.php:2916
    10771102msgid "Generated audio"
    10781103msgstr ""
    10791104
    1080 #: includes/class-ats-moknah-admin.php:2916
     1105#: includes/class-ats-moknah-admin.php:2919
    10811106msgid "AI preprocessed"
    10821107msgstr ""
    10831108
    1084 #: includes/class-ats-moknah-admin.php:2917
     1109#: includes/class-ats-moknah-admin.php:2920
    10851110msgid "No preprocessing"
    10861111msgstr ""
    10871112
    10881113#: includes/class-ats-moknah-admin.php:2926
    1089 #: includes/class-ats-moknah-admin.php:3168
     1114msgid "Listeners"
     1115msgstr ""
     1116
     1117#: includes/class-ats-moknah-admin.php:2939
     1118#: includes/class-ats-moknah-admin.php:3184
    10901119msgid "Player position"
    10911120msgstr ""
    10921121
    1093 #: includes/class-ats-moknah-admin.php:2927
     1122#: includes/class-ats-moknah-admin.php:2940
    10941123msgid "Change"
    10951124msgstr ""
    10961125
    1097 #: includes/class-ats-moknah-admin.php:2941
     1126#: includes/class-ats-moknah-admin.php:2954
    10981127msgid "Regenerate after editing the post so the audio matches."
    10991128msgstr ""
    11001129
    1101 #: includes/class-ats-moknah-admin.php:2942
     1130#: includes/class-ats-moknah-admin.php:2955
    11021131msgid "Save your latest edits first — the saved content is converted."
    11031132msgstr ""
    11041133
    1105 #: includes/class-ats-moknah-admin.php:2991
     1134#: includes/class-ats-moknah-admin.php:3004
    11061135msgid "Settings saved successfully."
    11071136msgstr ""
    11081137
    1109 #: includes/class-ats-moknah-admin.php:3001
     1138#: includes/class-ats-moknah-admin.php:3014
    11101139msgid "Moknah Logo"
    11111140msgstr ""
    11121141
    1113 #: includes/class-ats-moknah-admin.php:3003
     1142#: includes/class-ats-moknah-admin.php:3016
    11141143msgid "ATS Moknah Settings"
    11151144msgstr ""
    11161145
    1117 #: includes/class-ats-moknah-admin.php:3005
     1146#: includes/class-ats-moknah-admin.php:3018
    11181147msgid "Configure your Article to Speech settings and default preferences."
    11191148msgstr ""
    11201149
    1121 #: includes/class-ats-moknah-admin.php:3011
     1150#: includes/class-ats-moknah-admin.php:3024
    11221151msgid "Warning:"
    11231152msgstr ""
    11241153
    1125 #: includes/class-ats-moknah-admin.php:3012
     1154#: includes/class-ats-moknah-admin.php:3025
    11261155msgid "Unable to load voices from Moknah API. Please verify your API key is correct and has the necessary permissions."
    11271156msgstr ""
    11281157
    1129 #: includes/class-ats-moknah-admin.php:3025
     1158#: includes/class-ats-moknah-admin.php:3038
    11301159msgid "API Configuration"
    11311160msgstr ""
    11321161
    1133 #: includes/class-ats-moknah-admin.php:3030
     1162#: includes/class-ats-moknah-admin.php:3043
    11341163msgid "Moknah API Key"
    11351164msgstr ""
    11361165
    1137 #: includes/class-ats-moknah-admin.php:3031
     1166#: includes/class-ats-moknah-admin.php:3044
    11381167msgid "Enter your Moknah API key to enable text-to-speech conversion."
    11391168msgstr ""
    11401169
    1141 #: includes/class-ats-moknah-admin.php:3039
     1170#: includes/class-ats-moknah-admin.php:3052
    11421171msgid "Enter a new API key to replace current key"
    11431172msgstr ""
    11441173
    11451174#. translators: %s: masked API key suffix
    1146 #: includes/class-ats-moknah-admin.php:3045
     1175#: includes/class-ats-moknah-admin.php:3058
    11471176#, php-format
    11481177msgid "Current key: %s"
    11491178msgstr ""
    11501179
    1151 #: includes/class-ats-moknah-admin.php:3055
     1180#: includes/class-ats-moknah-admin.php:3071
    11521181msgid "Article Selector"
    11531182msgstr ""
    11541183
    1155 #: includes/class-ats-moknah-admin.php:3056
     1184#: includes/class-ats-moknah-admin.php:3072
    11561185msgid "Enter the innermost CSS selector that directly contains the post title and body."
    11571186msgstr ""
    11581187
    1159 #: includes/class-ats-moknah-admin.php:3068
     1188#: includes/class-ats-moknah-admin.php:3084
    11601189msgid "Skipped Selectors"
    11611190msgstr ""
    11621191
    1163 #: includes/class-ats-moknah-admin.php:3069
     1192#: includes/class-ats-moknah-admin.php:3085
    11641193msgid "A list of CSS selectors inside \"Article Selector\" which you plan to ignore them from being highlighted"
    11651194msgstr ""
    11661195
    1167 #: includes/class-ats-moknah-admin.php:3070
     1196#: includes/class-ats-moknah-admin.php:3086
    11681197msgid "'.highlighter-skip' Selector is included by default"
    11691198msgstr ""
    11701199
    1171 #: includes/class-ats-moknah-admin.php:3082
     1200#: includes/class-ats-moknah-admin.php:3098
    11721201msgid "Callback url"
    11731202msgstr ""
    11741203
    1175 #: includes/class-ats-moknah-admin.php:3083
     1204#: includes/class-ats-moknah-admin.php:3099
    11761205msgid "( optional )"
    11771206msgstr ""
    11781207
    1179 #: includes/class-ats-moknah-admin.php:3084
     1208#: includes/class-ats-moknah-admin.php:3100
    11801209msgid "Enter the callback URL to receive audio file notifications."
    11811210msgstr ""
    11821211
    11831212#. translators: %s: Default callback URL
    1184 #: includes/class-ats-moknah-admin.php:3090
     1213#: includes/class-ats-moknah-admin.php:3106
    11851214#, php-format
    11861215msgid "Default: %s"
    11871216msgstr ""
    11881217
    1189 #: includes/class-ats-moknah-admin.php:3108
     1218#: includes/class-ats-moknah-admin.php:3124
    11901219msgid "Voice Settings"
    11911220msgstr ""
    11921221
    1193 #: includes/class-ats-moknah-admin.php:3113
     1222#: includes/class-ats-moknah-admin.php:3129
    11941223msgid "Default Voice"
    11951224msgstr ""
    11961225
    1197 #: includes/class-ats-moknah-admin.php:3114
     1226#: includes/class-ats-moknah-admin.php:3130
    11981227msgid "Select the default voice for new articles."
    11991228msgstr ""
    12001229
    1201 #: includes/class-ats-moknah-admin.php:3143
     1230#: includes/class-ats-moknah-admin.php:3159
    12021231msgid "Please save your API key first to load available voices."
    12031232msgstr ""
    12041233
    1205 #: includes/class-ats-moknah-admin.php:3153
     1234#: includes/class-ats-moknah-admin.php:3169
    12061235msgid "Display Settings"
    12071236msgstr ""
    12081237
    1209 #: includes/class-ats-moknah-admin.php:3158
     1238#: includes/class-ats-moknah-admin.php:3174
    12101239msgid "Post Types & Player Position"
    12111240msgstr ""
    12121241
    1213 #: includes/class-ats-moknah-admin.php:3159
     1242#: includes/class-ats-moknah-admin.php:3175
    12141243msgid "Enable ATS per content type and choose where its player appears."
    12151244msgstr ""
    12161245
    1217 #: includes/class-ats-moknah-admin.php:3166
     1246#: includes/class-ats-moknah-admin.php:3182
    12181247msgid "Post type"
    12191248msgstr ""
    12201249
    1221 #: includes/class-ats-moknah-admin.php:3167
     1250#: includes/class-ats-moknah-admin.php:3183
    12221251msgid "Enabled"
    12231252msgstr ""
    12241253
    1225 #: includes/class-ats-moknah-admin.php:3218
     1254#: includes/class-ats-moknah-admin.php:3234
    12261255msgid "e.g. .entry-meta  or  #post-title  or  .wp-block-post-featured-image"
    12271256msgstr ""
    12281257
    1229 #: includes/class-ats-moknah-admin.php:3220
     1258#: includes/class-ats-moknah-admin.php:3236
    12301259msgid "CSS selector of the element (class, ID…). The first match on the page is used; if nothing matches, the player shows at the top of the content."
    12311260msgstr ""
    12321261
    1233 #: includes/class-ats-moknah-admin.php:3235
     1262#: includes/class-ats-moknah-admin.php:3249
     1263#: includes/class-ats-moknah-feedback.php:446
     1264#: includes/class-ats-moknah-feedback.php:447
     1265#: includes/class-ats-moknah-feedback.php:659
     1266msgid "Listener Feedback"
     1267msgstr ""
     1268
     1269#: includes/class-ats-moknah-admin.php:3250
     1270msgid "Ask listeners \"How was this audio?\" in the player after they listen to half of an article. Results appear under ATS Moknah → Listener Feedback."
     1271msgstr ""
     1272
     1273#: includes/class-ats-moknah-admin.php:3257
     1274msgid "Show the feedback question in the player"
     1275msgstr ""
     1276
     1277#: includes/class-ats-moknah-admin.php:3260
     1278msgid "Keep plain \"Good\" votes for"
     1279msgstr ""
     1280
     1281#: includes/class-ats-moknah-admin.php:3266
     1282msgid "Totals and charts are kept forever. \"Not good\" votes, reasons and comments are never removed automatically."
     1283msgstr ""
     1284
     1285#: includes/class-ats-moknah-admin.php:3268
     1286msgid "View listener feedback"
     1287msgstr ""
     1288
     1289#: includes/class-ats-moknah-admin.php:3276
    12341290msgid "Save Settings"
    12351291msgstr ""
    12361292
    1237 #: includes/class-ats-moknah-admin.php:3381
     1293#: includes/class-ats-moknah-admin.php:3422
    12381294msgid "API authentication failed. Please check your API key in settings."
    12391295msgstr ""
    12401296
    1241 #: includes/class-ats-moknah-admin.php:3385
     1297#: includes/class-ats-moknah-admin.php:3426
    12421298msgid "Invalid request data. Please check your input and try again."
    12431299msgstr ""
    12441300
    1245 #: includes/class-ats-moknah-admin.php:3389
     1301#: includes/class-ats-moknah-admin.php:3430
    12461302msgid "The selected voice ID is invalid. Please choose a valid voice and try again."
    12471303msgstr ""
    12481304
    1249 #: includes/class-ats-moknah-admin.php:3393
     1305#: includes/class-ats-moknah-admin.php:3434
    12501306msgid "Trial limit exceeded. Please contact api@moknah.io."
    12511307msgstr ""
    12521308
    1253 #: includes/class-ats-moknah-admin.php:3397
     1309#: includes/class-ats-moknah-admin.php:3438
    12541310msgid "Your account is suspended or inactive. Please contact api@moknah.io."
    12551311msgstr ""
    12561312
    1257 #: includes/class-ats-moknah-admin.php:3401
     1313#: includes/class-ats-moknah-admin.php:3442
    12581314msgid "This article is already being processed. Please wait until it finishes."
    12591315msgstr ""
    12601316
    1261 #: includes/class-ats-moknah-admin.php:3405
     1317#: includes/class-ats-moknah-admin.php:3446
    12621318msgid "An error occurred while processing your request. Please try again later."
    12631319msgstr ""
    12641320
    1265 #: includes/class-ats-moknah-admin.php:3409
     1321#: includes/class-ats-moknah-admin.php:3450
    12661322msgid "Unable to connect to Moknah API. Please check your internet connection and try again."
    12671323msgstr ""
    12681324
    1269 #: includes/class-ats-moknah-admin.php:3413
     1325#: includes/class-ats-moknah-admin.php:3454
    12701326msgid "Request timed out. Please try again later."
    12711327msgstr ""
    12721328
    1273 #: includes/class-ats-moknah-admin.php:3417
     1329#: includes/class-ats-moknah-admin.php:3458
    12741330msgid "Too many requests. Please wait and try again."
     1331msgstr ""
     1332
     1333#: includes/class-ats-moknah-feedback.php:42
     1334msgid "Pronunciation"
     1335msgstr ""
     1336
     1337#: includes/class-ats-moknah-feedback.php:43
     1338msgid "Voice quality"
     1339msgstr ""
     1340
     1341#: includes/class-ats-moknah-feedback.php:44
     1342msgid "Too fast or too slow"
     1343msgstr ""
     1344
     1345#: includes/class-ats-moknah-feedback.php:45
     1346msgid "Wrong or missing text"
     1347msgstr ""
     1348
     1349#: includes/class-ats-moknah-feedback.php:46
     1350msgid "Player problem"
     1351msgstr ""
     1352
     1353#: includes/class-ats-moknah-feedback.php:47
     1354msgid "Other"
     1355msgstr ""
     1356
     1357#: includes/class-ats-moknah-feedback.php:54
     1358#: includes/class-ats-moknah-feedback.php:655
     1359msgid "30 days"
     1360msgstr ""
     1361
     1362#: includes/class-ats-moknah-feedback.php:55
     1363#: includes/class-ats-moknah-feedback.php:655
     1364msgid "90 days"
     1365msgstr ""
     1366
     1367#: includes/class-ats-moknah-feedback.php:56
     1368msgid "180 days"
     1369msgstr ""
     1370
     1371#: includes/class-ats-moknah-feedback.php:57
     1372msgid "1 year"
     1373msgstr ""
     1374
     1375#: includes/class-ats-moknah-feedback.php:58
     1376msgid "Forever"
     1377msgstr ""
     1378
     1379#: includes/class-ats-moknah-feedback.php:428
     1380msgid "How was this audio?"
     1381msgstr ""
     1382
     1383#: includes/class-ats-moknah-feedback.php:429
     1384#: includes/class-ats-moknah-feedback.php:711
     1385#: includes/class-ats-moknah-feedback.php:797
     1386msgid "Good"
     1387msgstr ""
     1388
     1389#: includes/class-ats-moknah-feedback.php:430
     1390#: includes/class-ats-moknah-feedback.php:711
     1391#: includes/class-ats-moknah-feedback.php:798
     1392msgid "Not good"
     1393msgstr ""
     1394
     1395#: includes/class-ats-moknah-feedback.php:431
     1396msgid "Close"
     1397msgstr ""
     1398
     1399#: includes/class-ats-moknah-feedback.php:432
     1400msgid "What could be better?"
     1401msgstr ""
     1402
     1403#: includes/class-ats-moknah-feedback.php:433
     1404msgid "Optional: tell us more…"
     1405msgstr ""
     1406
     1407#: includes/class-ats-moknah-feedback.php:434
     1408msgid "Send"
     1409msgstr ""
     1410
     1411#: includes/class-ats-moknah-feedback.php:435
     1412msgid "Thanks for your feedback!"
     1413msgstr ""
     1414
     1415#: includes/class-ats-moknah-feedback.php:629
     1416#: includes/class-ats-moknah-frontend.php:512
     1417#: includes/class-ats-moknah-player-design-admin.php:559
     1418msgid "Previous"
     1419msgstr ""
     1420
     1421#. translators: %d: page number
     1422#: includes/class-ats-moknah-feedback.php:632
     1423#, php-format
     1424msgid "Page %d"
     1425msgstr ""
     1426
     1427#: includes/class-ats-moknah-feedback.php:634
     1428#: includes/class-ats-moknah-frontend.php:513
     1429#: includes/class-ats-moknah-player-design-admin.php:560
     1430msgid "Next"
     1431msgstr ""
     1432
     1433#: includes/class-ats-moknah-feedback.php:655
     1434msgid "7 days"
     1435msgstr ""
     1436
     1437#: includes/class-ats-moknah-feedback.php:655
     1438msgid "All time"
     1439msgstr ""
     1440
     1441#: includes/class-ats-moknah-feedback.php:660
     1442msgid "What your readers say about the audio, from the \"How was this audio?\" question in the player."
     1443msgstr ""
     1444
     1445#: includes/class-ats-moknah-feedback.php:664
     1446msgid "Listener feedback is turned off. Turn it on in Settings → Display Settings."
     1447msgstr ""
     1448
     1449#: includes/class-ats-moknah-feedback.php:679
     1450msgid "From"
     1451msgstr ""
     1452
     1453#: includes/class-ats-moknah-feedback.php:682
     1454msgid "To"
     1455msgstr ""
     1456
     1457#: includes/class-ats-moknah-feedback.php:684
     1458msgid "Apply"
     1459msgstr ""
     1460
     1461#: includes/class-ats-moknah-feedback.php:686
     1462#: views/views-ats-moknah-admin-analytics.php:38
     1463msgid "Export CSV"
     1464msgstr ""
     1465
     1466#: includes/class-ats-moknah-feedback.php:690
     1467#: includes/class-ats-moknah-feedback.php:796
     1468msgid "Responses"
     1469msgstr ""
     1470
     1471#: includes/class-ats-moknah-feedback.php:692
     1472#: includes/class-ats-moknah-feedback.php:799
     1473msgid "Satisfaction"
     1474msgstr ""
     1475
     1476#: includes/class-ats-moknah-feedback.php:696
     1477#: includes/class-ats-moknah-feedback.php:800
     1478msgid "Comments"
     1479msgstr ""
     1480
     1481#: includes/class-ats-moknah-feedback.php:702
     1482msgid "Responses by month"
     1483msgstr ""
     1484
     1485#: includes/class-ats-moknah-feedback.php:702
     1486msgid "Responses by day"
     1487msgstr ""
     1488
     1489#: includes/class-ats-moknah-feedback.php:704
     1490msgid "Responses over time"
     1491msgstr ""
     1492
     1493#: includes/class-ats-moknah-feedback.php:714
     1494msgid "Top reasons for \"Not good\""
     1495msgstr ""
     1496
     1497#: includes/class-ats-moknah-feedback.php:716
     1498msgid "No reasons selected yet."
     1499msgstr ""
     1500
     1501#: includes/class-ats-moknah-feedback.php:729
     1502msgid "Articles"
     1503msgstr ""
     1504
     1505#: includes/class-ats-moknah-feedback.php:730
     1506msgid "Comments & issues"
     1507msgstr ""
     1508
     1509#: includes/class-ats-moknah-feedback.php:759
     1510msgid "Most \"Not good\""
     1511msgstr ""
     1512
     1513#: includes/class-ats-moknah-feedback.php:760
     1514msgid "Most responses"
     1515msgstr ""
     1516
     1517#: includes/class-ats-moknah-feedback.php:761
     1518msgid "Lowest satisfaction"
     1519msgstr ""
     1520
     1521#: includes/class-ats-moknah-feedback.php:762
     1522msgid "Highest satisfaction"
     1523msgstr ""
     1524
     1525#: includes/class-ats-moknah-feedback.php:763
     1526msgid "Most recent"
     1527msgstr ""
     1528
     1529#: includes/class-ats-moknah-feedback.php:770
     1530msgid "Search article title or ID…"
     1531msgstr ""
     1532
     1533#: includes/class-ats-moknah-feedback.php:771
     1534msgid "Sort by"
     1535msgstr ""
     1536
     1537#: includes/class-ats-moknah-feedback.php:778
     1538msgid "Min. responses"
     1539msgstr ""
     1540
     1541#: includes/class-ats-moknah-feedback.php:781
     1542#: includes/class-ats-moknah-feedback.php:859
     1543msgid "Filter"
     1544msgstr ""
     1545
     1546#: includes/class-ats-moknah-feedback.php:783
     1547#: includes/class-ats-moknah-feedback.php:861
     1548msgid "Clear filters"
     1549msgstr ""
     1550
     1551#: includes/class-ats-moknah-feedback.php:789
     1552msgid "No articles match these filters. Readers see the question after listening to half of an article."
     1553msgstr ""
     1554
     1555#: includes/class-ats-moknah-feedback.php:795
     1556#: views/views-ats-moknah-admin-heatmap.php:51
     1557msgid "Article"
     1558msgstr ""
     1559
     1560#: includes/class-ats-moknah-feedback.php:810
     1561msgid "Edit post"
     1562msgstr ""
     1563
     1564#: includes/class-ats-moknah-feedback.php:817
     1565msgid "View feedback"
     1566msgstr ""
     1567
     1568#: includes/class-ats-moknah-feedback.php:840
     1569msgid "Remove article filter"
     1570msgstr ""
     1571
     1572#: includes/class-ats-moknah-feedback.php:843
     1573msgid "Article title or ID…"
     1574msgstr ""
     1575
     1576#: includes/class-ats-moknah-feedback.php:845
     1577msgid "Reason"
     1578msgstr ""
     1579
     1580#: includes/class-ats-moknah-feedback.php:846
     1581msgid "All reasons"
     1582msgstr ""
     1583
     1584#: includes/class-ats-moknah-feedback.php:852
     1585msgid "All devices"
     1586msgstr ""
     1587
     1588#: includes/class-ats-moknah-feedback.php:855
     1589msgid "Tablet"
     1590msgstr ""
     1591
     1592#: includes/class-ats-moknah-feedback.php:857
     1593msgid "With comment"
     1594msgstr ""
     1595
     1596#: includes/class-ats-moknah-feedback.php:858
     1597msgid "Search in comments…"
     1598msgstr ""
     1599
     1600#: includes/class-ats-moknah-feedback.php:867
     1601msgid "No feedback matches these filters."
     1602msgstr ""
     1603
     1604#: includes/class-ats-moknah-feedback.php:867
     1605msgid "Nothing to review — readers only left positive votes."
     1606msgstr ""
     1607
     1608#: includes/class-ats-moknah-feedback.php:875
     1609msgid "Select all"
     1610msgstr ""
     1611
     1612#: includes/class-ats-moknah-feedback.php:876
     1613msgid "Delete selected"
     1614msgstr ""
     1615
     1616#: includes/class-ats-moknah-feedback.php:881
     1617msgid "Select"
     1618msgstr ""
     1619
     1620#: includes/class-ats-moknah-feedback.php:914
     1621msgid "Delete the selected feedback? This cannot be undone."
     1622msgstr ""
     1623
     1624#: includes/class-ats-moknah-feedback.php:1001
     1625#: includes/class-ats-moknah-feedback.php:1032
     1626msgid "Not allowed."
    12751627msgstr ""
    12761628
    … …  
    13051657msgstr ""
    13061658
    1307 #: includes/class-ats-moknah-frontend.php:512
    1308 #: includes/class-ats-moknah-player-design-admin.php:559
    1309 msgid "Previous"
    1310 msgstr ""
    1311 
    1312 #: includes/class-ats-moknah-frontend.php:513
    1313 #: includes/class-ats-moknah-player-design-admin.php:560
    1314 msgid "Next"
    1315 msgstr ""
    1316 
    13171659#: includes/class-ats-moknah-frontend.php:514
    13181660#: includes/class-ats-moknah-player-design-admin.php:561
    … …  
    13501692msgstr ""
    13511693
     1694#. translators: %s: new version number
     1695#: includes/class-ats-moknah-notices.php:110
     1696#, php-format
     1697msgid "ATS Moknah %s is available"
     1698msgstr ""
     1699
     1700#: includes/class-ats-moknah-notices.php:116
     1701msgid "Auto-updates are on — it will update automatically soon."
     1702msgstr ""
     1703
     1704#. translators: %s: installed version number
     1705#: includes/class-ats-moknah-notices.php:119
     1706#, php-format
     1707msgid "You are using version %s. Update to get the latest features and fixes."
     1708msgstr ""
     1709
     1710#: includes/class-ats-moknah-notices.php:126
     1711msgid "Update now"
     1712msgstr ""
     1713
     1714#: includes/class-ats-moknah-notices.php:128
     1715msgid "What's new"
     1716msgstr ""
     1717
     1718#: includes/class-ats-moknah-notices.php:142
     1719msgid "Get an API key in a few clicks: register on Moknah.io, request company access, and paste the key in Settings."
     1720msgstr ""
     1721
     1722#: includes/class-ats-moknah-notices.php:143
     1723msgid "ATS works on pages and custom post types, with a player position per post type."
     1724msgstr ""
     1725
     1726#: includes/class-ats-moknah-notices.php:144
     1727msgid "Player Design: Custom CSS, editable player stylesheet and five new Pro presets."
     1728msgstr ""
     1729
     1730#: includes/class-ats-moknah-notices.php:145
     1731msgid "Admin translated into more languages."
     1732msgstr ""
     1733
     1734#. translators: %s: version number
     1735#: includes/class-ats-moknah-notices.php:159
     1736#, php-format
     1737msgid "What's new in ATS Moknah %s"
     1738msgstr ""
     1739
     1740#: includes/class-ats-moknah-notices.php:167
     1741msgid "Full changelog"
     1742msgstr ""
     1743
     1744#: includes/class-ats-moknah-notices.php:170
     1745msgid "Got it"
     1746msgstr ""
     1747
     1748#: includes/class-ats-moknah-notices.php:224
     1749msgid "Get API key"
     1750msgstr ""
     1751
     1752#: includes/class-ats-moknah-notices.php:225
     1753msgid "Rate ATS Moknah on WordPress.org"
     1754msgstr ""
     1755
     1756#: includes/class-ats-moknah-notices.php:225
     1757msgid "Rate"
     1758msgstr ""
     1759
     1760#: includes/class-ats-moknah-notices.php:232
     1761msgid "Register with an email on your website's domain (e.g. you@yourcompany.com for yourcompany.com). Company access can only be requested when the email domain matches the website."
     1762msgstr ""
     1763
     1764#: includes/class-ats-moknah-notices.php:234
     1765msgid "Important:"
     1766msgstr ""
     1767
     1768#: includes/class-ats-moknah-notices.php:237
     1769msgid "Create a Moknah account"
     1770msgstr ""
     1771
     1772#: includes/class-ats-moknah-notices.php:238
     1773msgid "Request company access"
     1774msgstr ""
     1775
     1776#: includes/class-ats-moknah-notices.php:239
     1777msgid "After approval, copy your API key from your Moknah account and paste it here."
     1778msgstr ""
     1779
    13521780#: includes/class-ats-moknah-player-design-admin.php:63
    13531781msgid "Pro: Aurora Card"
    … …  
    14501878msgstr ""
    14511879
     1880#: includes/class-ats-moknah-rating.php:65
     1881msgid "How does this audio sound?"
     1882msgstr ""
     1883
     1884#: includes/class-ats-moknah-rating.php:66
     1885msgid "How would you rate ATS Moknah?"
     1886msgstr ""
     1887
     1888#: includes/class-ats-moknah-rating.php:74
     1889msgid "Tap a star — it takes one second and helps us a lot."
     1890msgstr ""
     1891
     1892#: includes/class-ats-moknah-rating.php:77
     1893msgid "Rating"
     1894msgstr ""
     1895
     1896#. translators: %d: number of stars
     1897#: includes/class-ats-moknah-rating.php:80
     1898#, php-format
     1899msgid "%d star"
     1900msgid_plural "%d stars"
     1901msgstr[0] ""
     1902msgstr[1] ""
     1903
     1904#: includes/class-ats-moknah-rating.php:83
     1905msgid "Not now"
     1906msgstr ""
     1907
     1908#: includes/class-ats-moknah-rating.php:88
     1909msgid "Thank you! Would you share that on WordPress.org?"
     1910msgstr ""
     1911
     1912#: includes/class-ats-moknah-rating.php:89
     1913msgid "It takes about 30 seconds. Sign in to WordPress.org and you land right on the review form."
     1914msgstr ""
     1915
     1916#: includes/class-ats-moknah-rating.php:93
     1917msgid "Share on WordPress.org"
     1918msgstr ""
     1919
     1920#: includes/class-ats-moknah-rating.php:95
     1921msgid "Maybe later"
     1922msgstr ""
     1923
     1924#: includes/class-ats-moknah-rating.php:101
     1925msgid "Sorry to hear that. What should we improve?"
     1926msgstr ""
     1927
     1928#: includes/class-ats-moknah-rating.php:102
     1929msgid "Your message goes privately to the Moknah team — no account needed."
     1930msgstr ""
     1931
     1932#: includes/class-ats-moknah-rating.php:104
     1933msgid "Tell us what went wrong or what is missing…"
     1934msgstr ""
     1935
     1936#. translators: %s: the current user's email address
     1937#: includes/class-ats-moknah-rating.php:109
     1938#, php-format
     1939msgid "Moknah may reply to %s"
     1940msgstr ""
     1941
     1942#: includes/class-ats-moknah-rating.php:113
     1943msgid "Send feedback"
     1944msgstr ""
     1945
     1946#: includes/class-ats-moknah-rating.php:114
     1947msgid "Or post a public review on WordPress.org"
     1948msgstr ""
     1949
     1950#: includes/class-ats-moknah-rating.php:120
     1951msgid "Thank you — we read every message."
     1952msgstr ""
     1953
     1954#: includes/class-ats-moknah-rating.php:170
     1955msgid "Please write a short message."
     1956msgstr ""
     1957
    14521958#: views/views-ats-moknah-admin-analytics.php:16
    14531959msgid "Audio Analytics"
    … …  
    14681974#: views/views-ats-moknah-admin-analytics.php:34
    14691975msgid "Export All Pages"
    1470 msgstr ""
    1471 
    1472 #: views/views-ats-moknah-admin-analytics.php:38
    1473 msgid "Export CSV"
    14741976msgstr ""
    14751977
    … …  
    16652167msgstr ""
    16662168
    1667 #: views/views-ats-moknah-admin-heatmap.php:51
    1668 msgid "Article"
    1669 msgstr ""
    1670 
    16712169#: views/views-ats-moknah-admin-heatmap.php:58
    16722170msgid "Search by title…"
  • ats-moknah-article-to-speech/trunk/readme.txt

    r3717670 r3727722  
    1 === ATS Moknah ===
     1=== ATS Moknah – Text to Speech, AI Voice & Audio Player ===
    22Contributors: moknah
    3 Tags: text-to-speech, tts, accessibility, audio, ai-voice
     3Tags: text-to-speech, tts, ai voice, audio player, arabic
    44Requires at least: 5.8
    55Tested up to: 7.1
    66Requires PHP: 8.2
    7 Stable tag: 1.4.0
     7Stable tag: 1.4.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 Convert WordPress articles into engaging AI-powered speech with text highlighting and track listener engagement with advanced audio analytics.
     11Turn posts into natural AI voice audio. Text to speech in Arabic, English and more, with an audio player, word highlighting and listener analytics.
    1212
    1313== Description ==
    1414
    15 ATS Moknah (Article to Speech) transforms your written content into high-quality AI voice narration using the Moknah TTS API. Each post can be converted to speech with synchronized text highlighting, providing enhanced accessibility and a better listening experience for your readers.
     15**ATS Moknah** is a text to speech plugin for WordPress that turns your posts, pages and articles into natural AI voice audio. Add a "Listen to the article" audio player to every post, highlight each word as it is read, and see how many readers listen with built-in audio analytics.
     16
     17Built by Moknah, an Arabic-first AI voice platform, ATS Moknah delivers some of the most natural **Arabic text to speech** available for WordPress, including Gulf, Egyptian, Levantine and Maghrebi dialects, alongside English and other languages. It is ideal for news sites, blogs and publishers who want to offer audio articles, improve accessibility for visually impaired readers, and keep visitors on the page longer.
    1618
    1719With **over 95 different AI voices** supporting **multiple Arabic dialects** and **multiple languages**, you can deliver content that resonates with your diverse audience in their preferred voice and language.
    … …  
    2729* 📝 **Text Highlighting** - Synchronized text highlighting follows the audio
    2830* 📊 **Advanced Audio Analytics** - Track impressions, plays, completion rates, and listen times
     31* 💬 **Listener Feedback** - Readers rate the audio in the player (good / not good + reasons); see results per article in your dashboard
    2932* 📈 **Exportable Reports** - Generate structured, business-ready CSV reports with date filtering
    3033* ⚙️ **Per-Post Control** - Enable/disable speech generation for individual posts
    … …  
    4245
    43461. Install and activate the plugin
    44 2. Get your API key from Moknah.io (contact sales@moknah.io)
     472. Create an account on Moknah.io **with an email on your website's domain**, request company access, and get your API key once approved
    45483. Configure your settings and choose from 95+ voices
    46494. Enable speech generation for individual posts
    … …  
    6164To use ATS Moknah, you need an API key from Moknah.io.
    6265
    63 **Email**: sales@moknah.io
    64 **Subject**: API Key Request for ATS Moknah Plugin
    65 
    66 Include your website URL and intended usage in your request.
     66**⚠️ Important: register with an email on your website's domain.** Company access can only be requested from an account whose email domain matches the company website. For `https://yourcompany.com`, register with an address like `you@yourcompany.com`. Accounts using Gmail, Outlook, Yahoo or another domain cannot submit the request.
     67
     681. Create an account at [moknah.io](https://moknah.io/app/acc/register/) using your company email (see above).
     692. Open [Request Company Access](https://moknah.io/en/app/acc/my-company/request/) and submit your company name and website.
     703. Wait for your company to be approved.
     714. After approval, manage your API key from your Moknah account and paste it into **Settings → ATS Moknah → Moknah API Key**.
    6772
    6873= Privacy & Data Usage =
    … …  
    7580
    7681When country headers are unavailable, the plugin may call `ipapi.co` to resolve a 2-letter country code.
     82
     83If listener feedback is enabled, visitors can rate the audio in the player. Their vote, chosen reasons, optional comment, the voice and device type are stored in your WordPress database with a salted visitor hash (no IP address); nothing is sent to Moknah.
     84
     85If an administrator chooses to send feedback from the plugin's rating card, the message, star rating, site URL, plugin/WordPress/PHP versions and (only if they allow it) their email address are emailed to Moknah. Nothing is sent unless they click **Send feedback**.
    7786
    7887For your site’s full policy text, WordPress provides a detailed template in **Settings → Privacy → Privacy Policy Guide**.
    … …  
    115124= Do I need an API key? =
    116125
    117 Yes, you need a Moknah API key to use this plugin. Contact sales@moknah.io to request your API key.
     126Yes. Register at [moknah.io](https://moknah.io/app/acc/register/) with an email on your website's domain (e.g. you@yourcompany.com), submit the [Request Company Access](https://moknah.io/en/app/acc/my-company/request/) form, and once your company is approved you can create and manage your API key from your Moknah account. See **API Key Required** above.
    118127
    119128= How much does the API cost? =
    … …  
    203212
    204213== Changelog ==
     214
     215= 1.4.1 =
     216* New: "Get an API key" links and step-by-step help in Settings and the post editor (register on Moknah.io, request company access, paste the key), with a clear warning that your Moknah account email must use your website's domain.
     217* New: notice on ATS Moknah screens when a new version is available, with one-click update (or a note when auto-updates are on).
     218* New: one-time "What's new" notice after updating.
     219* New: in-plugin star rating, on ATS Moknah screens and in the post editor right after audio is ready. 4–5 stars can be shared on WordPress.org in one click (sign-in lands directly on the review form); 1–3 stars open a private feedback form sent to the Moknah team, no account needed.
     220* New: "Rate" and "Get API key" links on the Plugins screen.
     221* New: Listener Feedback. After listening to half of an article, readers can answer "How was this audio?" in the player (good / not good, reasons like pronunciation or speed, optional comment). Results are stored on your site and shown under ATS Moknah → Listener Feedback, with satisfaction per article, top issues, recent comments and CSV export. Can be turned off in Settings.
     222* New: Listener Feedback filters - date range (7/30/90 days, all time or custom dates), article search, sorting (most "Not good", most responses, lowest/highest satisfaction, most recent), minimum responses, and for comments: reason, device, "with comment" and text search. Bulk delete and CSV export follow the filters.
     223* Improved: Listener Feedback is built for large sites (hundreds of thousands of articles, millions of votes) using running totals, paginated lists and a daily clean-up of old plain "Good" votes (retention setting; totals, "Not good" votes and comments are always kept).
     224* New: admin translations for Hindi, Spanish, French, Chinese (Simplified), Japanese, Russian, German, Portuguese (Brazil), Turkish, Indonesian, Urdu, Persian, Korean and Italian.
     225* Improved: complete Arabic translation, including the post editor messages.
     226* Improved: clearer plugin name and description.
    205227
    206228= 1.4.0 =
    … …  
    270292== Upgrade Notice ==
    271293
     294= 1.4.1 =
     295Listener feedback in the player, easier API key setup, in-plugin rating, update notices and admin translations in 15 languages.
     296
    272297= 1.4.0 =
    273298Custom post types, per-type player position (including custom CSS selectors), a redesigned post editor box with clear error messages, Custom CSS and stylesheet editing, and five new Pro player presets. Note: "After byline" was replaced by "Top of content" – set "After a custom element" with `.byline` to keep the old placement.
Note: See TracChangeset for help on using the changeset viewer.