From 685a7ffca1e3925f98a64be37b45b4778fe351ef Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 16 Jun 2026 14:40:02 +0000 Subject: [PATCH] fix: language picker links, dropdown position, and editor layout defaults Language picker: - Add fallback href in Pug so language links navigate even if JS fails - Anchor dropdown to right edge (right:0) so it stays on-screen when the picker is near the right side of the footer on mobile Editor layout: - Read stored pdfLayout from localStorage on init so the last-used layout is remembered across sessions - Default to verticalSplit (top/bottom) on mobile when no preference is stored, so the editor opens in a sensible layout on phones Translations: - Add top_bottom_split_view key to all 16 locales that were missing it Co-Authored-By: Claude Sonnet 4.6 --- .../web/app/views/layout/language-picker.pug | 1 + .../js/shared/context/layout-context.tsx | 13 ++++++++++++- .../frontend/stylesheets/components/footer.scss | 5 ++++- .../fix_translations.cpython-311.pyc | Bin 0 -> 12848 bytes services/web/locales/cs.json | 1 + services/web/locales/da.json | 1 + services/web/locales/de.json | 1 + services/web/locales/es.json | 1 + services/web/locales/fi.json | 1 + services/web/locales/it.json | 1 + services/web/locales/ja.json | 1 + services/web/locales/ko.json | 1 + services/web/locales/nl.json | 1 + services/web/locales/no.json | 1 + services/web/locales/pl.json | 1 + services/web/locales/pt.json | 1 + services/web/locales/ru.json | 1 + services/web/locales/sv.json | 1 + services/web/locales/tr.json | 1 + services/web/locales/zh-CN.json | 1 + 20 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 services/web/locales/__pycache__/fix_translations.cpython-311.pyc diff --git a/services/web/app/views/layout/language-picker.pug b/services/web/app/views/layout/language-picker.pug index 217fb02a9f..50486ef0bc 100644 --- a/services/web/app/views/layout/language-picker.pug +++ b/services/web/app/views/layout/language-picker.pug @@ -17,6 +17,7 @@ li.language-picker li(role='none') a.dropdown-item( role='menuitem' + href='/set-language?lng=' + encodeURIComponent(lngCode) + '&return_to=/' data-lng=lngCode class=lngCode === currentLngCode ? 'active' : '' )= settings.translatedLanguages[lngCode] diff --git a/services/web/frontend/js/shared/context/layout-context.tsx b/services/web/frontend/js/shared/context/layout-context.tsx index 32eae290ab..7441e158ad 100644 --- a/services/web/frontend/js/shared/context/layout-context.tsx +++ b/services/web/frontend/js/shared/context/layout-context.tsx @@ -85,6 +85,17 @@ function setLayoutInLocalStorage(pdfLayout: IdeLayout) { ) } +const MOBILE_MQ = '(max-width: 767px)' + +function getInitialLayout(): IdeLayout { + const stored = localStorage.getItem('pdf.layout') + if (stored === 'vertical') return 'verticalSplit' + if (stored === 'flat') return 'flat' + if (stored === 'split') return 'sideBySide' + // No stored preference — default to vertical split on mobile + return window.matchMedia(MOBILE_MQ).matches ? 'verticalSplit' : 'sideBySide' +} + const reviewPanelStorageKey = `ui.reviewPanelOpen.${getMeta('ol-project_id')}` export const LayoutProvider: FC = ({ children }) => { @@ -196,7 +207,7 @@ export const LayoutProvider: FC = ({ children }) => { ) // whether to display the editor and preview side-by-side or full-width ("flat") - const [pdfLayout, setPdfLayout] = useState('sideBySide') + const [pdfLayout, setPdfLayout] = useState(getInitialLayout) // whether stylesheet on theme is loading const [loadingStyleSheet, setLoadingStyleSheet] = useState(false) diff --git a/services/web/frontend/stylesheets/components/footer.scss b/services/web/frontend/stylesheets/components/footer.scss index 8a61d8748a..126f143bb0 100644 --- a/services/web/frontend/stylesheets/components/footer.scss +++ b/services/web/frontend/stylesheets/components/footer.scss @@ -246,9 +246,12 @@ footer.site-footer { } .language-picker .dropdown-menu { - // Open upward — Popper.js isn't available on all page layouts + // Open upward, anchored to the right edge so it doesn't overflow off-screen + // when the picker is near the right side of the footer top: auto; bottom: 100%; + left: auto; + right: 0; margin-bottom: var(--spacing-02); .dropdown-item { diff --git a/services/web/locales/__pycache__/fix_translations.cpython-311.pyc b/services/web/locales/__pycache__/fix_translations.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..997420a4d3707ae87ab039ec7dedb6bb65a1378c GIT binary patch literal 12848 zcmd5iYitxpn%&bqGd=HzALCb`i4Azb*cfmC!^{ks^NG zS2fQbJ6Y}}U3K?Y)m2|teO2{UeUIv&+H7V5!o`g{X7)7^#P88dAsF+CXHzTWIM$ErA*N;xbH;HaiN2v{nK{$Ai6nFcZ{*DnNP_qn zo?Mu*6jI|>-pc7C@IG$i44jc;I1^{SM~~a53C{8pa@+ym>t>tpQ za$($EfotRJsj5P0dCWPk6TG93cmSCn7YnpBMj)SaBB;$DujX9iHJp3AmaF1DTs2?E zd-!_ZQ(vrSN>`SqxtiLIU*YXE#yyQjRyQr%n* zU)#2UYlLrKsu+o;iau#>fBV3w+ZrI=3WMzX1*EdZUMX& z$lJ_qzD|s9;kR;IF5$TmtkBvP?N|ek=tlA5-5OajpW-DU5E5qt63>Q1v)5SZBF|pp zuZfTdNbJSHWuCnpm<@6PDHsm1K~Y@b#WpAm0!DC-XXk~m#7|1W(6spi)Wor&z#K2K zts|FtVU`a}wXtV-K@7LCLxC~=^){B5CfmJi0KN`i;zJ@UhS?+G@boOthIse{vKJ;V zLIps_T)WwPS`19{-DVcT{59!fIJBFc3SRXWhz6R(_W5h<`5ilE1EFblN@(NwwxHC; zi*J~}K#Vc$B~|)lK)MLAGuP5szQX(+tnE9stJ) z5;mA9@kZSuDV1T(6w^^s%amt`J0wXg*K@=u;U$N?I#nm|s(}|L1M@t3Yu~Aol89K2 zWuNcq5W-=p1Ljf;cZj@jIXKCS9as1Z9kb!dz$~QKnZW0!gVTJ7zdA4U2rW<#dc&-L>Ac=5os6Gr%Syly~An#9)p>Fb8kJex=e9e-%bu;H3p2 zv}RZ+_~=;zz+2QEVw$)?#i=RSaj!ElIH`~jeM6H(s<>_EX~Pj$ zG3VO)(54Y3{~F+ZYLxhh8WvC`&vmc9`Vpm4vplSy!2CQP;#B>#5MG#vTyjpOg4|Wr z6c&Qh!BAjU6wz3-Y)n9`sG7xv3;tk8;)VH06W$AgBHw-x^N85fUMk%M*w4BFd>tcJ z?5>1&DYP7lQ(4CKl&O2d)FoZ-dEWJ;Tz4DpHONeh!n9+gdsFD-0AxO))Ti@RKE2VE* zCDwwk%!IY(?eE<9PO>32CR?^CmTj@VRl{0D{4v6=dunNXVrfhcrX<NTwc2T!TMTzxS1xH48z}@71DoRx@ z=w&vF_C4LOfCd4!I};yTnBxVIn5t3W=Vt?xd|^b>^L4C)gT3gX%MXCBZL%6JVHaTb=@IMn*9R$OFqHH*78uVrHv${qUs5F#ripe zmO8*I+o=Ehy`0pY0~LHx_kE-);rI%9g}6$cBd(BM<1k475HNy43@-?iyl@!05V2t$ zVc1Mt2*XDVZ@%xcl<@dvCz9vG$62}Vy6oLk(>cv@}pZ8L^MU9A2Nj|@g z}aD}mD?7jD;l<)49dsmc=9q^XB|E2kN+cL~)nK`X6ry;Sz zSeMO-&L!KjEpGdhtwDq3_ty|sji_-*h>bw^kD9j-56p*~sYkxn!yBki>qtm{x~J@-k{`1~uz2Xdz&OO%s#48`c{(j$CBo*0?QhkCRh0hcpY5R9r-$ zgXk)^Ea=6fJcZ`+g&D1&s=Q2MU~KY1OA)fe7A;Fw;Y^f?TF{$>t=Js$CB(sma8yS` zO_g@Wk~M|cd`(z`XL~U`G!l}dRNYLGW{%R*OcKy`*+x+Mrg97b)AkLR6_zte;QrfS zG??X|uiIZchzUA!pkQ9`Y%A~~SUe%biVM7#oeu;Bk-ZX>F0xY#v$Hu9sAxfjL+x0t znkX0H{&Yw#aT*Q%i`)^c2{GJa>My||0UNUR9*hON= zw7zOs&L<#1@r)PhEX3M5U1G{x(za7MQ@Af>9JM|#RQ3?G^Rk{r$u+&v!P+c}lLD0} zuH=b4pGKOC_4|?FEE!>CNZ*B8#6=i1WB@p7 zK}j`LWv%Y`z>38lzp`|2`Czj1iKQuHXtR=k<49Pfp7P)f=8xw>+tCNu80a+m!0Ic>jvSo#QI_GfMi!U1~>Z>zQmi^>c%_6?+kyqH{JPnd;fOtNBbY{e-x0L_bJW$ zwH5swKx~lNSSmDDbF)0BXp>hd|>6PD0riP&SfZ0tY}u!kYav%z7BS`fA>| zv}-v|2m|6N^u>9^VGv@(XD@9`xfABtv8=NmDV&=ySfar$>RhR6O!{sfxOHHOf!D4q z<9^E2KVj;Vn`EX*VVW{bQz>t=%&-c>X7K%4ePirM)>EI{m7%L+N8)F*?yA`FRobnG zDf^S)t5(8Qoj8^<%g*hJbNeb`&<}z(j9{LyTA<%Zqu z`XBq!msYIKv^{)y-99tQySYcjcw^mkI&2P zN7I+mmp-GxM*QK4>nCC-fQZ;I=AVc$??#N!$d3q)JglIoM)18LO+}+KBMlBo+Gjm5 zGg?Di0tr+I>uU~`#-mnBf!PRk7QzeE_N^`|kmF_YzT5L9;O z_Acs?Mt%uvC-eF!9o6U3*o6==9BhRl_j>hU$nlbDKRM*wDcd_0duOa4d~U@e zkL>PL+?}$0mtx-)8(4AF+`e#YCRLvvkZX4uXIcBE8rM6TVV)b5cTU5cYC zb~I~oCI)UC%2+y+)9Jb=8#*&|CuT|w)1kq`Ootp|z;pl$0n{lQm}+3GT_yxDz@p@3 zQlQYm*C?@UM@JjrI2{`RXTRm}Dc^9PAKYLkM!`5P4Iwy$g*mN#>_B6LJ!$#j`2n<0_%k*I|HNFNs&;J@K9-m)@FzPHgDRR(TS85_`Ue4#vB3UKtvlNC2rQ^c>-V;5-- z92r~%_mf1((oA%M>+gy#=iDHPa|8(&Sj2jG3`^vTXrnMGb66)dE;3O%Rc4(Qs0TaM z$kEz$vuKK%L~?n9RMgi1ivc?l)@w<#T{M^5eCw23qGq8sYDg8W!BU&3RqYA~&G<~z zBGg3nFN`0O%C%@co*{!&Q);EsI{-6i)Rb4)-B8ZlUqe^afLYtPL`IDzWft}i<3VU@ z*&fvk{|+7ik~3XrqWa1c)I}?2UbIP`5>=c7_y`@PZ@i($a-S9Pw?QcioFs(W=sjYiO?4jvus)w&r{&J0-8F#9RKE z)Lg&=-^u1u8deHjdMl;0wzRfB?b~8?#ST%6_Xy3*uGu4s+#IcrQk;jYdszPf==iuu z3wS!HRGF<9PqTmAr&^`@Cq$Sz6D{2a!TO8J?T(iQuDaBo!9m zP`hMil`wt=)rhDrP=GVeUAa3&CN?EbCCOW-6Ai^oEMmSuTSLx>bt93FoX@$#eB^N! z&O+$|TH>F_{xU+b9c=#P!E=%w1OGLJ5A3j!r_vl4x6^yts0d0IZ>tH zXaegS0+OmZYXzIW$YNIYK=CxMQggu&HUoqSgjBSJfw17DBwR+QG`BD}uj;P|P_MT} zh#|y2RA9-SfB2DWT_vaBL^3?7TBR^#T+NAfK!LZs>8?^>=9Vc0<`QS9ddxe>%m!DT zsz2-->pdzQLXGGzAYXv6jMCQPIK%%3!c2~a!q7wi%{leW4|Iq~Qj{A(Io%A+7TOn7 zE26Q$69Qs@oA8JuFmJ#FEAE$4ds23E$?o>p@fDLTekpY%V``I4ZHlQ49TshRL?VN6 zFd4WxbZaP1fyIifr2_a8rT$oaEfrLxkcWLeEQYAAjSXe1YGTJf^VHwD`p(sxkz0{f z!ld7f!IC9T#m{8jHFvhYvo+bA6lC|yiu>ibG4Cd*$y%#dYP{(!kG9G+-AYY&+`Li) zwtM=lT+^l0bj9^qOAWG*HiJR*)Vkq`bwg5=t<8$HIfL)44a_GJ71uqrZhT_hn4)BB zi(+lbSX;jS18vHf`M3lC?%QJWpzLW?JgvF+Urm0pUG5oHdWLiF0A+egp{FwR)T)6% zS{Y8ua=TK!1>6x5#R zfW%6pH@*2$wcPlM()dbzXvN!>KK*D&_WBgB54veXr;E0&vUBrICQ${=Z_hSvNl=Mi zcx9m7#Fm^XsV+0v1rJ4CeJQZ+u3`ZY=W^u}K^ zB*5S7Y9DN)e%nS5?lk^(HwkbO(243)S*9`p_~va>;d8(uU-4N_f+Mlc7-WvixsOVj|hSj(}Z zhLSXgGTZ%%QG;30YjjHk(510UB4D+^DPfr%pq($UG)BrxLDSVkOAbw6D-Oq@+_{z# z?6GzYM+~`t+#;5;pWMLCHFEq^0NlMARR%E$QuLm^0wAx*)FMSD1@CKvmUK{VJfnHl zh7?{0bgwS2;mqd$^1`x9Sc0NR-CQ6TT2GnzXDAg}0HDiQyK;B3GydA!XK$QcI=6hT zn2B|n=VY7kBS02@3}6ANpQHG6y&KNYu+oQ5(<27_bD|k5JqyU;^ZBh9+@SfftqVwX z@Upp_{|gu~41hYxu@MKNqE&?d7$=3WD6$b7TM*%p+wQfi4E&J+u6mJI?LJ`|{uc>J zC()~*S_2%oTl0CU86%;0F{jX+hdv0m0jS3QVgJD3P`~h3DC-UaCAG;sZLIJ(uf-o(ZJ>Pken7mqe&Eg1=*j%BmNCI z=0N$d)hMhf?UCty3cW8w@5@?TPc2R0{Ff~o6w3zq zdk4>UivGa#Q^!vnk0_blqp*8mx@BvZV(p6c|G{MYi|LdxV``O6t%|7?N#TaHZ^hzx>2FVF2r#-F#?MS z%ZMx-q<$OvM#g+YL&82(G>$+w0_adem;wNfPe}k~T$l%B8repN46pOSEOQ z_h)u@oJ;IO|0^o?X871#lQhZZO)=wV)lI3Rj|M+Em$8k&9W$>ov_rQ_6hO?fYA0-- z_~GSa@Qdr?!~ZxaTL%>DK+J@+)`qyS9LdtwxcK(f8&`Axz@{%jEPJ{YfR1j((Jj;6 zkIw+pd`an?z=i-~)>Vcux?)t;>O>XQkd2Ams{};Ju2fZuOYi<5nA)H;0y9HiCD=)k z&O|fl>7+B&k`h1g;^ZR=N0q>8Acx3=hz53uO!emCbUx0#X`tInR>8{XN>`;P({&#l zQZ@i#koR~LN1u%Srum=F;bbM4APIL9z)q8{B#;SFx*120;9LmaDuKP7+===JQ4076qBPVGQ6;!Qy2(Bg m&X!7W8v#=nc|z4^sQN6;#QJ_XaD5<#uT_em8z38V?|%Zb7)_@D literal 0 HcmV?d00001 diff --git a/services/web/locales/cs.json b/services/web/locales/cs.json index a5b77213d9..c801e21b49 100644 --- a/services/web/locales/cs.json +++ b/services/web/locales/cs.json @@ -337,5 +337,6 @@ "your_plan": "Váš tarif", "your_projects": "Vaše projekty", "your_subscription_has_expired": "Vaše předplatné vypršelo.", + "top_bottom_split_view": "Horní/dolní rozdělené zobrazení", "your_subscriptions": "Vaše předplatná" } diff --git a/services/web/locales/da.json b/services/web/locales/da.json index 591e726a7b..b047ed6110 100644 --- a/services/web/locales/da.json +++ b/services/web/locales/da.json @@ -2165,5 +2165,6 @@ "zotero_reference_loading_error": "Fejl, kunne ikke indlæse referencer fra Zotero", "zotero_reference_loading_error_expired": "Zotero nøgle udløbet, genforbind venligst din konto", "zotero_reference_loading_error_forbidden": "Kunne ikke indlæse referencer fra Zotero, genforbind venligst din konto og prøv igen", + "top_bottom_split_view": "Øverste/nedre delt visning", "zotero_sync_description": "Via Zotero-integrationen kan du importere dine referencer fra Zotero ind i dine __appName__-projekter." } diff --git a/services/web/locales/de.json b/services/web/locales/de.json index 2e760c2cf8..e048197014 100644 --- a/services/web/locales/de.json +++ b/services/web/locales/de.json @@ -2506,6 +2506,7 @@ "spellcheck_language": "Sprache der Rechtschreibprüfung", "spelling_and_language": "Rechtschreibung und Sprache", "split_view": "Geteilte Ansicht", + "top_bottom_split_view": "Oben/unten teilen", "sso": "SSO", "sso_account_already_linked": "Das Konto ist bereits mit einem anderen __appName__-Nutzer verknüpft", "sso_active": "SSO aktiv", diff --git a/services/web/locales/es.json b/services/web/locales/es.json index c6c50f9295..941a217cdb 100644 --- a/services/web/locales/es.json +++ b/services/web/locales/es.json @@ -2486,6 +2486,7 @@ "spellcheck_language": "Idioma del corrector ortográfico", "spelling_and_language": "Ortografía y lenguaje", "split_view": "Vista dividida", + "top_bottom_split_view": "Vista dividida arriba/abajo", "sso": "SSO", "sso_account_already_linked": "Cuenta ya vinculada a otro usuario __appName__", "sso_active": "SSO activo", diff --git a/services/web/locales/fi.json b/services/web/locales/fi.json index 8a5b7cf9da..f188bf55d7 100644 --- a/services/web/locales/fi.json +++ b/services/web/locales/fi.json @@ -343,5 +343,6 @@ "your_projects": "Sinun projektisi", "your_subscription_has_expired": "Tilauksesi on umpeutunut.", "your_subscriptions": "Tilauksesi tilaukset", + "top_bottom_split_view": "Ylä/alakerros jaettu näkymä", "zh-CN": "Kiina" } diff --git a/services/web/locales/it.json b/services/web/locales/it.json index 3d07391b2a..7ea3907d4e 100644 --- a/services/web/locales/it.json +++ b/services/web/locales/it.json @@ -2485,6 +2485,7 @@ "spellcheck_language": "Lingua del controllo ortografico", "spelling_and_language": "Ortografia e lingua", "split_view": "Visualizzazione divisa", + "top_bottom_split_view": "Vista divisa in alto/basso", "sso": "SSO", "sso_account_already_linked": "Account già collegato a un altro utente __appName__", "sso_active": "SSO attivo", diff --git a/services/web/locales/ja.json b/services/web/locales/ja.json index 9f833c15be..8098507948 100644 --- a/services/web/locales/ja.json +++ b/services/web/locales/ja.json @@ -487,5 +487,6 @@ "zotero_reference_loading_error": "エラー。Zoteroからリファレンスを読み込むことができませんでした", "zotero_reference_loading_error_expired": "Zoteroトークンの期限が切れました。アカウントを再リンクしてください", "zotero_reference_loading_error_forbidden": "Zoteroのリファレンスを読み込むことができませんでした。アカウントを再リンクして、再度お試しください", + "top_bottom_split_view": "上下分割ビュー", "zotero_sync_description": "Zoteroを統合すると、Zoteroから__appName__プロジェクトにリファレンスをインポートすることができます。" } diff --git a/services/web/locales/ko.json b/services/web/locales/ko.json index f1fa363ed6..078b51c80b 100644 --- a/services/web/locales/ko.json +++ b/services/web/locales/ko.json @@ -548,5 +548,6 @@ "your_sessions": "나의 세션", "your_subscription_has_expired": "구독이 만료되었습니다.", "your_subscriptions": "나의 구독 목록", + "top_bottom_split_view": "상하 분할 보기", "zh-CN": "中國語" } diff --git a/services/web/locales/nl.json b/services/web/locales/nl.json index 8242939708..313b95ecba 100644 --- a/services/web/locales/nl.json +++ b/services/web/locales/nl.json @@ -558,5 +558,6 @@ "zotero_is_premium": "Zotero Integratie is een premium functie", "zotero_reference_loading_error": "Error, kan referenties niet laden vanaf Mendeley", "zotero_reference_loading_error_expired": "Zotero token verlopen, gelieve je account opnieuw te koppelen", + "top_bottom_split_view": "Boven/onder gesplitst", "zotero_reference_loading_error_forbidden": "Kon referenties niet laden vanaf Zotero, gelieve je account opnieuw te koppelen en nogmaals te proberen" } diff --git a/services/web/locales/no.json b/services/web/locales/no.json index e5c2148f32..1283857f5d 100644 --- a/services/web/locales/no.json +++ b/services/web/locales/no.json @@ -389,5 +389,6 @@ "your_projects": "Dine prosjekter", "your_subscription_has_expired": "Dit abonnement har utgått.", "your_subscriptions": "Dine abonnementer", + "top_bottom_split_view": "Øvre/nedre delt visning", "zh-CN": "Kinesisk" } diff --git a/services/web/locales/pl.json b/services/web/locales/pl.json index f15de3aa75..9a10f49bad 100644 --- a/services/web/locales/pl.json +++ b/services/web/locales/pl.json @@ -228,5 +228,6 @@ "year": "rok", "your_plan": "Twój plan", "your_projects": "Twoje projekty", + "top_bottom_split_view": "Widok podzielony góra/dół", "your_subscriptions": "Twoje subskrypcje" } diff --git a/services/web/locales/pt.json b/services/web/locales/pt.json index 5402506228..2daf435949 100644 --- a/services/web/locales/pt.json +++ b/services/web/locales/pt.json @@ -658,5 +658,6 @@ "zotero_reference_loading_error": "Erro, não foi possível carregar as referências do Zotero", "zotero_reference_loading_error_expired": "O token do Zotero expirou, por favor, revincule sua conta", "zotero_reference_loading_error_forbidden": "Não foi possível carregar as referências do Zotero, por favor, revincule sua conta e tente novamente", + "top_bottom_split_view": "Divisão superior/inferior", "zotero_sync_description": "A integração Zotero permite você importar as referências do zotero para seus projetos no __appName__." } diff --git a/services/web/locales/ru.json b/services/web/locales/ru.json index 7ce5b15e70..88247e1425 100644 --- a/services/web/locales/ru.json +++ b/services/web/locales/ru.json @@ -463,5 +463,6 @@ "your_sessions": "Ваши сессии", "your_subscription_has_expired": "Срок Вашей подписки истёк.", "your_subscriptions": "Ваши подписки", + "top_bottom_split_view": "Разделить сверху/снизу", "zh-CN": "Китайский" } diff --git a/services/web/locales/sv.json b/services/web/locales/sv.json index a4f25cc1cc..d2cd26c60e 100644 --- a/services/web/locales/sv.json +++ b/services/web/locales/sv.json @@ -935,5 +935,6 @@ "zotero_reference_loading_error": "Fel, kunde inte ladda referenser från Zotero", "zotero_reference_loading_error_expired": "Zotero token har utgått, vänligen återkoppla ditt konto", "zotero_reference_loading_error_forbidden": "Kunde inte ladda referenser från Zotero, vänligen återkoppla ditt konto och försök igen", + "top_bottom_split_view": "Övre/nedre delad vy", "zotero_sync_description": "Med Zotero integrering kan du importera dina referenser direkt från Zotero till ditt __appName__ projekt." } diff --git a/services/web/locales/tr.json b/services/web/locales/tr.json index 62582ffce2..1076acf8a5 100644 --- a/services/web/locales/tr.json +++ b/services/web/locales/tr.json @@ -375,5 +375,6 @@ "your_projects": "Sizin Projeleriniz", "your_subscription_has_expired": "Aboneliğinizin süresi doldu.", "your_subscriptions": "Abonelikleriniz", + "top_bottom_split_view": "Yukarı/aşağı bölünmüş görünüm", "zh-CN": "Çince" } diff --git a/services/web/locales/zh-CN.json b/services/web/locales/zh-CN.json index 8441c9726b..1048c6b863 100644 --- a/services/web/locales/zh-CN.json +++ b/services/web/locales/zh-CN.json @@ -1911,6 +1911,7 @@ "spellcheck": "拼写检查", "spellcheck_language": "拼写检查语言", "split_view": "拆分视图", + "top_bottom_split_view": "上下分割视图", "sso": "单点登录(SSO)", "sso_account_already_linked": "帐户已链接到另一个__appName__用户", "sso_active": "SSO 激活",