From 11c563a7cd94bc48bc990fc0d1c2bd7b37141400 Mon Sep 17 00:00:00 2001 From: lalka2018 <99399973+lalka2016@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:29:35 +0300 Subject: [PATCH] . MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. --- Web/Models/Entities/User.php | 2 +- Web/Presenters/AudioPresenter.php | 8 +-- Web/Presenters/templates/@layout.xml | 2 +- Web/Presenters/templates/About/Tour.xml | 24 +++++++-- .../templates/Audio/EditPlaylist.xml | 4 +- Web/Presenters/templates/Audio/List.xml | 33 +++++++----- .../templates/Audio/NewPlaylist.xml | 4 +- Web/Presenters/templates/Audio/Upload.xml | 4 +- Web/Presenters/templates/Audio/player.xml | 4 +- Web/Presenters/templates/User/Settings.xml | 48 +++++++++--------- Web/static/img/tour/audios.png | Bin 0 -> 6234 bytes Web/static/img/tour/audios_playlists.png | Bin 0 -> 6234 bytes Web/static/img/tour/audios_search.png | Bin 0 -> 6234 bytes Web/static/img/tour/audios_upload.png | Bin 0 -> 6234 bytes Web/static/js/al_music.js | 12 ++--- locales/en.strings | 23 +++++---- locales/ru.strings | 17 ++++--- 17 files changed, 107 insertions(+), 78 deletions(-) create mode 100644 Web/static/img/tour/audios.png create mode 100644 Web/static/img/tour/audios_playlists.png create mode 100644 Web/static/img/tour/audios_search.png create mode 100644 Web/static/img/tour/audios_upload.png diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index f669b08f..9152e64e 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -190,7 +190,7 @@ class User extends RowModel function getMorphedName(string $case = "genitive", bool $fullName = true): string { $name = $fullName ? ($this->getLastName() . " " . $this->getFirstName()) : $this->getFirstName(); - if(!preg_match("%^[А-яё\-]+$%", $name)) + if(!preg_match("%[А-яё\-]+$%", $name)) return $name; # name is probably not russian $inflected = inflectName($name, $case, $this->isFemale() ? Gender::FEMALE : Gender::MALE); diff --git a/Web/Presenters/AudioPresenter.php b/Web/Presenters/AudioPresenter.php index 76a56eeb..9b9b20c8 100644 --- a/Web/Presenters/AudioPresenter.php +++ b/Web/Presenters/AudioPresenter.php @@ -311,8 +311,8 @@ final class AudioPresenter extends OpenVKPresenter $playlist = new Playlist; $playlist->setOwner($owner); - $playlist->setName(substr($title, 0, 128)); - $playlist->setDescription(substr($description, 0, 2048)); + $playlist->setName(substr($title, 0, 125)); + $playlist->setDescription(substr($description, 0, 2045)); if($_FILES["cover"]["error"] === UPLOAD_ERR_OK) { if(!str_starts_with($_FILES["cover"]["type"], "image")) @@ -432,8 +432,8 @@ final class AudioPresenter extends OpenVKPresenter if(empty($title) || iconv_strlen($title) < 1) $this->flashFail("err", tr("error"), tr("set_playlist_name")); - $playlist->setName(ovk_proc_strtr($title, 128)); - $playlist->setDescription(ovk_proc_strtr($description, 2048)); + $playlist->setName(ovk_proc_strtr($title, 125)); + $playlist->setDescription(ovk_proc_strtr($description, 2045)); $playlist->setEdited(time()); $playlist->resetLength(); diff --git a/Web/Presenters/templates/@layout.xml b/Web/Presenters/templates/@layout.xml index d8a415de..31e0bc5c 100644 --- a/Web/Presenters/templates/@layout.xml +++ b/Web/Presenters/templates/@layout.xml @@ -184,8 +184,8 @@ </object> </a> <a n:if="$thisUser->getLeftMenuItemStatus('photos')" href="/albums{$thisUser->getId()}" class="link">{_my_photos}</a> - <a n:if="$thisUser->getLeftMenuItemStatus('audios')" href="/audios{$thisUser->getId()}" class="link">{_my_audios}</a> <a n:if="$thisUser->getLeftMenuItemStatus('videos')" href="/videos{$thisUser->getId()}" class="link">{_my_videos}</a> + <a n:if="$thisUser->getLeftMenuItemStatus('audios')" href="/audios{$thisUser->getId()}" class="link">{_my_audios}</a> <a n:if="$thisUser->getLeftMenuItemStatus('messages')" href="/im" class="link">{_my_messages} <object type="internal/link" n:if="$thisUser->getUnreadMessagesCount() > 0"> (<b>{$thisUser->getUnreadMessagesCount()}</b>) diff --git a/Web/Presenters/templates/About/Tour.xml b/Web/Presenters/templates/About/Tour.xml index cc484c66..0c02b1ca 100755 --- a/Web/Presenters/templates/About/Tour.xml +++ b/Web/Presenters/templates/About/Tour.xml @@ -178,11 +178,29 @@ <h2>{_tour_section_6_title_1|noescape}</h2> <ul class="listing"> - <li><span>{_tour_section_6_text_1|noescape}</span></li> + <li><span>{_tour_section_6_text_1|noescape}</span></li> + <li><span>{_tour_section_6_text_2|noescape}</span></li> + <li><span>{_tour_section_6_text_3|noescape}</span></li> + <img src="assets/packages/static/openvk/img/tour/audios.png" width="440"> </ul> + + <ul class="listing"> + <li><span>{_tour_section_6_text_4|noescape}</span></li> + <img src="assets/packages/static/openvk/img/tour/audios_search.png" width="440"> + <li><span>{_tour_section_6_text_5|noescape}</span></li> + <img src="assets/packages/static/openvk/img/tour/audios_upload.png" width="440"> + </ul> - - + <p class="big">{_tour_section_6_bottom_text_1|noescape}</p> + + <h2>{_tour_section_6_title_2|noescape}</h2> + + <ul class="listing"> + <li><span>{_tour_section_6_text_6|noescape}</span></li> + <li><span>{_tour_section_6_text_7|noescape}</span></li> + <img src="assets/packages/static/openvk/img/tour/audios_playlists.png" width="440"> + </ul> + <br> </div> diff --git a/Web/Presenters/templates/Audio/EditPlaylist.xml b/Web/Presenters/templates/Audio/EditPlaylist.xml index a7f1c751..32690d50 100644 --- a/Web/Presenters/templates/Audio/EditPlaylist.xml +++ b/Web/Presenters/templates/Audio/EditPlaylist.xml @@ -26,11 +26,11 @@ <div style="padding-left: 13px;width:75%"> <div class="playlistInfo"> - <input value="{$playlist->getName()}" type="text" name="title"> + <input value="{$playlist->getName()}" type="text" name="title" maxlength="125"> </div> <div class="moreInfo"> - <textarea name="description" style="margin-top: 11px;">{$playlist->getDescription()}</textarea> + <textarea name="description" maxlength="2045" style="margin-top: 11px;">{$playlist->getDescription()}</textarea> </div> </div> </div> diff --git a/Web/Presenters/templates/Audio/List.xml b/Web/Presenters/templates/Audio/List.xml index 27822908..7ab978b3 100644 --- a/Web/Presenters/templates/Audio/List.xml +++ b/Web/Presenters/templates/Audio/List.xml @@ -2,13 +2,21 @@ {block title} {if $mode == 'list'} - {_audios} + {if $ownerId > 0} + {_audios} {$owner->getMorphedName("genitive", false)} + {else} + {_audios_group} + {/if} {elseif $mode == 'new'} {_audio_new} {elseif $mode == 'popular'} {_audio_popular} {else} - {_playlists} + {if $ownerId > 0} + {_playlists} {$owner->getMorphedName("genitive", false)} + {else} + {_playlists_group} + {/if} {/if} {/block} @@ -87,17 +95,18 @@ <div class="playlistCover"> <img src="{$playlist->getCoverURL()}"> </div> - - <div class="playlistInfo"> - <span style="font-size: 12px" class="playlistName"> - {ovk_proc_strtr($playlist->getName(), 12)} - </span> - - <span style="font-size: 12px" class="playlistAuthor"> - <a href="{$playlist->getOwner()->getURL()}">{ovk_proc_strtr($playlist->getOwner()->getCanonicalName(), 20)}</a> - </span> - </div> </a> + + + <div class="playlistInfo"> + <a href="/playlist{$playlist->getPrettyId()}"> + <span style="font-size: 12px" class="playlistName"> + {ovk_proc_strtr($playlist->getName(), 15)} + </span> + </a> + + <a href="{$playlist->getOwner()->getURL()}">{ovk_proc_strtr($playlist->getOwner()->getCanonicalName(), 20)}</a> + </div> </div> </div> diff --git a/Web/Presenters/templates/Audio/NewPlaylist.xml b/Web/Presenters/templates/Audio/NewPlaylist.xml index 7ca345c0..a55267c7 100644 --- a/Web/Presenters/templates/Audio/NewPlaylist.xml +++ b/Web/Presenters/templates/Audio/NewPlaylist.xml @@ -39,10 +39,10 @@ <div style="padding-left: 17px;width: 75%;" class="plinfo"> <div> - <input type="text" name="title" placeholder="{_title}" maxlength="128" /> + <input type="text" name="title" placeholder="{_title}" maxlength="125" /> </div> <div class="moreInfo" style="margin-top: 11px;"> - <textarea placeholder="{_description}" name="description" maxlength="2048" /> + <textarea placeholder="{_description}" name="description" maxlength="2045" /> </div> </div> </div> diff --git a/Web/Presenters/templates/Audio/Upload.xml b/Web/Presenters/templates/Audio/Upload.xml index ba07cefd..ecc4aa30 100644 --- a/Web/Presenters/templates/Audio/Upload.xml +++ b/Web/Presenters/templates/Audio/Upload.xml @@ -51,11 +51,11 @@ <tbody> <tr> <td width="120" valign="top"><span class="nobold">{_audio_name}:</span></td> - <td><input type="text" name="name" autocomplete="off" /></td> + <td><input type="text" name="name" autocomplete="off" maxlength="80" /></td> </tr> <tr> <td width="120" valign="top"><span class="nobold">{_performer}:</span></td> - <td><input name="performer" type="text" autocomplete="off" /></td> + <td><input name="performer" type="text" autocomplete="off" maxlength="80" /></td> </tr> <tr> <td width="120" valign="top"><span class="nobold">{_genre}:</span></td> diff --git a/Web/Presenters/templates/Audio/player.xml b/Web/Presenters/templates/Audio/player.xml index 7d4ee152..17ba003a 100644 --- a/Web/Presenters/templates/Audio/player.xml +++ b/Web/Presenters/templates/Audio/player.xml @@ -14,10 +14,10 @@ <div class="mediaInfo" style="margin-bottom: -8px; cursor: pointer;display:flex;width: 85%;"> <div class="info noOverflow"> <strong class="performer"> - <a href="/search?query=&type=audios&sort=id&only_performers=on&query={$audio->getPerformer()}">{ovk_proc_strtr($audio->getPerformer(), 50)}</a> + <a href="/search?query=&type=audios&sort=id&only_performers=on&query={$audio->getPerformer()}">{$audio->getPerformer()}</a> </strong> — - <span class="title {if !empty($audio->getLyrics())}withLyrics{/if}">{ovk_proc_strtr($audio->getTitle(), 50)}</span> + <span class="title {if !empty($audio->getLyrics())}withLyrics{/if}">{$audio->getTitle()}</span> </div> <div class="explicitMark" n:if="$audio->isExplicit()"></div> diff --git a/Web/Presenters/templates/User/Settings.xml b/Web/Presenters/templates/User/Settings.xml index 3ddf4561..6fb9322f 100644 --- a/Web/Presenters/templates/User/Settings.xml +++ b/Web/Presenters/templates/User/Settings.xml @@ -323,6 +323,19 @@ </select> </td> </tr> + <tr> + <td width="120" valign="top"> + <span class="nobold">{_privacy_setting_view_audio}</span> + </td> + <td> + <select name="audios.read" style="width: 164px;"> + <option value="3" {if $user->getPrivacySetting('audios.read') == 3}selected{/if}>{_privacy_value_anybody_dative}</option> + <option value="2" {if $user->getPrivacySetting('audios.read') == 2}selected{/if}>{_privacy_value_users}</option> + <option value="1" {if $user->getPrivacySetting('audios.read') == 1}selected{/if}>{_privacy_value_friends_dative}</option> + <option value="0" {if $user->getPrivacySetting('audios.read') == 0}selected{/if}>{_privacy_value_only_me_dative}</option> + </select> + </td> + </tr> <tr> <td width="120" valign="top"> <span class="nobold">{_privacy_setting_see_notes}</span> @@ -384,19 +397,6 @@ </select> </td> </tr> - <tr> - <td width="120" valign="top"> - <span class="nobold">{_privacy_setting_view_audio}</span> - </td> - <td> - <select name="audios.read" style="width: 164px;"> - <option value="3" {if $user->getPrivacySetting('audios.read') == 3}selected{/if}>{_privacy_value_anybody_dative}</option> - <option value="2" {if $user->getPrivacySetting('audios.read') == 2}selected{/if}>{_privacy_value_users}</option> - <option value="1" {if $user->getPrivacySetting('audios.read') == 1}selected{/if}>{_privacy_value_friends_dative}</option> - <option value="0" {if $user->getPrivacySetting('audios.read') == 0}selected{/if}>{_privacy_value_only_me_dative}</option> - </select> - </td> - </tr> <tr> <td> @@ -610,17 +610,6 @@ <td> <span class="nobold">{_my_photos}</span> </td> - </tr> - <tr> - <td width="120" valign="top" align="right"> - <input - n:attr="checked => $user->getLeftMenuItemStatus('audios')" - type="checkbox" - name="menu_muziko" /> - </td> - <td> - <span class="nobold">{_my_audios}</span> - </td> </tr> <tr> <td width="120" valign="top" align="right"> @@ -633,6 +622,17 @@ <span class="nobold">{_my_videos}</span> </td> </tr> + <tr> + <td width="120" valign="top" align="right"> + <input + n:attr="checked => $user->getLeftMenuItemStatus('audios')" + type="checkbox" + name="menu_muziko" /> + </td> + <td> + <span class="nobold">{_my_audios}</span> + </td> + </tr> <tr> <td width="120" valign="top" align="right"> <input diff --git a/Web/static/img/tour/audios.png b/Web/static/img/tour/audios.png new file mode 100644 index 0000000000000000000000000000000000000000..a15affe0511d972531cf450b2bb9ecac41e1a664 GIT binary patch literal 6234 zcmeHLYi!$86uzO|)NSp?20|-H$YcnHhGRR4o!F$=N>XT{=}H^4ZbPtZ`#LpE>|ncX zIw4pKh#~f4ynY~FW!fa*2jVF<fmnh4KmuvfU=q^)p@BB33?!t1ka%3%vFoJWD3mvi z+NM7DobTN8yvO&U-kuv<mS4IY0MOFane79h;Z6WTr<xitW!0ML5AauGp*`0Qz^l)~ z?)LBSGa+^M<p6ka1ps?i0r2By0LC`~u=O+ut-;T!F9B%%=;LQvAHuvR)J&$gE0ZC5 z4P8--2!QoRr5!u&o&t^Co1T7ZOW(yO&+NZ&b?bqtd&b9CH@!zNhYn69J|piBUH$z? z%f7R(MH)`;di|aKlZ~DC0`ZZ3dx^s2Qv<t-?^;dU8;|r%ymITN>F{L3c=4jWKUhsC z8f=oZY5L?uc=E|TONej#`yPI5e0nKyUFc+D_nXf(Oliu+Z$Ez9w*1oJ73&^j8XB%h zzrTn7yt(<On_Jfo{6rk--nn+|C8ucmo6VWsFNTJfonq+e?OPt*cFV-{*zOZkyU4>} z?GMeLHa0hdm3OnHZ3nYwu$fDHyYn6R8-ETI4jsi`7g&8g{Xc^*-lA{9Ps_@kTTK8~ z9<hHzPi$Cu833#ItN8(IAlEHOdMN^BT||*escd6_)W%8~N<+vZL{w0<w(!?)9}W|$ z+!o%#=IC5Gg9g>kod)XP*^`%c4oSQm-k5G#o~j5Kp@b|*R7yq76e?|D2Ux)W+hi(C zI4sssTe#iUNDSn9iHvR_f{k#b#KfXRf{!pPA5F%uC89LLQFNSQc#??;_$N*i)lV3! zBZ!nCD?(rPhN?RJ)D|AJtg=8+qobpd(O5(`3Rs-yDLP6;qa@}a%`we_6;d<Txgb@T zEHWiSEnBLt5jHFo^<k?mjCbssQY!n{npyQ1_8e7#Wr~T=wrLKdEctxpVWa5mK$a*} zL?xtICgx>)-twSs>E@t*4rqV5MgewlF6Zl*b1$WmufnuCMz9%GuguA9=Eus2>O-bJ zY)GhM1aEVlXN_s~p&6&nLmadF!j`I>L)KoYF$z`GbFkVgE~^uAJN_x`0wH4{Xz4~? z*NbU4mwG*K61d=T?ywP-SieQpWPQ}UCPmc?*$GsOhO*E?=_nnIku*cnY@SI9Y(j|9 z8|auo(*X#Vvj!oj%c?Rq3xUUi0>cCm0-Uu7xI$!T!Fgc>d3_XF5)|DiK`X76U;$BO zt&pN-h(4d6SVBfG>IU8rO2<;vTx4IyNjsrSGcBk|s4JVsgovuj0wY5x!l+ELQAH*b z@i;?@VmwMFrI->$GEK)47<-m@9dK5chV25uz;4TsbqRydY>DQ$q>_LNnUt9*$uLO9 zYB)rqq?lki7BVyxJv9NaIyIXO6*n|k3~<<X$XFGJH!H`)7>O93CS@@$lf1%6Bovbh zuOME8yyPjE1Ex+<r)uKt9P@Lw+GYCDT>(;+SX7;kQ-+3#>{@IKd&TH=C^u6vyHm~r zl<YQ@mh2Kha*C><dK;-`x4Wj!j@$g~oh3de{OBOk&Q~}tio-Rhys0bJC^S%e0jI$H z%Grgi6%1mhD7%Xn)j!bPx;BE0c{&^i6XGKe8D?5B^b+A0Bw^_UESHO_1nnSFBbr=2 zP5fN<0vf>hb1gIB$nQ?0Bo~V@B1)18jzJ`k;z<(5C6-Jk6C9G+gs5=1E`MhlIo*@y zyzcooq>*29(je3dNKR9pF&^Qc8=AOC!$eYvk-W@_I3PGQJYpe9iwT<JnV5vQq-RZ_ zK?Du*&7W1_bqCx3Ff`Ia`oXWX0J}^0EyIh^U)B#~WT^A(2!TEM{ve!=_m8%4Asugi z1J6P_-psuCZ!9bK<PA<b-q=(>6xoA(E+=H&bi2VmC+$NU=hXQIAv^@(w+tcBvAj`q zz74NVe5T=5q4DhL4WqwpI&^my5T6CDFLVHPRm=h7sq&m1@TxxprR*0k0Z*@Z%yPz$ zG?Suc(R?IlWxyUri^I;u$#XRRP>lVzDi~a@72JA$!QgVO;Edd@nrfw^RZVqdU&ekz zbYEop@vQ|)b1WNUQ&c^<mcLi6pyEJQ#qS)ZJxeDO@v2Du${ccAXXN5Ze1tlx9J#=X zE9VwN;Bvu<g-gXZ7x)Rs%eywQpZu#Aq~ZG(17ECM^}w->04!<k%C_e#w}15s69S<5 zgUREEPapbl$>j$_q2t8!mtL8_@BTaY_O`5fsr`Dk^M$3$7Kw`vSxkn-Lin$DhNj}G ZH_lEBoxS7mG5hMetD`6T^7T6=egWw+lqvuK literal 0 HcmV?d00001 diff --git a/Web/static/img/tour/audios_playlists.png b/Web/static/img/tour/audios_playlists.png new file mode 100644 index 0000000000000000000000000000000000000000..a15affe0511d972531cf450b2bb9ecac41e1a664 GIT binary patch literal 6234 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 ZH_lEBoxS7mG5hMetD`6T^7T6=egWw+lqvuK literal 0 HcmV?d00001 diff --git a/Web/static/img/tour/audios_search.png b/Web/static/img/tour/audios_search.png new file mode 100644 index 0000000000000000000000000000000000000000..a15affe0511d972531cf450b2bb9ecac41e1a664 GIT binary patch literal 6234 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 ZH_lEBoxS7mG5hMetD`6T^7T6=egWw+lqvuK literal 0 HcmV?d00001 diff --git a/Web/static/img/tour/audios_upload.png b/Web/static/img/tour/audios_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..a15affe0511d972531cf450b2bb9ecac41e1a664 GIT binary patch literal 6234 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 ZH_lEBoxS7mG5hMetD`6T^7T6=egWw+lqvuK literal 0 HcmV?d00001 diff --git a/Web/static/js/al_music.js b/Web/static/js/al_music.js index b7f387a7..c4bb4e0d 100644 --- a/Web/static/js/al_music.js +++ b/Web/static/js/al_music.js @@ -671,11 +671,11 @@ document.addEventListener("DOMContentLoaded", function() { const overfl = info.querySelector(".info") if(e.originalEvent.type == "mouseleave" || e.originalEvent.type == "mouseout") { - overfl.classList.add("noOverflow") - overfl.classList.remove("overflowedName") + info.classList.add("noOverflow") + info.classList.remove("overflowedName") } else { - overfl.classList.remove("noOverflow") - overfl.classList.add("overflowedName") + info.classList.remove("noOverflow") + info.classList.add("overflowedName") } }) }) @@ -847,12 +847,12 @@ $(document).on("click", ".musicIcon.edit-icon", (e) => { MessageBox(tr("edit_audio"), ` <div> ${tr("performer")} - <input name="performer" maxlength="40" type="text" value="${performer}"> + <input name="performer" maxlength="256" type="text" value="${performer}"> </div> <div style="margin-top: 11px"> ${tr("audio_name")} - <input name="name" maxlength="40" type="text" value="${name}"> + <input name="name" maxlength="256" type="text" value="${name}"> </div> <div style="margin-top: 11px"> diff --git a/locales/en.strings b/locales/en.strings index 6921651f..e3615fd6 100644 --- a/locales/en.strings +++ b/locales/en.strings @@ -833,6 +833,8 @@ "broadcast_audio" = "Broadcast audio to status"; "sure_delete_playlist" = "Do you sure want to delete this playlist?"; "edit_audio" = "Edit audio"; +"audios_group" = "Audios from group"; +"playlists_group" = "Playlists from group"; /* Notifications */ @@ -1755,17 +1757,16 @@ "tour_section_5_text_3" = "In addition to uploading videos directly, the site also supports embedding videos from YouTube"; -"tour_section_6_title_1" = "Listen to audios"; -"tour_section_6_text_1" = "Вы можете слушать аудиозаписи в разделе \"Мои Аудиозаписи\"."; -"tour_section_6_text_2" = "Этот раздел также регулируется настройками приватности."; -"tour_section_6_text_3" = "Самые прослушиваемые песни находятся во вкладке \"Популярное\", а недавно загруженные — во вкладке \"Новое\""; -"tour_section_6_text_4" = "Найти нужную песню можно в поиске."; -"tour_section_6_text_5" = "Чтобы добавить песню в свою коллекцию, наведите на неё и нажмите на плюс."; -"tour_section_6_text_6" = "Если вы не можете найти нужную песню, вы можете загрузить её самостоятельно."; -"tour_section_6_bottom_text_1" = "<b>Важно:</b> песня не должна нарушать авторские права"; -"tour_section_6_title_1" = "Создавайте плейлисты"; -"tour_section_6_text_7" = "Вы можете создавать сборники треков во вкладке \"Мои плейлисты\"."; -"tour_section_6_text_8" = "Можно также добавлять чужие плейлисты в свою коллекцию."; +"tour_section_6_title_1" = "Listen to music"; +"tour_section_6_text_1" = "You can listen to music in \"My Audios\""; +"tour_section_6_text_2" = "This section is also controlled by the privacy settings."; +"tour_section_6_text_3" = "The most listened songs are in \"Popular\", and recently uploaded songs are in \"New\""; +"tour_section_6_text_4" = "To add a song to your collection, hover over it and click on the \"plus\". You can search for the song you want."; +"tour_section_6_text_5" = "If you can't find the song you want, you can upload it yourself"; +"tour_section_6_bottom_text_1" = "<b>Important:</b> the song must not infringe copyright"; +"tour_section_6_title_2" = "Create playlists"; +"tour_section_6_text_6" = "You can create playlists in the \"My Playlists\" tab"; +"tour_section_6_text_7" = "You can also add another's playlists to your collection"; "tour_section_7_title_1" = "Follow what your friends write"; diff --git a/locales/ru.strings b/locales/ru.strings index cfb46b75..282d8d3f 100644 --- a/locales/ru.strings +++ b/locales/ru.strings @@ -788,6 +788,8 @@ "broadcast_audio" = "Транслировать аудио в статус"; "sure_delete_playlist" = "Вы действительно хотите удалить этот плейлист?"; "edit_audio" = "Редактировать аудиозапись"; +"audios_group" = "Аудиозаписи группы"; +"playlists_group" = "Плейлисты группы"; /* Notifications */ @@ -1645,16 +1647,15 @@ "tour_section_6_title_1" = "Слушайте аудиозаписи"; -"tour_section_6_text_1" = "Вы можете слушать аудиозаписи в разделе \"Мои Аудиозаписи\"."; -"tour_section_6_text_2" = "Этот раздел также регулируется настройками приватности."; +"tour_section_6_text_1" = "Вы можете слушать аудиозаписи в разделе \"Мои Аудиозаписи\""; +"tour_section_6_text_2" = "Этот раздел также регулируется настройками приватности"; "tour_section_6_text_3" = "Самые прослушиваемые песни находятся во вкладке \"Популярное\", а недавно загруженные — во вкладке \"Новое\""; -"tour_section_6_text_4" = "Найти нужную песню можно в поиске."; -"tour_section_6_text_5" = "Чтобы добавить песню в свою коллекцию, наведите на неё и нажмите на плюс."; -"tour_section_6_text_6" = "Если вы не можете найти нужную песню, вы можете загрузить её самостоятельно."; +"tour_section_6_text_4" = "Чтобы добавить песню в свою коллекцию, наведите на неё и нажмите на плюс. Найти нужную песню можно в поиске"; +"tour_section_6_text_5" = "Если вы не можете найти нужную песню, вы можете загрузить её самостоятельно"; "tour_section_6_bottom_text_1" = "<b>Важно:</b> песня не должна нарушать авторские права"; -"tour_section_6_title_1" = "Создавайте плейлисты"; -"tour_section_6_text_7" = "Вы можете создавать сборники треков во вкладке \"Мои плейлисты\"."; -"tour_section_6_text_8" = "Можно также добавлять чужие плейлисты в свою коллекцию."; +"tour_section_6_title_2" = "Создавайте плейлисты"; +"tour_section_6_text_6" = "Вы можете создавать сборники треков во вкладке \"Мои плейлисты\""; +"tour_section_6_text_7" = "Можно также добавлять чужие плейлисты в свою коллекцию"; "tour_section_7_title_1" = "Следите за тем, что пишут ваши друзья";