From d13b69558a5aeffca302501adf80dccf874eedd4 Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Mon, 26 Apr 2021 14:57:17 +0800 Subject: [PATCH 1/4] docs: add warning for outdated versions --- .gitlab-ci.yml | 2 +- docs/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 672f4e9a66..8b3a502307 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -63,7 +63,7 @@ variables: CI_AUTO_TEST_SCRIPT_REPO_BRANCH: "ci/v3.1" # Versioned esp-idf-doc env image to use for all document building jobs - ESP_IDF_DOC_ENV_IMAGE: "$CI_DOCKER_REGISTRY/esp-idf-doc-env:v8" + ESP_IDF_DOC_ENV_IMAGE: "$CI_DOCKER_REGISTRY/esp-idf-doc-env:v10" .setup_tools_unless_target_test: &setup_tools_unless_target_test | if [[ -n "$IDF_DONT_USE_MIRRORS" ]]; then diff --git a/docs/requirements.txt b/docs/requirements.txt index 6802c11198..930e8d10a5 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -19,4 +19,4 @@ nwdiag==2.0.0 recommonmark future>=0.16.0 # for ../tools/gen_esp_err_to_name.py sphinx_selective_exclude==1.0.3 -sphinx_idf_theme==0.2 +sphinx_idf_theme==0.3.0 From eeab4e44695982493d0f9936b3418be7cd402af5 Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Tue, 6 Apr 2021 11:56:11 +0800 Subject: [PATCH 2/4] docs: add google analytics tracking --- docs/conf_common.py | 3 +++ docs/extensions/google_analytics.py | 30 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 docs/extensions/google_analytics.py diff --git a/docs/conf_common.py b/docs/conf_common.py index cf5f1418f9..c055657a71 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -59,6 +59,7 @@ extensions = ['breathe', 'extensions.html_redirects', 'extensions.toctree_filter', 'extensions.list_filter', + 'extensions.google_analytics', # Note: order is important here, events must # be registered by one extension before they can be @@ -361,6 +362,8 @@ html_static_path = ['../_static'] # Output file base name for HTML help builder. htmlhelp_basename = 'ReadtheDocsTemplatedoc' +google_analytics_id = os.environ['CI_GOOGLE_ANALYTICS_ID'] + # -- Options for LaTeX output --------------------------------------------- latex_template_dir = os.path.join(config_dir, 'latex_templates') diff --git a/docs/extensions/google_analytics.py b/docs/extensions/google_analytics.py new file mode 100644 index 0000000000..e565318169 --- /dev/null +++ b/docs/extensions/google_analytics.py @@ -0,0 +1,30 @@ +# Embeds a google analytics tracking tag in every HTML page +def setup(app): + app.add_config_value('google_analytics_id', None, 'html') + app.connect('html-page-context', google_analytics_embed) + + return {'parallel_read_safe': True, 'parallel_write_safe': True, 'version': '0.1'} + + +def google_analytics_embed(app, pagename, templatename, context, doctree): + + ga_id = app.config.google_analytics_id + if not ga_id: + return + + metatags = context.get('metatags', '') + + google_analytics_snippet = """ + + + """.format(ga_id, ga_id) + + # Prepend the google analytics to the HTML metatags (which will be passed to the sphinx templating engine) + metatags = google_analytics_snippet + metatags + context['metatags'] = metatags From 539f7edbb384a53e11525125096d05d1e36fe11c Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Thu, 30 Jul 2020 11:47:24 +0800 Subject: [PATCH 3/4] Docs: build doc with new layout for target and version select --- docs/_static/choose_language.png | Bin 0 -> 25922 bytes docs/_static/choose_version.png | Bin 22448 -> 19466 bytes docs/_static/js/version_table.js | 54 +++++++++++++++++++++++++++++++ docs/_static/version_table.html | 7 ++++ docs/en/index.rst | 2 +- docs/en/languages.rst | 4 +-- docs/en/versions.rst | 12 +++++-- 7 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 docs/_static/choose_language.png create mode 100644 docs/_static/js/version_table.js create mode 100644 docs/_static/version_table.html diff --git a/docs/_static/choose_language.png b/docs/_static/choose_language.png new file mode 100644 index 0000000000000000000000000000000000000000..9b24c1faa9f22fe4126779828d00eb81d34203a5 GIT binary patch literal 25922 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 N002ovPDHLkV1nB&0gwOy literal 22448 zcmcG$WpEo&&@E_?Z5d)_W@ct)W~P{#nK>~tQ_Sp`nPO&U$IJ{d#kk4`ufA9Nc5DA^ zsZ>(U+tbtx2T}5To zfk5EKuF?(|7%`ZPxQM!!;YByRzM59YQ!jCwX$HAd&@*&$uvkI}Ge)^dU8*vZmBgu4 zL5+$1(zNz#{`%wO>bhdH>zTPlQ;TDjtDvr>q`eY`t%x0pdY?)kEjT?E{4nWPuNfFbX;3B5hxc!QAlU!gfSuD_@P;r4(3tOF z!1-`oNPTdKjG!_YV=xHezEt3SC-f%a2zR`Hf-iL@7kBjC;JEp{b(iBYlI7UU1C{;6uu?|HRjAF3rvx^c>#mWUucQ!vhI*bh zPS8QwM4Ro_$5M<)Xfn8U6S<5{U^&lg*`+u1T+|xbTrXs4GtrG5KRh54l94eAaT`l~cFwq@bt-ZW@c_?t>C zXDLL}u6Zd+NTY@PZGRctBRdCjr#`fN$N3}Dqps^#?%Ra$-PhcR(Vq4x)F{I3d`Z7R zQ#mo#$WPnk`-gkOsk%wS4THOE(h>g4rK!NxeI(QL%Z`qZ2f@v%qtMjPj$3;T4V7V{ zw3xw)(Wq;uRoq}<%q%m8sh$0}LtMMEz!*qhesOUZd@Q}MjQr{zra}IPModLeL{>_H z%MKOBA!t22mqPT52k$SesS#*T-_QahJ8#|^u*Nrd=04r`W&;kR?)eS%#Wy}3q@~kY z_P2PQ??bm!C_evEMg^QN2u*dr$mwb#d(!L~WEjhMd6lSQw4&LE zN8THzurl=d`dEegi!E^KW1k31-_X5f)2_hijd^yf?|OZhmBNQYQP}Sh(&K2*sE%!- zkm)T*H0|wlK`g(pOw&)A$9s}@BxyAgEuSk z_z5{eE+}|;M)HJ`_xGH=^%2u-QeaVhfOvLUk(|a!(v~PJ0y(0H4FBM*IDt^%KG$6D zRS^c8au=8A?n&=;(UH&iQQ&hynV2$iFt3dIdeHQyh<1ZgSW&wma8rt*bz{9jDT2*Qfv?J#w|@QV_7B_JuQ$~QR901j2CJ0c zFyeWJ;$KCiC@ z2^RSdjoz-5T7an8w;kK=+a^$x1jL26Izytf`hr!N@0jBoc9Kb>%6EQm&^m*9RIHk; z8)loKP$oP4-fNU(G;|>aem-JxiKH!S>j`}@QJi@Jrc6}COm@`oiFDQNg|%ah0)*7J^4+L6?q_Mp zDo=!6d4MzMFw)%8-zlr+bULbb?=3%L)1C{HpXSIZQR`Kj5#J|dnHJMNdEUL<-WsvW z6|iVWd%Xeix{~%8M7l*gI^2jJ_N0d}35K}5SjX42 zCd$D5Mw|uIx!nL*JZyMBhlwfUq66-E2TC|9C3GR zes?yILn#H2AfyKo8q61v3wFFI-9Mw>zblySLv95KLQUm{lrqmAjA^^3P{IJF$=R)0 zeP}xP)}w`mybA+4ek7AN-F&^D^jCjSxySftQNRZQQBJN2Q!+AW91{G>IbM05Z~5bPP(MgpD_lu&^gh|HpOvO_@D zWo+RhPeM%Y@K;YtsY{^w;Bu<00)EE`MHY?A5EK&_ zy_;S0aVYaU*FMB-ZYFSwNKc*X`r}y|2 zyv)peUiE(5Z$mA4xv@}J-F-YB!^ctyj_Tb!R{XX+w6~ANVob5V(fpEX`-g7sRcN%z zPmkhf&rRzL+=d~}1rN>Zo}>AgV?NDm^Ti;Ytq^`rP#nn=x((&&MK5}~yOiyLxuuZ) z-+8R1%|A$XUk~Y0Hn{3GaJ|Q{@C=_52=Q(?7d8T)cjBRz^!2mPx_Y}@Ay7!?ezyv( zQkdW(L=1PeavlGojK^7x6Mw%atL%x-gA>t(vMJzez=E%N=BacL-`-}koP~sXM|gi` zA|I)OM34Z|ED@4ET`0G=dAlk=Y%X}TVcy8D2mxEBO!l@afRIIIl zkEI1>mPT0=RPIPHCTx4m!esLkT!#L!o)ZSw*V^Z-;Lp4`#PmX<_c|5X6}xk*m;Bw}jWSuKZV&`P+w3H41*>saS&fPy%oHRgV2-|M1u^{&p8; zv|NP!v^u{19IC!OxvMiso~FjK0|O^E&I4O6&OMj;<3WrG1OqQa0aM`pLV*ndp-2Lj zZ*uI?Az}a^7-jp=;8CGv zuSHZDSoxhp?h0OfpC0{r}$@};sRxX@4`SR{D_bXj|sOBEXWonG~d5~QS7rbqzt z7smsnZVFoPat;-@6mST=-^1GLML9!%na#I4cyQ)UsZIuXM6muj;NZac6({ZQBe_tK zjA3Io-Jk=Xk5#EH!bWks;6)#y@-xX_O}$`|EX{bii$^7xeo@9_G2NhR9;kGTC&?zZ ztU^5N&&8J4=aF?fd-JkF4yl@??YB zSnaGF+_(~H4|YsUu6?9MwvI^{wzMf7WADbUuGPlm^pT87W^MAZ8)X9?tr)7MF*=Ij z$B3v2iiWsfhM7#5Cc%BH$WC#Tkw3!e$Oj+#_grgu52zINP`K6YvAZ&W!&86CCT_C+ zh%o=e_yby(xS2O}S5ak}VhK#{L2G)+=La4oan4(=%Gf=Cc^DCkm&ir`aXevlN@@BBk2M!en)5th-+ISK7QxCKF#=&$#_qr z@J1qKD=?o35LU}T!v}Wy>IFB8(w4O2%x~ShH{VO;c3CBu%VEZJ95r+uH5j5T!mJ%G zG)%mk?7$;CSwkRNxwJi~tQgY&@us(4qKDAy7b0Jlo6%@OtpCH?*0rmLZHHzO6cmk& z4XHqCIx>}%lT9%|%}a59p_`n!O@Y#ctyNLOqAP$Iq zh2)&#$>B2rmc^0=&hVfNjcdyTEiO)WPR`MB)+hTEpwm`RnF}6WJR|&xrD$DC9Sc== zV2*;hFe&kl{J-fQO9lx6&n}PC+Do@nbZHFQbr<2As#j+M*OXbcT6>gNLJiIxQ+q8{ z#?lA?d@5$ll^=XpH3mFTRfw0e>KBG-em4=PwP@{c5$xywPSHa}5MI6z*ODtJ-OQ11f>>f`zdXv9W*ow%@p0v$D9-%f*7!{F0AK|oPI4mXPZIWd^ z!504~r0gIlK$H9DvYM1Bv=IW{ln7ksI;&vpYEVOm z2U^&&mkHDcdwi`-%Oy;mz<@Eh!MnDo&4+<*k^}O;1FdXd8j6b-)3=0tyt3b4c`R)4 z>n`@+Bj=~GSyL>KkO(UHd#rs+oa8hgUu~03N~6UWh9(SOii>F-i>!U%54L3HG&ZrMhs5N+0xa9+<6x33%G z76TxrNp^0tPmXT~ylxtWK9tUyX5t9l<233ZKqyBHa8nw?HZ1dP+{1=awCQ$%tSTJI z&L+xGufBP_7DkFweh!f4!-xZa4g8vX#LZj>mo7egDUn;z_#p$cDv}l{)A#WzS{HS8{lQ8b zrR6)s&e#xA6kdK9qCa8`GnF!^v|o=c*)991pc1aC1Yj_DkamsCVTwaz#htd0#;N~v zBo5V}Otq$BKfs^!`&3hND&5FlQCyoCJKk5R!`JvPF9gS}+%E)2S zq1KMG-AAd&NxW59U(VblU=(-$4}d3$O0mgod~+T7jISQJD&SdC`Lnh+ARFiYdqOz! z02Ar_(^U;FM(BTI5zzrtYwvGHDG7$|9xZ8@D>QtIy!6IocP4)zD-zYqY)T|M^MV?c z{y5MibDldDt87x&SUtr8pV;hiaZ;9CcG{{>fA zZLo_We|`1ES@%UX(Xe&TmCqNM$tX&i*PO~|2n?<0w0lMZwxNQLut$zApGgiRBS}e| zgk-k<9KBVID_Fuo@QiX{eAw`#2zk+3UR4P^)PKi_h_`aM>ly?~v{b)x*N7m(PfU?B z=oS%(*}o&OYQV$GYMtrqL>B?@vpVgNI8iDQ!Az)HS%0ez{t}QX7y! zXA^P8#vix5Lq-#cD)Gni)=aO;Bq2p`=DaU&_N{UAlA(|_`@^1mTA&Ax6n&_wI( zfFL^(03V;qd1+xhn`_9Iu2nMF8lKy&6e$3R`_IB91?6Kv|$9e$_0wL`ualn>7 z5p;ljp01%P`H0EYUj-=38JZsry{p~VS@~KbGV}fBz$5usn5`W$PJPPYrWPBKi zB55!ox%s*Fb7~)02@ux+#iv`D8Jwa3HkUiu>i&n z3{dsg?f zOBbv2&tUC`B}xvlub$OuHvHb8D;K^L6OqvEky~T;rVEaL9588XW?~(6rirHBAQB?& zs_gBzgry_}6-en}H>xdBpnWY)RNKqu#G=xoH(ghiqn8kuU!wPy8+td!d+IynO5 zJZ}B^u1>WiwsTL!QZDM6-s}}x^57LX?&ce%MR@sL z_02zG6=l9BEtfgV#badm%sY2Ii|3K{3eTBV*05Iv<7A`qIu##~n~%E~>9*WD;neO6 zR`P}v*9a_)t)(j>>8#IRj_nD$!Fg zj&3D8-U6mM*wSt6^?xsMuB3#DWU7f@Jh%=p{qx9{HM;ozZ63otlcL}8;e|`|hs(#&p z^R|%mvN*8SGl}M+qN3;}lVI6sKw?n4P=rH*{bE#)#;4RN)WD=Idt&u!l{QwKU;wa!kdp;T$e}){D z5{6pbAfou77F&2V{G~mq^W;H7Uj6ShpHy^Jv1N#%>tq3}plmz_aZBg#RKs0HRxMtSC~4p01UYu7$6 zM!jTZYq^TGKlKQ1;Hp>SkWql+y5h;wQ`a=;;zI3YwMr;ZQuiVSA-=0auJ|%1l;l^n z-J=?wFTW+O3EP#`wAvgo1ab)^6Nq?}sq}k&c!MdDhv|7|J>z6EDN=_zJ+WBOR)!xj z#Vc{uzvHc229IF?GjYSmfAF_BIOK36elmD9E|PPL>CKoW(hWx9MsP?FROX4Phmmci z`IFb*H)H6Pm=;QpU)HM_S5o@@6 z4Ovk8e3i74mYxBDNe}PgDtNMi*bB3OmB_K9CLsatpJE`qd&rS|gj-ZXPgM@6c? zts_r2?&KaLePJXi(v6c-Q3Mf|8m zX{{AiawVx{e&s9tGM?S(AJG0vF;14Mva0i9#ebu`sb=r>9oe-p#9o<}h)?-3^Y|+cJa9qGMQ? zaD&5UUEtD%(TWJhuaFew5cP{SzaPPLg`q*bOZV!7q;yrV^hZs8eUVo>jDve9uX3K% zsSLc#tS~v{W4=qBt;cj;c#XD|4Xt6A1m`%^WAmFtsWxqqdLEanNt~O?Z^KavBj;ft z08PZ-|QHL62b5Lb>;%_TuF!#b<4v9Sd3 zb}O_>EVFCSo{AA&pZVQD@Ox_}k@}!0s5oUXY|9q^`Q50Rur`30a-~d{&EPjkx~r2! z7J-QX3H}P(*GPV83C$DK2Sjt)`|Tbk0QE<>PvBp}S3X)j`)^Tij0zelSQPK-8yAlCuu!NTg&GmVMyQwY;nFB7*kI9EkI?G+bcWD zwi&}~pAaCan5=1t&c?V^x<}{_W^<|wi1;Z3f9*n2-9>Go-=#3rybjmpj0EC`#Y3L$ z2!9JRZf`j;o=zZ@0)vpj ziDWzI3Z(FkYB=MU&bOSY1+-uzL4BkDB&@{D)(Y(#Pp|9AdSmp$;J!hU9dd=jU`MrI zVUxWh78%!*ncN2jl)`=d;9lS2y%~|=0mETnT?3Z#bz%j=#?%ngS)GU)(D;xbYk>!7 ze>ZeQWQmz^LHkrBf-?>V(E_4E>(g+m5W#c*@XnWUWoYEOT+kMKXeOWnW1vA>Wu+X! z8WeO1n$pr3k|J!(4%&CAP}UT1fE^WBR#Pqph{P3vegYoclmY}|V?J=EjpRqUvAyt- zVTmXR|4g9!mc7=p5z|jQbv*l);j9*ZfnU9RJmx=I-fUu39bG?u!RmaS(3VdH7Aca1h^C|cd?9z_Ph(M(bIeL z-kl~#q_&!9p(&9P+U-nkPi0eCG%cJWI;{-!gc7&uRTovBaON6^jTD^;3sGn<^JU_7 zL+eqA4E~XD83i)blLU&r% zSo%Y&b=io=vqPUMg*>9Z`XFRLxQ`IxF+N$a@LQQ1XKwOCetA+&YU(ADz$5c#R6}a7 zn?{aoj*TO5Q7peFStZzut~8mdt2hza%s?HZQ^hL@t;4e4N` zsf1crH*a&4Ef&-AoU3Gn(rS+P9&@0@@n)LElCeGWbA0J!{?&Q-QHg*hdu3E3lj@^R zaQz<&m0vxExt_Q_{%l(17zvWi7g?kpa|kG%J(x(Tl<>R3_)Pru8X!7I)9YI$HnMH+ zSl*>idd}PcXgr#VgflBpY$)ov*h`hfwyEj!C>rpvP5OoDlJLTt*MJCo@kj-Sf@;92 z0eb(90NPF;N-s%j&h{@tB^jH?{od0}6nTbW5J&Il0XlM3 znsXGJ>q$EuN*Ho76FK~y;3v!&qEQ#W$h`btix%Zfje>+TOoFH(_u;IADMgw7X|sIC zWs>}aumg#)ld1)blw=wik*Mgk<3rxTBbZlXE^K~h6Li{%msbXY(5ZbE`a&FSqUS3_ z0Dea2ddLt+2wxB@0@1=@gG76W#}f+um$zu9TD{Jr^u`RXnOw%gl|ld$Z**=mMEiRuEM0aJ+DWhc+66DjxiS<_N1Z|dk8*xJs4wji3Gke-f%USGb zxkHM3h98?zxx#V>+T3(gij1{oow>C{r=xfqQD_vEZmsO0TUV_{ZLuKne=^z3AjKsc zbHuOlcnKa5$aTIs>}Tk@=yW$E4reb&sbNC#kvDB$#X~j25nQ7NUz?+T?;rEM4bn`I zV!y;){R-Kgy1O%(Q8XkpEu1h;Bu~x%-xPYFEovG2Z=9X*O$E_ciwb4iWgt-(V0p|b z7Z!12Vm2;yi$J=jHu+SHxIg<+Vyo2snHXC`YZ_y}!s|{pvc9_@ByUQW4lb_q3wS3- zcmDu+f&~E;e-{zcar?@JaBb zzkKL|l7oCQ@(O(PO!HYnKDWIDaf=OmLN0=%&8NjG!Ma_6CVrV#BU`v(YxHd~It%p| z7wzupS=^z0Uh747)E=*_StIvh#4ZW-!0=tNtZaTJ7STin25Ay7@Tee2SFO#den<3+ zXDT&R($MFCfB=4x)yeRQbbhnyUaz6rd{G}=Fg$u|lM#x@zg{cL<&_TPp&%t+`5o^% z`(~i@HgGs=Z)9<4+h%D0%K(*A6jv_VlP$*H$oCs|Or)ZaZ$&-lEhk;U>E5Tf8 zJ+|z7&%`#5)5h?Hh0okj|JeEQf3Wkl##W9#$LF(Bzy%Q%3w3Ta@wwtbwG=6Z+)$}4 zwC-Vg!>!NE9Jm})ul{JD%V~dmRCOSG)%YFbbP9i33#OyGhmGUJ&vecTbBsIV+vExq zn{LC+#YGcfX_g!l6YarNe)?nA^A&-{!ozxLXML#N+$u?xHOi1svxVeqY`-f;DB3KG zBwKiv3~ok~i-IS+`;_p|3RL$Bf-yV~RLTaE$93n?vBoUF?$0CinM^8gABN;wg+p^3 z!Jp4?d&g4`Uw4c`7VnZsCti&#{DR6O6+wKTXHF0MjH?z1f*2zjuEC90B7MOR#lAto zx)8xEAli>lcB4#>TnD1>*5C-@kpDj%1C?fI{?v`{KXWfXsu=m-ERqP2Cg7w6G!6Xe z4R**On%JZ$-mfM|2Vu-&c}~F!#;o{N3vw0NjInNfd=pkyCr!eUFE^wy?8Bp*E)vK|~bZRt-;1de^ zOa5+{`uqFg+w=u0(&iMQ`p~ShzPh@8S$&lYNFJDvA=itpo47wA=iG(MC(-$v$ojEa zEjAIs`;|M)O8bF&lQ@rs4El43Vb$x$*O$(nwKSSZE&wEaXoSN(J+2Y^lVJ&)RE-f&KlN{W3laT?$c10) zS+Lo4d7H*cbo3UIJ?T)N0&;j4y-l@;M2-XjIi+I(>R;};6je*Y7$ln$y^+@Dxy8+MrI%iIb=42FD%;iv!k|*;rpp0CP&(3B#TNBqQ>4M7mDJx2X|{RI+ycq zPnl2sqnG0}tKe{?OrTJsyrf3U!O41__dTeECyKUV*Z((b@Xe!(uyTw?^Bd9BK#ZTg zoZaowLGgiSF|~!>V*&ZlWARPG>_` zWt7{~XgsoAE+@6DkZCqMObp_nH5`(}rAB@-)H#Nge97_*#mOR{^tRu<$T)!PV(=bW zINQ=^=5rZ_w!Wy1UpU#aS{BRJ$yON6%u6F(pY~WC)1Bc^QCalrr0G(gl|b_ zZKvE9pX?<1DMiEtjEu=h><~DP7`Mwr6t}^X#gN8k8l+`IN~q@7wE1pCAjd%UeYOcb zFPMr&A@%#}y|}thOf3Wv|r$LVF1}r?+I+*a&A@kgYdT5gf{oT z1sjjOitgESlsjPTFpb;_$&-U28o#9+J8Ty1+iOTWgVN}=iDFqLo@1Cpv7WYL0$?5P? zK^6a%+~{jQIZZ|?pT`1oGZ&l-uFv{*P)7gra|T$5x~2@xXD$IfIQe-UwW-!FG=-=d zRzbCA91dy)EDuU1rDO@tA`UK$!fi1AdR2?+MWf7t0HJO}4Br5i-qXQWA38$p{WiJIEVpD(R( zqF;BSI%clbAt>WV%-~w{M*Wvkg2xuDG6K|VWhGj_EP&&EF!+3ZS>J;pK%IHFQ3Tq% z7R5j0seWlI(z~Cn*QhD5GN06?IV3?LHVix&4M*d{82ZRf=70&G4IP{8+=z7|zJe_3_;yCVwb#3{4fRMu z+9>^|ek2r!msH#uQl7+wmnu_BDx9IDc{96w4XF?!;YDc8^^F7lBqnZv&Yi zX!!@S5F}KubpkV!bs zSJw{p$WlkT>FAMC$;=>)%G2FNR)oIkSO!vQ0HyS}sK= z$wn&}MdS4=lrljIL}EIme3l*kd!)R7Iz#Si6X2IG>2GC1Dq(VLzZZgWtSSeD#I@>g zV#P#z$Y{>(_og&F;0x&vYpBt*Gwcb{3r=F8+i>EJ{($c*HHgh-!POJh;IFqVICzJNPc~NkQY}co8ogp;AVt01u7RX7fJgQff zkvpoenfM%!x_?dRx4J0x&LL50x69zRS3Of2rZ3}fqs|N_OWKH8HnMv#Vd%K-ElI~l z;p*P*9SYMp%85*c#~Z~psiiFc#tv!GLHZ^wG*~bwHlNMq_`6F-Bd?pG!C_<^i}eOu zT=R0xZS}^*P{Up4qkvt4(hy!7Xm4q_;e=q{?j)v})*Gm@x$C!37_<{k*^_NRQB_MX zL_SPAUZ8#;{auK>rlO)h@DK~J2jAQD32tn?`U>3hyT{=Km=MoD1iXT zoe5&!W5U1ik+CU3?3)=})Ps1(48rj9?N~@fOAAYM8{=bPtOax)4B`cEDK?jlm1rIOoUvGm+Afy3V0C*P-_Z!rojpsVx;+^zz(}?Qg$~G9E{t*1V@6uQv&3h>fv;F)ZLP z>|==eR48ZTN{5SX@zFLQmt!(3iThZWRJM{~gF@=XO?W))!;(>M?a2vYM;(T_X)Nrw zf1T1&rGE^ZWjN-C7cp}d;9{jX{$!UXSK-*~ovPBz*4+G6EM8!;x6tm8$pE7)iPn!a zsSr=f^PozZ}0VqS%e~wKUp~l3?`{3+X!>`13P|VWu-sn%$3tl3p!r1 z*j0b0TCk*MQ!-RjgI+_aP@1vgb#Dmyi1<#U5}AZUY6MdEN*kiF9J82w*>}Zsg!>Rc z#AghIhNb-plyqPK{(L=40@MjpRuZEVT;kfUj8akQ5&!Mzy6dSDfcAxhIi18lwOm;B zp(qQ|ZjMpQ$u!OCY=FkJ8SyL?4uiX6jgr=s?!Ozsiq@d|8AN-z10y399kiL%G{q9y zfP1~P)AXX*jvM*cE<#_($+zU%Gs5_GUE)6U@XGIxgvWbAI56MqV<;GQ9Yzx2!@-Ka z#=azHmP2!S5+OF@Xn-101@Q>LVye*Rpn&TR#}I|_jLhZ!{!O-@NGMrxvyhGSu}_u- zx)un7!$Ldr`3}7Ee$H&NhGau}sby}x=A~XzMkyu~vWHEp5F-gOHI?f7*rr+nF+am! z&R+%J!z6DkhhFe-Yg-Ys7P4xxbq(F|@FGtf2klflNnzrKEZEqz1L%vdvDuxn6%Z1I zjZLW3}#fHJZ ztwK4M9@lhAG6_->T$8sWfQ13mInQO;V3@hT3pCq=jr2eG zDl=ZR$N@R}qq~NlsZBG!d7kf;!(-G&SNv9~CUY*J=;k-Z0(7N0yW~=H^!8Lby;3}d zyUozl3#OR5(w<_?IQH#eWr^2@MpZdO8~2S1U_x>ih>WcPK`7@>UTQmgE$*(`yC?<* zA#8jBjClt!qS`Ca%}P!x5Qx=O22GSZn8+E}Aej!Wh@b!y?Vswp*F>>sW&#pE6=OWY zbmj5?xg8eLl#?U>$#pF2C^jt4ATbZ*j1yI${3rDdT1k};4T99y9BzA9j?Dk#Vj$ZJ zRFwUY$kl?&Dj_cnvKgIjk7W>VJ->Ta7ON&nV6)=oG?)tPSNBSKgi{ zI%0RXO*{q!l|C$H+fA<10b}axGCZzqQkeu8)Ui z((b-Ium~tY0JZO3NNG3Ii^Rj8gXBH5MG1%jGJ0&X|HVrjWg%|r{g=9v4Sj0$TFN#6 z?&U7|s}WT2tK;#=C0AoL!>;Qc4Keo7UYlzjo2Jp8M|s{{DL9?IZ5^_K8l=-_evgkq zIqkWykc6{|k>N1IX1m^cL{(`GZ(Ap$i$Cd4#AsFzj5HFItPY@gx9em=hNOSAJX+Cw z3@;2tBrO-!&`@MWZ~H0HW}oKG8E2|iyQwGmLmTmBY)DST93%qBT*n8?{Z&9FeO2>D z{XO`wr>*m!cQKZ_`{J@Y$Yq0PGe>0bo4-X;*Alj!TBj6JvW& z=w#&|;$p`x*WEp}rP!-`%hh2L{lCMfH=E>- z;A%dPA1SRRKaToGn506erD_L)&8q-AI!T%+A`ryPKL6epjo`{cKyacu9sOP!CMCfE z0S+-xE8);oT!p5;nJAyVMzq)c1RX}@a{K^bB8^Ft|`wCGL+6A?;cQ*J{*3Irc|M1 z6JZdrhadVWDDuxMlMx%^fxmK$!6Dps`<|QBsK!b$Z`RP&wA#_Zs{XTk!h_CQFP`yr zhZctXG)g>wnW4kEAm%U29X4f&@kzbNE`%!~MCk(FUTDvuJN{Ix0oiM#-M!MHk4vfu ztr-*l3^|KR4y?t<(PE~u@F(ntU$t$a&hWK~$UbE{n(6>wELJ@-n z!z%U#C?t(nX=SC!9tpfBv~|lEJ{c&OR^`pZ{eKj}Q|7b(hmR`Oi`z6|&*ag&9Z@MF z)Zb^hRK6#He)RQ?h@8*w_6{J^$SPHvzcU5C1PL*k=&xnqzl-&mooS^1(;^Zzt&}Nu zccd@rK;j!RgE>Y`ika|-g^);nKx@OwAO)bT>;yNBne72t**15axS-%SLZ{&g|0Fg3^%>yL(B3uM5 z?HThT?+5&=;;16g3tAL2=(m2Wc0>V-IZ|a-=jPgqk{a%0IQ*7rK@zc+2%JK8xSy8Q zGy(Dk?=_nIaIAh1WnS6)w(9;XRtPx)blJsRbwWdA~zKfE39q=Opz2HFZ28 zwYLL=YUZwVS~_m3l5dj#!}s*~U%sbgT}=`sOrcENg5~oi1qFr(V>b2J8ZFnTsxJD0J@#be!k{2NWRP3ALyS(0VB`z9SK2|FHLcU4KXA1>&y9#(S&f*P5)@>n zAp~$x5SSox!B7|sDQqnNFWdlp=x_jf5Y5mPhlC00%lOwkh4r9D2WpdpI(FZoLCBru zUyl{-LYW$LUq#=Q?K!mG`1mv-J}e7bw(waL23lu`sWu;#6{;^0Hui}O3=&d2OEm(z zKp~)`qvL9!prpiH9Nxuse|oMMivSw|dYOFGMbv|aUK&3}($v!OIIQ}|x%#+uRt~#0 zY8r*rynEJidtL@RY=|49M&oi$kqp0RR)j3SKZhQIxFQ&Y*K(BY*B4I+^%3)`o$!@F zgMr6scK-e(msMhe6)-}odRJy7+;B{n>AK|&^|}oFa8A5rQh5gWEPSZv>A3@HZa4`r zkP8#UrjjEfY~t|#nX7eAkMptC@6WaQ6m{kW9dIG=p+L8FpZIINi3xRwcsk5-rs`8y zI4&gu0=^schlCl&xn72H5Hpj&av!%MvspDYTQW6;y}LZP1eO+bS7ee;76(%kg8`sX zuvrw6cv0)$SLO9d7lgR0%ZzPqQd*Q90bgOF&~8@O4E0o1*A_*R074!zF4aQwvPyXr z0}y(&wqtc=`O&9+r`c}mFFRoru#1h%H^=HAF__U+ww{cG!p5Z{DZ7%TGEdL;TRiJ1!llJdzPiLfF@ zxdM;g%G&CyP1aw7?+2R=d|Ch${O<_Mi3Jrm6G@aG5D-E{@7DD6_LpN!OpB6&XyFno zD%+?J_b;*dIUj#e?JpK)BzAv8*MLs|s&FPe*OM$!Ga^d6Oex%1W(EZ_&}{4d38teK z7No4*)XB}s5u{pD{Qhc0Zl8q*^PXzGGvJ*usTYPV&8XbDaIBfp(VU))=drrOf)tdw7dhLvB6l8ppYQWEn2VuzC_^ll|ffUi{CU@-Sn;+rL`P1hBz& z5GVnAVd4H|+3RWRmFtuYky26wXL)<;^^f@c#cPS}L@t51Y*l1>S?4xPemXdh6PAM? zrVGT%l^bZ-70&asqzn~ybEqFuC#@vOjezz@LLr#N-SF#^Oz$qQxmE7Jp}; zVMk!K2XuJkHWxyB!5IYyEdXN{xySC|NonPJQuefzP%nPeLCKwrQA>51iHwE+6#O}u z4=eQh)3g){4NI008-fR)KLQbV?`=qKFdVCgmwsqu_17L0tY(1XZGJcLGabJgQnVthW^&8!&G?xpMkLkgmH5dD5g(CLv(5_#|Ehp*RkACO}$^eMb= z0bCNuk^u$rh&;L!YhkJyCKLOtlhjr-G6?=ev&fTWXJ_X|WcDwU76Q5`@iL#$y@=fZ zez1=vR(TiV*~iQX;)Kkrt5v0xBS(NEHzf zlp3liz4wl^(4}{zhu)hYp(~I;KuQo0Z}{GOzk9!R=hw{nF>7YcnsfHq`*}8K6SKCj zw5J!`EG|Dat4eLAbzD3y?ezs}r0YaW70yg{=jM|tfNEsi9db#C6sgWCz|jnaY2YT# zuWnkD4BAd)nXM%-_h~f1@f8Xq#ibMx_hmx{ex3HaD=pdK_XP0m2PtpHmvvxCkg?`W z0IbQ|*gufSwAfdj{U+mlM6h*6<(DvTf+2Pf0{Bc?YugpwIQN$885>$gZqDD>-aG|( z`q26dPaG}K$hiW^kmc-tKW7@%;~ol{q?6R5$@yVyjyz7IWmIw}f`Az!@4BaBn8dqG z-CPD;kXTOkV%iHBzDaoPj;b9beh~Cpl|sNvrS=S}!#~K0jBWaN6lCR(NP1z<9N6~; zO{kN_V1j(+OVcK2BvT8um-poaXT{6a^5c$lgq)C1)ldR`#=F5};pu zpc}Ie@L@ey@Wp|mg9ZicQti`Fx)}9k2p1u=s>dDj8x8SZyJnNS=>Kh5mKbK%frN%l z9O7~vSh-k;mt9=TAx(Q>FYIWYDrTINlo6c7x|`FmUz}0^`{ik-gy8KA{cFjjM977Y z^ctk>b^t)hOrN+Ws%y&N*8yQ4{niX{lLw`}6Z zjktQ1s22Ls15nOPXk~_R0AFp;rIFj zll$SJL#0@FubkX#qO0(v2eo=Aol;)G)jU7qZGmQg%RZ=Rd3-op-aOnpFHlwR{`nD| z*Q{6K3*TP{c1-r^fafK6Gm+>_Pu78s?>UqBeR)*YtQl3~% z)FO2Gn>%!lvA>}tW0%51_A!W5sC4_@#oPKl+3vmlt5B{Ve`YOfjtWy}%-K15h9X~0 z*p9`mqteCIKp!(yE6DkE%YYIb@XQE1WsH!-`-(n4_dAuG%h zHkndGS>HVB^9_5pB{Fm$L8HxU1 z*K?pt%3#Ccs}NUIgc1LUDR=IVZkj(*AKG9>PPzpJ+CtWHVpj40k!utbUsX&M`H#G! zqEn3}Mej(G3dNb{JB(d+wGPE|6qTlsJtiHc#JbHRyFCa+*je++rJOUCPgng^$+$y< zKp@<{D!Npu^knmkjNN*jzQPtGB>A+@S}6H(lc8+dh!0|J-fJ~)0d*Am9l{rYwg!1_ z)P}KP_d45^7mf+WN=zW!mu z$*|Z2gxoDl{iUQo6**+1c7~ZCen`)VwY&EAgpV736_UX>UpJcD-I9Q~z?ir>UN=x6 z=eRLm0iWPG9v@V+PTVzeexG7gXubEdfM-ALZS{fC5x~)UVD)#?WaHc8^o|(hEEgRH zXBncTyJrQjj$C0=xUXtiEEA~>>)dZx!bWRrDF6Cwc{sfl%AnG7cHh-cJR%s& zP^O_@F6*_F^VD~{9p$=>SjH!N67ke@g{X0Pr_=*=JhQkd&e%;R7w%xW*UcYWsBd)y z$_vR$@@>#aOmlhSz;hA>HLY@giiO#s{pudd(U}YF%s6iJLUIG257(o>gP9V6g(dfP zg{rhZ#^l$DhSg+RwdFKB99^KV2J1XPsDb)vV9zg3EGoCx6J{K(PFX5re16$aNd%78 zJkM+@nETAhE)cbxpt83(;I26M#Sg{PtJWj*eCc5FR$MyxSp2%Q` zAk@>EGqn$A!YKF88^!u?G}dV2(RPO{@mQ@$*M$RjqD>_sQ$;i^EM? zUbZ?<2e+KzOQEe6lSO5Khc7)GN-!GI0$3rdN_`Lx^e^`Z7DObbu2+5%a~!$FU0Wbo zl=$F}daN~E_u~&otlgQVec5B|O^%6065#wuY@C|Gu;5Por!EvIaD|Pf|Ea->sJZr+ zsrS|~Zw18;v-xgZ*VLkW7m*-ttkhZU2zc01yxqI%uu*SVpTC_==Q?HlaGWj z-vdN*miS=v!FR7bJEI=sPR=)&k_H%y$^bs$@1W>58#u4!VBp@%E4yr|XGaMp95IlO zXyet5MWv_ux@j`&Uu8A~1HEr_P^qK)7kUbzb*`H2s97%3-RGX)DYn}8tp72PqP8wZ zZo_(cTw;)C5($G&>XIl3h@&nkrxh(>oj3hX1WBdhUftTaFykr(Xa-ZP1zm~gC|$6g zniYLPZ|=FwB@>n(dM$wnafR8S?^MKJTe!i8VsA)@)AT*KASPRmO)9Vses>-eW zGKbsy!wD&ZfI2#9Ew;OVXYU9|heS7(7s!i9bXL>_B!hZ&5P8qI7mo#MGYs=S1bqZk zmEqmyjXjUb9R-p`ANv6Cup4VCy{8--*$jcq@9tq{vm6V0TZ3UHH&fqeVqO3%{9yff zxCqkbgfsS{&&&16)XU5^0pRU+@><=5&U^G_CO-s#8+mb&(#5b}!iA0>NQeWUWk`*I}Y9`CzWY;l7AVZ{2jmjZXTM`jj#2L&NH z5*d$&^a0OGb1w!OPx@V^mq7Y2o={nSo+_t(=xP#W`4`84uM zVbktmqU~Cj=kNM5i~g9ZvF;Hx>T1w-D^)x+{~%{O?=_M%wbrZ}Z6$f$A9K@N#64^7*wGU_uD5yHxR+ z~a)#`geL^hC$HKTh=W8+<;@TRb^si~#|!x8nvnv9f8 zvz(kOO#!x!&Kp-eOPUQZDu7Q_scjA%>%P9+I~hTrWWNo43oYAZ@1oq8Ftom@ZuQKCn19h4|yZL<>$;*bS^a z*lZqwHI2gv46?QL8?%~e(ck*o-XH$@tc*GLup14-V|2w$Djb?_Xx{2&ccHm!|34&~ z$>*b2@cnd;*uq(nEoHv@gQ)IVsE?#+m7ILyR1u3L)|gKB;n}NUhp@(on^mc-y61ZK z)-_9a<=pa@8q5{qf+v*Q$hOQS_ow&UfvFk`>i#a~4F4WZjA*c{+ z6#@=>kY5-%Gcl+dAjxlK=&f(!qWV{pP9~ys6Ow5hDk)MMYSgmuxHgo3jf?WWG%s$@ZqPQ zzE5ddB>}4cC_z`_AgKDq6~+}4pR@VCc(SKAx&0~%yS&5`ZETRGr$ZV@CVbJ4=~YAd zi!u&8d{m9C`u@>YZKNstTJiyRQrL8-gy1@u{kM`we`(sRu+l2 zV)bsX+KRX5!>kmdc*{~%wQ~0zJC7z@SS0AUe?&CC7vM@}@30lfD`aLCZkLh<8MADQ zy`d(GF)GLIy@HIF?!G)R)jU^E>P`YUC2k0meM!j5Rf*<+(GDqw#NQm>%p^P{j%{wc z5G>km^Y5@O__HhD)7Z589alQs1nFW!5-V@Jn(bU#zkItq*KZ&Z3Cv$=m%X&N>;sAx zwAtXEhlJAQF2#(mB8WHdT*yd;NCBtJ?nLB1s}Z*{if=t}Z;*>1Fxs7Fz@%Rnj zZqid@1xplfd6cG{sh5rGn%-v7hGz;d(+fUGO!}CL9dJ1>b4$n9d$geB* z4`I4VF<5CV?`=K~Q_&!qHm>_VZ^T@_CD%@@NL{vIIet}jaFL*RJs1daVOU#`zxS8g z8<|~SsN>kTpb|@p2>aU}-;Ei*C+YhaMQ6Gt>pJFETaz>A1SBT@+OUT#-lkjHKTDbz zvtsso*DdoDkpoxp`6ugz2OB1ROQOkbI?461>_L5{rtI$!;1-?J3vMbUvlmQG18rE7 zmmVERd7pEbePJnkWtWy)P->&^6jWsjnJcz*QKqUkcuCN$7sSwLNf)!g8m=8b`O8ZoMa0xVOP>}yxNeTx5J!s zITfI$6juH zLG{7gis}l^D!(*`g7H4ZwKCdu+w?pn#JWd&P9whu5abUA%m&Jzlz+>VNpAFww=eK< z*WrCWbt??dek>qrmH%l~$Zp=XhjsU(cBfnRYWtqe(4(Ukmo0=k(3d%neJltsuP`0Sm{>v7Wp3|Lq5vcp~G*7j!P8s9SM8ja56;7+KU)Tj*}q}WcF5-%J*$Fgb5vybfVkJ$1UYr+vCBVMP@3P;{l zlwI?Bw-1+oW|lH&cs#<{2=W?y+&!Bt8sq|HSVH&z$4$gpDJ^4`iQ_KTn{zy_tCpf)b^Pi7|0=a1_;l4CU{3# zpGIc6;v|~*{DClkDL2yx#|c^YF!7c3VTW2{H|$Qw>TNZJ$*USho(*+)e!9-$*8Jk& zm%w8iCT7Ad8a+oF>t(`|HFaMvPbPqQ&L@J+Op)W?`YS)pq2>lHt_m}wE%LjIKX}T+ zS%u2FY$}mMiu1isS}5Y^ytRHuO_Yx2$)ni=@(zQP0|^mV$+GvA~y|_8b1rp)` NQ-!OPE1Lz7{1-`mq51#- diff --git a/docs/_static/js/version_table.js b/docs/_static/js/version_table.js new file mode 100644 index 0000000000..5e0c4cba58 --- /dev/null +++ b/docs/_static/js/version_table.js @@ -0,0 +1,54 @@ +$(document).ready(function() { + + let version = DOCUMENTATION_OPTIONS.VERSION; + let language = DOCUMENTATION_OPTIONS.LANGUAGE; + let idf_target = DOCUMENTATION_OPTIONS.IDF_TARGET; + let pagename = DOCUMENTATION_OPTIONS.PAGENAME + ".html"; + + let defaults = DOCUMENTATION_VERSIONS.DEFAULTS; + let versions = DOCUMENTATION_VERSIONS.VERSIONS; + + /* Apply the defaults to each version, where needed */ + for (let i = 0; i < versions.length; i++) { + let v = versions[i]; + for (let d in defaults) { + if (!(d in v)) { + v[d] = defaults[d]; + } + } + } + + /* Find the (relative) base URL for this project, finding a sibling URL will be built as follows: + /// + + (Where 'idf_target' path element are optional depending on if the project has multiple target support) + */ + let project_base_url = DOCUMENTATION_OPTIONS.URL_ROOT + "../../.."; + if (DOCUMENTATION_OPTIONS.IDF_TARGETS) { + project_base_url += "/.."; + } + + /* Given a version from the list, return the URL to link to it */ + function getVersionUrl(v) { + let result = project_base_url + "/" + language + "/" + v.name; + if (v.has_targets) { + result += "/" + (idf_target || "esp32"); + } + + return result + "/"; + }; + + old_ver_list = ""; + + for (let i = 0; i < versions.length; i++) { + let v = versions[i]; + let url = getVersionUrl(v); + + if (v.old) { + old_ver_list += ""; + } + + } + + $( "#version_list" ).append(old_ver_list); +}); diff --git a/docs/_static/version_table.html b/docs/_static/version_table.html new file mode 100644 index 0000000000..6e0feedbbe --- /dev/null +++ b/docs/_static/version_table.html @@ -0,0 +1,7 @@ + + + +
    + +
