From dec53cff0c02bde98b730f12bdc92dfbf6f4e7d5 Mon Sep 17 00:00:00 2001 From: Rob Howard Date: Fri, 2 Oct 2026 17:49:11 -0600 Subject: [PATCH] Switch default OpenAI model to GPT-6 Luna; release 1.1.1 - GPT-5.4 nano is deprecated (shutdown 2027-04-01). Replace it with gpt-6-luna, OpenAI's recommended replacement ($0.10 / $0.50 per 1M), with reasoning_effort "none" (Luna defaults to medium). - Keep a retired_models() list so logs and spending history still show "GPT-5.4 nano"; the upgrade routine moves a saved retired model to the default while leaving Gemini/DeepInfra choices alone. - Make the "prices as of" date a single constant shown via a localized, translatable date format, so future price updates need no retranslation. - Translations updated for all 7 locales (170/170). - Bump version to 1.1.1. Co-Authored-By: Claude Opus 5.5 --- README.md | 12 +- admin/class-everyalt-admin.php | 9 +- admin/class-everyalt-openai.php | 4 +- admin/partials/everyalt-options-display.php | 12 +- everyalt.php | 4 +- includes/class-everyalt-providers.php | 60 +++- languages/everyalt-de_DE.mo | Bin 24106 -> 24139 bytes languages/everyalt-de_DE.po | 364 ++++++++++---------- languages/everyalt-es_ES.mo | Bin 24310 -> 24344 bytes languages/everyalt-es_ES.po | 364 ++++++++++---------- languages/everyalt-fr_FR.mo | Bin 25151 -> 25184 bytes languages/everyalt-fr_FR.po | 364 ++++++++++---------- languages/everyalt-it_IT.mo | Bin 24302 -> 24335 bytes languages/everyalt-it_IT.po | 364 ++++++++++---------- languages/everyalt-ja.mo | Bin 26656 -> 26697 bytes languages/everyalt-ja.po | 364 ++++++++++---------- languages/everyalt-nl_NL.mo | Bin 23955 -> 23988 bytes languages/everyalt-nl_NL.po | 364 ++++++++++---------- languages/everyalt-pt_BR.mo | Bin 24047 -> 24083 bytes languages/everyalt-pt_BR.po | 364 ++++++++++---------- languages/everyalt.pot | 362 +++++++++---------- 21 files changed, 1567 insertions(+), 1444 deletions(-) diff --git a/README.md b/README.md index d237957..24aded2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- EveryAlt 1.1.0 + EveryAlt 1.1.1 WordPress PHP License @@ -72,14 +72,14 @@ Choose a model in **Settings**. Every model reads the image itself and writes th | Model | Provider | Input / 1M tokens | Output / 1M tokens | |-------|----------|------------------:|-------------------:| -| **GPT-5.4 nano** (default) | OpenAI | $0.20 | $1.25 | +| **GPT-6 Luna** (default) | OpenAI | $0.10 | $0.50 | | **Gemini 3.1 Flash-Lite** | Google Gemini | $0.25 | $1.50 | | **DeepSeek V4.1 Flash** | DeepInfra | $0.20 | $0.60 | | **GLM-5.3-Flash** | DeepInfra | $0.15 | $0.50 | -Prices are each provider’s published regular rates as of September 2026 and can change: [OpenAI pricing](https://openai.com/api/pricing/) · [Gemini pricing](https://ai.google.dev/gemini-api/docs/pricing) · [DeepInfra pricing](https://deepinfra.com/pricing). The actual cost of every image is recorded on the **Logs** tab. +Prices are each provider’s published regular rates as of October 2026 and can change: [OpenAI pricing](https://openai.com/api/pricing/) · [Gemini pricing](https://ai.google.dev/gemini-api/docs/pricing) · [DeepInfra pricing](https://deepinfra.com/pricing). The actual cost of every image is recorded on the **Logs** tab. -> **Upgrading from 1.0.x?** Earlier versions used `gpt-5-nano`, which OpenAI is retiring. Existing installs switch to **GPT-5.4 nano** automatically. Your OpenAI key keeps working. +> **Upgrading?** OpenAI is retiring `gpt-5-nano` and GPT-5.4 nano (shutdown April 1, 2027). Installs using either switch to **GPT-6 Luna**, OpenAI's recommended replacement, automatically. Your OpenAI key keeps working, and if you chose Gemini or DeepInfra, that choice is kept. ### Getting a key @@ -149,6 +149,10 @@ The plugin uses the `everyalt` text domain and ships with a `.pot` in `languages ## 📝 Changelog +### 1.1.1 +- **Changed** the default OpenAI model is now **GPT-6 Luna**, OpenAI's recommended replacement for GPT-5.4 nano (which shuts down April 1, 2027). It's half the price per token ($0.10 input / $0.50 output per 1M tokens), and EveryAlt turns its reasoning off, as alt text doesn't need it. Sites using GPT-5.4 nano switch automatically; sites using Gemini or DeepInfra keep their choice. +- **Improved** the "prices as of" date in Settings is now set in one place and shown in each site's language, so future price updates don't need retranslating. + ### 1.1.0 - **Accessibility (WCAG 2.1 AA).** A full review of every screen, with all failures fixed: - Review tabs: alt text and title fields now have labels; Save, Regenerate, and Edit identify which image they act on. diff --git a/admin/class-everyalt-admin.php b/admin/class-everyalt-admin.php index 7825f28..3b4a2ea 100644 --- a/admin/class-everyalt-admin.php +++ b/admin/class-everyalt-admin.php @@ -231,8 +231,13 @@ public function every_alt_maybe_upgrade() { break; } } - // gpt-5-nano is being retired; installs from before model selection move to GPT-5.4 nano. + // Installs from before model selection start on the default model. add_option( Every_Alt_Providers::MODEL_OPTION, Every_Alt_Providers::DEFAULT_MODEL ); + // A saved model that has since been retired (e.g. GPT-5.4 nano) moves to the default. Other + // choices, such as Gemini or DeepInfra, are left alone. + if ( array_key_exists( get_option( Every_Alt_Providers::MODEL_OPTION ), Every_Alt_Providers::retired_models() ) ) { + update_option( Every_Alt_Providers::MODEL_OPTION, Every_Alt_Providers::DEFAULT_MODEL ); + } update_option( 'every_alt_version', $this->version ); } @@ -320,7 +325,7 @@ private function get_api_key() { } /** - * Display name of the selected model, e.g. "GPT-5.4 nano (OpenAI)". + * Display name of the selected model, e.g. "GPT-6 Luna (OpenAI)". * * @return string */ diff --git a/admin/class-everyalt-openai.php b/admin/class-everyalt-openai.php index 4d062e3..d44b310 100644 --- a/admin/class-everyalt-openai.php +++ b/admin/class-everyalt-openai.php @@ -47,7 +47,7 @@ class Every_Alt_OpenAI { /** @var array Provider definition from Every_Alt_Providers::providers(). */ private $provider_def; - /** @var string Model ID sent in the request (e.g. gpt-5.4-nano). */ + /** @var string Model ID sent in the request (e.g. gpt-6-luna). */ private $model; /** @@ -72,7 +72,7 @@ public function __construct( $api_key, $model_def = null ) { } /** - * Display name of the model in use, e.g. "GPT-5.4 nano (OpenAI)", for logs. + * Display name of the model in use, e.g. "GPT-6 Luna (OpenAI)", for logs. * * @return string */ diff --git a/admin/partials/everyalt-options-display.php b/admin/partials/everyalt-options-display.php index 1c4b965..0dd1c40 100644 --- a/admin/partials/everyalt-options-display.php +++ b/admin/partials/everyalt-options-display.php @@ -100,7 +100,15 @@

- +

