From a1e0ce612f6adb4596404a6402eb3137333fca07 Mon Sep 17 00:00:00 2001 From: noschmarrn Date: Sat, 28 Mar 2026 10:54:01 +0000 Subject: [PATCH] release: v1.2.1 --- README.de.md | 2 +- README.md | 2 +- brezngeo/brezngeo.php | 4 +- brezngeo/includes/Admin/SettingsPage.php | 4 + brezngeo/includes/Core.php | 4 + brezngeo/includes/Helpers/BulkQueue.php | 4 + brezngeo/includes/Helpers/FallbackMeta.php | 4 + brezngeo/includes/Helpers/KeyVault.php | 4 + brezngeo/includes/Helpers/TokenEstimator.php | 4 + .../includes/Providers/AnthropicProvider.php | 4 + .../includes/Providers/GeminiProvider.php | 4 + brezngeo/includes/Providers/GrokProvider.php | 4 + .../includes/Providers/OpenAIProvider.php | 4 + .../includes/Providers/ProviderInterface.php | 4 + .../includes/Providers/ProviderRegistry.php | 4 + brezngeo/languages/brezngeo-de_DE.mo | Bin 19584 -> 31913 bytes brezngeo/languages/brezngeo-de_DE.po | 534 ++++++- brezngeo/languages/brezngeo-en_US.mo | Bin 10402 -> 30656 bytes brezngeo/languages/brezngeo-en_US.po | 1100 ++++++++++++++- brezngeo/languages/brezngeo.pot | 1236 +++++++++++++++-- brezngeo/messages.mo | Bin 0 -> 31913 bytes brezngeo/readme.txt | 10 +- 22 files changed, 2746 insertions(+), 190 deletions(-) create mode 100644 brezngeo/messages.mo diff --git a/README.de.md b/README.de.md index 256bef4..9eef0f4 100644 --- a/README.de.md +++ b/README.de.md @@ -3,7 +3,7 @@ ![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue) ![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b) ![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green) -![Version](https://img.shields.io/badge/Version-1.2.0-orange) +![Version](https://img.shields.io/badge/Version-1.2.1-orange) ![Tests](https://img.shields.io/badge/Tests-158%20passing-brightgreen) 🇬🇧 [English version → README.md](README.md) diff --git a/README.md b/README.md index 7f73064..d157c19 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue) ![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b) ![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green) -![Version](https://img.shields.io/badge/Version-1.2.0-orange) +![Version](https://img.shields.io/badge/Version-1.2.1-orange) ![Tests](https://img.shields.io/badge/Tests-158%20passing-brightgreen) 🇩🇪 [Deutsche Version → README.de.md](README.de.md) diff --git a/brezngeo/brezngeo.php b/brezngeo/brezngeo.php index 77bc780..edce599 100644 --- a/brezngeo/brezngeo.php +++ b/brezngeo/brezngeo.php @@ -3,7 +3,7 @@ * Plugin Name: BreznGEO * Plugin URI: https://brezngeo.com/ * Description: AI-powered meta descriptions, GEO structured data, and llms.txt for WordPress. - * Version: 1.2.0 + * Version: 1.2.1 * Requires at least: 6.0 * Requires PHP: 8.0 * Author: NoSchmarrn.dev @@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } -define( 'BREZNGEO_VERSION', '1.2.0' ); +define( 'BREZNGEO_VERSION', '1.2.1' ); define( 'BREZNGEO_FILE', __FILE__ ); define( 'BREZNGEO_DIR', plugin_dir_path( __FILE__ ) ); define( 'BREZNGEO_URL', plugin_dir_url( __FILE__ ) ); diff --git a/brezngeo/includes/Admin/SettingsPage.php b/brezngeo/includes/Admin/SettingsPage.php index 8b73392..68eeed9 100644 --- a/brezngeo/includes/Admin/SettingsPage.php +++ b/brezngeo/includes/Admin/SettingsPage.php @@ -1,6 +1,10 @@ qfik$>PxHEGlO*C8P&e)a` zLt4TbXemo*C=HtnX<1s9x-B~hTH2C8A<&jWDJgr)(z1Nel&|0K|DJPa?np8z^yxQ` zkN)?bd+u4^^KR$8{>M{}dUe3>z9$92xnS$KAUN-cAo$c-$_;{b7Y4yO;1HMtZv#&N z?*mT+Ukmat_yhhd1wRFie2yO*S;8VeOf_ncDxCER7p8`Gts-K?+PXfOVs{NmU7l21x90UX4 zQt(J{CwM+M2C7^WRK3sf_xFKn?=?RE_29|eza3Ql9|G0hr$Lqb3aIzL3Gy%a5r3`% z&tB%{X(y=nDxlsw0G+!3g>iYqBH24!x z{r@je>vAHCq;cE=>b-`?=YneIH$aX1)u8Hm3s?rCT`=17n2fqYv1HS`mzOSZH z@r4>Fy0{P2INk)RpYH(IfQLYh^GD#Z;HfJd-CqEn$o*ze^R@?6ebeBz;EO=j^D$84 z`fE`A`34w*KLkY|r>%7D=Rw_X1hp@32i2c@!IQw>^!Nr)>-{cJ?LQ1^e!mRr{U3s` zy5M+-GX$4|ec-6Sp8;WE!D~VF_k-Y>;1@x?|L>sa`M4{BfG!3Dpyu^9k9UE~xPJgt zKR*nzwS%vL>esPsUeU{?;0a(J)H(eG=4oz6*-p9|yG#*V0L?>v~Y*EQ1=~EU5Ng>hX=>+1wuj zF9kmXYCV1ms=p^tsopykRDH|90yyID{}9yrd;w%A!9V-^^OzKk<1$e1UkQrtHi2h> z6;Si=d{FPd6kHBI0BSsc32NMb3#z~01J4DIWYTpXf*R*lpxRjrihj0$qK7dMksK63 zz4t=!0`MTH_dX7)+{2*O=gXk_^>t8u;{Sr`-;#AM|76g{1M2yep!&HEgfxO3Afyny z095{mLDly#sCvEuUI2a<)ceN|IXoLAD_91q{}bQu6=hosCEZI z^=Bh^4mbj;ohk5qa2C|MJphWn-{|k(4QhPv1GQeC1T`<81=ap{LDm0r5LOu+y%8A# zUI%Ul{{Vb4`0pV9f}ir|MsV#WbRY2Lpq@X4!s_2~pz1pn)HUyK$UNSOhs@HSOh-~s@}dW4zB?FxnB!D6`TT(1{Ukl!4Sdi){|=~nz6WX^egdlfqbQ_#JpojIPXpD?IiTjL4^(}Fp!VC1 zAfhCAG5E44vEM+Acl&l{SCm1~#cM#l{}8DC_dYNLzX*!%9tV#H&)(tczZ6t|)`G`^ zTR_qOICuhB1J$nsAS@|(3D^Sv61*H-yVKFZ9pGgu2hz3RA@Bt7N1*CGa@668pvHX; zsQz9Es=up1$*p1VLhxn~)*j4)qN78g#`Atq{rLxQ3HU8g@Ba`~J5RpRjqhYoeEkAY z&#wa2pUt4k?FKau1#kdtfLDXR3oZj61=XMb07d5~KrC913qj5MY7o{CjDtDwHK6+Q z3GkWVXTXcV+?boU8^I58|8j5~+{qtUZg3FPdtU>WgWm_$zYA`1{ka?zeH1|Dm%#$q z21S2=2c8Um3Do$$2WozQ4vJ2X-0kT9IFKm{&IL7&DtHojFR1rk4T=s9`uul-djG@V ze(;l^`Z2V}&Hongbnb5gH-pn)2)+l@cpe2sM_&O&cRvHw|1)oP^LY_?2KQHkCxY8S zt@mx<<=_LL`tu1;?S9(de*skae*z)p;0K`SVeKuB?`;Fm;(h{DKc4IJUjm-Z{qKRN zfgc97K97Q0=bwUSg2&zJ?k@&)zZw*MjDp(72mJHrgQA}Yz<%(p;3?qWfTGv0folKT zpxXNp7=p(i-PLE5R#3)%#sg;}&tL-IGA|?|e}2Ukz$K z)`20o8-&z?eW2F)uR*={B~bJB9Z>7G`ZhN&_kfy**Mg#lcY6FFxRv`)f!dd6Jj?ZC zHK_Y7pvvC?TED@kasLYNI`AE!=Iz`5`M-gpgC)27`are28q_?EfT||~wLY_;*7reB z^YAuM^Y9^1?K}di{cnSM@2B7e;K|Q+`u9qYJi58t}v^*YEA1-kSt9f6oJ-4BqGOe+ztw`v<_Y z!S!X=uV;eCa6b)dz1yJr{QyW4!Mng$f@j|W?SbzAwST?=YF_^n)cjpD?fB6!D1Oxd zH6JeoRp0AC(cOE&3&Dp$_2c`X`h85r^>-Pl_bvzX;5zWxU>&?3{0u01Ilk)l&AFh; z-wbL!tDxrj0C+L@o1nD|YF-`&j{`ps4uFsO`x9%fKj(s~?`lx}+y-hqRq$x=Uhr7( zW#IAP1E9wDR#5GI7*u;-1J4704xRv>Q+N57fvRT%sQotrs=f;N6mUPN_n!-%2>v#x z_a6eqpZ)|CJ$%yRQyXsmHi74pKMJazI=B?v3oZd40FMC=g2UiDLDl<1Q1uHBV_mKkLB|ycJZx?gF(A z4}$97+dLiu)sK&YyTE?{PX_ae>+d>H`(`JoeilLPrx{S~-4BM~8$j*PkAmvomq5|a ze}J0zYg%qT_ke1D3e>zMpvE-|YCI2udjF3>t<&eg)4;Fz`yYYopNs%KKLyly&j*!% zHFy%Z1yuXDfHUCz;1=+ty^ij00e5hJJ2(cu6NJ=*BlfxHbx{3lgKFn)Q2lxlcq;f7 zQ1tyiP~-U+cog_BcnbJg@O1F&p!)wfxE(xcztdZu1?s)O_4pXr&;55n)q5tL7TsO| zithVB(ZSWA@f}d}`aDqO-we`3@HSB6zi8I&*DFEQ(*Vc88SpId5ug7}Q2Xcypz1mO zF1POIfoF3+0BRmKfg0a-f4>VngZo>+QLy2ke-u)PA^!I$)h z-_IR%{^q%Qgf#4P26*p#T(1ZJ6TAh~zD7PmaeccJy>F*Wk1^7mPy@zryB)yn>M7Qbg{*l42 z^YE$meU# z=lu1R;3Q?<1h&B=z-NLNk+%3Uu$|8DGOm6~dN=9Wq-T(ROcGt3#5)(0o=Vbhx9T8O z{QY-acJL^;*gkjYqaX@I2Bi_x(Qav)s2y>F?9&g~uDg z+x+#Ee@Fc9KCZ7P9qIF4N8Y)lrKG(i{a!-)IO%Um_fYP6q$Q-Pf9I{_-_G@e;1@}K zTtA=m5ZA-L%&&3%EK>Trii`8p8;`3g`!238BE7)pMdVG8BJRbH#<+eA{5R4LuCD;~ zTgvrK?lO2ExSjirqzSI?0L2qe0G|rZfOnFv=laW}|01m<<;gppR3pv*{T3O=lmCCf zmy^yW9mPFtFt~$sBG)mgPI`d*my)Wa_mf^r`dw1`JIKXzNYAG1vq;li|A@4MbSn3k zlWySpX3_;*=fLzg$o&jA7yFFA@%RbwJbx`1^w%x$hose{qkNuV8R<6a(r*>`I2eLw zkYcXCK{|%(yGfGUr-4V1exGaoLeeGN>sNMQ`uA3U{Suxn;ric6<6PfNI+>J^K1E&` z{3^JPl>V+DZ#k(%%KrY5o8KYj$Ug`C3~7k;7Sef{vZryM{{EDUzaU*mdIRYNl-uje z{yFy_BCRLsw>49T%Rw&ti%D=a^ZeJjzJ|PW!81t*{IegB_Y?oli^=BP&B(9Gp6?~rFX>xrX_}8Qs z*RKKhlLknqaQ}7iCh*&!ejB(x(Om}TbG?)FeeR!6`a{x-xYzFt2X>~Y%TJOjr00^} zPFhB}t4SZ``V`XBNZ%#xBK==dgY*T`nWWz!>Gxz`_kXxs^UwS-*Pquj(xv|Sd$_)V z>t7?SB<EYdSc>F;WP@lo(!biHil#rc&J%a(hGyrMQ{B4#(nFi@sO|rE(G#D(d>ya5ApN&8XFL zL+#;2RHj5e+%OdvZE#j)nD}a}#|*VtuhrrruUoHMQ*jb^%IIOMS+9gs^?hMAs?CJO zs8%YMXpK2)s$i`ZPSl%R@VHejhEXl5%p~Q+s-KQ$_SKuEaKew>-l^4FVN`6D_o~lU ztQxnXq-PvCO-!{sORu)`FdUC2nXPKHKbO?XjYixG<5n@RS<5x*tU2Y?_3+QM=Nj_x3!A_Oh%4;ofpmZiO@THdI@wCi&L> zR@kbCd*fz#Vup$<6{WCIPg+Sh713(BM*YmUsC-&8UfBn+g{7!DonBYUlh}FwLA?<( z5L+Nd;ufkl`Pe;gNpF%2k@L~H<-6G{p% z3a8jcJfo|fK?Or;A;w3cm<6d%bRLJ1%}NyJayb@C^VYKV8jVWXQ|Ypj8#2#Z;bX6R zrK+sVgnel~Q|mHTxN_V#Aj*i+ZCJx7dkp>Wmud%}ecdx>#sZ6|MR03$>^(sw&ADvF4KER9uZ& z7*(adwF{MUG6k<|H?(8JzGhskR~dULF1fbhpygszVd_#Q5^68fk)+rx8*j?gWHonR zNs7=@NhF#tG~?OYWL(dY?#k!$2lC-Yo39OHW12ChsWmgWH>$MZ$`Sj4T4_{_I*BWc zx!%;yY~`Bm3Y?{HT{SM1qk(W;x!R~V{bskF+iq6+`i+egD)r(t?K|#MY&XlTnS8K5 zE;EFwW;klw1lCZBYhlEcsN+nL(OGVlcGrNrzQT5z_({lQw&F^q6}F*CHlFrXOO>*Y ztS{Ws*jcgOuJLxQ9&Q@CQQ{(1Z#Z46@2iFI>q4C+R z_B?B51z}LFO04Ti^EV2mq@^EW4nuLm0g}LO zDdw0(GpbF8Q;;C^vu}#|fK3#y)1Hv$JxLd&2n8UXf#2y5)jaE zEsix>cGoVAVSCh?qAR`$D?1z|Q-yj2w_Pt8zS#*w_TYwyc0=|&atblCA!5f>1gZRj zaEG=ANXMwbUj`mCIb|rMBdw~@OxPydcyd=xvWC#K@qgwFmh7aslZagB=&qzpDx|~0 z3_HqrKK)RK+~3f;=&w7|k!F?=+MZWyk4==Rv4`Q)tTsoxR&JGJxc>&&P1H!r=mp{R zuoA?7vNj`acn-xlE6}{i8Psh@M+*XJ~Tfd^wA6sv4Io{Vl$b0Qd z2|6?Z%2LoK}@F0P;6`Z$0c!B)jV2v^p>PK>S0$UYv%eTOSt*ZVsWB@DKPRWsE}>xYegZoj zWx46O%Pj@)U!|}T71-Qd={Y3D!iSoh8{67OJ3T!a!$@U8u|L>^=qp4N=$ogbWgbmz8B`{Jk8gB)ZoQe@_GTm@A)eVD9^}5uIETwhV zeBpqCg;`-=${zaz&kW-QLLE6KX+rl+93X5>+Q1&#i3nb*OfNglcPm4Vb#6-7WJ%{P zS)?KDZjq#G66K4{7RLJ#7;0#~w$W)u45HV7@ib|iHD$l4HpJ%K?97^l8o$)i^kK#} zu)u;v6JTZwfOv0;H^yl^VIGW$#2;V*4 ztY(8PGlgcE`4c@lb;#CYq8wM?PBN}+3j`+M5i_lDJl@|*{QbC8h2m*_;oy*33?extL@g%4}`fteGm|n$jsdfhuVF$xXXP@(Xig$JiEm zGLPddQlc!)4o?KL%fcVFfGLe3yR7JlVUdCraiER?x=4YA+c2Gr&iImc!P|0+yl;Kz z=1W|6UhJ8eo+t7rY+04ta`j=})N?lphaY24gv13r)&`%mtS4yzZh9E)=?=x>jyO|G1Vz~v3 zZ+L|uPBl-|gm#<{cd#_5v?b}J;$GX!HKw>?76BU72==sunxv*4S0%P%pi?|TCVwL96w*~L7fdIa$7U0v8Cd^i zFy~AH%S?hlrQKC2Hz(MOn2r@qlAj%!mif@6pw;HCGr@4; z#u)Ua1)8XgZI#m?`*BOO%G!rvstnOiMcolk1G6++QgI7)p6b%c|KX6Ei1!TG}*JE<>!=J z%&a@3R%SceTQB3niYk!9zNo3QhD7F)D%BF~DVI3-=s0b(*s?LhatpuNgx#{06FF+O ztYnpNE0-Ja9oqNOItg~fEmW6jXRmX&k4Me;>A?>9Kf+>qW}!WakST>TG0KK}*wM3{ z9=ITz?qtpmG8@2Cc_B`Tk$TN2O9vqSFJpin^f7#AhKbXoM9*vcf2EP|`Y4>jeY$4p zvSjJn4PB$I%TI-IpheKTTI#C%#j)|8`*qYv8eeTY=UKzo0)tthqRD)3N zY?oz6h+~>BNlVMtO;4Fv@X0!xA6HumRhYN&*G6^$1)>CM)@+@pz0S%TUB!^{R!m++ zv{Cn7sy7?QRF&zgeobAmj#8L?SG-1&3mT_kXYKmpJn^=pv?+9VsT=!yPa$Y4V`p{y zREy~b2OQ9|=TJxna$@+9T%t00q#$*si~WI^z_G6psn}M>3lVH#G9}M?6kfUF$^j-% zoGU#a)53+L*cOqK7UGIdPK{~7C^=DS;}>tn#`QSkLn7ycowd-OnFqbncR! zoXa?u>P~m;)IA9aMv-a}Zgpzbu>MBytu&Pg$TP>w5?3hh$nR2dwQ(OTIeOkuZ0mCC{f7# zkPgzLqm0vS)Sc9@9o%}1NXrR!F)O%8`c^)64^z1d2Zf0R4uIN?aMD~CB5ioAKc$x7 zn9z`utCHFyUZSyh~#fClbJo*S(_-blAZ>Ak&@u9~#1#eARc zU4#MDP{LJ0Eo1U_7iq%<8{pJ}n6qc;((ENNQcp!zXYFbUf!LS*>99g~mwJKcWjE_O ziL%45lyzG9(qQ0@Y~1#9*ZF#L(r4=uJqBTg(>ClweeBOX$taacyMYr8Ul}S5+f@4h z4P!fZAS9mEOj3HuDZsin8ttYHW541CiI$^>F zjuX@_jMEMCj3EYzhQVXbtj0JOpElLc&O1?F1~s>w#}y**w{p$vvel;J zxY4{v&E&=!`XOU7=0ATJ<8*?C?o=R5T(XJ7T8k-BnXyC4)SmQK7B9?D3CrocX_?t= zSEU#8z|i~2#%~@EH*qSS1mhNlla|K}HeVRW?)||yjZ0hbheLKx8|sbRmL{*!S=_0L zwy*q`1L+}*KXLP?`uSj-5;9AiJTikxT)#)1?D+AGG5wD$BQ@s^>$R-fQ4Nz#NCq@z ze=IM>FC`XuILs!uvASm!zHISnz&9ayT{{=$#GQ7*k=fFUCm+!GID~QH6 z%GQBkH%lUo$s?~y@VVor-JCSk(}Mx?1GyNJ@RoXeyj_Tw??$@U`-9z*XU;;Flyl1} z^`YlMMq;>U=xPby!7+!-auit3Gaydv2saM)*b%P{aqsOe{LM@H>pI( z@THdHIq1P!2sEGo+=BDvYxz*ir>LC$mxsA1AT`uUsaCM>F zT7qTAc|mRy&fa7&tRYOfP1dZsPI8sYHGQ@4!ZqQ_{_B?9oZFm6>U4!5Elq6mlvUdtamIsn`I4ejZtDKJwL-m z1Mel0q*;)snJ@$xg^s^-(7>!*k(IfFZJolP4T$4C!Sj58*zvKz)`d#knkCGFU|`}{ z<6zs?+@>~xWl#d=JKV|Y*L5}!V_PR4m;yt!LYdgWrV6LmIeLM@SE;nIkyH)K8c`{x zNwcL}lY0Kf%`!I>MhBRxV5JwQD)a{5D5Es;@2!zJoBO~7&s7(kQt@yFDF8Ja6Q{v& z`kp>WA8m7#GJtjwBSwiU3%9`=EnXPYbnXL9Vxq+0Oo^uh2x!N)=`5ZyWRo;5noy%T ze?XC$tPn0jG!Q{rgb}1;wX$O1J`OJ(vVvNwy5ZD@r@4hO#O-7sY6mTGG~)`UP3|Tj zk@=ZBIEj+#oH90doVhem#C7Jo$S7F&(XBZcS!M16m_5YnPS3KRCPY|VyR~5j+_n3Q zPM5Cef{eky_lE=f+H9K%)JpHb>|m{{E?SYZfI29W=M1M*3lks!~Rh7tNTVE!Zj(4wR7Pz~(m*_gVL+zw8cL-6K=7?zHH0)TbwV=X{ zTC$j);u=i|J+^_7MfkME=gL{1P66Rdox)X&Sq}BGk2&&Wj;V`TRv7X)t)Zl_zU;Mq zj!?y0mbo~dzNFs>m|bqs$eHY@X2mslcMwa5Q~y9sliOfEM+H%m+|9z zuU95pMoc@$XoG#VeAreshYH{6TMKzaw;gJV|)L^U*v`8v1KULex*j6&U)ud6CS(wpF3vRx%0eHBM{VuUHdNum2m7 z%{Q56)_8d{L@R}b%tlic7&vn^Et-)PBgg}mzcpw6{FL7# zCicVy9pF1l%Zf7|g)QbV3}GQ$&kK3hz94dx&~Hb#D8i`13VUX6Tpq43SKxC#=y}vs zRO8@iZBkb~H#gcB5BE|foSHiX9WopgmubnGnpp%@RAN!H>9abevxVe=%0i{#7OAddqTGB5$gJwz!MWF$C#fzY)<@_gJ+pvljBmT? z%u`S9HhJENi(x}|g$x_9UF}FNxP(kJ&0uxz(4<%e^NPBQ5X9WkZX?>15|Udo=QAPH zDa|V^v{`^sP++7sq=Gw~_NJBF35R`R4tW?@iXsX>}@d5YF^n9DXHHF)pIoxmWsZ8wagmXS)&XPH^2V?wdkt0d-S5lJE5%g&X&P`nIN zr_aP_IaOvj?9wS11cAb4?5@k_;eFkku+QGviUV5TQ1w1i8(vh7p@x;?xz{tz!}aOI zMO!l$n`MBoatyMgRPvJikH(|sW#(LFm%CvrI40l}Zz|ZndlAAQ5@$xn(Wb)vG!a3B}Y+ftWgPsyYf;p>#5XbxTk*ep&u`Fh=@nGD*rCb?QoW5c-e+@7Nh z{YuwosGT@_q%LlyFmA%(h>9~`NhheAcg!iw4Af9I=RVZr`zE4~q=;q2dM0+e51m6N zk4{7GK5z<+TOWI!X=CyZyKjw=%%c>zM#`$hIee#x^PWukCX`8-8C=Uzq*TssXM#=b zx!1FyQEYlt8j+o&FeAWptkMu|w2S9v4}?;3ZaJ$byFVDC#0&Nu(nIU(E#8{b-;7xp zM>pfwDw6vlAKV}Vwxb1TbND@@Z*qP7H#=zYCT*vrx^A7d3)!U#b)b%geav_2)_$CC zs%mdw6PW@9+xdlN>y|o3%mUj@riVSrn0U?{sX&@))4of{8V`(jPsgC8?~^g^F_u!g z4#V)~EmBk5jmfonG-W&0I}{+EUpzv5;Wo1%aTuiUPbW}Zx(_myPq?JEY$7ZR($)^+ zf3~WWazhmyH*x{mEiPmB&vMq7eI^S?TYam7Nm6fcy1Q|8qe|_Oj6fziT6MNM6fZ}* zY(capEt(7nVwj{BO7fUT1#7ToJ0ZBW&0!TZw!p(;G2-~fuph94(s@=fu`@m=v6I!* zL9Fnx#)9aTpiPX(IP#IzIZDt;t0XnXBk>p`~~Nz z`bF&`))!b|i*&CR-nvgJbzE~Ah_}KQDal+IsV;ovloDv{!&#;v>NodfDkj;+)(z8j z8g^FebDVkZvq6=hT*bIshx%jHdX6 zuTm%cTwGb!1=BFrLSdKN)EyRBNjo-1s&il?`MV2kC9YLDE|Ye&jX}yx!gvX!y5_Q+ z%ye0@(U{F4BWFif$zB+Ko?5ad-@Qs5Wn6IUadaj*1puT$=yJ;TMxo1!l6!HJ4?|~V z5!FGucKW2-<&2Ooe}ILe!`mfBZK*LY^@{Fyq7)eOVH2C{$vh+MT04ab6TShGjkhIg zOBy&c88)njDdFTss;Si70Bvs zSz)uFxJD(G+)>x&-QvBdtCz3hxSTIJH`hx2Pa9Kn z2P?MdtP7lb%gWq5eVmx~SzM>n&TAsmm?IJ*4hR&+k7s%TM3A#XIECqOAc3(Z!;xyG zVD=b$roJwcPoFapNNtW$B#j?Unm3i=+ivuDhu{{O9=p6H9Ui~FiN zLGCsu^R_8Axj#R`7rtI`&A1%2-^I3>Of+aWm<20jQ;aRqje)Pt9YU9PGFH>CAS)dz zaycn!7;c$6=zMVM37=TWlJHX{?X5!p0p<_3~6Q6N!8~Muxj2GcO>BT zaRr&$21x6`Ux0^>kGSU7(%BpwkfU67y?&mm%mq0C@$zvk1?&VZtu!On=hy3~)~Q3h zXWpn*u%*nAQJDjD^QKqrND&7a6Yu?X_<=DxTDV>9Cx`*2B!ZWnvxI;LnV02g^^x$g(ehX!T>x~EY91*Kwh5X9fvp{qY zVsWtd5fq8sz0(0(1OJwDza-FU$II>ZOw@Lr>~$f!z$AYXoH_R42q+V6pH6YczY5`G z&I^eScK$@%m-tC0XbR45jvya-53LdqH)Z{eI^GKuXf~F7kE{yTLTy6Efw3|TswJDl z{QdvK*GFhaQ^L0hHZE-^ZOJJe-p_rYI89g%=7R$9XJfqZ4t}8@*A+4U?Z)(UHRxOs zhCg6o_ya3K;_%1uqOs9tZGmW2Oq*!@fvdu0I$n{=pnx3BS>EJu%D^0Hg?AtWGCSWG z5>c@V#-EkTkoQyCL}<3M;iaL|h)CPoZJs)-swVjvU*?4ivlLEiQma29X4x z_bFx7`mVC1P;n<*#U)YFe1uO|=ypyRdR6;Ofo`DYVT*7ukP7!S-d|@D+70yoR|)qw z$xLgKKRNgDNUZuDUV{7)m@b?(+t3jHAgaS9eHV5Z{^>7=Pmm@GD}!Da{( z0!oc6b|m!JnI62{Vk$O;l(PQ8n25Ttz$<+xU>^f;dgit20*9)pRbZ!qnd#4nG>LTQ z@^ie6&jQpDllfGE2V0*8FvN}ciVHRVj|;xM_h*#uTj|s;)e#Q5G~Zv_nYH9N%O9m* z3dlIusf2whfL^R92=mQjNBX0(T7U)KY}qN2F70ap=Twz-COLbnjv4shytE`Nul%h< zl5p}%R0bV~Tt1A=1ASvZq82NLy@<6 zB+?O1Hb-9)NU>wT1Y#QL;(E`ieMkUz_D7-wAkvtR+u&;@-B};ybTj)Qb9l%$;eSxn z2_q|ANKal;S%uOHStFtJpExzc&KZk~b1;=QbAr_2L3ZMet)hvWryFN=Kl4XDu?f40 z!(0)lbl)5yl6?He2L^40yK&TO!4s(2ig=Vws#pZJkr;ipYY`M;HkZ>o28ny#8NZEg&vw05Hp&Pa(yXctJ^jK z;+BI=s5_=W9s+Z6y1)KI1Lrd1vjRLnYP`^lpm>xEHi7heh?IR$n_vq-HknuscwtbBsd%}PzIyaM^sEiEmlYUcOmRI@kwt9PRloynLK2zXNz zgG3PqrFkHsWMbg3q(-*q6d%+gGJ#cOxaMfHGNPY~oR7{!Ydb>$VEUgP{a#E=I623u zif8?|ni=naUFgV_u?17Hh#zxc+9wh7KUb)AKUcu5^2>g%FsA>mv2$wL^Tk5XR|-A* zfDMD0BYvp4Mn)2^Xp{m&OJYTV=?jI16Ce35?RZFA&L96#Lm)~IoQctu@35O+ z{6zx+255xtIKc#uZLWFYRr2-`dd^oMvQ$xO`QRExtqFC1q||$ZruRI0FktU=qQ+5q zT8`NSG7C1*u=9A>t$7?^JSbPP8Z2*zc65&$!9C(ThuxiuJKs5&NrjB={mwyrjopo^ V#3}CKzjUyd;mbadyyr`Y{|BkRW+VUr delta 6858 zcmbW)d3aRyy~ptr$N~w-5*A4y3`tl*7Fk0Q2#^gzP)OK}VI7h~GA5Y`$s`i!HOL~Z z)oS@^D;5-5xd;e&iN)n=)#8GHEtFa6a|Q>)@a5o*=GKXZ;=?(^`+eeQYu%4bZo_Ia2NK#LpTIq z#zgEuT_4lWvS?Z(uq#f+7%avT2`PO;&i!V_(48PWSKwnH|e<+T} z64VISqR!if>d1bi&(?2n5WbFC_yrEfv;odc%)=7)m*6nmjbnJeb%Mq=>>OuV-EjwM zst(|Md=WLpaq&za=As_386)r*>id(ZkzPQ}lzOX~jKVVPftndFYAJ1OQzPgeSns+S zb%PzKkv@WY&{M9@p*r{yj=|HYCFsuZHO1+u8puI)pcH#yxqJL(oWTCtLCin(WwRPrtWGSbZa4_FKNQuGsi=<5NB*-`@S&yIi2D9M)XeTdUH2qv zfTt3ef1P-m0~+CnsGfg{>R2ShQpb9rE*yXw;W$)B^H9ZG>RO2`yVZg^?{3tCx8h9P zgBtlo)crHsJgg^;38-Re#%$b%I^hk}jov}Z#QGRjY*D;>+`~#hy&aQLGcW_y;R@9C zRqpY6)BtbA(YV1q-gbzFM*IruMsK4Y(1Dt|Z&6FohYHh7jY5{&nu=P}#i;WF7>gTR z??;XNQPlmOM$OnsWJP^ zy{3cs&`jo|M!ps`V?RR8?5|J*J%-_U4tweSf1k!M4qU?JIC!Wt_lX?A{Od-8X=v?JF%2_O zJ+4Gm_bSwbevBIFX7~6*s2d(cjr4icjo(0>|0!w-zQifmE5)gyGF0t&Q<#4>nmE8Y z)<)!2xAvoo~BGh{9%m2Cr}+Zj2iJ#REOTgO8gLY-7Kb0-h}F46?VZo_jogE zhSs9qsx56abmL#6dj1TK!sDnBeT{Q4D&3jl3e@>4(Sxf{588s7u^p(TcnqiEEAIE# zWH=q~hq`YvYT#`dG<3sp*bOJ5il!LH<67Jq#@~D7Ue+RdryrU-P&4ogRI%rgY-hz|I)Qk3yS9nm|J%9fg|G zDeitLs#un~$9<@3UX8l(dhCmL;B?%M9_&DMs4G98TI)Wj4rQQbDhK=F4cV-})~bpF zdeC;)J*c0NYDs^a z!~E;@Iq#nMC8}s*=#>Y1qGo0^s)JKe9VkJKq!QK97Ssc7N6pBC7>|#mX7mJVNzdU8 zcpf!lxowl22W-R{9Jm)%#b=RoLVwcK!AbmS(-an>MpTL#X%*@hu@yB__oF(t6LsB_ zsOz3bb>uke?Rgt1Gpp@A8mfT-RG@C0iW<=r)RfLfJ;;agcq{4w4`3YbLtS?Sb>3U9 zpP^iyCX66>; zp9ex%D2fl_XuG8**RDtv0KB(tppsK$BV|cz*K|{r{0(Ijc>c(4e5FSKz zpe4QsCJX4K4`#I^()XWRq-KwS`C1GTp8=)q%{h##S5q{lSpJ_AwJpNYC|!!+h!H~tw1CM~F>Q-qp*uKRzs4>YQQ|E1 zHK-yS*hWJm%|e}6j_UC;RMD+OUAPbD;UUx-$INt&Cu1`E>8R`Hpq8)#HB&z1KWi-? z`u;eo!+*pWZ2OQ#IE{-KfnT9+5O%%uTK2^8?3Z8|ddYX2rd-QLTxes?pA@SfpJ7@^caaDKO<|1kDMp}MznS*o>3pd8 z-gEcwaoy$m1Zrm2lCFCG12kSCKPA5>>q#@w7ENv>nxQK<{o?H=XWWCQa2WXodDJ~7 z&XH2`2H8$LM4Nu_LYu~~_535zdX3&h~`ZZ>`?J2mLtR!ENlSJEehtTJ$iqw(M$OtlsJWRBWCQHeGlD6mhC?d0owi9G4d6T3QZQIBpl1m;UGszC3?ET3OCukITKumaR+CopWAYB!K>UQQ&D!TQtY>gJd63*jjuLHq$*rN5^AUi*T(SQY z?H`hER~*Zyec9bV;(8~3ME*uzAPwZO>VG4RVxsL=q%qWT{=&UY`#yL7UYtZalRWp> z1e`;9lPVHNB1t^yNnRwsB;Cn(+aem7?#}&MTl!$FAVb}Q%UnOfr-@lKq}{|P=5?*M z{dS`_Xjhr-iIrw#(nND0sn~Q*K4@M^9?<^x&?oPN#S+2x6uqA z`BU?Uk?E#KYF1ers%-Q%1bqR&Da}afJf|qd{4Qg=*>_#B@r+6_cZ@2CZfFjAf`MAw-(+G(&rI`- z$mc9;rrqi(4fy=QrYoAxGpy^qO+n9G+xD9S;}cD{%z-97vn00G<82NG(i?4eBK6E& znOP=m!o88sP0is6S!R1yc&9l03^|rr?RkZV( zd(SPJ?aA|d>sp(9O>Q5W^RG8=<`3aNjmYdl3epyNtT&2b6xCJN}>JCOkY?Z_lxvK$}8Ot6;!mTx#4j$a@KUGM16K+ z&>Wf7YU*cCG#6% zc)e=YGcB*on&z#mTkfr_^^C9^n^d}a%bUEx)hXtqg~=viQM@Twlo~4Eql*riXBStP z8B2zkeM<^sX80-K^m!^^Ghu0dL};1K)}@J270q>aaCOiOt4fZ`_fi4rbAzpQc2kXQ z2R$neKhx;RSl(!x_NqCiw;gA4>}<2u-uhjw`c_Ofo|*_P+|AXY>fBvDQG0)@&Jk%f ziQNKK%}q|RQmqSp1?J$*Ii^$XwDyy=-NQ_LeQu9@+ZW`G^&CF5Vuha`{-pj{Q}6F@ z?()Z(=lp&%EwIuY3GC`xRNt^7P*cYlpEo?%>wn7DcB?k8vB9lcbH1_6R5pz@+ncVv zS{a$~!OT#pZVP6b3&D{lvw4~6*%B(%+?Iju`&;^knNzonFiTe5W3FvYFx9Pv?MbU6 Y!aCRcf~I^;s8rXj$v3Z(oF4@K1vRA%^#A|> diff --git a/brezngeo/languages/brezngeo-de_DE.po b/brezngeo/languages/brezngeo-de_DE.po index f9e4fab..f5cc8a7 100644 --- a/brezngeo/languages/brezngeo-de_DE.po +++ b/brezngeo/languages/brezngeo-de_DE.po @@ -18,9 +18,6 @@ msgstr "" "X-Domain: brezngeo\n" #: includes/Admin/AdminMenu.php:11 -msgid "BreznGEO" -msgstr "BreznGEO" - #: includes/Admin/AdminMenu.php:12 msgid "BreznGEO" msgstr "BreznGEO" @@ -1089,3 +1086,534 @@ msgstr "Generiert GEO-optimierte Inhaltsblöcke mit KI fĂĽr bessere LLM-Sichtbar #: includes/Admin/views/dashboard.php msgid "Save" msgstr "Speichern" + +# --- v1.3.3 i18n pass --- + +#: includes/Admin/views/dashboard.php +#: includes/Admin/AdminMenu.php +#: includes/Admin/views/keyword-settings.php +msgid "Keyword Analysis" +msgstr "Keyword-Analyse" + +#: includes/Admin/views/dashboard.php +msgid "AI-powered keyword suggestions, optimization tips, and semantic analysis." +msgstr "KI-basierte Keyword-Vorschläge, Optimierungstipps und semantische Analyse." + +#: includes/Admin/views/meta.php +msgid "SEO Widget" +msgstr "SEO-Widget" + +#: includes/Admin/views/meta.php +msgid "Theme outputs post title as H1 (suppresses \"no H1\" warning in editor)" +msgstr "Theme gibt Beitragstitel als H1 aus (unterdrĂĽckt \"kein H1\"-Warnung im Editor)" + +#: includes/Admin/views/meta.php +msgid "Most themes render the post title as an H1 tag on the front end. Enable this to avoid false warnings in the SEO Widget when the content itself contains no H1." +msgstr "Die meisten Themes geben den Beitragstitel als H1 im Frontend aus. Aktivieren, um falsche Warnungen im SEO-Widget zu vermeiden, wenn der Inhalt selbst kein H1 enthält." + +#: includes/Admin/views/meta.php +msgid "No AI provider active." +msgstr "Kein KI-Anbieter aktiv." + +#: includes/Admin/views/meta.php +msgid "Meta descriptions will use the fallback method (first paragraph of the post) until an API key is configured and AI generation is enabled." +msgstr "Meta-Beschreibungen verwenden die Fallback-Methode (erster Absatz des Beitrags), bis ein API-SchlĂĽssel konfiguriert und die KI-Generierung aktiviert ist." + +#: includes/Admin/views/meta.php +msgid "Configure AI Provider →" +msgstr "KI-Anbieter konfigurieren →" + +#: includes/Admin/views/meta.php +msgid "Fallback mode active — configure an AI provider to enable AI generation." +msgstr "Fallback-Modus aktiv — einen KI-Anbieter konfigurieren, um KI-Generierung zu aktivieren." + +#: includes/Admin/views/txt.php +msgid "Clear Cache" +msgstr "Cache leeren" + +#: includes/Admin/views/txt.php +msgid "URL:" +msgstr "URL:" + +#: includes/Admin/KeywordMetaBox.php +msgid "Keyword Analysis (BreznGEO)" +msgstr "Keyword-Analyse (BreznGEO)" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Main Keyword" +msgstr "Haupt-Keyword" + +#: includes/Admin/views/keyword-meta-box.php +msgid "e.g. Passau travel guide" +msgstr "z. B. Passau ReisefĂĽhrer" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Secondary Keywords" +msgstr "Neben-Keywords" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Add Keyword" +msgstr "Keyword hinzufĂĽgen" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Analyze" +msgstr "Analysieren" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Suggest Keywords" +msgstr "Keywords vorschlagen" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Showing cached results. Click \"Analyze\" to refresh." +msgstr "Gecachte Ergebnisse. Klicke \"Analysieren\" zum Aktualisieren." + +#: includes/Admin/views/keyword-meta-box.php +msgid "Optimization Tips" +msgstr "Optimierungstipps" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Semantic Analysis" +msgstr "Semantische Analyse" + +#: includes/Admin/KeywordMetaBox.php (JS i18n) +msgid "Analyzing…" +msgstr "Analysiere…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Please enter a main keyword." +msgstr "Bitte ein Haupt-Keyword eingeben." + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting suggestions…" +msgstr "Hole Vorschläge…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting optimization tips…" +msgstr "Hole Optimierungstipps…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Running semantic analysis…" +msgstr "Semantische Analyse läuft…" + +#: includes/Admin/KeywordMetaBox.php +msgid "AI keyword features are not activated." +msgstr "KI-Keyword-Funktionen sind nicht aktiviert." + +#: includes/Admin/KeywordMetaBox.php +msgid "AI generation failed. Check provider settings." +msgstr "KI-Generierung fehlgeschlagen. Provider-Einstellungen prĂĽfen." + +#: includes/Admin/KeywordMetaBox.php +msgid "Could not parse AI response." +msgstr "KI-Antwort konnte nicht verarbeitet werden." + +#: includes/Admin/KeywordMetaBox.php +msgid "No keyword provided." +msgstr "Kein Keyword angegeben." + +#: includes/Admin/SeoWidget.php +msgid "No H1 heading" +msgstr "Keine H1-Ăśberschrift" + +#: includes/Admin/SeoWidget.php +msgid "Multiple H1 headings" +msgstr "Mehrere H1-Ăśberschriften" + +#: includes/Admin/SeoWidget.php +msgid "No internal links" +msgstr "Keine internen Links" + +#: includes/Admin/SeoWidget.php +msgid "internal" +msgstr "intern" + +#: includes/Admin/SeoWidget.php +msgid "external" +msgstr "extern" + +#: includes/Admin/SeoWidget.php +msgid "min" +msgstr "Min." + +#: includes/Admin/views/keyword-settings.php +msgid "Analysis Settings" +msgstr "Analyse-Einstellungen" + +#: includes/Admin/views/keyword-settings.php +msgid "Update Mode" +msgstr "Aktualisierungsmodus" + +#: includes/Admin/views/keyword-settings.php +msgid "Manual — click \"Analyze\" button" +msgstr "Manuell — Button \"Analysieren\" klicken" + +#: includes/Admin/views/keyword-settings.php +msgid "Live — auto-analyze while typing" +msgstr "Live — automatisch beim Tippen analysieren" + +#: includes/Admin/views/keyword-settings.php +msgid "On Save — analyze when post is saved" +msgstr "Beim Speichern — analysieren wenn Beitrag gespeichert wird" + +#: includes/Admin/views/keyword-settings.php +msgid "Target Keyword Density (%)" +msgstr "Ziel-Keyword-Dichte (%)" + +#: includes/Admin/views/keyword-settings.php +msgid "Recommended: 1.0–2.0%. Pass range is ±0.5% around the target." +msgstr "Empfohlen: 1,0–2,0 %. Toleranzbereich ist ±0,5 % um den Zielwert." + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Primary)" +msgstr "Mind. Vorkommen (Primär)" + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Secondary)" +msgstr "Mind. Vorkommen (Sekundär)" + +#: includes/Admin/views/keyword-settings.php +msgid "Live Mode Debounce (ms)" +msgstr "Live-Modus Verzögerung (ms)" + +#: includes/Admin/views/keyword-settings.php +msgid "Delay in milliseconds before live analysis triggers after typing stops." +msgstr "Verzögerung in Millisekunden bevor die Live-Analyse nach dem Tippen startet." + +#: includes/Admin/views/keyword-settings.php +msgid "Show keyword meta box on" +msgstr "Keyword-Meta-Box anzeigen bei" + +#: includes/Admin/views/bulk.php +msgid "No AI provider connected — descriptions will be generated from content without AI (fallback mode)." +msgstr "Kein KI-Anbieter verbunden — Beschreibungen werden ohne KI aus dem Inhalt generiert (Fallback-Modus)." + +#: includes/Admin/views/geo.php +msgid "Labels" +msgstr "Beschriftungen" + +#: includes/Admin/views/geo.php +msgid "Styling" +msgstr "Darstellung" + +#: includes/Admin/views/geo.php +msgid "Position" +msgstr "Position" + +#: includes/Admin/views/geo.php +msgid "Theme" +msgstr "Theme" + +#: includes/Admin/views/geo.php +msgid "Light" +msgstr "Hell" + +#: includes/Admin/views/geo.php +msgid "Dark" +msgstr "Dunkel" + +#: includes/Admin/views/geo.php +msgid "Minimal" +msgstr "Minimal" + +#: includes/Admin/views/geo.php +msgid "Brezn" +msgstr "Brezn" + +# --- Schema.org --- + +#: includes/Admin/AdminMenu.php +msgid "Schema.org" +msgstr "Schema.org" + +#: includes/Admin/AdminMenu.php +msgid "AI disabled" +msgstr "KI deaktiviert" + +#: includes/Admin/AdminMenu.php +msgid "\xe2\x80\x94 Not configured \xe2\x80\x94" +msgstr "\xe2\x80\x94 Nicht konfiguriert \xe2\x80\x94" + +#: includes/Admin/views/schema.php +msgid "BreznGEO Schema" +msgstr "BreznGEO Schema" + +#: includes/Admin/views/schema-meta-box.php +msgid "Schema Type" +msgstr "Schema-Typ" + +#: includes/Admin/views/schema-meta-box.php +msgid "\xe2\x80\x94 No Schema \xe2\x80\x94" +msgstr "\xe2\x80\x94 Kein Schema \xe2\x80\x94" + +#: includes/Admin/views/schema.php +msgid "BlogPosting / Article (with embedded Author + Image)" +msgstr "BlogPosting / Artikel (mit eingebettetem Autor + Bild)" + +#: includes/Admin/views/schema.php +msgid "FAQPage (from GEO Quick Overview \xe2\x80\x94 automatic)" +msgstr "FAQPage (aus GEO Schnell\xc3\xbcberblick \xe2\x80\x94 automatisch)" + +#: includes/Admin/views/schema.php +msgid "ImageObject (Featured Image)" +msgstr "ImageObject (Beitragsbild)" + +#: includes/Admin/views/schema.php +msgid "VideoObject (auto-detect YouTube/Vimeo)" +msgstr "VideoObject (YouTube/Vimeo automatisch erkennen)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe" +msgstr "Rezept" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe Name" +msgstr "Rezeptname" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe (Metabox in Post Editor)" +msgstr "Rezept (Metabox im Beitragseditor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event" +msgstr "Veranstaltung" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event Name" +msgstr "Veranstaltungsname" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event (Metabox in Post Editor)" +msgstr "Veranstaltung (Metabox im Beitragseditor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo Guide" +msgstr "HowTo-Anleitung" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo (Metabox in Post Editor)" +msgstr "HowTo (Metabox im Beitragseditor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review / Rating" +msgstr "Bewertung / Rating" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review with Rating (Metabox in Post Editor)" +msgstr "Bewertung mit Rating (Metabox im Beitragseditor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Guide Name" +msgstr "Anleitung Name" + +#: includes/Admin/views/schema-meta-box.php +msgid "Steps (one line = one step)" +msgstr "Schritte (eine Zeile = ein Schritt)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Ingredients (one per line)" +msgstr "Zutaten (eine pro Zeile)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Instructions (one step per line)" +msgstr "Anleitung (ein Schritt pro Zeile)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Prep Time (min)" +msgstr "Vorbereitungszeit (Min.)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Cook Time (min)" +msgstr "Kochzeit (Min.)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Servings" +msgstr "Portionen" + +#: includes/Admin/views/schema-meta-box.php +msgid "Rating (1\xe2\x80\x935)" +msgstr "Bewertung (1\xe2\x80\x935)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Reviewed Product / Service" +msgstr "Bewertetes Produkt / Dienstleistung" + +#: includes/Admin/views/schema-meta-box.php +msgid "Start Date" +msgstr "Startdatum" + +#: includes/Admin/views/schema-meta-box.php +msgid "End Date (optional)" +msgstr "Enddatum (optional)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Location or URL" +msgstr "Ort oder URL" + +#: includes/Admin/views/schema-meta-box.php +msgid "Online Event" +msgstr "Online-Veranstaltung" + +#: includes/Admin/views/schema-meta-box.php +msgid "Post not found." +msgstr "Beitrag nicht gefunden." + +# --- Keyword Analysis Checks --- + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword Density" +msgstr "Keyword-Dichte" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in title." +msgstr "Keyword im Titel gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in title." +msgstr "Keyword nicht im Titel gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in subheading." +msgstr "Keyword in ZwischenĂĽberschrift gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any H2-H6." +msgstr "Keyword in keiner H2-H6 gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in URL." +msgstr "Keyword in URL gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in URL." +msgstr "Keyword nicht in URL gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in meta description." +msgstr "Keyword in Meta-Beschreibung gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in meta description." +msgstr "Keyword nicht in Meta-Beschreibung gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Meta description is empty." +msgstr "Meta-Beschreibung ist leer." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in first paragraph." +msgstr "Keyword im ersten Absatz gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in first paragraph." +msgstr "Keyword nicht im ersten Absatz gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in last paragraph." +msgstr "Keyword im letzten Absatz gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in last paragraph." +msgstr "Keyword nicht im letzten Absatz gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in excerpt." +msgstr "Keyword im Textauszug gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in excerpt." +msgstr "Keyword nicht im Textauszug gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt is empty." +msgstr "Textauszug ist leer." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image alt text." +msgstr "Keyword im Bild-Alt-Text gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "No image contains keyword in alt text." +msgstr "Kein Bild enthält das Keyword im Alt-Text." + +#: includes/Features/KeywordAnalysis.php +msgid "No images found." +msgstr "Keine Bilder gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image title or caption." +msgstr "Keyword im Bildtitel oder Beschriftung gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any image title or caption." +msgstr "Keyword in keinem Bildtitel oder Beschriftung gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "No paragraphs found." +msgstr "Keine Absätze gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in content." +msgstr "Keyword nicht im Inhalt gefunden." + +#: includes/Features/KeywordAnalysis.php +msgid "URL / Slug" +msgstr "URL / Slug" + +#: includes/Features/KeywordAnalysis.php +msgid "First Paragraph" +msgstr "Erster Absatz" + +#: includes/Features/KeywordAnalysis.php +msgid "Last Paragraph" +msgstr "Letzter Absatz" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Alt Texts" +msgstr "Bild-Alt-Texte" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Title/Caption" +msgstr "Bildtitel / Beschriftung" + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt" +msgstr "Textauszug" + +#: includes/Features/KeywordAnalysis.php +msgid "Meta Description" +msgstr "Meta-Beschreibung" + +#: includes/Features/KeywordAnalysis.php +msgid "FAQ" +msgstr "FAQ" + +#: includes/Features/KeywordAnalysis.php +#, php-format +msgid "%1$.1f%% (target: %2$.1f%%)" +msgstr "%1$.1f %% (Ziel: %2$.1f %%)" + +#: includes/Admin/views/geo.php +msgid "The GEO block will not be generated automatically until an API key is configured and AI generation is enabled." +msgstr "Der GEO-Block wird erst automatisch generiert, wenn ein API-SchlĂĽssel konfiguriert und die KI-Generierung aktiviert ist." + +#: includes/Admin/views/geo.php +msgid "Variables: {title}, {content}, {language}" +msgstr "Variablen: {title}, {content}, {language}" + +#: includes/Admin/views/geo.php +#, php-format +msgid "Want to customise further? Learn how to style the block via your theme →" +msgstr "Mehr anpassen? Erfahre, wie du den Block per Theme stylen kannst →" + +#: includes/Admin/views/geo.php +msgid "Left border stripe and expand arrow colour. Leave empty for the default blue. Not used by the Minimal theme." +msgstr "Farbe des linken Rands und Expand-Pfeils. Leer lassen fĂĽr Standard-Blau. Wird vom Minimal-Theme nicht verwendet." + +#: includes/Admin/views/geo.php +msgid "Light \xe2\x80\x94 clean card with a blue accent. Dark \xe2\x80\x94 same for dark-mode sites. Minimal \xe2\x80\x94 borderless, left stripe only. Brezn \xe2\x80\x94 Brezn blue with diamond header pattern." +msgstr "Hell \xe2\x80\x94 klare Karte mit blauem Akzent. Dunkel \xe2\x80\x94 dasselbe f\xc3\xbcr Dark-Mode-Seiten. Minimal \xe2\x80\x94 rahmenlos, nur linker Streifen. Brezn \xe2\x80\x94 Brezn-Blau mit Rautenmuster." + +#: includes/Admin/views/bulk.php +#, php-format +msgid "No AI provider connected \xe2\x80\x94 descriptions will be generated from content without AI (fallback mode). Configure a provider \xe2\x86\x92" +msgstr "Kein KI-Anbieter verbunden \xe2\x80\x94 Beschreibungen werden ohne KI aus dem Inhalt generiert (Fallback-Modus). Anbieter konfigurieren \xe2\x86\x92" diff --git a/brezngeo/languages/brezngeo-en_US.mo b/brezngeo/languages/brezngeo-en_US.mo index bf57e6e733d5f99edc95f1f5047c41904488182e..d46bef1323ddfa06fcf9f9396758a356381430fc 100644 GIT binary patch literal 30656 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 z zzUio&22o|4WiPARxZ{)A_K~Y>al5@gwij);TL!M`yP>kOMpf;kUs%c8#YrQKt9HIT zKvc8`t~fvVeddQ9c^N$&cCU-XDD6UFYzG7d|1JKJ5C~`3fF(eS9PA_dZA{ zq_L#>6?)kpbvegrL(M)Qc8<-XKRwRqR5R;HtTGW{K8WnWPiY+Ry(QQ0k}Bq z*El)qvyb*dTAs9>JE(6dS#h{6{(nM_xO@VkhxFhl=7`I|UT1aIaed>{m$)F(S$>(# zXB-oD|DO-Je(P`bm8zKro!04N?tk-`%Z^^V>T>fO`bEnhbmVk=Heor_Nn(p_m&e>< z@4`73udeB_zE5apuWyX96%M&G\n" -"Language-Team: English \n" +"Language-Team: English\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,9 +18,6 @@ msgstr "" "X-Domain: brezngeo\n" #: includes/Admin/AdminMenu.php:11 -msgid "BreznGEO" -msgstr "BreznGEO" - #: includes/Admin/AdminMenu.php:12 msgid "BreznGEO" msgstr "BreznGEO" @@ -47,6 +44,7 @@ msgstr "Meta Generator" #: includes/Admin/AdminMenu.php:59 #: includes/Admin/AdminMenu.php:60 #: includes/Admin/views/bulk.php:3 +#: includes/Admin/views/dashboard.php:42 msgid "Bulk Generator" msgstr "Bulk Generator" @@ -94,7 +92,6 @@ msgstr "AI Provider Settings" msgid "Meta Generator Settings" msgstr "Meta Generator Settings" -#: includes/Admin/views/dashboard.php:42 #: includes/Admin/views/dashboard.php:48 msgid "Status" msgstr "Status" @@ -107,33 +104,73 @@ msgstr "Version:" msgid "Active Provider:" msgstr "Active Provider:" -#: includes/Admin/views/dashboard.php:56 -msgid "Interne Link-Analyse" +#: includes/Admin/views/dashboard.php +msgid "New here?" +msgstr "New here?" + +#: includes/Admin/views/dashboard.php +msgid "Read the setup guide — get running in five minutes →" +msgstr "Read the setup guide — get running in five minutes →" + +#: includes/Admin/views/dashboard.php +msgid "Internal Link Analysis" msgstr "Internal Link Analysis" -#: includes/Admin/views/dashboard.php:58 -msgid "Wird geladen\xe2\x80\xa6" -msgstr "Loading\xe2\x80\xa6" +#: includes/Admin/views/dashboard.php +msgid "Loading…" +msgstr "Loading…" -#: includes/Admin/views/dashboard.php:63 -msgid "AI Crawler \xe2\x80\x94 letzte 30 Tage" -msgstr "AI Crawler \xe2\x80\x94 last 30 days" +#: includes/Admin/views/dashboard.php +msgid "AI Crawlers — Last 30 Days" +msgstr "AI Crawlers — Last 30 Days" -#: includes/Admin/views/dashboard.php:67 -msgid "Noch keine AI-Crawls aufgezeichnet." -msgstr "No AI crawls recorded yet." +#: includes/Admin/views/dashboard.php +msgid "No AI crawlers recorded yet." +msgstr "No AI crawlers recorded yet." -#: includes/Admin/views/dashboard.php:71 +#: includes/Admin/views/dashboard.php msgid "Bot" msgstr "Bot" -#: includes/Admin/views/dashboard.php:72 -msgid "Besuche" +#: includes/Admin/views/dashboard.php +msgid "Visits" msgstr "Visits" -#: includes/Admin/views/dashboard.php:73 -msgid "Zuletzt" -msgstr "Last seen" +#: includes/Admin/views/dashboard.php +msgid "Last Seen" +msgstr "Last Seen" + +#: includes/Admin/views/dashboard.php +msgid "Analysis error." +msgstr "Analysis error." + +#: includes/Admin/views/dashboard.php +msgid "Posts without internal links" +msgstr "Posts without internal links" + +#: includes/Admin/views/dashboard.php +msgid "All posts have internal links." +msgstr "All posts have internal links." + +#: includes/Admin/views/dashboard.php +msgid "Posts with many external links (≥" +msgstr "Posts with many external links (≥" + +#: includes/Admin/views/dashboard.php +msgid "No posts with excessive external links." +msgstr "No posts with excessive external links." + +#: includes/Admin/views/dashboard.php +msgid "Pillar Pages (Top 5)" +msgstr "Pillar Pages (Top 5)" + +#: includes/Admin/views/dashboard.php +msgid "No data." +msgstr "No data." + +#: includes/Admin/views/dashboard.php +msgid "Connection error." +msgstr "Connection error." #: includes/Admin/views/provider.php:13 #: includes/Admin/views/bulk.php:15 @@ -165,13 +202,13 @@ msgstr "Test connection" msgid "Model:" msgstr "Model:" -#: includes/Admin/views/provider.php:63 -msgid "Aktuelle Preise ansehen \xe2\x86\x92" -msgstr "View current prices \xe2\x86\x92" +#: includes/Admin/views/provider.php +msgid "View current pricing →" +msgstr "View current pricing →" -#: includes/Admin/views/provider.php:67 -msgid "Kosten pro 1 Million Token (f\xc3\xbcr Kostens\xc3\xbcbersicht im Bulk):" -msgstr "Cost per 1 million tokens (for cost overview in bulk):" +#: includes/Admin/views/provider.php +msgid "Cost per 1 million tokens (for the Bulk cost overview):" +msgstr "Cost per 1 million tokens (for the Bulk cost overview):" #: includes/Admin/views/provider.php:88 #: includes/Admin/views/meta.php:101 @@ -228,9 +265,21 @@ msgstr "0 / 0 processed" msgid "llms.txt Configuration" msgstr "llms.txt Configuration" -#: includes/Admin/views/txt.php:7 -msgid "llms.txt Cache leeren" -msgstr "Clear llms.txt cache" +#: includes/Admin/views/txt.php +msgid "Clear llms.txt Cache" +msgstr "Clear llms.txt Cache" + +#: includes/Admin/views/txt.php +msgid "Error." +msgstr "Error." + +#: includes/Admin/views/txt.php +msgid "Max. links per page" +msgstr "Max. links per page" + +#: includes/Admin/views/txt.php +msgid "With more posts, llms-2.txt, llms-3.txt etc. are created and linked automatically." +msgstr "With more posts, llms-2.txt, llms-3.txt etc. are created and linked automatically." #: includes/Admin/views/txt.php:28 msgid "Your llms.txt will be served at:" @@ -291,11 +340,11 @@ msgstr "Which post types to include in the content list." #: includes/Admin/views/txt.php:106 msgid "Max. Links pro Seite" -msgstr "Max. links per page" +msgstr "Max. Links pro Seite" #: includes/Admin/views/txt.php:112 msgid "Bei mehr Posts werden automatisch llms-2.txt, llms-3.txt etc. erstellt und verlinkt." -msgstr "For more posts, llms-2.txt, llms-3.txt etc. are automatically created and linked." +msgstr "Bei mehr Posts werden automatisch llms-2.txt, llms-3.txt etc. erstellt und verlinkt." #: includes/Admin/views/txt.php:118 msgid "Description (after content)" @@ -398,8 +447,8 @@ msgid "Block" msgstr "Block" #: includes/Admin/views/txt.php -msgid "View current robots.txt \xe2\x86\x92" -msgstr "View current robots.txt \xe2\x86\x92" +msgid "View current robots.txt →" +msgstr "View current robots.txt →" #: includes/Admin/views/txt.php msgid "Save robots.txt Settings" @@ -409,44 +458,44 @@ msgstr "Save robots.txt Settings" msgid "Meta Description (BreznGEO)" msgstr "Meta Description (BreznGEO)" -#: includes/Admin/MetaEditorBox.php:34 -msgid "KI generiert" +#: includes/Admin/MetaEditorBox.php +msgid "AI generated" msgstr "AI generated" -#: includes/Admin/MetaEditorBox.php:35 -msgid "Fallback (erster Absatz)" +#: includes/Admin/MetaEditorBox.php +msgid "Fallback (first paragraph)" msgstr "Fallback (first paragraph)" -#: includes/Admin/MetaEditorBox.php:36 -msgid "Manuell bearbeitet" +#: includes/Admin/MetaEditorBox.php +msgid "Manually edited" msgstr "Manually edited" -#: includes/Admin/MetaEditorBox.php:37 -msgid "Noch nicht generiert" +#: includes/Admin/MetaEditorBox.php +msgid "Not yet generated" msgstr "Not yet generated" -#: includes/Admin/MetaEditorBox.php:67 -msgid "Mit KI neu generieren" +#: includes/Admin/MetaEditorBox.php +msgid "Regenerate with AI" msgstr "Regenerate with AI" -#: includes/Admin/SeoWidget.php:16 -msgid "SEO Analyse (BreznGEO)" +#: includes/Admin/SeoWidget.php +msgid "SEO Analysis (BreznGEO)" msgstr "SEO Analysis (BreznGEO)" -#: includes/Admin/SeoWidget.php:31 -msgid "Titel:" +#: includes/Admin/SeoWidget.php +msgid "Title:" msgstr "Title:" -#: includes/Admin/SeoWidget.php:37 -msgid "W\xc3\xb6rter:" +#: includes/Admin/SeoWidget.php +msgid "Words:" msgstr "Words:" -#: includes/Admin/SeoWidget.php:41 -msgid "Lesezeit:" -msgstr "Reading time:" +#: includes/Admin/SeoWidget.php +msgid "Reading Time:" +msgstr "Reading Time:" -#: includes/Admin/SeoWidget.php:46 -msgid "\xc3\x9cberschriften" +#: includes/Admin/SeoWidget.php +msgid "Headings" msgstr "Headings" #: includes/Admin/SeoWidget.php:49 @@ -491,17 +540,406 @@ msgstr "No API key saved. Please save first." msgid "Unknown provider." msgstr "Unknown provider." -#: includes/Admin/LlmsPage.php:52 -msgid "Cache geleert." +#: includes/Admin/LlmsPage.php +msgid "Cache cleared." msgstr "Cache cleared." -#: includes/Features/MetaGenerator.php:191 -msgid "Ein Bulk-Prozess l\xc3\xa4uft bereits." +#: includes/Features/MetaGenerator.php +msgid "A bulk process is already running." msgstr "A bulk process is already running." -#: includes/Features/LlmsTxt.php:31 -msgid "BreznGEO bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math." -msgstr "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed for Rank Math." +#: includes/Features/LlmsTxt.php +msgid "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed in Rank Math." +msgstr "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed in Rank Math." + +#: includes/Admin/AdminMenu.php +msgid "GEO Quick Overview" +msgstr "GEO Quick Overview" + +#: includes/Admin/GeoEditorBox.php +msgid "GEO Quick Overview (BreznGEO)" +msgstr "GEO Quick Overview (BreznGEO)" + +#: includes/Admin/GeoEditorBox.php +msgid "Enable GEO block for this post" +msgstr "Enable GEO block for this post" + +#: includes/Admin/GeoEditorBox.php +msgid "Lock auto-regeneration" +msgstr "Lock auto-regeneration" + +#: includes/Admin/GeoEditorBox.php +#, php-format +msgid "Generated: %s" +msgstr "Generated: %s" + +#: includes/Admin/GeoEditorBox.php +msgid "Generate now" +msgstr "Generate now" + +#: includes/Admin/GeoEditorBox.php +msgid "Regenerate" +msgstr "Regenerate" + +#: includes/Admin/GeoEditorBox.php +msgid "Clear" +msgstr "Clear" + +#: includes/Admin/GeoEditorBox.php +msgid "Summary" +msgstr "Summary" + +#: includes/Admin/GeoEditorBox.php +msgid "(one per line)" +msgstr "(one per line)" + +#: includes/Admin/GeoEditorBox.php +msgid "Key Points" +msgstr "Key Points" + +#: includes/Admin/GeoEditorBox.php +msgid "(Format: Question? | Answer \xe2\x80\x94 one per line)" +msgstr "(Format: Question? | Answer \xe2\x80\x94 one per line)" + +#: includes/Admin/GeoEditorBox.php +msgid "Prompt add-on (optional)" +msgstr "Prompt add-on (optional)" + +#: includes/Admin/GeoEditorBox.php +msgid "Generation failed. Check API key and provider settings." +msgstr "Generation failed. Check API key and provider settings." + +#: includes/Admin/views/geo.php +msgid "Activation" +msgstr "Activation" + +#: includes/Admin/views/geo.php +msgid "Enable GEO Block" +msgstr "Enable GEO Block" + +#: includes/Admin/views/geo.php +msgid "Output the Quick Overview block on the frontend" +msgstr "Output the Quick Overview block on the frontend" + +#: includes/Admin/views/geo.php +msgid "Mode" +msgstr "Mode" + +#: includes/Admin/views/geo.php +msgid "Auto on publish / update (recommended)" +msgstr "Auto on publish / update (recommended)" + +#: includes/Admin/views/geo.php +msgid "Hybrid: auto only when fields are empty" +msgstr "Hybrid: auto only when fields are empty" + +#: includes/Admin/views/geo.php +msgid "Manual only (editor button)" +msgstr "Manual only (editor button)" + +#: includes/Admin/views/geo.php +msgid "Regenerate on update" +msgstr "Regenerate on update" + +#: includes/Admin/views/geo.php +msgid "Regenerate on every save of a published post" +msgstr "Regenerate on every save of a published post" + +#: includes/Admin/views/geo.php +msgid "Word threshold for FAQ" +msgstr "Word threshold for FAQ" + +#: includes/Admin/views/geo.php +msgid "Below this word count, no FAQ is generated. Default: 350" +msgstr "Below this word count, no FAQ is generated. Default: 350" + +#: includes/Admin/views/geo.php +msgid "Output" +msgstr "Output" + +#: includes/Admin/views/geo.php +msgid "After first paragraph (default)" +msgstr "After first paragraph (default)" + +#: includes/Admin/views/geo.php +msgid "Top of post" +msgstr "Top of post" + +#: includes/Admin/views/geo.php +msgid "Bottom of post" +msgstr "Bottom of post" + +#: includes/Admin/views/geo.php +msgid "Output style" +msgstr "Output style" + +#: includes/Admin/views/geo.php +msgid "Collapsible
(default)" +msgstr "Collapsible
(default)" + +#: includes/Admin/views/geo.php +msgid "Always open" +msgstr "Always open" + +#: includes/Admin/views/geo.php +msgid "Store only, no frontend output" +msgstr "Store only, no frontend output" + +#: includes/Admin/views/geo.php +msgid "Block title" +msgstr "Block title" + +#: includes/Admin/views/geo.php +msgid "Summary label" +msgstr "Summary label" + +#: includes/Admin/views/geo.php +msgid "Key Points label" +msgstr "Key Points label" + +#: includes/Admin/views/geo.php +msgid "FAQ label" +msgstr "FAQ label" + +#: includes/Admin/views/geo.php +msgid "Load minimal CSS" +msgstr "Load minimal CSS" + +#: includes/Admin/views/geo.php +msgid "Load base stylesheet for .brezngeo-geo on the frontend" +msgstr "Load base stylesheet for .brezngeo-geo on the frontend" + +#: includes/Admin/views/geo.php +msgid "Automatically scoped to .brezngeo-geo{...}. Enter CSS property:value pairs only — selectors, at-rules (@media, @import etc.) and url() are blocked for security." +msgstr "Automatically scoped to .brezngeo-geo{...}. Enter CSS property:value pairs only — selectors, at-rules (@media, @import etc.) and url() are blocked for security." + +#: includes/Admin/views/geo.php +msgid "AI Prompt" +msgstr "AI Prompt" + +#: includes/Admin/views/geo.php +msgid "Default prompt" +msgstr "Default prompt" + +#: includes/Admin/views/geo.php +msgid "Per-post prompt add-on" +msgstr "Per-post prompt add-on" + +#: includes/Admin/views/geo.php +msgid "Authors can enter a prompt add-on per post in the editor" +msgstr "Authors can enter a prompt add-on per post in the editor" + +#: includes/Admin/views/dashboard.php +msgid "Plugin Compatibility" +msgstr "Plugin Compatibility" + +#: includes/Admin/views/dashboard.php +msgid "The following SEO plugins were detected. BreznGEO adapts automatically." +msgstr "The following SEO plugins were detected. BreznGEO adapts automatically." + +#: includes/Admin/views/dashboard.php +msgid "llms.txt: BreznGEO serves the file with priority — Rank Math is bypassed." +msgstr "llms.txt: BreznGEO serves the file with priority — Rank Math is bypassed." + +#: includes/Admin/views/dashboard.php +msgid "Schema.org: BreznGEO suppresses its own JSON-LD to avoid duplicates." +msgstr "Schema.org: BreznGEO suppresses its own JSON-LD to avoid duplicates." + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the Rank Math meta field." +msgstr "Meta descriptions: BreznGEO writes to the Rank Math meta field." + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the Yoast meta field." +msgstr "Meta descriptions: BreznGEO writes to the Yoast meta field." + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the AIOSEO meta field." +msgstr "Meta descriptions: BreznGEO writes to the AIOSEO meta field." + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the SEOPress meta field." +msgstr "Meta descriptions: BreznGEO writes to the SEOPress meta field." + +#: includes/Admin/views/geo.php +msgid "Color scheme" +msgstr "Color scheme" + +#: includes/Admin/views/geo.php +msgid "Auto (follows OS light/dark preference)" +msgstr "Auto (follows OS light/dark preference)" + +#: includes/Admin/views/geo.php +msgid "Always light" +msgstr "Always light" + +#: includes/Admin/views/geo.php +msgid "Always dark" +msgstr "Always dark" + +#: includes/Admin/views/geo.php +msgid "Auto detects the visitor's OS or browser setting via prefers-color-scheme." +msgstr "Auto detects the visitor's OS or browser setting via prefers-color-scheme." + +#: includes/Admin/views/geo.php +msgid "Accent color" +msgstr "Accent color" + +#: includes/Admin/views/geo.php +msgid "Used for the left border of the summary bar and the expand arrow. Leave empty for the default blue." +msgstr "Used for the left border of the summary bar and the expand arrow. Leave empty for the default blue." + +# --- v1.2.2 --- + +#: includes/Admin/AdminMenu.php +msgid "Testing…" +msgstr "Testing…" + +#: includes/Admin/AdminMenu.php +msgid "Network error" +msgstr "Network error" + +# --- v1.2.3 --- + +#: includes/Admin/BulkPage.php +msgid "A bulk process is already running" +msgstr "A bulk process is already running" + +#: includes/Admin/BulkPage.php +msgid "since" +msgstr "since" + +#: includes/Admin/BulkPage.php +msgid "Posts without meta description:" +msgstr "Posts without meta description:" + +#: includes/Admin/BulkPage.php +msgid "Total:" +msgstr "Total:" + +#: includes/Admin/BulkPage.php +msgid "Input tokens" +msgstr "Input tokens" + +#: includes/Admin/BulkPage.php +msgid "Output tokens" +msgstr "Output tokens" + +#: includes/Admin/BulkPage.php +msgid "â–¶ Start — max {limit} posts, Provider: {provider}" +msgstr "â–¶ Start — max {limit} posts, Provider: {provider}" + +#: includes/Admin/BulkPage.php +msgid "Stop requested…" +msgstr "Stop requested…" + +#: includes/Admin/BulkPage.php +msgid "↻ Processing {count} posts… ({remaining} remaining)" +msgstr "↻ Processing {count} posts… ({remaining} remaining)" + +#: includes/Admin/BulkPage.php +msgid "Unknown error" +msgstr "Unknown error" + +#: includes/Admin/BulkPage.php +msgid "attempt" +msgstr "attempt" + +#: includes/Admin/BulkPage.php +msgid "processed" +msgstr "processed" + +#: includes/Admin/BulkPage.php +msgid "— Done —" +msgstr "— Done —" + +#: includes/Admin/BulkPage.php +msgid "posts failed:" +msgstr "posts failed:" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/AnthropicProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Connection successful" +msgstr "Connection successful" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/AnthropicProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Recommended" +msgstr "Recommended" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Cheap" +msgstr "Cheap" + +#: includes/Providers/OpenAIProvider.php +msgid "Very cheap" +msgstr "Very cheap" + +#: includes/Providers/AnthropicProvider.php +msgid "Powerful" +msgstr "Powerful" + +#: includes/Providers/AnthropicProvider.php +msgid "Fast & cheap" +msgstr "Fast & cheap" + +#: includes/Admin/AdminMenu.php +msgid "Really reset the prompt?" +msgstr "Really reset the prompt?" + +#: includes/Admin/views/dashboard.php +msgid "Servus! Welcome to BreznGEO." +msgstr "Servus! Welcome to BreznGEO." + +#: includes/Admin/views/dashboard.php +msgid "No Lederhosen required — your SEO is already in good hands." +msgstr "No Lederhosen required — your SEO is already in good hands." + +#: includes/Admin/views/dashboard.php +msgid "Read the setup guide and be running in five minutes →" +msgstr "Read the setup guide and be running in five minutes →" + +#: includes/Admin/views/dashboard.php +msgid "Dismiss" +msgstr "Dismiss" + +#: includes/Admin/views/dashboard.php +msgid "Version" +msgstr "Version" + +#: includes/Admin/views/dashboard.php +msgid "AI metas generated" +msgstr "AI metas generated" + +#: includes/Admin/views/dashboard.php +msgid "Tokens used (est.)" +msgstr "Tokens used (est.)" + +#: includes/Admin/views/dashboard.php +msgid "Est. cost (USD)" +msgstr "Est. cost (USD)" + +#: includes/Admin/views/dashboard.php +msgid "Configure AI Provider" +msgstr "Configure AI Provider" + +#: includes/Admin/views/dashboard.php +msgid "Documentation & How To" +msgstr "Documentation & How To" + +#: includes/Admin/views/provider.php +msgid "Enable AI generation" +msgstr "Enable AI generation" + +#: includes/Admin/views/provider.php +msgid "This feature will incur costs with your AI provider. Make sure you understand the pricing before entering an API key." +msgstr "This feature will incur costs with your AI provider. Make sure you understand the pricing before entering an API key." #: includes/Admin/AdminMenu.php msgid "Link Suggestions" @@ -649,5 +1087,533 @@ msgstr "Use AI to generate GEO-optimised content blocks for LLM visibility." msgid "Save" msgstr "Save" -msgid "Network error" -msgstr "Network error" +# --- v1.3.3 i18n pass --- + +#: includes/Admin/views/dashboard.php +#: includes/Admin/AdminMenu.php +#: includes/Admin/views/keyword-settings.php +msgid "Keyword Analysis" +msgstr "Keyword Analysis" + +#: includes/Admin/views/dashboard.php +msgid "AI-powered keyword suggestions, optimization tips, and semantic analysis." +msgstr "AI-powered keyword suggestions, optimization tips, and semantic analysis." + +#: includes/Admin/views/meta.php +msgid "SEO Widget" +msgstr "SEO Widget" + +#: includes/Admin/views/meta.php +msgid "Theme outputs post title as H1 (suppresses \"no H1\" warning in editor)" +msgstr "Theme outputs post title as H1 (suppresses \"no H1\" warning in editor)" + +#: includes/Admin/views/meta.php +msgid "Most themes render the post title as an H1 tag on the front end. Enable this to avoid false warnings in the SEO Widget when the content itself contains no H1." +msgstr "Most themes render the post title as an H1 tag on the front end. Enable this to avoid false warnings in the SEO Widget when the content itself contains no H1." + +#: includes/Admin/views/meta.php +msgid "No AI provider active." +msgstr "No AI provider active." + +#: includes/Admin/views/meta.php +msgid "Meta descriptions will use the fallback method (first paragraph of the post) until an API key is configured and AI generation is enabled." +msgstr "Meta descriptions will use the fallback method (first paragraph of the post) until an API key is configured and AI generation is enabled." + +#: includes/Admin/views/meta.php +msgid "Configure AI Provider →" +msgstr "Configure AI Provider →" + +#: includes/Admin/views/meta.php +msgid "Fallback mode active — configure an AI provider to enable AI generation." +msgstr "Fallback mode active — configure an AI provider to enable AI generation." + +#: includes/Admin/views/txt.php +msgid "Clear Cache" +msgstr "Clear Cache" + +#: includes/Admin/views/txt.php +msgid "URL:" +msgstr "URL:" + +#: includes/Admin/KeywordMetaBox.php +msgid "Keyword Analysis (BreznGEO)" +msgstr "Keyword Analysis (BreznGEO)" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Main Keyword" +msgstr "Main Keyword" + +#: includes/Admin/views/keyword-meta-box.php +msgid "e.g. Passau travel guide" +msgstr "e.g. Passau travel guide" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Secondary Keywords" +msgstr "Secondary Keywords" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Add Keyword" +msgstr "Add Keyword" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Analyze" +msgstr "Analyze" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Suggest Keywords" +msgstr "Suggest Keywords" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Showing cached results. Click \"Analyze\" to refresh." +msgstr "Showing cached results. Click \"Analyze\" to refresh." + +#: includes/Admin/views/keyword-meta-box.php +msgid "Optimization Tips" +msgstr "Optimization Tips" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Semantic Analysis" +msgstr "Semantic Analysis" + +#: includes/Admin/KeywordMetaBox.php (JS i18n) +msgid "Analyzing…" +msgstr "Analyzing…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Please enter a main keyword." +msgstr "Please enter a main keyword." + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting suggestions…" +msgstr "Getting suggestions…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting optimization tips…" +msgstr "Getting optimization tips…" + +#: includes/Admin/KeywordMetaBox.php +msgid "Running semantic analysis…" +msgstr "Running semantic analysis…" + +#: includes/Admin/KeywordMetaBox.php +msgid "AI keyword features are not activated." +msgstr "AI keyword features are not activated." + +#: includes/Admin/KeywordMetaBox.php +msgid "AI generation failed. Check provider settings." +msgstr "AI generation failed. Check provider settings." + +#: includes/Admin/KeywordMetaBox.php +msgid "Could not parse AI response." +msgstr "Could not parse AI response." + +#: includes/Admin/KeywordMetaBox.php +msgid "No keyword provided." +msgstr "No keyword provided." + +#: includes/Admin/SeoWidget.php +msgid "No H1 heading" +msgstr "No H1 heading" + +#: includes/Admin/SeoWidget.php +msgid "Multiple H1 headings" +msgstr "Multiple H1 headings" + +#: includes/Admin/SeoWidget.php +msgid "No internal links" +msgstr "No internal links" + +#: includes/Admin/SeoWidget.php +msgid "internal" +msgstr "internal" + +#: includes/Admin/SeoWidget.php +msgid "external" +msgstr "external" + +#: includes/Admin/SeoWidget.php +msgid "min" +msgstr "min" + +#: includes/Admin/views/keyword-settings.php +msgid "Analysis Settings" +msgstr "Analysis Settings" + +#: includes/Admin/views/keyword-settings.php +msgid "Update Mode" +msgstr "Update Mode" + +#: includes/Admin/views/keyword-settings.php +msgid "Manual — click \"Analyze\" button" +msgstr "Manual — click \"Analyze\" button" + +#: includes/Admin/views/keyword-settings.php +msgid "Live — auto-analyze while typing" +msgstr "Live — auto-analyze while typing" + +#: includes/Admin/views/keyword-settings.php +msgid "On Save — analyze when post is saved" +msgstr "On Save — analyze when post is saved" + +#: includes/Admin/views/keyword-settings.php +msgid "Target Keyword Density (%)" +msgstr "Target Keyword Density (%)" + +#: includes/Admin/views/keyword-settings.php +msgid "Recommended: 1.0–2.0%. Pass range is ±0.5% around the target." +msgstr "Recommended: 1.0–2.0%. Pass range is ±0.5% around the target." + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Primary)" +msgstr "Min. Occurrences (Primary)" + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Secondary)" +msgstr "Min. Occurrences (Secondary)" + +#: includes/Admin/views/keyword-settings.php +msgid "Live Mode Debounce (ms)" +msgstr "Live Mode Debounce (ms)" + +#: includes/Admin/views/keyword-settings.php +msgid "Delay in milliseconds before live analysis triggers after typing stops." +msgstr "Delay in milliseconds before live analysis triggers after typing stops." + +#: includes/Admin/views/keyword-settings.php +msgid "Show keyword meta box on" +msgstr "Show keyword meta box on" + +#: includes/Admin/views/bulk.php +msgid "No AI provider connected — descriptions will be generated from content without AI (fallback mode)." +msgstr "No AI provider connected — descriptions will be generated from content without AI (fallback mode)." + +#: includes/Admin/views/geo.php +msgid "Labels" +msgstr "Labels" + +#: includes/Admin/views/geo.php +msgid "Styling" +msgstr "Styling" + +#: includes/Admin/views/geo.php +msgid "Position" +msgstr "Position" + +#: includes/Admin/views/geo.php +msgid "Theme" +msgstr "Theme" + +#: includes/Admin/views/geo.php +msgid "Light" +msgstr "Light" + +#: includes/Admin/views/geo.php +msgid "Dark" +msgstr "Dark" + +#: includes/Admin/views/geo.php +msgid "Minimal" +msgstr "Minimal" + +#: includes/Admin/views/geo.php +msgid "Brezn" +msgstr "Brezn" + +# --- Schema.org --- + +#: includes/Admin/AdminMenu.php +msgid "Schema.org" +msgstr "Schema.org" + +#: includes/Admin/AdminMenu.php +msgid "AI disabled" +msgstr "AI disabled" + +#: includes/Admin/AdminMenu.php +msgid "\xe2\x80\x94 Not configured \xe2\x80\x94" +msgstr "\xe2\x80\x94 Not configured \xe2\x80\x94" + +#: includes/Admin/views/schema.php +msgid "BreznGEO Schema" +msgstr "BreznGEO Schema" + +#: includes/Admin/views/schema-meta-box.php +msgid "Schema Type" +msgstr "Schema Type" + +#: includes/Admin/views/schema-meta-box.php +msgid "\xe2\x80\x94 No Schema \xe2\x80\x94" +msgstr "\xe2\x80\x94 No Schema \xe2\x80\x94" + +#: includes/Admin/views/schema.php +msgid "BlogPosting / Article (with embedded Author + Image)" +msgstr "BlogPosting / Article (with embedded Author + Image)" + +#: includes/Admin/views/schema.php +msgid "FAQPage (from GEO Quick Overview \xe2\x80\x94 automatic)" +msgstr "FAQPage (from GEO Quick Overview \xe2\x80\x94 automatic)" + +#: includes/Admin/views/schema.php +msgid "ImageObject (Featured Image)" +msgstr "ImageObject (Featured Image)" + +#: includes/Admin/views/schema.php +msgid "VideoObject (auto-detect YouTube/Vimeo)" +msgstr "VideoObject (auto-detect YouTube/Vimeo)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe" +msgstr "Recipe" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe Name" +msgstr "Recipe Name" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe (Metabox in Post Editor)" +msgstr "Recipe (Metabox in Post Editor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event" +msgstr "Event" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event Name" +msgstr "Event Name" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event (Metabox in Post Editor)" +msgstr "Event (Metabox in Post Editor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo Guide" +msgstr "HowTo Guide" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo (Metabox in Post Editor)" +msgstr "HowTo (Metabox in Post Editor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review / Rating" +msgstr "Review / Rating" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review with Rating (Metabox in Post Editor)" +msgstr "Review with Rating (Metabox in Post Editor)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Guide Name" +msgstr "Guide Name" + +#: includes/Admin/views/schema-meta-box.php +msgid "Steps (one line = one step)" +msgstr "Steps (one line = one step)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Ingredients (one per line)" +msgstr "Ingredients (one per line)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Instructions (one step per line)" +msgstr "Instructions (one step per line)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Prep Time (min)" +msgstr "Prep Time (min)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Cook Time (min)" +msgstr "Cook Time (min)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Servings" +msgstr "Servings" + +#: includes/Admin/views/schema-meta-box.php +msgid "Rating (1\xe2\x80\x935)" +msgstr "Rating (1\xe2\x80\x935)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Reviewed Product / Service" +msgstr "Reviewed Product / Service" + +#: includes/Admin/views/schema-meta-box.php +msgid "Start Date" +msgstr "Start Date" + +#: includes/Admin/views/schema-meta-box.php +msgid "End Date (optional)" +msgstr "End Date (optional)" + +#: includes/Admin/views/schema-meta-box.php +msgid "Location or URL" +msgstr "Location or URL" + +#: includes/Admin/views/schema-meta-box.php +msgid "Online Event" +msgstr "Online Event" + +#: includes/Admin/views/schema-meta-box.php +msgid "Post not found." +msgstr "Post not found." + +# --- Keyword Analysis Checks --- + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword Density" +msgstr "Keyword Density" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in title." +msgstr "Keyword found in title." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in title." +msgstr "Keyword not found in title." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in subheading." +msgstr "Keyword found in subheading." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any H2-H6." +msgstr "Keyword not found in any H2-H6." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in URL." +msgstr "Keyword found in URL." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in URL." +msgstr "Keyword not found in URL." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in meta description." +msgstr "Keyword found in meta description." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in meta description." +msgstr "Keyword not found in meta description." + +#: includes/Features/KeywordAnalysis.php +msgid "Meta description is empty." +msgstr "Meta description is empty." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in first paragraph." +msgstr "Keyword found in first paragraph." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in first paragraph." +msgstr "Keyword not found in first paragraph." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in last paragraph." +msgstr "Keyword found in last paragraph." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in last paragraph." +msgstr "Keyword not found in last paragraph." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in excerpt." +msgstr "Keyword found in excerpt." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in excerpt." +msgstr "Keyword not found in excerpt." + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt is empty." +msgstr "Excerpt is empty." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image alt text." +msgstr "Keyword found in image alt text." + +#: includes/Features/KeywordAnalysis.php +msgid "No image contains keyword in alt text." +msgstr "No image contains keyword in alt text." + +#: includes/Features/KeywordAnalysis.php +msgid "No images found." +msgstr "No images found." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image title or caption." +msgstr "Keyword found in image title or caption." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any image title or caption." +msgstr "Keyword not found in any image title or caption." + +#: includes/Features/KeywordAnalysis.php +msgid "No paragraphs found." +msgstr "No paragraphs found." + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in content." +msgstr "Keyword not found in content." + +#: includes/Features/KeywordAnalysis.php +msgid "URL / Slug" +msgstr "URL / Slug" + +#: includes/Features/KeywordAnalysis.php +msgid "First Paragraph" +msgstr "First Paragraph" + +#: includes/Features/KeywordAnalysis.php +msgid "Last Paragraph" +msgstr "Last Paragraph" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Alt Texts" +msgstr "Image Alt Texts" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Title/Caption" +msgstr "Image Title/Caption" + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt" +msgstr "Excerpt" + +#: includes/Features/KeywordAnalysis.php +msgid "Meta Description" +msgstr "Meta Description" + +#: includes/Features/KeywordAnalysis.php +msgid "FAQ" +msgstr "FAQ" + +#: includes/Features/KeywordAnalysis.php +#, php-format +msgid "%1$.1f%% (target: %2$.1f%%)" +msgstr "%1$.1f%% (target: %2$.1f%%)" + +#: includes/Admin/views/geo.php +msgid "The GEO block will not be generated automatically until an API key is configured and AI generation is enabled." +msgstr "The GEO block will not be generated automatically until an API key is configured and AI generation is enabled." + +#: includes/Admin/views/geo.php +msgid "Variables: {title}, {content}, {language}" +msgstr "Variables: {title}, {content}, {language}" + +#: includes/Admin/views/geo.php +#, php-format +msgid "Want to customise further? Learn how to style the block via your theme →" +msgstr "Want to customise further? Learn how to style the block via your theme →" + +#: includes/Admin/views/geo.php +msgid "Left border stripe and expand arrow colour. Leave empty for the default blue. Not used by the Minimal theme." +msgstr "Left border stripe and expand arrow colour. Leave empty for the default blue. Not used by the Minimal theme." + +#: includes/Admin/views/geo.php +msgid "Light \xe2\x80\x94 clean card with a blue accent. Dark \xe2\x80\x94 same for dark-mode sites. Minimal \xe2\x80\x94 borderless, left stripe only. Brezn \xe2\x80\x94 Brezn blue with diamond header pattern." +msgstr "Light \xe2\x80\x94 clean card with a blue accent. Dark \xe2\x80\x94 same for dark-mode sites. Minimal \xe2\x80\x94 borderless, left stripe only. Brezn \xe2\x80\x94 Brezn blue with diamond header pattern." + +#: includes/Admin/views/bulk.php +#, php-format +msgid "No AI provider connected \xe2\x80\x94 descriptions will be generated from content without AI (fallback mode). Configure a provider \xe2\x86\x92" +msgstr "No AI provider connected \xe2\x80\x94 descriptions will be generated from content without AI (fallback mode). Configure a provider \xe2\x86\x92" diff --git a/brezngeo/languages/brezngeo.pot b/brezngeo/languages/brezngeo.pot index 82164c3..0d7c4f5 100644 --- a/brezngeo/languages/brezngeo.pot +++ b/brezngeo/languages/brezngeo.pot @@ -1,3 +1,4 @@ +# German (de_DE) translation for BreznGEO # Copyright (C) 2025 Donau2Space # This file is distributed under the GPL-2.0-or-later license. msgid "" @@ -5,19 +6,18 @@ msgstr "" "Project-Id-Version: BreznGEO 1.0.0\n" "Report-Msgid-Bugs-To: https://donau2space.de\n" "POT-Creation-Date: 2026-02-21T00:00:00+00:00\n" +"PO-Revision-Date: 2026-02-25T00:00:00+00:00\n" +"Last-Translator: Donau2Space \n" +"Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2026-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Manual\n" "X-Domain: brezngeo\n" #: includes/Admin/AdminMenu.php:11 -msgid "BreznGEO" -msgstr "" - #: includes/Admin/AdminMenu.php:12 msgid "BreznGEO" msgstr "" @@ -44,15 +44,12 @@ msgstr "" #: includes/Admin/AdminMenu.php:59 #: includes/Admin/AdminMenu.php:60 #: includes/Admin/views/bulk.php:3 +#: includes/Admin/views/dashboard.php:42 msgid "Bulk Generator" msgstr "" -#: includes/Admin/AdminMenu.php:67 -msgid "robots.txt / AI Bots" -msgstr "" - -#: includes/Admin/AdminMenu.php:69 -msgid "robots.txt" +#: includes/Admin/AdminMenu.php +msgid "TXT Files" msgstr "" #: includes/Admin/views/dashboard.php:3 @@ -95,10 +92,6 @@ msgstr "" msgid "Meta Generator Settings" msgstr "" -#: includes/Admin/views/dashboard.php:42 -msgid "Bulk Generator" -msgstr "" - #: includes/Admin/views/dashboard.php:48 msgid "Status" msgstr "" @@ -111,32 +104,72 @@ msgstr "" msgid "Active Provider:" msgstr "" -#: includes/Admin/views/dashboard.php:56 -msgid "Interne Link-Analyse" +#: includes/Admin/views/dashboard.php +msgid "New here?" msgstr "" -#: includes/Admin/views/dashboard.php:58 -msgid "Wird geladen\xe2\x80\xa6" +#: includes/Admin/views/dashboard.php +msgid "Read the setup guide — get running in five minutes →" msgstr "" -#: includes/Admin/views/dashboard.php:63 -msgid "AI Crawler \xe2\x80\x94 letzte 30 Tage" +#: includes/Admin/views/dashboard.php +msgid "Internal Link Analysis" msgstr "" -#: includes/Admin/views/dashboard.php:67 -msgid "Noch keine AI-Crawls aufgezeichnet." +#: includes/Admin/views/dashboard.php +msgid "Loading…" msgstr "" -#: includes/Admin/views/dashboard.php:71 +#: includes/Admin/views/dashboard.php +msgid "AI Crawlers — Last 30 Days" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "No AI crawlers recorded yet." +msgstr "" + +#: includes/Admin/views/dashboard.php msgid "Bot" msgstr "" -#: includes/Admin/views/dashboard.php:72 -msgid "Besuche" +#: includes/Admin/views/dashboard.php +msgid "Visits" msgstr "" -#: includes/Admin/views/dashboard.php:73 -msgid "Zuletzt" +#: includes/Admin/views/dashboard.php +msgid "Last Seen" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Analysis error." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Posts without internal links" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "All posts have internal links." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Posts with many external links (≥" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "No posts with excessive external links." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Pillar Pages (Top 5)" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "No data." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Connection error." msgstr "" #: includes/Admin/views/provider.php:13 @@ -169,12 +202,12 @@ msgstr "" msgid "Model:" msgstr "" -#: includes/Admin/views/provider.php:63 -msgid "Aktuelle Preise ansehen \xe2\x86\x92" +#: includes/Admin/views/provider.php +msgid "View current pricing →" msgstr "" -#: includes/Admin/views/provider.php:67 -msgid "Kosten pro 1 Million Token (f\xc3\xbcr Kostens\xc3\xbcbersicht im Bulk):" +#: includes/Admin/views/provider.php +msgid "Cost per 1 million tokens (for the Bulk cost overview):" msgstr "" #: includes/Admin/views/provider.php:88 @@ -182,9 +215,26 @@ msgstr "" msgid "Save Settings" msgstr "" -#: includes/Admin/views/provider.php:94 -#: includes/Admin/views/meta.php:107 -msgid "developed with" +#: includes/Admin/views/dashboard.php +#: includes/Admin/views/bulk.php +#: includes/Admin/views/provider.php +#: includes/Admin/views/meta.php +#: includes/Admin/views/geo.php +#: includes/Admin/views/schema.php +#: includes/Admin/views/txt.php +#: includes/Admin/views/link-suggest-settings.php +msgid "developed by" +msgstr "" + +#: includes/Admin/views/dashboard.php +#: includes/Admin/views/bulk.php +#: includes/Admin/views/provider.php +#: includes/Admin/views/meta.php +#: includes/Admin/views/geo.php +#: includes/Admin/views/schema.php +#: includes/Admin/views/txt.php +#: includes/Admin/views/link-suggest-settings.php +msgid "for" msgstr "" #: includes/Admin/views/bulk.php:7 @@ -211,104 +261,116 @@ msgstr "" msgid "0 / 0 processed" msgstr "" -#: includes/Admin/views/llms.php:3 +#: includes/Admin/views/txt.php:3 msgid "llms.txt Configuration" msgstr "" -#: includes/Admin/views/llms.php:7 -msgid "llms.txt Cache leeren" +#: includes/Admin/views/txt.php +msgid "Clear llms.txt Cache" msgstr "" -#: includes/Admin/views/llms.php:28 +#: includes/Admin/views/txt.php +msgid "Error." +msgstr "" + +#: includes/Admin/views/txt.php +msgid "Max. links per page" +msgstr "" + +#: includes/Admin/views/txt.php +msgid "With more posts, llms-2.txt, llms-3.txt etc. are created and linked automatically." +msgstr "" + +#: includes/Admin/views/txt.php:28 msgid "Your llms.txt will be served at:" msgstr "" -#: includes/Admin/views/llms.php:33 +#: includes/Admin/views/txt.php:33 msgid "Active" msgstr "" -#: includes/Admin/views/llms.php:35 +#: includes/Admin/views/txt.php:35 msgid "Inactive" msgstr "" -#: includes/Admin/views/llms.php:44 +#: includes/Admin/views/txt.php:44 msgid "Enable llms.txt" msgstr "" -#: includes/Admin/views/llms.php:49 +#: includes/Admin/views/txt.php:49 msgid "Serve llms.txt at" msgstr "" -#: includes/Admin/views/llms.php:56 +#: includes/Admin/views/txt.php:56 msgid "Title" msgstr "" -#: includes/Admin/views/llms.php:63 +#: includes/Admin/views/txt.php:63 msgid "Appears as the # heading in llms.txt" msgstr "" -#: includes/Admin/views/llms.php:68 +#: includes/Admin/views/txt.php:68 msgid "Description (before links)" msgstr "" -#: includes/Admin/views/llms.php:72 +#: includes/Admin/views/txt.php:72 msgid "Text shown after the title, before featured links." msgstr "" -#: includes/Admin/views/llms.php:77 +#: includes/Admin/views/txt.php:77 msgid "Featured Links" msgstr "" -#: includes/Admin/views/llms.php:82 +#: includes/Admin/views/txt.php:82 msgid "Important links to highlight for AI models. One per line." msgstr "" -#: includes/Admin/views/llms.php:83 +#: includes/Admin/views/txt.php:83 msgid "Markdown format recommended:" msgstr "" -#: includes/Admin/views/llms.php:90 +#: includes/Admin/views/txt.php:90 #: includes/Admin/views/meta.php:25 msgid "Post Types" msgstr "" -#: includes/Admin/views/llms.php:101 +#: includes/Admin/views/txt.php:101 msgid "Which post types to include in the content list." msgstr "" -#: includes/Admin/views/llms.php:106 +#: includes/Admin/views/txt.php:106 msgid "Max. Links pro Seite" msgstr "" -#: includes/Admin/views/llms.php:112 +#: includes/Admin/views/txt.php:112 msgid "Bei mehr Posts werden automatisch llms-2.txt, llms-3.txt etc. erstellt und verlinkt." msgstr "" -#: includes/Admin/views/llms.php:118 +#: includes/Admin/views/txt.php:118 msgid "Description (after content)" msgstr "" -#: includes/Admin/views/llms.php:126 +#: includes/Admin/views/txt.php:126 msgid "Footer Description" msgstr "" -#: includes/Admin/views/llms.php:130 +#: includes/Admin/views/txt.php:130 msgid "Appears at the end of llms.txt after a --- separator." msgstr "" -#: includes/Admin/views/llms.php:135 +#: includes/Admin/views/txt.php:135 msgid "Save llms.txt Settings" msgstr "" -#: includes/Admin/views/llms.php:139 +#: includes/Admin/views/txt.php:139 msgid "Preview" msgstr "" -#: includes/Admin/views/llms.php:141 +#: includes/Admin/views/txt.php:141 msgid "After saving, visit your llms.txt to verify:" msgstr "" -#: includes/Admin/views/llms.php:147 +#: includes/Admin/views/txt.php:147 msgid "Note: If the URL shows a 404, go to Settings \xe2\x86\x92 Permalinks and click Save to flush rewrite rules." msgstr "" @@ -364,80 +426,76 @@ msgstr "" msgid "One URL per line (Twitter, LinkedIn, GitHub, Facebook\xe2\x80\xa6)" msgstr "" -#: includes/Admin/views/robots.php:3 -msgid "robots.txt \xe2\x80\x94 AI Bots" +#: includes/Admin/views/txt.php +msgid "Block known AI bots for this site." msgstr "" -#: includes/Admin/views/robots.php:5 -msgid "Bekannte AI-Bots f\xc3\xbcr diese Website blockieren." +#: includes/Admin/views/txt.php +msgid "Note: Bots are not required to comply." msgstr "" -#: includes/Admin/views/robots.php:6 -msgid "Hinweis: Bots m\xc3\xbcssen sich nicht daran halten." -msgstr "" - -#: includes/Admin/views/robots.php:15 +#: includes/Admin/views/txt.php msgid "User-Agent" msgstr "" -#: includes/Admin/views/robots.php:16 -msgid "Beschreibung" +#: includes/Admin/views/txt.php +msgid "Description" msgstr "" -#: includes/Admin/views/robots.php:17 -msgid "Blockieren" +#: includes/Admin/views/txt.php +msgid "Block" msgstr "" -#: includes/Admin/views/robots.php:36 -msgid "Einstellungen speichern" +#: includes/Admin/views/txt.php +msgid "View current robots.txt →" msgstr "" -#: includes/Admin/views/robots.php:41 -msgid "Aktuelle robots.txt ansehen \xe2\x86\x92" +#: includes/Admin/views/txt.php +msgid "Save robots.txt Settings" msgstr "" #: includes/Admin/MetaEditorBox.php:20 msgid "Meta Description (BreznGEO)" msgstr "" -#: includes/Admin/MetaEditorBox.php:34 -msgid "KI generiert" +#: includes/Admin/MetaEditorBox.php +msgid "AI generated" msgstr "" -#: includes/Admin/MetaEditorBox.php:35 -msgid "Fallback (erster Absatz)" +#: includes/Admin/MetaEditorBox.php +msgid "Fallback (first paragraph)" msgstr "" -#: includes/Admin/MetaEditorBox.php:36 -msgid "Manuell bearbeitet" +#: includes/Admin/MetaEditorBox.php +msgid "Manually edited" msgstr "" -#: includes/Admin/MetaEditorBox.php:37 -msgid "Noch nicht generiert" +#: includes/Admin/MetaEditorBox.php +msgid "Not yet generated" msgstr "" -#: includes/Admin/MetaEditorBox.php:67 -msgid "Mit KI neu generieren" +#: includes/Admin/MetaEditorBox.php +msgid "Regenerate with AI" msgstr "" -#: includes/Admin/SeoWidget.php:16 -msgid "SEO Analyse (BreznGEO)" +#: includes/Admin/SeoWidget.php +msgid "SEO Analysis (BreznGEO)" msgstr "" -#: includes/Admin/SeoWidget.php:31 -msgid "Titel:" +#: includes/Admin/SeoWidget.php +msgid "Title:" msgstr "" -#: includes/Admin/SeoWidget.php:37 -msgid "W\xc3\xb6rter:" +#: includes/Admin/SeoWidget.php +msgid "Words:" msgstr "" -#: includes/Admin/SeoWidget.php:41 -msgid "Lesezeit:" +#: includes/Admin/SeoWidget.php +msgid "Reading Time:" msgstr "" -#: includes/Admin/SeoWidget.php:46 -msgid "\xc3\x9cberschriften" +#: includes/Admin/SeoWidget.php +msgid "Headings" msgstr "" #: includes/Admin/SeoWidget.php:49 @@ -482,16 +540,405 @@ msgstr "" msgid "Unknown provider." msgstr "" -#: includes/Admin/LlmsPage.php:52 -msgid "Cache geleert." +#: includes/Admin/LlmsPage.php +msgid "Cache cleared." msgstr "" -#: includes/Features/MetaGenerator.php:191 -msgid "Ein Bulk-Prozess l\xc3\xa4uft bereits." +#: includes/Features/MetaGenerator.php +msgid "A bulk process is already running." msgstr "" -#: includes/Features/LlmsTxt.php:31 -msgid "BreznGEO bedient llms.txt mit Priorit\xc3\xa4t \xe2\x80\x94 kein Handlungsbedarf bei Rank Math." +#: includes/Features/LlmsTxt.php +msgid "BreznGEO serves llms.txt with priority \xe2\x80\x94 no action needed in Rank Math." +msgstr "" + +#: includes/Admin/AdminMenu.php +msgid "GEO Quick Overview" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "GEO Quick Overview (BreznGEO)" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Enable GEO block for this post" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Lock auto-regeneration" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +#, php-format +msgid "Generated: %s" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Generate now" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Regenerate" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Clear" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Summary" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "(one per line)" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Key Points" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "(Format: Question? | Answer \xe2\x80\x94 one per line)" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Prompt add-on (optional)" +msgstr "" + +#: includes/Admin/GeoEditorBox.php +msgid "Generation failed. Check API key and provider settings." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Activation" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Enable GEO Block" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Output the Quick Overview block on the frontend" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Mode" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Auto on publish / update (recommended)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Hybrid: auto only when fields are empty" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Manual only (editor button)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Regenerate on update" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Regenerate on every save of a published post" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Word threshold for FAQ" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Below this word count, no FAQ is generated. Default: 350" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Output" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "After first paragraph (default)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Top of post" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Bottom of post" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Output style" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Collapsible
(default)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Always open" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Store only, no frontend output" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Block title" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Summary label" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Key Points label" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "FAQ label" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Load minimal CSS" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Load base stylesheet for .brezngeo-geo on the frontend" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Automatically scoped to .brezngeo-geo{...}. Enter CSS property:value pairs only — selectors, at-rules (@media, @import etc.) and url() are blocked for security." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "AI Prompt" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Default prompt" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Per-post prompt add-on" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Authors can enter a prompt add-on per post in the editor" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Plugin Compatibility" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "The following SEO plugins were detected. BreznGEO adapts automatically." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "llms.txt: BreznGEO serves the file with priority — Rank Math is bypassed." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Schema.org: BreznGEO suppresses its own JSON-LD to avoid duplicates." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the Rank Math meta field." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the Yoast meta field." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the AIOSEO meta field." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Meta descriptions: BreznGEO writes to the SEOPress meta field." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Color scheme" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Auto (follows OS light/dark preference)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Always light" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Always dark" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Auto detects the visitor's OS or browser setting via prefers-color-scheme." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Accent color" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Used for the left border of the summary bar and the expand arrow. Leave empty for the default blue." +msgstr "" + +# --- v1.2.2 --- + +#: includes/Admin/AdminMenu.php +msgid "Testing…" +msgstr "" + +#: includes/Admin/AdminMenu.php +msgid "Network error" +msgstr "" + +# --- v1.2.3 --- + +#: includes/Admin/BulkPage.php +msgid "A bulk process is already running" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "since" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Posts without meta description:" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Total:" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Input tokens" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Output tokens" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "â–¶ Start — max {limit} posts, Provider: {provider}" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Stop requested…" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "↻ Processing {count} posts… ({remaining} remaining)" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "Unknown error" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "attempt" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "processed" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "— Done —" +msgstr "" + +#: includes/Admin/BulkPage.php +msgid "posts failed:" +msgstr "" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/AnthropicProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Connection successful" +msgstr "" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/AnthropicProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Recommended" +msgstr "" + +#: includes/Providers/OpenAIProvider.php +#: includes/Providers/GeminiProvider.php +#: includes/Providers/GrokProvider.php +msgid "Cheap" +msgstr "" + +#: includes/Providers/OpenAIProvider.php +msgid "Very cheap" +msgstr "" + +#: includes/Providers/AnthropicProvider.php +msgid "Powerful" +msgstr "" + +#: includes/Providers/AnthropicProvider.php +msgid "Fast & cheap" +msgstr "" + +#: includes/Admin/AdminMenu.php +msgid "Really reset the prompt?" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Servus! Welcome to BreznGEO." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "No Lederhosen required — your SEO is already in good hands." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Read the setup guide and be running in five minutes →" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Dismiss" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Version" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "AI metas generated" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Tokens used (est.)" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Est. cost (USD)" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Configure AI Provider" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Documentation & How To" +msgstr "" + +#: includes/Admin/views/provider.php +msgid "Enable AI generation" +msgstr "" + +#: includes/Admin/views/provider.php +msgid "This feature will incur costs with your AI provider. Make sure you understand the pricing before entering an API key." msgstr "" #: includes/Admin/AdminMenu.php @@ -559,9 +1006,6 @@ msgstr "" msgid "Max output tokens" msgstr "" -msgid "Save Settings" -msgstr "" - #: includes/Admin/views/link-suggest-box.php msgid "Click Analyse to find internal link opportunities." msgstr "" @@ -591,15 +1035,9 @@ msgstr "" msgid "Apply (%d links)" msgstr "" -msgid "Preview" -msgstr "" - msgid "Confirm" msgstr "" -msgid "Cancel" -msgstr "" - msgid "Applied — %d links set âś“" msgstr "" @@ -609,5 +1047,573 @@ msgstr "" msgid "Open post" msgstr "" -msgid "Network error" +#: includes/Admin/views/dashboard.php +msgid "AI Features" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Settings saved." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Choose which features may use your connected AI provider. All options are opt-in and disabled by default." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Meta Descriptions" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Generate meta descriptions with AI when editing or using the Bulk Generator." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Internal Link Suggestions" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Let AI pick the most natural anchor phrases and rank candidates semantically." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "GEO Block" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Use AI to generate GEO-optimised content blocks for LLM visibility." +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "Save" +msgstr "" + +# --- v1.3.3 i18n pass --- + +#: includes/Admin/views/dashboard.php +#: includes/Admin/AdminMenu.php +#: includes/Admin/views/keyword-settings.php +msgid "Keyword Analysis" +msgstr "" + +#: includes/Admin/views/dashboard.php +msgid "AI-powered keyword suggestions, optimization tips, and semantic analysis." +msgstr "" + +#: includes/Admin/views/meta.php +msgid "SEO Widget" +msgstr "" + +#: includes/Admin/views/meta.php +msgid "Theme outputs post title as H1 (suppresses \"no H1\" warning in editor)" +msgstr "" + +#: includes/Admin/views/meta.php +msgid "Most themes render the post title as an H1 tag on the front end. Enable this to avoid false warnings in the SEO Widget when the content itself contains no H1." +msgstr "" + +#: includes/Admin/views/meta.php +msgid "No AI provider active." +msgstr "" + +#: includes/Admin/views/meta.php +msgid "Meta descriptions will use the fallback method (first paragraph of the post) until an API key is configured and AI generation is enabled." +msgstr "" + +#: includes/Admin/views/meta.php +msgid "Configure AI Provider →" +msgstr "" + +#: includes/Admin/views/meta.php +msgid "Fallback mode active — configure an AI provider to enable AI generation." +msgstr "" + +#: includes/Admin/views/txt.php +msgid "Clear Cache" +msgstr "" + +#: includes/Admin/views/txt.php +msgid "URL:" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Keyword Analysis (BreznGEO)" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Main Keyword" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "e.g. Passau travel guide" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Secondary Keywords" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Add Keyword" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Analyze" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Suggest Keywords" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Showing cached results. Click \"Analyze\" to refresh." +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Optimization Tips" +msgstr "" + +#: includes/Admin/views/keyword-meta-box.php +msgid "Semantic Analysis" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php (JS i18n) +msgid "Analyzing…" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Please enter a main keyword." +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting suggestions…" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Getting optimization tips…" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Running semantic analysis…" +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "AI keyword features are not activated." +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "AI generation failed. Check provider settings." +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "Could not parse AI response." +msgstr "" + +#: includes/Admin/KeywordMetaBox.php +msgid "No keyword provided." +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "No H1 heading" +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "Multiple H1 headings" +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "No internal links" +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "internal" +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "external" +msgstr "" + +#: includes/Admin/SeoWidget.php +msgid "min" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Analysis Settings" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Update Mode" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Manual — click \"Analyze\" button" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Live — auto-analyze while typing" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "On Save — analyze when post is saved" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Target Keyword Density (%)" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Recommended: 1.0–2.0%. Pass range is ±0.5% around the target." +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Primary)" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Min. Occurrences (Secondary)" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Live Mode Debounce (ms)" +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Delay in milliseconds before live analysis triggers after typing stops." +msgstr "" + +#: includes/Admin/views/keyword-settings.php +msgid "Show keyword meta box on" +msgstr "" + +#: includes/Admin/views/bulk.php +msgid "No AI provider connected — descriptions will be generated from content without AI (fallback mode)." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Labels" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Styling" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Position" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Theme" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Light" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Dark" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Minimal" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Brezn" +msgstr "" + +# --- Schema.org --- + +#: includes/Admin/AdminMenu.php +msgid "Schema.org" +msgstr "" + +#: includes/Admin/AdminMenu.php +msgid "AI disabled" +msgstr "" + +#: includes/Admin/AdminMenu.php +msgid "\xe2\x80\x94 Not configured \xe2\x80\x94" +msgstr "" + +#: includes/Admin/views/schema.php +msgid "BreznGEO Schema" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Schema Type" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "\xe2\x80\x94 No Schema \xe2\x80\x94" +msgstr "" + +#: includes/Admin/views/schema.php +msgid "BlogPosting / Article (with embedded Author + Image)" +msgstr "" + +#: includes/Admin/views/schema.php +msgid "FAQPage (from GEO Quick Overview \xe2\x80\x94 automatic)" +msgstr "" + +#: includes/Admin/views/schema.php +msgid "ImageObject (Featured Image)" +msgstr "" + +#: includes/Admin/views/schema.php +msgid "VideoObject (auto-detect YouTube/Vimeo)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe Name" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Recipe (Metabox in Post Editor)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event Name" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Event (Metabox in Post Editor)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo Guide" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "HowTo (Metabox in Post Editor)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review / Rating" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Review with Rating (Metabox in Post Editor)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Guide Name" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Steps (one line = one step)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Ingredients (one per line)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Instructions (one step per line)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Prep Time (min)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Cook Time (min)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Servings" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Rating (1\xe2\x80\x935)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Reviewed Product / Service" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Start Date" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "End Date (optional)" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Location or URL" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Online Event" +msgstr "" + +#: includes/Admin/views/schema-meta-box.php +msgid "Post not found." +msgstr "" + +# --- Keyword Analysis Checks --- + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword Density" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in title." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in title." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in subheading." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any H2-H6." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in URL." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in URL." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in meta description." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in meta description." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Meta description is empty." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in first paragraph." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in first paragraph." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in last paragraph." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in last paragraph." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in excerpt." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in excerpt." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt is empty." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image alt text." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "No image contains keyword in alt text." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "No images found." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword found in image title or caption." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in any image title or caption." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "No paragraphs found." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Keyword not found in content." +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "URL / Slug" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "First Paragraph" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Last Paragraph" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Alt Texts" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Image Title/Caption" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Excerpt" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "Meta Description" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +msgid "FAQ" +msgstr "" + +#: includes/Features/KeywordAnalysis.php +#, php-format +msgid "%1$.1f%% (target: %2$.1f%%)" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "The GEO block will not be generated automatically until an API key is configured and AI generation is enabled." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Variables: {title}, {content}, {language}" +msgstr "" + +#: includes/Admin/views/geo.php +#, php-format +msgid "Want to customise further? Learn how to style the block via your theme →" +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Left border stripe and expand arrow colour. Leave empty for the default blue. Not used by the Minimal theme." +msgstr "" + +#: includes/Admin/views/geo.php +msgid "Light \xe2\x80\x94 clean card with a blue accent. Dark \xe2\x80\x94 same for dark-mode sites. Minimal \xe2\x80\x94 borderless, left stripe only. Brezn \xe2\x80\x94 Brezn blue with diamond header pattern." +msgstr "" + +#: includes/Admin/views/bulk.php +#, php-format +msgid "No AI provider connected \xe2\x80\x94 descriptions will be generated from content without AI (fallback mode). Configure a provider \xe2\x86\x92" msgstr "" diff --git a/brezngeo/messages.mo b/brezngeo/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..a9f2ba279f68e3b9c84cb3cfa2b72a1c6da48e97 GIT binary patch literal 31913 zcmchf33yyrdG{|#fW+DNglsoXoJfggykv8f*jTo_#j>qfik$>PxHEGlO*C8P&e)a` zLt4TbXemo*C=HtnX<1s9x-B~hTH2C8A<&jWDJgr)(z1Nel&|0K|DJPa?np8z^yxQ` zkN)?bd+u4^^KR$8{>M{}dUe3>z9$92xnS$KAUN-cAo$c-$_;{b7Y4yO;1HMtZv#&N z?*mT+Ukmat_yhhd1wRFie2yO*S;8VeOf_ncDxCER7p8`Gts-K?+PXfOVs{NmU7l21x90UX4 zQt(J{CwM+M2C7^WRK3sf_xFKn?=?RE_29|eza3Ql9|G0hr$Lqb3aIzL3Gy%a5r3`% z&tB%{X(y=nDxlsw0G+!3g>iYqBH24!x z{r@je>vAHCq;cE=>b-`?=YneIH$aX1)u8Hm3s?rCT`=17n2fqYv1HS`mzOSZH z@r4>Fy0{P2INk)RpYH(IfQLYh^GD#Z;HfJd-CqEn$o*ze^R@?6ebeBz;EO=j^D$84 z`fE`A`34w*KLkY|r>%7D=Rw_X1hp@32i2c@!IQw>^!Nr)>-{cJ?LQ1^e!mRr{U3s` zy5M+-GX$4|ec-6Sp8;WE!D~VF_k-Y>;1@x?|L>sa`M4{BfG!3Dpyu^9k9UE~xPJgt zKR*nzwS%vL>esPsUeU{?;0a(J)H(eG=4oz6*-p9|yG#*V0L?>v~Y*EQ1=~EU5Ng>hX=>+1wuj zF9kmXYCV1ms=p^tsopykRDH|90yyID{}9yrd;w%A!9V-^^OzKk<1$e1UkQrtHi2h> z6;Si=d{FPd6kHBI0BSsc32NMb3#z~01J4DIWYTpXf*R*lpxRjrihj0$qK7dMksK63 zz4t=!0`MTH_dX7)+{2*O=gXk_^>t8u;{Sr`-;#AM|76g{1M2yep!&HEgfxO3Afyny z095{mLDly#sCvEuUI2a<)ceN|IXoLAD_91q{}bQu6=hosCEZI z^=Bh^4mbj;ohk5qa2C|MJphWn-{|k(4QhPv1GQeC1T`<81=ap{LDm0r5LOu+y%8A# zUI%Ul{{Vb4`0pV9f}ir|MsV#WbRY2Lpq@X4!s_2~pz1pn)HUyK$UNSOhs@HSOh-~s@}dW4zB?FxnB!D6`TT(1{Ukl!4Sdi){|=~nz6WX^egdlfqbQ_#JpojIPXpD?IiTjL4^(}Fp!VC1 zAfhCAG5E44vEM+Acl&l{SCm1~#cM#l{}8DC_dYNLzX*!%9tV#H&)(tczZ6t|)`G`^ zTR_qOICuhB1J$nsAS@|(3D^Sv61*H-yVKFZ9pGgu2hz3RA@Bt7N1*CGa@668pvHX; zsQz9Es=up1$*p1VLhxn~)*j4)qN78g#`Atq{rLxQ3HU8g@Ba`~J5RpRjqhYoeEkAY z&#wa2pUt4k?FKau1#kdtfLDXR3oZj61=XMb07d5~KrC913qj5MY7o{CjDtDwHK6+Q z3GkWVXTXcV+?boU8^I58|8j5~+{qtUZg3FPdtU>WgWm_$zYA`1{ka?zeH1|Dm%#$q z21S2=2c8Um3Do$$2WozQ4vJ2X-0kT9IFKm{&IL7&DtHojFR1rk4T=s9`uul-djG@V ze(;l^`Z2V}&Hongbnb5gH-pn)2)+l@cpe2sM_&O&cRvHw|1)oP^LY_?2KQHkCxY8S zt@mx<<=_LL`tu1;?S9(de*skae*z)p;0K`SVeKuB?`;Fm;(h{DKc4IJUjm-Z{qKRN zfgc97K97Q0=bwUSg2&zJ?k@&)zZw*MjDp(72mJHrgQA}Yz<%(p;3?qWfTGv0folKT zpxXNp7=p(i-PLE5R#3)%#sg;}&tL-IGA|?|e}2Ukz$K z)`20o8-&z?eW2F)uR*={B~bJB9Z>7G`ZhN&_kfy**Mg#lcY6FFxRv`)f!dd6Jj?ZC zHK_Y7pvvC?TED@kasLYNI`AE!=Iz`5`M-gpgC)27`are28q_?EfT||~wLY_;*7reB z^YAuM^Y9^1?K}di{cnSM@2B7e;K|Q+`u9qYJi58t}v^*YEA1-kSt9f6oJ-4BqGOe+ztw`v<_Y z!S!X=uV;eCa6b)dz1yJr{QyW4!Mng$f@j|W?SbzAwST?=YF_^n)cjpD?fB6!D1Oxd zH6JeoRp0AC(cOE&3&Dp$_2c`X`h85r^>-Pl_bvzX;5zWxU>&?3{0u01Ilk)l&AFh; z-wbL!tDxrj0C+L@o1nD|YF-`&j{`ps4uFsO`x9%fKj(s~?`lx}+y-hqRq$x=Uhr7( zW#IAP1E9wDR#5GI7*u;-1J4704xRv>Q+N57fvRT%sQotrs=f;N6mUPN_n!-%2>v#x z_a6eqpZ)|CJ$%yRQyXsmHi74pKMJazI=B?v3oZd40FMC=g2UiDLDl<1Q1uHBV_mKkLB|ycJZx?gF(A z4}$97+dLiu)sK&YyTE?{PX_ae>+d>H`(`JoeilLPrx{S~-4BM~8$j*PkAmvomq5|a ze}J0zYg%qT_ke1D3e>zMpvE-|YCI2udjF3>t<&eg)4;Fz`yYYopNs%KKLyly&j*!% zHFy%Z1yuXDfHUCz;1=+ty^ij00e5hJJ2(cu6NJ=*BlfxHbx{3lgKFn)Q2lxlcq;f7 zQ1tyiP~-U+cog_BcnbJg@O1F&p!)wfxE(xcztdZu1?s)O_4pXr&;55n)q5tL7TsO| zithVB(ZSWA@f}d}`aDqO-we`3@HSB6zi8I&*DFEQ(*Vc88SpId5ug7}Q2Xcypz1mO zF1POIfoF3+0BRmKfg0a-f4>VngZo>+QLy2ke-u)PA^!I$)h z-_IR%{^q%Qgf#4P26*p#T(1ZJ6TAh~zD7PmaeccJy>F*Wk1^7mPy@zryB)yn>M7Qbg{*l42 z^YE$meU# z=lu1R;3Q?<1h&B=z-NLNk+%3Uu$|8DGOm6~dN=9Wq-T(ROcGt3#5)(0o=Vbhx9T8O z{QY-acJL^;*gkjYqaX@I2Bi_x(Qav)s2y>F?9&g~uDg z+x+#Ee@Fc9KCZ7P9qIF4N8Y)lrKG(i{a!-)IO%Um_fYP6q$Q-Pf9I{_-_G@e;1@}K zTtA=m5ZA-L%&&3%EK>Trii`8p8;`3g`!238BE7)pMdVG8BJRbH#<+eA{5R4LuCD;~ zTgvrK?lO2ExSjirqzSI?0L2qe0G|rZfOnFv=laW}|01m<<;gppR3pv*{T3O=lmCCf zmy^yW9mPFtFt~$sBG)mgPI`d*my)Wa_mf^r`dw1`JIKXzNYAG1vq;li|A@4MbSn3k zlWySpX3_;*=fLzg$o&jA7yFFA@%RbwJbx`1^w%x$hose{qkNuV8R<6a(r*>`I2eLw zkYcXCK{|%(yGfGUr-4V1exGaoLeeGN>sNMQ`uA3U{Suxn;ric6<6PfNI+>J^K1E&` z{3^JPl>V+DZ#k(%%KrY5o8KYj$Ug`C3~7k;7Sef{vZryM{{EDUzaU*mdIRYNl-uje z{yFy_BCRLsw>49T%Rw&ti%D=a^ZeJjzJ|PW!81t*{IegB_Y?oli^=BP&B(9Gp6?~rFX>xrX_}8Qs z*RKKhlLknqaQ}7iCh*&!ejB(x(Om}TbG?)FeeR!6`a{x-xYzFt2X>~Y%TJOjr00^} zPFhB}t4SZ``V`XBNZ%#xBK==dgY*T`nWWz!>Gxz`_kXxs^UwS-*Pquj(xv|Sd$_)V z>t7?SB<EYdSc>F;WP@lo(!biHil#rc&J%a(hGyrMQ{B4#(nFi@sO|rE(G#D(d>ya5ApN&8XFL zL+#;2RHj5e+%OdvZE#j)nD}a}#|*VtuhrrruUoHMQ*jb^%IIOMS+9gs^?hMAs?CJO zs8%YMXpK2)s$i`ZPSl%R@VHejhEXl5%p~Q+s-KQ$_SKuEaKew>-l^4FVN`6D_o~lU ztQxnXq-PvCO-!{sORu)`FdUC2nXPKHKbO?XjYixG<5n@RS<5x*tU2Y?_3+QM=Nj_x3!A_Oh%4;ofpmZiO@THdI@wCi&L> zR@kbCd*fz#Vup$<6{WCIPg+Sh713(BM*YmUsC-&8UfBn+g{7!DonBYUlh}FwLA?<( z5L+Nd;ufkl`Pe;gNpF%2k@L~H<-6G{p% z3a8jcJfo|fK?Or;A;w3cm<6d%bRLJ1%}NyJayb@C^VYKV8jVWXQ|Ypj8#2#Z;bX6R zrK+sVgnel~Q|mHTxN_V#Aj*i+ZCJx7dkp>Wmud%}ecdx>#sZ6|MR03$>^(sw&ADvF4KER9uZ& z7*(adwF{MUG6k<|H?(8JzGhskR~dULF1fbhpygszVd_#Q5^68fk)+rx8*j?gWHonR zNs7=@NhF#tG~?OYWL(dY?#k!$2lC-Yo39OHW12ChsWmgWH>$MZ$`Sj4T4_{_I*BWc zx!%;yY~`Bm3Y?{HT{SM1qk(W;x!R~V{bskF+iq6+`i+egD)r(t?K|#MY&XlTnS8K5 zE;EFwW;klw1lCZBYhlEcsN+nL(OGVlcGrNrzQT5z_({lQw&F^q6}F*CHlFrXOO>*Y ztS{Ws*jcgOuJLxQ9&Q@CQQ{(1Z#Z46@2iFI>q4C+R z_B?B51z}LFO04Ti^EV2mq@^EW4nuLm0g}LO zDdw0(GpbF8Q;;C^vu}#|fK3#y)1Hv$JxLd&2n8UXf#2y5)jaE zEsix>cGoVAVSCh?qAR`$D?1z|Q-yj2w_Pt8zS#*w_TYwyc0=|&atblCA!5f>1gZRj zaEG=ANXMwbUj`mCIb|rMBdw~@OxPydcyd=xvWC#K@qgwFmh7aslZagB=&qzpDx|~0 z3_HqrKK)RK+~3f;=&w7|k!F?=+MZWyk4==Rv4`Q)tTsoxR&JGJxc>&&P1H!r=mp{R zuoA?7vNj`acn-xlE6}{i8Psh@M+*XJ~Tfd^wA6sv4Io{Vl$b0Qd z2|6?Z%2LoK}@F0P;6`Z$0c!B)jV2v^p>PK>S0$UYv%eTOSt*ZVsWB@DKPRWsE}>xYegZoj zWx46O%Pj@)U!|}T71-Qd={Y3D!iSoh8{67OJ3T!a!$@U8u|L>^=qp4N=$ogbWgbmz8B`{Jk8gB)ZoQe@_GTm@A)eVD9^}5uIETwhV zeBpqCg;`-=${zaz&kW-QLLE6KX+rl+93X5>+Q1&#i3nb*OfNglcPm4Vb#6-7WJ%{P zS)?KDZjq#G66K4{7RLJ#7;0#~w$W)u45HV7@ib|iHD$l4HpJ%K?97^l8o$)i^kK#} zu)u;v6JTZwfOv0;H^yl^VIGW$#2;V*4 ztY(8PGlgcE`4c@lb;#CYq8wM?PBN}+3j`+M5i_lDJl@|*{QbC8h2m*_;oy*33?extL@g%4}`fteGm|n$jsdfhuVF$xXXP@(Xig$JiEm zGLPddQlc!)4o?KL%fcVFfGLe3yR7JlVUdCraiER?x=4YA+c2Gr&iImc!P|0+yl;Kz z=1W|6UhJ8eo+t7rY+04ta`j=})N?lphaY24gv13r)&`%mtS4yzZh9E)=?=x>jyO|G1Vz~v3 zZ+L|uPBl-|gm#<{cd#_5v?b}J;$GX!HKw>?76BU72==sunxv*4S0%P%pi?|TCVwL96w*~L7fdIa$7U0v8Cd^i zFy~AH%S?hlrQKC2Hz(MOn2r@qlAj%!mif@6pw;HCGr@4; z#u)Ua1)8XgZI#m?`*BOO%G!rvstnOiMcolk1G6++QgI7)p6b%c|KX6Ei1!TG}*JE<>!=J z%&a@3R%SceTQB3niYk!9zNo3QhD7F)D%BF~DVI3-=s0b(*s?LhatpuNgx#{06FF+O ztYnpNE0-Ja9oqNOItg~fEmW6jXRmX&k4Me;>A?>9Kf+>qW}!WakST>TG0KK}*wM3{ z9=ITz?qtpmG8@2Cc_B`Tk$TN2O9vqSFJpin^f7#AhKbXoM9*vcf2EP|`Y4>jeY$4p zvSjJn4PB$I%TI-IpheKTTI#C%#j)|8`*qYv8eeTY=UKzo0)tthqRD)3N zY?oz6h+~>BNlVMtO;4Fv@X0!xA6HumRhYN&*G6^$1)>CM)@+@pz0S%TUB!^{R!m++ zv{Cn7sy7?QRF&zgeobAmj#8L?SG-1&3mT_kXYKmpJn^=pv?+9VsT=!yPa$Y4V`p{y zREy~b2OQ9|=TJxna$@+9T%t00q#$*si~WI^z_G6psn}M>3lVH#G9}M?6kfUF$^j-% zoGU#a)53+L*cOqK7UGIdPK{~7C^=DS;}>tn#`QSkLn7ycowd-OnFqbncR! zoXa?u>P~m;)IA9aMv-a}Zgpzbu>MBytu&Pg$TP>w5?3hh$nR2dwQ(OTIeOkuZ0mCC{f7# zkPgzLqm0vS)Sc9@9o%}1NXrR!F)O%8`c^)64^z1d2Zf0R4uIN?aMD~CB5ioAKc$x7 zn9z`utCHFyUZSyh~#fClbJo*S(_-blAZ>Ak&@u9~#1#eARc zU4#MDP{LJ0Eo1U_7iq%<8{pJ}n6qc;((ENNQcp!zXYFbUf!LS*>99g~mwJKcWjE_O ziL%45lyzG9(qQ0@Y~1#9*ZF#L(r4=uJqBTg(>ClweeBOX$taacyMYr8Ul}S5+f@4h z4P!fZAS9mEOj3HuDZsin8ttYHW541CiI$^>F zjuX@_jMEMCj3EYzhQVXbtj0JOpElLc&O1?F1~s>w#}y**w{p$vvel;J zxY4{v&E&=!`XOU7=0ATJ<8*?C?o=R5T(XJ7T8k-BnXyC4)SmQK7B9?D3CrocX_?t= zSEU#8z|i~2#%~@EH*qSS1mhNlla|K}HeVRW?)||yjZ0hbheLKx8|sbRmL{*!S=_0L zwy*q`1L+}*KXLP?`uSj-5;9AiJTikxT)#)1?D+AGG5wD$BQ@s^>$R-fQ4Nz#NCq@z ze=IM>FC`XuILs!uvASm!zHISnz&9ayT{{=$#GQ7*k=fFUCm+!GID~QH6 z%GQBkH%lUo$s?~y@VVor-JCSk(}Mx?1GyNJ@RoXeyj_Tw??$@U`-9z*XU;;Flyl1} z^`YlMMq;>U=xPby!7+!-auit3Gaydv2saM)*b%P{aqsOe{LM@H>pI( z@THdHIq1P!2sEGo+=BDvYxz*ir>LC$mxsA1AT`uUsaCM>F zT7qTAc|mRy&fa7&tRYOfP1dZsPI8sYHGQ@4!ZqQ_{_B?9oZFm6>U4!5Elq6mlvUdtamIsn`I4ejZtDKJwL-m z1Mel0q*;)snJ@$xg^s^-(7>!*k(IfFZJolP4T$4C!Sj58*zvKz)`d#knkCGFU|`}{ z<6zs?+@>~xWl#d=JKV|Y*L5}!V_PR4m;yt!LYdgWrV6LmIeLM@SE;nIkyH)K8c`{x zNwcL}lY0Kf%`!I>MhBRxV5JwQD)a{5D5Es;@2!zJoBO~7&s7(kQt@yFDF8Ja6Q{v& z`kp>WA8m7#GJtjwBSwiU3%9`=EnXPYbnXL9Vxq+0Oo^uh2x!N)=`5ZyWRo;5noy%T ze?XC$tPn0jG!Q{rgb}1;wX$O1J`OJ(vVvNwy5ZD@r@4hO#O-7sY6mTGG~)`UP3|Tj zk@=ZBIEj+#oH90doVhem#C7Jo$S7F&(XBZcS!M16m_5YnPS3KRCPY|VyR~5j+_n3Q zPM5Cef{eky_lE=f+H9K%)JpHb>|m{{E?SYZfI29W=M1M*3lks!~Rh7tNTVE!Zj(4wR7Pz~(m*_gVL+zw8cL-6K=7?zHH0)TbwV=X{ zTC$j);u=i|J+^_7MfkME=gL{1P66Rdox)X&Sq}BGk2&&Wj;V`TRv7X)t)Zl_zU;Mq zj!?y0mbo~dzNFs>m|bqs$eHY@X2mslcMwa5Q~y9sliOfEM+H%m+|9z zuU95pMoc@$XoG#VeAreshYH{6TMKzaw;gJV|)L^U*v`8v1KULex*j6&U)ud6CS(wpF3vRx%0eHBM{VuUHdNum2m7 z%{Q56)_8d{L@R}b%tlic7&vn^Et-)PBgg}mzcpw6{FL7# zCicVy9pF1l%Zf7|g)QbV3}GQ$&kK3hz94dx&~Hb#D8i`13VUX6Tpq43SKxC#=y}vs zRO8@iZBkb~H#gcB5BE|foSHiX9WopgmubnGnpp%@RAN!H>9abevxVe=%0i{#7OAddqTGB5$gJwz!MWF$C#fzY)<@_gJ+pvljBmT? z%u`S9HhJENi(x}|g$x_9UF}FNxP(kJ&0uxz(4<%e^NPBQ5X9WkZX?>15|Udo=QAPH zDa|V^v{`^sP++7sq=Gw~_NJBF35R`R4tW?@iXsX>}@d5YF^n9DXHHF)pIoxmWsZ8wagmXS)&XPH^2V?wdkt0d-S5lJE5%g&X&P`nIN zr_aP_IaOvj?9wS11cAb4?5@k_;eFkku+QGviUV5TQ1w1i8(vh7p@x;?xz{tz!}aOI zMO!l$n`MBoatyMgRPvJikH(|sW#(LFm%CvrI40l}Zz|ZndlAAQ5@$xn(Wb)vG!a3B}Y+ftWgPsyYf;p>#5XbxTk*ep&u`Fh=@nGD*rCb?QoW5c-e+@7Nh z{YuwosGT@_q%LlyFmA%(h>9~`NhheAcg!iw4Af9I=RVZr`zE4~q=;q2dM0+e51m6N zk4{7GK5z<+TOWI!X=CyZyKjw=%%c>zM#`$hIee#x^PWukCX`8-8C=Uzq*TssXM#=b zx!1FyQEYlt8j+o&FeAWptkMu|w2S9v4}?;3ZaJ$byFVDC#0&Nu(nIU(E#8{b-;7xp zM>pfwDw6vlAKV}Vwxb1TbND@@Z*qP7H#=zYCT*vrx^A7d3)!U#b)b%geav_2)_$CC zs%mdw6PW@9+xdlN>y|o3%mUj@riVSrn0U?{sX&@))4of{8V`(jPsgC8?~^g^F_u!g z4#V)~EmBk5jmfonG-W&0I}{+EUpzv5;Wo1%aTuiUPbW}Zx(_myPq?JEY$7ZR($)^+ zf3~WWazhmyH*x{mEiPmB&vMq7eI^S?TYam7Nm6fcy1Q|8qe|_Oj6fziT6MNM6fZ}* zY(capEt(7nVwj{BO7fUT1#7ToJ0ZBW&0!TZw!p(;G2-~fuph94(s@=fu`@m=v6I!* zL9Fnx#)9aTpiPX(IP#IzIZDt;t0XnXBk>p`~~Nz z`bF&`))!b|i*&CR-nvgJbzE~Ah_}KQDal+IsV;ovloDv{!&#;v>NodfDkj;+)(z8j z8g^FebDVkZvq6=hT*bIshx%jHdX6 zuTm%cTwGb!1=BFrLSdKN)EyRBNjo-1s&il?`MV2kC9YLDE|Ye&jX}yx!gvX!y5_Q+ z%ye0@(U{F4BWFif$zB+Ko?5ad-@Qs5Wn6IUadaj*1puT$=yJ;TMxo1!l6!HJ4?|~V z5!FGucKW2-<&2Ooe}ILe!`mfBZK*LY^@{Fyq7)eOVH2C{$vh+MT04ab6TShGjkhIg zOBy&c88)njDdFTss;Si70Bvs zSz)uFxJD(G+)>x&-QvBdtCz3hxSTIJH`hx2Pa9Kn z2P?MdtP7lb%gWq5eVmx~SzM>n&TAsmm?IJ*4hR&+k7s%TM3A#XIECqOAc3(Z!;xyG zVD=b$roJwcPoFapNNtW$B#j?Unm3i=+ivuDhu{{O9=p6H9Ui~FiN zLGCsu^R_8Axj#R`7rtI`&A1%2-^I3>Of+aWm<20jQ;aRqje)Pt9YU9PGFH>CAS)dz zaycn!7;c$6=zMVM37=TWlJHX{?X5!p0p<_3~6Q6N!8~Muxj2GcO>BT zaRr&$21x6`Ux0^>kGSU7(%BpwkfU67y?&mm%mq0C@$zvk1?&VZtu!On=hy3~)~Q3h zXWpn*u%*nAQJDjD^QKqrND&7a6Yu?X_<=DxTDV>9Cx`*2B!ZWnvxI;LnV02g^^x$g(ehX!T>x~EY91*Kwh5X9fvp{qY zVsWtd5fq8sz0(0(1OJwDza-FU$II>ZOw@Lr>~$f!z$AYXoH_R42q+V6pH6YczY5`G z&I^eScK$@%m-tC0XbR45jvya-53LdqH)Z{eI^GKuXf~F7kE{yTLTy6Efw3|TswJDl z{QdvK*GFhaQ^L0hHZE-^ZOJJe-p_rYI89g%=7R$9XJfqZ4t}8@*A+4U?Z)(UHRxOs zhCg6o_ya3K;_%1uqOs9tZGmW2Oq*!@fvdu0I$n{=pnx3BS>EJu%D^0Hg?AtWGCSWG z5>c@V#-EkTkoQyCL}<3M;iaL|h)CPoZJs)-swVjvU*?4ivlLEiQma29X4x z_bFx7`mVC1P;n<*#U)YFe1uO|=ypyRdR6;Ofo`DYVT*7ukP7!S-d|@D+70yoR|)qw z$xLgKKRNgDNUZuDUV{7)m@b?(+t3jHAgaS9eHV5Z{^>7=Pmm@GD}!Da{( z0!oc6b|m!JnI62{Vk$O;l(PQ8n25Ttz$<+xU>^f;dgit20*9)pRbZ!qnd#4nG>LTQ z@^ie6&jQpDllfGE2V0*8FvN}ciVHRVj|;xM_h*#uTj|s;)e#Q5G~Zv_nYH9N%O9m* z3dlIusf2whfL^R92=mQjNBX0(T7U)KY}qN2F70ap=Twz-COLbnjv4shytE`Nul%h< zl5p}%R0bV~Tt1A=1ASvZq82NLy@<6 zB+?O1Hb-9)NU>wT1Y#QL;(E`ieMkUz_D7-wAkvtR+u&;@-B};ybTj)Qb9l%$;eSxn z2_q|ANKal;S%uOHStFtJpExzc&KZk~b1;=QbAr_2L3ZMet)hvWryFN=Kl4XDu?f40 z!(0)lbl)5yl6?He2L^40yK&TO!4s(2ig=Vws#pZJkr;ipYY`M;HkZ>o28ny#8NZEg&vw05Hp&Pa(yXctJ^jK z;+BI=s5_=W9s+Z6y1)KI1Lrd1vjRLnYP`^lpm>xEHi7heh?IR$n_vq-HknuscwtbBsd%}PzIyaM^sEiEmlYUcOmRI@kwt9PRloynLK2zXNz zgG3PqrFkHsWMbg3q(-*q6d%+gGJ#cOxaMfHGNPY~oR7{!Ydb>$VEUgP{a#E=I623u zif8?|ni=naUFgV_u?17Hh#zxc+9wh7KUb)AKUcu5^2>g%FsA>mv2$wL^Tk5XR|-A* zfDMD0BYvp4Mn)2^Xp{m&OJYTV=?jI16Ce35?RZFA&L96#Lm)~IoQctu@35O+ z{6zx+255xtIKc#uZLWFYRr2-`dd^oMvQ$xO`QRExtqFC1q||$ZruRI0FktU=qQ+5q zT8`NSG7C1*u=9A>t$7?^JSbPP8Z2*zc65&$!9C(ThuxiuJKs5&NrjB={mwyrjopo^ V#3}CKzjUyd;mbadyyr`Y{|BkRW+VUr literal 0 HcmV?d00001 diff --git a/brezngeo/readme.txt b/brezngeo/readme.txt index 4ec3380..fabd71e 100644 --- a/brezngeo/readme.txt +++ b/brezngeo/readme.txt @@ -3,7 +3,7 @@ Contributors: mifupadev Tags: seo, ai, meta description, schema, llms.txt Requires at least: 6.0 Tested up to: 6.9 -Stable tag: 1.2.0 +Stable tag: 1.2.1 Requires PHP: 8.0 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -224,6 +224,11 @@ No data is transmitted during normal page loads or to visitors. == Changelog == += 1.2.1 = +* Security: Added ABSPATH direct access guards to all PHP class files. +* i18n: Complete German translation — all 394 UI strings now translated. +* i18n: Regenerated .po/.mo/.pot translation files. + = 1.2.0 = * New: Keyword Analysis meta box in the post editor — checks keyword usage across title, headings, density, image alts, meta description, slug, first/last paragraph, image title/caption, and excerpt. * New: Primary and secondary keyword support with configurable minimum occurrences. @@ -260,6 +265,9 @@ No data is transmitted during normal page loads or to visitors. == Upgrade Notice == += 1.2.1 = +Adds ABSPATH security guards to all files and completes German translation. + = 1.2.0 = Adds Keyword Analysis: real-time keyword checks in the post editor with optional AI-powered suggestions.