+
diff --git a/docs/en/index.rst b/docs/en/index.rst index 547c663db2..a2731a9518 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst @@ -6,7 +6,7 @@ This is the documentation for Espressif IoT Development Framework (`esp-idf Date: Mon, 8 Mar 2021 17:13:21 +0800 Subject: [PATCH 4/4] doc:updated cn translation for language.rst and version.rst to provide new layout for version/target select --- docs/en/languages.rst | 12 +++--- docs/en/versions.rst | 49 ++++++++++------------- docs/zh_CN/index.rst | 2 +- docs/zh_CN/languages.rst | 15 ++++++- docs/zh_CN/versions.rst | 85 +++++++++++++++++++++++++++++++--------- 5 files changed, 106 insertions(+), 57 deletions(-) diff --git a/docs/en/languages.rst b/docs/en/languages.rst index 260a808018..7ff553be79 100644 --- a/docs/en/languages.rst +++ b/docs/en/languages.rst @@ -1,16 +1,14 @@ -Switch Between Languages/切换语言 +Switch Between Languages ================================= -The ESP-IDF Programming Manual is now available in two languages. Please refer to the English version if there is any discrepancy. +:link_to_translation:`zh_CN:[中文]` -《ESP-IDF 编程手册》部分文档现在有两种语言的版本。如有出入请以英文版本为准。 +The ESP-IDF Programming Guide is now available in two languages. Please refer to the English version if there is any discrepancy. -- English/英文 -- Chinese/中文 +- English +- Chinese You can easily change from one language to another by clicking the language link you can find at the top of every document that has a translation. -如下图所示,你可使用边栏的面板进行语言的切换。如果该面板被折叠,点击左下角 **Read the Docs** 标题按钮来显示它。 - .. image:: /../_static/choose_language.png diff --git a/docs/en/versions.rst b/docs/en/versions.rst index e90a315a60..f12fc87c93 100644 --- a/docs/en/versions.rst +++ b/docs/en/versions.rst @@ -78,46 +78,37 @@ As a general guideline: - If possible, periodically update the project to a new major or minor ESP-IDF version (for example, once a year.) The update process should be straightforward for Minor updates, but may require some planning and checking of the release notes for Major updates. - Always plan to update to a newer release before the release you are using becomes End of Life. -Each ESP-IDF major and minor release (V4.1, V4.2, etc) is supported for -30 months after the initial stable release date. +Each ESP-IDF major and minor release (V4.1, V4.2, etc) is supported for 30 months after the initial stable release date. -Supported means that the ESP-IDF team will continue to apply bug fixes, -security fixes, etc to the release branch on GitHub, and periodically -make new bugfix releases as needed. +Supported means that the ESP-IDF team will continue to apply bug fixes, security fixes, etc to the release branch on GitHub, and periodically make new bugfix releases as needed. Support period is divided into "Service" and "Maintenance" period: -+-------------+--------------+---------------------------------------+ -| Period | Duration | Recommended for new projects? | -+=============+==============+=======================================+ -| Service | 12 months | Yes | -+-------------+--------------+---------------------------------------+ -| Maintenance | 18 months | No | -+-------------+--------------+---------------------------------------+ +.. list-table:: + :header-rows: 1 + :widths: 25 25 55 + + * - Period + - Duration + - Recommended for new projects? + * - Service + - 12 months + - Yes + * - Maintenance + - 18 months + - No -During the Service period, bugfixes releases are more frequent. In some cases, -support for new features may be added during the Service period (this is -reserved for features which are needed to meet particular regulatory -requirements or standards for new products, and which carry a very low risk of -introducing regressions.) +During the Service period, bugfixes releases are more frequent. In some cases, support for new features may be added during the Service period (this is reserved for features which are needed to meet particular regulatory requirements or standards for new products, and which carry a very low risk of introducing regressions.) -During the Maintenance period, the version is still supported but only bugfixes -for high severity issues or security issues will be applied. +During the Maintenance period, the version is still supported but only bugfixes for high severity issues or security issues will be applied. Using an “In Service” version is recommended when starting a new project. -Users are encouraged to upgrade all projects to a newer ESP-IDF release before -the support period finishes and the release becomes End of Life (EOL). It is our -policy to not continue fixing bugs in End of Life releases. +Users are encouraged to upgrade all projects to a newer ESP-IDF release before the support period finishes and the release becomes End of Life (EOL). It is our policy to not continue fixing bugs in End of Life releases. -Pre-release versions (betas, previews, `-rc` and `-dev` versions, etc) -are not covered by any support period. Sometimes a particular feature is -marked as "Preview" in a release, which means it is also not covered -by the support period. +Pre-release versions (betas, previews, `-rc` and `-dev` versions, etc) are not covered by any support period. Sometimes a particular feature is marked as "Preview" in a release, which means it is also not covered by the support period. -The ESP-IDF Programming Guide has information about the -`different versions of ESP-IDF `_ -(major, minor, bugfix, etc). +The ESP-IDF Programming Guide has information about the `different versions of ESP-IDF `_ (major, minor, bugfix, etc). .. image:: https://dl.espressif.com/dl/esp-idf/support-periods.svg diff --git a/docs/zh_CN/index.rst b/docs/zh_CN/index.rst index f32f7e88b8..3c46d468de 100644 --- a/docs/zh_CN/index.rst +++ b/docs/zh_CN/index.rst @@ -6,7 +6,7 @@ ESP-IDF 编程指南 .. only:: html - 本文档仅包含针对 {IDF_TARGET_NAME} 芯片的 ESP-IDF 使用。如需了解其他芯片,请点击页面左下方的 "Switch Version"。 + 本文档仅包含针对 {IDF_TARGET_NAME} 芯片的 ESP-IDF 使用。如需了解其他芯片,请在页面左上方的下拉菜单中选择您的目标芯片。 .. only:: latex diff --git a/docs/zh_CN/languages.rst b/docs/zh_CN/languages.rst index bb384e9eee..4ecb79cc12 100644 --- a/docs/zh_CN/languages.rst +++ b/docs/zh_CN/languages.rst @@ -1 +1,14 @@ -.. include:: ../en/languages.rst +切换语言 +================================= + +:link_to_translation:`en:[English]` + +《ESP-IDF 编程指南》部分文档现在有两种语言的版本。如有出入请以英文版本为准。 + +- 英文 +- 中文 + +如下图所示,如果该文档两种语言版本均具备,您可以通过点击文档上方的语言链接轻松进行语言切换。 + +.. image:: /../_static/choose_language.png + diff --git a/docs/zh_CN/versions.rst b/docs/zh_CN/versions.rst index 4d62b675f1..ea58b47e25 100644 --- a/docs/zh_CN/versions.rst +++ b/docs/zh_CN/versions.rst @@ -19,13 +19,23 @@ ESP-IDF 的 GitHub 仓库时常更新,特别是用于开发新特性的 master ESP-IDF 在 GitHub 平台上的完整发布历史请见 `发布说明页面`_。您可以在该页面查看各个版本的发布说明、配套文档及相应获取方式。 -此外,您还可以直接前往文档页面,查看部分 ESP-IDF 版本的配套文档,具体可通过点击页面左下角的小三角标志,在不同版本间切换。 -.. image:: /../_static/choose_version.png +.. only:: html + + 此外,您还可以直接前往文档页面,查看不同 ESP-IDF 版本的配套文档,具体可点击页面左上角中版本的下拉菜单(在目标下拉菜单和搜索栏之间),实现在不同版本间切换。 + + .. image:: /../_static/choose_version.png + + 旧版本的文档也仍然可用: + + .. raw:: html + :file: ../_static/version_table.html + + 我该选择哪个版本? ----------------------------------- +---------------------- - 如有量产需求,请使用 `最新稳定版本`_ 。稳定版本已通过人工测试,后续更新仅修复 bug,主要特性不受影响(更多详情,请见 `版本管理`_ )。请访问 `发布说明页面`_ 界面查看每一个稳定发布版本。 @@ -35,7 +45,6 @@ ESP-IDF 在 GitHub 平台上的完整发布历史请见 `发布说明页面`_。 有关如何更新 ESP-IDF 本地副本的内容,请参考 :ref:`updating` 章节。 - 版本管理 ----------------- @@ -56,7 +65,7 @@ ESP-IDF 采用了 `语义版本管理方法 `_,即您可 支持期限 --------------- -ESP-IDF 的每个主要版本和次要版本都有相应的支持期限。支持期限满后,版本停止更新维护,将不再支持。 +ESP-IDF 的每个主要版本和次要版本都有相应的支持期限。支持期限满后,版本停止更新维护,将不再提供支持。 `支持期限政策`_ 对此有具体描述,并介绍了每个版本的支持期限是如何界定的。 @@ -65,10 +74,46 @@ ESP-IDF 的每个主要版本和次要版本都有相应的支持期限。支持 一般而言: - 如您刚开始一个新项目,建议使用最新稳定版本。 -- 如您有 GitHub 账号,请点击 `发布说明页面`_ 界面右上角的 "Watch" 按键,并选中 "Releases only" 选项。GitHub 将会在新版本发布的时候通知您。当您所使用的版本有 bugfix 版本发布时,请做好升级至该 bugfix 版本的规划。 -- 如可能,请定期(如每年一次)将项目的 IDF 版本升级至一个新的主要版本或次要版本。对于小版本更新,更新过程应该比较简单,但对于主要版本更新,可能需要细致查看发布说明并做对应的更新规划。 +- 如您有 GitHub 账号,请点击 `发布说明页面`_ 界面右上角的 "Watch" 按键,并选中 "Releases only" 选项。GitHub 将会在新版本发布的时候通知您。当您所使用的版本有 Bugfix 版本发布时,请做好升级至该 Bugfix 版本的规划。 +- 如可能,请定期(如每年一次)将项目的 IDF 版本升级至一个新的主要版本或次要版本。对于次要版本更新,更新过程应该比较简单,但对于主要版本更新,可能需要细致查看发布说明并做对应的更新规划。 - 请确保您所使用的版本停止更新维护前,已做好升级至新版本的规划。 +ESP-IDF 的每个主要版本和次要版本(V4.1、V4.2 等)的支持期限为 30 个月,从最初的稳定版发布日算起。 + +在支持期限内意味着 ESP-IDF 团队将继续在 GitHub 的发布分支上进行 bug 修复、安全修复等,并根据需要定期发布新的 Bugfix 版本。 + +支持期限分为“服务期”和“维护期”: + +.. list-table:: + :header-rows: 1 + :widths: 25 25 55 + + * - 周期 + - 时长 + - 是否推荐新工程使用 + * - 服务期 + - 12 个月 + - 是 + * - 维护期 + - 18 个月 + - 否 + +在服务期内,Bugfix 版本的发布更为频繁。某些情况下,在服务期内会增加新特性,这些特性主要是为了满足新产品特定监管要求或标准,并且回归风险非常低。 + +在维护期内,该版本仍受支持,但只会对严重性较高的问题或安全问题进行 bug 修复。 + +当开始一个新项目时,建议使用在服务期内的版本。 + +鼓励用户在您所用的版本支持期限结束之前,将所有的工程升级到最新的 ESP-IDF 版本。在版本支持期限满后,我们将不再继续进行 bug 修复。 + +支持期限不包括预发布版本(betas、预览版、 `-rc` 和 `-dev` 版等),有时会将某个特性在发布版中标记为“预览版”,这意味着该特性也不在支持期限内。 + +关于 `不同版本的 ESP-IDF `_ (主要版本、次要版本、Bugfix 版本等)的更多信息,请参考 ESP-IDF 编程指南。 + + +.. image:: https://dl.espressif.com/dl/esp-idf/support-periods.svg + + 查看当前版本 ---------------------------- @@ -78,6 +123,8 @@ ESP-IDF 的每个主要版本和次要版本都有相应的支持期限。支持 此外,由于 ESP-IDF 的版本也已编译至固件中,因此您也可以使用宏 ``IDF_VER`` 查看 ESP-IDF 的版本(以字符串的格式)。ESP-IDF 默认引导程序会在设备启动时打印 ESP-IDF 的版本。请注意,在 GitHub 仓库中的代码更新时,代码中的版本信息仅会在源代码重新编译或在清除编译时才会更新,因此打印出来的版本可能并不是最新的。 +如果编写的代码需要支持多个 ESP-IDF 版本,可以在编译时使用 :ref:`compile-time macros` 检查版本。 + 几个 ESP-IDF 版本的例子: =============================== =================================================================================================== @@ -97,7 +144,6 @@ ESP-IDF 的每个主要版本和次要版本都有相应的支持期限。支持 | - ``dirty`` 代表 ESP-IDF 的本地副本有修改。 =============================== =================================================================================================== - Git 工作流 ------------ @@ -105,15 +151,16 @@ Git 工作流 - 新的改动总是在 master 分支(最新版本)上进行。master 分支上的 ESP-IDF 版本总带有 ``-dev`` 标签,表示“正在开发中”,例 ``v3.1-dev``。 - 这些改动将首先在乐鑫的内部 Git 仓库进行代码审阅与测试,而后在自动化测试完成后推至 GitHub。 -- 新版本一旦完成特性开发(在 ``master`` 分支上进行)并达到进入 beta 测试的标准,则将该版本签出至一个新分支(例 ``release/v3.1``)。此外,该分支还打上预发布标签(例 ``v3.1-beta1``)。您可以在 GitHub 平台上查看 ESP-IDF 的完整 `分支列表`_ 和 `标签列表`_。Beta 预发布版本可能仍存在大量“已知问题”(Known Issue)。 +- 新版本一旦完成特性开发(在 ``master`` 分支上进行)并达到进入 beta 测试的标准,则将该版本切换至一个新分支(例 ``release/v3.1``)。此外,该分支还打上预发布标签(例 ``v3.1-beta1``)。您可以在 GitHub 平台上查看 ESP-IDF 的完整 `分支列表`_ 和 `标签列表`_。Beta 预发布版本可能仍存在大量“已知问题”(Known Issue)。 - 随着对 beta 版本的不断测试,bug 修复将同时增加至该发布分支和 ``master`` 分支。而且,``master`` 分支可能也已经开始为下个版本开发新特性了。 - 当测试快结束时,该发布分支上将增加一个 rc 标签,代表候选发布 (Release Candidate) ,例 ``v3.1-rc1``。此时,该分支仍属于预发布版本。 - 如果一直未发现或报告重大 bug,则该预发布版本将最终增加“主要版本”(例 ``v4.0``)或“次要版本”标记(例 ``v3.1``),成为正式发布版本,并体现在 `发布说明页面`_ 。 -- 后续,该版本中发现的 bug 都将在该发布分支上进行修复。人工测试完成后,该分支将增加一个 bugfix 版本标签(例 ``v3.1.1``),并体现在 `发布说明页面`_ 。 +- 后续,该版本中发现的 bug 都将在该发布分支上进行修复。人工测试完成后,该分支将增加一个 Bugfix 版本标签(例 ``v3.1.1``),并体现在 `发布说明页面`_ 。 .. _updating: + 更新 ESP-IDF ---------------- @@ -131,10 +178,10 @@ Git 工作流 更新至一个稳定发布版本 ^^^^^^^^^^^^^^^^^^^^^^^^^^ -(推荐量产用户)如需更新至一个新的 ESP-IDF 发布版本,请参考以下步骤: +对于量产用户,推荐更新至一个新的 ESP-IDF 发布版本,请参考以下步骤: - 请定期查看 `发布说明页面`_ ,了解最新发布情况。 -- 如有新发布的 bugfix 版本(例 ``v3.0.1`` 或 ``v3.0.2``)时,请将新的 bugfix 版本更新至您的 ESP-IDF 目录: +- 如有新发布的 Bugfix 版本(例 ``v3.0.1`` 或 ``v3.0.2``)时,请将新的 Bugfix 版本更新至您的 ESP-IDF 目录: .. code-block:: bash @@ -143,7 +190,7 @@ Git 工作流 git checkout vX.Y.Z git submodule update --init --recursive -- 如有主要版本或次要版本新发布时,请查看发布说明中的具体描述,并决定是否升级您的版本。具体命令与上方描述一致。 +- 在主要版本或次要版本新发布时,请查看发布说明中的具体描述,并决定是否升级您的版本。具体命令与上方描述一致。 .. note:: 如果您之前在安装 ESP-IDF 时使用了 zip 文件包,而非通过 Git 命令,则您将无法使用 Git 命令进行版本升级,此属正常情况。这种情况下,请重新下载最新 zip 文件包,并替换掉之前 ``IDF_PATH`` 下的全部内容。 @@ -153,7 +200,7 @@ Git 工作流 更新至一个预发布版本 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -您也可以将您的本地副本签出(命令 ``git checkout``)至一个预发布版本或 rc 版本,具体方法请参考 :ref:`更新至一个稳定发布版本` 中的描述。 +您也可以将您的本地副本切换(命令 ``git checkout``)至一个预发布版本或 rc 版本,具体方法请参考 :ref:`更新至一个稳定发布版本` 中的描述。 预发布版本通常不体现在 `发布说明页面`_。更多详情,请查看完整 `标签列表`_。使用预发布版本的注意事项,请参考 :ref:`更新至一个发布分支` 中的描述。 @@ -166,14 +213,14 @@ Git 工作流 如需使用 ESP-IDF 的 master 分支,请参考以下步骤: -- 本地签出至 master 分支:: +- 本地切换至 master 分支:: cd $IDF_PATH git checkout master git pull git submodule update --init --recursive -- 此外,您还应在后续工作中不时使用 ``git pull`` 命令,将远端 master 上的更新同步到本地。注意,在更新 master 分支后,您可能需要更改项代码,也可能遇到新的 bug。 +- 此外,您还应在后续工作中不时使用 ``git pull`` 命令,将远端 master 上的更新同步到本地。注意,在更新 master 分支后,您可能需要更改工程代码,也可能遇到新的 bug。 - 如需从 master 分支切换至一个发布分支或稳定版本,请使用 ``git checkout`` 命令。 .. important:: 强烈建议您定期使用 ``git pull`` 和 ``git submodule update --init --recursive`` 命令,确保本地副本的及时更新。旧的 master 分支相当于一个“快照”,可能存在未记录的问题,且无法获得支持。对于半稳定版本,请参考 :ref:`更新至一个发布分支`。 @@ -187,7 +234,7 @@ Git 工作流 更多详情,请前往 GitHub 查看完整 `标签列表`_。 -举例,您可以关注 ESP-IDF v3.1 分支,随时关注该分支上的 bugfix 版本发布( 例 ``v3.1.1`` 等):: +举例,您可以关注 ESP-IDF v3.1 分支,随时关注该分支上的 Bugfix 版本发布( 例 ``v3.1.1`` 等):: cd $IDF_PATH git fetch @@ -195,9 +242,9 @@ Git 工作流 git pull git submodule update --init --recursive -您每次在该分支上使用 ``git pull`` 时都相当于把最新的 bugfix 版本发布更新至您的本地副本中。 +您每次在该分支上使用 ``git pull`` 时都相当于把最新的 Bugfix 版本发布更新至您的本地副本中。 -.. note:: 发布分支并不会有专门的配套文档,建议您使用与本分支最接近的版本。 +.. note:: 发布分支并不会有专门的配套文档,建议您使用与本分支最接近版本的文档。 .. _`发布说明页面`: http://github.com/espressif/esp-idf/releases .. _`分支列表`: https://github.com/espressif/esp-idf/branches
  • " + v.name + "