$everyalt_m ) { - $everyalt_label = isset( $everyalt_models[ $everyalt_slug ] ) ? $everyalt_models[ $everyalt_slug ]['label'] : $everyalt_slug; + $everyalt_label = Every_Alt_Providers::model_label( $everyalt_slug ); $everyalt_parts[] = sprintf( '%s: %s (%s)', $everyalt_label, Every_Alt_Usage::format_usd( $everyalt_m['cost'] ), number_format_i18n( $everyalt_m['requests'] ) ); } echo esc_html( implode( ' · ', $everyalt_parts ) ); diff --git a/everyalt.php b/everyalt.php index 4cd9564..f00f374 100644 --- a/everyalt.php +++ b/everyalt.php @@ -16,7 +16,7 @@ * Plugin Name: EveryAlt * Plugin URI: https://everyalt.com * Description: Instantly generate alternative text for all your images. - * Version: 1.1.0 + * Version: 1.1.1 * Author: HDC * Author URI: https://hdc.net * License: GPL-2.0+ @@ -50,7 +50,7 @@ * Start at version 1.0.0 and use SemVer - https://semver.org * Rename this for your plugin and update it as you release new versions. */ -define( 'EVERY_ALT_VERSION', '1.1.0' ); +define( 'EVERY_ALT_VERSION', '1.1.1' ); /** * The code that runs during plugin activation. diff --git a/includes/class-everyalt-providers.php b/includes/class-everyalt-providers.php index c5c1b52..93060d0 100644 --- a/includes/class-everyalt-providers.php +++ b/includes/class-everyalt-providers.php @@ -7,7 +7,8 @@ * (280 tokens per image instead of 1,120) and reports thinking tokens separately. Every_Alt_OpenAI builds * both request styles; every provider receives the image inline as base64. * - * Prices are the providers' published regular (non-promotional) rates in USD per 1M tokens, as of September 2026. + * Prices are the providers' published regular (non-promotional) rates in USD per 1M tokens, as of + * PRICES_AS_OF. Update that date whenever prices here are re-checked. * They are used for the cost estimates shown in Settings and Logs, and can be overridden with the * everyalt_input_token_price_per_million / everyalt_output_token_price_per_million filters. * @@ -23,8 +24,11 @@ class Every_Alt_Providers { /** Option holding the selected model slug (a key of models()). */ const MODEL_OPTION = 'every_alt_model'; - /** Model used when none has been chosen (and for installs upgrading from gpt-5-nano). */ - const DEFAULT_MODEL = 'openai-gpt-5.4-nano'; + /** Date the prices in models() were last checked against the providers' pricing pages (Y-m-d). */ + const PRICES_AS_OF = '2026-10-02'; + + /** Model used when none has been chosen, or when the saved model has been retired. */ + const DEFAULT_MODEL = 'openai-gpt-6-luna'; /** * Providers, keyed by provider slug. @@ -92,13 +96,14 @@ public static function providers() { */ public static function models() { return array( - 'openai-gpt-5.4-nano' => array( + 'openai-gpt-6-luna' => array( 'provider' => 'openai', - 'model' => 'gpt-5.4-nano', - 'label' => 'GPT-5.4 nano', - 'input_price' => 0.20, - 'output_price' => 1.25, - 'params' => array(), + 'model' => 'gpt-6-luna', + 'label' => 'GPT-6 Luna', + 'input_price' => 0.10, + 'output_price' => 0.50, + // Luna models default to medium reasoning; alt text doesn't need it, and it's billed as output. + 'params' => array( 'reasoning_effort' => 'none' ), ), 'gemini-3.1-flash-lite' => array( 'provider' => 'gemini', @@ -129,6 +134,43 @@ public static function models() { ); } + /** + * PRICES_AS_OF as a localized month and year, e.g. "October 2026", "octubre de 2026", "2026年10月". + * + * @return string + */ + public static function prices_as_of() { + /* translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php */ + return date_i18n( _x( 'F Y', 'prices as-of date format', 'everyalt' ), strtotime( self::PRICES_AS_OF ) ); + } + + /** + * Models that were offered in earlier versions, slug => label. Kept so logs and spending history + * still show a readable name; they can't be selected, and a saved one falls back to DEFAULT_MODEL. + * + * @return array + */ + public static function retired_models() { + return array( + 'openai-gpt-5.4-nano' => 'GPT-5.4 nano', + ); + } + + /** + * Display label for a model slug, including retired models (falls back to the slug itself). + * + * @param string $slug + * @return string + */ + public static function model_label( $slug ) { + $models = self::models(); + $retired = self::retired_models(); + if ( isset( $models[ $slug ] ) ) { + return $models[ $slug ]['label']; + } + return isset( $retired[ $slug ] ) ? $retired[ $slug ] : (string) $slug; + } + /** * Format a per-1M-token price with 2 decimals, or 3 when needed (0.20, 1.50, 0.075). * diff --git a/languages/everyalt-de_DE.mo b/languages/everyalt-de_DE.mo index 34c4775cbf0c5e3e59f9f7abc70f4181dd69cad5..7659268b41e4974b52e612189efdc7fb1d797bd3 100644 GIT binary patch delta 3784 zcmY+`2~bs49LMoLf-Djsp`Zx*P)J-z2_;v++_%&;*VIrzB?(c;y=S(OrY(pYZ7xZs zQz}fFI+l&4S(#RjMW!v&rs+%>DwAd3-@BKYI^)mJIrqJH?zv~V`uah?j}H2I&)phO zZj>D)jubaE`w>5G#9x&A!_C@ZHr|3O@nKx=wqqj9deKfq{UjT2#o2D#iwU$>U<=%d z!FUXV%)EAr$|x>;g^}2yF@x|k>y0aE@8RMC%%InJ+>0T28gJrxY%ZhBnqnRD$0C{# zY=atD8irv8#^5lF=l+&Mr5hKPqn_jdeuvjlU#y|mSo{Mu@~~*LP>ja0*cyv)Ar8ii z7=T^*v2NT0HM9NQ_B7Ok7GN~@H!qcVo_H;4#MRAwQ)5R^9es?ccnZg$Kaa~Q*?0`Z zDadMAE^29t@giP9&DeQHuYv!KM=_9fcneRUS3i85;c05tAhT|pu?nlOCC;FiR`>+Y z#BJCGBlxf{_CvmEr8pU1MfK;;kJNu8vP$Mb-8c<-R=d!O`PT;xJkFCf#nrU)aU<5@ z0$jrm(wc|0Hrs$Ps3+Qu6}TTWacmoBrq-f|_A%59{)%1kGNxly?(CY5EUWcG?c&j>Jy3`|tSv?lZbZ7U1Mc;2k+IuN)agmM%`6XZM^?wm zy;K6Iyou~DtHyqK9JSUFZJhz-U=P~!QB%AJhhXDmXA@3BP4ynv!>%V$oA5kp(_KIf zrn&TiCWX$s3(611Mwr&jXy)(=sWlG->?(y>!|*c z+dKE^hHCf0{yP7osHlT=$nw}WWI64)+rESav?Dt(ZRkaH{03^^=THOr8H4aLK8ROQ zOOe~rS)vvAJMHaQhZQMW8rHv@UiE}~k&SH!QEOa-Y*f37dh%%QswqrFO<_9D@#6#_ zt7X-loi+U$^&qv#7_2#GSDUUs-ib?4r==R_d+Fd56~1eO)0`VE!ZO;W*a+h|Ys0ZE zMq-KUlNdsK1G2wt3+l!ny4NpZIPGhwr48f==z$7w8~0s>-a}mI!mw816=b>Wk#5c! z?Z9z-@c?Q`qS%2t1?i}P495tZidup~)PNpB4P+T6;8yI7A7BOs^kf$4w{K78U&ml( zFXt7z97Acph)r-i7ULm&8q??{2j4~AFp1u@6dh4B&>b~^si*h*RKGuE zI(y}>Ox9mh?4QMtF&y)85b6e1s7|HN7^m6lX4a29090OuW^jCatkL3JlYU($k-W$77 zpC839@CQ_X`vy6$^fNev_Agk8BL|zkg5K*?mQ&d<#97<8p=M`jr(qC=4&y{%6tX?+ zB&K38J5sy42Wke3kY%+c$ZFX>w_S@GVCvn@D}5kpCcno(o&Q=Y4Y_awwN?#AIGZO9 zZ=s!qI!41W0T*I2R-iW75lqBiP%{uVl6A*+7>8xZjcga{^Sw9$KgSZC|CCX@{kX6N zC*wg}fU)doyaF)uN6m&gL&6=w={B2=`~ z^~6uA@t>ku%_KVWDomhn&5M04=ZHQ^UH7+V+>7-jxs}0~M|zOgNdZx5OYSEd$SU$Y z(emY!`D7F6LR4}ItKd7@YOAaxn|(Fzul1YlG;FGCDf*L#$*W{N(FtK$?LP7dSxJ&f zebEUBbsKsgEG13I)9$rCIE}E?Y$Umz#5vE;zgRR{5*6Oa#=FS3q0|l}eMt=2N`lD{ z(w@|pd2S^Q7uH|I0P+~ov0F=u$QII*EGEAH|D&%|x;DnHgwtq4$ty&s!9!jk?MMT% zoOCCtMCC3A-`_e#TH7`5wQ$!RxXi8V-QrvSEGiF@fn*d(Co@S2xs5C#jYtAf2_iY9 zHEBjvo+7KsTv9>C6O|Owkc=TC$Q@)68AdEIscL9=Z9s#hc~y5uO>7xAXYQ=&x$`{P s^HK`)JUQ9Lxt_ejxdqw90Rub}$|_S^`=wSLPn{8@?`L+un5fJ4FG$v*-v9sr delta 3744 zcmZA3c~F&A9LDh<2`Y;s3Wy5|L7=3G8}9pxxl4w7E{Nua`;v0a+(j!fE705(ttpGC zu?Cl#)JZ3svL?&a)Y8eN(Xr97#_apN=jETy`0zRBz4xB?yl1)B(`7*i%7OwHs|UYf zlmnzLnHpkt70bf-L+M@BtRZG%1kT2MT&DNZX10yr9*TO*+vfUJ`B z<*_T`U}P0+7;0%I;Z3}bnz6HtUIV|2C-HCm1ixTC0{Y-WhNr1njm)}j#!}pe^>75e z)W=0Q35&1=R^Y{M*cy4OEyhv!Hmbh|sQyFvFso$Is2isu&uSOzGyi(wJ{R<4p$TRi za5NU-ZCrq>6Wy8zJxS-Z!%OT(WBqNDjD7 zvw{nAd7&6Jps1(Z6es(pA;hYXVe)sq8}bmz7|5Jc62$3aM^D+1Qr$6x0;Ì^z-__-sHxuT`?2qrs7-hl zwdpRR26D%LJ@AN1WiCW;$R}b9Y7;I-9isx&0Jo#obPwvuOR*vzMcw!W>PA2Kum6fo zXx~EhS2xYwrxB{%5_{lA_d~s0~v!=;p}SDwZT@Hhx7Sd38r&@OK9$HFbE52kHIj!hyCzh zjKaR0IXN0bF%Q{Swg`2@?f&&Iu`2B|s3pCCdXVlMfxX;#0v@3q&S(Pbshpz1GFf(O zw>HagJa62HT8jH^-0rW%4%7hBF%r9?rhYJLK*LZ28IOs$3OnF_?1CVkYcvkzh6_;r ze$~nCk&CDqzSfEP=i%%w7hc4tJG&cfMs238sPBV4xCswo1|9b6;x^avu5J_VN8|cO zc#djmH~&GpyHm6SHIpCXUw97d;nxAqfGW2zAH#d{3x#WuG1+0%W_*MiV69$m>X)Ow zFE*iGKY-uk2~>Z@z1>&&XP8U-H15OZnd}ohkIOKyxQ|=g$M_=`VxM(S{wJ2vzK`0q zrG4F3>rK>dj%R0vVHUESHU?QOEB4#xPy>wa@4m{@P&0WPE8;l}(fPkbMQimtYV$ls zt!>f(cYM+@k@iSzfcdER?Zad|jhcZwI2j`bx*wx?s2dfcUN6F7_zBL%YJ)h+I{z!F zjN-yJT!4>oJkA?zwgi7hJxTTuH&fFwiuMZBK;J~&V7K2shWf4e8Y|;(I1_JUH5`-W zKA(r7+~1Z_sfh&`hr3Z7A4c8i6h`7Ns19zS_S++@ft{ao-yd11(=-l8;1X27KVcKR zi;XaGs9VDR7%1k#3M%YBOMITrFc&rQ64Vra=z9p?qJ0z_V|KRt-dKspXdlFfIFor! z$0@_zH|rLRr@aH~<5AyB!eyTz>DII&>!gm8up?$6 z`^*ZF4Q`i_j~QFRdjLJPma;a{lB^+dWH(Wnq4n1XS#le#D-<0wm7S!ByhaL$il)E3 zbf(gl>>&-wTJjEImTf;_%wE~zyTi97F81q-wEmj<%_M=87yWRkBob{N6=vPG5 z*Kfa#k$%0LDO6q}T2d|FD$dBWt+o0?y5fF-`~3&&EErF&HW}Uq^`|YOgfPWQj-iM zEl6vk(%s?xt;FADM4R&!Qj7E=OG#7mCh1DbO9S`({4SSY!Aax|GTXnV@9jBc1?fgo zNfMbxGDr?lnM&4^I%FLgOY(`z7_y6`k-;RBOeA`b_pR3x>yZk&K$-0DeqQtZy3l}g z$?Jrl2Jb6%6Go9{qz_q1UMAtBZt1A1{{&YZl9M+lXWF=&SqaV3n`M*^uQ9w{;kQi_ TgVIayHO;N`|CdL$xtaVQ$WNT< diff --git a/languages/everyalt-de_DE.po b/languages/everyalt-de_DE.po index 674cc9c..6ff80e1 100644 --- a/languages/everyalt-de_DE.po +++ b/languages/everyalt-de_DE.po @@ -3,9 +3,9 @@ # This file is distributed under the same license as the EveryAlt package. msgid "" msgstr "" -"Project-Id-Version: EveryAlt 1.1.0\n" +"Project-Id-Version: EveryAlt 1.1.1\n" "Report-Msgid-Bugs-To: https://hdc.net\n" -"POT-Creation-Date: 2026-09-27 16:47+0000\n" +"POT-Creation-Date: 2026-10-02 23:47+0000\n" "PO-Revision-Date: 2026-09-27 00:00+0000\n" "Last-Translator: HDC \n" "Language-Team: Deutsch \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Übersprungen: Monatliches Ausgabenlimit von %s erreicht. Die Generierung wird im nächsten Monat fortgesetzt, oder erhöhe das Limit in den Einstellungen." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Zeit" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "Anhang-ID" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Status" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Modell" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Meldung / Alt-Text" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Kosten (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Details" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Fehler" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Erfolg" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "EveryAlt kann deinen gespeicherten %1$s-API-Schlüssel nicht mehr lesen, meist weil sich die Sicherheitsschlüssel in wp-config.php geändert haben. Die Generierung mit diesem Anbieter ist pausiert, bis du den Schlüssel erneut eingibst." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAlt ist pausiert: Die geschätzten Ausgaben dieses Monats (%1$s) haben dein Monatslimit von %2$s erreicht. Neue Bilder werden im nächsten Monat verarbeitet, oder du kannst das Limit erhöhen." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "Du hast keine Berechtigung dafür." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Unbekannter Anbieter." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Gib oben einen API-Schlüssel ein oder speichere zuerst einen Schlüssel, um den gespeicherten zu prüfen." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "Der API-Schlüssel ist gültig." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "Der API-Schlüssel konnte nicht geprüft werden. Prüfe, ob der Schlüssel stimmt und API-Zugriff hat." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Wird im Hintergrund erzeugt: %d verbleibend. Du kannst diese Seite verlassen, es läuft von selbst weiter." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d warten auf einen erneuten Versuch. Sie werden automatisch erneut versucht." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Alles erledigt." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "Pausiert: Monatliches Ausgabenlimit erreicht. Erhöhe das Limit in den Einstellungen oder warte bis zum nächsten Monat." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "Pausiert: Füge in den Einstellungen einen API-Schlüssel für das ausgewählte Modell hinzu." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "%d Bilder zur Warteschlange hinzugefügt." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Diese Bilder waren bereits in der Warteschlange." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "Warteschlange geleert." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Als dekorativ markiert (Alt-Text absichtlich leer gelassen)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d fertig." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Fehler:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "Anfrage fehlgeschlagen" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "Gespeichert!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "Speichern fehlgeschlagen" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "Neu erzeugt!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "Neu erzeugen fehlgeschlagen" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Alt-Text mit EveryAlt erzeugen" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Wähle ein Bild aus oder lade eines hoch, um Alt-Text zu erzeugen." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Wird erzeugt…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Alt-Text erzeugt." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "Alt-Text konnte nicht erzeugt werden." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Als dekorativ markiert: Alt-Text absichtlich leer gelassen." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Übersprungen: Kein API-Schlüssel oder Auto-Generierung deaktiviert." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Übersprungen: API-Schlüssel-Prüfung fehlgeschlagen." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Übersprungen: Kein gültiges Bild oder Datei größer als 4 MB." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Als dekorativ markiert (Alt-Text absichtlich leer gelassen)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "Die API hat keinen Alt-Text zurückgegeben." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Titel] Übersprungen: Kein API-Schlüssel oder Auto-Generierung deaktiviert." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Titel] Übersprungen: API-Schlüssel-Prüfung fehlgeschlagen." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Titel] Übersprungen: Kein gültiges Bild oder Datei größer als 4 MB." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Titel] Die API hat keinen Titel zurückgegeben." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Einstellungen" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Massen-Alt-Text-Generator" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Alt-Text prüfen" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Massen-Bildtitel-Generator" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Bildtitel prüfen" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Protokolle" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "Generierung fehlgeschlagen." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Alt-Text erfolgreich aktualisiert." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Titel erfolgreich aktualisiert." @@ -322,276 +322,278 @@ msgstr "KI-Modell" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "$%1$s Eingabe · $%2$s Ausgabe pro 1 Mio. Tokens" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Alle Modelle lesen das Bild und schreiben Alt-Text und Titel auf dieselbe Weise. Die Preise sind die veröffentlichten Tarife des jeweiligen Anbieters (Stand: September 2026) und können sich ändern. Du bezahlst den Anbieter direkt; EveryAlt stellt dir nie etwas in Rechnung. Die tatsächlichen Kosten jedes Bildes werden im Tab „Protokolle“ erfasst." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Alle Modelle lesen das Bild und schreiben Alt-Text und Titel auf dieselbe Weise. Die Preise sind die veröffentlichten Tarife des jeweiligen Anbieters (Stand: %s) und können sich ändern. Du bezahlst den Anbieter direkt; EveryAlt stellt dir nie etwas in Rechnung. Die tatsächlichen Kosten jedes Bildes werden im Tab „Protokolle“ erfasst." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "%s-Preise" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "API-Schlüssel" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "%s-API-Schlüssel" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Schlüssel gespeichert" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "Kein Schlüssel gespeichert" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Leer lassen, um den bestehenden Schlüssel zu behalten" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "API-Schlüssel einfügen" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Schlüssel prüfen" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Melde dich unter %s an." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Klicke auf “Create new secret key”, gib ihm einen Namen (z. B. “EveryAlt”) und kopiere den Schlüssel. Er wird nur einmal angezeigt." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Hinterlege in deinen OpenAI-Abrechnungseinstellungen eine Zahlungsmethode oder Prepaid-Guthaben; ohne Guthaben schlägt die Generierung fehl." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Datennutzung der OpenAI-API" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "OpenAI verwendet API-Daten standardmäßig nicht zum Trainieren seiner Modelle. Siehe %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Melde dich unter %s bei Google AI Studio an." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Klicke auf “Create API key”, wähle ein Google-Cloud-Projekt aus oder erstelle eines und kopiere den Schlüssel." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Optional: Richte für das Projekt die Abrechnung ein, um von der kostenlosen zur kostenpflichtigen Stufe zu wechseln." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Nutzungsbedingungen der Gemini-API" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Gemini hat eine kostenlose Stufe, aber Google darf Prompts und Bilder aus der kostenlosen Stufe zur Verbesserung seiner Produkte verwenden. In der kostenpflichtigen Stufe (Abrechnung aktiviert) werden deine Inhalte nicht so verwendet. Siehe %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Melde dich unter %s an oder erstelle ein Konto." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Klicke auf “New API key”, gib ihm einen Namen (z. B. “EveryAlt”) und kopiere den Schlüssel." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Hinterlege in deinen DeepInfra-Abrechnungseinstellungen eine Zahlungsmethode oder Guthaben. Ein DeepInfra-Schlüssel funktioniert sowohl für DeepSeek V4.1 Flash als auch für GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Deine Bilder bleiben privat." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfra betreibt diese Modelle auf eigener Infrastruktur in Rechenzentren in den USA und Kanada, ohne Datenspeicherung: Deine Bilder und der erzeugte Text werden nur im Arbeitsspeicher verarbeitet und nicht gespeichert, der Inhalt von Anfragen wird nicht protokolliert und deine Daten werden nie zum Trainieren von Modellen verwendet." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Datenschutz bei DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Datenschutzerklärung" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Trust Center (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "Schlüssel werden verschlüsselt in deiner WordPress-Datenbank gespeichert. Das Bild wird als Base64 an den Anbieter gesendet, daher funktioniert die Generierung auch auf localhost und hinter HTTP-Authentifizierung." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Beim Hochladen automatisch erzeugen" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Alt-Text automatisch erzeugen, wenn Bilder hochgeladen werden" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Bildtitel automatisch erzeugen, wenn Bilder hochgeladen werden" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Neue Uploads" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Im Hintergrund erzeugen (empfohlen): Uploads sind sofort fertig" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Während des Uploads erzeugen: Der Alt-Text ist fertig, wenn der Upload abgeschlossen ist, aber jeder Upload wartet auf die KI" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "Hintergrundaufgaben sind meist innerhalb einer Minute erledigt. Sie laufen über den Zeitplaner von WordPress (WP-Cron) und zusätzlich, solange eine EveryAlt-Seite geöffnet ist. So funktionieren sie auch auf Websites, auf denen WP-Cron blockiert ist, etwa bei passwortgeschützten Websites." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Dekorative Bilder" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Alt-Text bei rein dekorativen Bildern leer lassen" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "Laut den Richtlinien zur Barrierefreiheit (WCAG) sollen dekorative Bilder wie Trennlinien, Abstandshalter und Hintergrundmuster einen leeren Alt-Text haben, damit Screenreader sie überspringen. Hält die KI ein Bild eindeutig für dekorativ, lässt EveryAlt den Alt-Text leer und markiert das Bild im Tab „Alt-Text prüfen“, wo du stattdessen eine Beschreibung anfordern kannst. Im Zweifel beschreibt die KI das Bild." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Monatliches Ausgabenlimit" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Keines" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD pro Monat" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Geschätzte Ausgaben diesen Monat: %s. Ist das Limit erreicht, pausiert die Generierung bis zum nächsten Monat (Bilder in der Warteschlange warten). Leer lassen für kein Limit. Die Schätzungen beruhen auf den veröffentlichten Preisen des jeweiligen Anbieters; maßgeblich ist die Rechnung deines Anbieters." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Bestehende Beiträge" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Alt-Text aus der Mediathek bei Bildern in bestehenden Beiträgen anzeigen, die keinen haben" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Wenn ein Bild in einen Beitrag eingefügt wird, kopiert WordPress den Alt-Text in diesem Moment in den Beitrag. Später erzeugter Alt-Text erscheint daher nicht in älteren Beiträgen. Ist diese Option aktiv, wird leerer Alt-Text in Beiträgen beim Anzeigen der Seite aus der Mediathek ergänzt. Deine Beiträge werden nicht verändert, und im Beitrag geschriebener Alt-Text wird nie ersetzt. Erfordert WordPress 6.0 oder neuer." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Sprache" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automatisch (Website-Sprache: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Sprache für erzeugte Alt-Texte und Titel. „Automatisch“ verwendet die Sprache deiner Website bzw. auf mehrsprachigen Websites mit Polylang oder WPML die Sprache des jeweiligen Bildes." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Max. Abschluss-Tokens" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Maximale Anzahl an Tokens, die das Modell für seine Antwort verwenden kann, einschließlich Reasoning. Standard: 1024. Leer lassen für den Standardwert." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Alt-Text-Prompt" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Anweisung, die mit jedem Bild an die KI geht. Bei Bedarf anpassen. Das Modell soll nur den Alt-Text zurückgeben, ohne Zusatztext." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Bildtitel-Prompt" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Anweisung, die beim Erzeugen von Bildtiteln an die KI geht. Titel sind meist kurz (wenige Wörter). Das Modell soll nur den Titel zurückgeben, ohne Zusatztext." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Einstellungen speichern" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Diese Seite findet alle Bilder in deiner Mediathek ohne Alt-Text und lässt dich schnell mit EveryAlt welchen erzeugen. Für Bilder mit Alt-Text gehe zum Tab Alt-Text prüfen." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Füge zuerst im Tab „Einstellungen“ einen API-Schlüssel für das ausgewählte KI-Modell hinzu." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "Keine Bilder ohne Alt-Text gefunden." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Alle auswählen" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "Keine auswählen" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Alt-Text für Auswahl erzeugen" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Für %s Bild erzeugen" msgstr[1] "Für alle %s Bilder erzeugen" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s Bild" msgstr[1] "%s Bilder" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "„%s“ auswählen" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Bearbeiten" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Bilder, die bereits Alt-Text haben, sowie als dekorativ markierte Bilder (Alt-Text absichtlich leer gelassen). Bearbeiten und speichern oder mit EveryAlt neu erzeugen." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Füge im Tab „Einstellungen“ einen API-Schlüssel für das ausgewählte KI-Modell hinzu, um „Neu erzeugen“ zu nutzen." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "Keine Bilder mit Alt-Text gefunden." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Dekorativ" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Alt-Text für „%s“" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Absichtlich leer: Screenreader überspringen dieses Bild." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Speichern" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Trotzdem beschreiben" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Neu erzeugen" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Diese Seite findet Bilder, deren Titel noch der ursprüngliche Dateiname ist (z. B. „IMG_1234“), und lässt dich schnell mit EveryAlt aussagekräftige Titel erzeugen. Für Bilder mit eigenem Titel gehe zum Tab Bildtitel prüfen." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "Keine Bilder ohne Titel gefunden." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Titel für Auswahl erzeugen" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Bilder, die bereits einen eigenen Titel haben. Bearbeiten und speichern oder mit EveryAlt neu erzeugen." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "Keine Bilder mit eigenem Titel gefunden." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Bildtitel für Datei „%s“" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Ausgaben" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Diesen Monat: %1$s von deinem Limit von %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Diesen Monat: %s (kein Limit festgelegt)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s von %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Genutztes monatliches Ausgabenlimit" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Monat" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Anfragen" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Geschätzte Kosten" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Nach Modell" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Noch keine Ausgaben erfasst." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Geschätzt anhand der pro Anfrage verbrauchten Tokens und der veröffentlichten Preise des Anbieters. Maßgeblich ist die Rechnung deines Anbieters." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Generierungsprotokoll" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Letzte 100 Alt-Text-Generierungen (Erfolge und Fehler)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Als CSV exportieren" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Anhang" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Kosten" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Noch keine Einträge. Erzeuge Alt-Text im Tab Massen oder beim Hochladen, um dieses Protokoll zu füllen." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "Das Bild existiert nicht mehr." diff --git a/languages/everyalt-es_ES.mo b/languages/everyalt-es_ES.mo index dbbf803737fbcd49289a06edf082f5e8c8bae71f..564b91e8cdda59a972cb3f7a026fb9febe89e2dd 100644 GIT binary patch delta 3789 zcmXxm3v`cl9LMqR*wt;D%O<%zo6ROx<}zcfWo>0d3K6NXjmk_+=;Bc#QA$jU64glU zq)c?xDbA^o(m6RNoyh5;taRk$(y8?RJilkZ(`T>W@A?1#zvuV-E>F&V5K+4)!avqF zvc@Q{kl1`jG1qTsf^*mH<*aM5*S2;*-%_bdj}U6U_QNe!QB{#U*jb_j+e=HW*zV%@}I@G zC)gb|uzuJY^D!AmVi)djWmIyx@G$C0-oq1k0rkbB^x6skM2)<4l37bk!tt1j_uxVt zj*S?J1NgCSJQy{zMPYj?>Om_piTj&Rr3+8I4mIMP9fPT{eW;EOVm2PevDlo)WtD6K zM&lG@HLM)9G}YLMXHheDoY8CG|KcYY%{uJDL+I;=OBtS~W-T)7_98Z519rvf^wJHN z;SAh@{V|>o3-MaytF|0(!#Y%d&H0h~PefM9Jk*W*A37I74oolKYF+x>B8O%uYZq>-7cX{Pf8E73cM0o z9jo!FL{iy~>@VAi*W!NETE}O&0hQrk+VfFUyaP)xA=7QbNvNsb5&BW+m#9s69JT3A zp$76#__-g);g01(N36gU)FxbxI!3jq0oJ3|^i9;0e~8g|0CnT9P&Yaee*PO?Mf(D( zzsxJ#eR5IlYp_V?e+(6M@C>p%wgp*E+aI=n$4c6Xy_h!iQ60aI8u&5PKu%%|p2k^t z4z(2Jz1iMwhF(@;~GgR>(z z0my3E&OUBUzePRBU&t8jGS03xT@en%2T-SFCob^m;4l^LVI}=s#|v>2?PVB`8Jx9Z z9EfT!LT$!XsDag?W~>2q<0Gg6{*7@M!`9cHNkm>DR)zbx?{f6(xo`u+T7!Qh`^r}3 zx;5T~efZ+X$gJ7fL2hO|cA{oz2DWud)e1+2d|Ph0^z5)<%lya{!KJ*dz3p`PpjuEwM2(cw&f)Rp!V!(4~;*hu>= z{2VtIx>HoenNFm=1hvO%@C-KiRM;n0SL9~k2+pDXFS2|#yV&e{eU4h1(>NWIm`|*EjOx9<+Dit@s^o$6VGy`oB`C;Wnr&Z2&>_cqtz&v+&6R#Q0hn1{@^ z%|i~3eTK0Zf4dn!56Tw)UQUJ*y(K#lhR##MYLZJz$!wxBkgOnUNHI}S=Pv}c@I4XM zn^@XZLCw&#u>Cx)Csl+=368v$`WEhQ+ei&*DtZ!@EGXKTPmzseL2$+G@?K&6PUJ}2 zqhY&=Zd9%&)58l)U~pWk!!|EeTS9dIVC`j7(VD7gFI14hMDKt~qM}W72YHq}L7paB zuDi&5vYGTJD&>UL2zI>MD$kG?gBthGr!vzu?Do***qkgPb)=TW5tcpp|G`7Jl4O#m zqNAqMqLM})B<;!LMCBTyW30CzuZCd%bau~gb}tvY5*6Oa#!D)A+o>H*3Q00~nZ%M3 zas_EBbHhqMT-bCGBgrE~r)(X$hrC4c$o(Yv_df<@YpBlt0K#ds5o8n5`S!?jq$g=c z9wyrT*+gZSBlxTHuC-koUelXY!r0hUAbLWFF~39w0493Q>t6 zWh9k!Br1=QRYWhG4P*jQ$s$o?EE!GulKaR=Vrl6OBij5G*(`l-!>D$*cI`ZS&YjcB z=X#}cv#Kh*veN2uucB&BWodO}u{Uwe*6h@X?1uf>vtso9l0o(9amC)`vdQJ%MEf6Y CUZr*b delta 3748 zcmXxm32;qU0LJl?CJ|XABC(6SL?Xl%v4)TkOM_Y?_T7tpOHedCtwtmE+GD374J~cT z=nPs$%S?+wbvinYqG&Bs#thSTwEchY+}!cK-#Pcbd+xbsd9wYi&&xADo{AcNTMS1T zX+UQB8*>j&2l2u2W~ebuF%v^D50~L`r~V(NQV$6;Mz>^Q4a{=tQ!s{lF4o7*SQU?B zfH5BPC51tpIEUdFQQesNKE}l3YU;(DT!f8jH467)AfCZszIPGpQoj*lOig@>{4>6h z#?Yjxjp|qeR>Nehjp-Q0^UZJy9XYWO^(M#g4n9GB@d~Zh!w0CI`_$sW7=+na3+Lf1 z%*5O1hfTRz4{nJX*%YUqje5}uSc~VIJPJ{~NfD~YrFFbRV@{zO`Wjo~H<*R5kXbVQ zcj5}dm5TTWYo=8EXTvx5J%BU zG%mrZSd4Aamx~$L5&5dg$1%7A)!r*q`~KX_ESX5ugA_mMAYKRYEAM|Tt7vTWZP#hMHs5dXiD)<%Z!QY}Dbkn*1E4HHk z1l3-HMEjiPsCql>sr}!Rf*M$jOphr>rqi5t>UVG!b^m5;CCo!Ld;rz)>!^$omZyv-`HH39gLzswj zeT?aV%$6xlvU7SB^&)>DeK6J7yIOQ9*a7F_BJL~2mOS6Yw6P5i#C_DqU>N?3y)cx$ zrutCSB6OoVl#d#zBGdyvL3QjJ24V$jt^AJsWSCxTfeSo%93G_}M{hivC|sk!dNS^g zc5c^VI$zv@jF!2TVn-x^6{wMEgnHvN)R5<3D9*+hT#D-0UhIwMF%yG2^RrI7S(5sa zRK{No?MtI+9uZ}vHE#B=DP!6Dq#kox@Yw!uyKnEEcf zjD;C?_hhq|!>Lb4t*v}~j>X9GFl#*Q0gb>J%*Ef3=`zE5@n5gLfSQ_{I0av$=Ge`+ z*2Y}ankd41xZgQnz|D=R@5YgM0gquc^B}L{2K0FP*f*@+mo29+U=^&uGQ5v(;f8*; zLlvksk-*77%t8jwjKy@^iAGNkV!*K2Y(7|?_xo`#- zreHSSK;4iy#18dZtVX>ABe5Jc0++A`UU#nF#|Y{#Fc<@}=sZTCe)D%=JuJrno^P&D z2*V$-IzB+%_{ypK4z=eaQF9%S8uC=sgY!{uy56a8!(8fRSQDdo8;wXCY>K0>6&9dp zJ%tk#GO;InjIC+bqd$I!nyYJ$KjBL1w=o`bhTDeMU;B96wMcpSOS zur$2?H|Q-V5e>K6*ZR;}`-te6qxolNc>e(9Uhgs8@cQf=QKSpe zRCXXbQZ3%UAr?~BG?o&7qTSV>=HC0mCY1-v#Cx>S{@0<^x{l0Nh2ukuS?ajmaRKflafGGe-DcojGx|~T zBjbs7MK;me=tedX9eXX_{}oky!+E~\n" "Language-Team: Español \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Omitido: se alcanzó el límite de gasto mensual de %s. La generación se reanudará el mes que viene, o puedes aumentar el límite en Ajustes." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Hora" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "ID del adjunto" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Estado" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Modelo" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Mensaje / Texto alternativo" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Coste (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Detalles" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Error" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Éxito" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "EveryAlt ya no puede leer tu clave API de %1$s guardada, normalmente porque cambiaron las claves de seguridad de wp-config.php. La generación con ese proveedor está en pausa hasta que vuelvas a introducir la clave." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAlt está en pausa: el gasto estimado de este mes (%1$s) ha alcanzado tu límite mensual de %2$s. Las nuevas imágenes se procesarán el mes que viene, o puedes aumentar el límite." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "No tienes permiso para hacer esto." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Proveedor desconocido." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Introduce una clave API en el campo de arriba, o guarda primero una clave para validar la clave almacenada." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "La clave API es válida." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "No se pudo validar la clave API. Comprueba que la clave sea correcta y tenga acceso a la API." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Generando en segundo plano: quedan %d. Puedes salir de esta página; el proceso continúa por sí solo." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d a la espera de reintento. Se volverán a intentar automáticamente." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Todo listo." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "En pausa: se alcanzó el límite de gasto mensual. Aumenta el límite en Ajustes o espera al mes que viene." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "En pausa: añade una clave API para el modelo seleccionado en Ajustes." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "Se han añadido %d imágenes a la cola." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Esas imágenes ya estaban en la cola." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "Cola vaciada." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Marcada como decorativa (texto alternativo vacío a propósito)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d completadas." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Error:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "La solicitud falló" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "¡Guardado!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "Error al guardar" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "¡Regenerado!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "Error al regenerar" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Generar texto alternativo con EveryAlt" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Selecciona o sube una imagen para generar el texto alternativo." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Generando…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Texto alternativo generado." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "No se pudo generar el texto alternativo." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Marcada como decorativa: texto alternativo vacío a propósito." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Omitido: no hay clave API o la generación automática está desactivada." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Omitido: la validación de la clave API falló." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Omitido: no es una imagen válida o el archivo supera 4 MB." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Marcada como decorativa (texto alternativo vacío a propósito)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "La API no devolvió texto alternativo." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Título] Omitido: no hay clave API o la generación automática está desactivada." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Título] Omitido: la validación de la clave API falló." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Título] Omitido: no es una imagen válida o el archivo supera 4 MB." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Título] La API no devolvió ningún título." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Ajustes" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Generador masivo de texto alternativo" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Revisar texto alternativo" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Generador masivo de títulos de imagen" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Revisar títulos de imagen" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Registros" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "La generación falló." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Texto alternativo actualizado correctamente." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Título actualizado correctamente." @@ -322,276 +322,278 @@ msgstr "Modelo de IA" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "$%1$s entrada · $%2$s salida por 1M de tokens" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Todos los modelos leen la imagen y escriben el texto alternativo y los títulos de la misma forma. Los precios son las tarifas publicadas por cada proveedor a septiembre de 2026 y pueden cambiar. Pagas directamente al proveedor; EveryAlt nunca te cobra. El coste real de cada imagen se registra en la pestaña Registros." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Todos los modelos leen la imagen y escriben el texto alternativo y los títulos de la misma forma. Los precios son las tarifas publicadas por cada proveedor a %s y pueden cambiar. Pagas directamente al proveedor; EveryAlt nunca te cobra. El coste real de cada imagen se registra en la pestaña Registros." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "Precios de %s" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "Clave API" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "Clave API de %s" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Clave guardada" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "No hay ninguna clave guardada" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Deja en blanco para mantener la clave actual" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "Pega tu clave API" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Validar clave" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Inicia sesión en %s." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Haz clic en “Create new secret key”, ponle un nombre (p. ej., «EveryAlt») y copia la clave. Solo se muestra una vez." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Añade un método de pago o créditos de prepago en los ajustes de facturación de OpenAI; la generación fallará hasta que tu cuenta tenga saldo." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Uso de datos de la API de OpenAI" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "De forma predeterminada, OpenAI no usa los datos de la API para entrenar sus modelos. Consulta %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Inicia sesión en Google AI Studio en %s." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Haz clic en “Create API key”, elige o crea un proyecto de Google Cloud y copia la clave." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Opcional: configura la facturación en el proyecto para pasar del nivel gratuito al de pago." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Términos de la API de Gemini" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Gemini tiene un nivel gratuito, pero Google puede usar las instrucciones y las imágenes del nivel gratuito para mejorar sus productos. En el nivel de pago (con la facturación activada), tu contenido no se usa de esa forma. Consulta los %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Inicia sesión o crea una cuenta en %s." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Haz clic en “New API key”, ponle un nombre (p. ej., «EveryAlt») y copia la clave." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Añade un método de pago o créditos en los ajustes de facturación de DeepInfra. Una sola clave de DeepInfra sirve tanto para DeepSeek V4.1 Flash como para GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Tus imágenes siguen siendo privadas." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfra ejecuta estos modelos en su propia infraestructura, en centros de datos de EE. UU. y Canadá, con una política de retención de datos cero: tus imágenes y el texto generado se procesan en memoria y no se almacenan, el contenido de las solicitudes no se registra y tus datos nunca se usan para entrenar modelos." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Privacidad de datos de DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Política de privacidad" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Centro de confianza (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "Las claves se guardan cifradas en tu base de datos de WordPress. La imagen se envía al proveedor en base64, por lo que la generación funciona en localhost y detrás de autenticación HTTP." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Generar automáticamente al subir" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Generar automáticamente el texto alternativo cuando se suban imágenes" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Generar automáticamente los títulos de imagen cuando se suban imágenes" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Nuevas subidas" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Generar en segundo plano (recomendado): las subidas terminan al instante" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Generar durante la subida: el texto alternativo está listo al terminar la subida, pero cada subida espera a la IA" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "Las tareas en segundo plano suelen terminar en menos de un minuto. Se ejecutan con el programador de WordPress (WP-Cron) y también siempre que haya una página de EveryAlt abierta, así que funcionan incluso en sitios donde WP-Cron está bloqueado, como los sitios protegidos con contraseña." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Imágenes decorativas" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Dejar vacío el texto alternativo de las imágenes puramente decorativas" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "Las pautas de accesibilidad (WCAG) indican que las imágenes decorativas, como separadores, espaciadores y fondos con patrones, deben tener el texto alternativo vacío para que los lectores de pantalla las omitan. Cuando la IA considera que una imagen es claramente decorativa, EveryAlt deja su texto alternativo vacío y la marca en la pestaña Revisar texto alternativo, donde puedes pedir una descripción. En caso de duda, la IA describe la imagen." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Límite de gasto mensual" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Ninguno" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD al mes" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Gasto estimado este mes: %s. Al alcanzar el límite, la generación se pausa hasta el mes que viene (las imágenes en cola esperan). Déjalo vacío para no tener límite. Las estimaciones usan los precios publicados por cada proveedor; la factura de tu proveedor es la referencia válida." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Entradas existentes" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Mostrar el texto alternativo de la biblioteca de medios en las imágenes ya incluidas en entradas que no lo tengan" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Cuando se añade una imagen a una entrada, WordPress copia su texto alternativo en la entrada en ese momento, por lo que el texto alternativo generado después no aparece en las entradas antiguas. Con esta opción activada, el texto alternativo vacío de las entradas se completa desde la biblioteca de medios al mostrar la página. Tus entradas no se modifican y el texto alternativo escrito en una entrada nunca se sustituye. Requiere WordPress 6.0 o posterior." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Idioma" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automático (idioma del sitio: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Idioma del texto alternativo y los títulos generados. «Automático» usa el idioma de tu sitio o, en sitios multilingües con Polylang o WPML, el idioma de cada imagen." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Tokens de finalización máximos" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Número máximo de tokens que el modelo puede usar en su respuesta, incluido el razonamiento. Valor predeterminado: 1024. Déjalo vacío para usar el valor predeterminado." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Instrucción para el texto alternativo" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Instrucción enviada a la IA con cada imagen. Edítala según necesites. El modelo debe devolver solo el texto alternativo, sin texto adicional." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Instrucción para el título de imagen" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Instrucción enviada a la IA al generar títulos de imagen. Los títulos suelen ser cortos (unas pocas palabras). El modelo debe devolver solo el título, sin texto adicional." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Guardar ajustes" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Esta página encuentra todas las imágenes de tu biblioteca de medios que aún no tienen texto alternativo y te permite generar uno con EveryAlt rápidamente. Para ver las imágenes que ya tienen texto alternativo, ve a la pestaña Revisar texto alternativo." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Primero añade una clave API para el modelo de IA seleccionado en la pestaña Ajustes." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "No se encontraron imágenes sin texto alternativo." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Seleccionar todo" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "No seleccionar ninguna" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Generar texto alternativo para los seleccionados" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Generar para %s imagen" msgstr[1] "Generar para las %s imágenes" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s imagen" msgstr[1] "%s imágenes" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "Seleccionar «%s»" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Editar" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Imágenes que ya tienen texto alternativo, además de las imágenes marcadas como decorativas (texto alternativo vacío a propósito). Edita y guarda, o regenera con EveryAlt." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Añade una clave API para el modelo de IA seleccionado en la pestaña Ajustes para usar Regenerar." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "No se encontraron imágenes con texto alternativo." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Decorativa" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Texto alternativo de «%s»" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Vacío a propósito: los lectores de pantalla omiten esta imagen." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Guardar" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Describir de todos modos" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Regenerar" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Esta página encuentra las imágenes cuyo título sigue siendo el nombre de archivo original de la subida (p. ej., «IMG_1234») y te permite generar títulos descriptivos con EveryAlt rápidamente. Para ver las imágenes que ya tienen un título personalizado, ve a la pestaña Revisar títulos de imagen." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "No se encontraron imágenes que necesiten título." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Generar títulos para los seleccionados" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Imágenes que ya tienen un título personalizado. Edita y guarda, o regenera con EveryAlt." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "No se encontraron imágenes con título personalizado." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Título de imagen para el archivo «%s»" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Gasto" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Este mes: %1$s de tu límite de %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Este mes: %s (sin límite establecido)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s de %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Límite de gasto mensual utilizado" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Mes" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Solicitudes" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Coste estimado" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Por modelo" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Aún no se ha registrado ningún gasto." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Estimado a partir de los tokens de cada solicitud y los precios publicados por el proveedor. La factura de tu proveedor es la referencia válida." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Registro de generación" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Últimos 100 intentos de generación de texto alternativo (éxitos y fallos)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Exportar como CSV" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Adjunto" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Coste" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Aún no hay entradas en el registro. Genera texto alternativo desde la pestaña Masivo o al subir imágenes para completar este registro." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F \\d\\e Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "La imagen ya no existe." diff --git a/languages/everyalt-fr_FR.mo b/languages/everyalt-fr_FR.mo index 16ebba0ccdab85baeeb60b5516e0c691e8110141..0a287abc08db62de85cfa80596df62c07f43cf55 100644 GIT binary patch delta 3784 zcmY+`2~bs49LMoL^Z;=I6-8vxC!wNbh6|#ihKK~3W-hr!qJUWVbKSlVyU;Jg z7~GG|@HmE;`Rp_Y<2dmpw!x&<3?jg62(F`F%gIGJl&i+!K@7#u@dlp9jxxfmJzhip zS$I2wx1t8t7hB;_?0};&j{93a2dSJ`iF%TEumKxUUp&iIqw#mt$Xi94wZKT6gz@+Y zF2-!UgdXhAFYCsGP&1q9_Gh9Vv#?v?fZ{cxS zC7X=Fn2W526`+=;6ffZ)s2MxY=r!=`_yGp94sYX0^ywE@GdxXA1v2Zl3+u2BJK=1u z(izv_gSZF#VK^UV;0WZawifTlS5VixgGC1{w@aNN2nX0LEWgq{roca zrr(IVUSdz@KB=gFI%aDBkK;fW*n}*P?Ln5)PPqLmSVX@~64Qo0)P-L|4g4F_Kz_s! z{2AxrRn$@x+~zD%8U99pFJ8lKy|gr}ehEyY^c?Cz{zArJ9of4ox=b8^%TT+e9vAtzz-bN!b0Vj&bE7p_OTPlO z9kbYL_uyn~fqPL!`WA-banu0Lpo;ApYJf46yk;m7XJImG+g0Lu?t1`z`#7UtR z#&tu|n1AZSMhr2dplu%N39C>e-Gv(YA>4qShMG;s0~mzOhdJMGjV!Chy8Uca@lJHl z&q2*}6}IDiWV$mmN$Ec4pdTmrXG8cgAAP8z`V}>Wf1{qzhC45uFdP|RwhuM%-!h!< zb!6{)I3JH+alShxt_SgqbgDiUqv_vkY%)lyUeEH6x5C0 z!bkCI495xCPSNFK4E^QUfLl>Zu`I_awsI_>{{|k#$WdmWpzj<9J2|Ks?NoQp-TcQu ze>w(Z(ipR2*aydBBQjRvN601?4*JBu-!ANYtP;A5% z7K* ztJr`U?1C@YtGa$H^Bsg^u^Udr&bTa>`PYfd#(ex%}P^S!@(@Kvjex1V!|Z*x4a(kKCS;=Qc0Q`g=y59zqR4#b7Uvc zTB@nYH0^402(JQrN}ZdUrgs>b?Ve*r{JTYktd>Sr5#8UO)sLH6SNAv@3yG$9A1NYg zn)(@J3t3N|Co0s3$YbOs(vPSW5LVA$*y^ioBD?%Y+c&J& z?G!tI!JJtICEmP}Ud4sp{JhcvZ(;F*qP$YiNbi*L>g4!<M5d4 delta 3744 zcmYk;c~F&A7{~GFCWL^2q6oPGE`Wpyn2Mz-nG0lYnW=@QhM9^H7-^Z87E4jda>o?Q zG}3maZ7j0}t3N6$YNoPGYs|8oG8-E!hrYk}9A-M>!{?lHFYno&^WxFQ(A$ln@R5Xw z4My2RbRiZ*n*D%p#_)qOI?k*&7GfK$z-3tF+s!zbcAI!J{YoJw;3VI^71L;!V`p5C zt?@;SG7H-qR3^~z4z|PgZOs;i%zEJ}+O>2p#&n+A73(k>-@;hF_dZ@syQ#fdBA!D2 zS*s3aJkpX-6U)GhFb|V(7^4=jhbW3G zB^$%CFT{z+DcDrh(agnP@C0hdnwY&Nej4A$zwuRkm-7hg7nd+SZOsZ~*KH#<;M3R* zZ{#T{csI_)TD%Nf@!@dHN4{!Hu^6|Yp7$5(`H}oGr(_*a17{#>wIeC)zdkrihgKGy zYF2~Ou@+C^VqB5t&OFqehtrNlt!Ni+#piJ-7WHsDRgI~%-$d=;x7Z)Q#{rn!)3wL- z47;RRPRE^muoX3-cD>vd_w;5V$7(sKEFOi*f!W9+?RHGX8sri7g75zvnY*1q-JZmB zvpLuuIUQRWrV>GACz4-Qk5}V<)Q+^ua1)w>m(!k)+Tz_)#DY6Z)yG90LAz+?fIx{*o`|j z9{XY}R-uw}HAZ6{YT##3N%je9Vt=4^rWt2rYf@j=Z2^AAzz^ac+P5&9@LnqM`R*OR z5B1>VSi%>7Lw4V;C-ao$Rj8e*L+#8y)Xp46-HxA;L}yuULg_ex=4c#;wK$mPoHPhv&nQy}y3|(n<6RyQbJcZhkGstmTvu|e)bxE6#>K}t)23&$2 zXrCMAb|$XCnN$!qqi(7ED8pH(WNPwX_!_msA8;$4#*rbjHCHiv+Mf@15Be7)=#S*? zenWo@sjY>az<6xNP8dJZ>`%->(!)~1qg;}V$7(v3BFAP?qj~M(VAMdHu@VoU9yqYj zCEFhjSG3{C8*>=`jK<4TVw;FfiZqyDGkq}W>g50{Wl~U%Sx zYf-=WI%eT#r~%Jo9%fB+?P6~=Ce!~K*5N0RHA=@w$pTg<*5o$-WC+UsL`9DU5 zMO!^q;8~oB^RDMVBKRR{f(4WP)?$0wmDmQWQJ-(ZID7>=Vk1W5VXVUAsK1hPZg5BT z0LC)D)lt!k_xcYGqLS_y#^Z08fX$eQ2~*5CKFdT6vS?R-qZ8NMB!&i-o)chk`U8&E6$08=k8`w|DzK6kU*x?IjhIWiV6$4b;r zyo3dK9z#eD2FckMXA_+W?ZiqVnRtp&xn1YajSAjUj1`o5-Y2n^SWB$-eQmvB7@eegAh&Vd~`O`h(1J1S>Y?Uc<;g(VvKKZ zK^@uu%X}L55K7kW#KXiDL`xwrgVIm;U!|O=Ar`7ZdCXz=dN+IT#2rLWf?Nx(Aq2N2 z8zYFDi3DOY!Br3PVjZf~IfDN|sd|AQKj>Bh?g?t{7A&EjLu@665=zu0f)`oviq1!s zs~y2l-IDu>D~Sh)i-}Q06_HD9BCaA@N~T*sH=v~l=Mo!;3g7oM>P57i&^65\n" "Language-Team: Français \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Ignoré : limite de dépenses mensuelle de %s atteinte. La génération reprendra le mois prochain, ou augmentez la limite dans Réglages." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Heure" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "ID de la pièce jointe" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Statut" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Modèle" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Message / Texte alternatif" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Coût (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Détails" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Erreur" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Succès" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "EveryAlt ne peut plus lire votre clé API %1$s enregistrée, généralement parce que les clés de sécurité de wp-config.php ont changé. La génération avec ce fournisseur est suspendue jusqu'à ce que vous saisissiez de nouveau la clé." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAlt est en pause : les dépenses estimées de ce mois (%1$s) ont atteint votre limite mensuelle de %2$s. Les nouvelles images seront traitées le mois prochain, ou vous pouvez augmenter la limite." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "Vous n'avez pas la permission d'effectuer cette action." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Fournisseur inconnu." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Saisissez une clé API dans le champ ci-dessus, ou enregistrez d'abord une clé pour valider celle enregistrée." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "La clé API est valide." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "La clé API n'a pas pu être validée. Vérifiez qu'elle est correcte et qu'elle a accès à l'API." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Génération en arrière-plan : %d restante(s). Vous pouvez quitter cette page, la génération continue d'elle-même." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d en attente d'une nouvelle tentative. Elles seront relancées automatiquement." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Terminé." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "En pause : limite de dépenses mensuelle atteinte. Augmentez la limite dans Réglages ou attendez le mois prochain." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "En pause : ajoutez une clé API pour le modèle sélectionné dans Réglages." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "%d images ajoutées à la file d'attente." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Ces images étaient déjà dans la file d'attente." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "File d'attente vidée." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Marquée comme décorative (texte alternatif laissé vide volontairement)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d terminée(s)." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Erreur :" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "La requête a échoué" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "Enregistré !" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "L'enregistrement a échoué" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "Régénéré !" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "La régénération a échoué" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Générer le texte alternatif avec EveryAlt" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Sélectionnez ou téléversez une image pour générer le texte alternatif." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Génération…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Texte alternatif généré." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "Impossible de générer le texte alternatif." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Marquée comme décorative : texte alternatif laissé vide volontairement." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Ignoré : pas de clé API ou génération automatique désactivée." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Ignoré : la validation de la clé API a échoué." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Ignoré : image non valide ou fichier supérieur à 4 Mo." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Marquée comme décorative (texte alternatif laissé vide volontairement)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "L'API n'a renvoyé aucun texte alternatif." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Titre] Ignoré : pas de clé API ou génération automatique désactivée." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Titre] Ignoré : la validation de la clé API a échoué." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Titre] Ignoré : image non valide ou fichier supérieur à 4 Mo." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Titre] L'API n'a renvoyé aucun titre." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Réglages" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Générateur en masse de texte alternatif" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Réviser le texte alternatif" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Générateur en masse de titres d'image" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Réviser les titres d'image" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Journaux" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "La génération a échoué." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Texte alternatif mis à jour avec succès." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Titre mis à jour avec succès." @@ -322,276 +322,278 @@ msgstr "Modèle d'IA" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "%1$s $ en entrée · %2$s $ en sortie par million de jetons" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Tous les modèles analysent l'image et rédigent le texte alternatif et les titres de la même manière. Les prix correspondent aux tarifs publiés par chaque fournisseur en septembre 2026 et peuvent changer. Vous payez directement le fournisseur ; EveryAlt ne vous facture jamais rien. Le coût réel de chaque image est enregistré dans l'onglet Journaux." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Tous les modèles analysent l'image et rédigent le texte alternatif et les titres de la même manière. Les prix correspondent aux tarifs publiés par chaque fournisseur en %s et peuvent changer. Vous payez directement le fournisseur ; EveryAlt ne vous facture jamais rien. Le coût réel de chaque image est enregistré dans l'onglet Journaux." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "Tarifs %s" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "Clé API" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "Clé API %s" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Clé enregistrée" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "Aucune clé enregistrée" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Laisser vide pour conserver la clé actuelle" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "Collez votre clé API" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Valider la clé" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Connectez-vous sur %s." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Cliquez sur “Create new secret key”, donnez-lui un nom (par ex. “EveryAlt”) et copiez la clé. Elle n'est affichée qu'une seule fois." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Ajoutez un moyen de paiement ou des crédits prépayés dans les paramètres de facturation OpenAI ; la génération échouera tant que votre compte n'aura pas de crédit." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Utilisation des données de l'API OpenAI" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "Par défaut, OpenAI n'utilise pas les données de l'API pour entraîner ses modèles. Voir %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Connectez-vous à Google AI Studio sur %s." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Cliquez sur “Create API key”, choisissez ou créez un projet Google Cloud, puis copiez la clé." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Facultatif : activez la facturation sur le projet pour passer de l'offre gratuite à l'offre payante." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Conditions de l'API Gemini" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Gemini propose une offre gratuite, mais Google peut utiliser les invites et les images de l'offre gratuite pour améliorer ses produits. Avec l'offre payante (facturation activée), votre contenu n'est pas utilisé de cette façon. Voir les %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Connectez-vous ou créez un compte sur %s." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Cliquez sur “New API key”, donnez-lui un nom (par ex. “EveryAlt”) et copiez la clé." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Ajoutez un moyen de paiement ou des crédits dans les paramètres de facturation DeepInfra. Une seule clé DeepInfra fonctionne pour DeepSeek V4.1 Flash et GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Vos images restent privées." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfra exécute ces modèles sur sa propre infrastructure, dans des centres de données situés aux États-Unis et au Canada, avec une politique de conservation zéro des données : vos images et le texte généré sont traités en mémoire sans être stockés, le contenu des requêtes n'est pas journalisé et vos données ne sont jamais utilisées pour entraîner des modèles." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Confidentialité des données chez DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Politique de confidentialité" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Centre de confiance (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "Les clés sont stockées chiffrées dans votre base de données WordPress. L'image est envoyée au fournisseur en base64, la génération fonctionne donc en localhost et derrière une authentification HTTP." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Générer automatiquement à l'upload" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Générer automatiquement le texte alternatif lors du téléchargement des images" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Générer automatiquement les titres d'image lors du téléversement des images" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Nouveaux téléversements" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Générer en arrière-plan (recommandé) : les téléversements se terminent immédiatement" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Générer pendant le téléversement : le texte alternatif est prêt à la fin du téléversement, mais chaque téléversement attend l'IA" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "Les tâches en arrière-plan se terminent généralement en moins d'une minute. Elles s'exécutent via le planificateur de WordPress (WP-Cron), ainsi qu'à chaque fois qu'une page EveryAlt est ouverte : elles fonctionnent donc même sur les sites où WP-Cron est bloqué, comme les sites protégés par mot de passe." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Images décoratives" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Laisser le texte alternatif vide pour les images purement décoratives" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "Les règles d'accessibilité (WCAG) indiquent que les images décoratives, comme les séparateurs, les espaceurs et les motifs d'arrière-plan, doivent avoir un texte alternatif vide pour que les lecteurs d'écran les ignorent. Lorsque l'IA juge qu'une image est clairement décorative, EveryAlt laisse son texte alternatif vide et la signale dans l'onglet Réviser le texte alternatif, où vous pouvez demander une description à la place. En cas de doute, l'IA décrit l'image." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Limite de dépenses mensuelle" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Aucune" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD par mois" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Dépenses estimées ce mois-ci : %s. Lorsque la limite est atteinte, la génération est suspendue jusqu'au mois prochain (les images en file d'attente patientent). Laissez vide pour ne fixer aucune limite. Les estimations reposent sur les prix publiés par chaque fournisseur ; seule la facture de votre fournisseur fait foi." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Publications existantes" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Afficher le texte alternatif de la médiathèque sur les images déjà présentes dans les publications qui n'en ont pas" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Lorsqu'une image est ajoutée à une publication, WordPress copie son texte alternatif dans la publication à ce moment-là : un texte alternatif généré plus tard n'apparaît donc pas dans les publications plus anciennes. Avec cette option activée, les textes alternatifs vides des publications sont complétés à partir de la médiathèque lors de l'affichage de la page. Vos publications ne sont pas modifiées, et un texte alternatif rédigé dans une publication n'est jamais remplacé. Nécessite WordPress 6.0 ou version ultérieure." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Langue" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automatique (langue du site : %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Langue des textes alternatifs et des titres générés. « Automatique » utilise la langue de votre site, ou la langue propre à chaque image sur les sites multilingues utilisant Polylang ou WPML." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Jetons de complétion max" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Nombre maximal de jetons que le modèle peut utiliser pour sa réponse, raisonnement compris. Par défaut : 1024. Laissez vide pour utiliser la valeur par défaut." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Invite pour le texte alternatif" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Instruction envoyée à l'IA avec chaque image. Modifiez si besoin. Le modèle doit renvoyer uniquement le texte alternatif, sans formulation supplémentaire." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Invite pour le titre d'image" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Instruction envoyée à l'IA lors de la génération des titres d'image. Les titres sont généralement courts (quelques mots). Le modèle doit renvoyer uniquement le titre, sans formulation supplémentaire." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Enregistrer les réglages" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Cette page trouve toutes les images de votre médiathèque sans texte alternatif et vous permet d'en générer rapidement avec EveryAlt. Pour voir les images qui en ont déjà un, allez dans l'onglet Réviser le texte alternatif." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Veuillez d'abord ajouter une clé API pour le modèle d'IA sélectionné dans l'onglet Réglages." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "Aucune image sans texte alternatif trouvée." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Tout sélectionner" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "Tout désélectionner" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Générer le texte alternatif pour la sélection" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Générer pour %s image" msgstr[1] "Générer pour les %s images" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s image" msgstr[1] "%s images" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "Sélectionner « %s »" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Modifier" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Images qui ont déjà un texte alternatif, ainsi que les images marquées comme décoratives (texte alternatif laissé vide volontairement). Modifiez et enregistrez, ou régénérez avec EveryAlt." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Veuillez ajouter une clé API pour le modèle d'IA sélectionné dans l'onglet Réglages pour utiliser Régénérer." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "Aucune image avec texte alternatif trouvée." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Décorative" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Texte alternatif pour « %s »" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Vide volontairement : les lecteurs d'écran ignorent cette image." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Enregistrer" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Décrire quand même" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Régénérer" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Cette page trouve les images dont le titre est encore le nom de fichier brut du téléversement (par ex. « IMG_1234 ») et vous permet de générer rapidement des titres descriptifs avec EveryAlt. Pour voir les images qui ont déjà un titre personnalisé, allez dans l'onglet Réviser les titres d'image." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "Aucune image nécessitant un titre trouvée." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Générer les titres pour la sélection" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Images qui ont déjà un titre personnalisé. Modifiez et enregistrez, ou régénérez avec EveryAlt." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "Aucune image avec un titre personnalisé trouvée." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Titre d'image pour le fichier « %s »" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Dépenses" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Ce mois-ci : %1$s sur votre limite de %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Ce mois-ci : %s (aucune limite définie)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s sur %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Limite de dépenses mensuelle utilisée" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Mois" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Requêtes" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Coût estimé" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Par modèle" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Aucune dépense enregistrée pour l'instant." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Estimation basée sur les jetons utilisés par chaque requête et sur les prix publiés par le fournisseur. Seule la facture de votre fournisseur fait foi." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Journal des générations" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Dernières 100 tentatives de génération de texte alternatif (succès et échecs)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Exporter en CSV" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Pièce jointe" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Coût" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Aucune entrée dans le journal pour l'instant. Générez du texte alternatif depuis l'onglet En masse ou en téléchargeant des images pour remplir ce journal." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "L'image n'existe plus." diff --git a/languages/everyalt-it_IT.mo b/languages/everyalt-it_IT.mo index eb4bbfd646dac3fca7817292326ac68b097ce698..a386d272f0b62b5c54eee2f8c38416a061c49734 100644 GIT binary patch delta 3788 zcmY+_2~bs49LMoLil8DODqt%5*vyR-Q6x9qP*JlicXAV z@fbG6GZ<>-xARmcaNz<*VfU5{BFJnIuBUyHi)A>NUgPi-Hp8#+4%Xp4vb9+>)+7Hc zvJJsR)WFg(90y}8j>9-HK}VHI}7$LXaL zK8uBT5c^;x9}dS6$XBf#XW#);e~tN(`j0|Z$$Y3AryzKnKzZ1o_EOXopTsfPvWweG`4OIn*YsLv6Y% zsDa$_KKD1{a5v>bTP(nM)Fv!P9iyG70UkrG=?T=6e}EzQ8S2Jgpl)=@`}|kzN&9b9 ze_gt{`(&WnLorL|e*zVCumf2hJBTc&)q3sUu!we4ccu;fsE*%64g7o5KrUk_Uc>o# z6SWliJ=_vi;C0%Eu^#uNXlYpgZS<-qJcVp*dk?k77mH&IU>!(BCnNvJ7I#|1&0 z0A#hSx|dtiZ&43&0~v$e!`aoQ%ff#6H0rceW0{{0&QsAB$E3NAm*A_k*I)!Da@Iy+ zZ`44RqmEBGHp9Kh{<0&e2RMh#@tS8n&ZZsA5#SYK`S=m{U5Wl`E(~Q@`|&2~iT7l< zfz)6IUp#{vU=TY{yFCRpL*r22FGMXxIfmh8^x?~%r}07Bb@(v$9Kgn<-_-+{e>SpJ z4s=gYgX-Xt=Wm!pyB^o#q(QEI5u4CXAMCzA5ZNX+8ujEQsLi_)H6vSaIyZa^qiBZ> zaRZJU;&+wKT*%~uo>+**s7>_^YE#vrrv5T6!yDL%4vUAnnbY+|<@0L%688;v z$9M4v_hv0eE!{5s9Z&eFXyp4i3tGdoxE%jLZJMHyX7pwIQB!>x=U^xsLLEJcZEy|h zg|ZXR<4M#KtsU)7(_YM_{V|@#!=E5A*6BS|tK7(4T z*HJU{HnNfJ2jpN_^h54Fkd3Ldm!V$KM{zZNgg(q-)ZEAlFbU^l0ajw6&i_ADG<9>> znhe@j;9UF+Cu8~}Zpt^HzIPoXFl?e5U^~8`>33wQjT{}9hOgV|2@`X6WTV_8G;&63w#=*u`6ytEzx`UFJ8v9AhRE*xi?`f zXSgxf2cVW96MdMM!-Qx=>$spPJAfMb3Dk%`#lPt2Yt%q%XSg5MquT9ex>ss8vVUzA z4#u;n8-~r|rG+X7NqaJgBoZxEU_su1%_M{5k_AMiAE_XfL_1!EQyF+QtNtWmi~O&w zyQ}pqbsbfem&tBYOqdkwMYN<-wEl<5HquboU&hh}iq`o>@(L*nTye*zyH|e#N0aBg zb_1H#O!ByQfe8#8*HW*|3)R*T-QPCp&s`M6cLqs$!xNVY#>{RmTN9q zO7@XHL?xfF8iA9ew#p9jTA;@LwO;dF!)AGEGd3nG$pNyHG$Sm#JxW%Q^`r}FD6Oez z52UNK{6U@#FzDC?RAxi6#3{Mf%P9kWj+~2CXjSeNEVaML}$G@i6<(dB#$JJwnXK5 zvXLwzd&pFxl0ur0iR3}jn=B{eh$SUgCZ@$#&5QUdxKVOR)%e!aJ9b#G=!rS`CBEE} rl;Q$kUT$f=ub_BQQEqAQNZ+)|L#YWtsa3V9b3^t0VfPdO%ScsW;5ks*pU)GH~pk_ARZ)c+(bPC3Ce=DKVj3-%x8gX^JH#PP#s-w@a6Ml(f z@D{R4_9%~C8%H6lVB=9slaIgQFQ^$i#ppHg8+Zh7<41Ui^$6;V3mBfJrW~1ddkJfB zCnjPpy(Hm6%*RT67;AB|Kc*p<+G3o5ucG?9h3Y?yFSAP42zBGu$g|poB<5cyZgN0R z79KFGz=>FizvFx?Pj+h_(wxp|N1~o+J8r=}*awF`=w@mS259d?&ER?LikGk(#qm~cF3|?Dk_TyqjF#>@{l$Q16YA{VSD}Kr;)MSAE@2a zxRu#-Y>upstqxKNrScY%UsjC+@BnH?YPEI)8ize-7oeti2M)#1HZBQ=qo#U??}xsJ zQAv0Tm2?+S1G(;>58kCxmjh93^6A(Zm4u5?+h`qXfN!AIbUW(FYp^yRMBVr+)Q!&g z=fB5}w6CE0Yue7;Ck55+iUYO(2U1Z7Ymw!#N@O|hfZzTB3u%Y7XDeX|s^e{_fuBST z~OE?oRqn2WPid&*3c!T!q_z$jsNK3=|uclW$;k!s;+xw_BK88tn8TI55+*MN; zkD9`ESQKK`9a$}_PIYVgE$TsjMaE$D*t<%)bnK2rIG^uTV|(sz$z5EBk6{(<9E`@> zI2gm(YZ|~v)V7&~;W!V;D_e#d_)d(#FMW^WWZGwuSB7P<1rBlJvG@V)ct#U^o60v- z^rXdUZXg?Q02fxFp5Ui+H-!zzK+Q}?)b&}YB`Cm1EX4pW^?ehE(>{cwFt#V}7y8XZ z^4I2OF#mdjtr@O^!@kEcm*eNK4AXkK_I?bbozUA|pM<1`wMRX9Ha5g5s2Q1qIoxm~ z#?Zdn#|_x}I>Y-0-HRiZ1NmGq3YAQsqLS$lYU+>T0{jk>=y22{ZYGNRxsEFE3g=(O zQ&`sD-?jtX8?^wnbc^vCZbA*bEXW?v4D7{)cm|a$BLN5x znsINtjw#svG56%ta2V}E)LQTJ+ff`$q@9b~aUp6+0$fxFdt<2f{~#)QqAYBVQ&DTR z5;aAyAPH<=AREH|#*UaW!oBOCK)sqP@HyO$0c^vlb)!sdfg^D`&c%E@j|tlUgGfyV zZIkh7+=JPeFxpLd5o(H0V>DjH7`%&hvHlqM_dz^H((Zy9P#@Gb%|>oxlTq97d;k1D z7^V{q#=2yQLtW4o)p0+pk6FICs2dj``Df2!EFQ!tJc*6*BF@CWupUn1X_Q077{CqK z0c$W=PUR96by)DY`&rzLVYGkr{S`H!Yq%Ky#0cs1fhNKk4XW)JS(va9=!!YTw1~m@?7*3Qoh` zwD%%k^Ab@5R-S0r+)u<2s|n5U+l0z2EzA%qr)2-mfI%Y`@N|+v|jq^-2Gj zW}_L=i&#%+R#Y+^-ro>&scTDD6I#}2Vi=(kEaM}bXhmpESTcKvxL3;k$~5137(wtF z@XD)vDoOue3TP}Mw4~b7tB9V&y+WFJrHk7bWG2lDVx~Lpy_r;f)^ES!I|tt&luV?C z_pS#oXY^7EB_YM?=L7-@AEdMf3Okm^6TlifJh~_5Pb-3u_grX z7w?6XhAIOb-ltwTdI>2RmlFxZU}7oJiFldlN8BrIwEikP9NuR>pPPvi|JY6}B~}pq ziPpq}L?O|Q$RkvqA)Y55Al4F7h$V!|B;qZi9l`s}`;Us=hPuZ46MGOQ618-I@|45- zaVqlbLIa*byhvmb=$zWQTTM>G goWzYMIwgms*8I`w={nIRd8ImCoaatYN`J5Ae{m0%O8@`> diff --git a/languages/everyalt-it_IT.po b/languages/everyalt-it_IT.po index 3465e6f..3dd5c92 100644 --- a/languages/everyalt-it_IT.po +++ b/languages/everyalt-it_IT.po @@ -3,9 +3,9 @@ # This file is distributed under the same license as the EveryAlt package. msgid "" msgstr "" -"Project-Id-Version: EveryAlt 1.1.0\n" +"Project-Id-Version: EveryAlt 1.1.1\n" "Report-Msgid-Bugs-To: https://hdc.net\n" -"POT-Creation-Date: 2026-09-27 16:47+0000\n" +"POT-Creation-Date: 2026-10-02 23:47+0000\n" "PO-Revision-Date: 2026-09-27 00:00+0000\n" "Last-Translator: HDC \n" "Language-Team: Italiano \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Saltato: raggiunto il limite di spesa mensile di %s. La generazione riprende il mese prossimo, oppure aumenta il limite in Impostazioni." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Ora" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "ID allegato" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Stato" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Modello" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Messaggio / Testo alternativo" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Costo (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Dettagli" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Errore" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Successo" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "EveryAlt non riesce più a leggere la chiave API %1$s salvata, di solito perché le chiavi di sicurezza in wp-config.php sono cambiate. La generazione con questo provider è in pausa finché non reinserisci la chiave." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAlt è in pausa: la spesa stimata di questo mese (%1$s) ha raggiunto il tuo limite mensile di %2$s. Le nuove immagini verranno elaborate il mese prossimo, oppure puoi aumentare il limite." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "Non hai il permesso di fare questa operazione." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Provider sconosciuto." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Inserisci una chiave API nel campo sopra, oppure salva prima una chiave per validare quella memorizzata." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "La chiave API è valida." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "Impossibile validare la chiave API. Verifica che la chiave sia corretta e abbia accesso all'API." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Generazione in background: %d rimanenti. Puoi lasciare questa pagina; il processo continua da solo." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d in attesa di un nuovo tentativo. Verranno ritentati automaticamente." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Tutto fatto." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "In pausa: limite di spesa mensile raggiunto. Aumenta il limite in Impostazioni o attendi il mese prossimo." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "In pausa: aggiungi una chiave API per il modello selezionato in Impostazioni." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "Aggiunte %d immagini alla coda." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Queste immagini erano già in coda." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "Coda svuotata." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Contrassegnata come decorativa (testo alternativo lasciato vuoto di proposito)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d completate." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Errore:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "Richiesta non riuscita" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "Salvato!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "Salvataggio non riuscito" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "Rigenerato!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "Rigenerazione non riuscita" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Genera testo alternativo con EveryAlt" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Seleziona o carica un'immagine per generare il testo alternativo." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Generazione in corso…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Testo alternativo generato." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "Impossibile generare il testo alternativo." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Contrassegnata come decorativa: testo alternativo lasciato vuoto di proposito." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Saltato: nessuna chiave API o generazione automatica disattivata." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Saltato: validazione della chiave API fallita." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Saltato: immagine non valida o file superiore a 4 MB." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Contrassegnata come decorativa (testo alternativo lasciato vuoto di proposito)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "L'API non ha restituito testo alternativo." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Titolo] Saltato: nessuna chiave API o generazione automatica disattivata." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Titolo] Saltato: validazione della chiave API fallita." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Titolo] Saltato: immagine non valida o file superiore a 4 MB." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Titolo] L'API non ha restituito alcun titolo." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Impostazioni" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Generatore massivo di testo alternativo" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Rivedi testo alternativo" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Generatore massivo di titoli immagine" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Rivedi titoli immagine" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Registri" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "Generazione non riuscita." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Testo alternativo aggiornato correttamente." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Titolo aggiornato correttamente." @@ -322,276 +322,278 @@ msgstr "Modello IA" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "$%1$s input · $%2$s output per 1M di token" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Tutti i modelli leggono l'immagine e scrivono testo alternativo e titoli allo stesso modo. I prezzi sono le tariffe pubblicate da ciascun provider a settembre 2026 e possono cambiare. Paghi direttamente il provider; EveryAlt non ti addebita mai nulla. Il costo effettivo di ogni immagine è registrato nella scheda Registri." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Tutti i modelli leggono l'immagine e scrivono testo alternativo e titoli allo stesso modo. I prezzi sono le tariffe pubblicate da ciascun provider a %s e possono cambiare. Paghi direttamente il provider; EveryAlt non ti addebita mai nulla. Il costo effettivo di ogni immagine è registrato nella scheda Registri." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "Prezzi %s" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "Chiave API" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "Chiave API %s" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Chiave salvata" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "Nessuna chiave salvata" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Lascia vuoto per mantenere la chiave attuale" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "Incolla la tua chiave API" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Valida chiave" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Accedi su %s." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Fai clic su “Create new secret key”, assegnale un nome (ad es. “EveryAlt”) e copia la chiave. Viene mostrata una sola volta." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Aggiungi un metodo di pagamento o crediti prepagati nelle impostazioni di fatturazione di OpenAI; la generazione non funziona finché il tuo account non ha credito." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Utilizzo dei dati dell'API di OpenAI" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "Per impostazione predefinita, OpenAI non usa i dati dell'API per addestrare i propri modelli. Vedi %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Accedi a Google AI Studio su %s." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Fai clic su “Create API key”, scegli o crea un progetto Google Cloud e copia la chiave." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Facoltativo: configura la fatturazione sul progetto per passare dal piano gratuito a quello a pagamento." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Termini dell'API Gemini" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Gemini ha un piano gratuito, ma Google può usare i prompt e le immagini del piano gratuito per migliorare i propri prodotti. Con il piano a pagamento (fatturazione attiva), i tuoi contenuti non vengono usati in questo modo. Consulta i %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Accedi o crea un account su %s." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Fai clic su “New API key”, assegnale un nome (ad es. “EveryAlt”) e copia la chiave." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Aggiungi un metodo di pagamento o dei crediti nelle impostazioni di fatturazione di DeepInfra. Una sola chiave DeepInfra funziona sia per DeepSeek V4.1 Flash sia per GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Le tue immagini restano private." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfra esegue questi modelli sulla propria infrastruttura, in data center negli Stati Uniti e in Canada, con una politica di conservazione zero dei dati: le tue immagini e il testo generato vengono elaborati in memoria e non salvati, il contenuto delle richieste non viene registrato e i tuoi dati non vengono mai usati per addestrare modelli." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Privacy dei dati di DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Informativa sulla privacy" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Trust center (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "Le chiavi sono salvate in forma crittografata nel database di WordPress. L'immagine viene inviata al provider in base64, quindi la generazione funziona anche su localhost e dietro autenticazione HTTP." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Genera automaticamente in upload" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Genera automaticamente il testo alternativo quando le immagini vengono caricate" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Genera automaticamente i titoli delle immagini quando le immagini vengono caricate" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Nuovi caricamenti" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Genera in background (consigliato): i caricamenti terminano subito" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Genera durante il caricamento: il testo alternativo è pronto al termine del caricamento, ma ogni caricamento attende l'IA" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "Le operazioni in background di solito terminano entro un minuto. Vengono eseguite dallo scheduler di WordPress (WP-Cron) e anche ogni volta che è aperta una pagina di EveryAlt, quindi funzionano anche sui siti in cui WP-Cron è bloccato, come i siti protetti da password." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Immagini decorative" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Lascia vuoto il testo alternativo per le immagini puramente decorative" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "Le linee guida sull'accessibilità (WCAG) indicano che le immagini decorative, come separatori, spaziatori e motivi di sfondo, devono avere il testo alternativo vuoto, così gli screen reader le ignorano. Quando l'IA giudica un'immagine chiaramente decorativa, EveryAlt lascia vuoto il testo alternativo e la contrassegna nella scheda Rivedi testo alternativo, dove puoi invece richiedere una descrizione. In caso di dubbio, l'IA descrive l'immagine." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Limite di spesa mensile" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Nessuno" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD al mese" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Spesa stimata questo mese: %s. Quando il limite viene raggiunto, la generazione si interrompe fino al mese prossimo (le immagini in coda restano in attesa). Lascia vuoto per nessun limite. Le stime si basano sui prezzi pubblicati da ciascun provider; fa fede la fattura del tuo provider." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Articoli esistenti" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Mostra il testo alternativo della Libreria media sulle immagini già presenti negli articoli che ne sono prive" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Quando un'immagine viene aggiunta a un articolo, WordPress copia in quel momento il suo testo alternativo nell'articolo, quindi il testo alternativo generato in seguito non compare negli articoli meno recenti. Con questa opzione attiva, il testo alternativo vuoto negli articoli viene compilato dalla Libreria media quando la pagina viene visualizzata. I tuoi articoli non vengono modificati e il testo alternativo scritto in un articolo non viene mai sostituito. Richiede WordPress 6.0 o successivo." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Lingua" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automatica (lingua del sito: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Lingua del testo alternativo e dei titoli generati. Automatica usa la lingua del sito oppure, sui siti multilingue con Polylang o WPML, la lingua di ciascuna immagine." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Token di completamento massimi" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Numero massimo di token che il modello può usare per la risposta, incluso l'eventuale ragionamento. Predefinito: 1024. Lascia vuoto per usare il valore predefinito." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Prompt per il testo alternativo" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Istruzione inviata all'IA con ogni immagine. Modifica se necessario. Il modello deve restituire solo il testo alternativo, senza testo aggiuntivo." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Prompt per il titolo dell'immagine" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Istruzione inviata all'IA durante la generazione dei titoli delle immagini. I titoli sono di solito brevi (poche parole). Il modello deve restituire solo il titolo, senza testo aggiuntivo." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Salva impostazioni" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Questa pagina trova tutte le immagini nella libreria media senza testo alternativo e ti permette di generarlo rapidamente con EveryAlt. Per vedere le immagini che hanno già testo alternativo, vai alla scheda Rivedi testo alternativo." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Aggiungi prima una chiave API per il modello IA selezionato nella scheda Impostazioni." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "Nessuna immagine senza testo alternativo trovata." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Seleziona tutto" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "Deseleziona tutto" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Genera testo alternativo per i selezionati" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Genera per %s immagine" msgstr[1] "Genera per tutte le %s immagini" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s immagine" msgstr[1] "%s immagini" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "Seleziona “%s”" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Modifica" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Immagini che hanno già un testo alternativo, più le immagini contrassegnate come decorative (testo alternativo lasciato vuoto di proposito). Modifica e salva, oppure rigenera con EveryAlt." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Aggiungi una chiave API per il modello IA selezionato nella scheda Impostazioni per usare Rigenera." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "Nessuna immagine con testo alternativo trovata." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Decorativa" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Testo alternativo per “%s”" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Vuoto di proposito: gli screen reader ignorano questa immagine." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Salva" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Descrivi comunque" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Rigenera" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Questa pagina trova le immagini il cui titolo è ancora il nome originale del file caricato (ad es. “IMG_1234”) e ti permette di generare rapidamente titoli descrittivi con EveryAlt. Per vedere le immagini che hanno già un titolo personalizzato, vai alla scheda Rivedi titoli immagine." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "Nessuna immagine che necessita di un titolo trovata." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Genera titoli per i selezionati" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Immagini che hanno già un titolo personalizzato. Modifica e salva, oppure rigenera con EveryAlt." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "Nessuna immagine con titolo personalizzato trovata." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Titolo immagine per il file “%s”" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Spesa" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Questo mese: %1$s del tuo limite di %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Questo mese: %s (nessun limite impostato)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s di %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Limite di spesa mensile utilizzato" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Mese" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Richieste" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Costo stimato" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Per modello" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Ancora nessuna spesa registrata." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Stima basata sui token usati da ogni richiesta e sui prezzi pubblicati dal provider. Fa fede la fattura del tuo provider." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Registro generazioni" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Ultimi 100 tentativi di generazione di testo alternativo (successi e fallimenti)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Esporta come CSV" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Allegato" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Costo" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Ancora nessuna voce nel registro. Genera testo alternativo dalla scheda Massivo o caricando immagini per popolare questo registro." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "L'immagine non esiste più." diff --git a/languages/everyalt-ja.mo b/languages/everyalt-ja.mo index c8906e70c743a90b4507ba02d27e6e6a6cd7d918..d9d651719eda9c4f25360f0ecb032c82517d0190 100644 GIT binary patch delta 3789 zcmY+`2~bs49LMoLf&vnvl4!0E#9dTG4MhnB_ubSqQ$Yc(R8%ncUbL87w5Yfznu?h% z0@b8eQ$wTKrcSHPWKPqn*;J#+OlIHTJ(rm}EAa zh2dsFJ4aT%s_*H-vCM&f696EEOxGS;jK)*$~Z=2n7j zQ5{RcXiUeZI0{?we9NVh%7uqfBRP&2@jB{*=ecWh`~%hV=s2?|jKj&8fQxWB4#!Iv zhQ0Z+9^4N#vxEKiEYv{fV;s-7AeB~(xD?gns%GBQST*WKA7V0|#fccoa9Jgrg7t6) zvKp3$TACufgny!D>;k=4$8X?Ctj9XMh96^4Uwn-2X=*kjvu^va5-YJa&fzX?a1GAI zgV+mWcrz2TkdNA0oQ?-j_Y37qx_={Nl`MdIa0)V3`=t%@uQ%!h+{l_>3GMrE2iD*+ z+{_Nrnnx#?ZO5jl5go;ycnt5r$!*7YE6%#M*cR|!w*moK8JeHMgRTF*q!!u)crbk zcF##gwFly0o&WJvbc3zP^4LLSIqkIH{uSrbZq$Wo!yxL$FQGdA4XPtQVmMyG1$Yg$ z6nS0U60OJIX+MuOxHCyh!}@RGt{UO%$i}u4s5L&1Y*f338hIQ~)f6V8rmzn#4B-SI zt7TO^+?sxk8pu_o4|W@8SDS7y-j1tKr={b33#-dk*YzZf#J;!^Gf@M38#~o8`x=8)T&T;_kK!@xiSzop zDcggkbnq>tFE%O7&CohzRjeE}#ph5<@E2-H{_(Ge(LpzhMWiU&r5R z2Zp-uH6F$Zqn&{I9ZAD(d~QOJ3j4&0hr3NwffcmB!nU|^gxNj#3US!?N2bkjjy1VCT6s=7cQke6~Du?_%Q}w9mCD3JUZ6>(DWY1(W5;KHI=dBIbzrx z`KZ+(gR@~1%y@>CpgwmVdCM;1-I#Kx`&&_hn)1J}8e`cA>e!da5(e!Cl~68(PjYJ> zh5A4|YRZNn`^9D=t7E&6NwW*6j&z*tT!31lDtrm6F$oLravj`@EomRZjrbnU)%l+= z#ch(~sHy%A*I))4VkVx%)!2byX^Ib^I#`W*;LpfNtj2#obeg}`sL!QgW6Z{VScok! zj)%42`PP$)rf>}EhLiLL=3x^oM%`em|Ndd$W0=kL)7S{ROn3Jgfa+)#F2>oYP5L=% z#;#*8OrOF0r&1}TQiew`3r90-orY&nBfE_1;5FYHsF8$ayT5wn*oO8gOl0%@gmW-@ zmV4lm+3x$tu@j$r7qv8(XEXoZsWi`ZzuhA+k@f`COf1EyI{XHpPRXWxXEkahSCJED zX><6KjE~@4`~o8|g9iQZ%0XT=s{=?|(wu1j*&%qEXeM&VLZWgzSx+{RAw)$F-Q(5F z?ngHJ|H@U3 zuiuNq$m4#y7A?mego*G9d(OI&BG>dz)FagOe0$QrSW7#`=galU`O17?%$ z_%F;@tZwBqcu^H=V()Ii2I{E%;&A GTKg9iK&rn0 delta 3741 zcmYk;3v|zA9LMqRY;0`iI##pU7-KQB8k=M?VyML=)XI`e#azaO@uz4rlG~K6B9Wz2 z$|O47?{zx5=;oA_6epKca!#FeI`#hip2s;o$M^qwp6B=bKlkTvAATCP{nM~eW7~)t zBkdtN5i^^boxoRG@Ie|8Yt|DBFb2zT87}wbe{mq?m{w-`N&&XTalSkqQz*~F1l){K z_&i3Mh3pWSF;u*XZLnQyv-x3W-Ea-%S}O0w?zEbS+psyliqX9HK3+!oNISDQJcs;P< zSy+JIV+8i(%j!4-wX(UsJRUXC66`?#Rz@a~nN*`jTpu4SjU7Za^al3DcX1s4iR_Y% zX4=hgEV2tW5w$fl@C=?pt=JJpuYsS(_wgbgz_-|skiNKx;c02AkX5%W*nqn+32&j5 z&bSz7U@cyS;XKU89OPB2z+&8rYVS`}`%U>WyJYQA9j764wZ_h@zaIQSg=W?~*=!x& zhP8MO@5QPVx94G9Xq<91YDT-T4xht39NE>aR5d13eg(CH$1odz#C{l`>dJ+wA$Mq2 zQL%srb*KTg>E@O=)tioNt7W22@o>}`n1W2wW@9q0Lz=L?zWxhj>~;Zld*ZsAO~Wq8 z?%3)OnFumZBInEMaVWlqT9NQHH=qePfbu=4C4LG=Vnh#j2n$h5{gn4b?>neNcm#Fm z8c_rJ%|8$QLnexf7%urVj6)s53e+`PiyGi|)Sm7_&Ab7d;p?c5-$QlurGNed_Mvqn2vM8 z%=#m{W%ZeEPd`CTdh&)#wB<;YC>DEXA`r1xL@xxn$QbmHssI==I6Sl zD#vY%um%~6Wnb-9<}PG6tP-`f`%p{&HEJswef=ra7RE5TaoESZ5({YeDC*X99mM)8 zGh~pPVF|`jF2zb*iMuf-k7dLCsF`&e><&>M)Y9gm22ze%simkDsm48YxDOL37Y}jo zE%GiO!un6-K_wN{cpTNi%zSs6%dr*Z75FM{z+xIKWM5J!Kg$u;%s;_2>c7GBlx?{C z-tWk-wKW;xem@d0gZHwK<6$MC0(W>e;yx-4VON|v((G1Tk6Q9`Sb_1Q+ze~HJ1~j* zy_ihHhf!Pe>u6{D>p3@+bMXYefQPZ>1`axg?ksdaFmX4UeMChM)KXr+M!bl;Ye&Zf z_tkogHKPwJMZNbj^2pxAN!YH){U1?^TJo>)9lU@V*g+12R`?i(>;9i2qdh-^dLis4 zw`ARsb7FbOu2==KYW6y^$`&==c>`*THsf=+6MJLP&2E4zuoLAfT#LJK24+pr8DanH z$Y`nG#s@H&193a<#-$j^w6w&lPy^hF>hMFEnGFDD@zmWBq%HjI}r{lR2*Wpc5 z-1qCSC-3h-ZOzBn2QN-x{Ugbw-|3bt3$+qAV{{W5!%WI$)0{g|Gx-v^S(Y%JWyL9| zJ$(u3-wKH+LY>f8@N3!uR}x^ErUn zMQC=_#N!0#)1D^Sogh8xeZrfK6+XY1{(~89!DL@4uJHL3oa^%(Tzib*3fmpNE&~&Z zYlw%4{)Ey%NAUAoPF~wsPc$WB30-NW&`Lg<6Wxi<1cx}-BM4HJmz@aGLOxp%{JsQf zE1%l3|EGH>EFpA=yAYMc)x@R5MGMlEy8lW#t?P(V6-XN$!Sz%25no<_+lf?yTNM0( z0>OXJy)c59Oz76|GZ37OYjG2yw9OIx1*L2g-+xfup3gl&j-N|hMCkC<5qU%m(UG{3 z&^5{-l!iKj&qzM+BL)%o6PFRgiRDCJ;$dP4aVhn1^XKojOEoxys3FRH-EN#utRnJ> zG@>gpi|9v8C6s0o4-yH)8lr?)Mkw7*JV~SzV~GNSOBB2l{E2-Xg(M=JP`b-u-EfZ2 z3k`TWv4I#xOe8iFZHO#lB=G>Tf`}$MH5AAG9T8hJb\n" "Language-Team: 日本語 \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "スキップ: 月間利用上限額(%s)に達しました。生成は来月再開されます。または、設定で上限を引き上げてください。" #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "日時" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "添付ID" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "状態" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "モデル" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "メッセージ / 代替テキスト" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "コスト (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "詳細" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "エラー" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "成功" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "保存されている%1$s APIキーをEveryAltが読み取れなくなりました。通常、wp-config.php のセキュリティキーが変更されたことが原因です。キーを再入力するまで、このプロバイダーでの生成は一時停止されます。" #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAltは一時停止しています: 今月の推定利用額(%1$s)が月間上限の%2$sに達しました。新しい画像は来月処理されます。または、上限を引き上げることもできます。" -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "この操作を行う権限がありません。" -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "不明なプロバイダーです。" -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "上記の欄にAPIキーを入力するか、保存されているキーを検証するために先にキーを保存してください。" -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "APIキーは有効です。" -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "APIキーを検証できませんでした。キーが正しく、APIアクセス権があるか確認してください。" -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "バックグラウンドで生成中: 残り%d件。このページを離れても処理は自動的に続行されます。" -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d件が再試行待ちです。自動的に再試行されます。" -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "すべて完了しました。" -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "一時停止中: 月間利用上限額に達しました。設定で上限を引き上げるか、来月までお待ちください。" -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "一時停止中: 設定で、選択したモデルのAPIキーを追加してください。" -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "%d枚の画像をキューに追加しました。" -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "これらの画像はすでにキューに追加されています。" -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "キューをクリアしました。" -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "装飾画像としてマーク済み(代替テキストは意図的に空欄)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d件完了しました。" -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "エラー:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "リクエストに失敗しました" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "保存しました!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "保存に失敗しました" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "再生成しました!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "再生成に失敗しました" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "EveryAltで代替テキストを生成" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "代替テキストを生成する画像を選択またはアップロードしてください。" -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "生成中…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "代替テキストを生成しました。" -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "代替テキストを生成できませんでした。" -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "装飾画像としてマークしました: 代替テキストは意図的に空欄にしています。" -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "スキップ: APIキーがないか、自動生成が無効です。" -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "スキップ: APIキーの検証に失敗しました。" -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "スキップ: 有効な画像ではないか、ファイルが4MBを超えています。" -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "装飾画像としてマークしました(代替テキストは意図的に空欄)。" -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "APIから代替テキストが返されませんでした。" -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[タイトル] スキップ: APIキーがないか、自動生成が無効です。" -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[タイトル] スキップ: APIキーの検証に失敗しました。" -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[タイトル] スキップ: 有効な画像ではないか、ファイルが4MBを超えています。" -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[タイトル] APIからタイトルが返されませんでした。" -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "設定" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "一括代替テキスト生成" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "代替テキストを確認" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "一括画像タイトル生成" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "画像タイトルを確認" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "ログ" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "生成に失敗しました。" -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "代替テキストを正常に更新しました。" -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "タイトルを正常に更新しました。" @@ -322,447 +322,455 @@ msgstr "AIモデル" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "100万トークンあたり 入力 $%1$s · 出力 $%2$s" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "どのモデルも同じ方法で画像を読み取り、代替テキストとタイトルを作成します。価格は2026年9月時点の各プロバイダーの公表価格で、変更される場合があります。料金はプロバイダーに直接お支払いいただき、EveryAltから請求されることはありません。各画像の実際のコストは「ログ」タブに記録されます。" +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "どのモデルも同じ方法で画像を読み取り、代替テキストとタイトルを作成します。価格は%s時点の各プロバイダーの公表価格で、変更される場合があります。料金はプロバイダーに直接お支払いいただき、EveryAltから請求されることはありません。各画像の実際のコストは「ログ」タブに記録されます。" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "%sの料金" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "APIキー" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "%s APIキー" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "キー保存済み" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "キー未保存" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "既存のキーを維持する場合は空欄のままにしてください" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "APIキーを貼り付けてください" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "キーを検証" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "%s にサインインします。" -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "“Create new secret key” をクリックし、名前(例: “EveryAlt”)を付けてキーをコピーします。キーは一度しか表示されません。" -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "OpenAIの請求設定で支払い方法またはプリペイドクレジットを追加します。アカウントにクレジットが入るまで、生成は失敗します。" -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "OpenAI APIのデータ利用" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "OpenAIは、デフォルトではAPIデータをモデルのトレーニングに使用しません。詳しくは%sをご覧ください。" #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "%s でGoogle AI Studioにサインインします。" -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "“Create API key” をクリックし、Google Cloudプロジェクトを選択または作成して、キーをコピーします。" -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "任意: プロジェクトで請求を設定すると、無料枠から有料枠に移行できます。" -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Gemini API利用規約" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Geminiには無料枠がありますが、Googleは無料枠のプロンプトや画像を自社製品の改善に使用する場合があります。有料枠(請求が有効)では、コンテンツがそのように使用されることはありません。詳しくは%sをご覧ください。" #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "%s でサインインするか、アカウントを作成します。" -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "“New API key” をクリックし、名前(例: “EveryAlt”)を付けてキーをコピーします。" -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "DeepInfraの請求設定で支払い方法またはクレジットを追加します。1つのDeepInfraキーでDeepSeek V4.1 FlashとGLM-5.3-Flashの両方を利用できます。" -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "画像のプライバシーは守られます。" -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfraは米国とカナダのデータセンターにある自社インフラでこれらのモデルを運用しており、データを一切保持しないポリシーを採用しています。画像と生成されたテキストはメモリ上で処理されて保存されず、リクエストの内容はログに記録されず、データがモデルのトレーニングに使われることもありません。" -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "DeepInfraのデータプライバシー" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "プライバシーポリシー" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "トラストセンター(SOC 2、ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "キーはWordPressデータベースに暗号化して保存されます。画像はbase64形式でプロバイダーに送信されるため、localhostやHTTP認証の背後でも生成できます。" -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "アップロード時に自動生成" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "画像をアップロードしたときに自動で代替テキストを生成する" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "画像をアップロードしたときに自動で画像タイトルを生成する" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "新規アップロード" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "バックグラウンドで生成(推奨): アップロードはすぐに完了します" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "アップロード中に生成: アップロード完了時に代替テキストが用意されますが、アップロードのたびにAIの処理を待つことになります" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "バックグラウンド処理は通常1分以内に完了します。WordPressのスケジューラー(WP-Cron)で実行されるほか、EveryAltのページを開いている間も実行されるため、パスワードで保護されたサイトなどWP-Cronがブロックされているサイトでも動作します。" -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "装飾画像" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "装飾目的のみの画像では代替テキストを空欄にする" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "アクセシビリティガイドライン(WCAG)では、区切り線、スペーサー、背景パターンなどの装飾画像は、スクリーンリーダーが読み飛ばせるよう代替テキストを空にすべきとされています。AIが明らかに装飾画像だと判断した場合、EveryAltは代替テキストを空欄のままにし、「代替テキストを確認」タブで印を付けます。そこで代わりに説明を生成させることもできます。判断に迷う場合、AIは画像を説明します。" -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "月間利用上限額" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "なし" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD/月" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "今月の推定利用額: %s。上限に達すると、生成は来月まで一時停止します(キュー内の画像は待機します)。上限を設けない場合は空欄にしてください。推定額は各プロバイダーの公表価格に基づきます。正式な金額はプロバイダーの請求書をご確認ください。" -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "既存の投稿" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "投稿内の代替テキストがない画像に、メディアライブラリの代替テキストを表示する" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "画像を投稿に追加すると、WordPressはその時点の代替テキストを投稿にコピーするため、後から生成した代替テキストは過去の投稿に反映されません。この設定を有効にすると、ページ表示時に投稿内の空の代替テキストがメディアライブラリの内容で補完されます。投稿自体は変更されず、投稿内で入力された代替テキストが置き換えられることもありません。WordPress 6.0以降が必要です。" -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "言語" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "自動(サイトの言語: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "生成する代替テキストとタイトルの言語です。「自動」ではサイトの言語を使用します。PolylangまたはWPMLを使用した多言語サイトでは、各画像の言語を使用します。" -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "最大完了トークン数" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "モデルが応答(推論を含む)に使用できる最大トークン数です。デフォルトは1024です。デフォルトを使用する場合は空欄のままにしてください。" -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "代替テキスト用プロンプト" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "各画像とともにAIに送る指示です。必要に応じて編集してください。モデルは代替テキストのみを返し、余分な表現は含めません。" -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "画像タイトル用プロンプト" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "画像タイトルを生成するときにAIに送る指示です。タイトルは通常短い(数語程度)ものです。モデルはタイトルのみを返し、余分な表現は含めません。" -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "設定を保存" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "このページでは、メディアライブラリ内で代替テキストがない画像を一覧し、EveryAltで素早く生成できます。すでに代替テキストがある画像を確認するには、代替テキストを確認タブへ移動してください。" -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "先に「設定」タブで、選択したAIモデルのAPIキーを追加してください。" -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "代替テキストのない画像は見つかりませんでした。" -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "すべて選択" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "選択を解除" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "選択した画像の代替テキストを生成" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" msgstr[0] "全%s枚の画像に対して生成" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" msgstr[0] "%s枚の画像" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "「%s」を選択" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "編集" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "すでに代替テキストがある画像と、装飾画像としてマークされた画像(代替テキストを意図的に空欄にしたもの)です。編集して保存するか、EveryAltで再生成できます。" -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "「再生成」を使用するには、「設定」タブで選択したAIモデルのAPIキーを追加してください。" -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "代替テキストがある画像は見つかりませんでした。" -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "装飾" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "「%s」の代替テキスト" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "意図的に空欄: スクリーンリーダーはこの画像を読み飛ばします。" -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "保存" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "それでも説明を生成" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "再生成" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "このページでは、タイトルがアップロード時のファイル名(例: 「IMG_1234」)のままの画像を一覧し、EveryAltでわかりやすいタイトルを素早く生成できます。すでに独自のタイトルがある画像を確認するには、画像タイトルを確認タブへ移動してください。" -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "タイトルが必要な画像は見つかりませんでした。" -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "選択した画像のタイトルを生成" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "すでに独自のタイトルがある画像です。編集して保存するか、EveryAltで再生成できます。" -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "独自のタイトルがある画像は見つかりませんでした。" #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "画像ファイル「%s」のタイトル" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "利用額" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "今月: %1$s(上限 %2$s)。" #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "今月: %s(上限なし)。" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%2$s中%1$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "月間利用上限額の使用状況" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "月" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "リクエスト数" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "推定コスト" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "モデル別" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "まだ利用額の記録はありません。" -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "各リクエストで使用したトークン数とプロバイダーの公表価格から推定しています。正式な金額はプロバイダーの請求書をご確認ください。" -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "生成ログ" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "直近100件の代替テキスト生成の試行(成功・失敗)です。" -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "CSVでエクスポート" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "添付" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "コスト" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "まだログにエントリがありません。一括タブで代替テキストを生成するか、画像をアップロードするとこのログに記録されます。" +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "Y年n月" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "画像はもう存在しません。" diff --git a/languages/everyalt-nl_NL.mo b/languages/everyalt-nl_NL.mo index bec917a04190382268b99988d36b487377e1fb14..440bf490b7920a7183c7e2c7d25644fe204f0597 100644 GIT binary patch delta 3784 zcmY+`2~bs49LMoLilCyb3Z$qHe7IyNxF9Oxii(m*n!6?{s3jsxsTE$c+?O;JaZ59o z7N=5}oXN^*vU1F^aHb}$G@WT2wVKLwbXx5Dd-pO^XZ*d-IrqMI@408WvgJfj?TH}g zQgrY(qr6EHNJS&FAMtEcJ}5K7%{pTNHp6we6sx^tcMXuTke@FGad8}C&#^QKP!cts< zId~I;u@^tqjr*cTHrs2@L_KIR#&UmisI=jUt57|zjSmcsokCscET&-{j>CpLF0*74 zF$AY0vtfm(sj0x5cndXRm+8Ga{x^PxACU-S%S*)?izl!&Tbh zN}P*_uqQ@vatIDZzG|y+8XiPluOUCu^`nqkG9T*3J&ooL{5pR6Trr2RPV z#Cy0Hx3YpX=gpJMc3>RpiH_nfd=CfU`1bBdRiTgeY19Z_$6ojgrla5Qwx{?VchPL- zz>}OfjOtLEWOs;DJ=2kCwM^719*bH7CCJ0tGw8#e$R+HAcl-yW?{*)xdlEaC6=7Fo zc5ItNC78zh&jO^qt!YQbsKIZw6=a;BOcp0_m zZlF5ymv`Q2!sc$wfp{#!MARZ&joL=ls16=M&FN9plb^&8{2X=T^QaqL@y`E*-DuxM zU9Z!F?tL;)?LnBW{hv=o7ub$Wj~zm$)6RJ9pRt&BR2PN~9n^*2LUsHSsw3Ah6o0`5 zcn38Vg%7z?v=)D({W{*mT`8Ix=6@Sk)e{~^7Ph^Qn&XSeLbW@nCy(W>8bUv62-9(4 z5IX>wEvrp+=k#0DgWN{?U=Of&wdk_3H$IEnEw%Wx!v*T7bmu^B5BEk6ZlJvZn_z49 z+DJ^sa9oJ$sN=QwpcdH?WLelb)X3byFuad5FpMprMK>Sc<-RM?spdd`y0r?wM)i1l zhC4@VF^@0qM2*CaKJLD4%1YF3NWuv0gBtoAY>N5l!>QN`E0MXjYJ36iWW~8=zCPh z{y^QJ(QpKk@;qi zpdU+d5l+GDSc%!3Y>ppeB-UXxUd1T9joMzJW6fG%B1T|3YJ`SiIgUY{KZOb0-!4!I z#XH`Ke^5V+8Rzcb_83mP8|ubco_W}x_6&@{m$4ZhL#_UkI2FG^b-dT3yhCsZCgD7E zQmL$`vJO8$){*6m=lzVEurZ#;5d79_U&WVb-^5P1bb>o&hw(ewUtpIYUPu$&_sKVt z+$jiVFL&U46Vw|vbu#0x|2}g$pdLPfdXgomA>DwVaiP7a8_nTywB0sg3ciE9o9q&@ z94u~{`zKftHq?3K=YevFPu)}_)}FK?Jipm%u$kyW1!N&n=}p#>EkvWD!fv#^ff}7f zru=_p#eZ5Wsn7D-dvGTyAq<9T)HTHuH2<%YZKS?1{l-iLibi1*d6_H@9PxIESD%L? z$SSX0k49+#nd2SMLe?&+@Y&ZsZjsqA+fj%87q@11$fb2T<3OUXe}O|*rW&cKR(4z*ylChCjU zO_29N`d{~6%*X&H+zakTcR?QXfZvk1|@_HA#vmYX-s%I+JmIN zlzWvPxTO9d29p;^H&R7P$*ZIvd4>f3{>MN$>=}u@2)oNhk$ohZ_{eV3nKU5FNgt9% zR0g{QK3npsx!vj=)B8i^O|ncCiry80`5#DS0U1v6NjjNJo+KT}v!p3WBr2g~Hc2A! zL}d-xNXp1AGLfjHkVa%2$s^s#(lYpV}VQdV405j@N{Y0KfXq@c8#Gih0&`hIMmO1}=jVTHLMB7Hlz1 zMVqoh9UGUlG-sN$%(C6mnikTgveB}d`u^^@Hg(4T`7iy{;l6M_D1#%-I${Af#wuKZ3;p)r*q3(Wre^v{0Y+i5-=2)gv@5X< zuEmD<5{8)t>{Tkm=s1MUF}j)A>>#raxPo>Ko%diWqbA@p*a-Jy1m8P~t!ST&HjBmc z$Uh5?F=I$;iJDj%Ho+WhiTyBv``bt=z38|L^&~s+44y-M@i?Ql#&1wF4{E`UF&s;< z1b=9YNr!fe_gmphn}oa zlG$n;hc$Q}@4=Qp+)k_CC}KevUoxEaqZdifa!| z3Am)WpN>1ZupTv`<{jJ;r}%b4w$-vwSv&}p0~3*lw3(QMtC1mWhu{A`GIzUxIz6$e zW|OcTvOBgcKqZ9ACM3VC7W?A?)QSYBxe1NLKD4KymUs&mVo176!l9_8-r~E<_b@66 zPok3UG-@J0`PTz~QE5m=V-EQwj725kJk&8-iJIUB)ShleJ$W5Az}HYWeiL=05B%$2 zVkYf#sPW=Ex%*_G+C6Z9&i?=^8ej#oJywHkrycOyXK)7X(9RqstU?XE5jFAmP!stS z!|*KLf%T}Z7?t6+XaW9A`zib#*L2a=u>Z>#RZsXllGyeVYLAa&BG#jxJe<2~3FA;p z*a<6w%z7fbWwlvuPv1d3$oI$`tO;jVN!J^DVg=6SceR+q{jGgBcY_jKMf)~vguh@R z{)v$|h%=`NmY~|RQOUIgNeA1ET9IQIfv0c+o<${FK1X0THy(?R(~e;_fd{F)Kt(g{ z(aY^k8II^jh$g5juv4x%RZ zA?k(o9e#p;U;>^RJMc5eEp|XD?j={aCiO1bc0%I!b%{m0L za3%&;P}x9*ys?ZDGZNUUP{(5zHoyaZ`v^Wl`#7d!*)49%mg8r%U%}2n9NCfXeX@6y z+k$T~mFwqFZ`NqewvK&fDeJEp-bja@WDIIaEAS`-Ek@m_kjK$+tHLf=jlJ*?k_L7e z$zv-R%b#b+)_V_-i4%#|Ls?5~>E4$fh8>b%1REKTE8sZ^hrQfG*xKjF2 z=|gNLl&H&zrwJC*wh_$9D^L19>)Qk8`SrQle~!34N+c0iN@u^4jI;bYt7}gYHxRe_ zeO)nuP(G|7dJ-yq9p2v%cTv|i))G2;k%U%FC2$`fjR@_JmY5aymKeOU)b}>uyD^;L zczfjuK9#ipEz@Y+OT-dNxCaSd`TrKu!zU_WbxbK~~fk+{A zM3plt$|1cALWl`O6hV&K2;w@TnoxPh;r#`r>Q(;zz3v!3w|h1BMw>%j$7DT`N9c&P zByJ+Q6G}jp{toXmjL*dc|KHdWq7}g#*cKAm#AC$u#Fdino}ZV?l^&cztRt%YzO6W$ zxSz-;(unrN3?i2(Csd{rtB5v)j&&KafKVAvY$7@lyr;a=G70q^?@#Q3*p>)Z2jzB$ z_u{DV>p~NrOgu~!5gch-OEf2Ph(h84Vi6HR#Mh0D{39fCM0v&R@)@_5S0?3T<>c0t cMwhm&K9QXqlvQ^j``WO`s{dc^)_Z=+KQTCxGynhq diff --git a/languages/everyalt-nl_NL.po b/languages/everyalt-nl_NL.po index 38f849f..75f18a1 100644 --- a/languages/everyalt-nl_NL.po +++ b/languages/everyalt-nl_NL.po @@ -3,9 +3,9 @@ # This file is distributed under the same license as the EveryAlt package. msgid "" msgstr "" -"Project-Id-Version: EveryAlt 1.1.0\n" +"Project-Id-Version: EveryAlt 1.1.1\n" "Report-Msgid-Bugs-To: https://hdc.net\n" -"POT-Creation-Date: 2026-09-27 16:47+0000\n" +"POT-Creation-Date: 2026-10-02 23:47+0000\n" "PO-Revision-Date: 2026-09-27 00:00+0000\n" "Last-Translator: HDC \n" "Language-Team: Nederlands \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Overgeslagen: maandelijkse bestedingslimiet van %s bereikt. Het genereren gaat volgende maand verder, of verhoog de limiet in Instellingen." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Tijd" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "Bijlage-ID" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Status" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Model" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Bericht / Alt-tekst" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Kosten (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Details" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Fout" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Geslaagd" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "EveryAlt kan je opgeslagen API-sleutel voor %1$s niet meer lezen, meestal omdat de beveiligingssleutels in wp-config.php zijn gewijzigd. Genereren met die provider is gepauzeerd totdat je de sleutel opnieuw invoert." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "EveryAlt is gepauzeerd: de geschatte uitgaven van deze maand (%1$s) hebben je maandlimiet van %2$s bereikt. Nieuwe afbeeldingen worden volgende maand verwerkt, of je kunt de limiet verhogen." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "Je hebt geen toestemming om dit te doen." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Onbekende provider." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Voer boven een API-sleutel in, of sla eerst een sleutel op om de opgeslagen sleutel te valideren." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "De API-sleutel is geldig." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "De API-sleutel kon niet worden gevalideerd. Controleer of de sleutel klopt en API-toegang heeft." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Bezig met genereren op de achtergrond: nog %d te gaan. Je kunt deze pagina verlaten; het gaat vanzelf verder." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d wachten op een nieuwe poging. Ze worden automatisch opnieuw geprobeerd." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Helemaal klaar." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "Gepauzeerd: maandelijkse bestedingslimiet bereikt. Verhoog de limiet in Instellingen of wacht tot volgende maand." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "Gepauzeerd: voeg in Instellingen een API-sleutel toe voor het geselecteerde model." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "%d afbeeldingen aan de wachtrij toegevoegd." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Die afbeeldingen stonden al in de wachtrij." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "Wachtrij gewist." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Gemarkeerd als decoratief (alt-tekst bewust leeg gelaten)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d klaar." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Fout:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "Verzoek mislukt" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "Opgeslagen!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "Opslaan mislukt" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "Opnieuw gegenereerd!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "Opnieuw genereren mislukt" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Alt-tekst genereren met EveryAlt" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Selecteer of upload een afbeelding om alt-tekst te genereren." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Bezig met genereren…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Alt-tekst gegenereerd." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "Kon geen alt-tekst genereren." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Gemarkeerd als decoratief: alt-tekst bewust leeg gelaten." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Overgeslagen: geen API-sleutel of automatisch genereren uitgeschakeld." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Overgeslagen: validatie van API-sleutel mislukt." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Overgeslagen: geen geldige afbeelding of bestand groter dan 4 MB." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Gemarkeerd als decoratief (alt-tekst bewust leeg gelaten)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "De API heeft geen alt-tekst teruggegeven." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Titel] Overgeslagen: geen API-sleutel of automatisch genereren uitgeschakeld." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Titel] Overgeslagen: validatie van API-sleutel mislukt." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Titel] Overgeslagen: geen geldige afbeelding of bestand groter dan 4 MB." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Titel] De API heeft geen titel teruggegeven." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Instellingen" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Bulk alt-tekstgenerator" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Alt-tekst beoordelen" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Bulk afbeeldingstitelgenerator" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Afbeeldingstitels beoordelen" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Logboeken" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "Genereren mislukt." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Alt-tekst succesvol bijgewerkt." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Titel succesvol bijgewerkt." @@ -322,276 +322,278 @@ msgstr "AI-model" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "$%1$s invoer · $%2$s uitvoer per 1 miljoen tokens" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Alle modellen lezen de afbeelding en schrijven alt-tekst en titels op dezelfde manier. De prijzen zijn de gepubliceerde tarieven van elke provider per september 2026 en kunnen veranderen. Je betaalt de provider rechtstreeks; EveryAlt brengt je nooit iets in rekening. De werkelijke kosten per afbeelding worden vastgelegd op het tabblad Logboeken." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Alle modellen lezen de afbeelding en schrijven alt-tekst en titels op dezelfde manier. De prijzen zijn de gepubliceerde tarieven van elke provider per %s en kunnen veranderen. Je betaalt de provider rechtstreeks; EveryAlt brengt je nooit iets in rekening. De werkelijke kosten per afbeelding worden vastgelegd op het tabblad Logboeken." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "Prijzen van %s" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "API-sleutel" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "%s API-sleutel" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Sleutel opgeslagen" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "Geen sleutel opgeslagen" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Laat leeg om de bestaande sleutel te behouden" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "Plak je API-sleutel" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Sleutel valideren" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Log in op %s." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Klik op “Create new secret key”, geef de sleutel een naam (bijv. “EveryAlt”) en kopieer de sleutel. Deze wordt maar één keer getoond." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Voeg een betaalmethode of vooraf betaald tegoed toe in je OpenAI-factuurinstellingen; genereren mislukt totdat je account tegoed heeft." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Gebruik van API-gegevens door OpenAI" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "OpenAI gebruikt API-gegevens standaard niet om zijn modellen te trainen. Zie %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Log in bij Google AI Studio op %s." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Klik op “Create API key”, kies of maak een Google Cloud-project en kopieer de sleutel." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Optioneel: stel facturering in voor het project om van het gratis niveau over te stappen naar het betaalde niveau." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Gemini API-voorwaarden" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "Gemini heeft een gratis niveau, maar Google kan prompts en afbeeldingen uit het gratis niveau gebruiken om zijn producten te verbeteren. Op het betaalde niveau (facturering ingeschakeld) wordt je content niet op die manier gebruikt. Zie de %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Log in of maak een account aan op %s." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Klik op “New API key”, geef de sleutel een naam (bijv. “EveryAlt”) en kopieer de sleutel." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Voeg een betaalmethode of tegoed toe in je DeepInfra-factuurinstellingen. Eén DeepInfra-sleutel werkt voor zowel DeepSeek V4.1 Flash als GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Je afbeeldingen blijven privé." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "DeepInfra draait deze modellen op zijn eigen infrastructuur in datacenters in de VS en Canada, met een beleid zonder gegevensbewaring: je afbeeldingen en de gegenereerde tekst worden in het geheugen verwerkt en niet opgeslagen, de inhoud van verzoeken wordt niet gelogd en je gegevens worden nooit gebruikt om modellen te trainen." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Gegevensprivacy bij DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Privacybeleid" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Trustcenter (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "Sleutels worden versleuteld opgeslagen in je WordPress-database. De afbeelding wordt als base64 naar de provider gestuurd, dus genereren werkt ook op localhost en achter HTTP-authenticatie." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Automatisch genereren bij upload" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Alt-tekst automatisch genereren wanneer afbeeldingen worden geüpload" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Afbeeldingstitels automatisch genereren wanneer afbeeldingen worden geüpload" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Nieuwe uploads" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Op de achtergrond genereren (aanbevolen): uploads zijn meteen klaar" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Tijdens het uploaden genereren: de alt-tekst is klaar zodra de upload voltooid is, maar elke upload wacht op de AI" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "Achtergrondtaken zijn meestal binnen een minuut klaar. Ze draaien via de planner van WordPress (WP-Cron) en ook zolang er een EveryAlt-pagina openstaat, dus ze werken ook op sites waar WP-Cron geblokkeerd is, zoals sites achter een wachtwoord." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Decoratieve afbeeldingen" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Alt-tekst leeg laten voor puur decoratieve afbeeldingen" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "Volgens de toegankelijkheidsrichtlijnen (WCAG) moeten decoratieve afbeeldingen, zoals scheidingslijnen, opvulelementen en achtergrondpatronen, lege alt-tekst hebben, zodat schermlezers ze overslaan. Als de AI een afbeelding duidelijk decoratief vindt, laat EveryAlt de alt-tekst leeg en markeert de afbeelding op het tabblad Alt-tekst beoordelen, waar je alsnog om een beschrijving kunt vragen. Bij twijfel beschrijft de AI de afbeelding." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Maandelijkse bestedingslimiet" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Geen" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD per maand" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Geschatte uitgaven deze maand: %s. Als de limiet is bereikt, pauzeert het genereren tot volgende maand (afbeeldingen in de wachtrij wachten). Laat leeg voor geen limiet. Schattingen gebruiken de gepubliceerde prijzen van elke provider; de factuur van je provider is leidend." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Bestaande berichten" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Alt-tekst uit de mediabibliotheek tonen bij afbeeldingen in berichten die er nog geen hebben" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Wanneer een afbeelding aan een bericht wordt toegevoegd, kopieert WordPress op dat moment de alt-tekst naar het bericht, waardoor later gegenereerde alt-tekst niet in oudere berichten verschijnt. Met deze optie aan wordt lege alt-tekst in berichten bij het weergeven van de pagina aangevuld vanuit de mediabibliotheek. Je berichten worden niet gewijzigd en alt-tekst die in een bericht is geschreven, wordt nooit vervangen. Vereist WordPress 6.0 of hoger." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Taal" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automatisch (sitetaal: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Taal voor gegenereerde alt-tekst en titels. Automatisch gebruikt je sitetaal, of op meertalige sites met Polylang of WPML de eigen taal van elke afbeelding." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Max. voltooiingstokens" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Maximaal aantal tokens dat het model voor zijn antwoord mag gebruiken, inclusief eventuele redenering. Standaard 1024. Laat leeg om de standaardwaarde te gebruiken." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Alt-tekstprompt" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Instructie die met elke afbeelding naar de AI gaat. Bewerk indien nodig. Het model moet alleen de alt-tekst teruggeven, geen extra tekst." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Afbeeldingstitelprompt" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Instructie die naar de AI gaat bij het genereren van afbeeldingstitels. Titels zijn meestal kort (een paar woorden). Het model moet alleen de titel teruggeven, geen extra tekst." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Instellingen opslaan" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Deze pagina vindt alle afbeeldingen in je mediabibliotheek zonder alt-tekst en laat je die snel met EveryAlt genereren. Ga naar het tabblad Alt-tekst beoordelen voor afbeeldingen die al alt-tekst hebben." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Voeg eerst een API-sleutel toe voor het geselecteerde AI-model op het tabblad Instellingen." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "Geen afbeeldingen zonder alt-tekst gevonden." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Alles selecteren" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "Niets selecteren" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Alt-tekst genereren voor geselecteerde" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Genereren voor %s afbeelding" msgstr[1] "Genereren voor alle %s afbeeldingen" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s afbeelding" msgstr[1] "%s afbeeldingen" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "“%s” selecteren" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Bewerken" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Afbeeldingen die al alt-tekst hebben, plus afbeeldingen die als decoratief zijn gemarkeerd (alt-tekst bewust leeg gelaten). Bewerk en sla op, of genereer opnieuw met EveryAlt." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Voeg een API-sleutel toe voor het geselecteerde AI-model op het tabblad Instellingen om “Opnieuw genereren” te gebruiken." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "Geen afbeeldingen met alt-tekst gevonden." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Decoratief" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Alt-tekst voor “%s”" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Bewust leeg: schermlezers slaan deze afbeelding over." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Opslaan" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Toch beschrijven" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Opnieuw genereren" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Deze pagina vindt afbeeldingen waarvan de titel nog de oorspronkelijke bestandsnaam van de upload is (bijv. “IMG_1234”) en laat je snel beschrijvende titels genereren met EveryAlt. Ga naar het tabblad Afbeeldingstitels beoordelen voor afbeeldingen die al een eigen titel hebben." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "Geen afbeeldingen gevonden die een titel nodig hebben." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Titels genereren voor geselecteerde" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Afbeeldingen die al een eigen titel hebben. Bewerk en sla op, of genereer opnieuw met EveryAlt." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "Geen afbeeldingen met een eigen titel gevonden." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Afbeeldingstitel voor bestand “%s”" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Uitgaven" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Deze maand: %1$s van je limiet van %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Deze maand: %s (geen limiet ingesteld)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s van %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Gebruikte maandelijkse bestedingslimiet" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Maand" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Verzoeken" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Geschatte kosten" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Per model" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Nog geen uitgaven geregistreerd." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Geschat op basis van de tokens die elk verzoek gebruikte en de gepubliceerde prijzen van de provider. De factuur van je provider is leidend." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Generatielogboek" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Laatste 100 pogingen tot alt-tekstgeneratie (successen en mislukkingen)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Exporteren als CSV" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Bijlage" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Kosten" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Nog geen logvermeldingen. Genereer alt-tekst via het tabblad Bulk of bij het uploaden van afbeeldingen om dit logboek te vullen." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "Afbeelding bestaat niet meer." diff --git a/languages/everyalt-pt_BR.mo b/languages/everyalt-pt_BR.mo index bdc8dc7666dff43343eb80815a5681797ec4a5a7..2c0f7d4a71f998e037e0d93a949faa0e1cebfcb6 100644 GIT binary patch delta 3789 zcmY+`c~F&A9LDh zWiM$$3agoYgQp^Sp-hZ6yB%}zHY~=)xZZEqk1^{`I}!Dj9IS=Y{I-V)w2QDY?!)SM z0>jNbJ3}Rl3twO?wywz_Ld<$#G3|p~oR2-}H4b0L2t0@X;ALzmYn#=@3gn-~)FId$ zHLz5S!k$%j`g^|c~s(f;Mq?O` zM^?k~P)k#Y*YE~v#x65@4g4=Wj$y3BYj_$xeep?#r>R+k%(}gRWmtysIE7xC;!?aH zcVS12;mv;7ANi;)$NO+6s=umyN&Uwnt7HMxjZ=|lweqISzuu@4a8FhjSJIw}8?gfC z;~I95);y}2*#@kSdZGik3E#k8II6juskIoOeF8OuSFsab$Ih6T=-OiwJ-2CAabYfR z>_!bJu7#W84!)g{Wwq|8T|6AM2MUmfwS^eKjYt=E#J~O(GIsk1b$Sw#%<{1vvN~4k zQ3<8;3bMcK5cbEDsI`u1=?0XGX|x|gP4Pj@z?#W!6OKhq^+DfveLq2M!po>lSB@IU zpZ@z^1c$pi7aCwbCZIOqa?~+ej~d`U)S4bZJ^9-hh99AB{3+^2U;FQWkL_vSLiLy2 z%H5|cs@(?%==^6D(p$2jV!|^)Kz?-P0 z$ZO-4s0e?iy$36BQ(G+!>t9N*dcxO{jcrF!YkVHrsCE2WX-I#w)hCS2W zJ;7m&q*03)XQ&%?WLosOG-Np~9rgV})aLat0ZTB88y?2Gw8MM5 zy%X1)_1ES};sSkITbzs!qV~kcs2iQdXgrTA@haA$!})#O6BhS%9qz+Fc>gdS!vp=? zFY3JhZtpBZ{qk+Vi+bOq(uT^)0sapMPNn@7viz2r&Qqbsi#F8h~V(Z6RqsDyH1FKTLD#RNQow_!OZ z;cv)^viM={vB*@naMO`M?fADiW-a29gSmSF*Y zj@oV_5MWE-;8M(jZ07iTa7wBu_IU_?r*KB zXsXjuUl@WhnCo9J#G14h`qx+ZZbog|eOMdI{p)|DW-@xD+e=BPfvv(s+<}_W57BE+ zQL;XkSAOEPhs-1@T}TlrA?ZYgQ)%0RHGU(IE%Cqd zR3(eaPO_dv5SGi-W-1D2wqY+P3`V)R@f*VThFw&3ICp$=Wl0jOL z$}-2Vq~e0gix^6tAUb7h$t<#+bR!E%@c;i9EW3Sm)^+?ieU?d{BRanUvYFgYs*uNt zc7F;{>FWr-*5y@eyT-q!A0U;z`*V+rJru BqO$-1 delta 3746 zcmXxm2~bs49LMoL0WKh@2yTHap(vsv;)1D|O9fVLM1r}XqGYHjXqx83HE}C5t)97( zN}9_=IXUi*=1hxP>P#~gWzOVeI$F-yRO8h5_s-=E|MxlP-uKQu%m2K`#^XVEj|KVa zqCz$qWgihsl!lt!z~f=OP@ax7>x4Pj1j}(TR(kFKupjLvP0jR?9E`#|uRRSDY0tq& z@oj8`hq0lV&yG?V$%Ql699uLqs|Ye{k85cAxi}v?&}$rS$HsU9!+GBYY(x7>3$qx! zgZx==v>9DmE7ZVJFak5M6%NEWo^NBQ^x?uh)JzWHb-ayw<3)OHi@%~q9@LTtV;JUR zOPq}}Fb99a5bVT<_290kmCf?n`KXB&VN0HG0^kXIlb8|5ELEdVMa2&pe>hCX9|Dk-CU9xD@gHw>XT3tNruNx1zpqVvJ zFk6q~(T{g-u0`<*zG>*^u%;9 zn~F)u?pT$NN(hx|B)_Z%hu}%niUg;)0gb`Fv|mOo@gB^@kd7`1hohEykLRbJ=TJ#_ z1(kGlsDa$`?)x56X~cyl9P+6cgG$0hsAIGiHNYLHJ>89(c`Y`;Q>X`jj(X5F@BYu& zjrMI+f3d0VIccbNPaLZAKa`3(Sc7bj`H}6klV1Be&Y&IInWKc|sE&7`2L3H-Am3v{ z`~_#?E!0*Nq`56xjDOJHihtu9U9>gqe-*uIhWnAkw!^4BzKHR73pMjFo~k8mjatG~ zEDJL0jqH}yq`N)6gqp~2$QUewv#X@b!roYh%lKRkX7YSX>)|>q!fM(xu_;Dz#s**# zDk+OF8Y@r(szN>Z9i%Tii5l2F&xbgHb{MJ8k+ zyD^(LevE9N{h8%fCYB6T*7ilMP#%V28HVFL)M;3X3Aht;@hm=r5s&kE`Yl8bgjMuo z{WSxBKbJgbP#t}RWAQs&iJARf)*nMXuno(i_r)XIXq_<(3s6Zr1ru>Tj^u%U)akmN z?Q-Ukfi7pl2eSV3X;EC5j3ZFF@CoWcM==sl;d;D?QFJ)&2{*&CL9W9M_%HYUcn&uY zcHg99hq#<6MSbHf#vgPa)3Dq()Me=ooX&;w$o57B$ObfIQzi zQ_%-9uqo!~1{Pp5oakMj?YRV%v>UJmUh=NrK&|9`oQ~noyMfKaWZG4z6+MXE@EZD7 zQVGp>zvFAMC+*9q0W=_UWCS+EXw>^-u>)44I{pG5;$4gn;%9q|`wEXJbf+U7l`~lw zkCU+@E-PgHwbvhUK`U?+Bk(d_rK37brCs}?%Z)nJgY^^0cao(bd1XbIjfaqr87UC> zZO|-rYT6R&zlzXSen6W4ND-ww2I~CwbSpVjR(*c!TIo zsPuCL{)d=HUE5eggc3?h4ppG|mP2Dg%c{L$#RFfd5GboWr+B`CVFbrLP~PLUsaLP( zWhx7a7$S*yop_w6FQiAH^w9ZNnM156W~xDX%VDp1zUw&`cMwWC9Z_Y!igG562q7jC zI*$1SCoS-$wGmaeI|Bbfsrrcb{J`aCUiSrRF1Z#^Pbanz*@P0c6)}RyB>E64LmYuu zosy-*0Ad-T^R92lN}@aQ4l#(RFCE?d`M<6H3YHL?h;r}RUaTNi5QB*n;xS?d(TgZ1 zR7#0;#G}L-qKMEJkIDq1nn)!^5jn(ELhlLui~S_FBZ75-@{%L)J6-10g$6v0*gy;; z3W&Ff=0paOOROZ85aC2@?YPK)Ln22PmsJ$cm{dF`AtODbS8ZX7!gd?K>7E#rUVFcL XWy5CW#kxCZR>G8G_lCJyo09(rOf!-y diff --git a/languages/everyalt-pt_BR.po b/languages/everyalt-pt_BR.po index 78509cc..d39e173 100644 --- a/languages/everyalt-pt_BR.po +++ b/languages/everyalt-pt_BR.po @@ -3,9 +3,9 @@ # This file is distributed under the same license as the EveryAlt package. msgid "" msgstr "" -"Project-Id-Version: EveryAlt 1.1.0\n" +"Project-Id-Version: EveryAlt 1.1.1\n" "Report-Msgid-Bugs-To: https://hdc.net\n" -"POT-Creation-Date: 2026-09-27 16:47+0000\n" +"POT-Creation-Date: 2026-10-02 23:47+0000\n" "PO-Revision-Date: 2026-09-27 00:00+0000\n" "Last-Translator: HDC \n" "Language-Team: Português do Brasil \n" @@ -24,7 +24,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "Ignorado: limite de gastos mensal de %s atingido. A geração será retomada no próximo mês, ou aumente o limite em Configurações." #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "Horário" @@ -33,17 +33,17 @@ msgid "Attachment ID" msgstr "ID do anexo" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "Status" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "Modelo" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "Mensagem / Texto alternativo" @@ -52,226 +52,226 @@ msgid "Cost (USD)" msgstr "Custo (USD)" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "Detalhes" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "Erro" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "Sucesso" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "O EveryAlt não consegue mais ler a chave de API de %1$s que você salvou, geralmente porque as chaves de segurança no wp-config.php foram alteradas. A geração com esse provedor está pausada até você digitar a chave novamente." #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "O EveryAlt foi pausado: o gasto estimado deste mês (%1$s) atingiu seu limite mensal de %2$s. Novas imagens serão processadas no próximo mês, ou você pode aumentar o limite." -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "Você não tem permissão para fazer isso." -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "Provedor desconhecido." -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "Digite uma chave de API no campo acima ou salve uma chave primeiro para validar a chave armazenada." -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "A chave de API é válida." -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "A chave de API não pôde ser validada. Verifique se a chave está correta e tem acesso à API." -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "Gerando em segundo plano: %d restantes. Você pode sair desta página; o processo continua sozinho." -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "%d aguardando nova tentativa, que será feita automaticamente." -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "Tudo pronto." -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "Pausado: limite de gastos mensal atingido. Aumente o limite em Configurações ou aguarde até o próximo mês." -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "Pausado: adicione uma chave de API para o modelo selecionado em Configurações." -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "%d imagens adicionadas à fila." -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "Essas imagens já estavam na fila." -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "Fila limpa." -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "Marcada como decorativa (texto alternativo deixado vazio de propósito)" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "%d concluídas." -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "Erro:" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "A solicitação falhou" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "Salvo!" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "Falha ao salvar" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "Regenerado!" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "Falha ao regenerar" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "EveryAlt" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "Gerar texto alternativo com EveryAlt" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "Selecione ou envie uma imagem para gerar o texto alternativo." -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "Gerando…" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "Texto alternativo gerado." -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "Não foi possível gerar o texto alternativo." -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "Marcada como decorativa: texto alternativo deixado vazio de propósito." -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "Ignorado: nenhuma chave de API ou geração automática desativada." -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "Ignorado: a validação da chave de API falhou." -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "Ignorado: imagem inválida ou arquivo maior que 4 MB." -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "Marcada como decorativa (texto alternativo deixado vazio de propósito)." -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "A API não retornou texto alternativo." -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "[Título] Ignorado: nenhuma chave de API ou geração automática desativada." -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "[Título] Ignorado: a validação da chave de API falhou." -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "[Título] Ignorado: imagem inválida ou arquivo maior que 4 MB." -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "[Título] A API não retornou título." -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "Configurações" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "Gerador em massa de texto alternativo" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "Revisar texto alternativo" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "Gerador em massa de títulos de imagem" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "Revisar títulos de imagem" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "Registros" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "A geração falhou." -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "Texto alternativo atualizado com sucesso." -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "Título atualizado com sucesso." @@ -322,276 +322,278 @@ msgstr "Modelo de IA" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "$%1$s de entrada · $%2$s de saída por 1M de tokens" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." -msgstr "Todos os modelos analisam a imagem e escrevem textos alternativos e títulos da mesma forma. Os preços são as tarifas publicadas por cada provedor em setembro de 2026 e podem mudar. Você paga diretamente ao provedor; o EveryAlt nunca cobra nada de você. O custo real de cada imagem fica registrado na aba Registros." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +msgstr "Todos os modelos analisam a imagem e escrevem textos alternativos e títulos da mesma forma. Os preços são as tarifas publicadas por cada provedor em %s e podem mudar. Você paga diretamente ao provedor; o EveryAlt nunca cobra nada de você. O custo real de cada imagem fica registrado na aba Registros." #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "Preços de %s" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "Chave de API" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "Chave de API de %s" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "Chave salva" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "Nenhuma chave salva" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "Deixe em branco para manter a chave atual" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "Cole sua chave de API" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "Validar chave" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "Faça login em %s." -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "Clique em “Create new secret key”, dê um nome a ela (por exemplo, “EveryAlt”) e copie a chave. Ela é exibida apenas uma vez." -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "Adicione uma forma de pagamento ou créditos pré-pagos nas configurações de faturamento da OpenAI; a geração falhará até que sua conta tenha crédito." -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "Uso de dados da API da OpenAI" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "Por padrão, a OpenAI não usa dados da API para treinar seus modelos. Consulte %s." #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "Faça login no Google AI Studio em %s." -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "Clique em “Create API key”, escolha ou crie um projeto do Google Cloud e copie a chave." -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "Opcional: configure o faturamento no projeto para passar do nível gratuito para o nível pago." -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "Termos da API do Gemini" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "O Gemini tem um nível gratuito, mas o Google pode usar prompts e imagens do nível gratuito para melhorar seus produtos. No nível pago (com faturamento ativado), seu conteúdo não é usado dessa forma. Consulte os %s." #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "Faça login ou crie uma conta em %s." -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "Clique em “New API key”, dê um nome a ela (por exemplo, “EveryAlt”) e copie a chave." -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "Adicione uma forma de pagamento ou créditos nas configurações de faturamento da DeepInfra. Uma única chave da DeepInfra funciona tanto para o DeepSeek V4.1 Flash quanto para o GLM-5.3-Flash." -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "Suas imagens permanecem privadas." -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "A DeepInfra executa esses modelos em sua própria infraestrutura, em data centers nos EUA e no Canadá, com uma política de retenção zero de dados: suas imagens e o texto gerado são processados em memória e não são armazenados, o conteúdo das solicitações não é registrado e seus dados nunca são usados para treinar modelos." -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "Privacidade de dados da DeepInfra" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "Política de privacidade" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "Central de confiança (SOC 2, ISO 27001)" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "As chaves são armazenadas criptografadas no banco de dados do seu WordPress. A imagem é enviada ao provedor em base64, então a geração funciona em localhost e atrás de autenticação HTTP." -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "Gerar automaticamente no envio" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "Gerar automaticamente o texto alternativo quando as imagens forem enviadas" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "Gerar automaticamente os títulos de imagem quando as imagens forem enviadas" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "Novos envios" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "Gerar em segundo plano (recomendado): os envios terminam imediatamente" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "Gerar durante o envio: o texto alternativo fica pronto quando o envio termina, mas cada envio aguarda a IA" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "As tarefas em segundo plano geralmente terminam em até um minuto. Elas são executadas pelo agendador do WordPress (WP-Cron) e também sempre que uma página do EveryAlt está aberta, então funcionam mesmo em sites onde o WP-Cron está bloqueado, como sites protegidos por senha." -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "Imagens decorativas" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "Deixar o texto alternativo vazio em imagens puramente decorativas" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "As diretrizes de acessibilidade (WCAG) indicam que imagens decorativas, como divisores, espaçadores e padrões de fundo, devem ter texto alternativo vazio para que os leitores de tela as ignorem. Quando a IA considera uma imagem claramente decorativa, o EveryAlt deixa o texto alternativo vazio e a marca na aba Revisar texto alternativo, onde você pode pedir uma descrição. Na dúvida, a IA descreve a imagem." -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "Limite de gastos mensal" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "Nenhum" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "USD por mês" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "Gasto estimado neste mês: %s. Quando o limite é atingido, a geração é pausada até o próximo mês (as imagens na fila aguardam). Deixe vazio para não ter limite. As estimativas usam os preços publicados por cada provedor; a fatura do seu provedor é o valor oficial." -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "Posts existentes" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "Mostrar o texto alternativo da Biblioteca de mídia em imagens já inseridas em posts que não têm nenhum" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "Quando uma imagem é adicionada a um post, o WordPress copia o texto alternativo dela para o post naquele momento, então textos alternativos gerados depois não aparecem em posts mais antigos. Com esta opção ativada, textos alternativos vazios nos posts são preenchidos a partir da Biblioteca de mídia quando a página é exibida. Seus posts não são modificados, e o texto alternativo escrito em um post nunca é substituído. Requer WordPress 6.0 ou posterior." -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "Idioma" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "Automático (idioma do site: %s)" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "Idioma dos textos alternativos e títulos gerados. Automático usa o idioma do seu site ou, em sites multilíngues com Polylang ou WPML, o idioma de cada imagem." -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "Tokens máximos de conclusão" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "Número máximo de tokens que o modelo pode usar na resposta, incluindo qualquer raciocínio. Padrão: 1024. Deixe vazio para usar o padrão." -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "Prompt do texto alternativo" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "Instrução enviada à IA com cada imagem. Edite conforme necessário. O modelo deve retornar apenas o texto alternativo, sem texto extra." -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "Prompt do título da imagem" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "Instrução enviada à IA ao gerar títulos de imagem. Os títulos costumam ser curtos (poucas palavras). O modelo deve retornar apenas o título, sem texto extra." -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "Salvar configurações" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "Esta página encontra todas as imagens da sua biblioteca de mídia que ainda não têm texto alternativo e permite gerar um com EveryAlt rapidamente. Para ver imagens que já têm texto alternativo, vá à aba Revisar texto alternativo." -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "Primeiro, adicione uma chave de API para o modelo de IA selecionado na aba Configurações." -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "Nenhuma imagem sem texto alternativo encontrada." -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "Selecionar tudo" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "Desmarcar todas" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "Gerar texto alternativo para os selecionados" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -599,10 +601,10 @@ msgstr[0] "Gerar para %s imagem" msgstr[1] "Gerar para todas as %s imagens" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -610,161 +612,167 @@ msgstr[0] "%s imagem" msgstr[1] "%s imagens" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "Selecionar “%s”" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "Editar" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "Imagens que já têm texto alternativo, além das imagens marcadas como decorativas (texto alternativo deixado vazio de propósito). Edite e salve, ou regenere com EveryAlt." -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "Adicione uma chave de API para o modelo de IA selecionado na aba Configurações para usar Regenerar." -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "Nenhuma imagem com texto alternativo encontrada." -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "Decorativa" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "Texto alternativo de “%s”" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "Vazio de propósito: os leitores de tela ignoram esta imagem." -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "Salvar" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "Descrever mesmo assim" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "Regenerar" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "Esta página encontra imagens cujo título ainda é o nome original do arquivo enviado (por exemplo, \"IMG_1234\") e permite gerar títulos descritivos com EveryAlt rapidamente. Para ver imagens que já têm um título personalizado, vá à aba Revisar títulos de imagem." -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "Nenhuma imagem precisando de título encontrada." -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "Gerar títulos para os selecionados" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "Imagens que já têm um título personalizado. Edite e salve, ou regenere com EveryAlt." -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "Nenhuma imagem com título personalizado encontrada." #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "Título da imagem para o arquivo “%s”" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "Gastos" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "Este mês: %1$s do seu limite de %2$s." #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "Este mês: %s (sem limite definido)." #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "%1$s de %2$s" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "Limite de gastos mensal utilizado" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "Mês" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "Solicitações" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "Custo estimado" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "Por modelo" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "Nenhum gasto registrado ainda." -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "Estimado com base nos tokens usados em cada solicitação e nos preços publicados pelo provedor. A fatura do seu provedor é o valor oficial." -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "Registro de geração" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "Últimas 100 tentativas de geração de texto alternativo (sucessos e falhas)." -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "Exportar como CSV" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "Anexo" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "Custo" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "Ainda não há entradas no registro. Gere texto alternativo na aba Em massa ou ao enviar imagens para preencher este registro." +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "F \\d\\e Y" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr "A imagem não existe mais." diff --git a/languages/everyalt.pot b/languages/everyalt.pot index f2ed75a..2936457 100644 --- a/languages/everyalt.pot +++ b/languages/everyalt.pot @@ -2,9 +2,9 @@ # This file is distributed under the same license as the EveryAlt package. msgid "" msgstr "" -"Project-Id-Version: EveryAlt 1.1.0\n" +"Project-Id-Version: EveryAlt 1.1.1\n" "Report-Msgid-Bugs-To: https://hdc.net\n" -"POT-Creation-Date: 2026-09-27 16:47+0000\n" +"POT-Creation-Date: 2026-10-02 23:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgid "Skipped: monthly spending limit of %s reached. Generation resumes next mo msgstr "" #: admin/class-everyalt-admin.php:164 -#: admin/partials/everyalt-options-display.php:548 +#: admin/partials/everyalt-options-display.php:556 msgid "Time" msgstr "" @@ -31,17 +31,17 @@ msgid "Attachment ID" msgstr "" #: admin/class-everyalt-admin.php:166 -#: admin/partials/everyalt-options-display.php:550 +#: admin/partials/everyalt-options-display.php:558 msgid "Status" msgstr "" #: admin/class-everyalt-admin.php:167 -#: admin/partials/everyalt-options-display.php:551 +#: admin/partials/everyalt-options-display.php:559 msgid "Model" msgstr "" #: admin/class-everyalt-admin.php:168 -#: admin/partials/everyalt-options-display.php:552 +#: admin/partials/everyalt-options-display.php:560 msgid "Message / Alt text" msgstr "" @@ -50,226 +50,226 @@ msgid "Cost (USD)" msgstr "" #: admin/class-everyalt-admin.php:170 -#: admin/partials/everyalt-options-display.php:554 -#: admin/partials/everyalt-options-display.php:598 +#: admin/partials/everyalt-options-display.php:562 +#: admin/partials/everyalt-options-display.php:606 msgid "Details" msgstr "" -#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:434 -#: admin/partials/everyalt-options-display.php:590 +#: admin/class-everyalt-admin.php:174 admin/class-everyalt-admin.php:439 +#: admin/partials/everyalt-options-display.php:598 msgid "Error" msgstr "" #: admin/class-everyalt-admin.php:174 -#: admin/partials/everyalt-options-display.php:588 +#: admin/partials/everyalt-options-display.php:596 msgid "Success" msgstr "" #. translators: 1: provider name(s), e.g. "OpenAI", 2: URL of the EveryAlt settings tab -#: admin/class-everyalt-admin.php:259 +#: admin/class-everyalt-admin.php:264 #, php-format msgid "EveryAlt can no longer read your saved %1$s API key, usually because the security keys in wp-config.php changed. Generation with that provider is paused until you re-enter the key." msgstr "" #. translators: 1: spent this month, 2: monthly limit, 3: settings URL -#: admin/class-everyalt-admin.php:278 +#: admin/class-everyalt-admin.php:283 #, php-format msgid "EveryAlt has paused: this month’s estimated spend (%1$s) reached your monthly limit of %2$s. New images will be processed next month, or you can raise the limit." msgstr "" -#: admin/class-everyalt-admin.php:293 +#: admin/class-everyalt-admin.php:298 msgid "You do not have permission to do this." msgstr "" -#: admin/class-everyalt-admin.php:297 +#: admin/class-everyalt-admin.php:302 msgid "Unknown provider." msgstr "" -#: admin/class-everyalt-admin.php:304 +#: admin/class-everyalt-admin.php:309 msgid "Enter an API key in the field above, or save a key first to validate the stored key." msgstr "" -#: admin/class-everyalt-admin.php:307 +#: admin/class-everyalt-admin.php:312 msgid "API key is valid." msgstr "" -#: admin/class-everyalt-admin.php:309 +#: admin/class-everyalt-admin.php:314 msgid "API key could not be validated. Check that the key is correct and has API access." msgstr "" -#: admin/class-everyalt-admin.php:423 +#: admin/class-everyalt-admin.php:428 #, php-format msgid "Generating in the background: %d remaining. You can leave this page; it continues on its own." msgstr "" -#: admin/class-everyalt-admin.php:424 +#: admin/class-everyalt-admin.php:429 #, php-format msgid "%d waiting to retry. They will be tried again automatically." msgstr "" -#: admin/class-everyalt-admin.php:425 +#: admin/class-everyalt-admin.php:430 msgid "All done." msgstr "" -#: admin/class-everyalt-admin.php:426 +#: admin/class-everyalt-admin.php:431 msgid "Paused: monthly spending limit reached. Raise the limit in Settings or wait until next month." msgstr "" -#: admin/class-everyalt-admin.php:427 +#: admin/class-everyalt-admin.php:432 msgid "Paused: add an API key for the selected model in Settings." msgstr "" -#: admin/class-everyalt-admin.php:428 +#: admin/class-everyalt-admin.php:433 #, php-format msgid "Added %d images to the queue." msgstr "" -#: admin/class-everyalt-admin.php:429 +#: admin/class-everyalt-admin.php:434 msgid "Those images were already queued." msgstr "" -#: admin/class-everyalt-admin.php:430 +#: admin/class-everyalt-admin.php:435 msgid "Queue cleared." msgstr "" -#: admin/class-everyalt-admin.php:431 +#: admin/class-everyalt-admin.php:436 msgid "Marked as decorative (alt text left empty on purpose)" msgstr "" #. translators: %d: number of images finished in this batch -#: admin/class-everyalt-admin.php:433 +#: admin/class-everyalt-admin.php:438 #, php-format msgid "%d finished." msgstr "" -#: admin/class-everyalt-admin.php:435 admin/class-everyalt-admin.php:460 +#: admin/class-everyalt-admin.php:440 admin/class-everyalt-admin.php:465 msgid "Error:" msgstr "" -#: admin/class-everyalt-admin.php:436 +#: admin/class-everyalt-admin.php:441 msgid "Request failed" msgstr "" -#: admin/class-everyalt-admin.php:437 +#: admin/class-everyalt-admin.php:442 msgid "Saved!" msgstr "" -#: admin/class-everyalt-admin.php:438 +#: admin/class-everyalt-admin.php:443 msgid "Save failed" msgstr "" -#: admin/class-everyalt-admin.php:439 +#: admin/class-everyalt-admin.php:444 msgid "Regenerated!" msgstr "" -#: admin/class-everyalt-admin.php:440 +#: admin/class-everyalt-admin.php:445 msgid "Regenerate failed" msgstr "" -#: admin/class-everyalt-admin.php:453 admin/class-everyalt-admin.php:1054 -#: admin/class-everyalt-admin.php:1055 +#: admin/class-everyalt-admin.php:458 admin/class-everyalt-admin.php:1059 +#: admin/class-everyalt-admin.php:1060 #: admin/partials/everyalt-options-display.php:13 msgid "EveryAlt" msgstr "" -#: admin/class-everyalt-admin.php:454 +#: admin/class-everyalt-admin.php:459 msgid "Generate alt text with EveryAlt" msgstr "" -#: admin/class-everyalt-admin.php:455 +#: admin/class-everyalt-admin.php:460 msgid "Select or upload an image to generate alt text." msgstr "" -#: admin/class-everyalt-admin.php:456 +#: admin/class-everyalt-admin.php:461 msgid "Generating…" msgstr "" -#: admin/class-everyalt-admin.php:457 +#: admin/class-everyalt-admin.php:462 msgid "Alt text generated." msgstr "" -#: admin/class-everyalt-admin.php:458 +#: admin/class-everyalt-admin.php:463 msgid "Could not generate alt text." msgstr "" -#: admin/class-everyalt-admin.php:459 +#: admin/class-everyalt-admin.php:464 msgid "Marked as decorative: alt text left empty on purpose." msgstr "" -#: admin/class-everyalt-admin.php:580 +#: admin/class-everyalt-admin.php:585 msgid "Skipped: no API key or auto-generate disabled." msgstr "" -#: admin/class-everyalt-admin.php:585 +#: admin/class-everyalt-admin.php:590 msgid "Skipped: API key validation failed." msgstr "" -#: admin/class-everyalt-admin.php:595 +#: admin/class-everyalt-admin.php:600 msgid "Skipped: not a valid image or file exceeds 4MB." msgstr "" -#: admin/class-everyalt-admin.php:618 +#: admin/class-everyalt-admin.php:623 msgid "Marked as decorative (alt text left empty on purpose)." msgstr "" -#: admin/class-everyalt-admin.php:625 +#: admin/class-everyalt-admin.php:630 msgid "No alt text returned from API." msgstr "" -#: admin/class-everyalt-admin.php:651 +#: admin/class-everyalt-admin.php:656 msgid "[Title] Skipped: no API key or auto-generate disabled." msgstr "" -#: admin/class-everyalt-admin.php:656 +#: admin/class-everyalt-admin.php:661 msgid "[Title] Skipped: API key validation failed." msgstr "" -#: admin/class-everyalt-admin.php:666 +#: admin/class-everyalt-admin.php:671 msgid "[Title] Skipped: not a valid image or file exceeds 4MB." msgstr "" -#: admin/class-everyalt-admin.php:689 +#: admin/class-everyalt-admin.php:694 msgid "[Title] No title returned from API." msgstr "" -#: admin/class-everyalt-admin.php:1035 admin/class-everyalt-admin.php:1077 +#: admin/class-everyalt-admin.php:1040 admin/class-everyalt-admin.php:1082 #: admin/partials/everyalt-options-display.php:63 msgid "Settings" msgstr "" -#: admin/class-everyalt-admin.php:1078 -#: admin/partials/everyalt-options-display.php:295 +#: admin/class-everyalt-admin.php:1083 +#: admin/partials/everyalt-options-display.php:303 msgid "Bulk Alt Text Generator" msgstr "" -#: admin/class-everyalt-admin.php:1079 -#: admin/partials/everyalt-options-display.php:343 +#: admin/class-everyalt-admin.php:1084 +#: admin/partials/everyalt-options-display.php:351 msgid "Review Alt Text" msgstr "" -#: admin/class-everyalt-admin.php:1080 -#: admin/partials/everyalt-options-display.php:391 +#: admin/class-everyalt-admin.php:1085 +#: admin/partials/everyalt-options-display.php:399 msgid "Bulk Image Title Generator" msgstr "" -#: admin/class-everyalt-admin.php:1081 -#: admin/partials/everyalt-options-display.php:439 +#: admin/class-everyalt-admin.php:1086 +#: admin/partials/everyalt-options-display.php:447 msgid "Review Image Titles" msgstr "" -#: admin/class-everyalt-admin.php:1082 +#: admin/class-everyalt-admin.php:1087 msgid "Logs" msgstr "" -#: admin/class-everyalt-admin.php:1396 admin/class-everyalt-admin.php:1421 +#: admin/class-everyalt-admin.php:1401 admin/class-everyalt-admin.php:1426 msgid "Generation failed." msgstr "" -#: admin/class-everyalt-admin.php:1494 +#: admin/class-everyalt-admin.php:1499 msgid "Alt successfully updated." msgstr "" -#: admin/class-everyalt-admin.php:1510 +#: admin/class-everyalt-admin.php:1515 msgid "Title successfully updated." msgstr "" @@ -320,276 +320,278 @@ msgstr "" msgid "$%1$s input · $%2$s output per 1M tokens" msgstr "" -#: admin/partials/everyalt-options-display.php:103 -msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of September 2026 and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." +#. translators: %s: month and year the prices were checked, e.g. October 2026 +#: admin/partials/everyalt-options-display.php:107 +#, php-format +msgid "All models read the image and write alt text and titles the same way. Prices are each provider’s published rates as of %s and may change. You pay the provider directly; EveryAlt never bills you. The actual cost of each image is recorded on the Logs tab." msgstr "" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:110 +#: admin/partials/everyalt-options-display.php:118 #, php-format msgid "%s pricing" msgstr "" -#: admin/partials/everyalt-options-display.php:118 +#: admin/partials/everyalt-options-display.php:126 msgid "API key" msgstr "" #. translators: %s: provider name, e.g. OpenAI -#: admin/partials/everyalt-options-display.php:129 +#: admin/partials/everyalt-options-display.php:137 #, php-format msgid "%s API key" msgstr "" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "Key saved" msgstr "" -#: admin/partials/everyalt-options-display.php:133 +#: admin/partials/everyalt-options-display.php:141 msgid "No key saved" msgstr "" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Leave blank to keep existing key" msgstr "" -#: admin/partials/everyalt-options-display.php:137 +#: admin/partials/everyalt-options-display.php:145 msgid "Paste your API key" msgstr "" -#: admin/partials/everyalt-options-display.php:138 +#: admin/partials/everyalt-options-display.php:146 msgid "Validate key" msgstr "" #. translators: %s: link to OpenAI API keys page -#: admin/partials/everyalt-options-display.php:144 +#: admin/partials/everyalt-options-display.php:152 #, php-format msgid "Sign in at %s." msgstr "" -#: admin/partials/everyalt-options-display.php:145 +#: admin/partials/everyalt-options-display.php:153 msgid "Click “Create new secret key”, give it a name (e.g. “EveryAlt”), and copy the key. It is only shown once." msgstr "" -#: admin/partials/everyalt-options-display.php:146 +#: admin/partials/everyalt-options-display.php:154 msgid "Add a payment method or prepaid credits in your OpenAI billing settings; generation fails until your account has credit." msgstr "" -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 msgid "OpenAI API data usage" msgstr "" #. translators: %s: link to OpenAI data usage policy -#: admin/partials/everyalt-options-display.php:148 +#: admin/partials/everyalt-options-display.php:156 #, php-format msgid "OpenAI does not use API data to train its models by default. See %s." msgstr "" #. translators: %s: link to Google AI Studio API keys page -#: admin/partials/everyalt-options-display.php:151 +#: admin/partials/everyalt-options-display.php:159 #, php-format msgid "Sign in to Google AI Studio at %s." msgstr "" -#: admin/partials/everyalt-options-display.php:152 +#: admin/partials/everyalt-options-display.php:160 msgid "Click “Create API key”, choose or create a Google Cloud project, and copy the key." msgstr "" -#: admin/partials/everyalt-options-display.php:153 +#: admin/partials/everyalt-options-display.php:161 msgid "Optional: set up billing on the project to move from the free tier to the paid tier." msgstr "" -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 msgid "Gemini API terms" msgstr "" #. translators: %s: link to Gemini API terms -#: admin/partials/everyalt-options-display.php:155 +#: admin/partials/everyalt-options-display.php:163 #, php-format msgid "Gemini has a free tier, but Google may use free-tier prompts and images to improve its products. On the paid tier (billing enabled), your content is not used that way. See the %s." msgstr "" #. translators: %s: link to DeepInfra API keys page -#: admin/partials/everyalt-options-display.php:158 +#: admin/partials/everyalt-options-display.php:166 #, php-format msgid "Sign in or create an account at %s." msgstr "" -#: admin/partials/everyalt-options-display.php:159 +#: admin/partials/everyalt-options-display.php:167 msgid "Click “New API key”, name it (e.g. “EveryAlt”), and copy the key." msgstr "" -#: admin/partials/everyalt-options-display.php:160 +#: admin/partials/everyalt-options-display.php:168 msgid "Add a payment method or credits in your DeepInfra billing settings. One DeepInfra key works for both DeepSeek V4.1 Flash and GLM-5.3-Flash." msgstr "" -#: admin/partials/everyalt-options-display.php:164 +#: admin/partials/everyalt-options-display.php:172 msgid "Your images stay private." msgstr "" -#: admin/partials/everyalt-options-display.php:165 +#: admin/partials/everyalt-options-display.php:173 msgid "DeepInfra runs these models on its own infrastructure in data centers in the US and Canada, with a zero data retention policy: your images and the generated text are processed in memory and not stored, the content of requests is not logged, and your data is never used to train models." msgstr "" -#: admin/partials/everyalt-options-display.php:170 +#: admin/partials/everyalt-options-display.php:178 msgid "DeepInfra data privacy" msgstr "" -#: admin/partials/everyalt-options-display.php:171 +#: admin/partials/everyalt-options-display.php:179 msgid "Privacy policy" msgstr "" -#: admin/partials/everyalt-options-display.php:172 +#: admin/partials/everyalt-options-display.php:180 msgid "Trust center (SOC 2, ISO 27001)" msgstr "" -#: admin/partials/everyalt-options-display.php:181 +#: admin/partials/everyalt-options-display.php:189 msgid "Keys are stored encrypted in your WordPress database. The image is sent to the provider as base64, so generation works on localhost and behind HTTP auth." msgstr "" -#: admin/partials/everyalt-options-display.php:185 +#: admin/partials/everyalt-options-display.php:193 msgid "Auto-generate on upload" msgstr "" -#: admin/partials/everyalt-options-display.php:187 +#: admin/partials/everyalt-options-display.php:195 msgid "Automatically generate alt text when images are uploaded" msgstr "" -#: admin/partials/everyalt-options-display.php:189 +#: admin/partials/everyalt-options-display.php:197 msgid "Automatically generate image titles when images are uploaded" msgstr "" -#: admin/partials/everyalt-options-display.php:193 -#: admin/partials/everyalt-options-display.php:196 +#: admin/partials/everyalt-options-display.php:201 +#: admin/partials/everyalt-options-display.php:204 msgid "New uploads" msgstr "" -#: admin/partials/everyalt-options-display.php:197 +#: admin/partials/everyalt-options-display.php:205 msgid "Generate in the background (recommended): uploads finish right away" msgstr "" -#: admin/partials/everyalt-options-display.php:198 +#: admin/partials/everyalt-options-display.php:206 msgid "Generate during the upload: alt text is ready when the upload finishes, but each upload waits for the AI" msgstr "" -#: admin/partials/everyalt-options-display.php:200 +#: admin/partials/everyalt-options-display.php:208 msgid "Background jobs usually finish within a minute. They run on WordPress’s scheduler (WP-Cron), and also whenever an EveryAlt page is open, so they still work on sites where WP-Cron is blocked, such as sites behind a password." msgstr "" -#: admin/partials/everyalt-options-display.php:204 +#: admin/partials/everyalt-options-display.php:212 msgid "Decorative images" msgstr "" -#: admin/partials/everyalt-options-display.php:206 +#: admin/partials/everyalt-options-display.php:214 msgid "Leave alt text empty for purely decorative images" msgstr "" -#: admin/partials/everyalt-options-display.php:207 +#: admin/partials/everyalt-options-display.php:215 msgid "Accessibility guidelines (WCAG) say decorative images such as dividers, spacers, and background patterns should have empty alt text so screen readers skip them. When the AI judges an image clearly decorative, EveryAlt leaves its alt text empty and marks it on the Review Alt Text tab, where you can ask for a description instead. When in doubt, the AI describes the image." msgstr "" -#: admin/partials/everyalt-options-display.php:211 +#: admin/partials/everyalt-options-display.php:219 msgid "Monthly spending limit" msgstr "" -#: admin/partials/everyalt-options-display.php:214 +#: admin/partials/everyalt-options-display.php:222 msgid "None" msgstr "" -#: admin/partials/everyalt-options-display.php:215 +#: admin/partials/everyalt-options-display.php:223 msgid "USD per month" msgstr "" #. translators: %s: estimated amount spent this month, e.g. $0.42 -#: admin/partials/everyalt-options-display.php:221 +#: admin/partials/everyalt-options-display.php:229 #, php-format msgid "Estimated spend this month: %s. When the limit is reached, generation pauses until next month (queued images wait). Leave empty for no limit. Estimates use each provider’s published prices; your provider’s invoice is authoritative." msgstr "" -#: admin/partials/everyalt-options-display.php:230 +#: admin/partials/everyalt-options-display.php:238 msgid "Existing posts" msgstr "" -#: admin/partials/everyalt-options-display.php:232 +#: admin/partials/everyalt-options-display.php:240 msgid "Show Media Library alt text on images already in posts that have none" msgstr "" -#: admin/partials/everyalt-options-display.php:233 +#: admin/partials/everyalt-options-display.php:241 msgid "When an image is added to a post, WordPress copies its alt text into the post at that moment, so alt text generated later doesn’t appear in older posts. With this on, empty alt text in posts is filled in from the Media Library when the page is displayed. Your posts are not modified, and alt text written in a post is never replaced. Requires WordPress 6.0 or later." msgstr "" -#: admin/partials/everyalt-options-display.php:237 +#: admin/partials/everyalt-options-display.php:245 msgid "Language" msgstr "" #. translators: %s: site language name in English, e.g. German -#: admin/partials/everyalt-options-display.php:244 +#: admin/partials/everyalt-options-display.php:252 #, php-format msgid "Automatic (site language: %s)" msgstr "" -#: admin/partials/everyalt-options-display.php:251 +#: admin/partials/everyalt-options-display.php:259 msgid "Language for generated alt text and titles. Automatic uses your site language, or each image’s own language on multilingual sites using Polylang or WPML." msgstr "" -#: admin/partials/everyalt-options-display.php:255 +#: admin/partials/everyalt-options-display.php:263 msgid "Max completion tokens" msgstr "" -#: admin/partials/everyalt-options-display.php:258 +#: admin/partials/everyalt-options-display.php:266 msgid "Maximum tokens the model can use for its response, including any reasoning. Default 1024. Leave empty to use default." msgstr "" -#: admin/partials/everyalt-options-display.php:262 +#: admin/partials/everyalt-options-display.php:270 msgid "Alt text prompt" msgstr "" -#: admin/partials/everyalt-options-display.php:270 +#: admin/partials/everyalt-options-display.php:278 msgid "Instruction sent to the AI with each image. Edit as needed. The model should return only the alt text, no extra wording." msgstr "" -#: admin/partials/everyalt-options-display.php:274 +#: admin/partials/everyalt-options-display.php:282 msgid "Image title prompt" msgstr "" -#: admin/partials/everyalt-options-display.php:282 +#: admin/partials/everyalt-options-display.php:290 msgid "Instruction sent to the AI when generating image titles. Titles are usually short (a few words). The model should return only the title, no extra wording." msgstr "" -#: admin/partials/everyalt-options-display.php:287 +#: admin/partials/everyalt-options-display.php:295 msgid "Save Settings" msgstr "" -#: admin/partials/everyalt-options-display.php:296 +#: admin/partials/everyalt-options-display.php:304 #, php-format msgid "This page finds all images in your media library that do not currently have alt text and lets you generate new alt text with EveryAlt quickly. To see existing images that already have alt text, go to the Review Alt Text tab." msgstr "" -#: admin/partials/everyalt-options-display.php:298 -#: admin/partials/everyalt-options-display.php:394 +#: admin/partials/everyalt-options-display.php:306 +#: admin/partials/everyalt-options-display.php:402 msgid "Please add an API key for the selected AI model in the Settings tab first." msgstr "" -#: admin/partials/everyalt-options-display.php:300 +#: admin/partials/everyalt-options-display.php:308 msgid "No images without alt text found." msgstr "" -#: admin/partials/everyalt-options-display.php:303 -#: admin/partials/everyalt-options-display.php:399 +#: admin/partials/everyalt-options-display.php:311 +#: admin/partials/everyalt-options-display.php:407 msgid "Select all" msgstr "" -#: admin/partials/everyalt-options-display.php:304 -#: admin/partials/everyalt-options-display.php:400 +#: admin/partials/everyalt-options-display.php:312 +#: admin/partials/everyalt-options-display.php:408 msgid "Select none" msgstr "" -#: admin/partials/everyalt-options-display.php:305 +#: admin/partials/everyalt-options-display.php:313 msgid "Generate alt text for selected" msgstr "" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:309 -#: admin/partials/everyalt-options-display.php:405 +#: admin/partials/everyalt-options-display.php:317 +#: admin/partials/everyalt-options-display.php:413 #, php-format msgid "Generate for all %s image" msgid_plural "Generate for all %s images" @@ -597,10 +599,10 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of images -#: admin/partials/everyalt-options-display.php:313 -#: admin/partials/everyalt-options-display.php:351 -#: admin/partials/everyalt-options-display.php:409 -#: admin/partials/everyalt-options-display.php:447 +#: admin/partials/everyalt-options-display.php:321 +#: admin/partials/everyalt-options-display.php:359 +#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:455 #, php-format msgid "%s image" msgid_plural "%s images" @@ -608,161 +610,167 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:321 -#: admin/partials/everyalt-options-display.php:417 +#: admin/partials/everyalt-options-display.php:329 +#: admin/partials/everyalt-options-display.php:425 #, php-format msgid "Select “%s”" msgstr "" -#: admin/partials/everyalt-options-display.php:328 -#: admin/partials/everyalt-options-display.php:365 -#: admin/partials/everyalt-options-display.php:424 -#: admin/partials/everyalt-options-display.php:457 +#: admin/partials/everyalt-options-display.php:336 +#: admin/partials/everyalt-options-display.php:373 +#: admin/partials/everyalt-options-display.php:432 +#: admin/partials/everyalt-options-display.php:465 msgid "Edit" msgstr "" -#: admin/partials/everyalt-options-display.php:344 +#: admin/partials/everyalt-options-display.php:352 msgid "Images that already have alt text, plus images marked decorative (alt text left empty on purpose). Edit and save, or regenerate with EveryAlt." msgstr "" -#: admin/partials/everyalt-options-display.php:346 -#: admin/partials/everyalt-options-display.php:442 +#: admin/partials/everyalt-options-display.php:354 +#: admin/partials/everyalt-options-display.php:450 msgid "Please add an API key for the selected AI model in the Settings tab to use Regenerate." msgstr "" -#: admin/partials/everyalt-options-display.php:349 +#: admin/partials/everyalt-options-display.php:357 msgid "No images with alt text found." msgstr "" -#: admin/partials/everyalt-options-display.php:362 +#: admin/partials/everyalt-options-display.php:370 msgid "Decorative" msgstr "" #. translators: %s: image title -#: admin/partials/everyalt-options-display.php:367 +#: admin/partials/everyalt-options-display.php:375 #, php-format msgid "Alt text for “%s”" msgstr "" -#: admin/partials/everyalt-options-display.php:368 +#: admin/partials/everyalt-options-display.php:376 msgid "Empty on purpose: screen readers skip this image." msgstr "" -#: admin/partials/everyalt-options-display.php:370 -#: admin/partials/everyalt-options-display.php:463 +#: admin/partials/everyalt-options-display.php:378 +#: admin/partials/everyalt-options-display.php:471 msgid "Save" msgstr "" -#: admin/partials/everyalt-options-display.php:372 +#: admin/partials/everyalt-options-display.php:380 msgid "Describe anyway" msgstr "" -#: admin/partials/everyalt-options-display.php:374 -#: admin/partials/everyalt-options-display.php:464 +#: admin/partials/everyalt-options-display.php:382 +#: admin/partials/everyalt-options-display.php:472 msgid "Regenerate" msgstr "" -#: admin/partials/everyalt-options-display.php:392 +#: admin/partials/everyalt-options-display.php:400 #, php-format msgid "This page finds images whose title is still the raw upload filename (e.g. \"IMG_1234\") and lets you generate descriptive titles with EveryAlt quickly. To see images that already have a custom title, go to the Review Image Titles tab." msgstr "" -#: admin/partials/everyalt-options-display.php:396 +#: admin/partials/everyalt-options-display.php:404 msgid "No images needing a title found." msgstr "" -#: admin/partials/everyalt-options-display.php:401 +#: admin/partials/everyalt-options-display.php:409 msgid "Generate titles for selected" msgstr "" -#: admin/partials/everyalt-options-display.php:440 +#: admin/partials/everyalt-options-display.php:448 msgid "Images that already have a custom title. Edit and save, or regenerate with EveryAlt." msgstr "" -#: admin/partials/everyalt-options-display.php:445 +#: admin/partials/everyalt-options-display.php:453 msgid "No images with a custom title found." msgstr "" #. translators: %s: image file name -#: admin/partials/everyalt-options-display.php:460 +#: admin/partials/everyalt-options-display.php:468 #, php-format msgid "Title for image file “%s”" msgstr "" -#: admin/partials/everyalt-options-display.php:480 +#: admin/partials/everyalt-options-display.php:488 msgid "Spending" msgstr "" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:491 +#: admin/partials/everyalt-options-display.php:499 #, php-format msgid "This month: %1$s of your %2$s limit." msgstr "" #. translators: %s: spent this month -#: admin/partials/everyalt-options-display.php:494 +#: admin/partials/everyalt-options-display.php:502 #, php-format msgid "This month: %s (no limit set)." msgstr "" #. translators: 1: spent this month, 2: monthly limit -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 #, php-format msgid "%1$s of %2$s" msgstr "" -#: admin/partials/everyalt-options-display.php:500 +#: admin/partials/everyalt-options-display.php:508 msgid "Monthly spending limit used" msgstr "" -#: admin/partials/everyalt-options-display.php:506 +#: admin/partials/everyalt-options-display.php:514 msgid "Month" msgstr "" -#: admin/partials/everyalt-options-display.php:507 +#: admin/partials/everyalt-options-display.php:515 msgid "Requests" msgstr "" -#: admin/partials/everyalt-options-display.php:508 +#: admin/partials/everyalt-options-display.php:516 msgid "Estimated cost" msgstr "" -#: admin/partials/everyalt-options-display.php:509 +#: admin/partials/everyalt-options-display.php:517 msgid "By model" msgstr "" -#: admin/partials/everyalt-options-display.php:533 +#: admin/partials/everyalt-options-display.php:541 msgid "No spending recorded yet." msgstr "" -#: admin/partials/everyalt-options-display.php:535 +#: admin/partials/everyalt-options-display.php:543 msgid "Estimated from the tokens each request used and the provider’s published prices. Your provider’s invoice is authoritative." msgstr "" -#: admin/partials/everyalt-options-display.php:537 +#: admin/partials/everyalt-options-display.php:545 msgid "Generation Log" msgstr "" -#: admin/partials/everyalt-options-display.php:538 +#: admin/partials/everyalt-options-display.php:546 msgid "Last 100 alt text generation attempts (successes and failures)." msgstr "" -#: admin/partials/everyalt-options-display.php:541 +#: admin/partials/everyalt-options-display.php:549 msgid "Export as CSV" msgstr "" -#: admin/partials/everyalt-options-display.php:549 +#: admin/partials/everyalt-options-display.php:557 msgid "Attachment" msgstr "" -#: admin/partials/everyalt-options-display.php:553 +#: admin/partials/everyalt-options-display.php:561 msgid "Cost" msgstr "" -#: admin/partials/everyalt-options-display.php:605 +#: admin/partials/everyalt-options-display.php:613 msgid "No log entries yet. Generate alt text from the Bulk tab or when uploading images to populate this log." msgstr "" +#. translators: PHP date format for the month prices were last checked, e.g. "F Y" (October 2026). See https://www.php.net/manual/datetime.format.php +#: includes/class-everyalt-providers.php:144 +msgctxt "prices as-of date format" +msgid "F Y" +msgstr "" + #: includes/class-everyalt-queue.php:199 msgid "Image no longer exists." msgstr ""