Plugin Directory

Changeset 3480099


Ignore:
Timestamp:
03/11/2026 12:50:19 PM (3 weeks ago)
Author:
PAGEmachine
Message:

[RELEASE] Version 2.5.0

Location:
aigude-tools/trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • aigude-tools/trunk/README.txt

    r3415292 r3480099  
    22Contributors: pagemachine, maltamirano
    33Tags: ai, alt text, accessibility, images, seo
    4 Stable tag: 2.4.0
     4Stable tag: 2.5.0
    55Requires at least: 6.0
    66Tested up to: 6.8
     
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 Generate and manage image alt text with AI — featuring bulk actions, multilingual prompts, and seamless Media Library integration.
     11Generate and manage image alt text with AI; featuring bulk actions, multilingual prompts, and seamless Media Library integration.
    1212
    1313== Description ==
    1414
    1515**AiGude Tools** improves accessibility and SEO by automatically generating alternative text for your images using an AI-powered API.
    16 Save time, stay consistent, and enhance your site’s visibility in search engines — all without manually writing every alt text.
     16Save time, stay consistent, and enhance your site’s visibility in search engines, all without manually writing every alt text.
    1717
    1818Want to try it? [Visit our live demo.](https://aigude.io/en/Try-It/)
    1919
    20 To use the plugin you’ll need an AiGude API key — grab one for free at [AiGude.io](https://aigude.io/en/Products/).
     20To use the plugin you’ll need an AiGude API key, grab one for free at [AiGude.io](https://aigude.io/en/Products/).
    2121
    2222[AiGude FAQ (German)](https://www.pagemachine.de/ki-loesungen/aigude-faq)
     
    4949
    5050= Do I need an API key? =
    51 Yes — an AiGude API key is required. Get one free at [AiGude.io](https://aigude.io).
     51Yes, an AiGude API key is required. Get one free at [AiGude.io](https://aigude.io).
    5252
    5353= Does it overwrite existing alt texts? =
     
    9494== Changelog ==
    9595
     96= 2.5.0 =
     97* Bulk alt text generation now sends images in batches of up to 10, reducing total processing time significantly.
     98* Progress bar animates during batch processing with a status indicator showing the current batch.
     99
    96100= 2.4.0 =
    97101* Prompts in views grouped by provider, with tooltips and “Edit in Prompts” quick access.
  • aigude-tools/trunk/aigude-tools.php

    r3415292 r3480099  
    44 * Plugin URI:        https://wordpress.org/plugins/aigude-tools/
    55 * Description:       Generate and manage image alt text with AI — supports bulk actions, custom multilingual prompts, and full Media Library integration.
    6  * Version:           2.4.0
     6 * Version:           2.5.0
    77 * Requires at least: 6.0
    88 * Requires PHP:      7.4
     
    3535    const NONCE_ACTION  = 'aigude-tools';
    3636    const PER_IMAGE_CREDITS = 3;
     37    const BATCH_SIZE        = 10;
    3738    const BUILTIN_PROMPT_ID = 'aigude-default-prompt';
    3839
    39     const API_URL_IMG2DESC = 'https://credits.aigude.io/img2desc_file';
    40     const API_URL_CREDITS  = 'https://credits.aigude.io/remaining_credits';
     40    const API_URL_IMG2DESC       = 'https://credits.aigude.io/img2desc_file';
     41    const API_URL_IMG2DESC_BATCH = 'https://credits.aigude.io/img2desc_file_batch';
     42    const API_URL_CREDITS        = 'https://credits.aigude.io/remaining_credits';
    4143    const API_URL_TRANSLATE_PROVIDERS = AIGUDE_Translation_Service::API_URL_TRANSLATE_PROVIDERS;
    4244    const DEFAULT_TRANSLATION_PROVIDER = AIGUDE_Translation_Service::DEFAULT_PROVIDER;
     
    396398
    397399    /**
     400     * Resolve the Img2Desc batch endpoint, honoring overrides via constants/env/filters.
     401     */
     402    public static function get_img2desc_batch_url(): string {
     403        if (defined('AIGUDE_IMG2DESC_BATCH_URL') && is_string(AIGUDE_IMG2DESC_BATCH_URL) && AIGUDE_IMG2DESC_BATCH_URL !== '') {
     404            return trim(AIGUDE_IMG2DESC_BATCH_URL);
     405        }
     406
     407        $env = getenv('AIGUDE_IMG2DESC_BATCH_URL');
     408        if (is_string($env) && trim($env) !== '') {
     409            return trim($env);
     410        }
     411
     412        if (function_exists('apply_filters')) {
     413            $filtered = apply_filters('aigude_img2desc_batch_url', self::API_URL_IMG2DESC_BATCH);
     414            if (is_string($filtered) && trim($filtered) !== '') {
     415                return trim($filtered);
     416            }
     417        }
     418
     419        return self::API_URL_IMG2DESC_BATCH;
     420    }
     421
     422    /**
    398423     * Resolve the credits endpoint using the same override cascade as the Img2Desc URL.
    399424     */
  • aigude-tools/trunk/assets/css/includes/list_view.css

    r3361969 r3480099  
    8080}
    8181
     82@keyframes progress-shimmer {
     83  0%   { background-position: -200% 0; }
     84  100% { background-position: 200% 0; }
     85}
     86
     87.progress-bar.in-flight {
     88  background: linear-gradient(
     89    90deg,
     90    #e01e8a 0%,
     91    #f472c8 40%,
     92    #e01e8a 60%,
     93    #e01e8a 100%
     94  );
     95  background-size: 200% 100%;
     96  animation: progress-shimmer 1.5s ease-in-out infinite;
     97}
     98
     99@media (prefers-reduced-motion: reduce) {
     100  .progress-bar.in-flight {
     101    animation: none;
     102  }
     103}
     104
     105.progress-status {
     106  margin-top: 6px;
     107  font-size: 12px;
     108  color: #666;
     109  min-height: 18px;
     110}
     111
    82112.credit-info-wrapper {
    83113  padding: 10px 14px;
  • aigude-tools/trunk/assets/js/grid-actions.js

    r3415292 r3480099  
    2424        /* translators: %d = total number of credits used across the whole operation */
    2525        totalCreditsUsedTpl: __('Total credits used: %d', 'aigude-tools'),
     26        /* translators: %1$d = current batch number, %2$d = total number of batches */
     27        sendingBatchTpl: __('Sending batch %1$d of %2$d to AI\u2026', 'aigude-tools'),
    2628        lockedByPrompt:     __('Language locked by selected prompt.', 'aigude-tools'),
    2729    };
     
    479481            method: 'POST',
    480482            dataType: 'json',
     483            timeout: 310000,
    481484            data: Object.assign({
    482                 action: 'aigude_generate_bulk',
     485                action: 'aigude_generate_batch',
    483486                ids: ids,
    484487                _ajax_nonce: cfg.nonce,
     
    498501    // -----------------------------------------------------------------------
    499502    $(function () {
    500         const $selectBtn   = $(cfg.selectors?.selectBtn || '');
    501         const $generateBtn = $(cfg.selectors?.generateBtn || '');
     503        const $selectBtn      = $(cfg.selectors?.selectBtn || '');
     504        const $generateBtn    = $(cfg.selectors?.generateBtn || '');
     505        const $progressStatus = $('#bulk-progress-status');
    502506
    503507        updateGenerateBtnLabel();
     
    564568            const langProvider = targetInfo.provider || 'deepl';
    565569
    566             const BATCH_SIZE = Math.max(1, Number(cfg.batchSize) || 12);
     570            const BATCH_SIZE = Math.max(1, Math.min(Number(cfg.batchSize) || 10, 10));
    567571            const batches = chunk(selectedIds, BATCH_SIZE);
    568572
    569573            let totalCredits = 0;
    570574            let aborted = false;
     575            let batchNum = 0;
    571576
    572577            progStart(selectedIds.length);
     
    580585                    if (aborted) break;
    581586
     587                    batchNum++;
     588                    $bar.addClass('in-flight');
     589                    $progressStatus.show().text(
     590                        STR.sendingBatchTpl.replace('%1$d', batchNum).replace('%2$d', batches.length)
     591                    );
     592                    const simStartPct = (PROG_DONE / PROG_TOTAL) * 100;
     593                    const simTargetPct = ((PROG_DONE + ids.length) / PROG_TOTAL) * 100;
     594                    const simMaxPct = simStartPct + (simTargetPct - simStartPct) * 0.85;
     595                    let simPct = simStartPct;
     596                    const simInterval = setInterval(() => {
     597                        const remaining = simMaxPct - simPct;
     598                        simPct += remaining * 0.03;
     599                        $bar.css('width', simPct + '%');
     600                    }, 200);
    582601                    try {
    583602                        const res = await postChunk(ids, {
     
    614633                        progStep(ids.length);
    615634                        if (fatal) { aborted = true; break; }
     635                    } finally {
     636                        clearInterval(simInterval);
     637                        $bar.removeClass('in-flight');
    616638                    }
    617639                }
    618640            } finally {
     641                $progressStatus.hide().text('');
    619642                progFinish();
    620643
  • aigude-tools/trunk/assets/js/list-actions.js

    r3415292 r3480099  
    3333        creditsWord:        __('credits', 'aigude-tools'),
    3434        lockedByPrompt:     __('Language locked by selected prompt.', 'aigude-tools'),
     35        /* translators: %1$d = current batch number, %2$d = total number of batches */
     36        sendingBatchTpl: __('Sending batch %1$d of %2$d to AI\u2026', 'aigude-tools'),
    3537    };
    3638
     
    5355    const $progressWrap       = $('#bulk-progress');
    5456    const $progressBar        = $('#bulk-progress-bar');
     57    const $progressStatus     = $('#bulk-progress-status');
    5558
    5659    const currentSearchTerm = () => $('#aigude-tools-search').val() || '';
     
    380383        });
    381384
     385    // --- Helpers -------------------------------------------------------------
     386    function chunk(arr, size) {
     387        const n = Math.max(1, Number(size) || 1);
     388        const out = [];
     389        for (let i = 0; i < arr.length; i += n) out.push(arr.slice(i, i + n));
     390        return out;
     391    }
     392
     393    const BATCH_SIZE = 10;
     394
    382395    // --- Bulk generate -------------------------------------------------------
    383396    $bulkBtn.off('click.ai').on('click.ai', async function () {
     
    410423
    411424        setBtnLoading($btn);
    412         $progressBar.css('width', '0%');
     425        $progressBar.css('width', '0%').attr({
     426            role: 'progressbar',
     427            'aria-valuemin': 0,
     428            'aria-valuemax': total,
     429            'aria-valuenow': 0,
     430        });
    413431        $progressWrap.show();
    414432        updateButtonLabelText($btn, done, total);
     
    418436            updateButtonLabelText($btn, done, total);
    419437            $progressBar.css('width', Math.round((done / total) * 100) + '%');
     438            $progressBar.attr({ 'aria-valuenow': done, 'aria-valuemax': total });
    420439        };
    421440
     
    433452
    434453        try {
    435             for (const id of idQueue) {
     454            const batches = chunk(idQueue, BATCH_SIZE);
     455            let batchNum = 0;
     456
     457            for (const batchIds of batches) {
    436458                if (aborted) break;
    437459
     460                batchNum++;
     461                $progressBar.addClass('in-flight');
     462                $progressStatus.show().text(
     463                    STR.sendingBatchTpl.replace('%1$d', batchNum).replace('%2$d', batches.length)
     464                );
     465                const simStartPct = (done / total) * 100;
     466                const simTargetPct = ((done + batchIds.length) / total) * 100;
     467                const simMaxPct = simStartPct + (simTargetPct - simStartPct) * 0.85;
     468                let simPct = simStartPct;
     469                const simInterval = setInterval(() => {
     470                    const remaining = simMaxPct - simPct;
     471                    simPct += remaining * 0.03;
     472                    $progressBar.css('width', simPct + '%');
     473                }, 200);
    438474                try {
    439475                    const res = await $.ajax({
     
    441477                        method: 'POST',
    442478                        dataType: 'json',
    443                         timeout: 30000,
     479                        timeout: 310000,
    444480                        data: {
    445                             action: 'aigude_generate_bulk',
    446                             ids: [id],
     481                            action: 'aigude_generate_batch',
     482                            ids: batchIds,
    447483                            prompt,
    448484                            lang,
     
    456492
    457493                    if (res && res.success && res.data && res.data.results) {
    458                         const r = res.data.results[id] || {};
    459 
    460494                        if (typeof res.data.creditsUsed === 'number') {
    461495                            creditsUsedTotal += res.data.creditsUsed;
     
    466500                        }
    467501
    468                         const $card = $(`.ai-card[data-id="${id}"]`);
    469                         if ($card.length) {
    470                             if (r.status === 'ok' && r.alt) {
    471                                 $card.find('.continue-single').show();
    472                                 showAlt($card, r.alt);
    473                                 $card.find('.suggestion-text').text(r.alt);
    474                                 $card.find('.suggestion-block').show();
    475                                 $card.attr('data-saved-alt', r.alt);
    476                                 if (skip) {
     502                        const batchResults = res.data.results;
     503                        for (const id of batchIds) {
     504                            const r = batchResults[id] || {};
     505                            const $card = $(`.ai-card[data-id="${id}"]`);
     506                            if ($card.length) {
     507                                if (r.status === 'ok' && r.alt) {
     508                                    $card.find('.continue-single').show();
     509                                    showAlt($card, r.alt);
     510                                    $card.find('.suggestion-text').text(r.alt);
     511                                    $card.find('.suggestion-block').show();
     512                                    $card.attr('data-saved-alt', r.alt);
     513                                    if (skip) {
     514                                        $card.find('.ai-select').prop({ checked: false, disabled: true });
     515                                        $card.addClass('ai-disabled');
     516                                    }
     517                                } else if (r.status === 'skipped' && skip) {
    477518                                    $card.find('.ai-select').prop({ checked: false, disabled: true });
    478519                                    $card.addClass('ai-disabled');
     520                                } else if (r.status === 'error') {
     521                                    const { message, fatal } = parseError(null, { data: { message: r.message, code: r.code }});
     522                                    agToast(message, 'error');
     523                                    if (fatal) aborted = true;
    479524                                }
    480                             } else if (r.status === 'skipped' && skip) {
    481                                 $card.find('.ai-select').prop({ checked: false, disabled: true });
    482                                 $card.addClass('ai-disabled');
    483                             } else if (r.status === 'error') {
    484                                 const { message, fatal } = parseError(null, { data: { message: r.message, code: r.code }});
    485                                 agToast(message, 'error');
    486                                 if (fatal) aborted = true;
    487525                            }
     526                            tick();
    488527                        }
    489528                    } else {
    490529                        const { message, fatal } = parseError(null, res);
    491530                        agToast(message, 'error');
     531                        batchIds.forEach(() => tick());
    492532                        if (fatal) aborted = true;
    493533                    }
     
    495535                    const { message, fatal } = parseError(jqXHR, jqXHR.responseJSON);
    496536                    agToast(message, 'error');
     537                    batchIds.forEach(() => tick());
    497538                    if (fatal) aborted = true;
    498539                }
    499 
    500                 tick();
     540                clearInterval(simInterval);
     541                $progressBar.removeClass('in-flight');
     542
    501543                if (aborted) break;
    502544            }
    503545        } finally {
     546            $progressStatus.hide().text('');
    504547            setTimeout(() => $progressWrap.fadeOut(200), 300);
    505548            const base = $bulkBtn.data('default-text').replace('%s', total);
  • aigude-tools/trunk/includes/class-aigude-media-controller.php

    r3408170 r3480099  
    1818        add_action('wp_ajax_aigude_apply', [$this, 'ajax_apply_alt']);
    1919        add_action('wp_ajax_aigude_generate_bulk', [$this, 'ajax_generate_bulk']);
     20        add_action('wp_ajax_aigude_generate_batch', [$this, 'ajax_generate_batch']);
    2021        add_action('wp_ajax_aigude_get_all_credits', [$this, 'ajax_get_all_credits']);
    2122        add_action('wp_ajax_aigude_set_skip_mode', [$this, 'ajax_set_skip_mode']);
     
    329330
    330331    /**
     332     * Generate alt text for multiple attachments using the batch API endpoint.
     333     *
     334     * Sends up to BATCH_SIZE images per API request. Falls back to single-image
     335     * processing on server/timeout errors. Auth errors abort immediately.
     336     */
     337    public function ajax_generate_batch(): void {
     338        if (!current_user_can('upload_files')) {
     339            $this->json_error('forbidden', 403);
     340        }
     341        check_ajax_referer(AIGUDE_Tools_Plugin::NONCE_ACTION);
     342
     343        $ids          = array_map('absint', (array) ($_POST['ids'] ?? []));
     344        $prompt       = isset($_POST['prompt']) ? sanitize_textarea_field(wp_unslash($_POST['prompt'])) : '';
     345        $skipExisting = !empty($_POST['skipExisting']);
     346        $langCode     = isset($_POST['lang']) ? sanitize_text_field(wp_unslash($_POST['lang'])) : 'default';
     347        $provider_override = isset($_POST['translation_provider'])
     348            ? sanitize_text_field(wp_unslash($_POST['translation_provider']))
     349            : '';
     350        $translation_provider = $provider_override !== ''
     351            ? AIGUDE_Translation_Service::normalize_translation_provider($provider_override)
     352            : AIGUDE_Translation_Service::DEFAULT_PROVIDER;
     353        $targetLang   = AIGUDE_Tools_Plugin::resolve_target_lang_code($langCode, $translation_provider);
     354        $prompt_lang  = isset($_POST['prompt_lang']) ? sanitize_text_field(wp_unslash($_POST['prompt_lang'])) : 'auto';
     355        $tpl_src_lang = isset($_POST['tpl_src_lang']) ? sanitize_text_field(wp_unslash($_POST['tpl_src_lang'])) : 'auto';
     356        AIGUDE_Tools_Plugin::push_recent_lang('target', $targetLang, $translation_provider);
     357
     358        if (empty($ids) || $prompt === '') {
     359            $this->json_error(__('Missing parameters.', 'aigude-tools'));
     360        }
     361
     362        [$apiKey, $apiUrlSingle] = $this->get_active_server_credentials(AIGUDE_Tools_Plugin::get_img2desc_url());
     363        if (empty($apiKey)) {
     364            $this->json_error(['message' => __('API key missing!', 'aigude-tools')]);
     365        }
     366
     367        $prompt      = wp_unslash($prompt);
     368        $batchApiUrl = AIGUDE_Tools_Plugin::get_img2desc_batch_url();
     369        $batchSize   = AIGUDE_Tools_Plugin::BATCH_SIZE;
     370        $creditsTotal = 0;
     371        $results      = [];
     372
     373        // --- Collect eligible images ---
     374        $eligible = []; // [{id, orig_path, file_path (resized), upload_name}]
     375        foreach ($ids as $id) {
     376            if ($skipExisting) {
     377                $existing = (string) get_post_meta($id, '_wp_attachment_image_alt', true);
     378                if (trim($existing) !== '') {
     379                    $results[$id] = [
     380                        'status'       => 'skipped',
     381                        'existing_alt' => $existing,
     382                    ];
     383                    continue;
     384                }
     385            }
     386
     387            $orig = get_attached_file($id);
     388            if (!$orig || !file_exists($orig)) {
     389                $results[$id] = ['status' => 'error', 'message' => 'File not found'];
     390                continue;
     391            }
     392
     393            $file = $this->resize_temp_image($orig) ?: $orig;
     394            $basename = wp_basename($orig);
     395            // Prefix with ID to guarantee uniqueness across attachments sharing the same filename
     396            $upload_name = $id . '-' . $basename;
     397
     398            $eligible[] = [
     399                'id'          => $id,
     400                'orig_path'   => $orig,
     401                'file_path'   => $file,
     402                'upload_name' => $upload_name,
     403            ];
     404        }
     405
     406        // --- Process in batches ---
     407        $chunks = array_chunk($eligible, $batchSize);
     408
     409        foreach ($chunks as $chunk) {
     410            $files = [];
     411            foreach ($chunk as $att) {
     412                $files[] = ['path' => $att['file_path'], 'name' => $att['upload_name']];
     413            }
     414
     415            // Build filename-keyed prompt_spec
     416            $prompt_spec = $this->build_prompt_spec_batch(
     417                $prompt, $prompt_lang, $tpl_src_lang, $chunk, $translation_provider
     418            );
     419
     420            if (AIGUDE_Tools_Plugin::debug_enabled() && function_exists('wp_debug_log')) {
     421                wp_debug_log('[AiGude Tools] prompt_spec(batch) ids=' . implode(',', array_column($chunk, 'id')) . ': ' . wp_json_encode($prompt_spec));
     422            }
     423
     424            $url = add_query_arg([
     425                'target_lang'          => $targetLang,
     426                'api_version'          => 2,
     427                'translation_provider' => $translation_provider,
     428            ], $batchApiUrl);
     429
     430            $resp = $this->curl_upload_batch($url, $apiKey, $files, [
     431                'prompt_spec' => wp_json_encode($prompt_spec),
     432            ]);
     433
     434            // --- Error handling ---
     435            if (is_wp_error($resp)) {
     436                // Network/timeout error → fallback to single for this chunk
     437                $this->process_chunk_single($chunk, $results, $creditsTotal, $prompt, $prompt_lang, $tpl_src_lang, $targetLang, $translation_provider, $apiKey, $apiUrlSingle);
     438                continue;
     439            }
     440
     441            $http = (int) wp_remote_retrieve_response_code($resp);
     442            $body = wp_remote_retrieve_body($resp);
     443
     444            // Auth/credit errors → abort entirely
     445            if ($http === 401 || $http === 403) {
     446                $api_msg = '';
     447                $decoded = json_decode($body, true);
     448                if (is_array($decoded)) {
     449                    $api_msg = $decoded['message'] ?? $decoded['error'] ?? $decoded['detail'] ?? '';
     450                }
     451                $this->json_error([
     452                    'message' => $api_msg !== '' ? $api_msg : __('Invalid or unauthorized API key.', 'aigude-tools'),
     453                    'code'    => 'invalid_api_key',
     454                ], $http);
     455            }
     456
     457            // Server errors → fallback to single for this chunk
     458            if ($http !== 200) {
     459                $this->process_chunk_single($chunk, $results, $creditsTotal, $prompt, $prompt_lang, $tpl_src_lang, $targetLang, $translation_provider, $apiKey, $apiUrlSingle);
     460                continue;
     461            }
     462
     463            $data = json_decode($body, true);
     464            if (!is_array($data) || empty($data['success']) || !is_array($data['items'] ?? null)) {
     465                $this->process_chunk_single($chunk, $results, $creditsTotal, $prompt, $prompt_lang, $tpl_src_lang, $targetLang, $translation_provider, $apiKey, $apiUrlSingle);
     466                continue;
     467            }
     468
     469            // --- Map response items back to attachment IDs ---
     470            $name_to_id = [];
     471            foreach ($chunk as $att) {
     472                $name_to_id[$att['upload_name']] = $att['id'];
     473            }
     474
     475            $matched_ids = [];
     476            foreach ($data['items'] as $item) {
     477                $fname         = $item['filename'] ?? '';
     478                $generated     = $item['generated_text'] ?? '';
     479                $provider_used = $item['provider'] ?? null;
     480
     481                if ($fname === '' || !isset($name_to_id[$fname])) {
     482                    continue;
     483                }
     484
     485                $att_id = $name_to_id[$fname];
     486                $matched_ids[$att_id] = true;
     487
     488                if ($generated === '') {
     489                    $results[$att_id] = ['status' => 'error', 'message' => 'Empty generated text'];
     490                    continue;
     491                }
     492
     493                $alt = sanitize_text_field($generated);
     494                update_post_meta($att_id, '_wp_attachment_image_alt', $alt);
     495                update_post_meta($att_id, '_aigude_alt_suggestion', $alt);
     496
     497                $results[$att_id] = [
     498                    'status'   => 'ok',
     499                    'alt'      => $alt,
     500                    'credits'  => 0, // per-image credits not available in batch response
     501                    'provider' => $provider_used,
     502                ];
     503            }
     504
     505            // Any chunk items not matched in response → error
     506            foreach ($chunk as $att) {
     507                if (!isset($matched_ids[$att['id']])) {
     508                    $results[$att['id']] = ['status' => 'error', 'message' => 'Missing in batch response'];
     509                }
     510            }
     511
     512            $creditsTotal += (int) ($data['credits_used'] ?? 0);
     513        }
     514
     515        $this->json_ok([
     516            'results'     => $results,
     517            'creditsUsed' => $creditsTotal,
     518        ]);
     519    }
     520
     521    /**
     522     * Fallback: process a chunk of attachments one-by-one via the single-image endpoint.
     523     *
     524     * Mutates $results and $creditsTotal by reference.
     525     */
     526    private function process_chunk_single(array $chunk, array &$results, int &$creditsTotal, string $prompt, string $prompt_lang, string $tpl_src_lang, string $targetLang, string $translation_provider, string $apiKey, string $apiUrl): void {
     527        foreach ($chunk as $att) {
     528            $id   = $att['id'];
     529            $file = $att['file_path'];
     530
     531            $prompt_spec = $this->build_prompt_spec($prompt, $prompt_lang, $tpl_src_lang, $id, $translation_provider);
     532            $url = add_query_arg([
     533                'target_lang'          => $targetLang,
     534                'api_version'          => 2,
     535                'translation_provider' => $translation_provider,
     536            ], $apiUrl);
     537
     538            $resp = $this->curl_upload($url, $apiKey, $file, ['prompt_spec' => wp_json_encode($prompt_spec)]);
     539            if (is_wp_error($resp)) {
     540                $results[$id] = ['status' => 'error', 'message' => 'cURL: ' . $resp->get_error_message()];
     541                continue;
     542            }
     543
     544            $http = (int) wp_remote_retrieve_response_code($resp);
     545            $body = wp_remote_retrieve_body($resp);
     546
     547            if ($http === 401 || $http === 403) {
     548                $results[$id] = ['status' => 'error', 'message' => 'Auth error'];
     549                return; // Stop processing — fatal
     550            }
     551
     552            if ($http !== 200) {
     553                $results[$id] = ['status' => 'error', 'message' => sprintf('HTTP %d', $http)];
     554                continue;
     555            }
     556
     557            $data = json_decode($body, true);
     558            if (!is_array($data) || empty($data['success']) || empty($data['generated_text'])) {
     559                $results[$id] = ['status' => 'error', 'message' => 'Invalid API response'];
     560                continue;
     561            }
     562
     563            $alt = sanitize_text_field($data['generated_text']);
     564            update_post_meta($id, '_wp_attachment_image_alt', $alt);
     565            update_post_meta($id, '_aigude_alt_suggestion', $alt);
     566
     567            $credits = isset($data['credits_used']) ? (int) $data['credits_used'] : 0;
     568            $creditsTotal += $credits;
     569
     570            $results[$id] = [
     571                'status'   => 'ok',
     572                'alt'      => $alt,
     573                'credits'  => $credits,
     574                'provider' => $data['provider'] ?? null,
     575            ];
     576        }
     577    }
     578
     579    /**
    331580     * Fetch remaining credit counts for each configured AiGude server entry.
    332581     */
     
    433682            'Content-Type' => 'multipart/form-data; boundary=' . $boundary,
    434683            'apikey'       => $api_key,
     684            'X-AIGUDE-Client' => 'wordpress',
    435685        ];
    436686
     
    455705
    456706    /**
     707     * Post a multipart request containing multiple image files and additional payload fields.
     708     *
     709     * @param string $url      The API endpoint URL.
     710     * @param string $api_key  The API key for authentication.
     711     * @param array  $files    Array of ['path' => string, 'name' => string] for each image.
     712     * @param array  $fields   Additional form fields (e.g., prompt_spec).
     713     * @return array|WP_Error
     714     */
     715    private function curl_upload_batch(string $url, string $api_key, array $files, array $fields = []) {
     716        foreach ($files as $file) {
     717            if (!file_exists($file['path'])) {
     718                return new WP_Error('file_missing', __('Temporary image file missing', 'aigude-tools'));
     719            }
     720        }
     721
     722        $boundary = wp_generate_password(24, false);
     723        $headers = [
     724            'Content-Type'    => 'multipart/form-data; boundary=' . $boundary,
     725            'apikey'          => $api_key,
     726            'X-AIGUDE-Client' => 'wordpress',
     727        ];
     728
     729        $body = '';
     730        foreach ($fields as $name => $value) {
     731            $body .= "--$boundary\r\n";
     732            $body .= "Content-Disposition: form-data; name=\"" . $name . "\"\r\n\r\n";
     733            $body .= (string) $value . "\r\n";
     734        }
     735        foreach ($files as $file) {
     736            $body .= "--$boundary\r\n";
     737            $body .= "Content-Disposition: form-data; name=\"image_files\"; filename=\"" . $file['name'] . "\"\r\n";
     738            $body .= "Content-Type: " . (wp_check_filetype($file['path'])['type'] ?: 'application/octet-stream') . "\r\n\r\n";
     739            $body .= file_get_contents($file['path']) . "\r\n";
     740        }
     741        $body .= "--$boundary--\r\n";
     742
     743        return wp_remote_post($url, [
     744            'headers' => $headers,
     745            'body'    => $body,
     746            'timeout' => 300,
     747        ]);
     748    }
     749
     750    /**
    457751     * Convenience wrapper for wp_send_json_success().
    458752     */
     
    472766     */
    473767    private function build_prompt_spec(string $prompt_template, string $prompt_lang, string $placeholder_lang, int $attachment_id, string $provider = AIGUDE_Translation_Service::DEFAULT_PROVIDER): array {
    474         $tokens_map = $this->get_attachment_tokens($attachment_id);
    475         $spec_tokens = [];
    476 
    477         $used = [];
    478         $token_mods = [];
    479         if ($prompt_template !== '' && preg_match_all('/%([a-z0-9_\\-]+)(?:\\|([^%]*))?%/i', $prompt_template, $m, PREG_SET_ORDER)) {
    480             foreach ($m as $match) {
    481                 $tok = strtolower($match[1]);
    482                 $used[$tok] = true;
    483 
    484                 $mods_str = isset($match[2]) ? (string) $match[2] : '';
    485                 if ($mods_str !== '') {
    486                     $mods = array_filter(array_map('trim', explode('|', $mods_str)));
    487                     foreach ($mods as $mod) {
    488                         $mod_l = strtolower($mod);
    489                         if (in_array($mod_l, ['translatable', 'translate'], true)) {
    490                             $token_mods[$tok]['translatable'] = true;
    491                         } elseif (in_array($mod_l, ['untranslatable', 'no-translate', 'notranslate'], true)) {
    492                             $token_mods[$tok]['translatable'] = false;
    493                         }
    494                     }
    495                 }
    496             }
    497         }
    498 
    499768        $norm_provider = AIGUDE_Translation_Service::normalize_translation_provider($provider);
    500769        $norm_prompt_lang = (strtolower($prompt_lang) === 'auto')
    501770            ? 'auto'
    502771            : AIGUDE_Translation_Service::normalize_provider_lang_code_generic($prompt_lang, $norm_provider, 'source');
    503         $norm_placeholder_lang = (strtolower($placeholder_lang) === 'auto')
    504             ? 'auto'
    505             : AIGUDE_Translation_Service::normalize_provider_lang_code_generic($placeholder_lang, $norm_provider, 'source');
    506772        if ($norm_prompt_lang === '') {
    507773            $norm_prompt_lang = 'auto';
    508774        }
    509         if ($norm_placeholder_lang === '') {
    510             $norm_placeholder_lang = 'auto';
    511         }
    512 
    513         foreach ($tokens_map as $key => $value) {
    514             if (!isset($used[$key])) {
    515                 continue;
    516             }
    517 
    518             if (in_array($key, ['current_alt', 'current-alt', 'caption', 'description'], true)) {
    519                 $str = trim((string) $value);
    520                 if ($str === '') {
    521                     continue;
    522                 }
    523                 $translatable = $token_mods[$key]['translatable'] ?? true;
    524                 $spec_tokens[$key] = [
    525                     'value'        => $str,
    526                     'lang'         => $norm_placeholder_lang ?: 'auto',
    527                     'translatable' => (bool) $translatable,
    528                 ];
    529             } elseif (in_array($key, ['title'], true)) {
    530                 $str = trim((string) $value);
    531                 if ($str === '') {
    532                     continue;
    533                 }
    534                 $translatable = $token_mods[$key]['translatable'] ?? false;
    535                 $spec_tokens[$key] = [
    536                     'value'        => $str,
    537                     'lang'         => $norm_placeholder_lang ?: 'auto',
    538                     'translatable' => (bool) $translatable,
    539                 ];
    540             } elseif (in_array($key, ['filename', 'filename_no_ext'], true)) {
    541                 $str = (string) $value;
    542                 if ($str === '') {
    543                     continue;
    544                 }
    545                 $translatable = $token_mods[$key]['translatable'] ?? false;
    546                 $spec_tokens[$key] = [
    547                     'value'        => $str,
    548                     'lang'         => $norm_placeholder_lang ?: 'auto',
    549                     'translatable' => (bool) $translatable,
    550                 ];
    551             } elseif (in_array($key, ['width', 'height'], true)) {
    552                 $num = (int) $value;
    553                 if ($num <= 0) {
    554                     continue;
    555                 }
    556                 $spec_tokens[$key] = [
    557                     'value'        => $num,
    558                     'lang'         => 'auto',
    559                     'translatable' => false,
    560                 ];
    561             }
    562         }
     775
     776        $spec_tokens = $this->build_tokens_for_attachment($prompt_template, $placeholder_lang, $attachment_id, $provider);
    563777
    564778        return [
     
    566780            'prompt_lang'     => $norm_prompt_lang ?: 'auto',
    567781            'tokens'          => $spec_tokens,
     782        ];
     783    }
     784
     785    /**
     786     * Build a batch prompt_spec with tokens keyed by filename.
     787     *
     788     * @param string $prompt_template  The prompt template string.
     789     * @param string $prompt_lang      Language of the prompt template.
     790     * @param string $placeholder_lang Language of the placeholder values.
     791     * @param array  $attachments      Array of ['id' => int, 'upload_name' => string].
     792     * @param string $provider         Translation provider slug.
     793     * @return array
     794     */
     795    private function build_prompt_spec_batch(string $prompt_template, string $prompt_lang, string $placeholder_lang, array $attachments, string $provider): array {
     796        $norm_provider = AIGUDE_Translation_Service::normalize_translation_provider($provider);
     797        $norm_prompt_lang = (strtolower($prompt_lang) === 'auto')
     798            ? 'auto'
     799            : AIGUDE_Translation_Service::normalize_provider_lang_code_generic($prompt_lang, $norm_provider, 'source');
     800        if ($norm_prompt_lang === '') {
     801            $norm_prompt_lang = 'auto';
     802        }
     803
     804        $tokens_by_file = [];
     805        foreach ($attachments as $att) {
     806            $tokens_by_file[$att['upload_name']] = $this->build_tokens_for_attachment(
     807                $prompt_template, $placeholder_lang, $att['id'], $provider
     808            );
     809        }
     810
     811        return [
     812            'prompt_template' => $prompt_template,
     813            'prompt_lang'     => $norm_prompt_lang ?: 'auto',
     814            'tokens'          => $tokens_by_file,
    568815        ];
    569816    }
     
    600847        ];
    601848    }
     849
     850    /**
     851     * Build the tokens sub-array for a single attachment (reused by both single and batch prompt_spec).
     852     *
     853     * Returns only tokens that are actually used in the template, with language and translatability metadata.
     854     */
     855    private function build_tokens_for_attachment(string $prompt_template, string $placeholder_lang, int $attachment_id, string $provider): array {
     856        $tokens_map = $this->get_attachment_tokens($attachment_id);
     857        $spec_tokens = [];
     858
     859        $used = [];
     860        $token_mods = [];
     861        if ($prompt_template !== '' && preg_match_all('/%([a-z0-9_\\-]+)(?:\\|([^%]*))?%/i', $prompt_template, $m, PREG_SET_ORDER)) {
     862            foreach ($m as $match) {
     863                $tok = strtolower($match[1]);
     864                $used[$tok] = true;
     865
     866                $mods_str = isset($match[2]) ? (string) $match[2] : '';
     867                if ($mods_str !== '') {
     868                    $mods = array_filter(array_map('trim', explode('|', $mods_str)));
     869                    foreach ($mods as $mod) {
     870                        $mod_l = strtolower($mod);
     871                        if (in_array($mod_l, ['translatable', 'translate'], true)) {
     872                            $token_mods[$tok]['translatable'] = true;
     873                        } elseif (in_array($mod_l, ['untranslatable', 'no-translate', 'notranslate'], true)) {
     874                            $token_mods[$tok]['translatable'] = false;
     875                        }
     876                    }
     877                }
     878            }
     879        }
     880
     881        $norm_provider = AIGUDE_Translation_Service::normalize_translation_provider($provider);
     882        $norm_placeholder_lang = (strtolower($placeholder_lang) === 'auto')
     883            ? 'auto'
     884            : AIGUDE_Translation_Service::normalize_provider_lang_code_generic($placeholder_lang, $norm_provider, 'source');
     885        if ($norm_placeholder_lang === '') {
     886            $norm_placeholder_lang = 'auto';
     887        }
     888
     889        foreach ($tokens_map as $key => $value) {
     890            if (!isset($used[$key])) {
     891                continue;
     892            }
     893
     894            if (in_array($key, ['current_alt', 'current-alt', 'caption', 'description'], true)) {
     895                $str = trim((string) $value);
     896                if ($str === '') {
     897                    continue;
     898                }
     899                $translatable = $token_mods[$key]['translatable'] ?? true;
     900                $spec_tokens[$key] = [
     901                    'value'        => $str,
     902                    'lang'         => $norm_placeholder_lang ?: 'auto',
     903                    'translatable' => (bool) $translatable,
     904                ];
     905            } elseif (in_array($key, ['title'], true)) {
     906                $str = trim((string) $value);
     907                if ($str === '') {
     908                    continue;
     909                }
     910                $translatable = $token_mods[$key]['translatable'] ?? false;
     911                $spec_tokens[$key] = [
     912                    'value'        => $str,
     913                    'lang'         => $norm_placeholder_lang ?: 'auto',
     914                    'translatable' => (bool) $translatable,
     915                ];
     916            } elseif (in_array($key, ['filename', 'filename_no_ext'], true)) {
     917                $str = (string) $value;
     918                if ($str === '') {
     919                    continue;
     920                }
     921                $translatable = $token_mods[$key]['translatable'] ?? false;
     922                $spec_tokens[$key] = [
     923                    'value'        => $str,
     924                    'lang'         => $norm_placeholder_lang ?: 'auto',
     925                    'translatable' => (bool) $translatable,
     926                ];
     927            } elseif (in_array($key, ['width', 'height'], true)) {
     928                $num = (int) $value;
     929                if ($num <= 0) {
     930                    continue;
     931                }
     932                $spec_tokens[$key] = [
     933                    'value'        => $num,
     934                    'lang'         => 'auto',
     935                    'translatable' => false,
     936                ];
     937            }
     938        }
     939
     940        return $spec_tokens;
     941    }
    602942}
  • aigude-tools/trunk/includes/grid-view.php

    r3415292 r3480099  
    175175
    176176            <div id="bulk-progress" class="progress-container"><div id="bulk-progress-bar" class="progress-bar"></div></div>
     177            <div id="bulk-progress-status" class="progress-status" style="display:none;"></div>
    177178            <div id="media-selected-grid"></div>
    178179        </section>
  • aigude-tools/trunk/includes/list-view.php

    r3415292 r3480099  
    311311
    312312            <div id="bulk-progress" class="progress-container">
    313                 <div id="bulk-progress-bar" class="progress-bar"></div>
    314             </div>
     313                <div id="bulk-progress-bar" class="progress-bar" role="progressbar"></div>
     314            </div>
     315            <div id="bulk-progress-status" class="progress-status" style="display:none;"></div>
    315316        </section>
    316317
  • aigude-tools/trunk/languages/aigude-tools-de_DE.po

    r3415292 r3480099  
    55"Project-Id-Version: Plugins - AiGude Tools - Stable (latest release)\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/aigude-tools\n"
    7 "POT-Creation-Date: 2025-12-03T11:35:29+00:00\n"
    8 "PO-Revision-Date: 2025-10-14 08:50:49+0000\n"
     7"POT-Creation-Date: 2025-12-09T11:45:59+00:00\n"
     8"PO-Revision-Date: 2025-12-08 21:27:38+0000\n"
    99"Language: de\n"
    1010"MIME-Version: 1.0\n"
     
    1414"X-Generator: GlotPress/4.0.3\n"
    1515
     16#: assets/js/grid-actions.js:106 assets/js/list-actions.js:230
     17msgid "Close"
     18msgstr "Schließen"
     19
     20#: assets/js/grid-actions.js:104 assets/js/list-actions.js:228
     21msgid "Edit in Prompts"
     22msgstr "In Prompts bearbeiten"
     23
     24#: includes/grid-view.php:160 includes/list-view.php:284
     25msgid "View prompt details"
     26msgstr "Prompt-Details anzeigen"
     27
     28#: includes/grid-view.php:99 includes/list-view.php:99
     29msgid "(No provider)"
     30msgstr "(Kein Anbieter)"
     31
     32#: includes/admin-prompts.php:516
     33msgid "Restore defaults"
     34msgstr "Standards wiederherstellen"
     35
     36#: includes/admin-prompts.php:156
     37msgid "The default prompt cannot be deleted."
     38msgstr "Der Standard-Prompt kann nicht gelöscht werden."
     39
     40#: includes/admin-prompts.php:135
     41msgid "Default prompt restored."
     42msgstr "Standard-Prompt wiederhergestellt."
     43
     44#: includes/admin-prompts.php:94
     45msgid "Default prompt added."
     46msgstr "Standard-Prompt hinzugefügt."
     47
     48#: aigude-tools.php:210
     49msgid "Default Prompt"
     50msgstr "Standard-Prompt"
     51
     52#: assets/js/grid-actions.js:26 assets/js/list-actions.js:34
     53msgid "Language locked by selected prompt."
     54msgstr "Sprache durch ausgewählten Prompt gesperrt."
     55
     56#: includes/admin-settings.php:824 includes/admin-settings.php:827
     57msgid "Could not save language."
     58msgstr "Sprache konnte nicht gespeichert werden."
     59
     60#: includes/admin-settings.php:820
     61msgid "Language saved."
     62msgstr "Sprache gespeichert."
     63
     64#: includes/admin-settings.php:782
     65msgid "Saving..."
     66msgstr "Wird gespeichert …"
     67
     68#: includes/admin-settings.php:745
     69msgid "No translation provider metadata available. Add a server with a valid API key to load providers."
     70msgstr "Keine Metadaten zu Übersetzungsanbietern verfügbar. Fügen Sie einen Server mit gültigem API-Schlüssel hinzu, um Anbieter zu laden."
     71
     72#: includes/admin-settings.php:736
     73msgid "Your site language is unavailable; \"System\" will fall back to the closest supported code."
     74msgstr "Ihre Website-Sprache ist nicht verfügbar; \"System\" fällt auf den nächsten unterstützten Code zurück."
     75
     76#: includes/admin-settings.php:734
     77msgid "Switch to this provider to edit the default language."
     78msgstr "Zu diesem Anbieter wechseln, um die Standardsprache zu bearbeiten."
     79
     80#: includes/admin-settings.php:698
     81msgid "Default alt text language"
     82msgstr "Standard-Alt-Text-Sprache"
     83
     84#: includes/admin-settings.php:693
     85msgid "Click to view the full list"
     86msgstr "Klicken, um die vollständige Liste anzuzeigen"
     87
     88#: includes/admin-settings.php:691
     89msgid "Language details"
     90msgstr "Sprachdetails"
     91
     92#. translators: %d = number of languages supported by the provider.
     93#: includes/admin-settings.php:671
     94msgid "%d supported languages"
     95msgstr "%d unterstützte Sprachen"
     96
     97#. translators: %s = site language label, e.g. "English (US)".
     98#: includes/admin-settings.php:660
     99msgid "%s is not available for this provider."
     100msgstr "%s ist für diesen Anbieter nicht verfügbar."
     101
     102#. translators: %s = site language label, e.g. "English (US)".
     103#: includes/admin-settings.php:652
     104msgid "%s is supported for this site."
     105msgstr "%s wird für diese Website unterstützt."
     106
     107#: includes/admin-settings.php:642
     108msgid "Active provider"
     109msgstr "Aktiver Anbieter"
     110
     111#: includes/admin-settings.php:532
     112msgid "Translation provider"
     113msgstr "Übersetzungsanbieter"
     114
     115#: includes/admin-settings.php:522
     116msgid "Select the translation provider for AI-generated alt texts. The provider determines the available target languages."
     117msgstr "Wählen Sie den Übersetzungsanbieter für KI-generierte Alternativtexte. Der Anbieter bestimmt die verfügbaren Zielsprachen."
     118
     119#. translators: %s = site language label, e.g. "English (US)".
     120#: includes/admin-settings.php:515
     121msgid "Following site language (%s)."
     122msgstr "Entspricht der Website-Sprache (%s)."
     123
     124#. translators: %s = human-readable language label that is no longer supported.
     125#: includes/admin-settings.php:513
     126msgid "Current default (%s) is unavailable. Pick another language."
     127msgstr "Der aktuelle Standard (%s) ist nicht verfügbar. Wählen Sie eine andere Sprache."
     128
     129#. translators: %s = human-readable language label, e.g. "German (Germany)".
     130#: includes/admin-settings.php:511
     131msgid "Current default: %s"
     132msgstr "Aktueller Standard: %s"
     133
     134#: includes/admin-settings.php:384
     135msgid "Add Connection"
     136msgstr "Verbindung hinzufügen"
     137
     138#: includes/admin-settings.php:311
     139msgid "Edit Connection"
     140msgstr "Verbindung bearbeiten"
     141
     142#: includes/admin-settings.php:284
     143msgid "API Connections"
     144msgstr "API-Verbindungen"
     145
     146#: includes/admin-settings.php:186
     147msgid "Translation provider settings are no longer used."
     148msgstr "Einstellungen für Übersetzungsanbieter werden nicht mehr verwendet."
     149
     150#: includes/admin-prompts.php:748
     151msgid "When set, the List/Grid views lock the Alt Text Language selector to this provider/language."
     152msgstr "Wenn aktiviert, sperren Listen-/Rasteransichten den Alt-Text-Sprachwähler auf diesen Anbieter/diese Sprache."
     153
     154#: includes/admin-prompts.php:746
     155msgid "Pick a provider and language you always want the generated alt text to use, overriding the default selection in List/Grid views."
     156msgstr "Wählen Sie einen Anbieter und eine Sprache, die immer für den generierten Alt-Text verwendet werden sollen und die Auswahl in Liste/Raster überschreiben."
     157
     158#: includes/admin-prompts.php:694
     159msgid "No languages available"
     160msgstr "Keine Sprachen verfügbar"
     161
     162#: includes/admin-prompts.php:693 includes/admin-prompts.php:738
     163msgid "Select a provider to choose a language"
     164msgstr "Wählen Sie einen Anbieter, um eine Sprache auszuwählen"
     165
     166#: includes/admin-prompts.php:688
     167msgid "Language"
     168msgstr "Sprache"
     169
     170#: includes/admin-prompts.php:682 includes/admin-settings.php:549
     171msgid "Show only EU-based translation providers"
     172msgstr "Nur EU-basierte Übersetzungsanbieter anzeigen"
     173
     174#: includes/admin-prompts.php:663
     175msgid "Provider"
     176msgstr "Anbieter"
     177
     178#: includes/admin-prompts.php:658
     179msgid "Target Alt Text language"
     180msgstr "Zielsprache für Alt-Text"
     181
     182#: includes/admin-prompts.php:598
     183msgid "Available placeholders"
     184msgstr "Verfügbare Platzhalter"
     185
     186#: includes/admin-prompts.php:595
     187msgid "You can write the prompt in any language supported by the provider you select for the Target Alt Text."
     188msgstr "Sie können den Prompt in jeder Sprache verfassen, die vom Anbieter der Ziel-Alt-Text-Sprache unterstützt wird."
     189
     190#: includes/admin-prompts.php:580
     191msgid "Make this the default prompt"
     192msgstr "Diesen Prompt als Standard festlegen"
     193
     194#: includes/admin-prompts.php:513
     195msgid "Duplicate"
     196msgstr "Duplizieren"
     197
     198#: includes/admin-prompts.php:499
     199msgid "Not set"
     200msgstr "Nicht festgelegt"
     201
     202#: includes/admin-prompts.php:450
     203msgid "Target language"
     204msgstr "Zielsprache"
     205
     206#: includes/admin-prompts.php:440 includes/admin-settings.php:375
     207msgid "Add New"
     208msgstr "Neu hinzufügen"
     209
     210#: includes/admin-prompts.php:343
     211msgid "Please select a target language."
     212msgstr "Bitte eine Zielsprache auswählen."
     213
     214#: includes/admin-prompts.php:340
     215msgid "Please select a translation provider."
     216msgstr "Bitte einen Übersetzungsanbieter auswählen."
     217
     218#: includes/admin-prompts.php:337
     219msgid "Please enter a prompt."
     220msgstr "Bitte einen Prompt eingeben."
     221
     222#: includes/admin-prompts.php:334
     223msgid "Please enter a title."
     224msgstr "Bitte einen Titel eingeben."
     225
     226#: includes/admin-prompts.php:117 includes/admin-prompts.php:146
     227#: includes/admin-prompts.php:170 includes/admin-prompts.php:180
     228#: includes/admin-prompts.php:371
     229msgid "Prompt not found."
     230msgstr "Prompt nicht gefunden."
     231
     232#: includes/admin-prompts.php:115
     233msgid "Prompt duplicated."
     234msgstr "Prompt dupliziert."
     235
     236#: includes/admin-prompts.php:755
     237msgid "Save Prompt"
     238msgstr "Prompt speichern"
     239
     240#: includes/admin-prompts.php:613
     241msgid "Examples:"
     242msgstr "Beispiele:"
     243
     244#: includes/admin-prompts.php:609
     245msgid "Modifiers: |q (force quotes), |raw (no quotes), |trim, |lower, |upper, |ucfirst, |translatable (force translate), |untranslatable (no translate)."
     246msgstr "Modifikatoren: |q (Anführungszeichen erzwingen), |raw (ohne Anführungszeichen), |trim, |lower, |upper, |ucfirst, |translatable (Übersetzung erzwingen), |untranslatable (nicht übersetzen)."
     247
     248#: includes/admin-prompts.php:553
     249msgid "Add New Prompt"
     250msgstr "Neuen Prompt hinzufügen"
     251
     252#: includes/admin-prompts.php:553
     253msgid "Edit Prompt"
     254msgstr "Prompt bearbeiten"
     255
     256#: includes/admin-prompts.php:530
     257msgid "No prompts added."
     258msgstr "Keine Prompts hinzugefügt."
     259
     260#: includes/admin-prompts.php:375
     261msgid "Prompt saved."
     262msgstr "Prompt gespeichert."
     263
     264#: includes/admin-prompts.php:369
     265msgid "Prompt updated."
     266msgstr "Prompt aktualisiert."
     267
     268#: includes/admin-prompts.php:167
     269msgid "Prompt deleted."
     270msgstr "Prompt gelöscht."
     271
     272#: includes/admin-prompts.php:144
     273msgid "Default prompt updated."
     274msgstr "Standard‑Prompt aktualisiert."
     275
     276#: includes/admin-prompts.php:434 includes/class-aigude-admin-ui.php:155
     277#: includes/class-aigude-admin-ui.php:156
     278msgid "Prompts"
     279msgstr "Prompts"
     280
     281#: includes/admin-server.php:177 includes/admin-settings.php:194
     282#: includes/class-aigude-admin-ui.php:146
     283#: includes/class-aigude-admin-ui.php:147
     284msgid "Settings"
     285msgstr "Einstellungen"
     286
     287#: includes/admin-prompts.php:725 includes/admin-prompts.php:785
     288#: includes/admin-settings.php:724 includes/admin-templates.php:249
     289#: includes/admin-templates.php:278
     290msgid "All languages"
     291msgstr "Alle Sprachen"
     292
     293#: includes/admin-prompts.php:714 includes/admin-prompts.php:784
     294#: includes/admin-settings.php:716 includes/admin-settings.php:752
     295#: includes/admin-templates.php:241 includes/admin-templates.php:271
     296msgid "Recent"
     297msgstr "Zuletzt verwendet"
     298
     299#: includes/admin-server.php:183 includes/admin-settings.php:295
     300msgid "Get API key at AiGude.io"
     301msgstr "API-Schlüssel bei AiGude.io holen"
     302
     303#: includes/admin-server.php:181 includes/admin-settings.php:293
     304msgid "Don't have an API key?"
     305msgstr "Noch keinen API-Schlüssel?"
     306
     307#: assets/js/server-actions.js:11
     308msgid "Copy failed"
     309msgstr "Kopieren fehlgeschlagen"
     310
     311#: assets/js/server-actions.js:10
     312msgid "Error during retrieval"
     313msgstr "Fehler beim Abrufen"
     314
     315#: assets/js/server-actions.js:9
     316msgid "Hide"
     317msgstr "Ausblenden"
     318
     319#: assets/js/list-actions.js:28
     320msgid "No AI text generated yet."
     321msgstr "Noch kein KI-Text generiert."
     322
     323#: assets/js/list-actions.js:26
     324msgid "Please select at least one image."
     325msgstr "Bitte wähle mindestens ein Bild aus."
     326
     327#: assets/js/list-actions.js:25
     328msgid "Error saving alt text"
     329msgstr "Fehler beim Speichern des Alt-Texts"
     330
     331#: assets/js/list-actions.js:24
     332msgid "Error generating alt text"
     333msgstr "Fehler beim Generieren des Alt-Texts"
     334
     335#: assets/js/list-actions.js:23
     336msgid "Alt-Text saved"
     337msgstr "Alt-Text gespeichert"
     338
     339#: assets/js/list-actions.js:22
     340msgid "Alt-Text generated"
     341msgstr "Alt-Text generiert"
     342
     343#. translators: %d = number of credits used for the current image/batch
     344#: assets/js/list-actions.js:16
     345msgid "Credits used: %d"
     346msgstr "Verbrauchte Credits: %d"
     347
     348#. translators: %d = total number of credits used across the whole operation
     349#: assets/js/grid-actions.js:25 assets/js/list-actions.js:13
     350msgid "Total credits used: %d"
     351msgstr "Insgesamt verwendete Credits: %d"
     352
     353#: assets/js/grid-actions.js:23 assets/js/list-actions.js:33
     354msgid "credits"
     355msgstr "Credits"
     356
     357#: assets/js/grid-actions.js:22 assets/js/list-actions.js:32
     358msgid "Security check failed. Please reload the page."
     359msgstr "Sicherheitsprüfung fehlgeschlagen. Bitte lade die Seite neu."
     360
     361#: assets/js/grid-actions.js:20 assets/js/list-actions.js:27
     362msgid "This will overwrite existing alt texts. Are you sure?"
     363msgstr "Dadurch werden vorhandene Alt-Texte überschrieben. Bist du sicher?"
     364
     365#: assets/js/grid-actions.js:19 assets/js/list-actions.js:20
     366msgid "Done"
     367msgstr "Fertig"
     368
     369#: assets/js/grid-actions.js:17
     370msgid "Skip images that already have alt text"
     371msgstr "Bilder mit vorhandenem Alternativtext überspringen"
     372
     373#: assets/js/grid-actions.js:15
     374msgid "Selected"
     375msgstr "Ausgewählt"
     376
     377#: assets/js/grid-actions.js:14
     378msgid "Loading…"
     379msgstr "Laden …"
     380
     381#. translators: Label on a button that selects all results across all pages in
     382#. the media grid
     383#: assets/js/grid-actions.js:13
     384msgid "Select all (all results)"
     385msgstr "Alle auswählen (alle Treffer)"
     386
     387#. translators: Label on a button that selects all currently visible items in
     388#. the media grid
     389#: assets/js/grid-actions.js:11
     390msgid "Select all (visible)"
     391msgstr "Alle auswählen (sichtbar)"
     392
     393#: assets/js/grid-actions.js:9
     394msgid "Select images"
     395msgstr "Bilder auswählen"
     396
     397#: includes/list-view.php:419
     398msgid "Alternative Text"
     399msgstr "Alternativtext"
     400
     401#: includes/list-view.php:409
     402msgid "Continue with the current alternative text"
     403msgstr "Mit dem aktuellen Alternativtext fortfahren"
     404
     405#: includes/list-view.php:405
     406msgid "Credits"
     407msgstr "Credits"
     408
     409#: includes/list-view.php:401
     410msgid "Generating"
     411msgstr "Wird generiert"
     412
     413#: includes/list-view.php:400 includes/list-view.php:402
     414msgid "Generate"
     415msgstr "Generieren"
     416
     417#: includes/list-view.php:394
     418msgid "Custom prompt…"
     419msgstr "Benutzerdefinierter Prompt …"
     420
     421#. translators: %s: the file title (post_title) of the image.
     422#: includes/list-view.php:342
     423msgid "Generate File Metadata \"%s\""
     424msgstr "Dateimetadaten für „%s“ generieren"
     425
     426#: includes/list-view.php:333
     427msgid "Open in Media Library"
     428msgstr "In der Mediathek öffnen"
     429
     430#. translators: %s: number of images on the current page.
     431#: includes/list-view.php:301
     432msgid "Generate and save alternative text for %s images"
     433msgstr "Alternativtexte für %s Bilder generieren und speichern"
     434
     435#: includes/list-view.php:295 assets/js/grid-actions.js:18
     436#: assets/js/list-actions.js:19
     437msgid "Generating..."
     438msgstr "Wird generiert …"
     439
     440#. translators: %s: number of images (the %s is replaced dynamically in JS for
     441#. the data attribute).
     442#: includes/list-view.php:290
     443msgid "Generate and save alternative text for %s Images"
     444msgstr "Alternativtexte für %s Bilder generieren und speichern"
     445
     446#. translators: %s = site language label, e.g. "English (US)".
     447#. translators: %s = site language label (e.g., "English (US)").
     448#: includes/admin-prompts.php:707 includes/admin-prompts.php:783
     449#: includes/admin-settings.php:711
     450msgid "System (%s)"
     451msgstr "System (%s)"
     452
     453#: includes/list-view.php:240
     454msgid "images."
     455msgstr "Bilder."
     456
     457#: includes/list-view.php:238
     458msgid "Will process"
     459msgstr "Verarbeitet"
     460
     461#: includes/list-view.php:234
     462msgid "Select all (across pages)"
     463msgstr "Alle auswählen (über alle Seiten)"
     464
     465#: includes/list-view.php:230
     466msgid "Select all (this page)"
     467msgstr "Alle auswählen (diese Seite)"
     468
     469#: includes/list-view.php:226
     470msgid "Skip existing"
     471msgstr "Vorhandene überspringen"
     472
     473#: includes/list-view.php:217
     474msgid "Per Page"
     475msgstr "Pro Seite"
     476
     477#: includes/list-view.php:196
     478msgid "Search"
     479msgstr "Suchen"
     480
     481#: includes/list-view.php:193
     482msgid "Search filename, title or alt-text…"
     483msgstr "Dateiname, Titel, Alt-Text suchen"
     484
     485#: includes/list-view.php:186
     486msgid "Search images"
     487msgstr "Bilder suchen"
     488
     489#: includes/list-view.php:167
     490msgid "Alt Text Generator - List view"
     491msgstr "Alt-Text-Generator – Listenansicht"
     492
     493#: includes/grid-view.php:169
     494msgid "Generate alt text for selected"
     495msgstr "Alternativtext für Auswahl generieren"
     496
     497#: includes/grid-view.php:166
     498msgid "Select images from Media Library"
     499msgstr "Bilder aus der Mediathek auswählen"
     500
     501#: includes/grid-view.php:112
     502msgid "Alt Text Generator - Grid view"
     503msgstr "Alt-Text-Generator – Rasteransicht"
     504
     505#: aigude-tools.php:209
     506msgid "Describe the essential content of the picture briefly and concisely. Limit the text to a very short sentence"
     507msgstr "Beschreibe den wesentlichen Bildinhalt kurz und prägnant. Begrenze den Text auf einen sehr kurzen Satz."
     508
     509#: includes/grid-view.php:6 includes/list-view.php:6
     510msgid "You do not have permission to access this page."
     511msgstr "Du hast keine Berechtigung, auf diese Seite zuzugreifen."
     512
     513#: includes/admin-templates.php:318
     514msgid "Save Template"
     515msgstr "Vorlage speichern"
     516
     517#: includes/admin-prompts.php:755 includes/admin-templates.php:318
     518msgid "Update"
     519msgstr "Aktualisieren"
     520
     521#: includes/admin-templates.php:309
     522msgid "Describe car-photo-123 (1920x1080)"
     523msgstr "Beschreibe car-photo-123 (1920x1080)"
     524
     525#. translators: 1: %filename_no_ext|raw% token, 2: %width% token, 3: %height%
     526#. token. Keep the tokens exactly as shown (including % signs).
     527#: includes/admin-templates.php:300
     528msgid "Describe %1$s (%2$ sx%3$s)"
     529msgstr "Beschreibe %1$s (%2$s×%3$s)"
     530
     531#: includes/admin-templates.php:296
     532msgid "Example:"
     533msgstr "Beispiel:"
     534
     535#: includes/admin-prompts.php:610 includes/admin-templates.php:295
     536msgid "Unknown placeholders are left unchanged. Empty values become blank."
     537msgstr "Unbekannte Platzhalter bleiben unverändert. Leere Werte werden zu einem leeren Text."
     538
     539#: includes/admin-templates.php:294
     540msgid "Modifiers: add \"|q\" to force quotes, or \"|raw\" to remove quotes."
     541msgstr "Modifikatoren: „|q“ erzwingt Anführungszeichen, „|raw“ entfernt sie."
     542
     543#. translators: %width% and %height% are numeric image dimensions; numeric
     544#. placeholders are not quoted.
     545#: includes/admin-prompts.php:608 includes/admin-templates.php:293
     546msgid "Numeric placeholders like %width% and %height% are not quoted (e.g. → 1920)."
     547msgstr "Numerische Platzhalter wie %width% und %height% werden nicht in Anführungszeichen gesetzt (z. B. → 1920)."
     548
     549#. translators: %filename_no_ext% is the filename without extension. Example
     550#. shows automatic quoting of text placeholders.
     551#: includes/admin-prompts.php:606 includes/admin-templates.php:291
     552msgid "Text placeholders are automatically quoted (e.g. %filename_no_ext% → \"car-photo-123\")."
     553msgstr "Textplatzhalter werden automatisch in Anführungszeichen gesetzt (z. B. %filename_no_ext% → „car-photo-123“)."
     554
     555#: includes/admin-templates.php:286
     556msgid "Available placeholders:"
     557msgstr "Verfügbare Platzhalter:"
     558
     559#: includes/admin-templates.php:260
     560msgid "Placeholders Language"
     561msgstr "Sprache der Platzhalter"
     562
     563#: includes/admin-templates.php:235 includes/admin-templates.php:266
     564msgid "Auto-detect"
     565msgstr "Automatisch erkennen"
     566
     567#: includes/admin-templates.php:229
     568msgid "Prompt Language"
     569msgstr "Prompt-Sprache"
     570
     571#: includes/admin-templates.php:211
     572msgid "Make this the default template"
     573msgstr "Diese Vorlage als Standard festlegen"
     574
     575#: includes/admin-templates.php:184
     576msgid "Prompts can be written in any language, but they work best when you define both the Prompt Language and the Placeholders Language."
     577msgstr "Prompts können in jeder Sprache geschrieben werden, funktionieren jedoch am besten, wenn sowohl die Prompt-Sprache als auch die Sprache der Platzhalter definiert sind."
     578
     579#: includes/admin-templates.php:181
     580msgid "Add New Template"
     581msgstr "Neue Vorlage hinzufügen"
     582
     583#: includes/admin-templates.php:181
     584msgid "Edit Template"
     585msgstr "Template bearbeiten"
     586
     587#: includes/admin-templates.php:175
     588msgid "No templates added."
     589msgstr "Keine Vorlagen hinzugefügt."
     590
     591#: includes/admin-prompts.php:521 includes/admin-templates.php:171
     592msgid "Really delete?"
     593msgstr "Wirklich löschen?"
     594
     595#: includes/admin-prompts.php:449 includes/admin-prompts.php:591
     596#: includes/admin-templates.php:146 includes/admin-templates.php:222
     597#: includes/grid-view.php:121 includes/list-view.php:247
     598#: includes/list-view.php:356 assets/js/grid-actions.js:94
     599#: assets/js/list-actions.js:218
     600msgid "Prompt"
     601msgstr "Prompt"
     602
     603#: includes/admin-prompts.php:448 includes/admin-prompts.php:586
     604#: includes/admin-templates.php:145 includes/admin-templates.php:217
     605msgid "Title"
     606msgstr "Titel"
     607
     608#: includes/admin-templates.php:141
     609msgid "Existing Templates"
     610msgstr "Vorhandene Vorlagen"
     611
     612#: includes/admin-templates.php:115
     613msgid "Template saved."
     614msgstr "Vorlage gespeichert."
     615
     616#: includes/admin-templates.php:109
     617msgid "Template updated."
     618msgstr "Vorlage aktualisiert."
     619
     620#: includes/admin-templates.php:58
     621msgid "Template deleted."
     622msgstr "Vorlage gelöscht."
     623
     624#: includes/admin-templates.php:38
     625msgid "Default template updated."
     626msgstr "Standardvorlage aktualisiert."
     627
     628#: includes/admin-prompts.php:8 includes/admin-templates.php:8
     629msgid "Insufficient permissions"
     630msgstr "Unzureichende Berechtigungen"
     631
     632#: includes/admin-prompts.php:522 includes/admin-server.php:394
     633#: includes/admin-settings.php:490 includes/admin-templates.php:171
     634msgid "Delete"
     635msgstr "Löschen"
     636
     637#: includes/admin-server.php:393 includes/admin-settings.php:489
     638msgid "Do you really want to delete this server?"
     639msgstr "Möchtest du diesen Server wirklich löschen?"
     640
     641#: includes/admin-prompts.php:512 includes/admin-server.php:391
     642#: includes/admin-settings.php:487 includes/admin-templates.php:170
     643msgid "Edit"
     644msgstr "Bearbeiten"
     645
     646#: includes/admin-prompts.php:506 includes/admin-server.php:377
     647#: includes/admin-settings.php:473 includes/admin-templates.php:166
     648msgid "Make default"
     649msgstr "Als Standard festlegen"
     650
     651#: includes/admin-prompts.php:477 includes/admin-server.php:334
     652#: includes/admin-settings.php:431 includes/admin-templates.php:148
     653msgid "Actions"
     654msgstr "Aktionen"
     655
     656#: includes/admin-server.php:333 includes/admin-settings.php:430
     657msgid "Remaining credits"
     658msgstr "Verbleibende Credits"
     659
     660#: includes/admin-server.php:323 includes/admin-settings.php:421
     661msgid "No servers configured yet."
     662msgstr "Noch keine Server konfiguriert."
     663
     664#: includes/admin-server.php:317 includes/admin-settings.php:415
     665msgid "Add"
     666msgstr "Hinzufügen"
     667
     668#: includes/admin-server.php:270
     669msgid "Add New Server"
     670msgstr "Neuen Server hinzufügen"
     671
     672#: includes/admin-prompts.php:757 includes/admin-server.php:263
     673#: includes/admin-server.php:318 includes/admin-settings.php:367
     674#: includes/admin-settings.php:416 includes/admin-templates.php:321
     675msgid "Cancel"
     676msgstr "Abbrechen"
     677
     678#: includes/admin-server.php:262 includes/admin-settings.php:366
     679#: includes/list-view.php:422
     680msgid "Save"
     681msgstr "Speichern"
     682
     683#: includes/admin-server.php:258 includes/admin-server.php:313
     684#: includes/admin-settings.php:362 includes/admin-settings.php:411
     685msgid "Make this the default server"
     686msgstr "Diesen Server als Standard festlegen"
     687
     688#: includes/admin-prompts.php:476 includes/admin-prompts.php:504
     689#: includes/admin-prompts.php:571 includes/admin-server.php:257
     690#: includes/admin-server.php:312 includes/admin-server.php:332
     691#: includes/admin-server.php:374 includes/admin-settings.php:361
     692#: includes/admin-settings.php:410 includes/admin-settings.php:429
     693#: includes/admin-settings.php:470 includes/admin-templates.php:147
     694#: includes/admin-templates.php:164 includes/admin-templates.php:199
     695msgid "Default"
     696msgstr "Standard"
     697
     698#: includes/admin-server.php:253 includes/admin-server.php:308
     699#: includes/admin-settings.php:357 includes/admin-settings.php:406
     700msgid "Activate"
     701msgstr "Aktivieren"
     702
     703#: includes/admin-server.php:252 includes/admin-server.php:307
     704#: includes/admin-server.php:331 includes/admin-settings.php:356
     705#: includes/admin-settings.php:405 includes/admin-settings.php:428
     706msgid "Enabled"
     707msgstr "Aktiviert"
     708
     709#: includes/admin-server.php:245 includes/admin-settings.php:349
     710msgid "Copy"
     711msgstr "Kopieren"
     712
     713#: includes/admin-server.php:240 includes/admin-server.php:367
     714#: includes/admin-settings.php:344 includes/admin-settings.php:463
     715#: assets/js/server-actions.js:8
     716msgid "Show"
     717msgstr "Anzeigen"
     718
     719#: includes/admin-server.php:224 includes/admin-server.php:302
     720#: includes/admin-server.php:330 includes/admin-settings.php:328
     721#: includes/admin-settings.php:400 includes/admin-settings.php:427
     722msgid "API Key"
     723msgstr "API-Schlüssel"
     724
     725#: includes/admin-server.php:219 includes/admin-server.php:297
     726#: includes/admin-server.php:329 includes/admin-settings.php:323
     727#: includes/admin-settings.php:395 includes/admin-settings.php:426
     728msgid "Name"
     729msgstr "Name"
     730
     731#: includes/admin-server.php:170 includes/admin-settings.php:179
     732msgid "Invalid index for delete."
     733msgstr "Ungültiger Index beim Löschen."
     734
     735#: includes/admin-server.php:166 includes/admin-settings.php:175
     736msgid "Server deleted."
     737msgstr "Server gelöscht."
     738
     739#: includes/admin-server.php:131 includes/admin-settings.php:140
     740msgid "New server added."
     741msgstr "Neuer Server hinzugefügt."
     742
     743#: includes/admin-server.php:117 includes/admin-settings.php:126
     744msgid "Invalid index while editing."
     745msgstr "Ungültiger Index beim Bearbeiten."
     746
     747#: includes/admin-server.php:115 includes/admin-settings.php:124
     748msgid "Server successfully updated."
     749msgstr "Server erfolgreich aktualisiert."
     750
     751#: includes/admin-server.php:98 includes/admin-settings.php:107
     752msgid "Invalid server type."
     753msgstr "Ungültiger Servertyp."
     754
     755#: includes/admin-server.php:95 includes/admin-settings.php:104
     756msgid "API Key cannot be empty."
     757msgstr "API-Schlüssel darf nicht leer sein."
     758
     759#: includes/admin-server.php:92 includes/admin-settings.php:101
     760msgid "Name cannot be empty."
     761msgstr "Name darf nicht leer sein."
     762
     763#: includes/admin-server.php:66 includes/admin-settings.php:75
     764msgid "Invalid index while setting default."
     765msgstr "Ungültiger Index beim Festlegen als Standard."
     766
     767#: includes/admin-server.php:62 includes/admin-settings.php:71
     768msgid "Default server updated."
     769msgstr "Standardserver aktualisiert."
     770
     771#: includes/admin-server.php:23 includes/admin-server.php:78
     772#: includes/admin-settings.php:23 includes/admin-settings.php:87
     773msgid "Insufficient permissions."
     774msgstr "Unzureichende Berechtigungen."
     775
     776#: includes/class-aigude-media-controller.php:428
     777msgid "Temporary image file missing"
     778msgstr "Temporäre Bilddatei fehlt"
     779
     780#: includes/admin-server.php:386 includes/admin-settings.php:482
     781#: includes/class-aigude-media-controller.php:357
     782msgid "Disabled"
     783msgstr "Deaktiviert"
     784
     785#: includes/class-aigude-media-controller.php:352
     786#: includes/class-aigude-media-controller.php:354 assets/js/grid-actions.js:16
     787#: assets/js/list-actions.js:21
     788msgid "Error"
     789msgstr "Fehler"
     790
     791#: includes/class-aigude-media-controller.php:194
     792msgid "Missing ID"
     793msgstr "Fehlende ID"
     794
     795#: includes/class-aigude-media-controller.php:171
     796#: includes/class-aigude-media-controller.php:303
     797msgid "Invalid or incomplete API response."
     798msgstr "Ungültige oder unvollständige API-Antwort."
     799
     800#. translators: %d = HTTP status code returned by the AiGude API.
     801#: includes/class-aigude-media-controller.php:164
     802#: includes/class-aigude-media-controller.php:295
     803msgid "API returned HTTP %d"
     804msgstr "API antwortete mit HTTP %d"
     805
     806#: includes/class-aigude-media-controller.php:156
     807#: includes/class-aigude-media-controller.php:287 assets/js/grid-actions.js:21
     808#: assets/js/list-actions.js:31
     809msgid "Invalid or unauthorized API key."
     810msgstr "Ungültiger oder nicht autorisierter API-Schlüssel."
     811
     812#: includes/class-aigude-media-controller.php:128
     813msgid "File not found."
     814msgstr "Datei nicht gefunden."
     815
     816#: includes/class-aigude-media-controller.php:113
     817#: includes/class-aigude-media-controller.php:232
     818msgid "API key missing!"
     819msgstr "API-Schlüssel fehlt!"
     820
     821#: includes/class-aigude-media-controller.php:108
     822#: includes/class-aigude-media-controller.php:227
     823msgid "Missing parameters."
     824msgstr "Fehlende Parameter."
     825
     826#: includes/class-aigude-media-controller.php:40
     827msgid "Invalid request"
     828msgstr "Ungültige Anfrage"
     829
     830#: includes/class-aigude-admin-ui.php:169
     831msgid "List view"
     832msgstr "Listenansicht"
     833
     834#: includes/admin-templates.php:139
     835msgid "Prompt Templates"
     836msgstr "Prompt-Vorlagen"
     837
     838#: includes/admin-server.php:206 includes/admin-server.php:286
     839#: includes/admin-server.php:328
     840msgid "Server"
     841msgstr "Server"
     842
     843#: includes/class-aigude-admin-ui.php:138
     844msgid "Grid view"
     845msgstr "Rasteransicht"
     846
     847#: includes/class-aigude-admin-ui.php:137
     848msgid "Grid view (Media Modal)"
     849msgstr "Rasteransicht (Mediathek)"
     850
     851#. Author URI of the plugin
     852#: aigude-tools.php
     853msgid "https://pagemachine.de"
     854msgstr "https://pagemachine.de"
     855
     856#. Author of the plugin
     857#: aigude-tools.php
     858msgid "Pagemachine AG"
     859msgstr "Pagemachine AG"
     860
     861#. Description of the plugin
     862#: aigude-tools.php
     863msgid "Generate and manage image alt text with AI — supports bulk actions, custom multilingual prompts, and full Media Library integration."
     864msgstr "Automatisches Erstellen, Bearbeiten und Übersetzen von Bild-Alt-Texten mit KI. Enthält Massenverarbeitung, benutzerdefinierte Prompts in jeder Sprache und vollständige Integration in die Mediathek."
     865
     866#. Plugin URI of the plugin
     867#: aigude-tools.php
     868msgid "https://wordpress.org/plugins/aigude-tools/"
     869msgstr "https://wordpress.org/plugins/aigude-tools/"
     870
    16871#. Plugin Name of the plugin
    17872#: aigude-tools.php includes/class-aigude-admin-ui.php:126
     
    19874msgid "AiGude Tools"
    20875msgstr "AiGude Tools"
    21 
    22 #. Plugin URI of the plugin
    23 #: aigude-tools.php
    24 msgid "https://wordpress.org/plugins/aigude-tools/"
    25 msgstr "https://wordpress.org/plugins/aigude-tools/"
    26 
    27 #. Description of the plugin
    28 #: aigude-tools.php
    29 msgid ""
    30 "Generate and manage image alt text with AI — supports bulk actions, custom "
    31 "multilingual prompts, and full Media Library integration."
    32 msgstr ""
    33 "Automatisches Erstellen, Bearbeiten und Übersetzen von Bild-Alt-Texten mit "
    34 "KI. Enthält Massenverarbeitung, benutzerdefinierte Prompts in jeder Sprache "
    35 "und vollständige Integration in die Mediathek."
    36 
    37 #. Author of the plugin
    38 #: aigude-tools.php
    39 msgid "Pagemachine AG"
    40 msgstr "Pagemachine AG"
    41 
    42 #. Author URI of the plugin
    43 #: aigude-tools.php
    44 msgid "https://pagemachine.de"
    45 msgstr "https://pagemachine.de"
    46 
    47 #: includes/admin-prompts.php:8
    48 msgid "Insufficient permissions"
    49 msgstr "Unzureichende Berechtigungen"
    50 
    51 #: includes/admin-prompts.php:87
    52 msgid "Prompt duplicated."
    53 msgstr "Prompt dupliziert."
    54 
    55 #: includes/admin-prompts.php:89 includes/admin-prompts.php:101
    56 #: includes/admin-prompts.php:121 includes/admin-prompts.php:131
    57 #: includes/admin-prompts.php:317
    58 msgid "Prompt not found."
    59 msgstr "Prompt nicht gefunden."
    60 
    61 #: includes/admin-prompts.php:99
    62 msgid "Default prompt updated."
    63 msgstr "Standard‑Prompt aktualisiert."
    64 
    65 #: includes/admin-prompts.php:119
    66 msgid "Prompt deleted."
    67 msgstr "Prompt gelöscht."
    68 
    69 #: includes/admin-prompts.php:280
    70 msgid "Please enter a title."
    71 msgstr "Bitte einen Titel eingeben."
    72 
    73 #: includes/admin-prompts.php:283
    74 msgid "Please enter a prompt."
    75 msgstr "Bitte einen Prompt eingeben."
    76 
    77 #: includes/admin-prompts.php:286
    78 msgid "Please select a translation provider."
    79 msgstr "Bitte einen Übersetzungsanbieter auswählen."
    80 
    81 #: includes/admin-prompts.php:289
    82 msgid "Please select a target language."
    83 msgstr "Bitte eine Zielsprache auswählen."
    84 
    85 #: includes/admin-prompts.php:315
    86 msgid "Prompt updated."
    87 msgstr "Prompt aktualisiert."
    88 
    89 #: includes/admin-prompts.php:321
    90 msgid "Prompt saved."
    91 msgstr "Prompt gespeichert."
    92 
    93 #: includes/admin-prompts.php:380 includes/class-aigude-admin-ui.php:155
    94 #: includes/class-aigude-admin-ui.php:156
    95 msgid "Prompts"
    96 msgstr "Prompts"
    97 
    98 #: includes/admin-prompts.php:386 includes/admin-settings.php:375
    99 msgid "Add New"
    100 msgstr "Neu hinzufügen"
    101 
    102 #: includes/admin-prompts.php:394 includes/admin-prompts.php:516
    103 msgid "Title"
    104 msgstr "Titel"
    105 
    106 #: includes/admin-prompts.php:395 includes/admin-prompts.php:521
    107 #: includes/grid-view.php:31 includes/list-view.php:167
    108 #: includes/list-view.php:279
    109 msgid "Prompt"
    110 msgstr "Prompt"
    111 
    112 #: includes/admin-prompts.php:396
    113 msgid "Target language"
    114 msgstr "Zielsprache"
    115 
    116 #: includes/admin-prompts.php:422 includes/admin-prompts.php:448
    117 #: includes/admin-prompts.php:501 includes/admin-settings.php:361
    118 #: includes/admin-settings.php:410 includes/admin-settings.php:429
    119 #: includes/admin-settings.php:470
    120 msgid "Default"
    121 msgstr "Standard"
    122 
    123 #: includes/admin-prompts.php:423 includes/admin-settings.php:431
    124 msgid "Actions"
    125 msgstr "Aktionen"
    126 
    127 #: includes/admin-prompts.php:443
    128 msgid "Not set"
    129 msgstr "Nicht festgelegt"
    130 
    131 #: includes/admin-prompts.php:450 includes/admin-settings.php:473
    132 msgid "Make default"
    133 msgstr "Als Standard festlegen"
    134 
    135 #: includes/admin-prompts.php:454 includes/admin-settings.php:487
    136 msgid "Edit"
    137 msgstr "Bearbeiten"
    138 
    139 #: includes/admin-prompts.php:455
    140 msgid "Duplicate"
    141 msgstr "Duplizieren"
    142 
    143 #: includes/admin-prompts.php:456
    144 msgid "Really delete?"
    145 msgstr "Wirklich löschen?"
    146 
    147 #: includes/admin-prompts.php:456 includes/admin-settings.php:490
    148 msgid "Delete"
    149 msgstr "Löschen"
    150 
    151 #: includes/admin-prompts.php:460
    152 msgid "No prompts added."
    153 msgstr "Keine Prompts hinzugefügt."
    154 
    155 #: includes/admin-prompts.php:483
    156 msgid "Edit Prompt"
    157 msgstr "Prompt bearbeiten"
    158 
    159 #: includes/admin-prompts.php:483
    160 msgid "Add New Prompt"
    161 msgstr "Neuen Prompt hinzufügen"
    162 
    163 #: includes/admin-prompts.php:510
    164 msgid "Make this the default prompt"
    165 msgstr "Diesen Prompt als Standard festlegen"
    166 
    167 #: includes/admin-prompts.php:525
    168 msgid ""
    169 "You can write the prompt in any language supported by the provider you "
    170 "select for the Target Alt Text."
    171 msgstr ""
    172 "Sie können den Prompt in jeder Sprache verfassen, die vom Anbieter der Ziel-"
    173 "Alt-Text-Sprache unterstützt wird."
    174 
    175 #: includes/admin-prompts.php:528
    176 msgid "Available placeholders"
    177 msgstr "Verfügbare Platzhalter"
    178 
    179 #. translators: %filename_no_ext% is the filename without extension. Example shows automatic quoting of text placeholders.
    180 #: includes/admin-prompts.php:536
    181 #, php-format
    182 msgid ""
    183 "Text placeholders are automatically quoted (e.g. %filename_no_ext% → \"car-"
    184 "photo-123\")."
    185 msgstr ""
    186 "Textplatzhalter werden automatisch in Anführungszeichen gesetzt (z. B. "
    187 "%filename_no_ext% → „car-photo-123“)."
    188 
    189 #. translators: %width% and %height% are numeric image dimensions; numeric placeholders are not quoted.
    190 #: includes/admin-prompts.php:538
    191 msgid ""
    192 "Numeric placeholders like %width% and %height% are not quoted (e.g. → 1920)."
    193 msgstr ""
    194 "Numerische Platzhalter wie %width% und %height% werden nicht in "
    195 "Anführungszeichen gesetzt (z. B. → 1920)."
    196 
    197 #: includes/admin-prompts.php:539
    198 msgid ""
    199 "Modifiers: |q (force quotes), |raw (no quotes), |trim, |lower, |upper, |"
    200 "ucfirst, |translatable (force translate), |untranslatable (no translate)."
    201 msgstr ""
    202 "Modifikatoren: |q (Anführungszeichen erzwingen), |raw (ohne "
    203 "Anführungszeichen), |trim, |lower, |upper, |ucfirst, |translatable "
    204 "(Übersetzung erzwingen), |untranslatable (nicht übersetzen)."
    205 
    206 #: includes/admin-prompts.php:540
    207 msgid "Unknown placeholders are left unchanged. Empty values become blank."
    208 msgstr ""
    209 "Unbekannte Platzhalter bleiben unverändert. Leere Werte werden zu einem "
    210 "leeren Text."
    211 
    212 #: includes/admin-prompts.php:543
    213 msgid "Examples:"
    214 msgstr "Beispiele:"
    215 
    216 #: includes/admin-prompts.php:588
    217 msgid "Target Alt Text language"
    218 msgstr "Zielsprache für Alt-Text"
    219 
    220 #: includes/admin-prompts.php:593
    221 msgid "Provider"
    222 msgstr "Anbieter"
    223 
    224 #: includes/admin-prompts.php:612 includes/admin-settings.php:549
    225 msgid "Show only EU-based translation providers"
    226 msgstr "Nur EU-basierte Übersetzungsanbieter anzeigen"
    227 
    228 #: includes/admin-prompts.php:618
    229 msgid "Language"
    230 msgstr "Sprache"
    231 
    232 #: includes/admin-prompts.php:623 includes/admin-prompts.php:668
    233 msgid "Select a provider to choose a language"
    234 msgstr "Wählen Sie einen Anbieter, um eine Sprache auszuwählen"
    235 
    236 #: includes/admin-prompts.php:624
    237 msgid "No languages available"
    238 msgstr "Keine Sprachen verfügbar"
    239 
    240 #. translators: %s = site language label, e.g. "English (US)".
    241 #. translators: %s = site language label (e.g., "English (US)").
    242 #: includes/admin-prompts.php:637 includes/admin-prompts.php:713
    243 #: includes/admin-settings.php:711
    244 #, php-format
    245 msgid "System (%s)"
    246 msgstr "System (%s)"
    247 
    248 #: includes/admin-prompts.php:644 includes/admin-prompts.php:714
    249 #: includes/admin-settings.php:716 includes/admin-settings.php:752
    250 msgid "Recent"
    251 msgstr "Zuletzt verwendet"
    252 
    253 #: includes/admin-prompts.php:655 includes/admin-prompts.php:715
    254 #: includes/admin-settings.php:724
    255 msgid "All languages"
    256 msgstr "Alle Sprachen"
    257 
    258 #: includes/admin-prompts.php:676
    259 msgid ""
    260 "Pick a provider and language you always want the generated alt text to use, "
    261 "overriding the default selection in List/Grid views."
    262 msgstr ""
    263 "Wählen Sie einen Anbieter und eine Sprache, die immer für den generierten "
    264 "Alt-Text verwendet werden sollen und die Auswahl in Liste/Raster "
    265 "überschreiben."
    266 
    267 #: includes/admin-prompts.php:678
    268 msgid ""
    269 "When set, the List/Grid views lock the Alt Text Language selector to this "
    270 "provider/language."
    271 msgstr ""
    272 "Wenn aktiviert, sperren Listen-/Rasteransichten den Alt-Text-Sprachwähler "
    273 "auf diesen Anbieter/diese Sprache."
    274 
    275 #: includes/admin-prompts.php:685
    276 msgid "Update"
    277 msgstr "Aktualisieren"
    278 
    279 #: includes/admin-prompts.php:685
    280 msgid "Save Prompt"
    281 msgstr "Prompt speichern"
    282 
    283 #: includes/admin-prompts.php:687 includes/admin-settings.php:367
    284 #: includes/admin-settings.php:416
    285 msgid "Cancel"
    286 msgstr "Abbrechen"
    287 
    288 #: includes/admin-settings.php:23 includes/admin-settings.php:87
    289 msgid "Insufficient permissions."
    290 msgstr "Unzureichende Berechtigungen."
    291 
    292 #: includes/admin-settings.php:71
    293 msgid "Default server updated."
    294 msgstr "Standardserver aktualisiert."
    295 
    296 #: includes/admin-settings.php:75
    297 msgid "Invalid index while setting default."
    298 msgstr "Ungültiger Index beim Festlegen als Standard."
    299 
    300 #: includes/admin-settings.php:101
    301 msgid "Name cannot be empty."
    302 msgstr "Name darf nicht leer sein."
    303 
    304 #: includes/admin-settings.php:104
    305 msgid "API Key cannot be empty."
    306 msgstr "API-Schlüssel darf nicht leer sein."
    307 
    308 #: includes/admin-settings.php:107
    309 msgid "Invalid server type."
    310 msgstr "Ungültiger Servertyp."
    311 
    312 #: includes/admin-settings.php:124
    313 msgid "Server successfully updated."
    314 msgstr "Server erfolgreich aktualisiert."
    315 
    316 #: includes/admin-settings.php:126
    317 msgid "Invalid index while editing."
    318 msgstr "Ungültiger Index beim Bearbeiten."
    319 
    320 #: includes/admin-settings.php:140
    321 msgid "New server added."
    322 msgstr "Neuer Server hinzugefügt."
    323 
    324 #: includes/admin-settings.php:175
    325 msgid "Server deleted."
    326 msgstr "Server gelöscht."
    327 
    328 #: includes/admin-settings.php:179
    329 msgid "Invalid index for delete."
    330 msgstr "Ungültiger Index beim Löschen."
    331 
    332 #: includes/admin-settings.php:186
    333 msgid "Translation provider settings are no longer used."
    334 msgstr "Einstellungen für Übersetzungsanbieter werden nicht mehr verwendet."
    335 
    336 #: includes/admin-settings.php:194 includes/class-aigude-admin-ui.php:146
    337 #: includes/class-aigude-admin-ui.php:147
    338 msgid "Settings"
    339 msgstr "Einstellungen"
    340 
    341 #: includes/admin-settings.php:284
    342 msgid "API Connections"
    343 msgstr "API-Verbindungen"
    344 
    345 #: includes/admin-settings.php:293
    346 msgid "Don't have an API key?"
    347 msgstr "Noch keinen API-Schlüssel?"
    348 
    349 #: includes/admin-settings.php:295
    350 msgid "Get API key at AiGude.io"
    351 msgstr "API-Schlüssel bei AiGude.io holen"
    352 
    353 #: includes/admin-settings.php:311
    354 msgid "Edit Connection"
    355 msgstr "Verbindung bearbeiten"
    356 
    357 #: includes/admin-settings.php:323 includes/admin-settings.php:395
    358 #: includes/admin-settings.php:426
    359 msgid "Name"
    360 msgstr "Name"
    361 
    362 #: includes/admin-settings.php:328 includes/admin-settings.php:400
    363 #: includes/admin-settings.php:427
    364 msgid "API Key"
    365 msgstr "API-Schlüssel"
    366 
    367 #: includes/admin-settings.php:344 includes/admin-settings.php:463
    368 #: assets/js/server-actions.js:8
    369 msgid "Show"
    370 msgstr "Anzeigen"
    371 
    372 #: includes/admin-settings.php:349
    373 msgid "Copy"
    374 msgstr "Kopieren"
    375 
    376 #: includes/admin-settings.php:356 includes/admin-settings.php:405
    377 #: includes/admin-settings.php:428
    378 msgid "Enabled"
    379 msgstr "Aktiviert"
    380 
    381 #: includes/admin-settings.php:357 includes/admin-settings.php:406
    382 msgid "Activate"
    383 msgstr "Aktivieren"
    384 
    385 #: includes/admin-settings.php:362 includes/admin-settings.php:411
    386 msgid "Make this the default server"
    387 msgstr "Diesen Server als Standard festlegen"
    388 
    389 #: includes/admin-settings.php:366 includes/list-view.php:340
    390 msgid "Save"
    391 msgstr "Speichern"
    392 
    393 #: includes/admin-settings.php:384
    394 msgid "Add Connection"
    395 msgstr "Verbindung hinzufügen"
    396 
    397 #: includes/admin-settings.php:415
    398 msgid "Add"
    399 msgstr "Hinzufügen"
    400 
    401 #: includes/admin-settings.php:421
    402 msgid "No servers configured yet."
    403 msgstr "Noch keine Server konfiguriert."
    404 
    405 #: includes/admin-settings.php:430
    406 msgid "Remaining credits"
    407 msgstr "Verbleibende Credits"
    408 
    409 #: includes/admin-settings.php:482
    410 #: includes/class-aigude-media-controller.php:357
    411 msgid "Disabled"
    412 msgstr "Deaktiviert"
    413 
    414 #: includes/admin-settings.php:489
    415 msgid "Do you really want to delete this server?"
    416 msgstr "Möchtest du diesen Server wirklich löschen?"
    417 
    418 #. translators: %s = human-readable language label, e.g. "German (Germany)".
    419 #: includes/admin-settings.php:511
    420 #, php-format
    421 msgid "Current default: %s"
    422 msgstr "Aktueller Standard: %s"
    423 
    424 #. translators: %s = human-readable language label that is no longer supported.
    425 #: includes/admin-settings.php:513
    426 #, php-format
    427 msgid "Current default (%s) is unavailable. Pick another language."
    428 msgstr ""
    429 "Der aktuelle Standard (%s) ist nicht verfügbar. Wählen Sie eine andere "
    430 "Sprache."
    431 
    432 #. translators: %s = site language label, e.g. "English (US)".
    433 #: includes/admin-settings.php:515
    434 #, php-format
    435 msgid "Following site language (%s)."
    436 msgstr "Entspricht der Website-Sprache (%s)."
    437 
    438 #: includes/admin-settings.php:522
    439 msgid ""
    440 "Select the translation provider for AI-generated alt texts. The provider "
    441 "determines the available target languages."
    442 msgstr ""
    443 "Wählen Sie den Übersetzungsanbieter für KI-generierte Alternativtexte. Der "
    444 "Anbieter bestimmt die verfügbaren Zielsprachen."
    445 
    446 #: includes/admin-settings.php:532
    447 msgid "Translation provider"
    448 msgstr "Übersetzungsanbieter"
    449 
    450 #: includes/admin-settings.php:642
    451 msgid "Active provider"
    452 msgstr "Aktiver Anbieter"
    453 
    454 #. translators: %s = site language label, e.g. "English (US)".
    455 #: includes/admin-settings.php:652
    456 #, php-format
    457 msgid "%s is supported for this site."
    458 msgstr "%s wird für diese Website unterstützt."
    459 
    460 #. translators: %s = site language label, e.g. "English (US)".
    461 #: includes/admin-settings.php:660
    462 #, php-format
    463 msgid "%s is not available for this provider."
    464 msgstr "%s ist für diesen Anbieter nicht verfügbar."
    465 
    466 #. translators: %d = number of languages supported by the provider.
    467 #: includes/admin-settings.php:671
    468 #, php-format
    469 msgid "%d supported languages"
    470 msgstr "%d unterstützte Sprachen"
    471 
    472 #: includes/admin-settings.php:691
    473 msgid "Language details"
    474 msgstr "Sprachdetails"
    475 
    476 #: includes/admin-settings.php:693
    477 msgid "Click to view the full list"
    478 msgstr "Klicken, um die vollständige Liste anzuzeigen"
    479 
    480 #: includes/admin-settings.php:698
    481 msgid "Default alt text language"
    482 msgstr "Standard-Alt-Text-Sprache"
    483 
    484 #: includes/admin-settings.php:734
    485 msgid "Switch to this provider to edit the default language."
    486 msgstr "Zu diesem Anbieter wechseln, um die Standardsprache zu bearbeiten."
    487 
    488 #: includes/admin-settings.php:736
    489 msgid ""
    490 "Your site language is unavailable; \"System\" will fall back to the closest "
    491 "supported code."
    492 msgstr ""
    493 "Ihre Website-Sprache ist nicht verfügbar; \"System\" fällt auf den nächsten "
    494 "unterstützten Code zurück."
    495 
    496 #: includes/admin-settings.php:745
    497 msgid ""
    498 "No translation provider metadata available. Add a server with a valid API "
    499 "key to load providers."
    500 msgstr ""
    501 "Keine Metadaten zu Übersetzungsanbietern verfügbar. Fügen Sie einen Server "
    502 "mit gültigem API-Schlüssel hinzu, um Anbieter zu laden."
    503 
    504 #: includes/admin-settings.php:782
    505 msgid "Saving..."
    506 msgstr "Speichern …"
    507 
    508 #: includes/admin-settings.php:820
    509 msgid "Language saved."
    510 msgstr "Sprache gespeichert."
    511 
    512 #: includes/admin-settings.php:824 includes/admin-settings.php:827
    513 msgid "Could not save language."
    514 msgstr "Sprache konnte nicht gespeichert werden."
    515 
    516 #: includes/class-aigude-admin-ui.php:137
    517 msgid "Grid view (Media Modal)"
    518 msgstr "Rasteransicht (Mediathek)"
    519 
    520 #: includes/class-aigude-admin-ui.php:138
    521 msgid "Grid view"
    522 msgstr "Rasteransicht"
    523 
    524 #: includes/class-aigude-admin-ui.php:169
    525 msgid "List view"
    526 msgstr "Listenansicht"
    527 
    528 #: includes/class-aigude-media-controller.php:40
    529 msgid "Invalid request"
    530 msgstr "Ungültige Anfrage"
    531 
    532 #: includes/class-aigude-media-controller.php:108
    533 #: includes/class-aigude-media-controller.php:227
    534 msgid "Missing parameters."
    535 msgstr "Fehlende Parameter."
    536 
    537 #: includes/class-aigude-media-controller.php:113
    538 #: includes/class-aigude-media-controller.php:232
    539 msgid "API key missing!"
    540 msgstr "API-Schlüssel fehlt!"
    541 
    542 #: includes/class-aigude-media-controller.php:128
    543 msgid "File not found."
    544 msgstr "Datei nicht gefunden."
    545 
    546 #: includes/class-aigude-media-controller.php:156
    547 #: includes/class-aigude-media-controller.php:287 assets/js/grid-actions.js:21
    548 #: assets/js/list-actions.js:31
    549 msgid "Invalid or unauthorized API key."
    550 msgstr "Ungültiger oder nicht autorisierter API-Schlüssel."
    551 
    552 #. translators: %d = HTTP status code returned by the AiGude API.
    553 #: includes/class-aigude-media-controller.php:164
    554 #: includes/class-aigude-media-controller.php:295
    555 #, php-format
    556 msgid "API returned HTTP %d"
    557 msgstr "API antwortete mit HTTP %d"
    558 
    559 #: includes/class-aigude-media-controller.php:171
    560 #: includes/class-aigude-media-controller.php:303
    561 msgid "Invalid or incomplete API response."
    562 msgstr "Ungültige oder unvollständige API-Antwort."
    563 
    564 #: includes/class-aigude-media-controller.php:194
    565 msgid "Missing ID"
    566 msgstr "Fehlende ID"
    567 
    568 #: includes/class-aigude-media-controller.php:352
    569 #: includes/class-aigude-media-controller.php:354 assets/js/grid-actions.js:16
    570 #: assets/js/list-actions.js:21
    571 msgid "Error"
    572 msgstr "Fehler"
    573 
    574 #: includes/class-aigude-media-controller.php:428
    575 msgid "Temporary image file missing"
    576 msgstr "Temporäre Bilddatei fehlt"
    577 
    578 #: includes/grid-view.php:6 includes/list-view.php:6
    579 msgid "You do not have permission to access this page."
    580 msgstr "Du hast keine Berechtigung, auf diese Seite zuzugreifen."
    581 
    582 #: includes/grid-view.php:10 includes/list-view.php:10
    583 msgid ""
    584 "Describe the essential content of the picture briefly and concisely. Limit "
    585 "the text to a very short sentence"
    586 msgstr ""
    587 "Beschreibe den wesentlichen Bildinhalt kurz und prägnant. Begrenze den Text "
    588 "auf einen sehr kurzen Satz."
    589 
    590 #: includes/grid-view.php:24
    591 msgid "Alt Text Generator - Grid view"
    592 msgstr "Alt-Text-Generator – Rasteransicht"
    593 
    594 #: includes/grid-view.php:79
    595 msgid "Select images from Media Library"
    596 msgstr "Bilder aus der Mediathek auswählen"
    597 
    598 #: includes/grid-view.php:82
    599 msgid "Generate alt text for selected"
    600 msgstr "Alternativtext für Auswahl generieren"
    601 
    602 #: includes/list-view.php:89
    603 msgid "Alt Text Generator - List view"
    604 msgstr "Alt-Text-Generator – Listenansicht"
    605 
    606 #: includes/list-view.php:106
    607 msgid "Search images"
    608 msgstr "Bilder suchen"
    609 
    610 #: includes/list-view.php:113
    611 msgid "Search filename, title or alt-text…"
    612 msgstr "Dateiname, Titel, Alt-Text suchen"
    613 
    614 #: includes/list-view.php:116
    615 msgid "Search"
    616 msgstr "Suchen"
    617 
    618 #: includes/list-view.php:137
    619 msgid "Per Page"
    620 msgstr "Pro Seite"
    621 
    622 #: includes/list-view.php:146
    623 msgid "Skip existing"
    624 msgstr "Vorhandene überspringen"
    625 
    626 #: includes/list-view.php:150
    627 msgid "Select all (this page)"
    628 msgstr "Alle auswählen (diese Seite)"
    629 
    630 #: includes/list-view.php:154
    631 msgid "Select all (across pages)"
    632 msgstr "Alle auswählen (über alle Seiten)"
    633 
    634 #: includes/list-view.php:158
    635 msgid "Will process"
    636 msgstr "Verarbeitet"
    637 
    638 #: includes/list-view.php:160
    639 msgid "images."
    640 msgstr "Bilder."
    641 
    642 #. translators: %s: number of images (the %s is replaced dynamically in JS for the data attribute).
    643 #: includes/list-view.php:213
    644 #, php-format
    645 msgid "Generate and save alternative text for %s Images"
    646 msgstr "Alternativtexte für %s Bilder generieren und speichern"
    647 
    648 #: includes/list-view.php:218 assets/js/grid-actions.js:18
    649 #: assets/js/list-actions.js:19
    650 msgid "Generating..."
    651 msgstr "Wird generiert …"
    652 
    653 #. translators: %s: number of images on the current page.
    654 #: includes/list-view.php:224
    655 #, php-format
    656 msgid "Generate and save alternative text for %s images"
    657 msgstr "Alternativtexte für %s Bilder generieren und speichern"
    658 
    659 #: includes/list-view.php:256
    660 msgid "Open in Media Library"
    661 msgstr "In der Mediathek öffnen"
    662 
    663 #. translators: %s: the file title (post_title) of the image.
    664 #: includes/list-view.php:265
    665 #, php-format
    666 msgid "Generate File Metadata \"%s\""
    667 msgstr "Dateimetadaten für „%s“ generieren"
    668 
    669 #: includes/list-view.php:312
    670 msgid "Custom prompt…"
    671 msgstr "Benutzerdefinierter Prompt …"
    672 
    673 #: includes/list-view.php:318 includes/list-view.php:320
    674 msgid "Generate"
    675 msgstr "Generieren"
    676 
    677 #: includes/list-view.php:319
    678 msgid "Generating"
    679 msgstr "Wird generiert"
    680 
    681 #: includes/list-view.php:323
    682 msgid "Credits"
    683 msgstr "Credits"
    684 
    685 #: includes/list-view.php:327
    686 msgid "Continue with the current alternative text"
    687 msgstr "Mit dem aktuellen Alternativtext fortfahren"
    688 
    689 #: includes/list-view.php:337
    690 msgid "Alternative Text"
    691 msgstr "Alternativtext"
    692 
    693 #: assets/js/grid-actions.js:9
    694 msgid "Select images"
    695 msgstr "Bilder auswählen"
    696 
    697 #. translators: Label on a button that selects all currently visible items in the media grid
    698 #: assets/js/grid-actions.js:11
    699 msgid "Select all (visible)"
    700 msgstr "Alle auswählen (sichtbar)"
    701 
    702 #. translators: Label on a button that selects all results across all pages in the media grid
    703 #: assets/js/grid-actions.js:13
    704 msgid "Select all (all results)"
    705 msgstr "Alle auswählen (alle Treffer)"
    706 
    707 #: assets/js/grid-actions.js:14
    708 msgid "Loading…"
    709 msgstr "Laden …"
    710 
    711 #: assets/js/grid-actions.js:15
    712 msgid "Selected"
    713 msgstr "Ausgewählt"
    714 
    715 #: assets/js/grid-actions.js:17
    716 msgid "Skip images that already have alt text"
    717 msgstr "Bilder mit vorhandenem Alternativtext überspringen"
    718 
    719 #: assets/js/grid-actions.js:19 assets/js/list-actions.js:20
    720 msgid "Done"
    721 msgstr "Fertig"
    722 
    723 #: assets/js/grid-actions.js:20 assets/js/list-actions.js:27
    724 msgid "This will overwrite existing alt texts. Are you sure?"
    725 msgstr "Dadurch werden vorhandene Alt-Texte überschrieben. Bist du sicher?"
    726 
    727 #: assets/js/grid-actions.js:22 assets/js/list-actions.js:32
    728 msgid "Security check failed. Please reload the page."
    729 msgstr "Sicherheitsprüfung fehlgeschlagen. Bitte lade die Seite neu."
    730 
    731 #: assets/js/grid-actions.js:23 assets/js/list-actions.js:33
    732 msgid "credits"
    733 msgstr "Credits"
    734 
    735 #. translators: %d = total number of credits used across the whole operation
    736 #: assets/js/grid-actions.js:25 assets/js/list-actions.js:13
    737 msgid "Total credits used: %d"
    738 msgstr "Insgesamt verwendete Credits: %d"
    739 
    740 #: assets/js/grid-actions.js:26 assets/js/list-actions.js:34
    741 msgid "Language locked by selected prompt."
    742 msgstr "Sprache durch ausgewählten Prompt gesperrt."
    743 
    744 #. translators: %d = number of credits used for the current image/batch
    745 #: assets/js/list-actions.js:16
    746 msgid "Credits used: %d"
    747 msgstr "Verbrauchte Credits: %d"
    748 
    749 #: assets/js/list-actions.js:22
    750 msgid "Alt-Text generated"
    751 msgstr "Alt-Text generiert"
    752 
    753 #: assets/js/list-actions.js:23
    754 msgid "Alt-Text saved"
    755 msgstr "Alt-Text gespeichert"
    756 
    757 #: assets/js/list-actions.js:24
    758 msgid "Error generating alt text"
    759 msgstr "Fehler beim Generieren des Alt-Texts"
    760 
    761 #: assets/js/list-actions.js:25
    762 msgid "Error saving alt text"
    763 msgstr "Fehler beim Speichern des Alt-Texts"
    764 
    765 #: assets/js/list-actions.js:26
    766 msgid "Please select at least one image."
    767 msgstr "Bitte wähle mindestens ein Bild aus."
    768 
    769 #: assets/js/list-actions.js:28
    770 msgid "No AI text generated yet."
    771 msgstr "Noch kein KI-Text generiert."
    772 
    773 #: assets/js/server-actions.js:9
    774 msgid "Hide"
    775 msgstr "Ausblenden"
    776 
    777 #: assets/js/server-actions.js:10
    778 msgid "Error during retrieval"
    779 msgstr "Fehler beim Abrufen"
    780 
    781 #: assets/js/server-actions.js:11
    782 msgid "Copy failed"
    783 msgstr "Kopieren fehlgeschlagen"
    784 
    785 #~ msgid "Save Template"
    786 #~ msgstr "Vorlage speichern"
    787 
    788 #~ msgid "Describe car-photo-123 (1920x1080)"
    789 #~ msgstr "Beschreibe car-photo-123 (1920x1080)"
    790 
    791 #~ msgid "Describe %1$s (%2$ sx%3$s)"
    792 #~ msgstr "Beschreibe %1$s (%2$s×%3$s)"
    793 
    794 #~ msgid "Example:"
    795 #~ msgstr "Beispiel:"
    796 
    797 #~ msgid "Modifiers: add \"|q\" to force quotes, or \"|raw\" to remove quotes."
    798 #~ msgstr ""
    799 #~ "Modifikatoren: „|q“ erzwingt Anführungszeichen, „|raw“ entfernt sie."
    800 
    801 #~ msgid "Available placeholders:"
    802 #~ msgstr "Verfügbare Platzhalter:"
    803 
    804 #~ msgid "Placeholders Language"
    805 #~ msgstr "Sprache der Platzhalter"
    806 
    807 #~ msgid "Auto-detect"
    808 #~ msgstr "Automatisch erkennen"
    809 
    810 #~ msgid "Prompt Language"
    811 #~ msgstr "Prompt-Sprache"
    812 
    813 #~ msgid "Make this the default template"
    814 #~ msgstr "Diese Vorlage als Standard festlegen"
    815 
    816 #~ msgid ""
    817 #~ "Prompts can be written in any language, but they work best when you "
    818 #~ "define both the Prompt Language and the Placeholders Language."
    819 #~ msgstr ""
    820 #~ "Prompts können in jeder Sprache geschrieben werden, funktionieren jedoch "
    821 #~ "am besten, wenn sowohl die Prompt-Sprache als auch die Sprache der "
    822 #~ "Platzhalter definiert sind."
    823 
    824 #~ msgid "Add New Template"
    825 #~ msgstr "Neue Vorlage hinzufügen"
    826 
    827 #~ msgid "Edit Template"
    828 #~ msgstr "Template bearbeiten"
    829 
    830 #~ msgid "No templates added."
    831 #~ msgstr "Keine Vorlagen hinzugefügt."
    832 
    833 #~ msgid "Existing Templates"
    834 #~ msgstr "Vorhandene Vorlagen"
    835 
    836 #~ msgid "Template saved."
    837 #~ msgstr "Vorlage gespeichert."
    838 
    839 #~ msgid "Template updated."
    840 #~ msgstr "Vorlage aktualisiert."
    841 
    842 #~ msgid "Template deleted."
    843 #~ msgstr "Vorlage gelöscht."
    844 
    845 #~ msgid "Default template updated."
    846 #~ msgstr "Standardvorlage aktualisiert."
    847 
    848 #~ msgid "Add New Server"
    849 #~ msgstr "Neuen Server hinzufügen"
    850 
    851 #~ msgid "Prompt Templates"
    852 #~ msgstr "Prompt-Vorlagen"
    853 
    854 #~ msgid "Server"
    855 #~ msgstr "Server"
  • aigude-tools/trunk/languages/aigude-tools-de_DE_formal.po

    r3415292 r3480099  
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-14 08:51:43+0000\n"
     5"Project-Id-Version: Plugins - AiGude Tools - Stable (latest release)\n"
     6"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/aigude-tools\n"
     7"POT-Creation-Date: 2025-12-09T11:45:59+00:00\n"
     8"PO-Revision-Date: 2025-12-08 21:27:17+0000\n"
     9"Language: de\n"
    610"MIME-Version: 1.0\n"
    711"Content-Type: text/plain; charset=UTF-8\n"
     
    913"Plural-Forms: nplurals=2; plural=n != 1;\n"
    1014"X-Generator: GlotPress/4.0.3\n"
    11 "Language: de\n"
    12 "Project-Id-Version: Plugins - AiGude Tools - Stable (latest release)\n"
     15
     16#: assets/js/grid-actions.js:106 assets/js/list-actions.js:230
     17msgid "Close"
     18msgstr "Schließen"
     19
     20#: assets/js/grid-actions.js:104 assets/js/list-actions.js:228
     21msgid "Edit in Prompts"
     22msgstr "In Prompts bearbeiten"
     23
     24#: includes/grid-view.php:160 includes/list-view.php:284
     25msgid "View prompt details"
     26msgstr "Prompt-Details anzeigen"
     27
     28#: includes/grid-view.php:99 includes/list-view.php:99
     29msgid "(No provider)"
     30msgstr "(Kein Anbieter)"
     31
     32#: includes/admin-prompts.php:516
     33msgid "Restore defaults"
     34msgstr "Standards wiederherstellen"
     35
     36#: includes/admin-prompts.php:156
     37msgid "The default prompt cannot be deleted."
     38msgstr "Der Standard-Prompt kann nicht gelöscht werden."
     39
     40#: includes/admin-prompts.php:135
     41msgid "Default prompt restored."
     42msgstr "Standard-Prompt wiederhergestellt."
     43
     44#: includes/admin-prompts.php:94
     45msgid "Default prompt added."
     46msgstr "Standard-Prompt hinzugefügt."
     47
     48#: aigude-tools.php:210
     49msgid "Default Prompt"
     50msgstr "Standard-Prompt"
    1351
    1452#: assets/js/grid-actions.js:26 assets/js/list-actions.js:34
     
    2664#: includes/admin-settings.php:782
    2765msgid "Saving..."
    28 msgstr "Speichern …"
     66msgstr "Wird gespeichert …"
    2967
    3068#: includes/admin-settings.php:745
     
    110148msgstr "Einstellungen für Übersetzungsanbieter werden nicht mehr verwendet."
    111149
    112 #: includes/admin-prompts.php:678
     150#: includes/admin-prompts.php:748
    113151msgid "When set, the List/Grid views lock the Alt Text Language selector to this provider/language."
    114152msgstr "Wenn aktiviert, sperren Listen-/Rasteransichten den Alt-Text-Sprachwähler auf diesen Anbieter/diese Sprache."
    115153
    116 #: includes/admin-prompts.php:676
     154#: includes/admin-prompts.php:746
    117155msgid "Pick a provider and language you always want the generated alt text to use, overriding the default selection in List/Grid views."
    118156msgstr "Wählen Sie einen Anbieter und eine Sprache, die immer für den generierten Alt-Text verwendet werden sollen und die Auswahl in Liste/Raster überschreiben."
    119157
    120 #: includes/admin-prompts.php:624
     158#: includes/admin-prompts.php:694
    121159msgid "No languages available"
    122160msgstr "Keine Sprachen verfügbar"
    123161
    124 #: includes/admin-prompts.php:623 includes/admin-prompts.php:668
     162#: includes/admin-prompts.php:693 includes/admin-prompts.php:738
    125163msgid "Select a provider to choose a language"
    126164msgstr "Wählen Sie einen Anbieter, um eine Sprache auszuwählen"
    127165
    128 #: includes/admin-prompts.php:618
     166#: includes/admin-prompts.php:688
    129167msgid "Language"
    130168msgstr "Sprache"
    131169
    132 #: includes/admin-prompts.php:612 includes/admin-settings.php:549
     170#: includes/admin-prompts.php:682 includes/admin-settings.php:549
    133171msgid "Show only EU-based translation providers"
    134172msgstr "Nur EU-basierte Übersetzungsanbieter anzeigen"
    135173
    136 #: includes/admin-prompts.php:593
     174#: includes/admin-prompts.php:663
    137175msgid "Provider"
    138176msgstr "Anbieter"
    139177
    140 #: includes/admin-prompts.php:588
     178#: includes/admin-prompts.php:658
    141179msgid "Target Alt Text language"
    142180msgstr "Zielsprache für Alt-Text"
    143181
    144 #: includes/admin-prompts.php:528
     182#: includes/admin-prompts.php:598
    145183msgid "Available placeholders"
    146184msgstr "Verfügbare Platzhalter"
    147185
    148 #: includes/admin-prompts.php:525
     186#: includes/admin-prompts.php:595
    149187msgid "You can write the prompt in any language supported by the provider you select for the Target Alt Text."
    150188msgstr "Sie können den Prompt in jeder Sprache verfassen, die vom Anbieter der Ziel-Alt-Text-Sprache unterstützt wird."
    151189
    152 #: includes/admin-prompts.php:510
     190#: includes/admin-prompts.php:580
    153191msgid "Make this the default prompt"
    154192msgstr "Diesen Prompt als Standard festlegen"
    155193
    156 #: includes/admin-prompts.php:455
     194#: includes/admin-prompts.php:513
    157195msgid "Duplicate"
    158196msgstr "Duplizieren"
    159197
    160 #: includes/admin-prompts.php:443
     198#: includes/admin-prompts.php:499
    161199msgid "Not set"
    162200msgstr "Nicht festgelegt"
    163201
    164 #: includes/admin-prompts.php:396
     202#: includes/admin-prompts.php:450
    165203msgid "Target language"
    166204msgstr "Zielsprache"
    167205
    168 #: includes/admin-prompts.php:386 includes/admin-settings.php:375
     206#: includes/admin-prompts.php:440 includes/admin-settings.php:375
    169207msgid "Add New"
    170208msgstr "Neu hinzufügen"
    171209
    172 #: includes/admin-prompts.php:289
     210#: includes/admin-prompts.php:343
    173211msgid "Please select a target language."
    174212msgstr "Bitte wählen Sie eine Zielsprache aus."
    175213
    176 #: includes/admin-prompts.php:286
     214#: includes/admin-prompts.php:340
    177215msgid "Please select a translation provider."
    178216msgstr "Bitte wählen Sie einen Übersetzungsanbieter aus."
    179217
    180 #: includes/admin-prompts.php:283
     218#: includes/admin-prompts.php:337
    181219msgid "Please enter a prompt."
    182220msgstr "Bitte geben Sie einen Prompt ein."
    183221
    184 #: includes/admin-prompts.php:280
     222#: includes/admin-prompts.php:334
    185223msgid "Please enter a title."
    186224msgstr "Bitte geben Sie einen Titel ein."
    187225
    188 #: includes/admin-prompts.php:89 includes/admin-prompts.php:101
    189 #: includes/admin-prompts.php:121 includes/admin-prompts.php:131
    190 #: includes/admin-prompts.php:317
     226#: includes/admin-prompts.php:117 includes/admin-prompts.php:146
     227#: includes/admin-prompts.php:170 includes/admin-prompts.php:180
     228#: includes/admin-prompts.php:371
    191229msgid "Prompt not found."
    192230msgstr "Prompt nicht gefunden."
    193231
    194 #: includes/admin-prompts.php:87
     232#: includes/admin-prompts.php:115
    195233msgid "Prompt duplicated."
    196234msgstr "Prompt dupliziert."
    197235
    198 #: includes/admin-prompts.php:685
     236#: includes/admin-prompts.php:755
    199237msgid "Save Prompt"
    200238msgstr "Prompt speichern"
    201239
    202 #: includes/admin-prompts.php:543
     240#: includes/admin-prompts.php:613
    203241msgid "Examples:"
    204242msgstr "Beispiele:"
    205243
    206 #: includes/admin-prompts.php:539
     244#: includes/admin-prompts.php:609
    207245msgid "Modifiers: |q (force quotes), |raw (no quotes), |trim, |lower, |upper, |ucfirst, |translatable (force translate), |untranslatable (no translate)."
    208246msgstr "Modifikatoren: |q (Anführungszeichen erzwingen), |raw (ohne Anführungszeichen), |trim, |lower, |upper, |ucfirst, |translatable (Übersetzung erzwingen), |untranslatable (nicht übersetzen)."
    209247
    210 #: includes/admin-prompts.php:483
     248#: includes/admin-prompts.php:553
    211249msgid "Add New Prompt"
    212250msgstr "Neuen Prompt hinzufügen"
    213251
    214 #: includes/admin-prompts.php:483
     252#: includes/admin-prompts.php:553
    215253msgid "Edit Prompt"
    216254msgstr "Prompt bearbeiten"
    217255
    218 #: includes/admin-prompts.php:460
     256#: includes/admin-prompts.php:530
    219257msgid "No prompts added."
    220258msgstr "Keine Prompts hinzugefügt."
    221259
    222 #: includes/admin-prompts.php:321
     260#: includes/admin-prompts.php:375
    223261msgid "Prompt saved."
    224262msgstr "Prompt gespeichert."
    225263
    226 #: includes/admin-prompts.php:315
     264#: includes/admin-prompts.php:369
    227265msgid "Prompt updated."
    228266msgstr "Prompt aktualisiert."
    229267
    230 #: includes/admin-prompts.php:119
     268#: includes/admin-prompts.php:167
    231269msgid "Prompt deleted."
    232270msgstr "Prompt gelöscht."
    233271
    234 #: includes/admin-prompts.php:99
     272#: includes/admin-prompts.php:144
    235273msgid "Default prompt updated."
    236274msgstr "Standard‑Prompt aktualisiert."
    237275
    238 #: includes/admin-prompts.php:380 includes/class-aigude-admin-ui.php:155
     276#: includes/admin-prompts.php:434 includes/class-aigude-admin-ui.php:155
    239277#: includes/class-aigude-admin-ui.php:156
    240278msgid "Prompts"
     
    247285msgstr "Einstellungen"
    248286
    249 #: includes/admin-prompts.php:655 includes/admin-prompts.php:715
     287#: includes/admin-prompts.php:725 includes/admin-prompts.php:785
    250288#: includes/admin-settings.php:724 includes/admin-templates.php:249
    251289#: includes/admin-templates.php:278
     
    253291msgstr "Alle Sprachen"
    254292
    255 #: includes/admin-prompts.php:644 includes/admin-prompts.php:714
     293#: includes/admin-prompts.php:714 includes/admin-prompts.php:784
    256294#: includes/admin-settings.php:716 includes/admin-settings.php:752
    257295#: includes/admin-templates.php:241 includes/admin-templates.php:271
     
    357395msgstr "Bilder auswählen"
    358396
    359 #: includes/list-view.php:337
     397#: includes/list-view.php:419
    360398msgid "Alternative Text"
    361399msgstr "Alternativtext"
    362400
    363 #: includes/list-view.php:327
     401#: includes/list-view.php:409
    364402msgid "Continue with the current alternative text"
    365403msgstr "Mit dem aktuellen Alternativtext fortfahren"
    366404
    367 #: includes/list-view.php:323
     405#: includes/list-view.php:405
    368406msgid "Credits"
    369407msgstr "Credits"
    370408
    371 #: includes/list-view.php:319
     409#: includes/list-view.php:401
    372410msgid "Generating"
    373411msgstr "Wird generiert"
    374412
    375 #: includes/list-view.php:318 includes/list-view.php:320
     413#: includes/list-view.php:400 includes/list-view.php:402
    376414msgid "Generate"
    377415msgstr "Generieren"
    378416
    379 #: includes/list-view.php:312
     417#: includes/list-view.php:394
    380418msgid "Custom prompt…"
    381419msgstr "Benutzerdefinierter Prompt …"
    382420
    383421#. translators: %s: the file title (post_title) of the image.
    384 #: includes/list-view.php:265
     422#: includes/list-view.php:342
    385423msgid "Generate File Metadata \"%s\""
    386424msgstr "Dateimetadaten für „%s“ generieren"
    387425
    388 #: includes/list-view.php:256
     426#: includes/list-view.php:333
    389427msgid "Open in Media Library"
    390428msgstr "In der Mediathek öffnen"
    391429
    392430#. translators: %s: number of images on the current page.
    393 #: includes/list-view.php:224
     431#: includes/list-view.php:301
    394432msgid "Generate and save alternative text for %s images"
    395433msgstr "Alternativtexte für %s Bilder generieren und speichern"
    396434
    397 #: includes/list-view.php:218 assets/js/grid-actions.js:18
     435#: includes/list-view.php:295 assets/js/grid-actions.js:18
    398436#: assets/js/list-actions.js:19
    399437msgid "Generating..."
     
    402440#. translators: %s: number of images (the %s is replaced dynamically in JS for
    403441#. the data attribute).
    404 #: includes/list-view.php:213
     442#: includes/list-view.php:290
    405443msgid "Generate and save alternative text for %s Images"
    406444msgstr "Alternativtexte für %s Bilder generieren und speichern"
     
    408446#. translators: %s = site language label, e.g. "English (US)".
    409447#. translators: %s = site language label (e.g., "English (US)").
    410 #: includes/admin-prompts.php:637 includes/admin-prompts.php:713
     448#: includes/admin-prompts.php:707 includes/admin-prompts.php:783
    411449#: includes/admin-settings.php:711
    412450msgid "System (%s)"
    413451msgstr "System (%s)"
    414452
    415 #: includes/list-view.php:160
     453#: includes/list-view.php:240
    416454msgid "images."
    417455msgstr "Bilder."
    418456
    419 #: includes/list-view.php:158
     457#: includes/list-view.php:238
    420458msgid "Will process"
    421459msgstr "Verarbeitet"
    422460
    423 #: includes/list-view.php:154
     461#: includes/list-view.php:234
    424462msgid "Select all (across pages)"
    425463msgstr "Alle auswählen (über alle Seiten)"
    426464
    427 #: includes/list-view.php:150
     465#: includes/list-view.php:230
    428466msgid "Select all (this page)"
    429467msgstr "Alle auswählen (diese Seite)"
    430468
    431 #: includes/list-view.php:146
     469#: includes/list-view.php:226
    432470msgid "Skip existing"
    433471msgstr "Vorhandene überspringen"
    434472
    435 #: includes/list-view.php:137
     473#: includes/list-view.php:217
    436474msgid "Per Page"
    437475msgstr "Pro Seite"
    438476
    439 #: includes/list-view.php:116
     477#: includes/list-view.php:196
    440478msgid "Search"
    441479msgstr "Suchen"
    442480
    443 #: includes/list-view.php:113
     481#: includes/list-view.php:193
    444482msgid "Search filename, title or alt-text…"
    445483msgstr "Dateiname, Titel, Alt-Text suchen"
    446484
    447 #: includes/list-view.php:106
     485#: includes/list-view.php:186
    448486msgid "Search images"
    449487msgstr "Bilder suchen"
    450488
    451 #: includes/list-view.php:89
     489#: includes/list-view.php:167
    452490msgid "Alt Text Generator - List view"
    453491msgstr "Alt-Text-Generator – Listenansicht"
    454492
    455 #: includes/grid-view.php:82
     493#: includes/grid-view.php:169
    456494msgid "Generate alt text for selected"
    457495msgstr "Alternativtext für Auswahl generieren"
    458496
    459 #: includes/grid-view.php:79
     497#: includes/grid-view.php:166
    460498msgid "Select images from Media Library"
    461499msgstr "Bilder aus der Mediathek auswählen"
    462500
    463 #: includes/grid-view.php:24
     501#: includes/grid-view.php:112
    464502msgid "Alt Text Generator - Grid view"
    465503msgstr "Alt-Text-Generator – Rasteransicht"
    466504
    467 #: includes/grid-view.php:10 includes/list-view.php:10
     505#: aigude-tools.php:209
    468506msgid "Describe the essential content of the picture briefly and concisely. Limit the text to a very short sentence"
    469507msgstr "Beschreiben Sie den wesentlichen Bildinhalt kurz und prägnant. Begrenzen Sie den Text auf einen sehr kurzen Satz."
     
    477515msgstr "Vorlage speichern"
    478516
    479 #: includes/admin-prompts.php:685 includes/admin-templates.php:318
     517#: includes/admin-prompts.php:755 includes/admin-templates.php:318
    480518msgid "Update"
    481519msgstr "Aktualisieren"
     
    495533msgstr "Beispiel:"
    496534
    497 #: includes/admin-prompts.php:540 includes/admin-templates.php:295
     535#: includes/admin-prompts.php:610 includes/admin-templates.php:295
    498536msgid "Unknown placeholders are left unchanged. Empty values become blank."
    499537msgstr "Unbekannte Platzhalter bleiben unverändert. Leere Werte werden zu einem leeren Text."
     
    505543#. translators: %width% and %height% are numeric image dimensions; numeric
    506544#. placeholders are not quoted.
    507 #: includes/admin-prompts.php:538 includes/admin-templates.php:293
     545#: includes/admin-prompts.php:608 includes/admin-templates.php:293
    508546msgid "Numeric placeholders like %width% and %height% are not quoted (e.g. → 1920)."
    509547msgstr "Numerische Platzhalter wie %width% und %height% werden nicht in Anführungszeichen gesetzt (z. B. → 1920)."
     
    511549#. translators: %filename_no_ext% is the filename without extension. Example
    512550#. shows automatic quoting of text placeholders.
    513 #: includes/admin-prompts.php:536 includes/admin-templates.php:291
     551#: includes/admin-prompts.php:606 includes/admin-templates.php:291
    514552msgid "Text placeholders are automatically quoted (e.g. %filename_no_ext% → \"car-photo-123\")."
    515553msgstr "Textplatzhalter werden automatisch in Anführungszeichen gesetzt (z. B. %filename_no_ext% → „car-photo-123“)."
     
    551589msgstr "Keine Vorlagen hinzugefügt."
    552590
    553 #: includes/admin-prompts.php:456 includes/admin-templates.php:171
     591#: includes/admin-prompts.php:521 includes/admin-templates.php:171
    554592msgid "Really delete?"
    555593msgstr "Wirklich löschen?"
    556594
    557 #: includes/admin-prompts.php:395 includes/admin-prompts.php:521
     595#: includes/admin-prompts.php:449 includes/admin-prompts.php:591
    558596#: includes/admin-templates.php:146 includes/admin-templates.php:222
    559 #: includes/grid-view.php:31 includes/list-view.php:167
    560 #: includes/list-view.php:279
     597#: includes/grid-view.php:121 includes/list-view.php:247
     598#: includes/list-view.php:356 assets/js/grid-actions.js:94
     599#: assets/js/list-actions.js:218
    561600msgid "Prompt"
    562601msgstr "Prompt"
    563602
    564 #: includes/admin-prompts.php:394 includes/admin-prompts.php:516
     603#: includes/admin-prompts.php:448 includes/admin-prompts.php:586
    565604#: includes/admin-templates.php:145 includes/admin-templates.php:217
    566605msgid "Title"
     
    591630msgstr "Unzureichende Berechtigungen"
    592631
    593 #: includes/admin-prompts.php:456 includes/admin-server.php:394
     632#: includes/admin-prompts.php:522 includes/admin-server.php:394
    594633#: includes/admin-settings.php:490 includes/admin-templates.php:171
    595634msgid "Delete"
     
    600639msgstr "Möchten Sie diesen Server wirklich löschen?"
    601640
    602 #: includes/admin-prompts.php:454 includes/admin-server.php:391
     641#: includes/admin-prompts.php:512 includes/admin-server.php:391
    603642#: includes/admin-settings.php:487 includes/admin-templates.php:170
    604643msgid "Edit"
    605644msgstr "Bearbeiten"
    606645
    607 #: includes/admin-prompts.php:450 includes/admin-server.php:377
     646#: includes/admin-prompts.php:506 includes/admin-server.php:377
    608647#: includes/admin-settings.php:473 includes/admin-templates.php:166
    609648msgid "Make default"
    610649msgstr "Als Standard festlegen"
    611650
    612 #: includes/admin-prompts.php:423 includes/admin-server.php:334
     651#: includes/admin-prompts.php:477 includes/admin-server.php:334
    613652#: includes/admin-settings.php:431 includes/admin-templates.php:148
    614653msgid "Actions"
     
    631670msgstr "Neuen Server hinzufügen"
    632671
    633 #: includes/admin-prompts.php:687 includes/admin-server.php:263
     672#: includes/admin-prompts.php:757 includes/admin-server.php:263
    634673#: includes/admin-server.php:318 includes/admin-settings.php:367
    635674#: includes/admin-settings.php:416 includes/admin-templates.php:321
     
    638677
    639678#: includes/admin-server.php:262 includes/admin-settings.php:366
    640 #: includes/list-view.php:340
     679#: includes/list-view.php:422
    641680msgid "Save"
    642681msgstr "Speichern"
     
    647686msgstr "Diesen Server als Standard festlegen"
    648687
    649 #: includes/admin-prompts.php:422 includes/admin-prompts.php:448
    650 #: includes/admin-prompts.php:501 includes/admin-server.php:257
     688#: includes/admin-prompts.php:476 includes/admin-prompts.php:504
     689#: includes/admin-prompts.php:571 includes/admin-server.php:257
    651690#: includes/admin-server.php:312 includes/admin-server.php:332
    652691#: includes/admin-server.php:374 includes/admin-settings.php:361
  • aigude-tools/trunk/languages/aigude-tools-nl_NL.po

    r3415292 r3480099  
    1 # Translation of Plugins - AiGude Tools - Development (trunk) in Dutch
    2 # This file is distributed under the same license as the Plugins - AiGude Tools - Development (trunk) package.
     1# Translation of Plugins - AiGude Tools - Stable (latest release) in Dutch
     2# This file is distributed under the same license as the Plugins - AiGude Tools - Stable (latest release) package.
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-12-02 21:21:59+0000\n"
     5"PO-Revision-Date: 2025-12-04 11:49:05+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
     
    1010"X-Generator: GlotPress/4.0.3\n"
    1111"Language: nl\n"
    12 "Project-Id-Version: Plugins - AiGude Tools - Development (trunk)\n"
     12"Project-Id-Version: Plugins - AiGude Tools - Stable (latest release)\n"
     13
     14#: assets/js/grid-actions.js:106 assets/js/list-actions.js:230
     15msgid "Close"
     16msgstr "Sluiten"
     17
     18#: assets/js/grid-actions.js:104 assets/js/list-actions.js:228
     19msgid "Edit in Prompts"
     20msgstr "Bewerken in Prompts"
     21
     22#: includes/grid-view.php:160 includes/list-view.php:284
     23msgid "View prompt details"
     24msgstr "Promptdetails bekijken"
     25
     26#: includes/grid-view.php:99 includes/list-view.php:99
     27msgid "(No provider)"
     28msgstr "(Geen provider)"
     29
     30#: includes/admin-prompts.php:516
     31msgid "Restore defaults"
     32msgstr "Standaardinstellingen herstellen"
     33
     34#: includes/admin-prompts.php:156
     35msgid "The default prompt cannot be deleted."
     36msgstr "De standaardprompt kan niet worden verwijderd."
     37
     38#: includes/admin-prompts.php:135
     39msgid "Default prompt restored."
     40msgstr "Standaardprompt hersteld."
     41
     42#: includes/admin-prompts.php:94
     43msgid "Default prompt added."
     44msgstr "Standaardprompt toegevoegd."
     45
     46#: aigude-tools.php:210
     47msgid "Default Prompt"
     48msgstr "Standaardprompt"
    1349
    1450#: assets/js/grid-actions.js:26 assets/js/list-actions.js:34
     
    3066#: includes/admin-settings.php:745
    3167msgid "No translation provider metadata available. Add a server with a valid API key to load providers."
    32 msgstr "Geen metadata van vertaalproviders beschikbaar. Voeg een server met een geldige API-sleutel toe om providers te laden."
     68msgstr "Geen metagegevens van vertaalproviders beschikbaar. Voeg een server met een geldige API-sleutel toe om providers te laden."
    3369
    3470#: includes/admin-settings.php:736
     
    4278#: includes/admin-settings.php:698
    4379msgid "Default alt text language"
    44 msgstr "Standaard alt‑teksttaal"
     80msgstr "Standaard alt‑text taal"
    4581
    4682#: includes/admin-settings.php:693
     
    77113#: includes/admin-settings.php:522
    78114msgid "Select the translation provider for AI-generated alt texts. The provider determines the available target languages."
    79 msgstr "Selecteer de vertaalprovider voor door AI gegenereerde alt‑teksten. De provider bepaalt welke doeltalen beschikbaar zijn."
     115msgstr "Selecteer de vertaalprovider voor door AI gegenereerde alt‑text. De provider bepaalt welke doeltalen beschikbaar zijn."
    80116
    81117#. translators: %s = site language label, e.g. "English (US)".
     
    110146msgstr "Instellingen voor vertaalproviders worden niet meer gebruikt."
    111147
    112 #: includes/admin-prompts.php:678
     148#: includes/admin-prompts.php:748
    113149msgid "When set, the List/Grid views lock the Alt Text Language selector to this provider/language."
    114 msgstr "Als je dit instelt, vergrendelen de lijst-/rasterweergaven de taalkeuzelijst voor alt‑tekst op deze provider/taal."
    115 
    116 #: includes/admin-prompts.php:676
     150msgstr "Als je dit instelt, vergrendelen de lijst-/rasterweergaven de taalkeuzelijst voor alt‑text op deze provider/taal."
     151
     152#: includes/admin-prompts.php:746
    117153msgid "Pick a provider and language you always want the generated alt text to use, overriding the default selection in List/Grid views."
    118 msgstr "Kies de provider en taal die je altijd wilt gebruiken voor de gegenereerde alt‑tekst; hiermee overschrijf je de standaardselectie in de lijst-/rasterweergaven."
    119 
    120 #: includes/admin-prompts.php:624
     154msgstr "Kies de provider en taal die je altijd wil gebruiken voor de gegenereerde alt‑tekst; hiermee overschrijf je de standaardselectie in de lijst-/rasterweergaven."
     155
     156#: includes/admin-prompts.php:694
    121157msgid "No languages available"
    122158msgstr "Geen talen beschikbaar"
    123159
    124 #: includes/admin-prompts.php:623 includes/admin-prompts.php:668
     160#: includes/admin-prompts.php:693 includes/admin-prompts.php:738
    125161msgid "Select a provider to choose a language"
    126162msgstr "Selecteer een provider om een taal te kiezen"
    127163
    128 #: includes/admin-prompts.php:618
     164#: includes/admin-prompts.php:688
    129165msgid "Language"
    130166msgstr "Taal"
    131167
    132 #: includes/admin-prompts.php:612 includes/admin-settings.php:549
     168#: includes/admin-prompts.php:682 includes/admin-settings.php:549
    133169msgid "Show only EU-based translation providers"
    134170msgstr "Alleen vertaalproviders uit de EU tonen"
    135171
    136 #: includes/admin-prompts.php:593
     172#: includes/admin-prompts.php:663
    137173msgid "Provider"
    138174msgstr "Provider"
    139175
    140 #: includes/admin-prompts.php:588
     176#: includes/admin-prompts.php:658
    141177msgid "Target Alt Text language"
    142 msgstr "Doeltaal voor alt‑tekst"
    143 
    144 #: includes/admin-prompts.php:528
     178msgstr "Doeltaal voor alt‑text"
     179
     180#: includes/admin-prompts.php:598
    145181msgid "Available placeholders"
    146182msgstr "Beschikbare plaatshouders"
    147183
    148 #: includes/admin-prompts.php:525
     184#: includes/admin-prompts.php:595
    149185msgid "You can write the prompt in any language supported by the provider you select for the Target Alt Text."
    150 msgstr "Je kunt de prompt schrijven in elke taal die wordt ondersteund door de provider die je selecteert voor de doeltaal van de alt‑tekst."
    151 
    152 #: includes/admin-prompts.php:510
     186msgstr "Je kunt de prompt schrijven in elke taal die wordt ondersteund door de provider die je selecteert voor de doeltaal van de alt‑text."
     187
     188#: includes/admin-prompts.php:580
    153189msgid "Make this the default prompt"
    154190msgstr "Maak dit de standaardprompt"
    155191
    156 #: includes/admin-prompts.php:455
     192#: includes/admin-prompts.php:513
    157193msgid "Duplicate"
    158194msgstr "Dupliceren"
    159195
    160 #: includes/admin-prompts.php:443
     196#: includes/admin-prompts.php:499
    161197msgid "Not set"
    162198msgstr "Niet ingesteld"
    163199
    164 #: includes/admin-prompts.php:396
     200#: includes/admin-prompts.php:450
    165201msgid "Target language"
    166202msgstr "Doeltaal"
    167203
    168 #: includes/admin-prompts.php:386 includes/admin-settings.php:375
     204#: includes/admin-prompts.php:440 includes/admin-settings.php:375
    169205msgid "Add New"
    170206msgstr "Nieuwe toevoegen"
    171207
    172 #: includes/admin-prompts.php:289
     208#: includes/admin-prompts.php:343
    173209msgid "Please select a target language."
    174210msgstr "Selecteer een doeltaal."
    175211
    176 #: includes/admin-prompts.php:286
     212#: includes/admin-prompts.php:340
    177213msgid "Please select a translation provider."
    178214msgstr "Selecteer een vertaalprovider."
    179215
    180 #: includes/admin-prompts.php:283
     216#: includes/admin-prompts.php:337
    181217msgid "Please enter a prompt."
    182218msgstr "Voer een prompt in."
    183219
    184 #: includes/admin-prompts.php:280
     220#: includes/admin-prompts.php:334
    185221msgid "Please enter a title."
    186222msgstr "Voer een titel in."
    187223
    188 #: includes/admin-prompts.php:89 includes/admin-prompts.php:101
    189 #: includes/admin-prompts.php:121 includes/admin-prompts.php:131
    190 #: includes/admin-prompts.php:317
     224#: includes/admin-prompts.php:117 includes/admin-prompts.php:146
     225#: includes/admin-prompts.php:170 includes/admin-prompts.php:180
     226#: includes/admin-prompts.php:371
    191227msgid "Prompt not found."
    192228msgstr "Prompt niet gevonden."
    193229
    194 #: includes/admin-prompts.php:87
     230#: includes/admin-prompts.php:115
    195231msgid "Prompt duplicated."
    196232msgstr "Prompt gedupliceerd."
    197233
    198 #: includes/admin-prompts.php:685
     234#: includes/admin-prompts.php:755
    199235msgid "Save Prompt"
    200236msgstr "Prompt opslaan"
    201237
    202 #: includes/admin-prompts.php:543
     238#: includes/admin-prompts.php:613
    203239msgid "Examples:"
    204240msgstr "Voorbeelden:"
    205241
    206 #: includes/admin-prompts.php:539
     242#: includes/admin-prompts.php:609
    207243msgid "Modifiers: |q (force quotes), |raw (no quotes), |trim, |lower, |upper, |ucfirst, |translatable (force translate), |untranslatable (no translate)."
    208244msgstr "Modifiers: |q (aanhalingstekens forceren), |raw (geen aanhalingstekens), |trim, |lower, |upper, |ucfirst, |translatable (vertalen forceren), |untranslatable (niet vertalen)."
    209245
    210 #: includes/admin-prompts.php:483
     246#: includes/admin-prompts.php:553
    211247msgid "Add New Prompt"
    212248msgstr "Nieuwe prompt toevoegen"
    213249
    214 #: includes/admin-prompts.php:483
     250#: includes/admin-prompts.php:553
    215251msgid "Edit Prompt"
    216252msgstr "Prompt bewerken"
    217253
    218 #: includes/admin-prompts.php:460
     254#: includes/admin-prompts.php:530
    219255msgid "No prompts added."
    220256msgstr "Geen prompts toegevoegd."
    221257
    222 #: includes/admin-prompts.php:321
     258#: includes/admin-prompts.php:375
    223259msgid "Prompt saved."
    224260msgstr "Prompt opgeslagen."
    225261
    226 #: includes/admin-prompts.php:315
     262#: includes/admin-prompts.php:369
    227263msgid "Prompt updated."
    228264msgstr "Prompt geüpdatet."
    229265
    230 #: includes/admin-prompts.php:119
     266#: includes/admin-prompts.php:167
    231267msgid "Prompt deleted."
    232268msgstr "Prompt verwijderd."
    233269
    234 #: includes/admin-prompts.php:99
     270#: includes/admin-prompts.php:144
    235271msgid "Default prompt updated."
    236272msgstr "Standaard prompt geüpdatet."
    237273
    238 #: includes/admin-prompts.php:380 includes/class-aigude-admin-ui.php:155
     274#: includes/admin-prompts.php:434 includes/class-aigude-admin-ui.php:155
    239275#: includes/class-aigude-admin-ui.php:156
    240276msgid "Prompts"
     
    247283msgstr "Instellingen"
    248284
    249 #: includes/admin-prompts.php:655 includes/admin-prompts.php:715
     285#: includes/admin-prompts.php:725 includes/admin-prompts.php:785
    250286#: includes/admin-settings.php:724 includes/admin-templates.php:249
    251287#: includes/admin-templates.php:278
     
    253289msgstr "Alle talen"
    254290
    255 #: includes/admin-prompts.php:644 includes/admin-prompts.php:714
     291#: includes/admin-prompts.php:714 includes/admin-prompts.php:784
    256292#: includes/admin-settings.php:716 includes/admin-settings.php:752
    257293#: includes/admin-templates.php:241 includes/admin-templates.php:271
     
    357393msgstr "Afbeeldingen selecteren"
    358394
    359 #: includes/list-view.php:337
     395#: includes/list-view.php:419
    360396msgid "Alternative Text"
    361397msgstr "Alternatieve tekst"
    362398
    363 #: includes/list-view.php:327
     399#: includes/list-view.php:409
    364400msgid "Continue with the current alternative text"
    365401msgstr "Ga verder met de huidige alternatieve tekst"
    366402
    367 #: includes/list-view.php:323
     403#: includes/list-view.php:405
    368404msgid "Credits"
    369405msgstr "Credits"
    370406
    371 #: includes/list-view.php:319
     407#: includes/list-view.php:401
    372408msgid "Generating"
    373409msgstr "Aan het genereren"
    374410
    375 #: includes/list-view.php:318 includes/list-view.php:320
     411#: includes/list-view.php:400 includes/list-view.php:402
    376412msgid "Generate"
    377413msgstr "Genereren"
    378414
    379 #: includes/list-view.php:312
     415#: includes/list-view.php:394
    380416msgid "Custom prompt…"
    381417msgstr "Aangepaste prompt…"
    382418
    383419#. translators: %s: the file title (post_title) of the image.
    384 #: includes/list-view.php:265
     420#: includes/list-view.php:342
    385421msgid "Generate File Metadata \"%s\""
    386422msgstr "Genereer bestandsmetagegevens \"%s\""
    387423
    388 #: includes/list-view.php:256
     424#: includes/list-view.php:333
    389425msgid "Open in Media Library"
    390426msgstr "Openen in mediabibliotheek"
    391427
    392428#. translators: %s: number of images on the current page.
    393 #: includes/list-view.php:224
     429#: includes/list-view.php:301
    394430msgid "Generate and save alternative text for %s images"
    395431msgstr "Alternatieve tekst genereren en opslaan voor %s afbeeldingen"
    396432
    397 #: includes/list-view.php:218 assets/js/grid-actions.js:18
     433#: includes/list-view.php:295 assets/js/grid-actions.js:18
    398434#: assets/js/list-actions.js:19
    399435msgid "Generating..."
     
    402438#. translators: %s: number of images (the %s is replaced dynamically in JS for
    403439#. the data attribute).
    404 #: includes/list-view.php:213
     440#: includes/list-view.php:290
    405441msgid "Generate and save alternative text for %s Images"
    406442msgstr "Alternatieve tekst genereren en opslaan voor %s afbeeldingen"
     
    408444#. translators: %s = site language label, e.g. "English (US)".
    409445#. translators: %s = site language label (e.g., "English (US)").
    410 #: includes/admin-prompts.php:637 includes/admin-prompts.php:713
     446#: includes/admin-prompts.php:707 includes/admin-prompts.php:783
    411447#: includes/admin-settings.php:711
    412448msgid "System (%s)"
    413449msgstr "Systeem (%s)"
    414450
    415 #: includes/list-view.php:160
     451#: includes/list-view.php:240
    416452msgid "images."
    417453msgstr "afbeeldingen."
    418454
    419 #: includes/list-view.php:158
     455#: includes/list-view.php:238
    420456msgid "Will process"
    421457msgstr "Zal verwerken"
    422458
    423 #: includes/list-view.php:154
     459#: includes/list-view.php:234
    424460msgid "Select all (across pages)"
    425461msgstr "Selecteer alles (over pagina's)"
    426462
    427 #: includes/list-view.php:150
     463#: includes/list-view.php:230
    428464msgid "Select all (this page)"
    429465msgstr "Alles selecteren (deze pagina)"
    430466
    431 #: includes/list-view.php:146
     467#: includes/list-view.php:226
    432468msgid "Skip existing"
    433469msgstr "Bestaande overslaan"
    434470
    435 #: includes/list-view.php:137
     471#: includes/list-view.php:217
    436472msgid "Per Page"
    437473msgstr "Per pagina"
    438474
    439 #: includes/list-view.php:116
     475#: includes/list-view.php:196
    440476msgid "Search"
    441477msgstr "Zoeken"
    442478
    443 #: includes/list-view.php:113
     479#: includes/list-view.php:193
    444480msgid "Search filename, title or alt-text…"
    445481msgstr "Zoek op bestandsnaam, titel of alt‑tekst…"
    446482
    447 #: includes/list-view.php:106
     483#: includes/list-view.php:186
    448484msgid "Search images"
    449485msgstr "Afbeeldingen zoeken"
    450486
    451 #: includes/list-view.php:89
     487#: includes/list-view.php:167
    452488msgid "Alt Text Generator - List view"
    453489msgstr "Alt‑tekst generator – Lijstweergave"
    454490
    455 #: includes/grid-view.php:82
     491#: includes/grid-view.php:169
    456492msgid "Generate alt text for selected"
    457493msgstr "Alt‑tekst genereren voor geselecteerden"
    458494
    459 #: includes/grid-view.php:79
     495#: includes/grid-view.php:166
    460496msgid "Select images from Media Library"
    461497msgstr "Afbeeldingen selecteren uit de mediabibliotheek"
    462498
    463 #: includes/grid-view.php:24
     499#: includes/grid-view.php:112
    464500msgid "Alt Text Generator - Grid view"
    465501msgstr "Alt‑tekst generator – Rasterweergave"
    466502
    467 #: includes/grid-view.php:10 includes/list-view.php:10
     503#: aigude-tools.php:209
    468504msgid "Describe the essential content of the picture briefly and concisely. Limit the text to a very short sentence"
    469505msgstr "Beschrijf de essentiële inhoud van de afbeelding kort en bondig. Beperk de tekst tot één zeer korte zin"
     
    477513msgstr "Template opslaan"
    478514
    479 #: includes/admin-prompts.php:685 includes/admin-templates.php:318
     515#: includes/admin-prompts.php:755 includes/admin-templates.php:318
    480516msgid "Update"
    481517msgstr "Updaten"
     
    495531msgstr "Voorbeeld:"
    496532
    497 #: includes/admin-prompts.php:540 includes/admin-templates.php:295
     533#: includes/admin-prompts.php:610 includes/admin-templates.php:295
    498534msgid "Unknown placeholders are left unchanged. Empty values become blank."
    499535msgstr "Onbekende plaatshouders worden ongewijzigd gelaten. Lege waarden worden leeg."
     
    505541#. translators: %width% and %height% are numeric image dimensions; numeric
    506542#. placeholders are not quoted.
    507 #: includes/admin-prompts.php:538 includes/admin-templates.php:293
     543#: includes/admin-prompts.php:608 includes/admin-templates.php:293
    508544msgid "Numeric placeholders like %width% and %height% are not quoted (e.g. → 1920)."
    509545msgstr "Numerieke plaatshouders zoals %width% en %height% worden niet geciteerd (bijv. → 1920)."
     
    511547#. translators: %filename_no_ext% is the filename without extension. Example
    512548#. shows automatic quoting of text placeholders.
    513 #: includes/admin-prompts.php:536 includes/admin-templates.php:291
     549#: includes/admin-prompts.php:606 includes/admin-templates.php:291
    514550msgid "Text placeholders are automatically quoted (e.g. %filename_no_ext% → \"car-photo-123\")."
    515551msgstr "Tekst plaatshouders worden automatisch geciteerd (bijv. %filename_no_ext% → \"car-photo-123\")."
     
    551587msgstr "Geen templates toegevoegd."
    552588
    553 #: includes/admin-prompts.php:456 includes/admin-templates.php:171
     589#: includes/admin-prompts.php:521 includes/admin-templates.php:171
    554590msgid "Really delete?"
    555591msgstr "Werkelijk verwijderen?"
    556592
    557 #: includes/admin-prompts.php:395 includes/admin-prompts.php:521
     593#: includes/admin-prompts.php:449 includes/admin-prompts.php:591
    558594#: includes/admin-templates.php:146 includes/admin-templates.php:222
    559 #: includes/grid-view.php:31 includes/list-view.php:167
    560 #: includes/list-view.php:279
     595#: includes/grid-view.php:121 includes/list-view.php:247
     596#: includes/list-view.php:356 assets/js/grid-actions.js:94
     597#: assets/js/list-actions.js:218
    561598msgid "Prompt"
    562599msgstr "Prompt"
    563600
    564 #: includes/admin-prompts.php:394 includes/admin-prompts.php:516
     601#: includes/admin-prompts.php:448 includes/admin-prompts.php:586
    565602#: includes/admin-templates.php:145 includes/admin-templates.php:217
    566603msgid "Title"
     
    591628msgstr "Onvoldoende machtigingen"
    592629
    593 #: includes/admin-prompts.php:456 includes/admin-server.php:394
     630#: includes/admin-prompts.php:522 includes/admin-server.php:394
    594631#: includes/admin-settings.php:490 includes/admin-templates.php:171
    595632msgid "Delete"
     
    600637msgstr "Wil je deze server echt verwijderen?"
    601638
    602 #: includes/admin-prompts.php:454 includes/admin-server.php:391
     639#: includes/admin-prompts.php:512 includes/admin-server.php:391
    603640#: includes/admin-settings.php:487 includes/admin-templates.php:170
    604641msgid "Edit"
    605642msgstr "Bewerken"
    606643
    607 #: includes/admin-prompts.php:450 includes/admin-server.php:377
     644#: includes/admin-prompts.php:506 includes/admin-server.php:377
    608645#: includes/admin-settings.php:473 includes/admin-templates.php:166
    609646msgid "Make default"
    610647msgstr "Als standaard instellen"
    611648
    612 #: includes/admin-prompts.php:423 includes/admin-server.php:334
     649#: includes/admin-prompts.php:477 includes/admin-server.php:334
    613650#: includes/admin-settings.php:431 includes/admin-templates.php:148
    614651msgid "Actions"
     
    631668msgstr "Nieuwe server toevoegen"
    632669
    633 #: includes/admin-prompts.php:687 includes/admin-server.php:263
     670#: includes/admin-prompts.php:757 includes/admin-server.php:263
    634671#: includes/admin-server.php:318 includes/admin-settings.php:367
    635672#: includes/admin-settings.php:416 includes/admin-templates.php:321
     
    638675
    639676#: includes/admin-server.php:262 includes/admin-settings.php:366
    640 #: includes/list-view.php:340
     677#: includes/list-view.php:422
    641678msgid "Save"
    642679msgstr "Opslaan"
     
    647684msgstr "Maak dit de standaard server"
    648685
    649 #: includes/admin-prompts.php:422 includes/admin-prompts.php:448
    650 #: includes/admin-prompts.php:501 includes/admin-server.php:257
     686#: includes/admin-prompts.php:476 includes/admin-prompts.php:504
     687#: includes/admin-prompts.php:571 includes/admin-server.php:257
    651688#: includes/admin-server.php:312 includes/admin-server.php:332
    652689#: includes/admin-server.php:374 includes/admin-settings.php:361
  • aigude-tools/trunk/languages/aigude-tools-nl_NL_formal.po

    r3415292 r3480099  
    1 # Translation of Plugins - AiGude Tools - Development (trunk) in Dutch
    2 # This file is distributed under the same license as the Plugins - AiGude Tools - Development (trunk) package.
     1# Translation of Plugins - AiGude Tools - Stable (latest release) in Dutch
     2# This file is distributed under the same license as the Plugins - AiGude Tools - Stable (latest release) package.
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-14 12:47:44+0000\n"
     5"PO-Revision-Date: 2025-12-04 13:19:11+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
     
    1010"X-Generator: GlotPress/4.0.3\n"
    1111"Language: nl\n"
    12 "Project-Id-Version: Plugins - AiGude Tools - Development (trunk)\n"
     12"Project-Id-Version: Plugins - AiGude Tools - Stable (latest release)\n"
     13
     14#: assets/js/grid-actions.js:106 assets/js/list-actions.js:230
     15msgid "Close"
     16msgstr "Sluiten"
     17
     18#: assets/js/grid-actions.js:104 assets/js/list-actions.js:228
     19msgid "Edit in Prompts"
     20msgstr "Bewerken in Prompts"
     21
     22#: includes/grid-view.php:160 includes/list-view.php:284
     23msgid "View prompt details"
     24msgstr "Promptdetails bekijken"
     25
     26#: includes/grid-view.php:99 includes/list-view.php:99
     27msgid "(No provider)"
     28msgstr "(Geen provider)"
     29
     30#: includes/admin-prompts.php:516
     31msgid "Restore defaults"
     32msgstr "Standaardinstellingen herstellen"
     33
     34#: includes/admin-prompts.php:156
     35msgid "The default prompt cannot be deleted."
     36msgstr "De standaardprompt kan niet worden verwijderd."
     37
     38#: includes/admin-prompts.php:135
     39msgid "Default prompt restored."
     40msgstr "Standaardprompt hersteld."
     41
     42#: includes/admin-prompts.php:94
     43msgid "Default prompt added."
     44msgstr "Standaardprompt toegevoegd."
     45
     46#: aigude-tools.php:210
     47msgid "Default Prompt"
     48msgstr "Standaardprompt"
    1349
    1450#: assets/js/grid-actions.js:26 assets/js/list-actions.js:34
     
    4278#: includes/admin-settings.php:698
    4379msgid "Default alt text language"
    44 msgstr "Standaard alt‑teksttaal"
     80msgstr "Standaard alt‑text taal"
    4581
    4682#: includes/admin-settings.php:693
     
    77113#: includes/admin-settings.php:522
    78114msgid "Select the translation provider for AI-generated alt texts. The provider determines the available target languages."
    79 msgstr "Selecteer de vertaalprovider voor door AI gegenereerde alt‑teksten. De provider bepaalt welke doeltalen beschikbaar zijn."
     115msgstr "Selecteer de vertaalprovider voor door AI gegenereerde alt‑text. De provider bepaalt welke doeltalen beschikbaar zijn."
    80116
    81117#. translators: %s = site language label, e.g. "English (US)".
     
    110146msgstr "Instellingen voor vertaalproviders worden niet meer gebruikt."
    111147
    112 #: includes/admin-prompts.php:678
     148#: includes/admin-prompts.php:748
    113149msgid "When set, the List/Grid views lock the Alt Text Language selector to this provider/language."
    114 msgstr "Als dit is ingesteld, vergrendelen de lijst-/rasterweergaven de taalkeuzelijst voor alt‑tekst op deze provider/taal."
    115 
    116 #: includes/admin-prompts.php:676
     150msgstr "Als u dit instelt, vergrendelen de lijst-/rasterweergaven de taalkeuzelijst voor alt‑text op deze provider/taal."
     151
     152#: includes/admin-prompts.php:746
    117153msgid "Pick a provider and language you always want the generated alt text to use, overriding the default selection in List/Grid views."
    118 msgstr "Kies de provider en taal die u altijd wilt gebruiken voor de gegenereerde alt‑tekst; hiermee overschrijft u de standaardselectie in de lijst-/rasterweergaven."
    119 
    120 #: includes/admin-prompts.php:624
     154msgstr "Kies de provider en taal die u altijd wilt gebruiken voor de gegenereerde alt‑text; hiermee overschrijft u de standaardselectie in de lijst-/rasterweergaven."
     155
     156#: includes/admin-prompts.php:694
    121157msgid "No languages available"
    122158msgstr "Geen talen beschikbaar"
    123159
    124 #: includes/admin-prompts.php:623 includes/admin-prompts.php:668
     160#: includes/admin-prompts.php:693 includes/admin-prompts.php:738
    125161msgid "Select a provider to choose a language"
    126162msgstr "Selecteer een provider om een taal te kiezen"
    127163
    128 #: includes/admin-prompts.php:618
     164#: includes/admin-prompts.php:688
    129165msgid "Language"
    130166msgstr "Taal"
    131167
    132 #: includes/admin-prompts.php:612 includes/admin-settings.php:549
     168#: includes/admin-prompts.php:682 includes/admin-settings.php:549
    133169msgid "Show only EU-based translation providers"
    134170msgstr "Alleen vertaalproviders uit de EU tonen"
    135171
    136 #: includes/admin-prompts.php:593
     172#: includes/admin-prompts.php:663
    137173msgid "Provider"
    138174msgstr "Provider"
    139175
    140 #: includes/admin-prompts.php:588
     176#: includes/admin-prompts.php:658
    141177msgid "Target Alt Text language"
    142 msgstr "Doeltaal voor alt‑tekst"
    143 
    144 #: includes/admin-prompts.php:528
     178msgstr "Doeltaal voor alt‑text"
     179
     180#: includes/admin-prompts.php:598
    145181msgid "Available placeholders"
    146182msgstr "Beschikbare plaatshouders"
    147183
    148 #: includes/admin-prompts.php:525
     184#: includes/admin-prompts.php:595
    149185msgid "You can write the prompt in any language supported by the provider you select for the Target Alt Text."
    150 msgstr "U kunt de prompt schrijven in elke taal die wordt ondersteund door de provider die u selecteert voor de doeltaal van de alt‑tekst."
    151 
    152 #: includes/admin-prompts.php:510
     186msgstr "U kunt de prompt schrijven in elke taal die wordt ondersteund door de provider die u selecteert voor de doeltaal van de alt‑text."
     187
     188#: includes/admin-prompts.php:580
    153189msgid "Make this the default prompt"
    154190msgstr "Maak dit de standaardprompt"
    155191
    156 #: includes/admin-prompts.php:455
     192#: includes/admin-prompts.php:513
    157193msgid "Duplicate"
    158194msgstr "Dupliceren"
    159195
    160 #: includes/admin-prompts.php:443
     196#: includes/admin-prompts.php:499
    161197msgid "Not set"
    162198msgstr "Niet ingesteld"
    163199
    164 #: includes/admin-prompts.php:396
     200#: includes/admin-prompts.php:450
    165201msgid "Target language"
    166202msgstr "Doeltaal"
    167203
    168 #: includes/admin-prompts.php:386 includes/admin-settings.php:375
     204#: includes/admin-prompts.php:440 includes/admin-settings.php:375
    169205msgid "Add New"
    170206msgstr "Nieuwe toevoegen"
    171207
    172 #: includes/admin-prompts.php:289
     208#: includes/admin-prompts.php:343
    173209msgid "Please select a target language."
    174210msgstr "Selecteer een doeltaal."
    175211
    176 #: includes/admin-prompts.php:286
     212#: includes/admin-prompts.php:340
    177213msgid "Please select a translation provider."
    178214msgstr "Selecteer een vertaalprovider."
    179215
    180 #: includes/admin-prompts.php:283
     216#: includes/admin-prompts.php:337
    181217msgid "Please enter a prompt."
    182218msgstr "Voer een prompt in."
    183219
    184 #: includes/admin-prompts.php:280
     220#: includes/admin-prompts.php:334
    185221msgid "Please enter a title."
    186222msgstr "Voer een titel in."
    187223
    188 #: includes/admin-prompts.php:89 includes/admin-prompts.php:101
    189 #: includes/admin-prompts.php:121 includes/admin-prompts.php:131
    190 #: includes/admin-prompts.php:317
     224#: includes/admin-prompts.php:117 includes/admin-prompts.php:146
     225#: includes/admin-prompts.php:170 includes/admin-prompts.php:180
     226#: includes/admin-prompts.php:371
    191227msgid "Prompt not found."
    192228msgstr "Prompt niet gevonden."
    193229
    194 #: includes/admin-prompts.php:87
     230#: includes/admin-prompts.php:115
    195231msgid "Prompt duplicated."
    196232msgstr "Prompt gedupliceerd."
    197233
    198 #: includes/admin-prompts.php:685
     234#: includes/admin-prompts.php:755
    199235msgid "Save Prompt"
    200236msgstr "Prompt opslaan"
    201237
    202 #: includes/admin-prompts.php:543
     238#: includes/admin-prompts.php:613
    203239msgid "Examples:"
    204240msgstr "Voorbeelden:"
    205241
    206 #: includes/admin-prompts.php:539
     242#: includes/admin-prompts.php:609
    207243msgid "Modifiers: |q (force quotes), |raw (no quotes), |trim, |lower, |upper, |ucfirst, |translatable (force translate), |untranslatable (no translate)."
    208244msgstr "Modifiers: |q (aanhalingstekens forceren), |raw (geen aanhalingstekens), |trim, |lower, |upper, |ucfirst, |translatable (vertalen forceren), |untranslatable (niet vertalen)."
    209245
    210 #: includes/admin-prompts.php:483
     246#: includes/admin-prompts.php:553
    211247msgid "Add New Prompt"
    212248msgstr "Nieuwe prompt toevoegen"
    213249
    214 #: includes/admin-prompts.php:483
     250#: includes/admin-prompts.php:553
    215251msgid "Edit Prompt"
    216252msgstr "Prompt bewerken"
    217253
    218 #: includes/admin-prompts.php:460
     254#: includes/admin-prompts.php:530
    219255msgid "No prompts added."
    220256msgstr "Geen prompts toegevoegd."
    221257
    222 #: includes/admin-prompts.php:321
     258#: includes/admin-prompts.php:375
    223259msgid "Prompt saved."
    224260msgstr "Prompt opgeslagen."
    225261
    226 #: includes/admin-prompts.php:315
     262#: includes/admin-prompts.php:369
    227263msgid "Prompt updated."
    228264msgstr "Prompt geüpdatet."
    229265
    230 #: includes/admin-prompts.php:119
     266#: includes/admin-prompts.php:167
    231267msgid "Prompt deleted."
    232268msgstr "Prompt verwijderd."
    233269
    234 #: includes/admin-prompts.php:99
     270#: includes/admin-prompts.php:144
    235271msgid "Default prompt updated."
    236272msgstr "Standaard prompt geüpdatet."
    237273
    238 #: includes/admin-prompts.php:380 includes/class-aigude-admin-ui.php:155
     274#: includes/admin-prompts.php:434 includes/class-aigude-admin-ui.php:155
    239275#: includes/class-aigude-admin-ui.php:156
    240276msgid "Prompts"
     
    247283msgstr "Instellingen"
    248284
    249 #: includes/admin-prompts.php:655 includes/admin-prompts.php:715
     285#: includes/admin-prompts.php:725 includes/admin-prompts.php:785
    250286#: includes/admin-settings.php:724 includes/admin-templates.php:249
    251287#: includes/admin-templates.php:278
     
    253289msgstr "Alle talen"
    254290
    255 #: includes/admin-prompts.php:644 includes/admin-prompts.php:714
     291#: includes/admin-prompts.php:714 includes/admin-prompts.php:784
    256292#: includes/admin-settings.php:716 includes/admin-settings.php:752
    257293#: includes/admin-templates.php:241 includes/admin-templates.php:271
     
    357393msgstr "Afbeeldingen selecteren"
    358394
    359 #: includes/list-view.php:337
     395#: includes/list-view.php:419
    360396msgid "Alternative Text"
    361397msgstr "Alternatieve tekst"
    362398
    363 #: includes/list-view.php:327
     399#: includes/list-view.php:409
    364400msgid "Continue with the current alternative text"
    365401msgstr "Ga verder met de huidige alternatieve tekst"
    366402
    367 #: includes/list-view.php:323
     403#: includes/list-view.php:405
    368404msgid "Credits"
    369405msgstr "Credits"
    370406
    371 #: includes/list-view.php:319
     407#: includes/list-view.php:401
    372408msgid "Generating"
    373409msgstr "Aan het genereren"
    374410
    375 #: includes/list-view.php:318 includes/list-view.php:320
     411#: includes/list-view.php:400 includes/list-view.php:402
    376412msgid "Generate"
    377413msgstr "Genereren"
    378414
    379 #: includes/list-view.php:312
     415#: includes/list-view.php:394
    380416msgid "Custom prompt…"
    381417msgstr "Aangepaste prompt…"
    382418
    383419#. translators: %s: the file title (post_title) of the image.
    384 #: includes/list-view.php:265
     420#: includes/list-view.php:342
    385421msgid "Generate File Metadata \"%s\""
    386422msgstr "Genereer bestand metagegevens \"%s\""
    387423
    388 #: includes/list-view.php:256
     424#: includes/list-view.php:333
    389425msgid "Open in Media Library"
    390426msgstr "Openen in mediabibliotheek"
    391427
    392428#. translators: %s: number of images on the current page.
    393 #: includes/list-view.php:224
     429#: includes/list-view.php:301
    394430msgid "Generate and save alternative text for %s images"
    395431msgstr "Alternatieve tekst genereren en opslaan voor %s afbeeldingen"
    396432
    397 #: includes/list-view.php:218 assets/js/grid-actions.js:18
     433#: includes/list-view.php:295 assets/js/grid-actions.js:18
    398434#: assets/js/list-actions.js:19
    399435msgid "Generating..."
     
    402438#. translators: %s: number of images (the %s is replaced dynamically in JS for
    403439#. the data attribute).
    404 #: includes/list-view.php:213
     440#: includes/list-view.php:290
    405441msgid "Generate and save alternative text for %s Images"
    406442msgstr "Alternatieve tekst genereren en opslaan voor %s afbeeldingen"
     
    408444#. translators: %s = site language label, e.g. "English (US)".
    409445#. translators: %s = site language label (e.g., "English (US)").
    410 #: includes/admin-prompts.php:637 includes/admin-prompts.php:713
     446#: includes/admin-prompts.php:707 includes/admin-prompts.php:783
    411447#: includes/admin-settings.php:711
    412448msgid "System (%s)"
    413449msgstr "Systeem (%s)"
    414450
    415 #: includes/list-view.php:160
     451#: includes/list-view.php:240
    416452msgid "images."
    417453msgstr "afbeeldingen."
    418454
    419 #: includes/list-view.php:158
     455#: includes/list-view.php:238
    420456msgid "Will process"
    421457msgstr "Zal verwerken"
    422458
    423 #: includes/list-view.php:154
     459#: includes/list-view.php:234
    424460msgid "Select all (across pages)"
    425461msgstr "Alles selecteren (over pagina's)"
    426462
    427 #: includes/list-view.php:150
     463#: includes/list-view.php:230
    428464msgid "Select all (this page)"
    429465msgstr "Alles selecteren (deze pagina)"
    430466
    431 #: includes/list-view.php:146
     467#: includes/list-view.php:226
    432468msgid "Skip existing"
    433469msgstr "Bestaande overslaan"
    434470
    435 #: includes/list-view.php:137
     471#: includes/list-view.php:217
    436472msgid "Per Page"
    437473msgstr "Per pagina"
    438474
    439 #: includes/list-view.php:116
     475#: includes/list-view.php:196
    440476msgid "Search"
    441477msgstr "Zoeken"
    442478
    443 #: includes/list-view.php:113
     479#: includes/list-view.php:193
    444480msgid "Search filename, title or alt-text…"
    445481msgstr "Zoek op bestandsnaam, titel of alt‑tekst…"
    446482
    447 #: includes/list-view.php:106
     483#: includes/list-view.php:186
    448484msgid "Search images"
    449485msgstr "Afbeeldingen zoeken"
    450486
    451 #: includes/list-view.php:89
     487#: includes/list-view.php:167
    452488msgid "Alt Text Generator - List view"
    453489msgstr "Alt‑tekst generator – Lijstweergave"
    454490
    455 #: includes/grid-view.php:82
     491#: includes/grid-view.php:169
    456492msgid "Generate alt text for selected"
    457493msgstr "Alt‑tekst genereren voor geselecteerden"
    458494
    459 #: includes/grid-view.php:79
     495#: includes/grid-view.php:166
    460496msgid "Select images from Media Library"
    461497msgstr "Afbeeldingen selecteren uit de mediabibliotheek"
    462498
    463 #: includes/grid-view.php:24
     499#: includes/grid-view.php:112
    464500msgid "Alt Text Generator - Grid view"
    465501msgstr "Alt‑tekst generator – Rasterweergave"
    466502
    467 #: includes/grid-view.php:10 includes/list-view.php:10
     503#: aigude-tools.php:209
    468504msgid "Describe the essential content of the picture briefly and concisely. Limit the text to a very short sentence"
    469505msgstr "Beschrijf de essentiële inhoud van de afbeelding kort en bondig. Beperk de tekst tot één zeer korte zin"
     
    477513msgstr "Template opslaan"
    478514
    479 #: includes/admin-prompts.php:685 includes/admin-templates.php:318
     515#: includes/admin-prompts.php:755 includes/admin-templates.php:318
    480516msgid "Update"
    481517msgstr "Updaten"
     
    495531msgstr "Voorbeeld:"
    496532
    497 #: includes/admin-prompts.php:540 includes/admin-templates.php:295
     533#: includes/admin-prompts.php:610 includes/admin-templates.php:295
    498534msgid "Unknown placeholders are left unchanged. Empty values become blank."
    499535msgstr "Onbekende plaatshouders worden ongewijzigd gelaten. Lege waarden worden leeg."
     
    505541#. translators: %width% and %height% are numeric image dimensions; numeric
    506542#. placeholders are not quoted.
    507 #: includes/admin-prompts.php:538 includes/admin-templates.php:293
     543#: includes/admin-prompts.php:608 includes/admin-templates.php:293
    508544msgid "Numeric placeholders like %width% and %height% are not quoted (e.g. → 1920)."
    509545msgstr "Numerieke plaatshouders zoals %width% en %height% worden niet geciteerd (bijv. → 1920)."
     
    511547#. translators: %filename_no_ext% is the filename without extension. Example
    512548#. shows automatic quoting of text placeholders.
    513 #: includes/admin-prompts.php:536 includes/admin-templates.php:291
     549#: includes/admin-prompts.php:606 includes/admin-templates.php:291
    514550msgid "Text placeholders are automatically quoted (e.g. %filename_no_ext% → \"car-photo-123\")."
    515551msgstr "Tekst plaatshouders worden automatisch geciteerd (bijv. %filename_no_ext% → \"car-photo-123\")."
     
    551587msgstr "Geen templates toegevoegd."
    552588
    553 #: includes/admin-prompts.php:456 includes/admin-templates.php:171
     589#: includes/admin-prompts.php:521 includes/admin-templates.php:171
    554590msgid "Really delete?"
    555591msgstr "Werkelijk verwijderen?"
    556592
    557 #: includes/admin-prompts.php:395 includes/admin-prompts.php:521
     593#: includes/admin-prompts.php:449 includes/admin-prompts.php:591
    558594#: includes/admin-templates.php:146 includes/admin-templates.php:222
    559 #: includes/grid-view.php:31 includes/list-view.php:167
    560 #: includes/list-view.php:279
     595#: includes/grid-view.php:121 includes/list-view.php:247
     596#: includes/list-view.php:356 assets/js/grid-actions.js:94
     597#: assets/js/list-actions.js:218
    561598msgid "Prompt"
    562599msgstr "Prompt"
    563600
    564 #: includes/admin-prompts.php:394 includes/admin-prompts.php:516
     601#: includes/admin-prompts.php:448 includes/admin-prompts.php:586
    565602#: includes/admin-templates.php:145 includes/admin-templates.php:217
    566603msgid "Title"
     
    591628msgstr "Onvoldoende machtigingen"
    592629
    593 #: includes/admin-prompts.php:456 includes/admin-server.php:394
     630#: includes/admin-prompts.php:522 includes/admin-server.php:394
    594631#: includes/admin-settings.php:490 includes/admin-templates.php:171
    595632msgid "Delete"
     
    600637msgstr "Wilt u deze server echt verwijderen?"
    601638
    602 #: includes/admin-prompts.php:454 includes/admin-server.php:391
     639#: includes/admin-prompts.php:512 includes/admin-server.php:391
    603640#: includes/admin-settings.php:487 includes/admin-templates.php:170
    604641msgid "Edit"
    605642msgstr "Bewerken"
    606643
    607 #: includes/admin-prompts.php:450 includes/admin-server.php:377
     644#: includes/admin-prompts.php:506 includes/admin-server.php:377
    608645#: includes/admin-settings.php:473 includes/admin-templates.php:166
    609646msgid "Make default"
    610647msgstr "Als standaard instellen"
    611648
    612 #: includes/admin-prompts.php:423 includes/admin-server.php:334
     649#: includes/admin-prompts.php:477 includes/admin-server.php:334
    613650#: includes/admin-settings.php:431 includes/admin-templates.php:148
    614651msgid "Actions"
     
    631668msgstr "Nieuwe server toevoegen"
    632669
    633 #: includes/admin-prompts.php:687 includes/admin-server.php:263
     670#: includes/admin-prompts.php:757 includes/admin-server.php:263
    634671#: includes/admin-server.php:318 includes/admin-settings.php:367
    635672#: includes/admin-settings.php:416 includes/admin-templates.php:321
     
    638675
    639676#: includes/admin-server.php:262 includes/admin-settings.php:366
    640 #: includes/list-view.php:340
     677#: includes/list-view.php:422
    641678msgid "Save"
    642679msgstr "Opslaan"
     
    647684msgstr "Maak dit de standaard server"
    648685
    649 #: includes/admin-prompts.php:422 includes/admin-prompts.php:448
    650 #: includes/admin-prompts.php:501 includes/admin-server.php:257
     686#: includes/admin-prompts.php:476 includes/admin-prompts.php:504
     687#: includes/admin-prompts.php:571 includes/admin-server.php:257
    651688#: includes/admin-server.php:312 includes/admin-server.php:332
    652689#: includes/admin-server.php:374 includes/admin-settings.php:361
  • aigude-tools/trunk/languages/aigude-tools-readme-de_DE.po

    r3415292 r3480099  
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-14 08:52:34+0000\n"
     5"PO-Revision-Date: 2025-12-03 10:57:31+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
     
    1414#. Short description.
    1515#, gp-priority: high
    16 msgid "Generate and manage image alt text with AI featuring bulk actions, multilingual prompts, and seamless Media Library integration."
     16msgid "Generate and manage image alt text with AI - featuring bulk actions, multilingual prompts, and seamless Media Library integration."
    1717msgstr "Alt‑Texte für Bilder mit KI erzeugen und verwalten – mit Mehrfachaktionen, mehrsprachigen Prompts und nahtloser Mediathek-Integration."
    1818
     
    2222msgstr "AiGude Tools"
    2323
     24#. Found in faq paragraph.
     25msgid "Yes. You can define custom prompts using placeholders such as <code>%filename%</code> and <code>%title%</code>. Furthermore, you can choose the translation provider for each prompt that best suits you."
     26msgstr "Ja. Du kannst eigene Prompts mit Platzhaltern wie <code>%filename%</code> und <code>%title%</code> anlegen. Außerdem kannst du für jeden Prompt den Übersetzungsanbieter wählen, der am besten passt."
     27
     28#. Found in faq paragraph.
     29msgid "All languages supported by DeepL and Google Translate. We offer translations into 190+ languages, including regional variants."
     30msgstr "Alle Sprachen, die DeepL und Google Translate unterstützen. Wir bieten Übersetzungen in über 190 Sprachen, einschließlich regionaler Varianten."
     31
     32#. Found in description paragraph.
     33msgid "To use the plugin you’ll need an AiGude API key - grab one for free at <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     34msgstr "Für die Nutzung des Plugins brauchst du einen AiGude-API-Schlüssel - hol dir kostenlos einen auf <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     35
     36#. Found in description paragraph.
     37msgid "Want to try it? <a href=\"https://aigude.io/en/Try-It/\">Visit our live demo.</a>"
     38msgstr "Du willst es ausprobieren? <a href=\"https://aigude.io/en/Try-It/\">Schau dir unsere Live-Demo an.</a>"
     39
     40#. Found in description list item.
     41msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, in one place."
     42msgstr "<strong>Einstellungen</strong> – API-Schlüssel verwalten und verbleibende Credits an einem Ort einsehen."
     43
     44#. Screenshot description.
     45msgid "Edit Prompt"
     46msgstr "Prompt bearbeiten"
     47
     48#. Screenshot description.
     49msgid "Prompts"
     50msgstr "Prompts"
     51
    2452#. Found in description paragraph.
    2553msgid "<strong>Google Cloud Translation API</strong>"
     
    6391
    6492#. Found in description list item.
    65 msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google Cloud Translation with one click."
    66 msgstr "<strong>Mehrsprachige Unterstützung</strong> – Prompts und Alt‑Texte mit einem Klick über DeepL oder Google Cloud Translation übersetzen."
     93msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google with one click."
     94msgstr "<strong>Mehrsprachigkeit</strong> – Prompts und Alt‑Texte per Klick über DeepL oder Google übersetzen."
    6795
    6896#. Found in description header.
     
    7199
    72100#. Found in faq paragraph.
    73 msgid "All languages supported by DeepL (including variants such as EN-GB/EN-US and PT-PT/PT-BR). Your site’s language is offered as a “System” default."
    74 msgstr "Alle von DeepL unterstützten Sprachen (einschließlich Varianten wie EN-GB/EN-US und PT-PT/PT-BR). Die Sprache deiner Website wird als „System“-Standard angeboten."
    75 
    76 #. Found in faq paragraph.
    77 msgid "Yes — an AiGude API key is required. Get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
    78 msgstr "Ja — ein AiGude-API-Schlüssel ist erforderlich. Du erhältst kostenlos einen unter <a href=\"https://aigude.io\">AiGude.io</a>."
     101msgid "Yes - an AiGude API key is required. Get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
     102msgstr "Ja - ein AiGude-API-Schlüssel ist erforderlich. Du erhältst kostenlos einen unter <a href=\"https://aigude.io\">AiGude.io</a>."
    79103
    80104#. Found in description paragraph.
     
    94118msgstr "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude-FAQ (Deutsch)</a>"
    95119
    96 #. Found in description paragraph.
    97 msgid "Note: An AiGude API key is required; get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
    98 msgstr "Hinweis: Ein AiGude-API-Schlüssel ist erforderlich; du erhältst kostenfrei einen unter <a href=\"https://aigude.io\">AiGude.io</a>."
    99 
    100 #. Found in faq paragraph.
    101 msgid "Yes. You can define custom prompt templates using placeholders such as <code>%filename%</code>, <code>%title%</code>, and <code>%description%</code>."
    102 msgstr "Ja. Du kannst individuelle Prompt‑Vorlagen mit Platzhaltern wie <code>%filename%</code>, <code>%title%</code> und <code>%description%</code> definieren."
    103 
    104120#. Found in faq paragraph.
    105121msgid "Only if you choose. You can skip existing alt texts or overwrite them with new ones."
     
    149165msgid ""
    150166"<strong>AiGude Tools</strong> improves accessibility and SEO by automatically generating alternative text for your images using an AI-powered API.\n"
    151 "Save time, stay consistent, and enhance your site’s visibility in search engines all without manually writing every alt text."
     167"Save time, stay consistent, and enhance your site’s visibility in search engines - all without manually writing every alt text."
    152168msgstr ""
    153169"<strong>AiGude Tools</strong> verbessert Barrierefreiheit und SEO, indem Alternativtexte für deine Bilder automatisch über eine KI‑gestützte API generiert werden.\n"
    154 "Spare Zeit, bleib konsistent und erhöhe die Sichtbarkeit deiner Website in Suchmaschinen ohne jeden Alt‑Text manuell zu schreiben."
     170"Spare Zeit, bleib konsistent und erhöhe die Sichtbarkeit deiner Website in Suchmaschinen - ohne jeden Alt‑Text manuell zu schreiben."
    155171
    156172#. Found in description list item.
     
    167183
    168184#. Found in description list item.
    169 msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, and pick translation providers in one place."
    170 msgstr "<strong>Einstellungen</strong> – API-Schlüssel verwalten, verbleibende Credits ansehen und Übersetzungsanbieter an einem Ort auswählen."
    171 
    172 #. Found in description list item.
    173 msgid "Hover tooltips reveal generated alt text at a glance"
    174 msgstr "Tooltips bei Mauszeigerkontakt zeigen erzeugte Alt‑Texte auf einen Blick"
    175 
    176 #. Found in description list item.
    177185msgid "Mini-grid shows your current selection"
    178186msgstr "Mini‑Raster zeigt deine aktuelle Auswahl"
     
    187195
    188196#. Found in description list item.
    189 msgid "Select prompt templates and target languages for single or bulk actions"
    190 msgstr "Prompt‑Vorlagen und Zielsprachen für Einzel‑ oder Mehrfachaktionen auswählen"
     197msgid "Select prompts with target languages for single or bulk actions"
     198msgstr "Prompts mit Zielsprachen für Einzel- oder Mehrfachaktionen auswählen"
    191199
    192200#. Found in description list item.
     
    228236#. Found in changelog list item.
    229237#, gp-priority: low
     238msgid "New built-in default prompt applied across list/grid views."
     239msgstr "Neuer integrierter Standard-Prompt wird in Listen- und Rasteransicht verwendet."
     240
     241#. Found in changelog list item.
     242#, gp-priority: low
     243msgid "Prompts in views grouped by provider, with tooltips and “Edit in Prompts” quick access."
     244msgstr "Prompts in den Ansichten nach Anbieter gruppiert, mit Tooltips und Schnellzugriff „In Prompts bearbeiten“."
     245
     246#. Found in changelog list item.
     247#, gp-priority: low
    230248msgid "Updated Prompts to support target languages across all translation providers."
    231249msgstr "Prompts aktualisiert, damit Zielsprachen bei allen Übersetzungsanbietern unterstützt werden."
  • aigude-tools/trunk/languages/aigude-tools-readme-de_DE_formal.po

    r3415292 r3480099  
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-14 08:52:34+0000\n"
     5"PO-Revision-Date: 2025-12-03 11:00:00+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
     
    2222msgstr "AiGude Tools"
    2323
     24#. Found in faq paragraph.
     25msgid "Yes. You can define custom prompts using placeholders such as <code>%filename%</code> and <code>%title%</code>. Furthermore, you can choose the translation provider for each prompt that best suits you."
     26msgstr "Ja. Sie können eigene Prompts mit Platzhaltern wie <code>%filename%</code> und <code>%title%</code> anlegen. Außerdem können Sie für jeden Prompt den Übersetzungsanbieter auswählen, der am besten passt."
     27
     28#. Found in faq paragraph.
     29msgid "All languages supported by DeepL and Google Translate. We offer translations into 190+ languages, including regional variants."
     30msgstr "Alle Sprachen, die DeepL und Google Translate unterstützen. Wir bieten Übersetzungen in über 190 Sprachen, einschließlich regionaler Varianten."
     31
     32#. Found in description paragraph.
     33msgid "To use the plugin you’ll need an AiGude API key — grab one for free at <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     34msgstr "Für die Nutzung des Plugins benötigen Sie einen AiGude-API-Schlüssel — holen Sie sich kostenlos einen auf <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     35
     36#. Found in description paragraph.
     37msgid "Want to try it? <a href=\"https://aigude.io/en/Try-It/\">Visit our live demo.</a>"
     38msgstr "Möchten Sie es ausprobieren? <a href=\"https://aigude.io/en/Try-It/\">Besuchen Sie unsere Live-Demo.</a>"
     39
     40#. Found in description list item.
     41msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, in one place."
     42msgstr "<strong>Einstellungen</strong> – API-Schlüssel verwalten und verbleibende Guthaben an einem Ort einsehen."
     43
     44#. Screenshot description.
     45msgid "Edit Prompt"
     46msgstr "Prompt bearbeiten"
     47
     48#. Screenshot description.
     49msgid "Prompts"
     50msgstr "Prompts"
     51
    2452#. Found in description paragraph.
    2553msgid "<strong>Google Cloud Translation API</strong>"
     
    6391
    6492#. Found in description list item.
    65 msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google Cloud Translation with one click."
    66 msgstr "<strong>Mehrsprachige Unterstützung</strong> – Prompts und Alt‑Texte mit einem Klick über DeepL oder Google Cloud Translation übersetzen."
     93msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google with one click."
     94msgstr "<strong>Mehrsprachigkeit</strong> – Prompts und Alt‑Texte per Klick über DeepL oder Google übersetzen."
    6795
    6896#. Found in description header.
    6997msgid "Data Processing and Privacy"
    7098msgstr "Datenverarbeitung und Datenschutz"
    71 
    72 #. Found in faq paragraph.
    73 msgid "All languages supported by DeepL (including variants such as EN-GB/EN-US and PT-PT/PT-BR). Your site’s language is offered as a “System” default."
    74 msgstr "Alle von DeepL unterstützten Sprachen (einschließlich Varianten wie EN-GB/EN-US und PT-PT/PT-BR). Die Sprache Ihrer Website wird als „System“-Standard angeboten."
    7599
    76100#. Found in faq paragraph.
     
    94118msgstr "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude-FAQ (Deutsch)</a>"
    95119
    96 #. Found in description paragraph.
    97 msgid "Note: An AiGude API key is required; get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
    98 msgstr "Hinweis: Ein AiGude-API-Schlüssel ist erforderlich; Sie erhalten kostenfrei einen unter <a href=\"https://aigude.io\">AiGude.io</a>."
    99 
    100 #. Found in faq paragraph.
    101 msgid "Yes. You can define custom prompt templates using placeholders such as <code>%filename%</code>, <code>%title%</code>, and <code>%description%</code>."
    102 msgstr "Ja. Sie können individuelle Prompt‑Vorlagen mit Platzhaltern wie <code>%filename%</code>, <code>%title%</code> und <code>%description%</code> definieren."
    103 
    104120#. Found in faq paragraph.
    105121msgid "Only if you choose. You can skip existing alt texts or overwrite them with new ones."
     
    167183
    168184#. Found in description list item.
    169 msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, and pick translation providers in one place."
    170 msgstr "<strong>Einstellungen</strong> – API-Schlüssel verwalten, verbleibende Credits ansehen und Übersetzungsanbieter an einem Ort auswählen."
    171 
    172 #. Found in description list item.
    173 msgid "Hover tooltips reveal generated alt text at a glance"
    174 msgstr "Tooltips bei Mauszeigerkontakt zeigen erzeugte Alt‑Texte auf einen Blick"
    175 
    176 #. Found in description list item.
    177185msgid "Mini-grid shows your current selection"
    178186msgstr "Mini‑Raster zeigt Ihre aktuelle Auswahl"
     
    187195
    188196#. Found in description list item.
    189 msgid "Select prompt templates and target languages for single or bulk actions"
    190 msgstr "Prompt‑Vorlagen und Zielsprachen für Einzel‑ oder Mehrfachaktionen auswählen"
     197msgid "Select prompts with target languages for single or bulk actions"
     198msgstr "Prompts mit Zielsprachen für Einzel- oder Mehrfachaktionen auswählen."
    191199
    192200#. Found in description list item.
     
    228236#. Found in changelog list item.
    229237#, gp-priority: low
     238msgid "New built-in default prompt applied across list/grid views."
     239msgstr "Neuer integrierter Standard-Prompt wird in Listen- und Rasteransicht verwendet."
     240
     241#. Found in changelog list item.
     242#, gp-priority: low
     243msgid "Prompts in views grouped by provider, with tooltips and “Edit in Prompts” quick access."
     244msgstr "Prompts in den Ansichten nach Anbieter gruppiert, mit Tooltips und Schnellzugriff „In Prompts bearbeiten“."
     245
     246#. Found in changelog list item.
     247#, gp-priority: low
    230248msgid "Updated Prompts to support target languages across all translation providers."
    231249msgstr "Prompts aktualisiert, damit Zielsprachen bei allen Übersetzungsanbietern unterstützt werden."
  • aigude-tools/trunk/languages/aigude-tools-readme-nl_NL.po

    r3408170 r3480099  
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-07 21:30:46+0000\n"
     5"PO-Revision-Date: 2025-12-09 15:44:50+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    99"Plural-Forms: nplurals=2; plural=n != 1;\n"
    10 "X-Generator: GlotPress/4.0.1\n"
     10"X-Generator: GlotPress/4.0.3\n"
    1111"Language: nl\n"
    1212"Project-Id-Version: Plugins - AiGude Tools - Stable Readme (latest release)\n"
     
    2323
    2424#. Found in faq paragraph.
    25 msgid "All languages supported by DeepL (including variants such as EN-GB/EN-US and PT-PT/PT-BR). Your site’s language is offered as a “System” default."
    26 msgstr "Alle talen die door DeepL worden ondersteund (inclusief varianten zoals EN-GB/EN-US en PT-PT/PT-BR). De taal van je site wordt aangeboden als \"Systeem\"-standaardinstelling."
     25msgid "Yes. You can define custom prompts using placeholders such as <code>%filename%</code> and <code>%title%</code>. Furthermore, you can choose the translation provider for each prompt that best suits you."
     26msgstr "Ja. Je kunt eigen prompts maken met plaatshouders zoals <code>%filename%</code> en <code>%title%</code>. Daarnaast kun je per prompt de vertaalprovider kiezen die het beste past."
     27
     28#. Found in faq paragraph.
     29msgid "All languages supported by DeepL and Google Translate. We offer translations into 190+ languages, including regional variants."
     30msgstr "Alle talen die DeepL en Google Translate ondersteunen. We bieden vertalingen in meer dan 190 talen, inclusief regionale varianten."
     31
     32#. Found in description paragraph.
     33msgid "To use the plugin you’ll need an AiGude API key — grab one for free at <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     34msgstr "Om de plugin te gebruiken heb je een AiGude API-sleutel nodig — vraag er gratis een aan op <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     35
     36#. Found in description paragraph.
     37msgid "Want to try it? <a href=\"https://aigude.io/en/Try-It/\">Visit our live demo.</a>"
     38msgstr "Wil je het proberen? <a href=\"https://aigude.io/en/Try-It/\">Bezoek onze live demo.</a>"
     39
     40#. Found in description list item.
     41msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, in one place."
     42msgstr "<strong>Instellingen</strong> – API-sleutels beheren en resterende tegoeden op één plek bekijken."
     43
     44#. Screenshot description.
     45msgid "Edit Prompt"
     46msgstr "Prompt bewerken"
     47
     48#. Screenshot description.
     49msgid "Prompts"
     50msgstr "Prompts"
     51
     52#. Found in description paragraph.
     53msgid "<strong>Google Cloud Translation API</strong>"
     54msgstr "<strong>Google Cloud Translation API</strong>"
     55
     56#. Found in description paragraph.
     57msgid "<strong>DeepL API</strong>"
     58msgstr "<strong>DeepL API</strong>"
     59
     60#. Found in description paragraph.
     61msgid "Translations may be performed via the <strong>DeepL API</strong> or the <strong>Google Cloud Translation API</strong>, depending on your configuration."
     62msgstr "Vertalingen kunnen worden uitgevoerd via de <strong>DeepL API</strong> of de <strong>Google Cloud Translation API</strong>, afhankelijk van je configuratie."
     63
     64#. Found in description list item.
     65msgid "For more information on how Google handles translation data, see Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
     66msgstr "Voor meer informatie over hoe Google vertaalgegevens verwerkt, zie Google's <a href=\"https://cloud.google.com/translate/data-usage\">Veelgestelde vragen over gegevensgebruik</a>."
     67
     68#. Found in description list item.
     69msgid "We use the Google Cloud Translation API v3 with the dedicated EU endpoint <code>translate-eu.googleapis.com</code>; see Google’s <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpoint documentation</a> for details."
     70msgstr "We gebruiken de Google Cloud Translation API v3 met het speciale EU endpoint <code>translate-eu.googleapis.com</code>; zie Google's <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpoint documentatie</a> voor details."
     71
     72#. Found in description list item.
     73msgid "Only the text to be translated and the selected language parameters are transmitted to Google."
     74msgstr "Alleen de tekst die moet worden vertaald en de geselecteerde taalparameters worden naar Google verzonden."
     75
     76#. Found in description list item.
     77msgid "For details, see the <a href=\"https://www.deepl.com/privacy\">DeepL Privacy Policy</a>."
     78msgstr "Voor details, zie het <a href=\"https://www.deepl.com/privacy\">DeepL privacybeleid</a>."
     79
     80#. Found in description list item.
     81msgid "DeepL is headquartered in Germany and operates under EU GDPR standards."
     82msgstr "DeepL is gevestigd in Duitsland en opereert volgens EU AVG/GDPR normen."
     83
     84#. Found in description list item.
     85msgid "Only the text to be translated and the selected language parameters are transmitted to DeepL."
     86msgstr "Alleen de tekst die moet worden vertaald en de geselecteerde taalparameters worden naar deepL verzonden."
     87
     88#. Found in description list item.
     89msgid "<strong>Prompts</strong> – Create template-driven prompts with placeholders (e.g., <code>%filename%</code>, <code>%title%</code>) and lock provider-specific target languages."
     90msgstr "<strong>Prompts</strong> – maak templategestuurde prompts met plaatshouders (bijv. <code>%filename%</code>, <code>%title%</code>) en vergrendel providerspecifieke doeltalen."
     91
     92#. Found in description list item.
     93msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google with one click."
     94msgstr "<strong>Meertalige ondersteuning</strong> – Vertaal prompts en alt-teksten via DeepL of Google met één klik."
     95
     96#. Found in description header.
     97msgid "Data Processing and Privacy"
     98msgstr "Gegevensverwerking en privacy"
    2799
    28100#. Found in faq paragraph.
     
    32104#. Found in description paragraph.
    33105msgid ""
    34 "Links:\n"
    35 "- <a href=\"https://aigude.io/Informationen/Datenschutz\">Privacy Policy</a>\n"
    36 "- <a href=\"https://aigude.io/Informationen/AGB\">Terms of Service</a>\n"
     106"Privacy Info:\n"
     107"- <a href=\"https://aigude.io/Informationen/Datenschutz\">AiGude Privacy Policy</a>\n"
     108"- <a href=\"https://aigude.io/Informationen/AGB\">AiGude Terms of Service</a>\n"
    37109"- <a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (German)</a>"
    38110msgstr ""
    39 "Links:\n"
    40 "- <a href=\"https://aigude.io/Informationen/Datenschutz\">Privacybeleid</a>\n"
    41 "- <a href=\"https://aigude.io/Informationen/AGB\">Servicevoorwaarden</a>\n"
     111"Privacy info:\n"
     112"- <a href=\"https://aigude.io/Informationen/Datenschutz\">AiGude privacybeleid</a> \n"
     113"- <a href=\"https://aigude.io/Informationen/AGB\">AiGude dienstvoorwaarden</a>\n"
    42114"- <a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (Duits)</a>"
    43115
     
    45117msgid "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (German)</a>"
    46118msgstr "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (Duits)</a>"
    47 
    48 #. Found in description paragraph.
    49 msgid "Note: An AiGude API key is required; get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
    50 msgstr "Let op: een AiGude API‑sleutel is vereist; vraag er gratis een aan via <a href=\"https://aigude.io\">AiGude.io</a>."
    51 
    52 #. Found in description list item.
    53 msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google Cloud Translation with one click."
    54 msgstr "<strong>Meertalige ondersteuning</strong> – Vertaal prompts en alt‑teksten met één klik via DeepL of Google Cloud Translation."
    55 
    56 #. Found in description list item.
    57 msgid "Prompt and alt‑text translation in all DeepL‑supported languages (e.g., English, German, Spanish, French, Italian, Portuguese [PT-PT/PT-BR], Dutch, Polish, Russian, Chinese, Japanese, Korean, Swedish, Danish, Norwegian [NB], Finnish, Greek, Turkish, Ukrainian, Romanian, Czech, Slovak, Slovenian, Lithuanian, Latvian, Estonian, Bulgarian, Indonesian, Arabic)"
    58 msgstr "Vertaling van prompts en alt‑teksten in alle door DeepL ondersteunde talen (bijv. Engels, Duits, Spaans, Frans, Italiaans, Portugees [PT-PT/PT-BR], Nederlands, Pools, Russisch, Chinees, Japans, Koreaans, Zweeds, Deens, Noors [NB], Fins, Grieks, Turks, Oekraïens, Roemeens, Tsjechisch, Slowaaks, Sloveens, Litouws, Lets, Ests, Bulgaars, Indonesisch, Arabisch)"
    59 
    60 #. Found in description paragraph.
    61 msgid ""
    62 "2) Translation\n"
    63 "   - Sent: only text strings that require translation (e.g., parts of your prompt or generated text), the target language code, and your API key.\n"
    64 "   - Purpose: to translate text for accessibility/SEO; handled server‑side."
    65 msgstr ""
    66 "2) Vertaling\n"
    67 "   – Verzonden: alleen tekst strings die vertaald moeten worden (bijv. delen van je prompt of gegenereerde tekst), de doeltaalcode en je API‑sleutel.\n"
    68 "   – Doel: tekst vertalen voor toegankelijkheid/SEO; server‑side afgehandeld."
    69 
    70 #. Found in description paragraph.
    71 msgid "This plugin connects to AiGude’s captioning service to generate and (where applicable) translate image alternative text."
    72 msgstr "Deze plugin maakt verbinding met de vastlegging dienst van AiGude om alternatieve tekst (alt‑tekst) voor afbeeldingen te genereren en, waar van toepassing, te vertalen."
    73 
    74 #. Found in faq paragraph.
    75 msgid "Yes. You can define custom prompt templates using placeholders such as <code>%filename%</code>, <code>%title%</code>, and <code>%description%</code>."
    76 msgstr "Ja. Je kunt aangepaste prompt templates definiëren met plaatshouders zoals <code>%filename%</code>, <code>%title%</code>, en <code>%description%</code> (beschrijving)."
    77119
    78120#. Found in faq paragraph.
     
    110152#. Found in installation list item.
    111153msgid "Upload the plugin files to <code>/wp-content/plugins/aigude-tools</code>, or install it directly from the WordPress plugin directory."
    112 msgstr "Upload de plugin-bestanden naar <code>/wp-content/plugins/aigude-tools</code>, of installeer de plugin rechtstreeks vanuit de WordPress plugin directory."
    113 
    114 #. Found in description paragraph.
    115 msgid "On multisite, the uninstaller runs for every site in the network."
    116 msgstr "Op een multisite netwerk wordt de de-installatie voor elke site in het netwerk uitgevoerd."
    117 
    118 #. Found in description paragraph.
    119 msgid ""
    120 "This plugin ships with an <code>uninstall.php</code> to remove its data when you uninstall it from WordPress.\n"
    121 "It deletes:\n"
    122 "- Options: <code>aigude_alt_servers</code>, <code>aigude_target_language</code>\n"
    123 "- Attachment meta starting with <code>_aigude_alt_</code> (e.g., <code>_aigude_alt_suggestion</code>)."
    124 msgstr ""
    125 "Deze plugin wordt geleverd met een <code>uninstall.php</code> om gegevens te verwijderen wanneer je deze vanuit WordPress deïnstalleert.\n"
    126 "Daarmee worden verwijderd:\n"
    127 "- Opties: <code>aigude_alt_servers</code>, <code>aigude_target_language</code>\n"
    128 "- Metagegevens van bijlagen die beginnen met <code>_aigude_alt_</code> (bijv. <code>_aigude_alt_suggestion</code>)."
    129 
    130 #. Found in description paragraph.
    131 msgid "All requests are made over HTTPS."
    132 msgstr "Alle aanvragen worden via HTTPS verstuurd."
    133 
    134 #. Found in description paragraph.
    135 msgid ""
    136 "3) Remaining credits (<code>remaining_credits</code>)\n"
    137 "   - Sent: your API key.\n"
    138 "   - Purpose: to display remaining credits in the admin screen."
    139 msgstr ""
    140 "3) Resterende credits (<code>remaining_credits</code>)\n"
    141 "   – Verzonden: je API‑sleutel.\n"
    142 "   – Doel: de resterende credits weergeven in het beheerscherm."
    143 
    144 #. Found in description paragraph.
    145 msgid ""
    146 "1) Alt‑text generation\n"
    147 "   - Sent: a resized copy of the selected image file, your prompt template (text), selected target language code, and your API key.\n"
    148 "   - Purpose: to produce a caption/alt text for accessibility and SEO.\n"
    149 "   - Not sent: WordPress user emails, passwords, or front-end visitor data."
    150 msgstr ""
    151 "1) Genereren van alt‑teksten\n"
    152 "   – Verzonden: een verkleinde kopie van het geselecteerde afbeeldingsbestand, je prompttemplate (tekst), de gekozen doeltaalcode en je API‑sleutel.\n"
    153 "   – Doel: een bijschrift/alt‑tekst produceren voor toegankelijkheid en SEO.\n"
    154 "   – Niet verzonden: e-mails van WordPress-gebruikers, wachtwoorden of gegevens van front-endbezoekers."
    155 
    156 #. Found in description paragraph.
    157 msgid "The plugin only sends data when an administrator performs an action in wp-admin (e.g., “Generate” or “Translate”), or when the admin explicitly clicks “Get Credits”."
    158 msgstr "De plugin verzendt alleen gegevens wanneer een beheerder een handeling uitvoert in wp‑admin (bijv. ‘Genereren’ of ‘Vertalen’), of wanneer de beheerder expliciet op ‘Credits ophalen’ klikt."
     154msgstr "Upload de plugin bestanden naar <code>/wp-content/plugins/aigude-tools</code>, of installeer de plugin rechtstreeks vanuit de WordPress plugin directory."
     155
     156#. Found in description paragraph.
     157msgid "This plugin connects to AiGude’s captioning service to generate and translate image alternative text."
     158msgstr "Deze plugin maakt verbinding met de captioning dienst van AiGude om alternatieve tekst voor afbeeldingen te genereren en te vertalen."
    159159
    160160#. Found in description paragraph.
    161161msgid "Perfect for website owners, photographers, agencies, and content teams who want to improve accessibility and SEO without hours of manual work."
    162 msgstr "Perfect voor site-eigenaren, fotografen, bureaus en inhoudsteams die de toegankelijkheid en SEO willen verbeteren zonder uren handmatig werk."
     162msgstr "Perfect voor site‑eigenaren, fotografen, bureaus en contentteams die de toegankelijkheid en SEO willen verbeteren zonder uren handmatig werk."
    163163
    164164#. Found in description paragraph.
     
    171171
    172172#. Found in description list item.
    173 msgid "AiGude acts as a processor for the limited purpose of generating/translation results."
    174 msgstr "AiGude treedt op als verwerker voor het beperkte doel van het genereren/vertalen van resultaten."
    175 
    176 #. Found in description list item.
    177 msgid "Site administrators act as data controllers for the content they send (e.g., images that could include personal data)."
    178 msgstr "Sitebeheerders zijn de verwerkingsverantwoordelijken voor de inhoud die zij verzenden (bijv. afbeeldingen die persoonsgegevens kunnen bevatten)."
    179 
    180 #. Found in description list item.
    181 msgid "Translations may be performed via the <strong>DeepL API</strong> or the <strong>Google Cloud Translation API</strong>, depending on your configuration."
    182 msgstr "Vertalingen kunnen, afhankelijk van je configuratie, plaatsvinden via de <strong>DeepL API</strong> of de <strong>Google Cloud Translation API</strong>."
    183 
    184 #. Found in description list item.
    185 msgid "Only the text to be translated and language parameters are transmitted to DeepL. Processing occurs on DeepL’s infrastructure. See the <a href=\"https://www.deepl.com/privacy\">DeepL Privacy Policy</a>."
    186 msgstr "Alleen de te vertalen tekst en taalparameters worden naar DeepL verzonden. De verwerking vindt plaats op de infrastructuur van DeepL. Zie het <a href=\"https://www.deepl.com/privacy\">privacybeleid van DeepL</a>."
    187 
    188 #. Found in description list item.
    189 msgid "We use the Google Cloud Translation API v3 with the dedicated EU endpoint <code>translate-eu.googleapis.com</code>; see Google’s <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpoint documentation</a> for details."
    190 msgstr "We gebruiken de Google Cloud Translation API v3 met het speciale EU-endpoint <code>translate-eu.googleapis.com</code>; zie de <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpointdocumentatie</a> van Google voor details."
    191 
    192 msgid "For more information on how Google handles translation data, see Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
    193 msgstr "Meer informatie over hoe Google vertaalgegevens verwerkt, vind je in Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
    194 
    195 #. Found in description list item.
    196173msgid "Alt-text generation is performed on AiGude–managed infrastructure located in the European Union. Image files are sent over HTTPS to this infrastructure. No third-party vendors are used for alt-text generation."
    197174msgstr "Het genereren van alt‑teksten gebeurt op door AiGude beheerde infrastructuur in de Europese Unie. Afbeeldingsbestanden worden via HTTPS naar deze infrastructuur verzonden. Voor het genereren van alt‑teksten worden geen externe leveranciers gebruikt."
    198175
    199176#. Found in description list item.
    200 msgid "<code>_aigude_alt_suggestion</code> (last generated suggestion)"
    201 msgstr "<code>_aigude_alt_suggestion</code> (laatst gegenereerde suggestie)"
    202 
    203 #. Found in description list item.
    204 msgid "<code>_wp_attachment_image_alt</code> (final alt text)"
    205 msgstr "<code>_wp_attachment_image_alt</code> (definitieve alt‑tekst)"
    206 
    207 #. Found in description list item.
    208 msgid "The plugin stores generated results locally in WordPress as attachment meta:"
    209 msgstr "De plugin slaat gegenereerde resultaten lokaal op in WordPress als metagegevens van bijlagen:"
    210 
    211 #. Found in description list item.
    212177msgid "We do <strong>not</strong> store images after processing; they are held only in memory long enough to generate a response."
    213 msgstr "Wij slaan afbeeldingen <strong>niet</strong> op na de verwerking; zij blijven slechts in het geheugen zolang dat nodig is om een reactie te genereren."
     178msgstr "We slaan <strong>geen</strong> afbeeldingen op na verwerking; ze worden alleen in het geheugen gehouden, lang genoeg om een reactie te genereren."
    214179
    215180#. Found in description list item.
     
    218183
    219184#. Found in description list item.
    220 msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, and pick translation providers in one place."
    221 msgstr "<strong>Instellingen</strong> – Beheer je API-sleutels, bekijk resterende credits en kies vertaalproviders op één plek."
    222 
    223 #. Found in description list item.
    224 msgid "<strong>Prompts</strong> – Create template-driven prompts with placeholders (e.g., <code>%filename%</code>, <code>%title%</code>) and lock provider-specific target languages."
    225 msgstr "<strong>Prompts</strong> – Maak sjabloon-gestuurde prompts met placeholders (bijv. <code>%filename%</code>, <code>%title%</code>) en vergrendel providerspecifieke doeltalen."
    226 
    227 #. Found in description list item.
    228 msgid "Hover tooltips reveal generated alt text at a glance"
    229 msgstr "Over tooltips hoveren toont gegenereerde alt-tekst in één oogopslag"
    230 
    231 #. Found in description list item.
    232185msgid "Mini-grid shows your current selection"
    233 msgstr "Miniraster toont je huidige selectie"
     186msgstr "Mini raster toont je huidige selectie"
    234187
    235188#. Found in description list item.
     
    242195
    243196#. Found in description list item.
    244 msgid "Select prompt templates and target languages for single or bulk actions"
    245 msgstr "Selecteer prompt templates en doeltalen voor individuele of bulkacties"
     197msgid "Select prompts with target languages for single or bulk actions"
     198msgstr "Selecteer prompts met doeltalen voor enkele of bulkacties"
    246199
    247200#. Found in description list item.
     
    268221msgid "<strong>AI-Powered Alt Text</strong> – Automatically generate descriptive alt text for your images using advanced AI."
    269222msgstr "<strong>AI‑gestuurde alt‑tekst</strong> – Genereer automatisch beschrijvende alt‑tekst voor je afbeeldingen met geavanceerde AI."
    270 
    271 #. Found in description list item.
    272 msgid "Servers - API key and credit usage management in the Server settings  "
    273 msgstr "Servers – beheer van API‑sleutel en credit verbruik in de serverinstellingen  "
    274 
    275 #. Found in description list item.
    276 msgid "Templates - Customizable prompt templates with placeholders (e.g. <code>%filename%</code>, <code>%title%</code>)  "
    277 msgstr "Templates - Aanpasbare prompt templates met plaatshouders (bijv. <code>%filename%</code>, <code>%title%</code>)  "
    278 
    279 #. Found in description list item.
    280 msgid "Hover over images to view the generated alt text in tooltips."
    281 msgstr "Over afbeeldingen hoveren om de gegenereerde alt‑tekst in tooltips te bekijken."
    282 
    283 #. Found in description list item.
    284 msgid "See a mini grid of your current selection."
    285 msgstr "Bekijk een mini‑raster van je huidige selectie."
    286 
    287 #. Found in description list item.
    288 msgid "Grid View — Select multiple images directly from the Media Library and generate alt text for all of them at once."
    289 msgstr "Rasterweergave — Selecteer meerdere afbeeldingen rechtstreeks vanuit de Mediabibliotheek en genereer in één keer alt‑tekst voor alle geselecteerde items."
    290 
    291 #. Found in description list item.
    292 msgid "Choose a prompt template and target language for single or bulk generation."
    293 msgstr "Kies een prompt template en doeltaal voor individuele of bulk generatie."
    294 
    295 #. Found in description list item.
    296 msgid "Preview and edit generated text for a single image before saving."
    297 msgstr "Bekijk een voorbeeld en bewerk de gegenereerde tekst voor één afbeelding voordat je opslaat."
    298 
    299 #. Found in description list item.
    300 msgid "Option to skip existing alt text."
    301 msgstr "Optie om bestaande alt‑tekst over te slaan."
    302 
    303 #. Found in description list item.
    304 msgid "Bulk-generate alt text for selected images (per page or across pages)."
    305 msgstr "Genereer alt‑tekst in bulk voor geselecteerde afbeeldingen (per pagina of over meerdere pagina's)."
    306 
    307 #. Found in description list item.
    308 msgid "List View — Displays image cards that match your search filters."
    309 msgstr "Lijstweergave — Toont afbeeldingskaarten die aan je zoekfilters voldoen."
    310 
    311 #. Found in description list item.
    312 msgid "Automatic alt text generation for images using AI"
    313 msgstr "Automatische generatie van alt‑tekst voor afbeeldingen met AI"
    314 
    315 #. Found in description header.
    316 msgid "Uninstall and Data Deletion"
    317 msgstr "De-installeren en gegevensverwijdering"
    318 
    319 #. Found in description header.
    320 msgid "Legal Basis / Controller"
    321 msgstr "Juridische grondslag / verwerkingsverantwoordelijke"
    322 
    323 
    324 #. Found in description header.
    325 msgid "What Data Is Sent and When"
    326 msgstr "Welke gegevens worden wanneer verzonden"
    327 
    328223
    329224#. Found in description header.
     
    341236#. Found in changelog list item.
    342237#, gp-priority: low
     238msgid "New built-in default prompt applied across list/grid views."
     239msgstr "Nieuwe ingebouwde standaardprompt toegepast in lijst- en rasterweergave."
     240
     241#. Found in changelog list item.
     242#, gp-priority: low
     243msgid "Prompts in views grouped by provider, with tooltips and “Edit in Prompts” quick access."
     244msgstr "Prompts in weergaven gegroepeerd per provider, met tooltips en snelkoppeling \"Bewerken in Prompts\"."
     245
     246#. Found in changelog list item.
     247#, gp-priority: low
     248msgid "Updated Prompts to support target languages across all translation providers."
     249msgstr "Geüpdatete prompts ter ondersteuning van doeltalen voor alle vertaalproviders."
     250
     251#. Found in changelog list item.
     252#, gp-priority: low
     253msgid "Added Google Cloud Translation as an additional translation provider."
     254msgstr "Google Cloud Translation toegevoegd als een extra vertaalprovider."
     255
     256#. Found in changelog list item.
     257#, gp-priority: low
     258msgid "Added detailed explanations for all placeholder modifiers used in Prompts."
     259msgstr "Gedetailleerde uitleg toegevoegd voor alle plaatshouder modifiers die in prompts worden gebruikt."
     260
     261#. Found in changelog list item.
     262#, gp-priority: low
     263msgid "Renamed the Server section to Settings."
     264msgstr "Server sectie hernoemd naar Instellingen."
     265
     266#. Found in changelog list item.
     267#, gp-priority: low
     268msgid "Renamed the Templates section to Prompts."
     269msgstr "Templates sectie hernoemd naar Prompts."
     270
     271#. Found in changelog list item.
     272#, gp-priority: low
     273msgid "Docs: Updated readme links"
     274msgstr "Docs: readme links geüpdatet"
     275
     276#. Found in changelog list item.
     277#, gp-priority: low
     278msgid "Docs: Readme and translations updated."
     279msgstr "Docs: readme en vertalingen geüpdatet."
     280
     281#. Found in changelog list item.
     282#, gp-priority: low
    343283msgid "Prompt and alt‑text translation in all DeepL languages"
    344 msgstr "Vertaling van prompts en alt‑teksten in alle DeepL‑talen"
    345 
    346 #. Found in description header.
    347 msgid "Data Processing and Privacy"
    348 msgstr "Gegevensverwerking en privacy"
    349 
    350 #. Found in changelog list item.
    351 #, gp-priority: low
    352 msgid "Docs: Updated readme links (Markdown link labels for FAQ, DeepL, AiGude.io)"
    353 msgstr "Documentatie: readme-links geüpdatet (Markdown-linklabels voor FAQ, DeepL, AiGude.io)"
     284msgstr "Vertaling van prompts en alt‑teksten in alle DeepL talen"
    354285
    355286#. Found in changelog list item.
     
    397328msgid "Added search in List view"
    398329msgstr "Zoeken toegevoegd in lijstweergave"
    399 
    400 #. Found in changelog list item.
    401 #, gp-priority: low
    402 msgid "Renamed the Templates section to Prompts."
    403 msgstr "Sectie Templates hernoemd naar Prompts."
    404 
    405 #. Found in changelog list item.
    406 #, gp-priority: low
    407 msgid "Added detailed explanations for all placeholder modifiers used in Prompts."
    408 msgstr "Uitgebreide uitleg toegevoegd voor alle plaatsaanduidings‑modificatoren die in Prompts worden gebruikt."
    409 
    410 #. Found in changelog list item.
    411 #, gp-priority: low
    412 msgid "Renamed the Server section to Settings."
    413 msgstr "Sectie Server hernoemd naar Instellingen."
  • aigude-tools/trunk/languages/aigude-tools-readme-nl_NL_formal.po

    r3408170 r3480099  
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2025-10-07 21:30:46+0000\n"
     5"PO-Revision-Date: 2025-12-10 22:22:59+0000\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    99"Plural-Forms: nplurals=2; plural=n != 1;\n"
    10 "X-Generator: GlotPress/4.0.1\n"
     10"X-Generator: GlotPress/4.0.3\n"
    1111"Language: nl\n"
    1212"Project-Id-Version: Plugins - AiGude Tools - Stable Readme (latest release)\n"
     
    2323
    2424#. Found in faq paragraph.
    25 msgid "All languages supported by DeepL (including variants such as EN-GB/EN-US and PT-PT/PT-BR). Your site’s language is offered as a “System” default."
    26 msgstr "Alle talen die door DeepL worden ondersteund (inclusief varianten zoals EN-GB/EN-US en PT-PT/PT-BR). De taal van uw site wordt aangeboden als \"Systeem\"-standaardinstelling."
     25msgid "Yes. You can define custom prompts using placeholders such as <code>%filename%</code> and <code>%title%</code>. Furthermore, you can choose the translation provider for each prompt that best suits you."
     26msgstr "Ja. U kunt eigen prompts maken met plaatshouders zoals <code>%filename%</code> en <code>%title%</code>. Daarnaast kunt u per prompt de vertaalprovider kiezen die het beste past."
     27
     28#. Found in faq paragraph.
     29msgid "All languages supported by DeepL and Google Translate. We offer translations into 190+ languages, including regional variants."
     30msgstr "Alle talen die DeepL en Google Translate ondersteunen. We bieden vertalingen in meer dan 190 talen, inclusief regionale varianten."
     31
     32#. Found in description paragraph.
     33msgid "To use the plugin you’ll need an AiGude API key — grab one for free at <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     34msgstr "Om de plugin te gebruiken, heeft u een AiGude API-sleutel nodig — vraag er gratis een aan op <a href=\"https://aigude.io/en/Products/\">AiGude.io</a>."
     35
     36#. Found in description paragraph.
     37msgid "Want to try it? <a href=\"https://aigude.io/en/Try-It/\">Visit our live demo.</a>"
     38msgstr "Wilt u het proberen? <a href=\"https://aigude.io/en/Try-It/\">Bezoek onze live demo.</a>"
     39
     40#. Found in description list item.
     41msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, in one place."
     42msgstr "<strong>Instellingen</strong> – API-sleutels beheren en resterende tegoeden op één plek bekijken."
     43
     44#. Screenshot description.
     45msgid "Edit Prompt"
     46msgstr "Prompt bewerken"
     47
     48#. Screenshot description.
     49msgid "Prompts"
     50msgstr "Prompts"
     51
     52#. Found in description paragraph.
     53msgid "<strong>Google Cloud Translation API</strong>"
     54msgstr "<strong>Google Cloud Translation API</strong>"
     55
     56#. Found in description paragraph.
     57msgid "<strong>DeepL API</strong>"
     58msgstr "<strong>DeepL API</strong>"
     59
     60#. Found in description paragraph.
     61msgid "Translations may be performed via the <strong>DeepL API</strong> or the <strong>Google Cloud Translation API</strong>, depending on your configuration."
     62msgstr "Vertalingen kunnen worden uitgevoerd via de <strong>DeepL API</strong> of de <strong>Google Cloud Translation API</strong>, afhankelijk van uw configuratie."
     63
     64#. Found in description list item.
     65msgid "For more information on how Google handles translation data, see Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
     66msgstr "Voor meer informatie over hoe Google vertaalgegevens verwerkt, zie Google's <a href=\"https://cloud.google.com/translate/data-usage\">Veelgestelde vragen over gegevensgebruik</a>."
     67
     68#. Found in description list item.
     69msgid "We use the Google Cloud Translation API v3 with the dedicated EU endpoint <code>translate-eu.googleapis.com</code>; see Google’s <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpoint documentation</a> for details."
     70msgstr "We gebruiken de Google Cloud Translation API v3 met het speciale EU-endpoint <code>translate-eu.googleapis.com</code>; zie Google's <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpointdocumentatie</a> voor details."
     71
     72#. Found in description list item.
     73msgid "Only the text to be translated and the selected language parameters are transmitted to Google."
     74msgstr "Alleen de te vertalen tekst en de geselecteerde taalparameters worden naar Google verzonden."
     75
     76#. Found in description list item.
     77msgid "For details, see the <a href=\"https://www.deepl.com/privacy\">DeepL Privacy Policy</a>."
     78msgstr "Voor details, zie het <a href=\"https://www.deepl.com/privacy\">DeepL-privacybeleid</a>."
     79
     80#. Found in description list item.
     81msgid "DeepL is headquartered in Germany and operates under EU GDPR standards."
     82msgstr "DeepL is gevestigd in Duitsland en opereert volgens EU-AVG/GDPR-normen."
     83
     84#. Found in description list item.
     85msgid "Only the text to be translated and the selected language parameters are transmitted to DeepL."
     86msgstr "Alleen de te vertalen tekst en de geselecteerde taalparameters worden naar DeepL verzonden."
     87
     88#. Found in description list item.
     89msgid "<strong>Prompts</strong> – Create template-driven prompts with placeholders (e.g., <code>%filename%</code>, <code>%title%</code>) and lock provider-specific target languages."
     90msgstr "<strong>Prompts</strong> – maak templategestuurde prompts met plaatshouders (bijv. <code>%filename%</code>, <code>%title%</code>) en vergrendel providerspecifieke doeltalen."
     91
     92#. Found in description list item.
     93msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google with one click."
     94msgstr "<strong>Meertalige ondersteuning</strong> – vertaal prompts en alt‑teksten via DeepL of Google met één klik."
     95
     96#. Found in description header.
     97msgid "Data Processing and Privacy"
     98msgstr "Gegevensverwerking en privacy"
    2799
    28100#. Found in faq paragraph.
     
    32104#. Found in description paragraph.
    33105msgid ""
    34 "Links:\n"
    35 "- <a href=\"https://aigude.io/Informationen/Datenschutz\">Privacy Policy</a>\n"
    36 "- <a href=\"https://aigude.io/Informationen/AGB\">Terms of Service</a>\n"
     106"Privacy Info:\n"
     107"- <a href=\"https://aigude.io/Informationen/Datenschutz\">AiGude Privacy Policy</a>\n"
     108"- <a href=\"https://aigude.io/Informationen/AGB\">AiGude Terms of Service</a>\n"
    37109"- <a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (German)</a>"
    38110msgstr ""
    39 "Links:\n"
    40 "- <a href=\"https://aigude.io/Informationen/Datenschutz\">Privacybeleid</a>\n"
    41 "- <a href=\"https://aigude.io/Informationen/AGB\">Servicevoorwaarden</a>\n"
     111"Privacy info:\n"
     112"- <a href=\"https://aigude.io/Informationen/Datenschutz\">AiGude privacybeleid</a> \n"
     113"- <a href=\"https://aigude.io/Informationen/AGB\">AiGude dienstvoorwaarden</a>\n"
    42114"- <a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (Duits)</a>"
    43115
     
    45117msgid "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (German)</a>"
    46118msgstr "<a href=\"https://www.pagemachine.de/ki-loesungen/aigude-faq\">AiGude FAQ (Duits)</a>"
    47 
    48 #. Found in description paragraph.
    49 msgid "Note: An AiGude API key is required; get one free at <a href=\"https://aigude.io\">AiGude.io</a>."
    50 msgstr "Let op: een AiGude API‑sleutel is vereist; vraag er gratis een aan via <a href=\"https://aigude.io\">AiGude.io</a>."
    51 
    52 #. Found in description list item.
    53 msgid "<strong>Multilingual Support</strong> – Translate prompts and alt texts via DeepL or Google Cloud Translation with one click."
    54 msgstr "<strong>Meertalige ondersteuning</strong> – Vertaal prompts en alt-teksten met één klik via DeepL of Google Cloud Translation."
    55 
    56 #. Found in description list item.
    57 msgid "Prompt and alt‑text translation in all DeepL‑supported languages (e.g., English, German, Spanish, French, Italian, Portuguese [PT-PT/PT-BR], Dutch, Polish, Russian, Chinese, Japanese, Korean, Swedish, Danish, Norwegian [NB], Finnish, Greek, Turkish, Ukrainian, Romanian, Czech, Slovak, Slovenian, Lithuanian, Latvian, Estonian, Bulgarian, Indonesian, Arabic)"
    58 msgstr "Vertaling van prompts en alt‑teksten in alle door DeepL ondersteunde talen (bijv. Engels, Duits, Spaans, Frans, Italiaans, Portugees [PT-PT/PT-BR], Nederlands, Pools, Russisch, Chinees, Japans, Koreaans, Zweeds, Deens, Noors [NB], Fins, Grieks, Turks, Oekraïens, Roemeens, Tsjechisch, Slowaaks, Sloveens, Litouws, Lets, Ests, Bulgaars, Indonesisch, Arabisch)"
    59 
    60 #. Found in description paragraph.
    61 msgid ""
    62 "2) Translation\n"
    63 "   - Sent: only text strings that require translation (e.g., parts of your prompt or generated text), the target language code, and your API key.\n"
    64 "   - Purpose: to translate text for accessibility/SEO; handled server‑side."
    65 msgstr ""
    66 "2) Vertaling\n"
    67 "   – Verzonden: alleen tekst strings die vertaald moeten worden (bijv. delen van uw prompt of gegenereerde tekst), de doeltaalcode en uw API‑sleutel.\n"
    68 "   – Doel: tekst vertalen voor toegankelijkheid/SEO; server‑side afgehandeld."
    69 
    70 #. Found in description paragraph.
    71 msgid "This plugin connects to AiGude’s captioning service to generate and (where applicable) translate image alternative text."
    72 msgstr "Deze plugin maakt verbinding met de vastlegging dienst van AiGude om alternatieve tekst (alt‑tekst) voor afbeeldingen te genereren en, waar van toepassing, te vertalen."
    73 
    74 #. Found in faq paragraph.
    75 msgid "Yes. You can define custom prompt templates using placeholders such as <code>%filename%</code>, <code>%title%</code>, and <code>%description%</code>."
    76 msgstr "Ja. Je kunt aangepaste prompt templates definiëren met plaatshouders zoals <code>%filename%</code>, <code>%title%</code>, en <code>%description%</code> (beschrijving)."
    77119
    78120#. Found in faq paragraph.
     
    110152#. Found in installation list item.
    111153msgid "Upload the plugin files to <code>/wp-content/plugins/aigude-tools</code>, or install it directly from the WordPress plugin directory."
    112 msgstr "Upload de plugin-bestanden naar <code>/wp-content/plugins/aigude-tools</code>, of installeer de plugin rechtstreeks vanuit de WordPress plugin directory."
    113 
    114 #. Found in description paragraph.
    115 msgid "On multisite, the uninstaller runs for every site in the network."
    116 msgstr "Op een multisite netwerk wordt de de-installatie voor elke site in het netwerk uitgevoerd."
    117 
    118 #. Found in description paragraph.
    119 msgid ""
    120 "This plugin ships with an <code>uninstall.php</code> to remove its data when you uninstall it from WordPress.\n"
    121 "It deletes:\n"
    122 "- Options: <code>aigude_alt_servers</code>, <code>aigude_target_language</code>\n"
    123 "- Attachment meta starting with <code>_aigude_alt_</code> (e.g., <code>_aigude_alt_suggestion</code>)."
    124 msgstr ""
    125 "Deze plugin wordt geleverd met een <code>uninstall.php</code> om gegevens te verwijderen wanneer u deze vanuit WordPress deïnstalleert.\n"
    126 "Daarmee worden verwijderd:\n"
    127 "- Opties: <code>aigude_alt_servers</code>, <code>aigude_target_language</code>\n"
    128 "- Metagegevens van bijlagen die beginnen met <code>_aigude_alt_</code> (bijv. <code>_aigude_alt_suggestion</code>)."
    129 
    130 #. Found in description paragraph.
    131 msgid "All requests are made over HTTPS."
    132 msgstr "Alle aanvragen worden via HTTPS verstuurd."
    133 
    134 #. Found in description paragraph.
    135 msgid ""
    136 "3) Remaining credits (<code>remaining_credits</code>)\n"
    137 "   - Sent: your API key.\n"
    138 "   - Purpose: to display remaining credits in the admin screen."
    139 msgstr ""
    140 "3) Resterende credits (<code>remaining_credits</code>)\n"
    141 "   – Verzonden: uw API‑sleutel.\n"
    142 "   – Doel: de resterende credits weergeven in het beheerscherm."
    143 
    144 #. Found in description paragraph.
    145 msgid ""
    146 "1) Alt‑text generation\n"
    147 "   - Sent: a resized copy of the selected image file, your prompt template (text), selected target language code, and your API key.\n"
    148 "   - Purpose: to produce a caption/alt text for accessibility and SEO.\n"
    149 "   - Not sent: WordPress user emails, passwords, or front-end visitor data."
    150 msgstr ""
    151 "1) Genereren van alt‑teksten\n"
    152 "   – Verzonden: een verkleinde kopie van het geselecteerde afbeeldingsbestand, uw prompttemplate (tekst), de gekozen doeltaalcode en uw API‑sleutel.\n"
    153 "   – Doel: een bijschrift/alt‑tekst produceren voor toegankelijkheid en SEO.\n"
    154 "   – Niet verzonden: e-mails van WordPress-gebruikers, wachtwoorden of gegevens van front-endbezoekers."
    155 
    156 #. Found in description paragraph.
    157 msgid "The plugin only sends data when an administrator performs an action in wp-admin (e.g., “Generate” or “Translate”), or when the admin explicitly clicks “Get Credits”."
    158 msgstr "De plugin verzendt alleen gegevens wanneer een beheerder een handeling uitvoert in wp‑admin (bijv. ‘Genereren’ of ‘Vertalen’), of wanneer de beheerder expliciet op ‘Credits ophalen’ klikt."
     154msgstr "Upload de plugin bestanden naar <code>/wp-content/plugins/aigude-tools</code>, of installeer de plugin rechtstreeks vanuit de WordPress plugin directory."
     155
     156#. Found in description paragraph.
     157msgid "This plugin connects to AiGude’s captioning service to generate and translate image alternative text."
     158msgstr "Deze plugin maakt verbinding met de captioning dienst van AiGude om alternatieve tekst voor afbeeldingen te genereren en te vertalen."
    159159
    160160#. Found in description paragraph.
    161161msgid "Perfect for website owners, photographers, agencies, and content teams who want to improve accessibility and SEO without hours of manual work."
    162 msgstr "Perfect voor site-eigenaren, fotografen, bureaus en inhoudsteams die de toegankelijkheid en SEO willen verbeteren zonder uren handmatig werk."
     162msgstr "Perfect voor site eigenaren, fotografen, bureaus en contentteams die de toegankelijkheid en SEO willen verbeteren zonder uren handmatig werk."
    163163
    164164#. Found in description paragraph.
     
    171171
    172172#. Found in description list item.
    173 msgid "AiGude acts as a processor for the limited purpose of generating/translation results."
    174 msgstr "AiGude treedt op als verwerker voor het beperkte doel van het genereren/vertalen van resultaten."
    175 
    176 #. Found in description list item.
    177 msgid "Site administrators act as data controllers for the content they send (e.g., images that could include personal data)."
    178 msgstr "Sitebeheerders zijn de verwerkingsverantwoordelijken voor de inhoud die zij verzenden (bijv. afbeeldingen die persoonsgegevens kunnen bevatten)."
    179 
    180 #. Found in description list item.
    181 msgid "Translations may be performed via the <strong>DeepL API</strong> or the <strong>Google Cloud Translation API</strong>, depending on your configuration."
    182 msgstr "Vertalingen kunnen, afhankelijk van uw configuratie, plaatsvinden via de <strong>DeepL API</strong> of de <strong>Google Cloud Translation API</strong>."
    183 
    184 #. Found in description list item.
    185 msgid "Only the text to be translated and language parameters are transmitted to DeepL. Processing occurs on DeepL’s infrastructure. See the <a href=\"https://www.deepl.com/privacy\">DeepL Privacy Policy</a>."
    186 msgstr "Alleen de te vertalen tekst en taalparameters worden naar DeepL verzonden. De verwerking vindt plaats op de infrastructuur van DeepL. Zie het <a href=\"https://www.deepl.com/privacy\">privacybeleid van DeepL</a>."
    187 
    188 #. Found in description list item.
    189 msgid "We use the Google Cloud Translation API v3 with the dedicated EU endpoint <code>translate-eu.googleapis.com</code>; see Google’s <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpoint documentation</a> for details."
    190 msgstr "We gebruiken de Google Cloud Translation API v3 met het speciale EU-endpoint <code>translate-eu.googleapis.com</code>; zie de <a href=\"https://docs.cloud.google.com/translate/docs/advanced/endpoints\">endpointdocumentatie</a> van Google voor details."
    191 
    192 msgid "For more information on how Google handles translation data, see Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
    193 msgstr "Meer informatie over hoe Google vertaalgegevens verwerkt, vindt u in Google’s <a href=\"https://cloud.google.com/translate/data-usage\">Data Usage FAQ</a>."
    194 
    195 #. Found in description list item.
    196173msgid "Alt-text generation is performed on AiGude–managed infrastructure located in the European Union. Image files are sent over HTTPS to this infrastructure. No third-party vendors are used for alt-text generation."
    197174msgstr "Het genereren van alt‑teksten gebeurt op door AiGude beheerde infrastructuur in de Europese Unie. Afbeeldingsbestanden worden via HTTPS naar deze infrastructuur verzonden. Voor het genereren van alt‑teksten worden geen externe leveranciers gebruikt."
    198175
    199176#. Found in description list item.
    200 msgid "<code>_aigude_alt_suggestion</code> (last generated suggestion)"
    201 msgstr "<code>_aigude_alt_suggestion</code> (laatst gegenereerde suggestie)"
    202 
    203 #. Found in description list item.
    204 msgid "<code>_wp_attachment_image_alt</code> (final alt text)"
    205 msgstr "<code>_wp_attachment_image_alt</code> (definitieve alt‑tekst)"
    206 
    207 #. Found in description list item.
    208 msgid "The plugin stores generated results locally in WordPress as attachment meta:"
    209 msgstr "De plugin slaat gegenereerde resultaten lokaal op in WordPress als metagegevens van bijlagen:"
    210 
    211 #. Found in description list item.
    212177msgid "We do <strong>not</strong> store images after processing; they are held only in memory long enough to generate a response."
    213 msgstr "Wij slaan afbeeldingen <strong>niet</strong> op na de verwerking; zij blijven slechts in het geheugen zolang dat nodig is om een reactie te genereren."
     178msgstr "We slaan <strong>geen</strong> afbeeldingen op na verwerking; ze worden alleen in het geheugen gehouden, lang genoeg om een reactie te genereren."
    214179
    215180#. Found in description list item.
     
    218183
    219184#. Found in description list item.
    220 msgid "<strong>Settings</strong> – Manage API keys, view remaining credits, and pick translation providers in one place."
    221 msgstr "<strong>Instellingen</strong> – Beheer uw API-sleutels, bekijk resterende credits en kies vertaalproviders op één plek."
    222 
    223 #. Found in description list item.
    224 msgid "<strong>Prompts</strong> – Create template-driven prompts with placeholders (e.g., <code>%filename%</code>, <code>%title%</code>) and lock provider-specific target languages."
    225 msgstr "<strong>Prompts</strong> – Maak sjabloon-gestuurde prompts met placeholders (bijv. <code>%filename%</code>, <code>%title%</code>) en vergrendel providerspecifieke doeltalen."
    226 
    227 #. Found in description list item.
    228 msgid "Hover tooltips reveal generated alt text at a glance"
    229 msgstr "Over tooltips hoveren toont gegenereerde alt-tekst in één oogopslag"
    230 
    231 #. Found in description list item.
    232185msgid "Mini-grid shows your current selection"
    233186msgstr "Mini‑raster toont uw huidige selectie"
     
    242195
    243196#. Found in description list item.
    244 msgid "Select prompt templates and target languages for single or bulk actions"
    245 msgstr "Selecteer prompt templates en doeltalen voor individuele of bulkacties"
     197msgid "Select prompts with target languages for single or bulk actions"
     198msgstr "Selecteer prompts en doeltalen voor individuele of bulkacties"
    246199
    247200#. Found in description list item.
    248201msgid "Preview and edit a single image’s alt text before saving"
    249 msgstr "Bekijk een voorbeeld en bewerk de alt‑tekst van één afbeelding voordat u opslaat"
     202msgstr "Bekijk en bewerk de alt‑tekst van één afbeelding voordat u opslaat"
    250203
    251204#. Found in description list item.
     
    268221msgid "<strong>AI-Powered Alt Text</strong> – Automatically generate descriptive alt text for your images using advanced AI."
    269222msgstr "<strong>AI‑gestuurde alt‑tekst</strong> – Genereer automatisch beschrijvende alt‑tekst voor uw afbeeldingen met geavanceerde AI."
    270 
    271 #. Found in description list item.
    272 msgid "Servers - API key and credit usage management in the Server settings  "
    273 msgstr "Servers – beheer van API‑sleutel en credit verbruik in de serverinstellingen  "
    274 
    275 #. Found in description list item.
    276 msgid "Templates - Customizable prompt templates with placeholders (e.g. <code>%filename%</code>, <code>%title%</code>)  "
    277 msgstr "Templates - Aanpasbare prompt templates met plaatshouders (bijv. <code>%filename%</code>, <code>%title%</code>)  "
    278 
    279 #. Found in description list item.
    280 msgid "Hover over images to view the generated alt text in tooltips."
    281 msgstr "Over afbeeldingen hoveren om de gegenereerde alt‑tekst in tooltips te bekijken."
    282 
    283 #. Found in description list item.
    284 msgid "See a mini grid of your current selection."
    285 msgstr "Bekijk een mini‑raster van uw huidige selectie."
    286 
    287 #. Found in description list item.
    288 msgid "Grid View — Select multiple images directly from the Media Library and generate alt text for all of them at once."
    289 msgstr "Rasterweergave — Selecteer meerdere afbeeldingen rechtstreeks vanuit de Mediabibliotheek en genereer in één keer alt‑tekst voor alle geselecteerde items."
    290 
    291 #. Found in description list item.
    292 msgid "Choose a prompt template and target language for single or bulk generation."
    293 msgstr "Kies een prompt template en doeltaal voor individuele of bulk generatie."
    294 
    295 #. Found in description list item.
    296 msgid "Preview and edit generated text for a single image before saving."
    297 msgstr "Bekijk een voorbeeld en bewerk de gegenereerde tekst voor één afbeelding voordat u opslaat."
    298 
    299 #. Found in description list item.
    300 msgid "Option to skip existing alt text."
    301 msgstr "Optie om bestaande alt‑tekst over te slaan."
    302 
    303 #. Found in description list item.
    304 msgid "Bulk-generate alt text for selected images (per page or across pages)."
    305 msgstr "Genereer alt‑tekst in bulk voor geselecteerde afbeeldingen (per pagina of over meerdere pagina's)."
    306 
    307 #. Found in description list item.
    308 msgid "List View — Displays image cards that match your search filters."
    309 msgstr "Lijstweergave — Toont afbeeldingskaarten die aan uw zoekfilters voldoen."
    310 
    311 #. Found in description list item.
    312 msgid "Automatic alt text generation for images using AI"
    313 msgstr "Automatische generatie van alt‑tekst voor afbeeldingen met AI"
    314 
    315 #. Found in description header.
    316 msgid "Uninstall and Data Deletion"
    317 msgstr "De-installeren en gegevensverwijdering"
    318 
    319 #. Found in description header.
    320 msgid "Legal Basis / Controller"
    321 msgstr "Juridische grondslag / verwerkingsverantwoordelijke"
    322 
    323 
    324 #. Found in description header.
    325 msgid "What Data Is Sent and When"
    326 msgstr "Welke gegevens worden wanneer verzonden"
    327 
    328223
    329224#. Found in description header.
     
    341236#. Found in changelog list item.
    342237#, gp-priority: low
     238msgid "New built-in default prompt applied across list/grid views."
     239msgstr "Nieuwe ingebouwde standaardprompt toegepast in lijst- en rasterweergave."
     240
     241#. Found in changelog list item.
     242#, gp-priority: low
     243msgid "Prompts in views grouped by provider, with tooltips and “Edit in Prompts” quick access."
     244msgstr "Prompts in weergaven gegroepeerd per provider, met tooltips en snelkoppeling \"Bewerken in Prompts\"."
     245
     246#. Found in changelog list item.
     247#, gp-priority: low
     248msgid "Updated Prompts to support target languages across all translation providers."
     249msgstr ""
     250
     251#. Found in changelog list item.
     252#, gp-priority: low
     253msgid "Added Google Cloud Translation as an additional translation provider."
     254msgstr ""
     255
     256#. Found in changelog list item.
     257#, gp-priority: low
     258msgid "Added detailed explanations for all placeholder modifiers used in Prompts."
     259msgstr "Gedetailleerde uitleg toegevoegd voor alle plaatshouder modifiers die in prompts worden gebruikt."
     260
     261#. Found in changelog list item.
     262#, gp-priority: low
     263msgid "Renamed the Server section to Settings."
     264msgstr "Server sectie hernoemd naar Instellingen."
     265
     266#. Found in changelog list item.
     267#, gp-priority: low
     268msgid "Renamed the Templates section to Prompts."
     269msgstr "Templates sectie hernoemd naar Prompts."
     270
     271#. Found in changelog list item.
     272#, gp-priority: low
     273msgid "Docs: Updated readme links"
     274msgstr "Docs: readme links geüpdatet"
     275
     276#. Found in changelog list item.
     277#, gp-priority: low
     278msgid "Docs: Readme and translations updated."
     279msgstr "Docs: readme en vertalingen geüpdatet."
     280
     281#. Found in changelog list item.
     282#, gp-priority: low
    343283msgid "Prompt and alt‑text translation in all DeepL languages"
    344 msgstr "Vertaling van prompts en alt‑teksten in alle DeepL‑talen"
    345 
    346 #. Found in description header.
    347 msgid "Data Processing and Privacy"
    348 msgstr "Gegevensverwerking en privacy"
    349 
    350 #. Found in changelog list item.
    351 #, gp-priority: low
    352 msgid "Docs: Updated readme links (Markdown link labels for FAQ, DeepL, AiGude.io)"
    353 msgstr "Documentatie: readme-links geüpdatet (Markdown-linklabels voor FAQ, DeepL, AiGude.io)"
     284msgstr "Vertaling van prompts en alt‑teksten in alle DeepL talen"
    354285
    355286#. Found in changelog list item.
     
    397328msgid "Added search in List view"
    398329msgstr "Zoeken toegevoegd in lijstweergave"
    399 
    400 #. Found in changelog list item.
    401 #, gp-priority: low
    402 msgid "Renamed the Templates section to Prompts."
    403 msgstr "Sectie Templates hernoemd naar Prompts."
    404 
    405 #. Found in changelog list item.
    406 #, gp-priority: low
    407 msgid "Added detailed explanations for all placeholder modifiers used in Prompts."
    408 msgstr "Uitgebreide uitleg toegevoegd voor alle plaatsaanduidings‑modificatoren die in Prompts worden gebruikt."
    409 
    410 #. Found in changelog list item.
    411 #, gp-priority: low
    412 msgid "Renamed the Server section to Settings."
    413 msgstr "Sectie Server hernoemd naar Instellingen."
Note: See TracChangeset for help on using the changeset viewer.